/* At My Age — design system v2 (ported from design/variants/06-editorial-warm, palette crimson-cobalt)
   Paper + ink editorial. THEM = crimson (their bar, labels, ticks). YOU = cobalt (your rule, tint, pin, add pills, CTA).
   Fonts: Newsreader (serif) + Nunito (sans) from Google Fonts — loaded in index.html, network-only (not cached by sw.js). */
:root{
  --mast-h:56px;
  --paper:#F6F1E7; --panel:#EEE7DC; --panel-2:#E6DECF; --card-bg:#FBF8F1;
  --ink:#2F2A25; --ink-2:#5E564E; --ink-3:#857C71;
  --rule:#DCD3C3; --rule-strong:#BFB39E;
  --dark:#2B2622; --cream:#F6EFE4; --cream-2:#CFC4B4;
  --them:#D7263D; --you:#1F4FE0; --cta:#1F4FE0; --cta-hover:#1A43BE; --you-deep:#1941B8;
  --you-tint:#E4EAFF; --you-soft:#C7D2F7; --them-soft:#F7D3D8; --them-on-dark:#E98894; --you-on-dark:#849EEE;

  --serif:"Newsreader","Iowan Old Style",Georgia,serif;
  --sans:"Nunito",ui-rounded,"SF Pro Rounded",system-ui,-apple-system,sans-serif;

  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:24px; --s6:32px; --s7:48px; --s8:64px;
  --gutter:20px; --dock:84px;
  --r-s:10px; --r-m:16px; --r-l:22px; --r-pill:999px;
  --shadow-warm:0 1px 2px rgba(80,60,35,.06),0 10px 28px -12px rgba(80,60,35,.18);

  --t-xs:11px; --t-sm:13px; --t-body:16px; --t-lg:19px; --t-h3:22px; --t-h2:28px; --t-h1:36px; --t-display:128px;
  --tl-body:16px; --tl-title:19px; --tl-age:24px; --tl-when:14px; --tl-meta:13px;
  --ease:cubic-bezier(.22,.61,.36,1); --dur:480ms;
}
:root[data-density="compact"]{ --tl-body:14px; --tl-title:17px; --tl-age:22px; --tl-when:13px; }

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0;background:var(--paper);color:var(--ink)}
html{-webkit-text-size-adjust:100%}
body{font-family:var(--sans);font-size:var(--t-body);line-height:1.6;font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden;min-height:100dvh}
a{color:inherit}
button,input,textarea{font:inherit;color:inherit}
button{background:none;border:0;padding:0;cursor:pointer}
img{display:block;max-width:100%}
.serif{font-family:var(--serif)}
.sc{font-family:var(--sans);font-size:var(--t-xs);letter-spacing:.14em;text-transform:uppercase;font-weight:800}
.muted{color:var(--ink-3)}
.them{color:var(--them)}
.you{color:var(--you-deep)}
.hidden{display:none !important}

