/* Jigyasa app — tokens from the Jigyasa design system (Day = paper, Night). */
:root,[data-theme="paper"]{
  --surface:#FAFAF7;--surface-sunk:#F0EFEA;--surface-raised:#FFFFFF;--surface-widget:#FFF6EF;--overlay:rgba(255,255,255,.92);
  --ink:#16141A;--ink-soft:#5E5B66;--muted:#8E8B96;--hairline:#E4E2DD;
  --accent:#FF6B1A;--accent-ink:#C2410C;--accent-tint:#FFE9DC;--on-accent:#16141A;--cta:#16141A;--on-cta:#FAFAF7;
  --teal:#00A67E;--teal-ink:#0A7A5C;--teal-tint:#E3F6EF;--rose:#E5484D;--rose-ink:#C42B32;--indigo:#3D5AFE;
  --glow:#2B2140;--shadow:0 6px 18px rgba(20,20,30,.05);--shadow-lift:0 18px 40px rgba(20,20,30,.10);--dock-shadow:0 12px 32px rgba(20,20,30,.12),0 2px 6px rgba(20,20,30,.06);
  color-scheme:light;
}
[data-theme="night"]{
  --surface:#0D0D10;--surface-sunk:#17171C;--surface-raised:#1E1E24;--surface-widget:#24242B;--overlay:rgba(30,30,36,.92);
  --ink:#F5F5F2;--ink-soft:#A09FA8;--muted:#7D7C86;--hairline:rgba(255,255,255,.12);
  --accent:#FF8A3D;--accent-ink:#FF8A3D;--accent-tint:rgba(255,138,61,.18);--on-accent:#0D0D10;--cta:#F5F5F2;--on-cta:#0D0D10;
  --teal:#2DD4A7;--teal-ink:#3EE0B5;--teal-tint:rgba(45,212,167,.15);--rose:#FF6369;--rose-ink:#FF8589;--indigo:#7B8CFF;
  --glow:#1E1A2B;--shadow:0 6px 18px rgba(0,0,0,.3);--shadow-lift:0 18px 40px rgba(0,0,0,.5);--dock-shadow:0 12px 32px rgba(0,0,0,.5);
  color-scheme:dark;
}
*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;height:100%}
body{background:var(--surface);color:var(--ink);font:400 17px/1.5 "Source Serif 4",Georgia,serif;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
a{color:var(--teal-ink)}
[hidden]{display:none!important}
[data-theme]{color:var(--ink)}
:focus-visible{outline:2px solid var(--accent-ink);outline-offset:2px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* type */
.kicker{font:500 10.5px/1.4 "IBM Plex Mono",monospace;letter-spacing:.26em;text-transform:uppercase;color:var(--accent-ink)}
.meta{font:400 11.5px/1.5 "IBM Plex Mono",monospace;letter-spacing:.03em;color:var(--ink-soft)}
.label{font:600 11px/1 "IBM Plex Mono",monospace;letter-spacing:.12em;text-transform:uppercase;white-space:nowrap}
.sec{display:flex;justify-content:space-between;align-items:baseline;margin:24px 0 10px;font:500 10px "IBM Plex Mono",monospace;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-soft)}
.sec span{letter-spacing:.04em;text-transform:none}
h1.big{margin:6px 0 16px;font:italic 600 30px/1.1 Fraunces,Georgia,serif;letter-spacing:-.015em}
.deva{font:400 28px/1 "Tiro Devanagari Hindi",serif;color:var(--accent-ink)}

/* layout */
.page{max-width:560px;margin:0 auto;padding:20px 16px 120px;min-height:100%}
.top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.top .r{display:flex;gap:8px}
.ibtn{display:inline-grid;place-items:center;width:42px;height:42px;border-radius:50%;border:1px solid var(--hairline);background:var(--surface-raised);color:var(--ink);text-decoration:none;flex:none}
.ibtn svg{width:19px;height:19px}
.pill{display:inline-flex;align-items:center;gap:6px;height:42px;padding:0 14px 0 10px;border-radius:999px;border:1px solid var(--hairline);background:var(--surface-raised);font:600 13px "IBM Plex Mono",monospace;color:var(--ink);text-decoration:none}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:46px;padding:0 20px;border-radius:999px;border:1px solid transparent;font:600 11px/1 "IBM Plex Mono",monospace;letter-spacing:.14em;text-transform:uppercase;text-decoration:none;white-space:nowrap;transition:transform .12s cubic-bezier(.22,1,.36,1),background .25s}
.btn:active{transform:scale(.97)}
.btn-primary{background:var(--cta);color:var(--on-cta)}
.btn-accent{background:var(--accent);color:var(--on-accent)}
.btn-quiet{background:var(--surface-raised);border-color:var(--hairline);color:var(--ink)}
.btn-ghost{background:none;color:var(--ink-soft)}
.btn-sm{height:38px;padding:0 15px;font-size:10.5px}
.btn-block{width:100%}
.btn[disabled]{opacity:.45;pointer-events:none}

