/* Layout: a single reading column like a paperback CYOA, with a gauge strip pinned above the page like a board dashboard. */
:root{
  --bg:#f3f1ea; --paper:#fbfaf6; --ink:#1b1f22; --ink-2:#4e565c; --rule:#d6d2c4;
  --accent:#e8c800; --accent-ink:#1b1f22; --good:#2a7f4f; --bad:#b4372c;
  --display:"Bricolage Grotesque",system-ui,sans-serif;
  --body:"Source Serif 4",Georgia,serif;
  --mono:"JetBrains Mono",ui-monospace,Menlo,monospace;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#15181b; --paper:#1d2125; --ink:#ece8dc; --ink-2:#a8a398; --rule:#333940;
  --accent:#f0d419; --accent-ink:#15181b; --good:#5fc08a; --bad:#e2695b; color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#15181b; --paper:#1d2125; --ink:#ece8dc; --ink-2:#a8a398; --rule:#333940;
  --accent:#f0d419; --accent-ink:#15181b; --good:#5fc08a; --bad:#e2695b; color-scheme:dark}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--body);font-size:17px;line-height:1.55;
  padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:0 48px}
.wrap{max-width:720px;margin:0 auto}
header{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 16px;padding-block:22px 10px;border-bottom:2px solid var(--ink)}
header h1{font-family:var(--display);font-weight:800;font-size:clamp(22px,4vw,30px);margin:0;letter-spacing:-.02em;text-wrap:balance}
header .sub{font-family:var(--mono);font-size:12px;color:var(--ink-2);letter-spacing:.04em;text-transform:uppercase}
.gauges{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;padding-block:14px;border-bottom:1px solid var(--rule)}
@media (max-width:520px){.gauges{grid-template-columns:repeat(2,1fr)}}
.g{min-width:0}
.g label{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2)}
.g .v{font-family:var(--display);font-weight:700;font-size:22px;font-variant-numeric:tabular-nums;line-height:1.1;display:flex;align-items:baseline;gap:6px}
.g .d{font-family:var(--mono);font-size:12px;font-weight:600}
.d.up{color:var(--good)} .d.dn{color:var(--bad)}
.bar{height:5px;background:var(--rule);margin-top:6px;overflow:hidden}
.bar i{display:block;height:100%;background:var(--ink);transition:width .5s ease}
.year{font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);margin:26px 0 6px}
.year b{color:var(--ink);background:var(--accent);color:var(--accent-ink);padding:2px 7px;font-weight:600;margin-right:8px}
.scene h2{font-family:var(--display);font-weight:700;font-size:clamp(24px,4.4vw,34px);letter-spacing:-.02em;line-height:1.1;margin:0 0 14px;text-wrap:balance}
.scene p{margin:0 0 14px;max-width:62ch}
.scene .memo{background:var(--paper);border-left:3px solid var(--accent);padding:12px 16px;margin:16px 0;font-style:italic;color:var(--ink-2)}
.scene .memo b{font-style:normal;color:var(--ink);font-family:var(--mono);font-size:12px;letter-spacing:.05em;text-transform:uppercase;display:block;margin-bottom:4px}
.choices{display:grid;gap:10px;margin-top:22px}
.choice{all:unset;display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:start;cursor:pointer;background:var(--paper);border:1px solid var(--rule);padding:14px 16px;font-family:var(--body);line-height:1.4}
.choice:hover,.choice:focus-visible{border-color:var(--ink);outline:2px solid var(--accent);outline-offset:-2px}
.choice .k{font-family:var(--display);font-weight:800;font-size:18px;color:var(--ink);width:1.4em}
.choice .t{font-weight:600;display:block}
.choice .s{display:block;color:var(--ink-2);font-size:15px;margin-top:2px}
.ending{margin-top:22px;padding:18px 20px;background:var(--ink);color:var(--bg)}
.ending .tag{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}
.ending h3{font-family:var(--display);font-weight:800;font-size:clamp(22px,4vw,30px);margin:6px 0 10px;letter-spacing:-.02em;line-height:1.1}
.ending p{margin:0 0 10px;max-width:62ch}
.layers{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-top:14px}
@media (max-width:520px){.layers{grid-template-columns:1fr}}
.layer{border:1px solid color-mix(in srgb,var(--bg) 35%,transparent);padding:10px;font-family:var(--mono);font-size:12px;letter-spacing:.03em;color:color-mix(in srgb,var(--bg) 70%,transparent)}
.layer.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600}
.path{margin-top:18px;font-family:var(--mono);font-size:12px;color:var(--ink-2);line-height:1.9}
.path span{display:inline-block;background:var(--paper);border:1px solid var(--rule);padding:0 7px;margin:0 6px 4px 0}
.again{all:unset;cursor:pointer;display:inline-block;margin-top:16px;font-family:var(--display);font-weight:700;background:var(--accent);color:var(--accent-ink);padding:10px 16px}
.again:focus-visible{outline:2px solid var(--ink)}
footer{margin-top:40px;padding-top:14px;border-top:1px solid var(--rule);font-size:13px;color:var(--ink-2);max-width:62ch}
.fade{animation:fade .35s ease}
@keyframes fade{from{opacity:.4;transform:translateY(4px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.fade{animation:none}.bar i{transition:none}}

/* site additions */
:root{--accent-light:#e8c800;--accent-dark:#f0d419}
:root{--accent:var(--accent-light)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--accent:var(--accent-dark)}}
:root[data-theme="dark"]{--accent:var(--accent-dark)}
.g .real{font-family:var(--mono);font-size:12px;color:var(--ink-2);font-weight:400}
.ending .permalink{margin-top:12px;font-family:var(--mono);font-size:12px}
.ending .permalink a{color:var(--accent)}
.err{background:var(--paper);border:1px solid var(--bad);padding:12px;color:var(--bad);font-family:var(--mono);font-size:12px;white-space:pre-wrap}
nav.site{display:flex;flex-wrap:wrap;gap:6px 18px;padding-block:14px 0;font-family:var(--mono);font-size:12px;letter-spacing:.05em;text-transform:uppercase}
nav.site a{color:var(--ink-2);text-decoration:none}
nav.site a:hover,nav.site a[aria-current]{color:var(--ink);border-bottom:2px solid var(--accent)}
.article{max-width:720px;margin:0 auto}
.article h1{font-family:var(--display);font-weight:800;font-size:clamp(30px,5.5vw,46px);letter-spacing:-.025em;line-height:1.05;margin:28px 0 8px;text-wrap:balance}
.article .dek{font-style:italic;color:var(--ink-2);font-size:19px;margin:0 0 6px}
.article .byline{font-family:var(--mono);font-size:12px;color:var(--ink-2);margin:0 0 28px}
.article h2{font-family:var(--display);font-weight:700;font-size:clamp(22px,3.6vw,28px);letter-spacing:-.02em;margin:36px 0 10px;text-wrap:balance}
.article p{max-width:64ch;margin:0 0 16px}
.article ol{padding-left:1.2em;max-width:64ch}
.article li{margin-bottom:12px}
.article code{font-family:var(--mono);font-size:.9em;background:var(--paper);padding:0 4px}
.article figure{margin:20px 0}
.article figcaption{font-family:var(--mono);font-size:12px;color:var(--ink-2);margin-top:6px}
.article .stack{max-width:100%}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin:18px 0}
.card{display:block;background:var(--paper);border:1px solid var(--rule);padding:16px;text-decoration:none;color:var(--ink)}
.card:hover{border-color:var(--ink)}
.card .co{font-family:var(--display);font-weight:800;font-size:22px;letter-spacing:-.02em}
.card .m{font-family:var(--mono);font-size:12px;color:var(--ink-2);margin-top:4px}
.card .b{margin-top:10px;font-size:15px}
.cta{all:unset;cursor:pointer;display:inline-block;font-family:var(--display);font-weight:700;background:var(--accent);color:var(--accent-ink);padding:12px 18px;margin:8px 0 20px}
.cta:focus-visible{outline:2px solid var(--ink)}
.facts{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px;margin:14px 0 22px;font-family:var(--mono);font-size:12px}
.facts div{background:var(--paper);border:1px solid var(--rule);padding:10px}
.facts b{display:block;font-family:var(--display);font-size:18px;color:var(--ink)}
.facts a{color:var(--ink-2)}
.ending-list{display:grid;gap:10px;margin:14px 0}
.ending-list a{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:baseline;background:var(--paper);border:1px solid var(--rule);padding:12px 14px;text-decoration:none;color:var(--ink)}
.ending-list a:hover{border-color:var(--ink)}
.ending-list .lay{font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);min-width:7em}
.ending-list .lay.relationship{color:var(--good)} .ending-list .lay.tower{color:var(--bad)}
.ending-page .verdict{background:var(--ink);color:var(--bg);padding:16px 18px;margin:16px 0}
.ending-page .verdict .tag{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}
.ending-page .route{font-family:var(--mono);font-size:12px;color:var(--ink-2);line-height:1.9}
.ending-page .route span{display:inline-block;background:var(--paper);border:1px solid var(--rule);padding:0 7px;margin:0 6px 4px 0}
.card span{display:block}
.scene h2:focus{outline:none}
.news{list-style:none;padding:0;margin:0 0 12px;max-width:64ch}
.news li{margin-bottom:6px;font-size:15px}
.news .m,.facts a{font-family:var(--mono);font-size:12px;color:var(--ink-2)}
.facts div a{display:block;margin-top:4px}
a{color:var(--ink);text-decoration-color:var(--accent);text-decoration-thickness:2px;text-underline-offset:2px}
footer a{color:var(--ink-2)}