/* ---------- shell ---------- */
.wrap{max-width:430px;margin:0 auto;position:relative;padding:0 var(--gutter) calc(var(--dock) + env(safe-area-inset-bottom))}
.mast{
  position:sticky;top:0;z-index:20;background:var(--paper);border-bottom:1px solid var(--ink);
  margin:0 calc(-1*var(--gutter));padding:calc(var(--s3) + env(safe-area-inset-top)) var(--gutter) var(--s2);
  display:flex;align-items:center;justify-content:space-between;gap:var(--s2);
}
.brand{font-family:var(--serif);font-weight:600;font-size:18px;letter-spacing:-.005em;white-space:nowrap;color:var(--ink);text-align:left}
.brand em{font-style:italic;font-weight:400}
.mast-right{display:flex;align-items:center;gap:var(--s2)}
.pill{font-size:var(--t-xs);letter-spacing:.08em;text-transform:uppercase;font-weight:800;padding:5px 10px;border-radius:var(--r-pill);border:1px solid var(--rule-strong);color:var(--ink-2)}
.pill.vip{color:#fff;background:var(--them);border-color:var(--them)}
.aa{flex:none;width:36px;height:30px;border-radius:var(--r-pill);border:1px solid var(--rule-strong);font-family:var(--serif);font-size:14px;font-weight:500;display:grid;place-items:center;color:var(--ink-2);transition:background .25s var(--ease),color .25s var(--ease),border-color .25s var(--ease)}
.aa[aria-pressed="true"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.dateline{padding:var(--s2) 0 0;font-size:var(--t-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);font-weight:700;display:flex;justify-content:space-between;gap:var(--s2)}
.screen{animation:fade var(--dur) var(--ease) both}
#person.screen{animation-name:fadeo}
@keyframes fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes fadeo{from{opacity:0}to{opacity:1}}
@keyframes rise{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){*{animation-duration:1ms!important;transition-duration:1ms!important;animation-iteration-count:1!important}}

/* ---------- dock + buttons ---------- */
.dock{position:fixed;left:0;right:0;bottom:0;z-index:30;pointer-events:none;padding:var(--s4) var(--gutter) calc(var(--s3) + env(safe-area-inset-bottom));background:linear-gradient(to top,var(--paper) 70%,rgba(246,241,231,0))}
.dock-in{max-width:calc(430px - 2*var(--gutter));margin:0 auto;pointer-events:auto}
.cta{display:flex;align-items:center;justify-content:center;gap:10px;height:54px;padding:0 var(--s5);border-radius:var(--r-pill);background:var(--cta);color:#fff;font-weight:800;font-size:16px;letter-spacing:.005em;box-shadow:0 10px 24px -12px color-mix(in srgb,var(--cta) 55%,transparent);width:100%;transition:transform .25s var(--ease),background .25s var(--ease)}
.cta:hover{background:var(--cta-hover)}
.cta:active{transform:scale(.985)}
.cta svg{width:18px;height:18px;flex:none}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:50px;padding:0 var(--s5);border-radius:var(--r-pill);background:var(--cta);color:#fff;font-weight:800;font-size:16px;text-decoration:none;box-shadow:0 8px 20px -10px color-mix(in srgb,var(--cta) 45%,transparent);transition:transform .25s var(--ease),background .25s var(--ease),box-shadow .25s var(--ease)}
.btn:hover{background:var(--cta-hover)}
.btn:active{transform:scale(.985)}
.btn:disabled{background:var(--you-soft);color:var(--ink-3);box-shadow:none;cursor:default}
.btn-ghost{background:transparent;color:var(--you-deep);box-shadow:none;border:1.5px solid var(--rule-strong)}
.btn-ghost:hover{background:var(--you-tint)}
.btn-sm{min-height:40px;padding:0 var(--s4);font-size:14px}
.btn-block{width:100%}
.btn svg{width:18px;height:18px}
.btns{display:grid;grid-template-columns:1fr 1fr;gap:var(--s3);margin-top:var(--s3)}
.btns .btn{padding:0 12px;font-size:15px;white-space:nowrap}
.linkish{color:var(--you-deep);font-weight:800;font-size:13px;text-decoration:none}
.linkish:hover{text-decoration:underline}

/* ---------- portraits ---------- */
.pic{position:relative;flex:none;border-radius:50%;overflow:hidden;background:var(--panel);box-shadow:0 0 0 3px var(--paper),0 0 0 4px var(--rule),0 8px 18px -8px rgba(80,60,35,.38);transition:transform .35s var(--ease)}
.pic img{width:100%;height:100%;object-fit:cover}
.pic.initials{display:grid;place-items:center;font-family:var(--serif);font-weight:500;color:var(--you-deep);background:var(--you-soft)}

/* ---------- invited ---------- */
.invited{margin-top:var(--s4);padding:var(--s3) var(--s4);border-radius:var(--r-m);background:var(--you-tint);border:1px solid var(--you-soft)}
.invited h3{margin:0;font-family:var(--serif);font-weight:500;font-size:var(--t-lg)}
.invited p{margin:4px 0 0;font-size:14px;color:var(--ink-2)}

/* ---------- discover ---------- */
.lede{font-family:var(--serif);font-weight:400;font-size:var(--t-h1);line-height:1.12;letter-spacing:-.015em;margin:var(--s5) 0 var(--s3);text-wrap:balance}
.lede em{font-style:italic}
.sub{margin:0 0 var(--s5);font-size:15px;color:var(--ink-2);line-height:1.5;max-width:36ch}
.search{display:flex;align-items:center;gap:var(--s3);min-height:50px;padding:0 var(--s4);background:var(--card-bg);border:1.5px solid var(--rule);border-radius:var(--r-m);transition:border-color .25s var(--ease)}
.search:focus-within{border-color:var(--you)}
.search svg{width:18px;height:18px;flex:none;color:var(--ink-3)}
.search input{flex:1;min-width:0;background:none;border:0;outline:0;font-size:16px;padding:0;-webkit-appearance:none;appearance:none}
.search input::placeholder{color:var(--ink-3)}
.chips{display:flex;gap:var(--s2);overflow-x:auto;margin:var(--s4) calc(-1*var(--gutter)) 0;padding:0 var(--gutter) var(--s1);scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{flex:none;padding:7px 14px;border-radius:var(--r-pill);background:var(--panel);color:var(--ink-2);font-weight:800;font-size:14px;transition:background .25s var(--ease),color .25s var(--ease)}
.chip[aria-pressed="true"]{background:var(--ink);color:var(--paper)}
.toc-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--s2);padding:var(--s5) 0 var(--s2);border-bottom:1px solid var(--ink)}
.slot{display:flex;align-items:center;gap:8px;font-size:var(--t-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);font-weight:800;white-space:nowrap}
.slot i{width:8px;height:8px;border-radius:50%;background:var(--you);display:inline-block;box-shadow:0 0 0 3px var(--you-soft)}
.group-label{padding:var(--s5) 0 var(--s1);border-bottom:1px solid var(--rule-strong);color:var(--ink-3)}
.toc{list-style:none;margin:0;padding:0}
.toc li{border-bottom:1px solid var(--rule)}
.toc button.p{display:grid;grid-template-columns:60px 1fr 28px;gap:var(--s3);align-items:center;width:100%;padding:var(--s4) 0;text-align:left;transition:transform .2s var(--ease)}
.toc button.p:active{transform:scale(.99)}
.toc button.p:hover .pic{transform:scale(1.04)}
.toc .pic{width:60px;height:60px;font-size:22px}
.toc .name{font-family:var(--serif);font-size:20px;line-height:1.15;font-weight:500;letter-spacing:-.005em}
.toc .hook{font-size:14.5px;line-height:1.45;color:var(--ink-2);margin-top:3px}
.toc .meta{font-size:var(--t-xs);color:var(--ink-3);letter-spacing:.04em;text-transform:uppercase;margin-top:5px;font-weight:700}
.toc .state{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;color:var(--ink-3);background:var(--panel)}
.toc .state svg{width:14px;height:14px}
.toc li.picked .state{background:var(--you);color:#fff}
.toc li.picked .name{color:var(--you-deep)}
.toc-foot{padding:var(--s4) 0 0;font-size:var(--t-sm);color:var(--ink-3);line-height:1.5}
.empty{color:var(--ink-3);font-size:14px;padding:var(--s5) 0;text-align:center}

/* ---------- person: full-bleed hero ---------- */
.hero{padding-top:0}
.hero-pic{position:relative;margin:0 calc(-1*var(--gutter));aspect-ratio:4/5;overflow:hidden;background:var(--panel)}
.hero-pic img{width:100%;height:100%;object-fit:cover;object-position:top}
.hero-pic.initials{display:grid;place-items:center;font-family:var(--serif);font-weight:500;font-size:min(56vw,220px);line-height:1;letter-spacing:-.04em;color:var(--you-deep);background:var(--panel);padding-bottom:18%}
.hero-pic::after{content:"";position:absolute;inset:0;background:linear-gradient(transparent 45%,rgba(0,0,0,.72));pointer-events:none}
.hero-pic.initials::after{background:linear-gradient(transparent 50%,rgba(47,42,37,.86))}
.hero-name{position:absolute;z-index:1;left:var(--gutter);right:var(--gutter);bottom:var(--s4)}
.hero-name .kicker{color:var(--them);margin-bottom:6px}
.hero h1{font-family:var(--serif);font-weight:500;font-size:clamp(36px,11.5vw,52px);line-height:.98;letter-spacing:-.02em;margin:0;color:var(--cream);text-wrap:balance}
.hero .hook{font-family:var(--serif);font-style:italic;font-weight:400;font-size:22px;line-height:1.3;color:var(--ink);margin:var(--s4) 0 0}
.hero .tags{display:flex;gap:var(--s2);flex-wrap:wrap;margin-top:var(--s4)}
.tag{font-size:var(--t-xs);font-weight:800;letter-spacing:.1em;text-transform:uppercase;padding:5px 10px;border:1px solid var(--rule-strong);border-radius:3px;background:transparent;color:var(--ink-2)}
.attribution{margin:var(--s3) 0 0;font-size:12px;line-height:1.5;color:var(--ink-3)}
.attribution a{color:var(--ink-3);text-decoration:none;border-bottom:1px solid var(--rule-strong)}
.notice{margin:var(--s2) 0 0;font-size:12px;line-height:1.5;color:var(--ink-3)}

/* birthday ask */
.ask{margin:var(--s5) 0 0;padding:var(--s3) var(--s4);border-radius:var(--r-m);background:var(--card-bg);box-shadow:var(--shadow-warm)}
.ask-row{display:flex;align-items:center;gap:12px;font-size:14px;color:var(--ink-2)}
.ask-row svg{width:18px;height:18px;color:var(--you);flex:none}
.ask-row b{color:var(--ink)}
.ask-row .linkish{margin-left:auto}
.ask-q{margin:var(--s1) 0 4px;font-family:var(--serif);font-weight:500;font-size:var(--t-h3);line-height:1.25}
.ask-sub{margin:0 0 var(--s3);font-size:14px;color:var(--ink-2)}
.ask input[type=date]{width:100%;min-height:48px;padding:0 var(--s4);border-radius:var(--r-s);border:1.5px solid var(--rule-strong);background:var(--paper);font-size:16px;color:var(--ink);margin-bottom:var(--s3);-webkit-appearance:none;appearance:none}
.ask-actions{display:flex;align-items:center;gap:var(--s4)}
.ask-actions .linkish{color:var(--ink-3)}

/* verdict */
.verdict{margin-top:var(--s6);border-top:1px solid var(--ink);padding-top:var(--s3)}
.verdict .kick{display:flex;justify-content:space-between;align-items:baseline}
.verdict .kick span:last-child{font-weight:700;letter-spacing:.06em;color:var(--ink-3)}
.big{display:flex;align-items:flex-end;gap:var(--s4);margin-top:var(--s2)}
.big .n{font-family:var(--serif);font-weight:300;font-size:var(--t-display);line-height:.86;letter-spacing:-.045em;font-variant-numeric:lining-nums tabular-nums;animation:rise 900ms var(--ease) both}
.big .ann{padding-bottom:12px;font-size:14px;line-height:1.45;color:var(--ink-2);animation:fade 900ms var(--ease) 250ms both}
.big .ann b{display:block;font-family:var(--serif);font-size:var(--t-lg);font-weight:400;font-style:italic;color:var(--ink);line-height:1.2}
.pair{display:flex;flex-direction:column;gap:var(--s3);margin-top:var(--s5)}
.pair .blk{animation:fade 700ms var(--ease) 400ms both}
.pair .blk.them{border-top:2px solid var(--them);padding-top:var(--s2)}
.pair .blk.you{background:var(--you-tint);border:1px solid var(--you-soft);border-radius:var(--r-m);padding:var(--s3) var(--s4) var(--s4);box-shadow:var(--shadow-warm)}
.pair .lab{font-size:var(--t-xs);letter-spacing:.14em;text-transform:uppercase;font-weight:800}
.pair .t{font-family:var(--serif);font-size:var(--t-h3);line-height:1.25;letter-spacing:-.01em;font-weight:500;margin:var(--s2) 0 var(--s1);color:var(--ink);text-wrap:pretty}
.pair .you .t{font-weight:400;font-style:italic}
.pair .w{font-size:var(--t-sm);color:var(--ink-3);font-weight:700}
.pair .w a{color:var(--ink-3);text-decoration:none;border-bottom:1px solid var(--rule-strong)}
.pair .empty-t{color:var(--ink-3);font-style:italic;font-weight:400}
.pair .near{margin-top:var(--s3);padding-top:var(--s2);border-top:1px dashed var(--rule)}
.pair .near .t{font-size:var(--t-lg);margin-top:2px}

/* composer */
.composer{margin-top:var(--s6);padding:var(--s4);border-radius:var(--r-l);background:var(--card-bg);box-shadow:var(--shadow-warm);border:1.5px solid transparent;transition:border-color .35s var(--ease),box-shadow .35s var(--ease)}
.composer:focus-within,.composer.lit{border-color:var(--you);box-shadow:0 0 0 4px var(--you-soft),var(--shadow-warm)}
.c-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:var(--s2)}
.c-head .title{font-family:var(--serif);font-style:italic;font-size:var(--t-lg);color:var(--ink)}
.c-count{font-size:var(--t-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);font-weight:800}
.c-date{display:flex;align-items:center;gap:10px;margin:var(--s2) 0 var(--s1)}
.c-date label{font-size:var(--t-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);font-weight:800}
.c-date input{-webkit-appearance:none;appearance:none;background:var(--panel);border:0;border-radius:var(--r-pill);padding:5px 12px;font-size:13.5px;font-weight:800;color:var(--ink-2);min-height:32px}
.composer .line{display:block;width:100%;border:0;background:none;outline:none;font-family:var(--serif);font-size:20px;line-height:1.4;color:var(--ink);padding:6px 0;min-height:44px}
.composer .line::placeholder{color:var(--ink-3);font-style:italic;opacity:1}
.composer textarea.detail{display:block;width:100%;border:0;background:none;resize:none;outline:none;font-family:var(--sans);font-size:15px;line-height:1.5;color:var(--ink-2);min-height:40px;border-top:1px dashed var(--rule);padding:10px 0 4px;margin-top:2px}
.composer textarea.detail::placeholder{color:var(--ink-3);opacity:1}
.c-hint{margin:var(--s2) 0 0;font-size:var(--t-sm);color:var(--ink-3);min-height:1.4em;line-height:1.45}
.c-hint .linkish{margin-left:6px}
.c-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:var(--s2)}
.c-chars{font-size:var(--t-xs);color:var(--ink-3);font-weight:700}

/* ---------- timeline ---------- */
.chart{margin-top:var(--s7);position:relative}
.pin-wrap{position:sticky;top:calc(var(--mast-h) + 8px);z-index:15;height:0;display:flex;justify-content:flex-end;pointer-events:none}
.pin{pointer-events:auto;display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px 0 10px;border-radius:var(--r-pill);background:var(--you);color:#fff;font-size:12px;font-weight:800;letter-spacing:.04em;white-space:nowrap;box-shadow:0 6px 16px -8px color-mix(in srgb,var(--you) 50%,transparent);transition:background .25s var(--ease),transform .25s var(--ease)}
.pin i{width:7px;height:7px;border-radius:50%;background:#fff;display:inline-block}
.pin:hover{background:var(--you-deep)}
.pin:active{transform:scale(.97)}
.chart-head{border-bottom:1px solid var(--ink);padding-bottom:var(--s2)}
.chart-head h2{font-family:var(--serif);font-size:var(--t-h2);font-weight:500;letter-spacing:-.015em;margin:0 0 var(--s2);line-height:1.1}
.chart-head h2 button{font:inherit;color:inherit;text-align:left;letter-spacing:inherit}
.chart-head .sub{font-size:14.5px;color:var(--ink-3);margin:0 0 var(--s3);line-height:1.5;max-width:none}
.tl-legend{display:flex;justify-content:space-between;align-items:baseline}
.tl{list-style:none;margin:0;padding:var(--s2) 0 var(--s2) 48px;position:relative}
.tl::before{content:"";position:absolute;left:20px;top:0;bottom:0;width:1px;background:var(--rule-strong)}
.tl-row{position:relative;padding:var(--s4) 0 var(--s5);border-bottom:1px solid var(--rule);animation:fadeo 600ms var(--ease) both}
.tl-row:last-child{border-bottom:0}
.age{position:absolute;left:-48px;top:calc(var(--s4) + 1px);width:40px;height:30px;display:grid;place-items:center;z-index:1;background:var(--paper);font-family:var(--serif);font-size:var(--tl-age);font-weight:500;line-height:1;color:var(--them);font-variant-numeric:tabular-nums}
.age.yr{font-size:15px;color:var(--you-deep)}
.tl-row.mine .age{color:var(--you-deep)}
.tl-row.here .age{color:#fff;background:var(--you);border-radius:var(--r-pill);height:32px;top:calc(var(--s4) - 1px)}
.here-bar{display:flex;align-items:center;gap:var(--s3);margin:0 0 var(--s3);padding-right:96px}
.here-bar span{font-size:var(--tl-meta);letter-spacing:.1em;text-transform:uppercase;font-weight:800;color:var(--you-deep);white-space:nowrap;line-height:1.3}
.here-bar span small{font-size:inherit;letter-spacing:.02em;text-transform:none;color:var(--ink-3);font-weight:700}
.here-bar i{flex:1;height:2px;background:var(--you)}
.ev{border-left:4px solid var(--them);padding-left:var(--s3)}
.ev + .ev{margin-top:var(--s4)}
.ev-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s3)}
.ev .when{font-size:var(--tl-when);color:var(--them);font-weight:800;letter-spacing:.01em;line-height:1.3}
.ev .t{font-family:var(--serif);font-size:var(--tl-title);line-height:1.25;letter-spacing:-.005em;font-weight:600;margin:4px 0 6px;text-wrap:pretty}
.ev .d{font-size:var(--tl-body);line-height:1.55;color:var(--ink-2);margin:0}
.links{margin-top:8px;font-size:var(--tl-meta);display:flex;gap:var(--s3);flex-wrap:wrap;line-height:1.3}
.links a,.links button{color:var(--ink-3);text-decoration:none;border-bottom:1px solid var(--rule-strong);font-weight:700;font-size:var(--tl-meta);line-height:1.3;padding:0;border-radius:0}
.links a:hover,.links button:hover{color:var(--ink);border-color:var(--ink)}
.me{margin:var(--s4) 0 0 20%;text-align:right;background:var(--you-soft);border-right:4px solid var(--you);border-radius:var(--r-s) 0 0 var(--r-s);padding:10px 12px 10px 14px}
.age + .me,.here-bar + .me{margin-top:0}
.me .when{font-size:var(--tl-when);color:var(--you-deep);font-weight:800;letter-spacing:.01em;line-height:1.3}
.me .t{font-family:var(--serif);font-style:italic;font-weight:400;font-size:var(--tl-title);line-height:1.25;margin:4px 0 6px;text-wrap:pretty}
.me .d{font-size:var(--tl-body);line-height:1.55;color:var(--ink-2);margin:0}
.me .links{justify-content:flex-end}
.me .links button{color:var(--you-deep);border-color:color-mix(in srgb,var(--you) 45%,transparent)}
.me .links button:hover{color:var(--you-deep);border-color:var(--you)}
.tl-empty{margin:var(--s3) 0 0;padding:var(--s3) var(--s4);border-radius:var(--r-s);background:var(--you-soft);color:var(--ink-2);font-size:var(--tl-body);line-height:1.5}
.add{flex:none;display:inline-flex;align-items:center;gap:4px;height:30px;padding:0 10px 0 8px;border-radius:var(--r-pill);border:1.5px dashed var(--you);color:var(--you-deep);background:transparent;font-size:var(--tl-meta);font-weight:800;line-height:1;transition:background .25s var(--ease),transform .25s var(--ease)}
.add svg{width:13px;height:13px}
.add:hover{background:var(--you-soft)}
.add:active{transform:scale(.97)}
.quick{width:80%;margin:var(--s3) 0 0 20%;display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:12px 14px;border-radius:var(--r-s) 0 0 var(--r-s);border:1.5px dashed var(--you);border-right:4px solid var(--you);background:var(--you-tint);color:var(--you-deep);font-weight:800;font-size:var(--tl-body);text-align:right;line-height:1.3;transition:background .25s var(--ease),transform .25s var(--ease)}
.quick svg{width:18px;height:18px;flex:none}
.quick:hover{background:var(--you-soft)}
.quick:active{transform:scale(.985)}
details.trash{margin-top:var(--s3)}
details.trash summary{cursor:pointer;color:var(--ink-3);font-size:var(--t-sm);font-weight:700;padding:var(--s2) 0;list-style:none}
details.trash summary::-webkit-details-marker{display:none}
details.trash summary::before{content:"▸ ";color:var(--ink-3)}
details.trash[open] summary::before{content:"▾ "}
.trash-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--s2)}
.trash-list .me{margin-left:0;text-align:left;background:var(--panel);border-right-color:var(--rule-strong)}
.trash-list .me .links{justify-content:flex-start}
.trash-list .empty{padding:var(--s2) 0;text-align:left}

