/* Layout: guide rail on the left, phone frame on the right; on phones the frame fills the screen and a jump menu replaces the rail. */
:root{
  --font: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --page:#EEE7FA; --app:#F6F1FF; --surface:rgba(255,255,255,.55); --surface-strong:rgba(255,255,255,.78); --solid:#FFFFFF; --sunk:rgba(255,255,255,.34);
  --ink:#1C1630; --ink-2:#4D4566; --line:rgba(76,45,140,.16); --edge:rgba(255,255,255,.85); --frame:#1C1630;
  --accent:#C8287A; --accent-ink:#FFFFFF; --accent-soft:rgba(200,40,122,.13); --accent-text:#A01A61;
  --t-only:#525A75; --t-only-bg:rgba(236,238,245,.8);
  --t-us:#6A2FB8; --t-us-bg:rgba(240,231,252,.85);
  --t-friends:#0A6E5F; --t-friends-bg:rgba(219,243,238,.8);
  --t-every:#965000; --t-every-bg:rgba(253,238,218,.85);
  --ok:#14704A; --warn:#8F5400;
  --av0:#F7D6E8; --av1:#FFE0CC; --av2:#DCEBFF; --av3:#DDF3E3; --av4:#EBDDFB; --av5:#FFF0BF; --av6:#E2E6F0;
  --g1:#EBDFFF; --g2:#CDB4FF; --g3:#F8D3EA; --o1:#8D58FF; --o2:#FF7DB8; --o3:#6EA6FF; --o4:#B58AFF;
  --pg1:rgba(141,88,255,.22); --pg2:rgba(255,125,184,.18);
  --hdr-tint:rgba(238,228,255,.5); --hero-a:rgba(255,255,255,.82); --hero-b:rgba(255,255,255,.5);
  --glass-shadow:inset 0 1px 0 rgba(255,255,255,.9),0 10px 30px rgba(70,30,140,.12);
  --shadow:var(--glass-shadow);
  --focus:#2E5BE8;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --page:#110C20; --app:#1A1330; --surface:rgba(40,27,72,.5); --surface-strong:rgba(30,20,56,.84); --solid:#1E1830; --sunk:rgba(255,255,255,.06);
  --ink:#F6F1FF; --ink-2:#C6BCE2; --line:rgba(255,255,255,.12); --edge:rgba(255,255,255,.16); --frame:#2A2140;
  --accent:#FF6FB1; --accent-ink:#2A0718; --accent-soft:rgba(255,111,177,.18); --accent-text:#FF9DCC;
  --t-only:#B2B8CC; --t-only-bg:rgba(42,45,58,.8);
  --t-us:#CDA9F8; --t-us-bg:rgba(52,37,80,.8);
  --t-friends:#63D9C6; --t-friends-bg:rgba(20,56,51,.8);
  --t-every:#F6BB6A; --t-every-bg:rgba(62,44,20,.8);
  --ok:#62DA9E; --warn:#F6BB6A;
  --av0:#4A1F36; --av1:#4A3020; --av2:#1E3150; --av3:#1D3A28; --av4:#3A2452; --av5:#43391A; --av6:#2E3242;
  --g1:#1A0F33; --g2:#2C1561; --g3:#3B1342; --o1:#6B39E6; --o2:#C23C8A; --o3:#2C5ECB; --o4:#8150E0;
  --pg1:rgba(107,57,230,.28); --pg2:rgba(194,60,138,.2);
  --hdr-tint:rgba(26,16,50,.5); --hero-a:rgba(52,36,92,.72); --hero-b:rgba(34,22,62,.5);
  --glass-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 12px 32px rgba(0,0,0,.35);
  --shadow:var(--glass-shadow);
  --focus:#8EA9FF; color-scheme:dark;
}}
:root[data-theme="dark"]{
  --page:#110C20; --app:#1A1330; --surface:rgba(40,27,72,.5); --surface-strong:rgba(30,20,56,.84); --solid:#1E1830; --sunk:rgba(255,255,255,.06);
  --ink:#F6F1FF; --ink-2:#C6BCE2; --line:rgba(255,255,255,.12); --edge:rgba(255,255,255,.16); --frame:#2A2140;
  --accent:#FF6FB1; --accent-ink:#2A0718; --accent-soft:rgba(255,111,177,.18); --accent-text:#FF9DCC;
  --t-only:#B2B8CC; --t-only-bg:rgba(42,45,58,.8);
  --t-us:#CDA9F8; --t-us-bg:rgba(52,37,80,.8);
  --t-friends:#63D9C6; --t-friends-bg:rgba(20,56,51,.8);
  --t-every:#F6BB6A; --t-every-bg:rgba(62,44,20,.8);
  --ok:#62DA9E; --warn:#F6BB6A;
  --av0:#4A1F36; --av1:#4A3020; --av2:#1E3150; --av3:#1D3A28; --av4:#3A2452; --av5:#43391A; --av6:#2E3242;
  --g1:#1A0F33; --g2:#2C1561; --g3:#3B1342; --o1:#6B39E6; --o2:#C23C8A; --o3:#2C5ECB; --o4:#8150E0;
  --pg1:rgba(107,57,230,.28); --pg2:rgba(194,60,138,.2);
  --hdr-tint:rgba(26,16,50,.5); --hero-a:rgba(52,36,92,.72); --hero-b:rgba(34,22,62,.5);
  --glass-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 12px 32px rgba(0,0,0,.35);
  --shadow:var(--glass-shadow);
  --focus:#8EA9FF; color-scheme:dark;
}
*{box-sizing:border-box}
html,body{height:100%}
body{background:var(--page);color:var(--ink);font-family:var(--font);font-size:15px;line-height:1.45;font-feature-settings:"cv11";
  padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;background:none;border:0;padding:0}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:10px}
h1,h2,h3,p{margin:0}
ul{list-style:none;margin:0;padding:0}
.ic{flex:none;display:block}
.tnum{font-variant-numeric:tabular-nums}

/* ---------- stage ---------- */
.stage{display:flex;gap:48px;justify-content:center;align-items:flex-start;max-width:1160px;margin:0 auto;padding-block:32px}
.guide{width:300px;flex:none;position:sticky;top:24px;display:flex;flex-direction:column;gap:20px}
.g-brand{display:flex;align-items:center;gap:12px}
.g-brand b{font-size:28px;font-weight:800;letter-spacing:-.03em}
.g-intro{color:var(--ink-2);font-size:14px;max-width:34ch}
.g-group h2{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);margin-bottom:6px}
.g-group ul{display:flex;flex-direction:column;gap:2px}
.g-link{width:100%;text-align:left;padding:8px 10px;border-radius:10px;font-size:14px;font-weight:500;display:flex;justify-content:space-between;gap:8px;min-height:36px;align-items:center}
.g-link:hover{background:var(--sunk)}
.g-link[aria-current="true"]{background:var(--accent-soft);color:var(--accent-text);font-weight:600}
.g-legend{display:flex;flex-wrap:wrap;gap:6px}
.g-note{font-size:12px;color:var(--ink-2)}
.mobile-bar{display:none}

/* ---------- phone ---------- */
.device{flex:none}
.phone{width:390px;height:min(844px,calc(100vh - 64px));min-height:640px;background:var(--app);border:10px solid var(--frame);border-radius:48px;position:relative;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 30px 80px rgba(29,26,44,.18)}
.status{height:40px;flex:none;display:flex;justify-content:space-between;align-items:center;padding:0 26px;font-size:14px;font-weight:600}
.status .notch{width:110px;height:28px;background:var(--frame);border-radius:20px}
.screen{flex:1;overflow-y:auto;overflow-x:hidden;scroll-behavior:smooth;outline:none}
.pad{padding:0 16px 24px}
.stack{display:flex;flex-direction:column;gap:20px}
.row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.between{justify-content:space-between}
.muted{color:var(--ink-2)}
.small{font-size:13px}

/* header */
.hdr{display:flex;align-items:center;gap:8px;padding:8px 16px 14px;position:sticky;top:0;background:var(--app);z-index:3}
.hdr-t{flex:1;min-width:0}
.hdr h1{font-size:24px;font-weight:800;letter-spacing:-.025em;text-wrap:balance}
.hdr .sub{font-size:13px;color:var(--ink-2);display:flex;align-items:center;gap:5px;margin-top:2px}
.icon-btn{width:44px;height:44px;display:grid;place-items:center;border-radius:50%;flex:none}
.icon-btn:hover{background:var(--sunk)}
.brand{display:flex;align-items:center;gap:8px;flex:1}
.brand-word{font-size:24px;font-weight:800;letter-spacing:-.04em}
.hdr-actions{display:flex;align-items:center;gap:4px}
.avbtn{width:44px;height:44px;display:grid;place-items:center;border-radius:50%}

/* type */
.eyebrow{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2)}
.plan-title{font-weight:700;letter-spacing:-.02em;text-wrap:balance}
.plan-title .w,.ev-title .w,.w{font-weight:400;color:var(--ink-2);font-style:italic}
.bw-w,.sw{font-style:italic}
.bw-w{padding-right:.04em}
.big{font-size:28px;line-height:1.15}
.meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;color:var(--ink-2);font-size:13.5px}
.sec-h{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px}
.sec-h h2{font-size:17px;font-weight:700;letter-spacing:-.01em}
.link{color:var(--accent-text);font-weight:600;font-size:14px;min-height:44px;padding:0 4px}
.day-h{font-size:15px;font-weight:700}

/* cards & lists */
.card{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:16px;display:flex;flex-direction:column;gap:10px}
.hero{background:var(--surface);box-shadow:var(--shadow);border:0;gap:12px;padding:18px}
.list{display:flex;flex-direction:column;gap:8px}
.list-btn{width:100%;text-align:left;display:flex;gap:12px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:12px 14px;min-height:64px}
.list-btn:hover{border-color:var(--ink-2)}
.list-btn .lb-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.lb-title{font-weight:600}
.chev{color:var(--ink-2)}
.hscroll{display:flex;gap:10px;overflow-x:auto;padding-bottom:4px;margin:0 -16px;padding-left:16px;padding-right:16px;scrollbar-width:none}
.hscroll::-webkit-scrollbar{display:none}
.free-card{flex:none;width:118px;display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:12px;background:var(--surface);border:1px solid var(--line);border-radius:18px;text-align:left}
.free-card:hover{border-color:var(--ink-2)}
.fc-name{font-weight:700}
.fc-free{font-size:12.5px;color:var(--t-friends);font-weight:600;line-height:1.3}