/* cards (bento) */
.card{border-radius:24px;background:var(--surface-raised);border:1px solid var(--hairline);box-shadow:var(--shadow);color:var(--ink);text-decoration:none;display:block}
.bento{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.span2{grid-column:span 2}
.tile{display:flex;flex-direction:column;justify-content:space-between;min-height:150px;padding:16px}
.tile h3{margin:0;font:600 16px/1.2 Fraunces,Georgia,serif}
.chipicon{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:var(--teal-tint);color:var(--teal-ink)}
.chipicon.or{background:var(--accent-tint);color:var(--accent-ink)}
/* hero card: orange in light mode, ink-violet in dark mode */
.hero{--hb:radial-gradient(90% 120% at 100% 0%,#FFB27A,#FF6B1A 62%,#F2541B);--hi:#16141A;--hk:rgba(22,20,26,.72);--hs:rgba(22,20,26,.18);--hson:#16141A;--hbtn:#16141A;--hbtnfg:#FFFFFF;
  position:relative;min-height:196px;padding:18px;border-radius:26px;overflow:hidden;color:var(--hi);text-decoration:none;display:block;background:var(--hb);box-shadow:0 14px 34px rgba(255,107,26,.28)}
[data-theme="night"] .hero{--hb:radial-gradient(80% 110% at 90% 0%,#2B2140,#16141A 70%);--hi:#F5F5F2;--hk:#FF8A3D;--hs:rgba(255,255,255,.2);--hson:#FF8A3D;--hbtn:#FF8A3D;--hbtnfg:#0D0D10;box-shadow:0 14px 30px rgba(0,0,0,.4);border:1px solid var(--hairline)}
.hero .art{position:absolute;right:-12px;top:-10px;width:150px;height:150px;opacity:.95}
.hero .art svg,.hero .art img{width:100%;height:100%;object-fit:contain;border-radius:18px}
.hero .kicker{color:var(--hk)}
.hero h2{margin:8px 0 54px;max-width:250px;font:italic 600 23px/1.15 Fraunces,Georgia,serif}
.hero .go{position:absolute;left:18px;bottom:16px;background:var(--hbtn);color:var(--hbtnfg)}
.hero .segs i{background:var(--hs)}.hero .segs i.on{background:var(--hson)}
.segs{display:flex;gap:4px}
.segs i{flex:1;height:4px;border-radius:2px;background:var(--hairline)}
.segs i.on{background:var(--accent)}
.ring{--p:0;position:relative;width:56px;height:56px;border-radius:50%;background:conic-gradient(var(--accent) calc(var(--p)*1turn),var(--surface-sunk) 0);display:grid;place-items:center;flex:none;transition:--p 1.2s cubic-bezier(.22,1,.36,1)}
.ring b{width:44px;height:44px;border-radius:50%;background:var(--surface-raised);display:grid;place-items:center;font:600 13px "IBM Plex Mono",monospace}
@property --p{syntax:'<number>';inherits:true;initial-value:0}
.row{display:flex;gap:14px;align-items:center;padding:12px}
.cover{--h:28;position:relative;flex:none;width:76px;height:76px;border-radius:18px;overflow:hidden;background:linear-gradient(150deg,hsl(var(--h) 78% 52%),hsl(calc(var(--h) - 30) 72% 32%))}
.cover b{position:absolute;right:-4px;bottom:-16px;font:400 76px/1 Fraunces,serif;color:rgba(255,255,255,.35)}
.rail{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;margin:0 -16px;padding:0 16px 4px;scrollbar-width:none}
.rail::-webkit-scrollbar{display:none}
.tcard{flex:none;width:220px;scroll-snap-align:start;padding:0;overflow:hidden;text-align:left;border-radius:24px}
.tcard .cv{position:relative;height:96px;background:linear-gradient(150deg,hsl(var(--h) 78% 52%),hsl(calc(var(--h) - 30) 72% 36%))}
.tcard .cv b{position:absolute;right:10px;bottom:-16px;font:400 90px/1 Fraunces,serif;color:rgba(255,255,255,.35)}
.tcard .tx{padding:12px 14px 16px;font:italic 600 16px/1.2 Fraunces,Georgia,serif}
.tcard .tx small{display:block;margin-top:6px;font:400 11px "IBM Plex Mono",monospace;font-style:normal;color:var(--ink-soft)}
.list{display:grid;gap:10px}
.trow{display:flex;gap:14px;align-items:center;width:100%;padding:12px;text-align:left}
.trow .cover{width:64px;height:64px;border-radius:16px}.trow .cover b{font-size:64px}
.trow h3{margin:3px 0 0;font:italic 600 18px/1.15 Fraunces,Georgia,serif}
.trow p{margin:4px 0 0;font-size:14.5px;line-height:1.4;color:var(--ink-soft)}
.trow.soon{opacity:.6}

/* dock */
.dock{position:fixed;left:50%;bottom:calc(16px + env(safe-area-inset-bottom));transform:translateX(-50%);width:min(528px,calc(100% - 32px));display:flex;align-items:center;gap:10px;z-index:40}
.dockfade{position:fixed;left:0;right:0;bottom:0;height:120px;background:linear-gradient(rgba(0,0,0,0),var(--surface) 60%);pointer-events:none;z-index:39;opacity:.94}
.dock nav{flex:1;display:flex;justify-content:space-between;align-items:center;height:64px;padding:6px;border-radius:999px;background:var(--overlay);border:1px solid var(--hairline);box-shadow:var(--dock-shadow);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}
.dock nav a{display:grid;place-items:center;width:52px;height:52px;border-radius:50%;color:var(--ink-soft);text-decoration:none}
.dock nav a[aria-current="page"]{display:flex;gap:8px;width:auto;padding:0 16px 0 14px;border-radius:999px;background:var(--accent-tint);color:var(--accent-ink);font:600 11px "IBM Plex Mono",monospace;letter-spacing:.1em;text-transform:uppercase}
.dock nav a span{display:none}.dock nav a[aria-current="page"] span{display:inline}
.dock nav svg{width:22px;height:22px}
.dock nav a[aria-current="page"] .df{fill:currentColor;fill-opacity:.25}
.fab{flex:none;display:grid;place-items:center;width:64px;height:64px;border-radius:50%;background:var(--accent);color:#16141A;box-shadow:0 12px 28px rgba(255,107,26,.45)}
.fab svg{width:26px;height:26px}

/* sparks: a bounded vertical snap of five full-height cards, same card language as the deck */
.feedtop{position:fixed;left:0;right:0;top:0;z-index:35;padding:calc(12px + env(safe-area-inset-top)) 16px 10px;background:linear-gradient(var(--surface) 60%,transparent)}
.feedbar{max-width:560px;margin:0 auto;display:flex;align-items:center;gap:10px}
.feedbar .segs{flex:1}
.feedbar .ibtn{width:40px;height:40px}
.feed{position:fixed;inset:0;overflow-y:auto;scroll-snap-type:y mandatory;overscroll-behavior:contain;scrollbar-width:none;background:var(--surface);z-index:30}
.feed::-webkit-scrollbar{display:none}
.spark{height:100vh;height:100dvh;scroll-snap-align:start;scroll-snap-stop:always;padding:calc(66px + env(safe-area-inset-top)) 16px calc(104px + env(safe-area-inset-bottom));display:flex}
.scard{flex:1;max-width:560px;margin:0 auto;display:flex;flex-direction:column;border-radius:28px;background:var(--surface-raised);border:1px solid var(--hairline);box-shadow:var(--shadow-lift);overflow:hidden;min-height:0}
.scard .art{flex:1;min-height:0;display:grid;place-items:center;padding:18px;background:radial-gradient(80% 90% at 50% 40%,var(--accent-tint),var(--surface-sunk) 70%)}
.scard .art>*{width:100%;height:100%}.scard .art svg,.scard .art img{width:100%;height:100%;border-radius:16px;object-fit:contain}
.sbody{padding:20px 22px 22px}
.sbody h2{margin:8px 0 8px;font:italic 600 clamp(26px,4.2vh,34px)/1.1 Fraunces,Georgia,serif;letter-spacing:-.01em;text-wrap:balance}
.sbody p{margin:0 0 16px;color:var(--ink-soft);font-size:16.5px}
.sacts{display:flex;gap:8px;align-items:center}.sacts .btn{flex:1}
.sacts .ibtn{width:46px;height:46px}
.scard.end{justify-content:center;align-items:center;text-align:center;padding:28px 22px}
.scard.end h2{margin:14px 0 8px;font:italic 600 30px/1.1 Fraunces,serif}
.scard.end>p{margin:0 auto 22px;color:var(--ink-soft);max-width:34ch}
.dashq{margin-top:26px;width:100%;max-width:380px;padding:16px 18px;border-radius:18px;border:1.5px dashed var(--hairline);text-align:left}
.dashq div{margin-top:8px;font:italic 600 20px/1.25 Fraunces,Georgia,serif}
.fab[aria-current="page"]{outline:3px solid var(--accent-tint);outline-offset:3px}
/* deck */
.deck{position:fixed;inset:0;z-index:50;display:flex;flex-direction:column;background:var(--surface);user-select:none;touch-action:pan-y}
.deck-in{width:100%;max-width:480px;margin:0 auto;flex:1;display:flex;flex-direction:column;min-height:0;padding-top:env(safe-area-inset-top)}
.deck-top{padding:14px 16px 10px}
.deck-top .bar{display:flex;align-items:center;justify-content:space-between;margin-top:10px}
.stage{position:relative;flex:1;margin:0 16px 34px;min-height:0}
.dcard{position:absolute;inset:0;display:flex;flex-direction:column;border-radius:28px;background:var(--surface-raised);border:1px solid var(--hairline);overflow:hidden;
  box-shadow:0 12px 0 -6px var(--surface-raised),0 12px 0 -5px var(--hairline),0 24px 0 -12px var(--surface-sunk),0 24px 0 -11px var(--hairline),var(--shadow-lift);
  opacity:0;transform:translateX(28px) scale(.98);pointer-events:none;transition:opacity .26s cubic-bezier(.22,1,.36,1),transform .26s cubic-bezier(.22,1,.36,1)}
.dcard.on{opacity:1;transform:none;pointer-events:auto}
.dcard.past{transform:translateX(-28px) scale(.98)}
.dcard .media{flex:0 0 44%;display:grid;place-items:center;background:var(--surface-sunk);border-bottom:1px solid var(--hairline);overflow:hidden;padding:10px}
.dcard .media svg,.dcard .media img{width:100%;height:100%;object-fit:contain}
.dcard .media.photo{padding:0}.dcard .media.photo img{object-fit:cover}
.dcard .txt{flex:1;display:flex;flex-direction:column;gap:12px;padding:26px 24px 24px;overflow:auto}
.dcard .txt p{margin:0;font:400 20px/1.55 "Source Serif 4",Georgia,serif;max-width:38ch}
.dcard strong{font-weight:600;background:linear-gradient(transparent 62%,var(--accent-tint) 62%)}
.dcard.center .txt{justify-content:center}
.dcard.hook{background:radial-gradient(90% 70% at 70% 20%,var(--surface-sunk),var(--surface-raised))}
.dcard.hook .media{flex:1;background:none;border:0}
.dcard.hook .txt{flex:none}
.dcard.hook h2{margin:0;font:italic 600 34px/1.08 Fraunces,Georgia,serif;letter-spacing:-.01em;text-wrap:balance}
.dcard.quote blockquote{margin:0;font:italic 400 27px/1.3 Fraunces,Georgia,serif}
.dcard.quote blockquote::before{content:'\201C';display:block;height:.55em;font:italic 600 76px/1 Fraunces,serif;color:var(--accent)}
.dcard.quote cite{display:block;margin-top:12px;font:normal 400 11.5px "IBM Plex Mono",monospace;color:var(--ink-soft)}
.dcard.take{background:var(--surface-sunk)}
.tap{position:absolute;top:0;bottom:0;width:30%;border:0;background:none;z-index:2}
.tap-prev{left:0}.tap-next{right:0}
.no-tap .tap{display:none}
.deck-foot{display:flex;justify-content:space-between;align-items:center;padding:0 16px calc(18px + env(safe-area-inset-bottom))}

/* blocks used inside cards and the long read */
.idea{position:relative;padding:20px 20px 20px 56px;border-radius:18px;background:var(--surface-raised);font:italic 400 20px/1.42 Fraunces,Georgia,serif}
.idea::before{content:'';position:absolute;left:18px;top:24px;width:22px;height:22px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:var(--accent)}
.idea small{display:block;margin-bottom:6px;font:normal 500 10px "IBM Plex Mono",monospace;letter-spacing:.24em;text-transform:uppercase;color:var(--accent-ink)}
.widget{padding:20px;border-radius:20px;background:var(--surface-widget);border:1.5px solid var(--hairline)}
.widget.predict{border-color:var(--indigo)}
.badge{display:inline-flex;padding:5px 10px;border-radius:999px;background:var(--accent);color:var(--on-accent);font:600 9.5px/1 "IBM Plex Mono",monospace;letter-spacing:.18em;text-transform:uppercase}
.predict .badge{background:var(--indigo);color:#fff}
.q{margin:12px 0 16px;font:italic 600 22px/1.22 Fraunces,Georgia,serif}
.pval{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:8px}
.pval b{font:600 32px/1 Fraunces,serif;font-variant-numeric:tabular-nums}
input[type=range]{width:100%;accent-color:var(--accent)}
.reveal{margin-top:16px;padding-top:14px;border-top:1px dashed var(--hairline);animation:rise .6s cubic-bezier(.22,1,.36,1)}
.reveal>b{font:600 34px/1 Fraunces,serif;color:var(--accent-ink)}
.reveal p{margin:8px 0 0;font-size:16.5px}
.opts{display:grid;gap:8px}
.opt{display:flex;align-items:center;gap:12px;min-height:50px;padding:12px 14px;border-radius:16px;border:1.5px solid var(--hairline);background:var(--surface-raised);text-align:left;font:400 16.5px/1.4 "Source Serif 4",serif}
.opt i{flex:none;display:grid;place-items:center;width:24px;height:24px;border-radius:50%;border:1.5px solid var(--hairline);font:normal 500 11px "IBM Plex Mono",monospace;color:var(--ink-soft)}
.opt.right{border-color:var(--teal);background:var(--surface-sunk)}.opt.right i{background:var(--teal);border-color:var(--teal);color:#16141A}
.opt.wrong{border-color:var(--rose)}.opt.wrong i{border-color:var(--rose);color:var(--rose-ink)}
.why{margin-top:14px;padding:14px 16px;border-radius:16px;background:var(--surface-sunk);font-size:16px;animation:rise .6s cubic-bezier(.22,1,.36,1)}
.why b{display:block;margin-bottom:4px;font:600 10px "IBM Plex Mono",monospace;letter-spacing:.18em;text-transform:uppercase}
.why.ok b{color:var(--teal-ink)}.why.no b{color:var(--rose-ink)}
.stash[aria-pressed="true"]{border-color:var(--accent);background:var(--surface-raised)}
.stash[aria-pressed="true"] svg{fill:var(--accent);stroke:var(--accent-ink);animation:pop .6s cubic-bezier(.3,1.4,.5,1)}
.next{display:block;width:100%;padding:18px;border-radius:22px;border:1px solid var(--hairline);background:var(--surface-raised);text-align:left;text-decoration:none;color:var(--ink)}
.next q{display:block;margin:10px 0 12px;font:italic 600 21px/1.2 Fraunces,serif;quotes:none}
.next .r{display:flex;justify-content:space-between;align-items:center}

/* flip review */
.flip{width:100%;max-width:340px;height:440px;padding:26px;border-radius:24px;border:1px solid var(--hairline);background:var(--surface-raised);box-shadow:var(--shadow-lift);display:flex;flex-direction:column;text-align:left;color:var(--ink);animation:rise .4s}
.flip.back{background:var(--surface-sunk)}
.flip h3{margin:auto 0;font:italic 600 27px/1.2 Fraunces,serif}
.flip p{margin:auto 0;font-size:19px;line-height:1.55}
.grade{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}

/* streak */
.diya .flame{fill:var(--accent);transform-origin:26px 30px;animation:flicker 2.4s ease-in-out infinite}
.diya .bowl{fill:var(--accent-ink)}
.diya.out .flame{fill:var(--hairline);animation:none}
.streak{display:flex;align-items:center;gap:16px;padding:16px 18px}
.week{display:flex;gap:6px;margin-top:10px}
.week span{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;border:1.5px solid var(--hairline);font:500 10px "IBM Plex Mono",monospace;color:var(--ink-soft)}
.week span.lit{background:var(--accent);border-color:var(--accent);color:#16141A}
.week span.free{border-style:dashed;border-color:var(--teal);color:var(--teal-ink)}
.week span.today{outline:2px solid var(--ink);outline-offset:2px}
.stats3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:14px}
.stats3>div{padding:14px 12px;border-radius:18px;border:1px solid var(--hairline);background:var(--surface-raised)}
.stats3 b{display:block;font:600 26px/1 Fraunces,serif;color:var(--accent-ink)}
.stats3 span{display:block;margin-top:8px;font:400 10.5px/1.4 "IBM Plex Mono",monospace;color:var(--ink-soft)}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{flex:none;white-space:nowrap;height:36px;padding:0 14px;border-radius:999px;border:1px solid var(--hairline);background:var(--surface-raised);font:500 11px "IBM Plex Mono",monospace;color:var(--ink-soft)}
.chip[aria-pressed="true"]{border-color:var(--accent);background:var(--accent-tint);color:var(--ink)}
.chips.scroll{flex-wrap:nowrap;overflow-x:auto;margin:0 -16px;padding:0 16px;scrollbar-width:none}

/* forms */
.field{display:grid;gap:6px;margin-bottom:12px}
.field span{font:500 10.5px "IBM Plex Mono",monospace;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft)}
.input{height:50px;padding:0 16px;border-radius:14px;border:1px solid var(--hairline);background:var(--surface-raised);font-size:16px;outline:none}
.input:focus{border-color:var(--accent)}
.err{min-height:20px;margin:4px 0 10px;font:400 12.5px "IBM Plex Mono",monospace;color:var(--rose-ink)}
.tabs2{display:grid;grid-template-columns:1fr 1fr;padding:4px;border-radius:999px;background:var(--surface-sunk);margin-bottom:18px}
.tabs2 button{height:40px;border:0;border-radius:999px;background:none;font:600 11px "IBM Plex Mono",monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}
.tabs2 button[aria-pressed="true"]{background:var(--surface-raised);color:var(--ink);box-shadow:var(--shadow)}

/* long read */
.reader{position:fixed;inset:0;z-index:50;overflow-y:auto;background:var(--surface)}
.rbar{position:sticky;top:0;z-index:3;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:calc(10px + env(safe-area-inset-top)) 16px 10px;background:var(--overlay);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--hairline)}
.rbar .prog{position:absolute;left:0;bottom:-1px;height:2px;width:0;background:var(--accent)}
.art{max-width:720px;margin:0 auto;padding:28px 22px 80px}
.art h1{margin:10px 0 12px;font:italic 600 clamp(38px,7vw,58px)/1.02 Fraunces,serif;letter-spacing:-.015em}
.art .hero-fig{margin:22px -22px 28px}
.art .hero-fig img,.art .hero-fig svg{display:block;width:100%;height:auto;max-height:440px;object-fit:cover}
.art figcaption{margin-top:8px;font:400 11px/1.55 "IBM Plex Mono",monospace;color:var(--ink-soft);padding:0 22px}
.body{font:400 19px/1.72 "Source Serif 4",Georgia,serif}
.body p{margin:0 0 1.15em}
.body h2{margin:1.9em 0 .6em;font:italic 600 30px/1.15 Fraunces,serif;letter-spacing:-.01em}
.body h3{margin:1.5em 0 .4em;font:600 21px/1.25 Fraunces,serif}
.body ul,.body ol{padding-left:1.3em}
.body code{font:500 .8em "IBM Plex Mono",monospace;background:var(--surface-sunk);padding:1px 6px;border-radius:6px}
.body .pull{margin:1.6em 0;font:italic 400 27px/1.3 Fraunces,serif}
.body .pull::before{content:'\201C';display:block;height:.55em;font:italic 600 70px/1 Fraunces,serif;color:var(--accent)}
.body .note{margin:1.6em 0;padding:18px 22px;border-radius:18px;background:var(--surface-sunk);font-size:16.5px;line-height:1.6}
.body .note b{display:block;margin-bottom:6px;font:600 10px "IBM Plex Mono",monospace;letter-spacing:.2em;text-transform:uppercase;color:var(--teal-ink)}
.body .note p:last-child{margin:0}
.body .stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin:1.6em 0}
.body .stats>div{padding:16px;border:1px solid var(--hairline);border-radius:18px;background:var(--surface-raised)}
.body .stats b{display:block;font:600 32px/1 Fraunces,serif;color:var(--accent-ink)}
.body .stats span{display:block;margin-top:8px;font:400 11px/1.45 "IBM Plex Mono",monospace;color:var(--ink-soft)}
.body .timeline{margin:1.6em 0;border-left:2px solid var(--hairline);padding-left:22px}
.body .timeline>div{position:relative;margin:0 0 16px}
.body .timeline>div::before{content:'';position:absolute;left:-29px;top:6px;width:12px;height:12px;border-radius:50%;background:var(--surface);border:2px solid var(--accent)}
.body .timeline b{font:600 13px "IBM Plex Mono",monospace;color:var(--accent-ink)}
.body .timeline p{margin:3px 0 0;font-size:16.5px;line-height:1.55}
.body figure{margin:1.9em 0}
.body figure.photo img{display:block;width:100%;height:auto;border-radius:12px}
.body figure.diagram{padding:18px;border:1px solid var(--hairline);border-radius:20px;background:#fbf7ee}
.body figure.diagram svg{display:block;width:100%;height:auto}
.body figure.widget{padding:18px;border-radius:20px;background:var(--surface-widget);border:1.5px solid var(--accent)}
.body figure.widget::before{content:'Interactive';display:inline-block;margin-bottom:12px;padding:4px 10px;border-radius:999px;background:var(--accent);color:var(--on-accent);font:600 9px "IBM Plex Mono",monospace;letter-spacing:.2em;text-transform:uppercase}
.body figure.widget svg{max-width:100%;height:auto;touch-action:none}
.body .range{width:100%;accent-color:var(--accent)}
.body .wbtn{height:34px;padding:0 13px;border-radius:999px;border:1px solid var(--hairline);background:var(--surface-raised);font:500 11px "IBM Plex Mono",monospace;color:var(--ink)}
.body .wbtn:hover,.body .wbtn.on{border-color:var(--accent);background:var(--accent-tint)}
.body .wchk{display:inline-flex;align-items:center;gap:7px;font:500 12px "IBM Plex Mono",monospace}
.body figure.widget select{height:34px;padding:0 10px;border-radius:10px;border:1px solid var(--hairline);background:var(--surface-raised);font:500 12px "IBM Plex Mono",monospace}
.body .wout{font:600 13px "IBM Plex Mono",monospace;color:var(--accent-ink)}
.body label{font-family:"IBM Plex Mono",monospace;font-size:12px}
.links a{display:block;padding:14px 16px;margin-bottom:8px;border:1px solid var(--hairline);border-radius:18px;background:var(--surface-raised);color:var(--ink);text-decoration:none}
.links a b{display:block;font:600 16px/1.3 Fraunces,serif}.links a span{font:400 11px "IBM Plex Mono",monospace;color:var(--ink-soft)}
[data-theme="night"] .body figure.diagram{background:#F4EFE6;color:#2a1d17}

.toast{position:fixed;left:50%;bottom:calc(100px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:90;padding:11px 16px;border-radius:999px;background:var(--cta);color:var(--on-cta);font:600 10.5px "IBM Plex Mono",monospace;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;animation:toast 2.4s cubic-bezier(.22,1,.36,1) forwards;pointer-events:none}
.empty{padding:28px 20px;border-radius:24px;border:1.5px dashed var(--hairline);text-align:center;color:var(--ink-soft)}
.loading{padding:120px 0;text-align:center;font:italic 400 20px Fraunces,serif;color:var(--ink-soft)}

@keyframes rise{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes pop{0%{transform:scale(.6)}60%{transform:scale(1.18)}100%{transform:scale(1)}}
@keyframes flicker{0%,100%{transform:scale(1)}30%{transform:scale(1.06,.96) rotate(-2deg)}60%{transform:scale(.96,1.05) rotate(2deg)}}
@keyframes toast{0%{opacity:0;transform:translate(-50%,8px)}12%,80%{opacity:1;transform:translate(-50%,0)}100%{opacity:0}}
.enter>*{animation:rise .5s cubic-bezier(.22,1,.36,1) both}
.enter>*:nth-child(2){animation-delay:.04s}.enter>*:nth-child(3){animation-delay:.08s}.enter>*:nth-child(4){animation-delay:.12s}.enter>*:nth-child(5){animation-delay:.16s}.enter>*:nth-child(n+6){animation-delay:.2s}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important}}
/* explore */
.explore-top{display:grid;gap:12px;margin-top:16px}
.modes4{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.modes4 a{padding:14px 16px;border-radius:20px}
.modes4 b{display:block;font:italic 600 18px Fraunces,serif;color:var(--ink)}
.cols>section,.cols>aside{min-width:0}

/* desktop: wide pages, two columns, grids, a labelled dock */
@media (min-width:900px){
  .page.wide{max-width:1180px;padding:28px 32px 130px}
  .cols{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:40px;align-items:start}
  .cols aside .sec:first-child{margin-top:66px}
  .cols aside .rail{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;overflow:visible;margin:0;padding:0}
  .cols aside .tcard{width:auto}
  .cols aside .tcard .cv{height:120px}
  .cols2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px;align-items:start}
  .list.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:14px}
  .explore-top{grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);align-items:center}
  .modes4{grid-template-columns:repeat(4,minmax(0,1fr))}
  .hero{min-height:230px;padding:24px}.hero h2{font-size:28px;max-width:360px}.hero .art{width:200px;height:200px}
  .dock{width:min(640px,calc(100% - 64px))}
  .dock nav a{width:auto;padding:0 16px;border-radius:999px;gap:8px;display:flex}
  .dock nav a span{display:inline;font:600 11px "IBM Plex Mono",monospace;letter-spacing:.1em;text-transform:uppercase}
  .dock nav a:hover{background:var(--surface-sunk);color:var(--ink)}
  .deck-in{max-width:560px}
  .stage{margin:0 24px 40px}
}