/* ---------- today / notifications ---------- */
.today{margin-top:var(--s6);padding:var(--s4);border-radius:var(--r-l);background:var(--panel)}
.today h3{margin:0;font-family:var(--serif);font-weight:500;font-size:var(--t-h3);line-height:1.2}
.today .t{font-family:var(--serif);font-size:var(--t-lg);font-weight:500;line-height:1.3;margin-top:var(--s2)}
.today .d{font-size:14px;color:var(--ink-2);line-height:1.5;margin-top:2px}
.today .foot{display:flex;align-items:center;gap:var(--s3);margin-top:var(--s3);flex-wrap:wrap}
.today .state{font-size:var(--t-sm);color:var(--ink-3)}

/* ---------- card ---------- */
.card-wrap{margin-top:var(--s7)}
.card-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--s3);border-bottom:1px solid var(--ink);padding-bottom:var(--s2)}
.card-head h2{font-family:var(--serif);font-size:var(--t-h2);font-weight:500;letter-spacing:-.015em;margin:0;line-height:1.1}
.toggles{display:flex;justify-content:space-between;gap:var(--s2);margin-top:var(--s3);flex-wrap:wrap}
.seg{display:inline-flex;padding:3px;background:var(--panel);border-radius:var(--r-pill)}
.seg button{padding:6px 12px;border-radius:var(--r-pill);font-size:12.5px;font-weight:800;color:var(--ink-3);white-space:nowrap;transition:background .3s var(--ease),color .3s var(--ease)}
.seg button[aria-pressed="true"]{background:var(--card-bg);color:var(--ink);box-shadow:0 1px 2px rgba(60,45,30,.08)}
.seg button[aria-disabled="true"]{opacity:.45;cursor:not-allowed}
.stage{display:flex;justify-content:center;padding:var(--s4) 0 var(--s3)}
.card{width:min(350px,100%);aspect-ratio:9/16;border-radius:20px;overflow:hidden;
  background:radial-gradient(120% 60% at 100% 0%,color-mix(in srgb,var(--them) 22%,transparent),transparent 62%),radial-gradient(110% 60% at 0% 100%,color-mix(in srgb,var(--you) 26%,transparent),transparent 62%),var(--dark);
  color:var(--cream);padding:20px 22px 18px;display:flex;flex-direction:column;position:relative;box-shadow:0 26px 50px -22px rgba(43,38,34,.6);transition:aspect-ratio var(--dur) var(--ease);animation:fade var(--dur) var(--ease) both}