/* avatars */
.av{display:inline-grid;place-items:center;width:36px;height:36px;border-radius:50%;font-weight:700;font-size:13px;color:var(--ink);flex:none;letter-spacing:.02em}
.av.sm{width:28px;height:28px;font-size:11px}
.av.lg{width:48px;height:48px;font-size:16px}
.av.xl{width:64px;height:64px;font-size:20px}
.av0{background:var(--av0);color:var(--accent-text)}.av1{background:var(--av1)}.av2{background:var(--av2)}.av3{background:var(--av3)}.av4{background:var(--av4)}.av5{background:var(--av5)}.av6{background:var(--av6)}
.av-stack{display:flex}.av-stack .av{border:2px solid var(--surface);margin-left:-8px}.av-stack .av:first-child{margin-left:0}

/* tiers */
.tier{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;font-weight:600;padding:4px 9px 4px 7px;border-radius:999px;white-space:nowrap}
.t-only{color:var(--t-only);background:var(--t-only-bg)}
.t-us{color:var(--t-us);background:var(--t-us-bg)}
.t-friends{color:var(--t-friends);background:var(--t-friends-bg)}
.t-everyone{color:var(--t-every);background:var(--t-every-bg)}
.pill{display:inline-flex;align-items:center;gap:4px;font-size:12.5px;font-weight:600;color:var(--ink-2)}
.pill.req{color:var(--accent-text)}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:0 18px;border-radius:14px;background:var(--accent);color:var(--accent-ink);font-weight:600;font-size:15px;white-space:nowrap;transition:transform .12s ease,filter .12s ease}
.btn:hover{filter:brightness(1.05)}
.btn:active{transform:scale(.98)}
.btn.sm{min-height:40px;padding:0 14px;font-size:14px;border-radius:12px}
.btn.ghost{background:var(--accent-soft);color:var(--accent-text)}
.btn.line{background:transparent;border:1.5px solid var(--line);color:var(--ink)}
.btn.quiet{background:transparent;color:var(--ink-2)}
.btn.block{width:100%}
.btn[disabled]{opacity:.45;cursor:not-allowed}
.btn.danger{background:transparent;color:var(--accent-text);border:1.5px solid var(--accent-soft)}
.btn-row{display:flex;gap:8px;flex-wrap:wrap}
.btn-row .btn{flex:1}

/* chips */
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{min-height:40px;padding:0 14px;border-radius:999px;border:1.5px solid var(--line);background:var(--surface);font-weight:500;font-size:14px;display:inline-flex;align-items:center;gap:6px}
.chip[aria-pressed="true"]{background:var(--ink);color:var(--app);border-color:var(--ink)}

/* week strip */
.week{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.wk{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 0 6px;border-radius:14px;min-height:60px}
.wk .dw{font-size:11px;font-weight:600;color:var(--ink-2);text-transform:uppercase;letter-spacing:.04em}
.wk .dn{font-size:17px;font-weight:700}
.wk .dots{display:flex;gap:3px;height:6px}
.wk .dot{width:5px;height:5px;border-radius:50%;background:var(--ink-2);opacity:.5}
.wk .dot.free{background:var(--t-friends);opacity:1}
.wk[aria-pressed="true"]{background:var(--ink);color:var(--app)}
.wk[aria-pressed="true"] .dw{color:var(--app);opacity:.75}
.wk.today .dn{text-decoration:underline;text-decoration-color:var(--accent);text-decoration-thickness:3px;text-underline-offset:4px}

/* agenda */
.agenda{display:flex;flex-direction:column;gap:10px}
.slot{display:grid;grid-template-columns:56px 1fr;gap:10px;align-items:stretch}
.time{font-size:13px;font-weight:600;padding-top:12px;font-variant-numeric:tabular-nums;display:flex;flex-direction:column}
.time span{font-weight:400;color:var(--ink-2);font-size:12px}
.ev-card{text-align:left;width:100%;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:12px 14px;display:flex;flex-direction:column;gap:6px;min-width:0}
.ev-card:hover{border-color:var(--ink-2)}
.ev-card.muted-card{background:var(--sunk);border-color:transparent}
.ev-title{font-weight:700;font-size:16px;letter-spacing:-.01em}
.free-box{border:2px dashed var(--t-friends);background:var(--t-friends-bg);border-radius:16px;padding:12px 14px;display:flex;flex-direction:column;gap:8px;min-width:0}
.free-box b{color:var(--t-friends)}
.busy-box{border-radius:16px;padding:12px 14px;background:var(--sunk);color:var(--ink-2);font-weight:600;display:flex;gap:8px;align-items:center}
.empty{color:var(--ink-2);font-size:14px;padding:16px;text-align:center;border:1px dashed var(--line);border-radius:16px}
.legend-btn{display:flex;align-items:center;gap:8px;justify-content:space-between;padding:10px 12px;border-radius:14px;background:var(--surface);border:1px solid var(--line);min-height:44px;text-align:left}
.legend-btn .tiers-mini{display:flex;gap:4px}

/* forms */
.field{display:flex;flex-direction:column;gap:6px}
.field label,.lbl-t{font-size:13px;font-weight:600}
.input,select.input,textarea.input{width:100%;min-height:46px;border:1.5px solid var(--line);background:var(--surface);border-radius:12px;padding:10px 12px}
textarea.input{min-height:84px;resize:vertical}
.input:focus{border-color:var(--focus);outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--focus) 25%,transparent)}
.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.search{display:flex;align-items:center;gap:8px;border:1.5px solid var(--line);background:var(--surface);border-radius:14px;padding:0 12px;min-height:48px;color:var(--ink-2)}
.search input{flex:1;border:0;background:transparent;min-height:44px;outline:none;color:var(--ink)}
.search:focus-within{border-color:var(--focus)}
.ok-line{display:flex;gap:6px;align-items:center;color:var(--ok);font-weight:600;font-size:14px}
.warn-line{display:flex;gap:6px;align-items:center;color:var(--warn);font-weight:600;font-size:14px}
.note{font-size:12.5px;color:var(--ink-2);display:flex;gap:6px;align-items:flex-start}

/* tier picker */
.tier-pick{display:flex;flex-direction:column;gap:8px}
.tp{display:flex;gap:12px;align-items:flex-start;text-align:left;padding:12px;border-radius:14px;border:1.5px solid var(--line);background:var(--surface);width:100%}
.tp .tp-ic{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;flex:none}
.tp b{display:block;font-size:15px}
.tp span.d{font-size:13px;color:var(--ink-2)}
.tp[aria-checked="true"]{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.tp .radio{margin-left:auto;width:20px;height:20px;border-radius:50%;border:2px solid var(--line);flex:none;margin-top:8px}
.tp[aria-checked="true"] .radio{border:6px solid var(--ink)}

/* results */
.res{background:var(--surface);border:1.5px solid var(--line);border-radius:18px;padding:14px;display:flex;flex-direction:column;gap:8px}
.res[data-sel="true"]{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.res-top{display:flex;gap:12px;align-items:flex-start}
.res-art{width:52px;height:52px;border-radius:14px;display:grid;place-items:center;flex:none;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.res-art.event{background:var(--accent-soft);color:var(--accent-text)}
.res-art.place{background:var(--t-friends-bg);color:var(--t-friends)}
.res-name{font-weight:700;font-size:16px;letter-spacing:-.01em}
.res-fit{font-size:12.5px;font-weight:600;color:var(--t-friends);display:flex;gap:4px;align-items:center}
.price{font-weight:700;font-size:14px;margin-left:auto;white-space:nowrap}

/* sticky footer CTA */
.cta-bar{position:sticky;bottom:0;padding:12px 16px 16px;background:linear-gradient(to top,var(--app) 70%,transparent);display:flex;flex-direction:column;gap:8px;z-index:2}

/* tabs */
.tabs{flex:none;display:grid;grid-template-columns:repeat(5,1fr);border-top:1px solid var(--line);background:var(--surface);padding:4px 4px 14px}
.tab{display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 0 4px;font-size:11px;font-weight:600;color:var(--ink-2);position:relative;min-height:52px;border-radius:12px}
.tab[aria-current="page"]{color:var(--accent-text)}
.tab .badge{position:absolute;top:4px;left:calc(50% + 6px);min-width:18px;height:18px;border-radius:9px;background:var(--accent);color:var(--accent-ink);font-size:11px;display:grid;place-items:center;padding:0 5px}

/* notifications */
.notif{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:14px;display:flex;flex-direction:column;gap:10px;position:relative}
.notif.unread::after{content:"";position:absolute;top:8px;left:8px;width:8px;height:8px;border-radius:50%;background:var(--accent)}
.notif-top{display:flex;gap:12px;align-items:flex-start;padding-right:14px}
.notif-top p{font-size:14.5px}
.notif-time{font-size:12px;color:var(--ink-2);margin-top:2px}
.notif-done{font-size:13.5px;font-weight:600;color:var(--ok);display:flex;gap:6px;align-items:center}
.notif .tag{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2)}

/* switches */
.set-list{background:var(--surface);border:1px solid var(--line);border-radius:18px;overflow:hidden}
.set-row{display:flex;align-items:center;gap:12px;padding:12px 14px;min-height:56px;width:100%;text-align:left;border-bottom:1px solid var(--line)}
.set-row:last-child{border-bottom:0}
.set-row .sr-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.set-row .sr-t span{font-size:12.5px;color:var(--ink-2)}
.track{width:46px;height:28px;border-radius:14px;background:var(--line);position:relative;flex:none;transition:background .15s}
.track::after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .15s}
[aria-checked="true"] .track{background:var(--t-friends)}
[aria-checked="true"] .track::after{transform:translateX(18px)}
.set-h{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);margin:4px 4px -10px}

/* segmented */
.seg{display:grid;grid-template-columns:1fr 1fr;background:var(--sunk);border-radius:14px;padding:4px;gap:4px}
.seg button{min-height:40px;border-radius:10px;font-weight:600;font-size:14px;color:var(--ink-2)}
.seg button[aria-selected="true"]{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}

