:root{
  --bg:#f5f2ea;
  --paper:#fffdf9;
  --card:#ffffff;
  --ink:#12130f;
  --muted:#77766f;
  --muted2:#a09e96;
  --line:#e6e1d8;
  --line2:#d9d3c9;
  --green:#2f6f4f;
  --green-soft:#e6f0e9;
  --green-mid:#cfe0d4;
  --gray-soft:#efede8;
  --gray-mid:#dedbd4;
  --warm:#f0ece3;
  --danger:#a44c46;
  --danger-soft:#f7e9e6;
  --shadow:0 16px 45px rgba(45,39,29,.07);
  --r-xl:28px;
  --r-lg:22px;
  --r-md:16px;
  --r-sm:12px;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:#e9e5dc}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI Variable Text","Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;color:var(--ink);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-size:var(--t-meta);line-height:1.45}
button,input,select,textarea{font:inherit}
button{color:inherit}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--green);outline-offset:2px}
.app-wrap{min-height:100vh;display:flex;justify-content:center;padding:0;background:linear-gradient(180deg,#ece8df,#e7e3da)}
.app-shell{width:100%;max-width:540px;min-height:100vh;background:var(--bg);position:relative;padding-bottom:96px;overflow-x:hidden}
@media(min-width:720px){.app-wrap{padding:24px}.app-shell{min-height:calc(100vh - 48px);border:1px solid #d8d2c8;border-radius:34px;overflow:hidden;box-shadow:0 28px 90px rgba(48,42,31,.14)}.bottom-nav{bottom:36px!important}.sheet{bottom:24px!important;border-radius:30px!important}.backdrop{border-radius:34px}.topbar{/* 16px, the same gutter as .content - was 24 */border-radius:34px 34px 0 0}}
.topbar{position:sticky;top:0;z-index:20;padding:var(--s5) var(--s4) 14px;background:linear-gradient(180deg,rgba(245,242,234,.98),rgba(245,242,234,.93) 78%,rgba(245,242,234,0));backdrop-filter:blur(16px)}
.topbar-row{display:flex;align-items:center;justify-content:space-between;gap:var(--s4)}
.brand{display:flex;align-items:center;gap:var(--s2)}.brand-mark{width:28px;height:28px;border-radius:var(--r-control);background:var(--ink);color:#fff;display:grid;place-items:center;font-size:var(--t-meta);font-weight:var(--w-bold)}.brand-name{font-size:var(--t-body);font-weight:var(--w-med);letter-spacing:-.02em}.top-context{font-size:var(--t-label);color:var(--muted);margin-top:3px}
.profile-dot{width:38px;height:38px;border-radius:50%;border:1px solid var(--line2);background:linear-gradient(145deg,#d8c3b7,#8ea69a);display:grid;place-items:center;color:#fff;font-size:var(--t-label);font-weight:var(--w-med);cursor:pointer}
.content{padding:0 16px 34px}/* backwards, not both.  keeps the animation's final transform applied for ever, and a transform - even the identity matrix the last keyframe resolves to - makes the element a containing block for every position:fixed descendant. So anything fixed inside a screen was silently fixed to the SCREEN instead of the viewport: the wizard's Next button measured 105px below the fold and scrolled away with the page.  still applies the opening frame before the animation starts, which is what  was there for, and reverts to transform:none when it ends. */.screen{animation:screenIn .18s ease backwards}@keyframes screenIn{from{opacity:.25;transform:translateY(5px)}to{opacity:1;transform:none}}
.screen-title{margin:var(--s2) 0 var(--s4)}.screen-title h1{margin:0;font-size:var(--t-title);line-height:1.02;letter-spacing:-.045em}.screen-title p{margin:8px 0 0;font-size:var(--t-meta);line-height:1.45;color:var(--muted);max-width:420px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:0 1px 0 rgba(255,255,255,.7)}
.section{margin-top:var(--s4)}.section-head{display:flex;align-items:end;justify-content:space-between;gap:12px;margin:var(--s5) 0 var(--s3)}.section-head h2{margin:0;font-size:var(--t-body);letter-spacing:-.02em}.section-head p{margin:4px 0 0;font-size:var(--t-label);color:var(--muted)}
.text-btn{border:0;background:transparent;color:var(--ink);font-size:var(--t-label);font-weight:var(--w-med);padding:var(--s2);cursor:pointer}.text-btn.muted{color:var(--muted)}
.primary,.secondary,.quiet,.danger{border-radius:var(--r-control);padding:var(--s3) var(--s4);font-size:var(--t-label);font-weight:var(--w-med);cursor:pointer;transition:.15s ease}.primary{background:var(--ink);color:#fff;border:1px solid var(--ink)}.primary:hover{transform:translateY(-1px)}.secondary{background:#fff;border:1px solid var(--line2)}.quiet{background:var(--warm);border:1px solid var(--line)}.danger{background:var(--danger-soft);color:var(--danger);border:1px solid #efd5d0}.wide{width:100%}.button-row{display:flex;gap:8px}.button-row>*{flex:1}
.pill{display:inline-flex;align-items:center;gap:var(--s2);border:1px solid var(--line);background:var(--warm);border-radius:999px;padding:var(--s2) var(--s2);font-size:var(--t-label);font-weight:var(--w-med);color:#5d5b55}.pill.positive{background:var(--green-soft);color:var(--green);border-color:#d4e3d8}.pill.dark{background:var(--ink);border-color:var(--ink);color:#fff}.pill.status{letter-spacing:.06em;font-size:var(--t-label)}.pill.confirmed{background:var(--green-soft);color:var(--green);border-color:#d5e4da}.pill.ready{background:var(--ink);color:#fff;border-color:var(--ink)}/* the seeded demo plan, so it cannot be mistaken for a real one */.pill.sample{background:transparent;color:var(--muted);border-style:dashed;letter-spacing:.06em;font-size:var(--t-label)}
.segmented{display:flex;padding:4px;background:#ebe7de;border-radius:var(--r-control);border:1px solid var(--line);gap:4px}/* 8, not 12: the track is 12 with 4px of padding, so a concentric inner
   corner is 12 - 4. Snapping both to the same token made the active pill's
   corners overhang the track, which has no overflow:hidden to save it. */
.seg-btn{flex:1;border:0;background:transparent;border-radius:8px;padding:var(--s2) 12px;font-size:var(--t-label);font-weight:var(--w-med);color:var(--muted);cursor:pointer}.seg-btn.active{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(40,35,28,.08)}
.bottom-nav{position:fixed;z-index:35;bottom:12px;left:50%;transform:translateX(-50%);width:calc(100% - 24px);max-width:516px;height:70px;background:rgba(255,253,249,.95);border:1px solid var(--line2);border-radius:23px;box-shadow:0 16px 40px rgba(46,40,30,.13);backdrop-filter:blur(18px);display:grid;grid-template-columns:repeat(5,1fr);padding:var(--s2);gap:3px}
.nav-item{border:0;background:transparent;border-radius:var(--r-control);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:#89877f;cursor:pointer;position:relative}.nav-item.active{background:var(--warm);color:var(--ink)}.nav-icon{font-size:var(--t-card);line-height:1}.nav-label{font-size:var(--t-label);font-weight:var(--w-med)}.nav-badge{position:absolute;top:4px;right:13px;min-width:17px;height:17px;padding:0 5px;border-radius:999px;background:var(--ink);color:#fff;font-size:var(--t-label);font-weight:var(--w-med);line-height:17px}
/* calendar */
.calendar-card{padding:var(--s4)}.calendar-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.calendar-month{display:flex;align-items:center;gap:var(--s2)}.calendar-month strong{font-size:var(--t-card);letter-spacing:-.02em}.arrow-btn{width:30px;height:30px;border-radius:var(--r-control);background:#fff;border:1px solid var(--line);font-size:var(--t-card);line-height:1;cursor:pointer}.view-toggle{display:flex;background:var(--warm);border:1px solid var(--line);padding:3px;border-radius:var(--r-control)}.view-toggle button{border:0;background:transparent;border-radius:7px;padding:var(--s2) 8px;font-size:var(--t-label);font-weight:var(--w-med);color:var(--muted);cursor:pointer}.view-toggle button.active{background:#fff;color:var(--ink)}
.weekdays,.month-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.weekdays span{text-align:center;color:var(--muted2);font-size:var(--t-label);font-weight:var(--w-med);padding:4px 0}.month-day{min-height:61px;border:1px solid var(--line);border-radius:var(--r-control);background:#fff;padding:var(--s2);display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;position:relative;cursor:pointer;overflow:hidden}.month-day:hover{border-color:var(--line2)}.month-day.other{opacity:.33}.month-day .day-num{font-size:var(--t-label);font-weight:var(--w-med)}.month-day.today{box-shadow:inset 0 0 0 1px var(--ink)}.cal-legend{display:flex;gap:var(--s3);flex-wrap:wrap;margin:var(--s3) 2px 0;font-size:var(--t-label);color:var(--muted)}.cal-legend span:before{content:"";display:inline-block;width:8px;height:8px;border-radius:3px;margin-right:5px;vertical-align:-1px;border:1px solid var(--line)}.cal-legend .lg-a:before{background:var(--green-soft);border-color:#d7e5db}.cal-legend .lg-b:before{background:var(--gray-soft)}
.week-view{display:flex;flex-direction:column;gap:8px}.week-row{display:grid;grid-template-columns:74px 1fr;gap:var(--s2);align-items:center;padding:var(--s2);border:1px solid var(--line);border-radius:var(--r-control);background:#fff;cursor:pointer}.week-row strong{font-size:var(--t-label)}.week-row .timebar{height:12px;border-radius:999px;background:var(--gray-soft);position:relative;overflow:hidden}.week-row .timebar i{display:block;height:100%;border-radius:999px;background:var(--green-mid)}
/* avatars */
.avatars{display:flex;align-items:center}.avatar{width:30px;height:30px;border-radius:50%;border:2px solid #fff;background:linear-gradient(145deg,#b7c4bd,#7f978a);display:grid;place-items:center;color:#fff;font-size:var(--t-micro);font-weight:var(--w-bold);margin-left:-7px}.avatar:first-child{margin-left:0}.avatar.small{width:25px;height:25px;font-size:var(--t-micro)}.avatar.tone2{background:linear-gradient(145deg,#c6a798,#9b796b)}.avatar.tone3{background:linear-gradient(145deg,#a7b2c4,#73829d)}.avatar.tone4{background:linear-gradient(145deg,#d0bb87,#aa8e54)}.avatar.tone5{background:linear-gradient(145deg,#c2a9c7,#9978a0)}.avatar.tone6{background:linear-gradient(145deg,#9cbcc0,#6e9498)}
/* friends */
.group-card{padding:var(--s4);display:grid;grid-template-columns:minmax(0,1fr) 174px;gap:12px;align-items:stretch;margin-bottom:var(--s2)}.group-main{min-width:0;display:flex;flex-direction:column;justify-content:space-between}.group-main h3{margin:0 0 5px;font-size:var(--t-card);letter-spacing:-.025em}.group-main p{margin:0;font-size:var(--t-label);color:var(--muted);line-height:1.4}.member-names{margin-top:var(--s2);font-size:var(--t-label);color:var(--muted);line-height:1.35}.mini-cal{border:1px solid var(--line);border-radius:var(--r-control);padding:8px;background:#fbfaf7;cursor:pointer}.mini-title{text-align:center;font-size:var(--t-micro);font-weight:var(--w-bold);margin-bottom:5px}.mini-week,.mini-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.mini-week span{text-align:center;font-size:var(--t-dense);color:var(--muted2);font-weight:var(--w-bold)}.mini-day{height:18px;border-radius:5px;font-size:var(--t-dense);display:grid;place-items:center;background:#fff;color:var(--muted);border:1px solid #eeeae3}.mini-day.none{opacity:.35}.mini-day.low{background:#f1f3ef;color:#6c766f}.mini-day.mid{background:#e7efe9;color:#50715c}.mini-day.high{background:#d8e8dc;color:#2f6f4f;font-weight:var(--w-bold)}.mini-day.all{background:var(--green);color:#fff;font-weight:var(--w-bold)}.group-footer{margin-top:var(--s2);display:flex;align-items:center;justify-content:space-between}.group-open{font-size:var(--t-label);font-weight:var(--w-med);color:var(--ink)}
.friend-list{display:flex;flex-direction:column;gap:8px}.friend-row{padding:var(--s3);display:flex;align-items:center;gap:var(--s2);cursor:pointer}.friend-row.selected{border-color:#cdded2;background:#fbfdfb}.friend-info{min-width:0;flex:1}.friend-info strong{display:block;font-size:var(--t-label)}.friend-info span{display:block;font-size:var(--t-label);color:var(--muted);margin-top:2px}.check{width:24px;height:24px;border-radius:8px;border:1px solid var(--line2);display:grid;place-items:center;font-size:var(--t-label);font-weight:var(--w-med)}.friend-row.selected .check{background:var(--green);border-color:var(--green);color:#fff}.floating-actions{position:sticky;bottom:86px;z-index:8;margin-top:var(--s4);padding:var(--s2);border:1px solid var(--line2);border-radius:var(--r-card);background:rgba(255,253,249,.96);box-shadow:0 12px 35px rgba(45,39,30,.12);display:flex;gap:8px}
/* plan cards */
.plan-card{padding:var(--s4);margin-bottom:var(--s2);cursor:pointer}.plan-top{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s2)}.plan-card h3{margin:0;font-size:var(--t-card);letter-spacing:-.025em}.plan-meta{font-size:var(--t-label);color:var(--muted);margin-top:4px}.plan-bottom{display:flex;align-items:center;justify-content:space-between;gap:var(--s2);margin-top:var(--s4)}.next-action{font-size:var(--t-label);font-weight:var(--w-med)}.progress-line{height:4px;border-radius:999px;background:var(--gray-soft);overflow:hidden;margin-top:12px}.progress-line i{display:block;height:100%;background:var(--green);border-radius:999px}
/* invites */
.invite-card{padding:var(--s4);margin-bottom:var(--s2)}.invite-from{display:flex;align-items:center;gap:var(--s2);margin-bottom:12px}.invite-from strong{font-size:var(--t-label)}.invite-from span{display:block;font-size:var(--t-label);color:var(--muted);margin-top:2px}.invite-card h3{margin:0;font-size:var(--t-card);letter-spacing:-.03em}.invite-meta{font-size:var(--t-label);color:var(--muted);margin-top:5px}.invite-types{display:flex;gap:var(--s2);flex-wrap:wrap;margin:12px 0}.invite-actions{display:grid;grid-template-columns:1fr 1fr;gap:var(--s2)}.busy-note{padding:var(--s2) var(--s3);border-radius:12px;background:var(--gray-soft);font-size:var(--t-label);color:#66645e;line-height:1.4;margin:12px 0}
/* profile */
.profile-card{padding:var(--s4);display:flex;align-items:center;gap:var(--s4)}.profile-card .avatar{width:60px;height:60px;font-size:var(--t-card);margin:0}.profile-card h3{margin:0;font-size:var(--t-card)}.profile-card p{margin:4px 0 0;font-size:var(--t-label);color:var(--muted)}.settings-card{overflow:hidden}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:var(--s3) var(--s4);border-top:1px solid var(--line)}.setting-row:first-child{border-top:0}.setting-label strong{display:block;font-size:var(--t-label)}.setting-label span{display:block;font-size:var(--t-label);color:var(--muted);margin-top:2px}.setting-value{font-size:var(--t-label);font-weight:var(--w-med);color:#4f4e49}.pref-category{padding:var(--s3) var(--s4);margin-bottom:8px;display:flex;align-items:center;justify-content:space-between;gap:var(--s2);cursor:pointer}.pref-category strong{font-size:var(--t-label)}.pref-category span{font-size:var(--t-label);color:var(--muted);display:block;margin-top:3px}
/* sheets */
.backdrop{position:fixed;inset:0;z-index:55;background:rgba(24,22,18,.28);backdrop-filter:blur(4px)}.sheet{position:fixed;z-index:56;left:50%;bottom:0;transform:translateX(-50%);width:100%;max-width:540px;max-height:92vh;overflow:auto;background:var(--paper);border:1px solid var(--line2);border-radius:28px 28px 0 0;box-shadow:0 -24px 70px rgba(38,33,25,.18);padding:var(--s2) 16px calc(24px + env(safe-area-inset-bottom));animation:sheetIn .18s ease}@keyframes sheetIn{from{transform:translate(-50%,20px);opacity:.3}to{transform:translate(-50%,0);opacity:1}}.grabber{width:38px;height:4px;background:#d8d3ca;border-radius:999px;margin:2px auto var(--s3)}.sheet-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s4);margin-bottom:var(--s4)}.sheet-head h2{margin:0;font-size:var(--t-title);line-height:1.05;letter-spacing:-.04em}.sheet-head p{margin:var(--s2) 0 0;color:var(--muted);font-size:var(--t-label);line-height:1.45}.close-btn{width:32px;height:32px;border-radius:50%;border:1px solid var(--line);background:#fff;cursor:pointer;font-size:var(--t-body)}.stepper{display:flex;gap:5px;margin:0 0 var(--s4)}.stepper i{height:3px;flex:1;background:#e2ded6;border-radius:999px}.stepper i.on{background:var(--ink)}.sheet h3{font-size:var(--t-label);letter-spacing:.12em;color:#85837d;margin:var(--s4) 2px var(--s2)}.sheet-actions{display:flex;gap:8px;margin-top:var(--s4)}.sheet-actions>*{flex:1}
.choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.choice{padding:12px;border-radius:var(--r-control);border:1px solid var(--line);background:#fff;text-align:left;cursor:pointer}.choice strong{display:block;font-size:var(--t-label)}.choice span{display:block;font-size:var(--t-label);color:var(--muted);margin-top:3px}.choice.selected{border-color:#cdded2;background:var(--green-soft)}
.time-row{display:flex;gap:var(--s2);flex-wrap:wrap}.time-chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:var(--s2);font-size:var(--t-label);font-weight:var(--w-med);color:#66645f;cursor:pointer}.time-chip.selected{background:var(--ink);border-color:var(--ink);color:#fff}.field{display:block;margin-bottom:var(--s2)}.field span{display:block;font-size:var(--t-label);color:var(--muted);font-weight:var(--w-med);margin:0 0 5px 2px}.input{width:100%;border:1px solid var(--line2);border-radius:var(--r-control);background:#fff;padding:var(--s3) 12px;font-size:var(--t-label);color:var(--ink)}.input-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.availability-list{display:flex;flex-direction:column;gap:var(--s2)}.availability-person{display:flex;align-items:center;gap:var(--s2);padding:var(--s2) var(--s3);border:1px solid var(--line);border-radius:var(--r-control);background:#fff}.availability-person .avatar{margin:0}.availability-person div:nth-child(2){flex:1}.availability-person strong{font-size:var(--t-label);display:block}.availability-person small{display:block;font-size:var(--t-label);color:var(--muted);margin-top:2px}.state-label{font-size:var(--t-label);font-weight:var(--w-med);padding:5px var(--s2);border-radius:999px;background:var(--gray-soft);color:#696761}.state-label.available{background:var(--green-soft);color:var(--green)}
.category-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.category{padding:var(--s4) 12px;border-radius:var(--r-control);border:1px solid var(--line);background:#fff;text-align:left;cursor:pointer;font-weight:var(--w-med);font-size:var(--t-label);display:flex;justify-content:space-between;align-items:center}.category small{color:var(--muted2);font-weight:var(--w-bold)}.category.selected{border-color:#c7d9cc;background:var(--green-soft)}
.search-box{position:relative;margin-bottom:var(--s2)}.search-box input{width:100%;padding:var(--s3) 12px var(--s3) 34px;border-radius:var(--r-control);border:1px solid var(--line2);background:#fff;font-size:var(--t-label)}.search-box:before{content:"⌕";position:absolute;left:12px;top:8px;font-size:var(--t-card);color:var(--muted2)}.chip-cloud{display:flex;flex-wrap:wrap;gap:var(--s2)}.pref-chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:var(--s2);font-size:var(--t-label);color:#5f5d58;cursor:pointer}.pref-chip.selected{background:var(--green-soft);border-color:#cddfd2;color:var(--green);font-weight:var(--w-med)}.subhead{font-size:var(--t-label);font-weight:var(--w-med);margin:var(--s4) 0 8px}
.location-card{display:flex;align-items:center;gap:var(--s2);padding:var(--s3) 12px;border:1px solid var(--line);border-radius:var(--r-control);background:#fff;margin-bottom:var(--s3)}.location-pin{width:32px;height:32px;border-radius:var(--r-control);background:var(--warm);display:grid;place-items:center}.location-card div:nth-child(2){flex:1}.location-card strong{font-size:var(--t-label);display:block}.location-card span{font-size:var(--t-label);color:var(--muted);display:block;margin-top:2px}
.reco-section{margin-top:var(--s4)}.reco-section-head{display:flex;align-items:end;justify-content:space-between;margin:0 2px 8px}.reco-section-head strong{font-size:var(--t-label)}.reco-section-head span{font-size:var(--t-label);color:var(--muted)}.reco-card{padding:12px;margin-bottom:var(--s2);display:flex;align-items:center;gap:var(--s2);cursor:pointer}.reco-card.selected{border-color:#cdded2;background:#fbfdfb}.reco-icon{width:42px;height:42px;border-radius:var(--r-control);background:var(--warm);display:grid;place-items:center;font-size:var(--t-card)}.reco-info{min-width:0;flex:1}.reco-info strong{font-size:var(--t-label);display:block}.reco-info span{font-size:var(--t-label);color:var(--muted);display:block;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.select-mark{width:24px;height:24px;border-radius:8px;border:1px solid var(--line2);display:grid;place-items:center;font-size:var(--t-label);font-weight:var(--w-med)}.reco-card.selected .select-mark{background:var(--green);border-color:var(--green);color:#fff}.custom-link{font-size:var(--t-label);font-weight:var(--w-med);color:var(--ink);border:0;background:transparent;padding:4px 0;cursor:pointer}
.review-block{padding:var(--s3) var(--s4);margin-bottom:8px}.review-block strong.title{font-size:var(--t-label);display:block}.review-choice{font-size:var(--t-label);color:#4f4d48;margin-top:var(--s2);padding-left:var(--s3);position:relative}.review-choice:before{content:"";width:4px;height:4px;border-radius:50%;background:var(--green);position:absolute;left:0;top:5px}
.vote-section{padding:var(--s4);margin-bottom:var(--s2)}.vote-section-head{display:flex;align-items:center;justify-content:space-between}.vote-section h3{margin:0;font-size:var(--t-meta);letter-spacing:-.02em}.vote-section p{margin:4px 0 0;font-size:var(--t-label);color:var(--muted)}.vote-option{display:flex;align-items:center;gap:var(--s2);padding:var(--s2);border:1px solid var(--line);border-radius:12px;background:#fff;margin-top:var(--s2);cursor:pointer}.vote-option.chosen{background:var(--green-soft);border-color:#cdded2}.vote-option strong{font-size:var(--t-label);flex:1}.vote-count{font-size:var(--t-label);color:var(--muted)}.vote-tools{display:flex;gap:var(--s2);margin-top:var(--s2)}.vote-tools button{flex:1;border:1px solid var(--line);background:var(--warm);border-radius:var(--r-control);padding:8px;font-size:var(--t-label);font-weight:var(--w-med);cursor:pointer}
.timeline{padding:var(--s4)}.timeline-item{display:grid;grid-template-columns:58px 14px 1fr;gap:var(--s2);align-items:start;position:relative;padding-bottom:16px}.timeline-item:last-child{padding-bottom:0}.timeline-time{font-size:var(--t-label);font-weight:var(--w-med);padding-top:1px}.timeline-line{position:relative;height:100%}.timeline-line:before{content:"";position:absolute;left:6px;top:6px;bottom:-8px;width:1px;background:#dcd7ce}.timeline-item:last-child .timeline-line:before{display:none}.timeline-line:after{content:"";position:absolute;left:3px;top:3px;width:7px;height:7px;border-radius:50%;background:var(--green)}.timeline-info strong{font-size:var(--t-label)}.timeline-info span{display:block;font-size:var(--t-label);color:var(--muted);margin-top:3px;line-height:1.4}.chat-box{padding:12px}.pinned-summary{padding:var(--s2) var(--s3);border-radius:12px;background:var(--warm);margin-bottom:var(--s3);font-size:var(--t-label)}.message{display:flex;gap:8px;margin:11px 0}.message .avatar{margin:0;flex:0 0 auto}.bubble{padding:var(--s2) var(--s2);border-radius:var(--r-control);background:#fff;border:1px solid var(--line);font-size:var(--t-label);line-height:1.4}.bubble strong{display:block;font-size:var(--t-label);margin-bottom:2px}.composer{display:flex;gap:var(--s2);margin-top:var(--s3)}.composer input{flex:1;border:1px solid var(--line2);border-radius:12px;padding:var(--s2);font-size:var(--t-label)}.composer button{width:38px;border-radius:12px;border:1px solid var(--ink);background:var(--ink);color:#fff}
.toast{position:fixed;z-index:80;left:50%;bottom:96px;transform:translateX(-50%);background:var(--ink);color:#fff;border-radius:var(--r-control);padding:var(--s2) var(--s3);font-size:var(--t-label);font-weight:var(--w-med);box-shadow:var(--shadow);animation:toastIn .2s ease both}@keyframes toastIn{from{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%,0)}}
.empty{padding:28px var(--s4);text-align:center}.empty strong{display:block;font-size:var(--t-meta)}.empty span{display:block;color:var(--muted);font-size:var(--t-label);margin-top:5px;line-height:1.4}

/* V3 interaction additions */
.plan-filter{display:flex;gap:var(--s2);margin:0 0 12px}.plan-filter button{flex:1;border:1px solid var(--line);background:var(--warm);border-radius:12px;padding:var(--s2) var(--s2);font-size:var(--t-label);font-weight:var(--w-med);color:var(--muted);cursor:pointer}.plan-filter button.active{background:#fff;color:var(--ink);border-color:var(--line2)}
.search-inline{display:flex;gap:8px;margin-bottom:12px}.search-inline input{flex:1;border:1px solid var(--line2);border-radius:var(--r-control);padding:var(--s3) 12px;background:#fff;font-size:var(--t-label)}
.past-card-actions{display:flex;gap:var(--s2);margin-top:12px}.past-card-actions button{flex:1}
.plan-chat-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s2);margin-bottom:var(--s2)}.plan-chat-head h3{margin:0;font-size:var(--t-card);letter-spacing:-.025em}.plan-chat-head p{margin:4px 0 0;font-size:var(--t-label);color:var(--muted)}.plan-chat-actions{display:flex;gap:var(--s2);margin:10px 0}.plan-chat-actions button{flex:1}
.vote-lock{position:sticky;bottom:0;padding-top:var(--s2);background:linear-gradient(180deg,rgba(255,253,249,0),var(--paper) 22%)}
.mini-pop-backdrop{position:fixed;inset:0;z-index:70;background:rgba(24,22,18,.18)}.mini-pop{position:fixed;z-index:71;left:50%;top:50%;transform:translate(-50%,-50%);width:calc(100% - 44px);max-width:430px;background:var(--paper);border:1px solid var(--line2);border-radius:22px;box-shadow:0 24px 70px rgba(38,33,25,.22);padding:16px}.mini-pop h3{margin:0 0 5px;font-size:var(--t-card);letter-spacing:-.03em}.mini-pop p{margin:0 0 var(--s4);font-size:var(--t-label);color:var(--muted);line-height:1.4}.mini-pop .sheet-actions{margin-top:12px}
.audience-card{padding:var(--s3);display:flex;align-items:center;justify-content:space-between;gap:var(--s2);margin-bottom:var(--s2)}.audience-card strong{display:block;font-size:var(--t-label)}.audience-card span{display:block;font-size:var(--t-label);color:var(--muted);margin-top:3px}.inline-edit{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:end}.time-summary{padding:var(--s3) 12px;border:1px solid var(--line);background:#fff;border-radius:var(--r-control);display:flex;align-items:center;justify-content:space-between;gap:var(--s2)}.time-summary strong{font-size:var(--t-label)}.time-summary span{font-size:var(--t-label);color:var(--muted);display:block;margin-top:2px}
.category .emoji{font-size:var(--t-card);margin-right:var(--s2)}.category .cat-label{display:flex;align-items:center}.category.selected{box-shadow:inset 0 0 0 1px rgba(47,111,79,.08)}
.pref-hub-card{padding:var(--s4);cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px}.pref-hub-card strong{font-size:var(--t-meta)}.pref-hub-card p{font-size:var(--t-label);color:var(--muted);margin:4px 0 0}.pref-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.pref-tile{padding:var(--s3);border:1px solid var(--line);background:#fff;border-radius:var(--r-control);text-align:left;cursor:pointer}.pref-tile b{font-size:var(--t-label)}.pref-tile span{display:block;font-size:var(--t-label);color:var(--muted);margin-top:4px}.pref-emoji{font-size:var(--t-card);display:block;margin-bottom:5px}
.filter-row{display:flex;gap:var(--s2);flex-wrap:wrap;margin-top:8px}.filter-chip{border:1px solid var(--line);background:var(--warm);border-radius:999px;padding:var(--s2) var(--s2);font-size:var(--t-label);font-weight:var(--w-med);cursor:pointer}.filter-chip.active{background:var(--green-soft);color:var(--green);border-color:#cdded2}
.reco-card.custom{border-style:dashed}.locked-note{padding:var(--s2) var(--s2);background:var(--green-soft);border:1px solid #d4e3d8;border-radius:12px;color:var(--green);font-size:var(--t-label);font-weight:var(--w-med);margin-bottom:var(--s2)}.repeat-badge{font-size:var(--t-label);color:var(--green);font-weight:var(--w-med);margin-top:5px}.toggle-line{display:flex;align-items:center;justify-content:space-between;gap:var(--s2);padding:var(--s3) 0;border-top:1px solid var(--line)}.toggle-line:first-child{border-top:0}.toggle-line strong{font-size:var(--t-label)}.toggle-line span{font-size:var(--t-label);color:var(--muted);display:block;margin-top:3px}