.card.r45{aspect-ratio:4/5}
.card .mh{display:flex;justify-content:space-between;align-items:baseline;border-bottom:1px solid var(--cream-2);padding-bottom:7px}
.card .mh b{font-family:var(--serif);font-weight:600;font-size:17px}
.card .mh b em{font-weight:400}
.card .mh span{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--cream-2);font-weight:800}
.card .dl{display:flex;justify-content:space-between;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--cream-2);padding:7px 0;border-bottom:1px solid rgba(207,196,180,.32);font-weight:700}
.card .top{display:flex;align-items:flex-end;gap:18px;margin-top:18px}
.card.r45 .top{margin-top:12px;gap:14px}
.card .pic{width:120px;height:120px;box-shadow:0 0 0 3px var(--cream),0 0 0 4px rgba(207,196,180,.35),0 12px 26px -8px rgba(0,0,0,.55);font-size:40px}
.card.r45 .pic{width:96px;height:96px}
.card.noimg .pic{display:none}
.card .num{font-family:var(--serif);font-weight:300;font-size:120px;line-height:.86;letter-spacing:-.045em;color:var(--cream);font-variant-numeric:lining-nums tabular-nums}
.card.r45 .num{font-size:96px}
.card .lede{font-family:var(--serif);font-size:14px;font-style:italic;color:var(--cream-2);margin:10px 0 0;line-height:1.35;letter-spacing:0;font-weight:400;text-wrap:initial}
.card.r45 .lede{display:none}
.card .blk{margin-top:14px;border-top:2px solid;padding-top:7px}
.card.r45 .blk{margin-top:10px}
.card .blk.them{border-color:var(--them-on-dark)}
.card .blk.you{border-color:var(--you-on-dark)}
.card .blk .lab{font-size:10px;letter-spacing:.14em;text-transform:uppercase;font-weight:800}
.card .blk.them .lab{color:var(--them-on-dark)}
.card .blk.you .lab{color:var(--you-on-dark)}
.card .blk .t{font-family:var(--serif);font-size:19px;line-height:1.25;letter-spacing:-.005em;font-weight:500;margin-top:4px;color:var(--cream);text-wrap:pretty;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}
.card .blk.you .t{font-weight:400;font-style:italic}
.card.r45 .blk .t{font-size:16.5px;-webkit-line-clamp:2}
.card .ruler{margin-top:auto;padding-top:12px}
.card.r45 .ruler{padding-top:8px}
.card .ruler .lab{display:flex;justify-content:space-between;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--cream-2);margin-bottom:6px;font-weight:700}
.card .ruler .bar{position:relative;height:14px}
.card .ruler .bar::before{content:"";position:absolute;left:0;right:0;top:7px;height:1px;background:var(--them-on-dark)}
.card .ruler .tick{position:absolute;top:3px;width:1px;height:9px;background:var(--them-on-dark)}
.card .ruler .me-dot{position:absolute;top:1px;width:13px;height:13px;border-radius:50%;background:var(--you-on-dark);transform:translateX(-50%);box-shadow:0 0 0 3px color-mix(in srgb,var(--you-on-dark) 25%,transparent)}
.card .ruler .nums{position:relative;height:12px;font-size:10px;color:var(--cream-2);letter-spacing:.04em;font-weight:700;line-height:1.2}
.card .ruler .nums span{position:absolute;top:0;transform:translateX(-50%)}
.card .ruler .nums span:first-child{transform:none}
.card .ruler .nums span:last-child{transform:translateX(-100%)}
.card .ruler .nums .me-n{color:var(--you-on-dark);font-weight:800}
.card .ft{margin-top:12px;padding-top:10px;border-top:1px solid rgba(207,196,180,.32);font-size:10px;letter-spacing:.04em;color:var(--cream-2);display:flex;flex-direction:column;gap:3px;font-weight:700;line-height:1.35}
.card.r45 .ft{margin-top:8px;padding-top:8px}
.card .ft .r{display:flex;justify-content:space-between;gap:10px;align-items:baseline}
.card .ft .wm{text-transform:uppercase;letter-spacing:.14em;white-space:nowrap}
.card .ft .credit{font-style:italic;font-family:var(--serif);font-size:11px;letter-spacing:0;font-weight:400}
.card-note{margin:var(--s3) 0 0;font-size:var(--t-sm);color:var(--ink-3);line-height:1.5;text-align:center}
.card-note.warn{color:var(--ink-2)}
#cardCanvas{display:none}