/* up for it */
.idea{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:14px;display:flex;flex-direction:column;gap:10px}
.idea h3{font-size:18px;font-weight:700;letter-spacing:-.015em;text-wrap:balance}
.in-btn{min-height:44px;border-radius:12px;padding:0 16px;border:1.5px solid var(--accent);color:var(--accent-text);font-weight:700;display:inline-flex;gap:6px;align-items:center}
.in-btn[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink)}
.avail{display:flex;flex-wrap:wrap;gap:6px}
.av-ok,.av-no{font-size:12.5px;font-weight:600;display:inline-flex;gap:4px;align-items:center;padding:3px 8px;border-radius:999px}
.av-ok{color:var(--ok);background:var(--t-friends-bg)}
.av-no{color:var(--ink-2);background:var(--sunk)}
.best{font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--accent-text);background:var(--accent-soft);padding:3px 8px;border-radius:999px}

/* sheet */
.backdrop{position:absolute;inset:0;background:rgba(14,12,20,.45);z-index:20;animation:fade .2s ease}
.sheet{position:absolute;left:0;right:0;bottom:0;max-height:88%;overflow-y:auto;background:var(--app);border-radius:24px 24px 0 0;z-index:21;padding:8px 16px 24px;display:flex;flex-direction:column;gap:16px;animation:up .25s cubic-bezier(.2,.8,.2,1)}
.grab{width:40px;height:5px;border-radius:3px;background:var(--line);margin:4px auto 0}
.sheet h2{font-size:20px;font-weight:800;letter-spacing:-.02em}
.sheet-hd{display:flex;align-items:center;justify-content:space-between;gap:8px}
@keyframes up{from{transform:translateY(40px);opacity:0}to{transform:none;opacity:1}}
@keyframes fade{from{opacity:0}}

/* in-app browser */
.browser{position:absolute;inset:0;z-index:30;background:var(--surface);display:flex;flex-direction:column;animation:up .25s cubic-bezier(.2,.8,.2,1)}
.br-bar{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line);background:var(--sunk)}
.br-url{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;font-size:12px;color:var(--ink-2)}
.br-url b{font-size:13px;color:var(--ink);display:flex;gap:4px;align-items:center}
.br-body{flex:1;overflow:auto;padding:20px 16px;display:flex;flex-direction:column;gap:16px}
.tk-row{display:flex;align-items:center;gap:12px;padding:14px;border:1px solid var(--line);border-radius:14px}
.stepper{display:flex;align-items:center;gap:6px}
.stepper button{width:40px;height:40px;border-radius:50%;border:1.5px solid var(--line);font-size:18px;font-weight:600}
.stepper output{min-width:20px;text-align:center;font-weight:700;font-variant-numeric:tabular-nums}
.br-foot{padding:12px 16px 20px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:8px}

/* toast */
.toast{position:absolute;left:16px;right:16px;bottom:86px;z-index:40;background:var(--ink);color:var(--app);padding:12px 14px;border-radius:14px;font-weight:600;font-size:14px;display:flex;gap:8px;align-items:center;opacity:0;transform:translateY(10px);transition:opacity .2s,transform .2s;pointer-events:none}
.toast.show{opacity:1;transform:none}

/* onboarding */
.ob{min-height:100%;display:flex;flex-direction:column;padding:24px 20px 24px;gap:22px}
.ob-hero{flex:1;display:flex;flex-direction:column;justify-content:center;gap:18px}
.ob h1{font-size:30px;font-weight:800;letter-spacing:-.03em;line-height:1.1;text-wrap:balance}
.ob p.lead{font-size:16px;color:var(--ink-2);max-width:32ch}
.dots-prog{display:flex;gap:6px;justify-content:center}
.dots-prog i{width:8px;height:8px;border-radius:4px;background:var(--line)}
.dots-prog i.on{width:22px;background:var(--accent)}
.sync-btn{display:flex;align-items:center;gap:12px;padding:14px;border-radius:16px;border:1.5px solid var(--line);background:var(--surface);width:100%;text-align:left;min-height:60px}
.sync-btn .sb-t{flex:1}
.sync-btn[aria-pressed="true"]{border-color:var(--t-friends)}
.sync-btn .state{font-size:13px;font-weight:600;color:var(--ink-2)}
.sync-btn[aria-pressed="true"] .state{color:var(--ok)}

/* wordmark */
.wm{display:inline-flex;align-items:baseline;gap:.28em;font-weight:800;letter-spacing:-.035em;white-space:nowrap}
.wm .w{font-weight:400;color:var(--ink-2)}
.wm-l,.wm-r{display:inline-block}
.wm-l.in,.wm-r.in{animation:slideIn .45s cubic-bezier(.2,.8,.2,1)}
.wm-r.in{animation-delay:.08s;animation-fill-mode:backwards}
.wm-l{color:var(--accent-text)}
@keyframes slideIn{from{transform:translateY(55%);opacity:0}to{transform:none;opacity:1}}
.wm-big{font-size:38px}

/* envelope */
.env{display:block}
.env .flap-open{transform-origin:24px 21px}
.env-anim .flap-closed{transform-origin:24px 21px;animation:flapClose .35s ease forwards}
.env-anim .flap-open{animation:flapOpen .35s .25s ease backwards}
.env-anim .card-in{animation:cardUp .5s .5s cubic-bezier(.2,.8,.2,1) backwards}
@keyframes flapClose{to{transform:scaleY(0);opacity:0}}
@keyframes flapOpen{from{transform:scaleY(0)}}
@keyframes cardUp{from{transform:translateY(12px)}}
.done-screen{min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:16px;padding:32px 24px}
.done-screen h1{font-size:28px;font-weight:800;letter-spacing:-.03em;text-wrap:balance}

@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
}

/* responsive */
@media (max-width:920px){
  .guide{display:none}
  .stage{flex-direction:column;align-items:center;gap:12px;padding-block:16px}
  .mobile-bar{display:flex;width:100%;max-width:390px;align-items:center;gap:10px}
  .mobile-bar label{font-weight:700;white-space:nowrap;display:flex;gap:6px;align-items:center}
  .mobile-bar select{flex:1;min-width:0}
}
@media (max-width:480px){
  .device{width:100%}
  .phone{width:100%;height:calc(100dvh - 96px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));min-height:560px;border:0;border-radius:24px}
  .status{display:none}
  .phone{--sb:0px}
  .hdr{padding-top:12px}
}

/* ---------- purple glass ---------- */
body{background-color:var(--page);background-image:radial-gradient(55% 45% at 12% 8%,var(--pg1),transparent 70%),radial-gradient(50% 45% at 92% 85%,var(--pg2),transparent 70%);background-attachment:fixed}
.phone{background:linear-gradient(165deg,var(--g1),var(--g2) 48%,var(--g3));isolation:isolate}
.bg{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none}
.bg i{position:absolute;border-radius:50%;filter:blur(38px);opacity:.8;animation:drift 16s ease-in-out infinite alternate}
.bg .o1{width:270px;height:270px;background:var(--o1);top:-60px;left:-70px;transform:translate3d(0,calc(var(--sy,0) * -0.12px),0)}
.bg .o2{width:230px;height:230px;background:var(--o2);top:250px;right:-80px;transform:translate3d(0,calc(var(--sy,0) * -0.32px),0);animation-duration:19s}
.bg .o3{width:250px;height:250px;background:var(--o3);top:520px;left:-70px;transform:translate3d(0,calc(var(--sy,0) * -0.22px),0);animation-duration:22s}
.bg .o4{width:210px;height:210px;background:var(--o4);top:780px;right:-40px;transform:translate3d(0,calc(var(--sy,0) * -0.42px),0)}
.bg::after{content:"";position:absolute;inset:0;opacity:.5;mix-blend-mode:soft-light;
  background-image:repeating-linear-gradient(45deg,rgba(255,255,255,.18) 0 1px,transparent 1px 5px),repeating-linear-gradient(-45deg,rgba(60,20,120,.12) 0 1px,transparent 1px 5px)}
@keyframes drift{to{translate:28px 36px}}
.phone{--sb:40px}
.status{position:absolute;top:0;left:0;right:0;z-index:7;background:transparent;pointer-events:none}
.screen{position:relative;z-index:1;padding-top:0;padding-bottom:96px;scrollbar-width:none}
.screen::-webkit-scrollbar{display:none}
.hdr{top:0;padding-top:calc(var(--sb) + 8px);padding-bottom:12px}
.screen > .hdr + .pad{padding-top:20px}
.ob,.done-screen{padding-top:calc(var(--sb) + 24px)}
.br-bar{padding-top:calc(var(--sb) + 10px)}
@media (max-width:480px){.phone{--sb:0px}.hdr{padding-top:12px}}
.card,.list-btn,.ev-card,.free-card,.res,.notif,.idea,.set-list,.tp,.legend-btn,.search,.input,.chip,.seg,.free-box,.busy-box{
  background-color:var(--surface);-webkit-backdrop-filter:blur(22px) saturate(170%);backdrop-filter:blur(22px) saturate(170%);border:1px solid var(--edge);box-shadow:var(--glass-shadow)}