/* ---------- courtroom style: a visual novel stage, a dialogue box, shouts and a verdict stamp ---------- */
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
body.courtroom .wrap{max-width:880px}
.toolbar{display:flex;gap:8px;margin-left:auto}
.toolbar button{all:unset;cursor:pointer;font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;border:1px solid var(--rule);background:var(--paper);padding:6px 10px}
.toolbar button:hover,.toolbar button:focus-visible{border-color:var(--ink);outline:2px solid var(--accent);outline-offset:-2px}
.court{margin-top:18px}
.stage{position:relative;aspect-ratio:16/9;min-height:230px;background:#2a3040 center/cover no-repeat;border:3px solid #10141c;overflow:hidden;isolation:isolate}
.stage::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(10,12,18,.55),transparent 45%);z-index:1;pointer-events:none}
.stage .card{position:absolute;top:12px;left:12px;z-index:3;max-width:min(62%,420px);background:rgba(16,20,28,.86);color:#f4f1e8;padding:8px 12px;border-left:4px solid var(--accent);font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase}
.stage .card b{color:var(--accent)}
.stage .card h2{margin:4px 0 0;font-family:var(--display);font-weight:800;font-size:clamp(15px,2.6vw,22px);letter-spacing:-.01em;line-height:1.15;text-transform:none;text-wrap:balance}
.stage .card h2:focus{outline:none}
.portrait{position:absolute;bottom:0;left:50%;height:94%;max-width:70%;object-fit:contain;object-position:bottom;transform:translateX(-50%);z-index:2;filter:drop-shadow(0 6px 14px rgba(0,0,0,.45))}
.portrait.enter{animation:enter .28s cubic-bezier(.2,.9,.3,1.2)}
@keyframes enter{from{opacity:0;transform:translateX(-50%) translateY(14px) scale(.97)}to{opacity:1;transform:translateX(-50%)}}
.shout{position:absolute;left:50%;top:50%;z-index:5;padding:.35em .7em .45em;background:#fff;color:#d7261e;font-family:var(--display);font-weight:800;font-size:clamp(38px,9vw,92px);letter-spacing:-.02em;line-height:1;white-space:nowrap;text-transform:uppercase;
  -webkit-text-stroke:3px #10141c;paint-order:stroke fill;text-shadow:4px 4px 0 #10141c;
  clip-path:polygon(0% 12%,8% 0%,20% 10%,34% 2%,48% 12%,62% 0%,76% 10%,90% 1%,100% 14%,94% 34%,100% 52%,93% 70%,100% 90%,84% 86%,70% 100%,56% 88%,40% 100%,26% 88%,10% 99%,6% 80%,0% 66%,6% 46%,0% 30%);
  transform:translate(-50%,-50%) rotate(-7deg) scale(0);opacity:0;pointer-events:none}
.shout.you{color:#1f5fd6}
.shout.on{animation:slam .95s cubic-bezier(.2,1.4,.4,1) forwards}
.shout.on.stay{animation:stamp .5s cubic-bezier(.2,1.4,.4,1) forwards}
@keyframes slam{0%{opacity:0;transform:translate(-50%,-50%) rotate(-14deg) scale(2.4)}18%{opacity:1;transform:translate(-50%,-50%) rotate(-7deg) scale(1)}82%{opacity:1;transform:translate(-50%,-50%) rotate(-7deg) scale(1.04)}100%{opacity:0;transform:translate(-50%,-50%) rotate(-7deg) scale(1.1)}}
@keyframes stamp{0%{opacity:0;transform:translate(-50%,-50%) rotate(-12deg) scale(2.2)}100%{opacity:1;transform:translate(-50%,-50%) rotate(-6deg) scale(1)}}
.shout.stamp{clip-path:none;background:rgba(255,255,255,.92);border:6px solid currentColor;font-size:clamp(34px,8vw,80px);-webkit-text-stroke:0;text-shadow:none;padding:.15em .5em}
.shout.stamp.relationship{color:#1f8a4c}.shout.stamp.plumbing{color:#b7791f}.shout.stamp.tower{color:#c0281f}
.flash{position:absolute;inset:0;z-index:4;background:#fff;opacity:0;pointer-events:none}
.stage.flashing .flash{animation:flash .3s ease-out}
.stage.hurt .flash{background:#e2463a;animation:flash .6s ease-out}
.stage.boost .flash{background:var(--accent);animation:flash .6s ease-out}
@keyframes flash{from{opacity:.75}to{opacity:0}}
.stage.shake{animation:shake .45s linear}
@keyframes shake{0%,100%{transform:none}15%{transform:translate(-9px,4px)}30%{transform:translate(8px,-5px)}45%{transform:translate(-6px,-3px)}60%{transform:translate(5px,4px)}75%{transform:translate(-3px,2px)}}
.dialog{all:unset;box-sizing:border-box;display:block;position:relative;width:100%;min-height:7.6em;margin-top:-3px;padding:22px 22px 26px;background:#10141c;color:#f4f1e8;border:3px solid #10141c;border-top:3px solid var(--accent);font-family:var(--body);font-size:18px;line-height:1.5;cursor:pointer}
.dialog:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.dialog .nameplate{position:absolute;top:-15px;left:14px;background:var(--accent);color:#10141c;font-family:var(--mono);font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;padding:3px 10px;border:2px solid #10141c}
.dialog.narration .line{color:#a9c8ff}
.dialog .more{position:absolute;right:14px;bottom:8px;color:var(--accent);font-size:13px;opacity:0}
.dialog.ready:not(.done) .more{opacity:1;animation:bob .8s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(3px)}}
.court-skip{text-align:right;margin-top:6px}
.court-skip .skip{all:unset;cursor:pointer;font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2)}
.court-skip .skip:hover,.court-skip .skip:focus-visible{color:var(--ink);text-decoration:underline}
.court .choice .cry{display:block;font-family:var(--display);font-weight:800;font-size:13px;letter-spacing:.08em;color:#d7261e;margin-bottom:2px}
.court .choice.loud{border-left:4px solid #d7261e}
.court .choice .present{display:inline-block;margin-top:6px;font-family:var(--mono);font-size:11px;letter-spacing:.04em;border:1px solid var(--accent);padding:1px 6px;color:var(--ink-2)}
.court .choice:disabled{opacity:.55;cursor:default}
.transcript{margin-top:16px;font-size:15px;color:var(--ink-2)}
.transcript summary{cursor:pointer;font-family:var(--mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase}
.transcript p{margin:8px 0}
dialog#record{max-width:min(640px,calc(100vw - 32px));width:100%;border:3px solid var(--ink);background:var(--bg);color:var(--ink);padding:0}
dialog#record::backdrop{background:rgba(10,12,18,.6)}
.record{padding:18px 20px}
.record h2{font-family:var(--display);font-weight:800;margin:0 0 4px}
.record .hint{font-size:14px;color:var(--ink-2);margin:0 0 12px}
.record ul{list-style:none;padding:0;margin:0 0 12px;display:grid;gap:8px}
.record li{background:var(--paper);border:1px solid var(--rule);padding:10px 12px;display:grid;gap:3px;font-size:15px}
.record li b{font-family:var(--display)}
.record .tag{font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;justify-self:start;padding:1px 6px;border:1px solid}
.record .tag.fact{color:var(--good)}.record .tag.fiction{color:var(--ink-2)}
.record a{font-family:var(--mono);font-size:12px}
@media (max-width:560px){.stage{aspect-ratio:4/3}.portrait{max-width:86%}.dialog{font-size:16px;padding:20px 16px 24px}}
@media (prefers-reduced-motion:reduce){.portrait.enter,.shout.on,.stage.shake,.stage .flash,.dialog .more{animation:none!important}.shout.on{opacity:1;transform:translate(-50%,-50%) rotate(-7deg)}}
.court .after:focus{outline:none}