/* ---------- invite ---------- */
.invite{margin-top:var(--s7);padding:var(--s4) var(--s4) var(--s5);border-radius:var(--r-l);background:var(--card-bg);box-shadow:var(--shadow-warm)}
.invite .kick{color:var(--them);display:flex;gap:var(--s2);align-items:center}
.invite .kick::after{content:"";flex:1;height:1px;background:var(--them);opacity:.5}
.invite h2{font-family:var(--serif);font-size:var(--t-h2);font-weight:500;letter-spacing:-.015em;line-height:1.12;margin:var(--s3) 0 var(--s2);text-wrap:balance}
.invite p{margin:0;font-size:15px;line-height:1.55;color:var(--ink-2)}
.link{margin-top:var(--s4);display:flex;align-items:center;gap:var(--s3);border:1.5px dashed var(--rule-strong);border-radius:var(--r-s);padding:10px 12px;background:var(--paper)}
.link svg{width:16px;height:16px;flex:none;color:var(--you)}
.link code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;letter-spacing:-.01em;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}
.meter{margin-top:var(--s4)}
.meter .row-m{display:flex;justify-content:space-between;align-items:baseline;font-size:var(--t-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);margin-bottom:6px;font-weight:800}
.meter .row-m b{color:var(--ink)}
.segs{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.segs i{display:block;height:8px;border-radius:var(--r-pill);background:var(--panel-2)}
.segs i.on{background:var(--you)}
.meter .cap{margin-top:8px;font-size:var(--t-sm);color:var(--ink-3);line-height:1.5}

/* ---------- paywall (collapsed details) ---------- */
.paywall{margin-top:var(--s4);border-radius:var(--r-l);background:var(--panel);overflow:hidden}
.paywall.urgent{box-shadow:0 0 0 2px var(--them)}
.paywall summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:var(--s4);cursor:pointer}
.paywall summary::-webkit-details-marker{display:none}
.paywall summary .l{font-family:var(--serif);font-size:var(--t-lg);font-weight:500}
.paywall summary .l small{display:block;font-family:var(--sans);font-size:var(--t-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);font-weight:800;margin-bottom:2px}
.paywall summary svg{width:18px;height:18px;color:var(--ink-3);transition:transform .3s var(--ease);flex:none}
.paywall[open] summary svg{transform:rotate(180deg)}
.pw-body{padding:0 var(--s4) var(--s4)}
.pw-lede{margin:0 0 var(--s3);font-size:14.5px;color:var(--ink-2);line-height:1.5}
.pw-plan{display:flex;justify-content:space-between;gap:8px;font-size:15px;padding:8px 0;border-top:1px solid var(--rule)}
.pw-plan b{font-weight:800;text-align:right}
.pw-plan .rec{color:var(--you-deep);font-size:11px;font-weight:800;margin-left:6px;letter-spacing:.06em;text-transform:uppercase}
.perks{list-style:none;margin:var(--s4) 0;padding:0;display:grid;gap:8px}
.perks li{display:flex;gap:12px;align-items:flex-start;font-size:13.5px;color:var(--ink-2);line-height:1.45}
.perks li i{flex:none;width:10px;height:10px;border-radius:50%;background:var(--you);margin-top:5px;box-shadow:0 0 0 3px var(--you-soft)}
.pw-fine{margin:10px 0 0;font-size:var(--t-sm);color:var(--ink-3);text-align:center;line-height:1.5}
.pw-fine button{color:var(--you-deep);font-weight:800;text-decoration:underline}
.pw-dev{margin:var(--s3) 0 0;font-size:var(--t-xs);color:var(--ink-3);text-align:center}
.pw-dev button{text-decoration:underline}