.free-box{background-color:var(--t-friends-bg);border:2px dashed var(--t-friends)}
.busy-box{background-color:var(--sunk);box-shadow:none}
.ev-card.muted-card{background-color:var(--sunk);box-shadow:none}
.chip{box-shadow:none}
.chip[aria-pressed="true"]{background-color:var(--ink);color:var(--app);border-color:var(--ink)}
.seg{box-shadow:none;background-color:var(--sunk)}
.seg button{display:inline-flex;align-items:center;justify-content:center;gap:6px}
.seg button[aria-checked="true"]{background:var(--surface-strong);color:var(--ink);box-shadow:var(--glass-shadow)}
.seg button[aria-selected="true"]{background:var(--surface-strong);box-shadow:var(--glass-shadow)}
.hdr{background:var(--hdr-tint);-webkit-backdrop-filter:blur(18px) saturate(160%);backdrop-filter:blur(18px) saturate(160%)}
.tabs{position:absolute;left:12px;right:12px;bottom:12px;z-index:6;border-radius:30px;padding:6px;background:var(--surface-strong);-webkit-backdrop-filter:blur(26px) saturate(180%);backdrop-filter:blur(26px) saturate(180%);border:1px solid var(--edge);box-shadow:var(--glass-shadow)}
.tab{border-radius:24px}
.tab[aria-current="page"]{background:var(--accent-soft)}
.cta-bar{background:none;bottom:84px}
.toast{bottom:100px}
.backdrop{background:rgba(20,8,40,.35)}
.sheet{background:var(--surface-strong);-webkit-backdrop-filter:blur(30px) saturate(170%);backdrop-filter:blur(30px) saturate(170%);border-top:1px solid var(--edge)}
.browser{background:var(--solid)}
.br-bar{background:var(--solid)}
.hero{background-image:linear-gradient(140deg,var(--hero-a),var(--hero-b))}
.week{gap:4px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* _with_ wordmark */
.bw{display:inline-flex;align-items:baseline;gap:.07em;font-weight:800;letter-spacing:-.035em;font-size:24px;line-height:1}
.bw .blank{display:inline-block;width:.72em;height:.12em;border-radius:.06em;background:var(--accent)}
.g-brand .bw{font-size:32px}
.wm-l,.wm-r{border-bottom:.09em solid var(--accent);padding:0 .06em}

/* composer */
.composer{gap:14px;padding:18px;background-image:linear-gradient(140deg,var(--hero-a),var(--hero-b));border-radius:24px}
.sentence{font-size:26px;font-weight:800;line-height:1.38;letter-spacing:-.025em;text-wrap:pretty}
.tok{font:inherit;letter-spacing:inherit;color:var(--accent-text);background:var(--accent-soft);border-radius:9px;padding:1px 6px;text-decoration:underline;text-decoration-thickness:3px;text-underline-offset:5px;text-decoration-color:var(--accent);-webkit-box-decoration-break:clone;box-decoration-break:clone;cursor:pointer;transition:background .15s}
.tok:hover{background:color-mix(in srgb,var(--accent) 24%,transparent)}
.tok-s{font-weight:700;color:var(--ink);text-decoration:underline;text-decoration-color:var(--accent);text-decoration-thickness:2px;text-underline-offset:4px}
.tier-btn{border-radius:999px;min-height:36px;display:inline-flex;align-items:center}
.post{gap:12px}
.post-h{display:flex;align-items:center;gap:10px}
.post-h .who{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.25}
.post-h .who b{font-size:14.5px}
.post-h .who span{font-size:12.5px;color:var(--ink-2)}
.post-s{font-size:18px;font-weight:600;line-height:1.45;letter-spacing:-.01em;text-wrap:pretty}
.post-meta{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;font-size:13px;color:var(--ink-2)}
.post-meta .pm{display:inline-flex;gap:5px;align-items:center}
.react{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.react .chip{min-height:44px}
.heart[aria-pressed="true"]{color:var(--accent-text);background:var(--accent-soft)}
.heart[aria-pressed="true"] svg{fill:currentColor}
.whos-in{display:flex;flex-direction:column;gap:8px;border-top:1px solid var(--line);padding-top:12px}
.pend{display:flex;align-items:center;gap:10px}
.pend p{flex:1;min-width:0;font-size:14px}
.join-sw{border:0;border-radius:14px;background:var(--sunk);padding:10px 12px}
.just{font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--accent-text);background:var(--accent-soft);padding:3px 8px;border-radius:999px}
.upnext{min-height:60px}

/* ---------- calendar views (Google-style) ---------- */
.seg.s3{grid-template-columns:repeat(3,1fr)}.seg.s4{grid-template-columns:repeat(4,1fr)}
.seg button{font-size:13.5px}
.cmp{display:flex;flex-direction:column;gap:8px}
.cmp .hscroll{gap:8px}
.cmp-chip{flex:none;display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 12px 0 6px;border-radius:999px;font-weight:600;font-size:14px;background:var(--surface);border:1.5px solid var(--edge);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}
.cmp-chip[aria-pressed="true"]{border-color:var(--t-friends);background:var(--t-friends-bg);color:var(--t-friends)}
.cmp-chip[aria-pressed="true"]::after{content:"✓";font-weight:800}
.together{display:flex;flex-direction:column;gap:6px}
.tog-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--line)}
.tog-row:first-of-type{border-top:0}
.tog-row p{flex:1;min-width:0;font-weight:600;font-variant-numeric:tabular-nums}
.tog-row p span{display:block;font-weight:500;font-size:12.5px;color:var(--t-friends)}
.day-nav{display:flex;align-items:center;gap:4px}
.day-nav h2{flex:1;text-align:center}
.tg{border-radius:20px;overflow:hidden;background-color:var(--surface);-webkit-backdrop-filter:blur(22px) saturate(170%);backdrop-filter:blur(22px) saturate(170%);border:1px solid var(--edge);box-shadow:var(--glass-shadow)}
.tg-head,.tg-ad,.tg-body{display:grid;grid-template-columns:38px repeat(var(--cols),minmax(0,1fr))}
.tg-head{border-bottom:1px solid var(--line)}
.th{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:6px 2px;font-size:11px;font-weight:600;color:var(--ink-2);min-width:0;text-align:center}
.th .av{margin-bottom:1px}
.th-btn{display:flex;flex-direction:column;align-items:center;gap:0;width:100%;min-height:44px;justify-content:center;border-radius:10px;font-size:11px;font-weight:600;color:var(--ink-2)}
.th-btn b{font-size:16px;color:var(--ink);font-variant-numeric:tabular-nums}
.th-btn.today b{color:var(--accent-ink);background:var(--accent);border-radius:50%;width:26px;height:26px;display:grid;place-items:center}
.th-btn:hover{background:var(--sunk)}
.th span.nm{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tg-ad{border-bottom:1px solid var(--line);min-height:28px}
.tg-ad .adl{font-size:9.5px;color:var(--ink-2);display:grid;place-items:center;text-align:center;line-height:1.1}
.adc{border-left:1px solid var(--line);padding:3px 2px;display:flex;flex-direction:column;gap:2px;min-width:0}
.adc .blk{position:static;width:auto}
.tg-body{position:relative}
.tg-gut{position:relative}
.hr-l{position:absolute;right:5px;font-size:10px;color:var(--ink-2);transform:translateY(-50%);font-variant-numeric:tabular-nums;white-space:nowrap}
.tg-col{position:relative;border-left:1px solid var(--line);background-image:repeating-linear-gradient(to bottom,var(--line) 0 1px,transparent 1px var(--ph));min-width:0}
.blk{position:absolute;border-radius:8px;padding:3px 5px;font-size:11.5px;line-height:1.2;overflow:hidden;text-align:left;font-weight:700;border:1px solid transparent;z-index:2;display:flex;flex-direction:column;gap:1px;min-width:0}
.blk .bt{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;word-break:break-word}
.blk .bm{font-weight:500;font-size:10.5px;opacity:.85;font-variant-numeric:tabular-nums;white-space:nowrap}
.tg.compact .blk{font-size:10px;padding:2px 3px;border-radius:6px}
.tg.compact .blk .bt{-webkit-line-clamp:4;word-break:normal;overflow-wrap:normal;hyphens:auto}
.k-friends{background:var(--t-friends-bg);color:var(--t-friends);border-color:color-mix(in srgb,var(--t-friends) 35%,transparent)}
.k-us{background:var(--t-us-bg);color:var(--t-us);border-color:color-mix(in srgb,var(--t-us) 35%,transparent)}
.k-everyone{background:var(--t-every-bg);color:var(--t-every);border-color:color-mix(in srgb,var(--t-every) 35%,transparent)}
.k-only{background:var(--t-only-bg);color:var(--t-only);border-color:color-mix(in srgb,var(--t-only) 25%,transparent)}
.k-busy,.k-fbusy{background:repeating-linear-gradient(135deg,var(--t-only-bg) 0 5px,transparent 5px 9px);color:var(--t-only);border-color:color-mix(in srgb,var(--t-only) 25%,transparent)}
.k-fbusy{z-index:1;opacity:.75}
.k-free,.k-freeF{background:color-mix(in srgb,var(--t-friends) 9%,transparent);color:var(--t-friends);border:1.5px dashed color-mix(in srgb,var(--t-friends) 60%,transparent);z-index:1;font-weight:600}
.k-post{background:var(--accent-soft);color:var(--accent-text);border-color:color-mix(in srgb,var(--accent) 40%,transparent)}
.k-ghost{background:var(--sunk);color:var(--ink-2);border-color:var(--line);opacity:.7;font-weight:600;z-index:1}
.band{position:absolute;left:0;right:0;z-index:1;background:color-mix(in srgb,var(--t-friends) 20%,transparent);border-block:2px solid var(--t-friends)}
.band-x{position:absolute;left:38px;right:0;z-index:3;background:color-mix(in srgb,var(--t-friends) 14%,transparent);border-block:2px solid var(--t-friends);pointer-events:none}
.band-x button{pointer-events:auto;position:absolute;top:4px;right:6px;font-size:12px;font-weight:700;color:var(--accent-ink);background:var(--t-friends);border-radius:999px;padding:0 12px;min-height:32px;box-shadow:var(--glass-shadow)}
.now{position:absolute;left:-1px;right:0;height:2px;background:var(--accent);z-index:4;pointer-events:none}
.now::before{content:"";position:absolute;left:-5px;top:-4px;width:10px;height:10px;border-radius:50%;background:var(--accent)}
.legend{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12.5px;color:var(--ink-2)}
.legend span{display:inline-flex;align-items:center;gap:6px}
.legend i{width:16px;height:10px;border-radius:3px;display:inline-block}
.mg{border-radius:20px;overflow:hidden;background-color:var(--surface);-webkit-backdrop-filter:blur(22px) saturate(170%);backdrop-filter:blur(22px) saturate(170%);border:1px solid var(--edge);box-shadow:var(--glass-shadow)}
.mg-head,.mg-body{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.mg-head span{text-align:center;font-size:11px;font-weight:700;color:var(--ink-2);padding:8px 0;border-bottom:1px solid var(--line)}
.mc{min-height:70px;display:flex;flex-direction:column;align-items:stretch;gap:2px;padding:4px 3px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);text-align:left;min-width:0}
.mc:nth-child(7n){border-right:0}
.mc .dn{font-size:12px;font-weight:700;align-self:center;width:22px;height:22px;display:grid;place-items:center;border-radius:50%;font-variant-numeric:tabular-nums}
.mc.today .dn{background:var(--accent);color:var(--accent-ink)}
.mc.sel{background:var(--sunk)}
.mc.out{opacity:.4}
.mc:not([disabled]):hover{background:var(--sunk)}
.mchip{display:block;font-size:9.5px;font-weight:700;border-radius:4px;padding:1px 3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:0}
.mc .more{font-size:9.5px;color:var(--ink-2);font-weight:600;padding-left:3px}
.mfree{height:4px;border-radius:2px;background:var(--t-friends);margin-top:auto}
.sched-day{display:flex;flex-direction:column;gap:10px}

/* comments */
.cmts{border-top:1px solid var(--line);padding-top:10px;display:flex;flex-direction:column;gap:10px}
.c-toggle{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;font-weight:600;color:var(--ink-2);min-height:36px;align-self:flex-start;border-radius:10px;padding:0 6px;margin-left:-6px}
.c-toggle:hover{background:var(--sunk)}
.c-list{display:flex;flex-direction:column;gap:10px}
.cmt{display:flex;gap:8px;align-items:flex-start}
.cmt-b{flex:1;min-width:0;background:var(--sunk);border-radius:4px 16px 16px 16px;padding:8px 11px;font-size:14px;display:flex;flex-direction:column;gap:3px}
.cmt-b b{font-size:13px}
.sug{border:1.5px solid var(--edge);background:var(--surface-strong);border-radius:14px;padding:10px;display:flex;flex-direction:column;gap:6px;margin-top:4px}
.sug.picked{border-color:var(--t-friends);background:var(--t-friends-bg)}
.idea-q{display:flex;flex-direction:column;gap:6px}
.idea-q .chip{min-height:38px;font-size:13px}
.c-form{display:flex;gap:6px;align-items:center}
.c-form .input{min-height:44px;border-radius:22px}
.c-send{background:var(--accent);color:var(--accent-ink)}
.link{display:inline-flex;align-items:center;gap:5px}

.chip-row{flex-wrap:nowrap;gap:8px}
.chip-row .chip{flex:none}
.money{position:relative}
.money span{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--ink-2);font-weight:600;pointer-events:none}
.money .input{padding-left:26px}

