/* Story pages (Act I and beyond).
   Layout: one book page at a time on a cool paper ground; a sticky strip carries
   the act title and a map of the pages you've read. Highlighter marks are the one loud gesture. */
:root{
  --paper:#EEEDF4; --sheet:#FCFCFE; --ink:#1D1A33; --muted:#5E5B74; --rule:#DAD8E5;
  --mark:#FFE36E; --mark-ink:#1D1A33;
  --signal:#3B37D1; --signal-ink:#FFFFFF; --signal-soft:#E6E5FB;
  --good:#0F7A58; --good-soft:#DDF3EA; --bad:#B23A2F; --bad-soft:#F8E1DE;
  --t1:#E6E5FB; --t2:#FFF1B8; --t3:#DDF3EA; --t4:#F8E1DE; --t5:#E3EEF9;
  --shadow:0 1px 0 rgba(29,26,51,.04), 0 18px 40px -24px rgba(29,26,51,.28);
  --f-display:"Bricolage Grotesque", "Avenir Next", "Segoe UI", system-ui, sans-serif;
  --f-body:"Literata", Georgia, "Times New Roman", serif;
  --f-mono:"JetBrains Mono", ui-monospace, Menlo, Consolas, monospace;
  color-scheme:light;
}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]){
  --paper:#12111D; --sheet:#1B1A2A; --ink:#ECEAF6; --muted:#A4A1BB; --rule:#33314A;
  --mark:#6E5A17; --mark-ink:#FFF4C7;
  --signal:#A3A1FF; --signal-ink:#14132A; --signal-soft:#2A2852;
  --good:#5CD0A3; --good-soft:#163A2E; --bad:#F2918A; --bad-soft:#43201D;
  --t1:#2A2852; --t2:#45391A; --t3:#163A2E; --t4:#43201D; --t5:#1D3047;
  --shadow:0 18px 40px -24px rgba(0,0,0,.7);
  color-scheme:dark; } }
:root[data-theme="dark"]{
  --paper:#12111D; --sheet:#1B1A2A; --ink:#ECEAF6; --muted:#A4A1BB; --rule:#33314A;
  --mark:#6E5A17; --mark-ink:#FFF4C7;
  --signal:#A3A1FF; --signal-ink:#14132A; --signal-soft:#2A2852;
  --good:#5CD0A3; --good-soft:#163A2E; --bad:#F2918A; --bad-soft:#43201D;
  --t1:#2A2852; --t2:#45391A; --t3:#163A2E; --t4:#43201D; --t5:#1D3047;
  --shadow:0 18px 40px -24px rgba(0,0,0,.7);
  color-scheme:dark; }

*{box-sizing:border-box}
[hidden]{display:none!important}
html{padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--f-body);font-size:18px;line-height:1.6;
  padding-left:max(16px, env(safe-area-inset-left, 0px));padding-right:max(16px, env(safe-area-inset-right, 0px));padding-block:0 48px}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top, 0px);z-index:10;background:var(--paper)}
a{color:var(--signal)}

/* page turns between story pages (browsers that support cross-document view transitions) */
@view-transition{navigation:auto}
.sheet{view-transition-name:sheet}
::view-transition-old(sheet){animation:.25s ease-in both page-out}
::view-transition-new(sheet){animation:.4s cubic-bezier(.2,.7,.2,1) both page-in}
@keyframes page-out{to{opacity:0;transform:translateX(-14px)}}
@keyframes page-in{from{opacity:.3;transform:translateX(18px) rotate(.4deg)}}
@media (prefers-reduced-motion: reduce){::view-transition-old(sheet),::view-transition-new(sheet){animation:none}}

/* top strip */
.strip{position:sticky;top:env(safe-area-inset-top, 0px);z-index:5;background:var(--paper);
  display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
  max-width:760px;margin:0 auto;padding-block:14px 12px;border-bottom:1px solid var(--rule)}