/* ---------- misc ---------- */
.back{margin-top:var(--s5)}
footer.disclaimer{margin:var(--s7) 0 var(--s5);border-top:1px solid var(--rule);padding-top:var(--s3);font-size:12px;line-height:1.55;color:var(--ink-3)}
footer.disclaimer p{margin:0 0 var(--s2)}
.toast{position:fixed;left:50%;bottom:calc(var(--dock) + 12px + env(safe-area-inset-bottom));transform:translateX(-50%) translateY(8px);background:var(--ink);color:var(--paper);font-size:13.5px;font-weight:700;padding:10px 16px;border-radius:var(--r-pill);opacity:0;pointer-events:none;transition:opacity .3s var(--ease),transform .3s var(--ease);z-index:40;white-space:nowrap;max-width:calc(100vw - 32px);overflow:hidden;text-overflow:ellipsis}
.toast.show{opacity:1;transform:translateX(-50%)}

@media (max-width:374px){
  :root{--t-display:112px;--gutter:16px}
  .brand{font-size:16px}
  .card{padding:16px 18px 14px}
  .card .num{font-size:108px}
  .card .pic{width:112px;height:112px}
  .card.r45 .num{font-size:84px}
  .card.r45 .pic{width:84px;height:84px}
  .card.r45 .blk{margin-top:8px}
  .card.r45 .blk .t{font-size:15px}
}