.badge-once,.badge-rec{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:700;padding:3px 9px;border-radius:999px;align-self:flex-start}
.badge-once{color:var(--accent-ink);background:var(--accent)}
.badge-rec{color:var(--ink-2);background:var(--sunk)}
.card.dm-sec{padding:16px 16px 14px;gap:10px}
.dm-sec .hscroll{margin:0 -33px;padding:2px 33px 4px}
.dm-card{flex:none;width:210px;text-align:left;display:flex;flex-direction:column;gap:4px;padding:12px;border-radius:18px;background-color:var(--surface);-webkit-backdrop-filter:blur(22px) saturate(170%);backdrop-filter:blur(22px) saturate(170%);border:1px solid var(--edge);box-shadow:var(--glass-shadow)}
.dm-card:hover{border-color:var(--accent)}
.dm-when{font-size:12px;font-weight:800;color:var(--accent-text);text-transform:uppercase;letter-spacing:.05em}
.dm-card b{font-size:15px;line-height:1.25}
.dm-card span.small{color:var(--ink-2)}

/* photos */
.ph-grid{display:grid;gap:4px;border-radius:16px;overflow:hidden}
.ph-grid button{display:block;width:100%;height:100%;padding:0;min-height:0}
.ph-grid img{width:100%;height:100%;object-fit:cover;display:block}
.ph-grid.n1{grid-template-columns:1fr}.ph-grid.n1 img{aspect-ratio:16/10;height:auto}
.ph-grid.n2{grid-template-columns:1fr 1fr}.ph-grid.n2 img{aspect-ratio:1/1;height:auto}
.ph-grid.n3{grid-template-columns:2fr 1fr;grid-template-rows:1fr 1fr;aspect-ratio:3/2}.ph-grid.n3 button:first-child{grid-row:span 2}
.ph-grid.n4{grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;aspect-ratio:1/1}
.thumbs{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.thumb{width:64px;height:64px;border-radius:14px;overflow:hidden;position:relative;border:1px solid var(--edge);padding:0}
.thumb img{width:100%;height:100%;object-fit:cover;display:block}
.thumb .alt-dot{position:absolute;right:3px;bottom:3px;font-size:9px;font-weight:800;background:var(--ink);color:var(--app);border-radius:5px;padding:1px 4px}
.add-ph{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 14px;border-radius:999px;border:1.5px dashed var(--accent);color:var(--accent-text);font-weight:600;font-size:14px;background:transparent;cursor:pointer}
.art-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.art-btn{display:flex;flex-direction:column;gap:4px;align-items:center;font-size:11.5px;font-weight:600;color:var(--ink-2);padding:0}
.art-btn img{width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:12px;border:2px solid transparent}
.art-btn:hover img{border-color:var(--accent)}
.upload{display:flex;align-items:center;justify-content:center;gap:8px;min-height:52px;border-radius:14px;border:1.5px dashed var(--accent);color:var(--accent-text);font-weight:700;cursor:pointer;background:var(--accent-soft)}
.upload:focus-within{outline:3px solid var(--focus);outline-offset:2px}
.viewer img{width:100%;max-height:52vh;object-fit:contain;border-radius:16px;background:var(--sunk)}

.wm-fixed{white-space:normal;flex-wrap:wrap;justify-content:center;row-gap:.15em;font-size:32px;text-align:center;max-width:100%}
.more-btn{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:var(--ink-2);flex:none}
.more-btn:hover{background:var(--sunk)}
.menu{display:flex;flex-direction:column}
.menu button{display:flex;align-items:center;gap:12px;min-height:52px;padding:0 4px;text-align:left;font-weight:600;border-bottom:1px solid var(--line)}
.menu button:last-child{border-bottom:0}
.menu button.danger-txt{color:var(--accent-text)}
.menu button span.sub{display:block;font-size:12.5px;font-weight:500;color:var(--ink-2)}
.hide-pill{display:inline-flex;align-items:center;gap:5px;font-size:13px;font-weight:600;color:var(--ink-2);min-height:36px;padding:0 10px;border-radius:999px;border:1.5px solid var(--line);align-self:flex-start}
.check-row{display:flex;align-items:center;gap:12px;min-height:56px;width:100%;text-align:left;border-bottom:1px solid var(--line);padding:0 4px}
.check-row .box{width:24px;height:24px;border-radius:7px;border:2px solid var(--line);display:grid;place-items:center;margin-left:auto;flex:none}
.check-row[aria-checked="true"] .box{background:var(--ink);border-color:var(--ink);color:var(--app)}
.safety-card{border:1.5px solid var(--accent-soft);background:var(--accent-soft)}

.av-img{overflow:hidden;padding:0;background:var(--sunk)}
.av-img img{width:100%;height:100%;object-fit:cover;display:block}
.av-edit{position:relative;border-radius:50%;padding:0}
.av-edit .cam{position:absolute;right:-2px;bottom:-2px;width:26px;height:26px;border-radius:50%;background:var(--accent);color:var(--accent-ink);display:grid;place-items:center;border:2px solid var(--app)}
.swatches{display:flex;gap:10px;flex-wrap:wrap}
.swatch{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;font-weight:700;border:2px solid transparent}
.swatch[aria-pressed="true"]{border-color:var(--ink)}
.av-preview{display:flex;justify-content:center}

/* descriptor under the blanks */
.bw.sub{padding-bottom:.5em}
.bw.sub .blank{position:relative}
.bw.sub .blank::after{content:attr(data-l);position:absolute;top:calc(100% + .22em);left:50%;transform:translateX(-50%);font-size:max(10px,.36em);font-weight:600;letter-spacing:.02em;color:var(--ink-2);white-space:nowrap;line-height:1}
/* tagline */
.tagline{font-size:21px;font-weight:700;letter-spacing:-.02em;line-height:1.3;text-wrap:balance}
.tagline .ul{text-decoration:underline;text-decoration-color:var(--accent);text-decoration-thickness:3px;text-underline-offset:5px;-webkit-box-decoration-break:clone;box-decoration-break:clone}
.tagline .tw{display:inline-flex;align-items:baseline;gap:.08em;color:var(--accent-text);font-weight:800}
.tagline .tw i{display:inline-block;width:.55em;height:.11em;border-radius:.06em;background:var(--accent)}
.tagline-sub{font-size:14px;color:var(--ink-2);margin-top:4px}
/* one-time hint */
.tok-hint{display:flex;align-items:center;gap:8px;font-size:13.5px;font-weight:600;background:var(--ink);color:var(--app);border-radius:14px;padding:8px 8px 8px 12px;position:relative;animation:hintIn .4s ease}
.tok-hint::after{content:"";position:absolute;left:28px;bottom:-6px;width:12px;height:12px;background:var(--ink);transform:rotate(45deg);border-radius:2px}
.tok-hint span{flex:1}
.tok-hint button{min-height:36px;padding:0 12px;border-radius:10px;background:var(--app);color:var(--ink);font-weight:700;font-size:13px}
.hinting .tok{animation:tokPulse 1.6s ease-in-out 3}
@keyframes tokPulse{0%,100%{box-shadow:0 0 0 0 transparent}50%{box-shadow:0 0 0 5px color-mix(in srgb,var(--accent) 30%,transparent)}}
@keyframes hintIn{from{opacity:0;transform:translateY(6px)}}
/* tour */
#tour-root{position:absolute;inset:0;z-index:60;pointer-events:none}
#tour-root.on{pointer-events:auto}
.spot{position:absolute;border-radius:20px;box-shadow:0 0 0 9999px rgba(12,6,28,.6);transition:all .3s cubic-bezier(.2,.8,.2,1);pointer-events:none;outline:2px solid rgba(255,255,255,.8)}
.tour-card{position:absolute;left:16px;right:16px;background:var(--surface-strong);-webkit-backdrop-filter:blur(26px) saturate(170%);backdrop-filter:blur(26px) saturate(170%);border:1px solid var(--edge);border-radius:20px;padding:16px;box-shadow:var(--glass-shadow);display:flex;flex-direction:column;gap:8px;transition:top .3s ease}
.tour-card h2{font-size:18px;font-weight:800;letter-spacing:-.02em}
.tour-card p{font-size:14.5px;color:var(--ink-2)}
.tour-foot{display:flex;align-items:center;gap:8px;margin-top:4px}
.tour-foot .cnt{flex:1;white-space:nowrap;font-size:12.5px;font-weight:600;color:var(--ink-2)}
/* private prefs */
.lockbar{display:flex;gap:10px;align-items:flex-start;padding:12px;border-radius:16px;background:var(--t-us-bg);color:var(--t-us);font-size:13.5px;font-weight:600}
.lockbar span{color:var(--ink)}
.lockbar b{color:var(--t-us)}
.pref-sec{display:flex;flex-direction:column;gap:10px}
.pref-sec h2{font-size:16px;font-weight:800;letter-spacing:-.01em}
.private-tag{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:700;color:var(--t-us);background:var(--t-us-bg);padding:2px 8px;border-radius:999px;margin-left:6px;vertical-align:middle}

.flip-btn{display:inline-flex;align-items:center;gap:5px;font-size:13px;font-weight:700;color:var(--accent-text);min-height:36px;padding:0 12px;border-radius:999px;background:var(--accent-soft);white-space:nowrap;flex:none}
.flip-btn:hover{background:color-mix(in srgb,var(--accent) 22%,transparent)}
.composer.going{background-image:linear-gradient(140deg,var(--hero-a),color-mix(in srgb,var(--t-us-bg) 80%,transparent))}
.composer.fout{animation:cardOut .17s ease-in forwards}
.composer.fin{animation:cardIn .28s cubic-bezier(.2,.8,.2,1)}
@keyframes cardOut{to{transform:perspective(900px) rotateY(90deg);opacity:.5}}
@keyframes cardIn{from{transform:perspective(900px) rotateY(-90deg);opacity:.5}}
.kind-going{font-size:10.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--t-friends);background:var(--t-friends-bg);padding:3px 8px;border-radius:999px}