.brand{display:flex;flex-direction:column;gap:2px;min-width:0;color:var(--ink);text-decoration:none}
.brand b{font-family:var(--f-display);font-weight:700;font-size:15px;letter-spacing:.01em}
.brand span{font-family:var(--f-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.map{width:200px;max-width:100%;height:auto;overflow:visible}
.map line{stroke:var(--rule);stroke-width:1.5}
.map line.lit{stroke:var(--signal);stroke-opacity:.55}
.map circle.node{fill:var(--sheet);stroke:var(--muted);stroke-width:1.5}
.map a{pointer-events:none}
.map a.visited{pointer-events:auto;cursor:pointer}
.map a.visited circle.node{fill:var(--signal);stroke:var(--signal)}
.map circle.ring{stroke:var(--signal);fill:none;stroke-width:1.5}
.map a:focus{outline:none}
.map a:focus-visible circle.node{stroke:var(--ink);stroke-width:3}

/* the page */
main{max-width:760px;margin:24px auto 0}
.sheet{background:var(--sheet);border:1px solid var(--rule);border-radius:4px 14px 14px 4px;box-shadow:var(--shadow);
  padding:clamp(24px,5vw,56px) clamp(20px,6vw,64px) 28px}
.eyebrow{font-family:var(--f-mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0 0 14px}
h1{font-family:var(--f-display);font-weight:800;line-height:1.05;letter-spacing:-.02em;text-wrap:balance;margin:0 0 20px;font-size:clamp(30px,5vw,44px)}
.cover h1{font-size:clamp(36px,6.4vw,58px)}
.sheet h2{font-family:var(--f-display);font-weight:700;font-size:19px;line-height:1.3;margin:0 0 8px}
.prose > p,.prose > ul{max-width:62ch;margin:0 0 16px}
.prose .lede{font-size:21px}
.persona{font-style:italic;color:var(--muted);border-left:2px solid var(--rule);padding-left:14px}
mark{color:var(--mark-ink);background:linear-gradient(100deg,transparent .15em,var(--mark) .3em,var(--mark) calc(100% - .3em),transparent calc(100% - .15em));
  padding:0 .3em;margin:0 -.12em;border-radius:.25em .6em .3em .7em;-webkit-box-decoration-break:clone;box-decoration-break:clone}
code{font-family:var(--f-mono);font-size:.85em}

/* toys */
.toy{margin:28px 0;padding:22px clamp(16px,3vw,26px);border:1.5px dashed var(--rule);border-radius:12px;background:var(--paper)}
.label{font-family:var(--f-mono);font-size:11.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--signal);font-weight:600}
.prompt{font-family:var(--f-display);font-weight:700;font-size:clamp(24px,4vw,32px);line-height:1.25;margin:10px 0 16px;text-wrap:balance}
.blank{display:inline-block;min-width:3.2em;border-bottom:3px solid var(--signal);padding:0 .15em;color:var(--signal)}
.hint{margin:0 0 12px;color:var(--muted);font-size:16px}
.hint.block{display:block;margin-top:10px}
.opts{display:flex;flex-wrap:wrap;gap:10px}
button{font:inherit;color:inherit;cursor:pointer}
button:focus-visible,input:focus-visible,a:focus-visible{outline:3px solid var(--signal);outline-offset:2px}
.opt{font-family:var(--f-display);font-weight:500;font-size:18px;padding:9px 16px;border-radius:999px;border:1.5px solid var(--ink);background:var(--sheet);transition:transform .12s}
.opt:hover{transform:translateY(-2px)}
.btn{font-family:var(--f-display);font-weight:700;font-size:16px;padding:10px 18px;border-radius:8px;border:0;background:var(--signal);color:var(--signal-ink)}
.btn.ghost{background:transparent;color:var(--signal);border:1.5px solid var(--signal)}
.row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}

.bars{display:grid;grid-template-columns:minmax(0,9.5em) minmax(0,1fr) 3.4em;gap:8px 12px;align-items:center;margin:4px 0 14px}
.bars .w{font-family:var(--f-display);font-weight:500;font-size:16px;overflow-wrap:anywhere}
.bars .w small{display:block;font-family:var(--f-mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--signal)}
.bars .track{height:14px;border-radius:3px;background:var(--rule);overflow:hidden}
.bars .fill{height:100%;background:var(--muted);border-radius:3px;transition:width .35s}
.bars .track.mine .fill{background:var(--signal)}
.bars .w.rest,.bars .v.rest{color:var(--muted)}
.bars .track.rest .fill{background:transparent;background-image:repeating-linear-gradient(135deg,var(--muted) 0 2px,transparent 2px 6px)}
.bars .v{font-family:var(--f-mono);font-size:13px;text-align:right;font-variant-numeric:tabular-nums}
.note{margin:0 0 16px;font-size:17px}

.field{width:100%;font-family:var(--f-body);font-size:19px;padding:12px 14px;border:1.5px solid var(--ink);border-radius:8px;background:var(--sheet);color:var(--ink);margin:10px 0 16px}
.tokens{display:flex;flex-wrap:wrap;gap:6px 4px;margin:0 0 14px;min-height:2.6em}
.tok{display:inline-flex;flex-direction:column;align-items:center;padding:4px 6px 3px;border-radius:5px;font-family:var(--f-mono);font-size:16px;white-space:pre;line-height:1.3}
.tok i{font-style:normal;font-size:10px;opacity:.7;font-variant-numeric:tabular-nums}
.tok.c0{background:var(--t1)}.tok.c1{background:var(--t2)}.tok.c2{background:var(--t3)}.tok.c3{background:var(--t4)}.tok.c4{background:var(--t5)}
.counts{display:flex;gap:24px;flex-wrap:wrap;font-family:var(--f-mono);font-size:13px;color:var(--muted)}
.counts b{font-family:var(--f-display);font-size:26px;color:var(--ink);display:block;font-variant-numeric:tabular-nums}
.fine{font-size:14.5px;color:var(--muted);margin:12px 0 0}

.slider{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:6px 0 14px}
.slider input{flex:1 1 220px;accent-color:var(--signal)}
.temp{font-family:var(--f-mono);font-size:15px;font-variant-numeric:tabular-nums;min-width:8.5em}
.endings{list-style:none;padding:0;margin:14px 0 0;display:grid;gap:6px}
.endings:empty{display:none}
.endings li{font-size:17px;padding:8px 12px;border-radius:6px;background:var(--sheet);border:1px solid var(--rule)}
.endings li b{color:var(--signal);font-weight:600}

.split{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin:24px 0}
.split > div{min-width:0;padding:18px 20px;border-radius:10px;border:1px solid var(--rule)}
.split ul{margin:0;padding-left:1.1em;font-size:16.5px}
.split li{margin-bottom:8px}
.split .yes h2{color:var(--good)} .split .no h2{color:var(--bad)}

.quiz{display:grid;gap:12px;margin-top:8px}
.q{display:grid;gap:8px;padding:14px 16px;border-radius:10px;background:var(--sheet);border:1px solid var(--rule)}
.q p{margin:0;font-size:17px}
.q .row button{font-family:var(--f-display);font-weight:500;font-size:15px;padding:6px 16px;border-radius:999px;border:1.5px solid var(--ink);background:transparent}
.q.right{border-color:var(--good);background:var(--good-soft)}
.q.wrong{border-color:var(--bad);background:var(--bad-soft)}
.q .why{font-size:15px;margin:0}
.verdict{font-family:var(--f-display);font-weight:700}
.q.right .verdict{color:var(--good)} .q.wrong .verdict{color:var(--bad)}

/* choices */
.turnto{margin-top:36px;border-top:1px solid var(--rule);padding-top:20px}
.turnto .label{color:var(--muted)}
.choices{display:grid;gap:10px;margin-top:12px}
.choice{display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%;text-align:left;color:var(--ink);text-decoration:none;
  padding:16px 18px;border-radius:10px;border:1.5px solid var(--ink);background:var(--sheet);transition:background .15s, transform .15s}
.choice:hover{background:var(--signal-soft);transform:translateX(3px)}
.choice span{display:flex;flex-direction:column;gap:2px;min-width:0}
.choice b{font-family:var(--f-display);font-weight:700;font-size:19px;line-height:1.2}
.choice small{font-size:14.5px;color:var(--muted)}
.choice .arrow{font-family:var(--f-display);font-size:24px;color:var(--signal);flex:none}
.choice.seen b::after{content:"  · read";font-family:var(--f-mono);font-size:11px;letter-spacing:.06em;color:var(--muted);font-weight:400}

.deeper{margin-top:18px;font-size:15px;color:var(--muted)}
.folio{display:flex;justify-content:space-between;gap:12px;margin-top:28px;font-family:var(--f-mono);font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}

/* end page */
.card{border:1.5px solid var(--ink);border-radius:12px;padding:22px 24px;margin:20px 0;background:var(--paper)}
.card ul{margin:10px 0 14px;padding-left:1.1em}
.card li{margin-bottom:6px}
.path{font-family:var(--f-mono);font-size:13.5px;color:var(--muted);overflow-wrap:anywhere}
.path:empty{display:none}
.locked{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap;padding:18px 20px;border-radius:10px;border:1.5px dashed var(--rule);margin-top:24px}
.locked .lk{font-family:var(--f-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding:3px 8px;border:1px solid var(--rule);border-radius:4px;flex:none}
.locked > div{flex:1 1 220px;min-width:0}
.locked p{margin:4px 0 0;font-size:16px;color:var(--muted)}
.toast{font-family:var(--f-mono);font-size:13px;color:var(--good);margin-left:6px}

.colophon{max-width:760px;margin:20px auto 0;font-family:var(--f-mono);font-size:12px;color:var(--muted);display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}
.colophon button{background:none;border:0;padding:0;color:var(--signal);font:inherit;text-decoration:underline}

@media (max-width:520px){
  body{font-size:17px}
  .bars{grid-template-columns:minmax(0,7em) minmax(0,1fr) 3em}
  .map{width:150px}
}