/* stacked deck */
.deck{position:relative;padding-top:42px}
.back-card{position:absolute;top:0;left:16px;right:0;bottom:42px;z-index:0;border-radius:24px;display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding:14px 18px;text-align:left;
  transform:rotate(1.4deg);transform-origin:top left;background-color:var(--surface);background-image:linear-gradient(140deg,var(--hero-a),var(--hero-b));
  -webkit-backdrop-filter:blur(22px) saturate(170%);backdrop-filter:blur(22px) saturate(170%);border:1px solid var(--edge);box-shadow:var(--glass-shadow);cursor:pointer;transition:transform .2s ease}
.back-card.going{background-image:linear-gradient(140deg,var(--hero-a),color-mix(in srgb,var(--t-us-bg) 80%,transparent))}
.back-card:hover{transform:rotate(2.2deg) translateY(-3px)}
.back-card .eyebrow{color:var(--ink)}
.peek-hint{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:700;color:var(--accent-text);white-space:nowrap}
.deck > .composer{position:relative;z-index:1;margin-right:16px;box-shadow:inset 0 1px 0 var(--edge),0 14px 34px rgba(60,25,120,.18)}
.deck.out > .composer{animation:deckOut .28s cubic-bezier(.45,0,.55,1) forwards}
.deck.out > .back-card{animation:backFwd .28s cubic-bezier(.45,0,.55,1) forwards}
.deck.in > .back-card{animation:backTuck .4s cubic-bezier(.2,.8,.2,1)}
.deck.in > .composer > *{animation:fadeUp .3s ease}
@keyframes deckOut{to{transform:translate(-38%,18px) rotate(-8deg);opacity:.85}}
@keyframes backFwd{to{transform:translate(-16px,42px) rotate(0deg)}}
@keyframes backTuck{from{transform:translate(calc(-38% - 16px),60px) rotate(-9deg)}}
@keyframes fadeUp{from{opacity:0;transform:translateY(4px)}}

.link-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:14px;background:var(--surface-strong);border:1px solid var(--edge);color:var(--accent-text)}
.link-row .lr-t{flex:1;min-width:0;display:flex;flex-direction:column;color:var(--ink)}
.link-row .lr-t b{font-size:14.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.link-row .lr-t span{font-size:12.5px;color:var(--ink-2)}

/* toggle (design system) */
.seg{display:grid;grid-template-columns:repeat(var(--n,2),minmax(0,1fr));gap:4px;padding:4px;border-radius:14px;background-color:var(--sunk);border:1px solid var(--edge);box-shadow:none}
.seg button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:40px;min-width:0;padding:0 12px;border-radius:10px;font-weight:600;font-size:13.5px;color:var(--ink-2);white-space:nowrap}
.seg[style*="--n:3"] button{padding:0 8px}
.seg[style*="--n:4"] button{padding:0 6px}
@media (max-width:480px){.deck > .composer{margin-right:10px;padding:16px}.back-card{left:10px}}
.seg button .seg-l{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.seg button .ic{flex:none}
.seg button[aria-checked="true"],.seg button[aria-selected="true"]{background:var(--surface-strong);color:var(--ink);box-shadow:var(--glass-shadow)}
/* buttons and chips never wrap; padding keeps text off the edges */
.btn,.btn.sm,.chip,.in-btn,.flip-btn,.add-ph,.hide-pill,.cmp-chip,.peek-hint,.link{white-space:nowrap}
.btn{padding:0 20px}
.btn.sm{padding:0 16px}
.chip{padding:0 16px}
.btn-row{flex-wrap:wrap}
.btn-row .btn{flex:1 1 auto;min-width:max-content}

.k-idea{background:color-mix(in srgb,var(--accent) 8%,transparent);color:var(--accent-text);border:1.5px dashed var(--accent)}
.ev-card.idea-card{border:1.5px dashed var(--accent);background-color:color-mix(in srgb,var(--accent) 6%,var(--surface))}

/* ===== Scale baseline: Instagram (iOS) =====
   body 14 · secondary 12.5 · screen title 20 · section 16 · buttons 34 (small 30) · toggles/chips 32
   inputs 40 · feed avatar 32 · small avatar 24 · tab icons 24 with 10px labels.
   Visible controls are Instagram-sized; tap areas are extended to 44px for accessibility. */
:root{--fs-body:14px;--fs-2:12.5px;--fs-title:20px;--fs-sec:16px;--h-btn:34px;--h-btn-sm:30px;--h-ctl:32px;--h-input:40px}
body{font-size:var(--fs-body)}
.btn,.chip,.seg button,.in-btn,.icon-btn,.link,.flip-btn,.add-ph,.hide-pill{position:relative}
.btn::after,.chip::after,.seg button::after,.in-btn::after,.link::after,.add-ph::after,.hide-pill::after{content:"";position:absolute;left:0;right:0;top:50%;height:44px;transform:translateY(-50%)}
.btn{min-height:var(--h-btn);font-size:14px;border-radius:10px;padding:0 16px;gap:6px}
.btn.sm{min-height:var(--h-btn-sm);font-size:13px;border-radius:9px;padding:0 14px}
.btn .ic{width:17px;height:17px}
.btn.sm .ic{width:15px;height:15px}
.chip{min-height:var(--h-ctl);font-size:13.5px;padding:0 14px}
.react .chip{min-height:var(--h-btn)}
.seg{padding:3px;border-radius:12px;gap:3px}
.seg button{min-height:var(--h-ctl);font-size:13px;border-radius:9px}
.in-btn{min-height:var(--h-btn);font-size:13.5px;border-radius:10px;padding:0 14px}
.icon-btn{width:40px;height:40px}
.link{min-height:32px;font-size:13.5px}
.cmp-chip{min-height:34px;font-size:13.5px;padding:0 12px 0 5px}
.add-ph,.hide-pill{min-height:var(--h-ctl);font-size:13px}
.input,select.input{min-height:var(--h-input);font-size:14px;border-radius:10px}
textarea.input{min-height:76px}
.search{min-height:var(--h-input);border-radius:12px}
.search input{min-height:38px}
.c-form .input{min-height:38px}
.hdr h1{font-size:var(--fs-title)}
.hdr .sub{font-size:12px}
.sec-h h2,.pref-sec h2{font-size:var(--fs-sec)}
.day-h{font-size:14px}
.sheet h2{font-size:18px}
.ob h1{font-size:26px}
.done-screen h1{font-size:24px}
.big{font-size:22px}
.sentence{font-size:22px;line-height:1.4}
.tagline{font-size:18px}
.post-s{font-size:15px;font-weight:500;line-height:1.45}
.post-h .who b{font-size:14px}
.post-h .who span,.notif-time{font-size:12px}
.lb-title{font-size:14px}
.ev-title{font-size:14.5px}
.res-name,.idea h3{font-size:15px}
.notif-top p{font-size:14px}
.meta,.small,.note,.cmt-b{font-size:var(--fs-2)}
.av{width:32px;height:32px;font-size:12px}
.av.sm{width:24px;height:24px;font-size:9.5px}
.av.lg{width:44px;height:44px;font-size:15px}
.tier{font-size:11.5px;padding:3px 8px 3px 6px}
.tier .ic{width:13px;height:13px}
.card{border-radius:18px;padding:14px}
.deck > .composer{padding:16px}
.back-card{border-radius:18px}
.list-btn{min-height:56px;padding:10px 12px;border-radius:14px}
.free-card{width:108px;padding:10px;border-radius:16px}
.set-row{min-height:52px}
.tab{min-height:44px;font-size:10px;padding:6px 0 2px}
.tab .ic{width:24px;height:24px}
.tabs{padding:4px}

/* Tags: one neutral style everywhere (white, primary text, thin outline) */
:root{--tag-bg:#FFFFFF;--tag-line:rgba(28,22,48,.16)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--tag-bg:#221B36;--tag-line:rgba(255,255,255,.2)}}
:root[data-theme="dark"]{--tag-bg:#221B36;--tag-line:rgba(255,255,255,.2)}
.tier,.kind-going,.just,.best,.badge-once,.badge-rec,.private-tag,.av-ok,.av-no{background:var(--tag-bg);color:var(--ink);border:1px solid var(--tag-line);box-shadow:none;font-weight:600;letter-spacing:0;text-transform:none}
.tier{padding:3px 9px 3px 7px}
.kind-going,.just,.best{font-size:11.5px;padding:2px 8px}
.av-no{color:var(--ink-2)}

.ptags{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}
.tag{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:500;padding:2px 9px;border-radius:999px;background:var(--tag-bg);color:var(--ink);border:1px solid var(--tag-line);white-space:nowrap}
.tag .ic{width:12px;height:12px}
.tag-own{font-weight:700}
.list-btn.upnext{align-items:flex-start}
.list-btn.upnext > .ic{margin-top:2px}

.plan-card{list-style:none;padding:12px;border-radius:14px;background-color:var(--surface);-webkit-backdrop-filter:blur(22px) saturate(170%);backdrop-filter:blur(22px) saturate(170%);border:1px solid var(--edge);box-shadow:var(--glass-shadow)}
.plan-main{display:flex;align-items:flex-start;gap:12px;width:100%;text-align:left;border-radius:10px}
.plan-main > .ic{margin-top:2px}
.plan-main .lb-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.req-strip{display:flex;align-items:center;gap:8px;margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}
.req-strip .rs-t{flex:1;min-width:0;font-size:13px;display:flex;flex-wrap:wrap;align-items:center;column-gap:4px}
.req-strip .rs-t b{font-weight:600}
.req-strip .rs-sub{flex-basis:100%;font-size:12px;color:var(--ink-2)}
.req-strip .rs-more{min-height:0;font-size:13px;padding:0}
.btn.sm.icon-only{width:30px;padding:0;flex:none}

.drawer{border-radius:16px;background:var(--surface-strong);border:1px solid var(--edge);overflow:hidden}
.drawer-h{display:flex;align-items:center;gap:10px;width:100%;min-height:52px;padding:10px 14px;text-align:left}
.drawer-h .dh-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.drawer-h .dh-t b{font-size:15px}
.drawer-h .dh-t span{font-size:12.5px;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.drawer-h > .ic{transition:transform .2s ease;color:var(--ink-2)}
.drawer-h[aria-expanded="true"] > .ic{transform:rotate(90deg)}
.drawer-b{padding:0 14px 6px;display:flex;flex-direction:column;gap:4px}
.check-row[aria-checked="false"] .box .ic{opacity:0}

/* tagline set like the logo: underscored words either side of a larger "with" */
.tg2{display:flex;justify-content:center;align-items:baseline;padding-bottom:8px;gap:0 .3em;flex-wrap:wrap;font-size:18px;font-weight:600;letter-spacing:-.02em}
.tg2 .ul2{line-height:1.15}
.tg2 .tw2{font-size:1em;font-weight:700;font-style:italic;letter-spacing:-.02em;line-height:1.15;padding:0 .08em 0 .02em;background:linear-gradient(var(--accent),var(--accent)) no-repeat 0 var(--ul-y,92%)/100% 4px}

.recap{font-size:15px;font-weight:500;line-height:1.45;padding:12px 14px;border-radius:14px;background:var(--surface);border:1px solid var(--edge)}
.sheet .eyebrow{margin-bottom:-8px}

.tips{display:flex;flex-direction:column;gap:12px;font-size:14px}
.tips li{display:flex;gap:10px;align-items:flex-start}
.tips li .ic{flex:none;margin-top:1px}
.tips b{font-weight:600}
.btn[aria-disabled="true"]{opacity:.45}
.check-row b{font-weight:600}

/* reaction buttons: one shape (design system) */
.react .in-btn{min-height:34px;border-radius:10px;padding:0 14px;font-size:13.5px}
.in-btn.alt{border:1.5px solid var(--tag-line);background:var(--tag-bg);color:var(--ink);font-weight:600}
.in-btn.alt[aria-pressed="true"]{background:var(--ink);color:var(--app);border-color:var(--ink)}
.in-btn.alt.heart{width:34px;padding:0;justify-content:center}
.in-btn.alt.heart[aria-pressed="true"]{background:var(--accent-soft);color:var(--accent-text);border-color:var(--accent)}

/* close-friend star on avatars (design system) */
.av-wrap{position:relative;display:inline-flex;flex:none}
.av-star{position:absolute;right:-4px;bottom:-4px;width:13px;height:13px;border-radius:50%;background:var(--t-us);color:#FFFFFF;display:grid;place-items:center;border:2px solid var(--tag-bg);box-sizing:content-box}
.av-star .ic{width:8px;height:8px}
.av-wrap .av.lg + .av-star,.av-wrap .av.xl + .av-star{width:18px;height:18px;right:-2px;bottom:-2px}
.av-wrap .av.lg + .av-star .ic{width:11px;height:11px}
.av-wrap .av.xl + .av-star .ic{width:13px;height:13px}

/* friends list, Instagram-style */
.f-list{display:flex;flex-direction:column;background-color:var(--surface);-webkit-backdrop-filter:blur(22px) saturate(170%);backdrop-filter:blur(22px) saturate(170%);border:1px solid var(--edge);border-radius:18px;padding:0 12px;box-shadow:var(--glass-shadow)}
.f-row + .f-row{border-top:1px solid var(--line)}
.f-row{display:flex;align-items:center;gap:8px;min-height:68px;padding:6px 0}
.f-main{flex:1;min-width:0;display:flex;align-items:center;gap:12px;text-align:left;border-radius:12px;padding:4px 0}
.f-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.f-t b{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.f-t .fc-free{font-size:13px;font-weight:500}
.f-new{font-size:12px;color:var(--accent-text);font-weight:600}
.btn.f-msg{flex:none;background:var(--tag-bg);border:1px solid var(--tag-line);color:var(--ink)}
.f-more{width:36px;height:36px;flex:none}
.dm-thread{display:flex;flex-direction:column;gap:6px;min-height:120px;max-height:40vh;overflow:auto}
.dm{max-width:78%;padding:8px 12px;border-radius:16px 16px 16px 4px;background:var(--surface);border:1px solid var(--edge);font-size:14px;align-self:flex-start;margin:0}
.dm.me{align-self:flex-end;border-radius:16px 16px 4px 16px;background:var(--accent);color:var(--accent-ink);border-color:transparent}

/* type hierarchy on cards: titles 14–15, supporting text 12, tertiary 11.5 */
:root{--fs-2:12px}
.fc-free,.f-t .fc-free,.meta,.small,.note,.post-meta,.res-fit,.set-row .sr-t span,.lr-t span,.drawer-h .dh-t span,.req-strip .rs-t,.notif .small{font-size:12px}
.f-new,.post-h .who span,.notif-time,.rs-sub,.hdr .sub,.f-t .f-new{font-size:11.5px}
.cmt-b{font-size:13px}
.lb-title,.f-t b,.post-h .who b,.ev-title{font-size:14px}

.name-btn{font:inherit;font-size:14px;font-weight:700;color:var(--ink);padding:0;text-align:left;text-decoration:underline;text-decoration-color:var(--tag-line);text-underline-offset:3px}
.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.stat-box{padding:10px 12px;border-radius:12px;background:var(--tag-bg);border:1px solid var(--tag-line);display:flex;flex-direction:column}
.stat-box b{font-size:16px}
.stat-box span{font-size:12px;color:var(--ink-2)}
.ints{display:flex;flex-wrap:wrap;gap:5px;margin-top:3px}
.int-common{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:700;padding:2px 8px;border-radius:999px;background:var(--tag-bg);border:1.5px solid var(--accent);color:var(--accent-text)}
.int-common .ic{fill:currentColor}
.int-common.lg{font-size:12.5px;padding:3px 10px}
.no-common{font-size:11.5px;font-style:italic;color:var(--ink-2);margin-top:2px}
.safety-ic{width:64px;height:64px;border-radius:20px;display:grid;place-items:center;background:var(--tag-bg);border:1px solid var(--tag-line);color:var(--accent)}
.safety-list{display:flex;flex-direction:column;gap:10px}
.safety-list li{flex-direction:row;gap:12px;padding:12px}
.safety-list li > span{display:flex;flex-direction:column;gap:2px;font-size:14px}
.safety-list li > span span{color:var(--ink-2);font-size:12.5px}
.auth h1{font-size:26px}
.pw-wrap{position:relative}
.pw-wrap .input{padding-right:64px}
.pw-show{position:absolute;right:6px;top:50%;transform:translateY(-50%);font-size:13px;font-weight:600;color:var(--accent-text);min-height:32px;padding:0 8px}
.pw-checks{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--ink-2)}
.pw-checks li{display:flex;align-items:center;gap:6px}
.pw-checks li.ok{color:var(--ok);font-weight:600}
.or-line{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--ink-2)}
.or-line span{flex:1;height:1px;background:var(--line)}
#tabs[hidden]{display:none!important}
.f-row{flex-wrap:wrap}
.f-ints{flex-basis:100%;padding-left:56px;margin-top:-10px;padding-bottom:4px}
.f-ints .ints{margin-top:0}
.int-more{font-size:11.5px;font-weight:700;color:var(--accent-text);align-self:center}
.notif-x{position:absolute;top:4px;right:4px;min-width:32px;min-height:32px;width:32px;height:32px;color:var(--ink-2)}
.notif .notif-top{padding-right:24px}

/* calendar blocks follow the Plans look: one accent for shared plans, neutral for private */
.blk.k-friends,.blk.k-us,.blk.k-everyone,.mchip.k-friends,.mchip.k-us,.mchip.k-everyone,.legend i.k-friends,.legend i.k-us,.legend i.k-everyone{background:var(--accent-soft);color:var(--accent-text);border-color:color-mix(in srgb,var(--accent) 40%,transparent)}
.blk.k-only,.blk.k-busy,.blk.k-fbusy,.mchip.k-only,.mchip.k-busy,.mchip.k-fbusy,.legend i.k-only,.legend i.k-busy,.legend i.k-fbusy{background:var(--sunk);color:var(--ink-2);border-color:var(--line);font-weight:600}

/* ===================== live app shell ===================== */
body{padding:0;margin:0;background:var(--page)}
.app-shell{min-height:100dvh;display:flex;justify-content:center}
body .phone{width:100%;max-width:520px;height:100dvh;min-height:0;margin:0 auto;border:0;border-radius:0;box-shadow:none;--sb:0px}
@media (min-width:560px){body .phone{border-left:1px solid var(--line);border-right:1px solid var(--line)}}
body .status{display:none}
body .hdr{padding-top:calc(12px + env(safe-area-inset-top,0px))}
body .ob,body .done-screen{padding-top:calc(24px + env(safe-area-inset-top,0px))}
.tabs{padding-bottom:max(8px,env(safe-area-inset-bottom,0px))}
.boot{flex:1;display:grid;place-items:center;gap:12px;align-content:center;color:var(--ink-2)}
.spin{width:28px;height:28px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--accent);animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.cfg-missing{padding:24px;display:flex;flex-direction:column;gap:12px}
.cfg-missing code{background:var(--sunk);padding:2px 6px;border-radius:6px}
.btn[disabled]{opacity:.55;pointer-events:none}
.idea-tag{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--accent-text);margin-left:6px}
.cal-row{display:flex;align-items:center;gap:12px;padding:12px 14px;min-height:60px}
.cal-row + .cal-row{border-top:1px solid var(--line)}
.cal-row .sr-t{flex:1;min-width:0}
.err-line{color:var(--warn);font-size:12px}
.date-in{min-height:40px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.av-img img{width:100%;height:100%;object-fit:cover;border-radius:50%}
.find-opt{display:flex;align-items:center;gap:10px;justify-content:space-between}
.plan-sheet .post{border:0;background:none;padding:0;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}

/* ---------- auth & onboarding ---------- */
.ob.auth{--ink-2:var(--ink);gap:16px;padding-bottom:calc(32px + env(safe-area-inset-bottom,0px))}
.auth-top{display:flex;align-items:center;gap:12px;margin:-4px -10px 0}
.auth-top .prog{flex:1}
.auth-spacer{width:44px;flex:none}
.prog{display:flex;gap:6px;align-items:center}
.prog i{flex:1;height:6px;border-radius:3px;background:var(--line)}
.prog i.on{background:var(--accent)}
.auth-logo{display:flex;justify-content:center;padding:12px 0 4px}
.card.auth-card{background:var(--surface-strong);-webkit-backdrop-filter:blur(22px) saturate(170%);backdrop-filter:blur(22px) saturate(170%);border:1px solid var(--edge);box-shadow:var(--glass-shadow);border-radius:20px;padding:18px 16px;gap:16px}
.auth-card h1{font-size:26px}
.auth-card .input{background:rgba(255,255,255,.75)}
.auth-signin .auth-logo{padding-top:28px}
.auth-tag{margin-top:auto;padding-top:28px}
.auth-tag .tagline{margin:0}
.or-line{color:var(--ink)}
.btn.white{background:#FFFFFF;color:#1C1630;border:1px solid rgba(28,22,48,.12);box-shadow:0 4px 14px rgba(60,25,120,.10)}
.btn.white:hover{background:#FFFFFF;border-color:rgba(28,22,48,.28)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .auth-card .input{background:rgba(255,255,255,.08)}}
:root[data-theme="dark"] .auth-card .input{background:rgba(255,255,255,.08)}

/* ---------- round 3 polish ---------- */
:root{--ink-soft:#3B3452}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--ink-soft:#DCD3F2}}
:root[data-theme="dark"]{--ink-soft:#DCD3F2}
/* nav: tabs spread evenly across the bar */
.tabs{grid-template-columns:repeat(4,1fr)}
/* empty states: glass card, text slightly softer than headings */
.empty{color:var(--ink-soft);font-weight:500;border:1px solid var(--edge);background-color:var(--surface);-webkit-backdrop-filter:blur(22px) saturate(170%);backdrop-filter:blur(22px) saturate(170%);box-shadow:var(--glass-shadow);border-radius:18px;padding:18px 16px}
/* secondary buttons: solid white, no outline */
.btn.line,.btn.white{background:#FFFFFF;color:#1C1630;border:0;box-shadow:0 1px 2px rgba(28,22,48,.08),0 4px 14px rgba(60,25,120,.10)}
.btn.line:hover,.btn.white:hover{background:#FFFFFF;box-shadow:0 1px 2px rgba(28,22,48,.12),0 6px 18px rgba(60,25,120,.16)}
.btn.line[aria-pressed="true"]{background:var(--accent-soft);color:var(--accent-text)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .btn.line,:root:not([data-theme="light"]) .btn.white{background:#F6F1FF;color:#1C1630}}
:root[data-theme="dark"] .btn.line,:root[data-theme="dark"] .btn.white{background:#F6F1FF;color:#1C1630}
/* profile photo picker */
.av-edit.big{align-self:center}
.av-edit.big .av{width:96px;height:96px;font-size:30px}
.av-edit.big .cam{width:32px;height:32px;right:0;bottom:0}
/* error toasts */
.toast.err .ic{color:#FF9DB0}
.cal-row .sr-t{display:flex;flex-direction:column;gap:2px}.cal-row .sr-t b{font-size:14px;font-weight:600}.cal-row .sr-t > span{font-size:12px;color:var(--ink-soft)}

/* ---------- keep screens at 100% on phones ----------
   iOS zooms into any field whose text is under 16px. Fields use 16px on touch screens,
   so tapping them never zooms; pinch-to-zoom still works for anyone who needs it. */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
@media (hover:none) and (pointer:coarse){
  input,select,textarea,.input,.search input,.c-form .input,#dm-in{font-size:16px !important}
}
input,select,textarea,button{touch-action:manipulation}

/* lift the nav bar and pop-ups above anything pinned to the bottom of the page */
body .tabs{bottom:calc(12px + var(--overlay-gap,0px));transition:bottom .2s ease}
body .toast{bottom:calc(100px + var(--overlay-gap,0px))}
body .screen{padding-bottom:calc(104px + var(--overlay-gap,0px) + env(safe-area-inset-bottom,0px))}

/* ---------- drawers ride on top of the on-screen keyboard ---------- */
html,body{overflow:hidden;overscroll-behavior:none}
.sheet{bottom:var(--kb,0px) !important;max-height:min(88%,calc(var(--vvh,100dvh) - 24px));transition:bottom .22s cubic-bezier(.2,.8,.2,1),max-height .22s ease}
.kb-open .sheet{border-radius:24px 24px 0 0;padding-bottom:12px}
.kb-open #sheet-root .backdrop{bottom:0}
.kb-open .tabs{visibility:hidden}
.sheet:focus,.sheet:focus-visible{outline:none}
.menu a.menu-i{display:flex;align-items:center;gap:12px;min-height:52px;padding:0 4px;text-align:left;font-weight:600;border-bottom:1px solid var(--line);color:inherit;text-decoration:none}
a.btn{text-decoration:none}
.invite-out{display:flex;flex-direction:column;gap:8px;padding:12px;border-radius:14px;background:var(--sunk);border:1px solid var(--edge);margin-top:4px}
.invite-out .btn-row .btn{flex:0 1 auto}
.chip[disabled]{opacity:1;cursor:default}

/* ---------- invite page + welcome modal ---------- */
.invite-screen{gap:18px}
.invite-card{gap:14px}
.invite-s{font-size:24px;font-weight:800;line-height:1.35;letter-spacing:-.02em;text-wrap:pretty}
.invite-s .tok-s{color:var(--accent-text);text-decoration:underline;text-decoration-color:var(--accent);text-decoration-thickness:3px;text-underline-offset:4px}
.sheet.modal{top:50%;bottom:auto !important;left:20px;right:20px;max-width:420px;margin:0 auto;border-radius:24px;transform:translateY(-50%);align-items:center;text-align:center;padding:24px 20px 20px;gap:12px;animation:modalIn .28s cubic-bezier(.2,.8,.2,1)}
.sheet.modal .grab{display:none}
.sheet.modal h2{font-size:24px;font-weight:800;letter-spacing:-.02em}
.sheet.modal .btn-row{margin-top:6px}
.modal-ic{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;background:var(--accent);color:var(--accent-ink);box-shadow:0 8px 24px rgba(200,40,122,.35)}
@keyframes modalIn{from{opacity:0;transform:translateY(-46%) scale(.96)}to{opacity:1;transform:translateY(-50%) scale(1)}}
@media (prefers-reduced-motion:reduce){.sheet.modal{animation:none}}
.time-pair{display:grid;grid-template-columns:1fr 1fr;gap:10px}.time-pair .field{min-width:0}

/* ---------- full plan form (pop-up for new plans, drawer for edits) ---------- */
.sheet.form-modal{max-height:min(88%,calc(var(--vvh,100dvh) - 32px));overflow-y:auto;align-items:stretch;text-align:left;padding:20px 18px 18px;gap:14px}
.sheet.form-modal .sheet-hd{width:100%}
.kb-open .sheet.form-modal{top:auto;bottom:var(--kb,0px) !important;transform:none;border-radius:24px 24px 0 0;left:0;right:0;max-width:none;animation:none}
.plan-form .chip.sm{min-height:30px;font-size:13px;padding:0 10px}
.plan-form .chips{margin-top:2px}
.plan-form .field > .input + .chips{margin-top:8px}
.plan-form .date-in{margin-top:8px}
.sheet.form-drawer{max-height:min(92%,calc(var(--vvh,100dvh) - 24px))}

/* ---------- time fields: two even columns that never overflow (iPhone gives time inputs a wide minimum) ---------- */
.time-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;width:100%}
.time-pair .field{min-width:0}
.time-pair .input,.input[type="time"],.input[type="date"]{width:100%;min-width:0;max-width:100%;display:block;-webkit-appearance:none;appearance:none;text-align:left}
.input[type="time"]::-webkit-date-and-time-value,.input[type="date"]::-webkit-date-and-time-value{text-align:left;margin:0}
.input[type="time"]::-webkit-calendar-picker-indicator{opacity:.7}
#phone:has(#sheet-root .sheet) .tabs{visibility:hidden}
/* Dropdowns: own chevron with breathing room from the edge */
select.input{-webkit-appearance:none;appearance:none;padding-right:42px;background-repeat:no-repeat;background-position:right 14px center;background-size:16px 16px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231C1630' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E")}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) select.input{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23F6F1FF' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E")}}
:root[data-theme="dark"] select.input{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23F6F1FF' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E")}
/* Settings: section heading with an action on the right */
.set-hrow{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:4px 4px -6px}
.set-hrow .set-h{margin:0}
/* Emoji profile pictures */
.av-emo{letter-spacing:0;font-weight:400}
.av-emo > span{font-size:1.55em;line-height:1;font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif}
.av-preview.av{width:88px;height:88px;font-size:28px}
.emo-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}
.emo-grid .chip{justify-content:center;padding:0;font-size:22px;min-height:48px}
