*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:70px}
@font-face{font-family:"Special Elite";font-style:normal;font-weight:400;font-display:swap;src:url("assets/fonts/special-elite-400.woff2") format("woff2")}
@font-face{font-family:"EB Garamond";font-style:normal;font-weight:400;font-display:swap;src:url("assets/fonts/ebgaramond-400.woff2") format("woff2")}
@font-face{font-family:"EB Garamond";font-style:normal;font-weight:600;font-display:swap;src:url("assets/fonts/ebgaramond-600.woff2") format("woff2")}
@font-face{font-family:"EB Garamond";font-style:italic;font-weight:400;font-display:swap;src:url("assets/fonts/ebgaramond-italic-400.woff2") format("woff2")}
@font-face{font-family:"Caveat";font-style:normal;font-weight:500;font-display:swap;src:url("assets/fonts/caveat-500.woff2") format("woff2")}
@font-face{font-family:"Caveat";font-style:normal;font-weight:700;font-display:swap;src:url("assets/fonts/caveat-700.woff2") format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:400;font-display:swap;src:url("assets/fonts/ibmplexmono-400.woff2") format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:600;font-display:swap;src:url("assets/fonts/ibmplexmono-600.woff2") format("woff2")}
:root{--ink:#0d0b09;--blood:#8a1c1c;--fade:#8d8471;--line:#2a251f}
body{margin:0;background:var(--ink);color:#e9e0cb;font-family:"EB Garamond",Georgia,serif;font-size:18px;line-height:1.65;overflow-x:hidden}
::selection{background:var(--blood);color:#fff}
a{color:inherit}
a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible{outline:2px dashed var(--blood);outline-offset:3px}
img{max-width:100%;height:auto}
.cols>*{min-width:0}
code{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:.85em;background:#00000055;border:1px solid #ffffff22;padding:1px 7px;border-radius:4px}
section{scroll-margin-top:64px}
/* nav */
.nav{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:24px;padding:15px 24px;background:#0d0b09;border-bottom:1px solid var(--line)}
.logo{font-family:"Special Elite","Courier New",monospace;text-decoration:none;font-size:26px;letter-spacing:2px;color:#ece2cc;white-space:nowrap}
.file-no{font-size:14px;color:var(--fade);letter-spacing:1px;font-family:"IBM Plex Mono",ui-monospace,monospace}
.nav nav{display:flex;gap:6px;margin-left:auto;font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:16px}
.nav nav a{text-decoration:none;color:#b9ad93;padding:9px 14px}
.nav nav a:hover{color:#ece2cc;text-decoration:underline wavy var(--blood) 1px;text-underline-offset:4px}
.stamp-btn{display:inline-block;font-family:"Special Elite","Courier New",monospace;text-decoration:none;color:#ece2cc;border:2px solid #ece2cc;border-radius:3px;padding:8px 16px;box-shadow:2px 2px 0 var(--blood);background:transparent;cursor:pointer;white-space:nowrap}
.stamp-btn:hover{background:#ece2cc;color:var(--ink);transform:translateY(-2px);box-shadow:3px 4px 0 var(--blood)}
.stamp-btn.big{font-size:18px;padding:12px 22px}
.ghost-btn{display:inline-block;padding:12px 6px;font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:14px}
#menuBtn{display:none;background:none;border:1px solid var(--line);color:#ece2cc;border-radius:6px;padding:6px 14px;font-size:22px;cursor:pointer}
#mobileMenu{display:none;flex-direction:column;padding:8px 20px 14px;background:#0d0b09;border-bottom:1px solid var(--line);position:sticky;top:74px;z-index:49}
#mobileMenu a{padding:8px 0;color:#e9e0cb;text-decoration:none;font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:14px}
/* hero */
.hero{position:relative;overflow:hidden;border-bottom:1px solid var(--line);background:radial-gradient(900px 380px at 15% 0%,#1d1712,transparent),radial-gradient(700px 400px at 90% 30%,#2a1212,transparent),var(--ink)}
#embers{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:.8}
.hero-glow{position:absolute;top:0;left:0;width:520px;height:520px;margin:-260px 0 0 -260px;border-radius:50%;background:radial-gradient(circle,rgba(255,176,46,.08),transparent 70%);pointer-events:none;z-index:1}
.hero-inner{position:relative;z-index:2;max-width:none;margin:0;padding:72px 5vw 30px 12vw;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.08fr);gap:120px}
.kicker{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:12.5px;color:var(--fade);letter-spacing:.5px;margin:0}
.hero h1{font-family:"Special Elite","Courier New",monospace;font-size:clamp(64px,11vw,128px);line-height:.9;margin:10px 0 0;letter-spacing:4px;color:#ece2cc;text-shadow:3px 3px 0 #000;animation:bleed 1.8s ease both}
@keyframes bleed{from{opacity:0;filter:blur(10px);transform:translateY(12px)}to{opacity:1;filter:blur(0);transform:none}}
.stamp-btn.dl{user-select:none;-webkit-user-select:none}
#progress{position:absolute;top:0;left:0;height:3px;width:0;background:var(--blood);z-index:60}
.hero-left>*{animation:rise .8s ease both}
.hero-left>*:nth-child(1){animation-delay:.02s}
.hero-left>*:nth-child(3){animation-delay:.14s}
.hero-left>*:nth-child(4){animation-delay:.22s}
.hero-left>*:nth-child(5){animation-delay:.3s}
.hero-left>*:nth-child(6){animation-delay:.38s}
.hero-left>*:nth-child(7){animation-delay:.44s}
@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.stamp-btn{position:relative;overflow:hidden}
.stamp-btn::after{content:"";position:absolute;top:0;left:-70%;width:45%;height:100%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.28),transparent);transform:skewX(-20deg);transition:left .55s ease}
.stamp-btn:hover::after{left:130%}
.rec{animation:recpulse 2.4s ease-in-out infinite}
@keyframes recpulse{0%,100%{opacity:1}50%{opacity:.3}}
.hand-note,.hand{font-family:"Caveat",cursive;font-size:22px;color:#d8c79b}
.lede{font-size:22px;max-width:34ch}
.lede2{font-size:19px;max-width:38ch;color:#cfc3a5;border-left:2px solid var(--blood);padding-left:14px}
.cta-row{display:flex;flex-wrap:wrap;gap:16px;align-items:center;margin:20px 0}
.small-meta{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:12.5px;color:var(--fade)}
.hero-right{display:flex;flex-direction:column;gap:14px;min-width:0}
.terminal-card{background:#050403;border:1px solid #3a332a;border-radius:10px;overflow:hidden;box-shadow:0 0 0 4px #000,0 18px 50px #000000aa}
.term-head{display:flex;justify-content:space-between;gap:10px;padding:9px 14px;background:#14110d;border-bottom:1px solid var(--line);font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:12px;color:#b9ad93}
.rec{color:#c0392b}
.term-body{padding:16px 18px;font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:14.5px;line-height:1.8;color:#e5d9b8}
.red{color:#ff8f8f}.grn{color:#ffd98a}
#miniForm{display:flex;gap:8px;padding:10px;border-top:1px dashed #3a332a;font-family:"IBM Plex Mono",ui-monospace,monospace;color:#e5d9b8}
#miniForm input{flex:1;min-width:0;background:#0a0806;border:1px solid #3a332a;border-radius:6px;color:#ffe9ad;padding:9px 12px;font-family:inherit;outline:none}
#miniForm button{background:#ece2cc;border:0;border-radius:6px;font-family:"Special Elite","Courier New",monospace;padding:8px 16px;cursor:pointer}
.term-scene{margin:0 10px 12px;padding:10px;border:1px dashed #3a332a;border-radius:8px;font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:13px;text-align:center;color:#d8c79b}
.cover-fig{margin:0;min-width:0}
.hero-img{width:100%;height:340px;object-fit:cover;display:block;border-radius:4px;border:1px solid #3a332a;filter:sepia(.25) contrast(1.02)}
.cover-fig figcaption{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:12px;color:var(--fade);padding-top:6px}
.polaroid figcaption{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:12px;color:#4a4234;padding-top:6px}
.polaroid figcaption .hand{color:#6b4d1f}
.ticker{position:relative;z-index:2;border-top:1px solid var(--line);overflow:hidden;white-space:nowrap;font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:12.5px;color:#b9ad93;padding:9px 0;background:#080706}
.ticker span{display:inline-block;will-change:transform}
/* sections */
.section{max-width:1120px;margin:0 auto;padding:58px 22px}
.section.alt{background:linear-gradient(180deg,transparent,rgba(20,16,12,.6),transparent);max-width:none}
.section.alt>*{max-width:1120px;margin-left:auto;margin-right:auto}
.section.paper{background:#100d0a;color:#e9e0cb;border-top:4px double #000;border-bottom:4px double #000;max-width:none}
.section.paper>*{max-width:1120px;margin-left:auto;margin-right:auto}
.page-no{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:12.5px;color:#c98f8f;margin:0}
h2{font-family:"Special Elite","Courier New",monospace;font-weight:400;font-size:clamp(26px,4vw,40px);margin:8px 0 18px;letter-spacing:.5px;line-height:1.15}
.sub{color:inherit;opacity:.75;margin-top:-8px}
.cols{display:grid;grid-template-columns:minmax(0,11fr) minmax(0,9fr);gap:28px;align-items:start}
.cols>div{min-width:0}
.dropcap::first-letter{font-family:"Special Elite","Courier New",monospace;font-size:3.2em;float:left;line-height:.85;padding:4px 8px 0 0;color:#c98f8f}
.plain{list-style:none;padding:0;display:grid;gap:8px;font-size:17px}
.redact{background:#000;color:#000;border:1px solid #3a332a;border-radius:2px;padding:0 6px;white-space:nowrap}
.tagline{margin-top:22px;font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:13px;border-top:1px solid #ffffff22;padding-top:12px}
.tally{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:baseline;margin-top:20px;padding:12px 16px;border:1px dashed #ffffff33;border-radius:4px;font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:13px}
.tally span{color:#c98f8f}
.tally b{font-weight:600}
/* cards */
.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.note-card{background:#14110d;border:1px solid #3a332a;border-radius:4px;padding:20px;box-shadow:4px 4px 0 #000;min-width:0;transition:transform .25s}
.note-card h3{font-family:"Special Elite","Courier New",monospace;font-weight:400;margin:4px 0 8px;font-size:20px}
.note-card cite{display:block;margin-top:12px;font-family:"IBM Plex Mono",ui-monospace,monospace;font-style:normal;font-size:12.5px;opacity:.7}
.cols-3-small{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:18px;font-size:16.5px}
.cols-3-small p{border-top:1px solid #ffffff22;padding-top:10px;margin:0;min-width:0}
/* method steps */
.steps{position:relative}
.steps .note-card{position:relative;background:transparent}
.steps .n-no{font-size:34px;color:#5a4f3d}
.n-no{font-family:"IBM Plex Mono",ui-monospace,monospace;color:#8a1c1c;margin:0}
/* terminal */
.terminal-big{background:#050403;border:1px solid #3a332a;border-radius:10px;overflow:hidden;box-shadow:8px 8px 0 #00000088}
.game-log{height:330px;overflow-y:auto;padding:18px;font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:14px;line-height:1.8;color:#e8d9ae;background:#050403}
.game-log .ok{color:#ffd98a}.game-log .warn{color:#ff9d6b}.game-log .bad{color:#ff8080}.game-log .echo{opacity:.8}
#gameForm{display:flex;gap:10px;padding:12px;border-top:1px solid #3a332a;background:#0a0806}
.prompt{font-family:"IBM Plex Mono",ui-monospace,monospace;color:#ffd98a;align-self:center;white-space:nowrap}
.prompt::after{content:"▌";margin-left:6px;animation:blink 1.1s steps(2) infinite}
@keyframes blink{50%{opacity:0}}
#gameInput{flex:1;min-width:0;background:#000;border:1px solid #3a332a;border-radius:6px;color:#ffe9ad;padding:11px;font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:14px;outline:none}
#gameForm button{background:#8a1c1c;color:#fff;border:0;border-radius:6px;padding:8px 18px;cursor:pointer;font-size:16px}
.hint-row{display:flex;flex-wrap:wrap;gap:8px;padding:12px;border-top:1px dashed #3a332a;background:#080706}
.hint-row button{background:transparent;color:#d8c79b;border:1px solid #3a332a;border-radius:999px;padding:6px 13px;font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:12px;cursor:pointer}
.hint-row button:hover{border-color:#ece2cc;color:#fff}
.hand.center{text-align:center}
/* checklist + workbench */
.mt{margin-top:30px}
.check{list-style:none;padding:0;margin:6px 0 0;display:grid;gap:10px}
.check label{display:flex;gap:12px;align-items:baseline;background:#14110d;border:1px solid #3a332a;border-radius:4px;padding:12px 16px;cursor:pointer;font-size:18px;transition:border-color .2s}
.check label:hover{border-color:#8d8471}
.check input{appearance:none;flex:none;width:18px;height:18px;border:2px solid #5a4f3d;border-radius:3px;background:transparent;cursor:pointer;position:relative;top:3px;margin:0}
.check input:checked{background:var(--blood);border-color:var(--blood)}
.check input:checked+span{color:var(--fade);text-decoration:line-through}
#checkCount{color:#c98f8f}
.bench{list-style:none;padding:0;margin:6px 0 0;display:grid;gap:10px;font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:14px}
.bench li{border-left:2px solid var(--blood);padding:2px 0 2px 12px;color:#cfc3a5}
.bench b{color:#ffd98a}
/* watch */
.video-row{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);gap:26px;align-items:center;margin:26px 0}
.video-row.flip{grid-template-columns:minmax(0,.75fr) minmax(0,1.25fr)}
.video-row.flip>.video-note{order:-1}
.video-frame{background:#050403;border:1px solid #3a332a;border-radius:10px;overflow:hidden;box-shadow:8px 8px 0 #00000088}
.video-frame iframe{display:block;width:100%;aspect-ratio:16/9;border:0}
.video-note .tape{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:12px;color:#c98f8f;letter-spacing:1px;margin:0}
.video-note h3{font-family:"Special Elite","Courier New",monospace;font-weight:400;font-size:25px;margin:6px 0 8px}
.video-note p{color:#cfc3a5}
/* bands */
.band{position:relative;overflow:hidden;min-height:44vh;display:flex;align-items:flex-end;border-top:1px solid #000;border-bottom:1px solid #000}
.band::before{content:"";position:absolute;inset:0;background-size:cover;background-position:center;filter:brightness(.48) sepia(.25);animation:bandzoom 26s ease-in-out infinite alternate}
.band.b1::before{background-image:url("assets/ss-9.jpg")}
.band.b2::before{background-image:url("assets/ss-2.jpg")}
.band.b3::before{background-image:url("assets/ss-5.jpg")}
.band::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#0d0b09 0%,transparent 28%,transparent 68%,#0d0b09 100%)}
@keyframes bandzoom{from{transform:scale(1)}to{transform:scale(1.07)}}
.band p{position:relative;z-index:1;width:100%;max-width:1120px;margin:0 auto;padding:0 22px 36px;font-family:"Caveat",cursive;font-size:clamp(24px,4vw,38px);color:#e8dcc0;text-shadow:0 2px 14px #000}
.band .pg{color:#c98f8f;font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:.6em;vertical-align:middle;margin-right:10px}
.gallery figure canvas,.polaroid canvas,.cover-fig canvas{width:100%;display:block;filter:sepia(.22) contrast(1.03)}
.gallery figure canvas{height:190px}
.polaroid canvas{height:340px}
.cover-fig canvas{height:340px}
.gallery figure,.polaroid,.cover-fig{-webkit-touch-callout:none}
.gallery figure img,.polaroid img,.cover-fig img{user-select:none;-webkit-user-select:none}
/* gallery prints */
.gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-top:14px}
.gallery figure{margin:0;min-width:0;background:#e9dfc6;border:1px solid #1c1712;padding:10px 10px 8px;box-shadow:5px 5px 0 #000;position:relative}
.gallery figure:nth-child(odd){transform:rotate(-1.2deg)}
.gallery figure:nth-child(even){transform:rotate(1deg)}
.gallery figure::before{content:"";position:absolute;top:-11px;left:50%;transform:translateX(-50%) rotate(-3deg);width:74px;height:20px;background:rgba(201,185,138,.75);border:1px solid #00000022}
.note-card:hover{transform:translateY(-3px)}
.gallery figure:hover{transform:rotate(0deg) translateY(-4px)}
.polaroid:hover{transform:rotate(0deg) translateY(-3px)}
.gallery img{width:100%;height:190px;object-fit:cover;display:block;filter:sepia(.22) contrast(1.03);transition:filter .35s,transform .35s}
.gallery figure:hover img{filter:sepia(0) contrast(1.05);transform:scale(1.025)}
.gallery figcaption{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:12px;color:#4a4234;padding:8px 2px 2px}
/* story photo */
.polaroid{margin:0;min-width:0;background:#e9dfc6;border:1px solid #1c1712;padding:10px 10px 8px;box-shadow:5px 5px 0 #000;position:relative;transform:rotate(1deg)}
.polaroid::before{content:"";position:absolute;top:-11px;left:50%;transform:translateX(-50%) rotate(-3deg);width:74px;height:20px;background:rgba(201,185,138,.55);border:1px solid #00000022}
.polaroid img{width:100%;height:340px;object-fit:cover;display:block;filter:sepia(.22) contrast(1.03)}
/* lexicon */
.lex{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 30px}
.lex .note-card{background:transparent;border:0;border-bottom:1px dashed #ffffff22;border-radius:0;box-shadow:none;padding:10px 0 12px}
.lex .n-no{font-size:15px;color:#d8c79b}
/* reviews */
.quotes .note-card{background:transparent;border:0;box-shadow:none;margin:0;padding:14px 6px 8px 30px;position:relative;font-size:20px;font-style:italic}
.quotes .note-card::before{content:"\201C";font-family:"EB Garamond",Georgia,serif;font-size:64px;line-height:1;color:#3a332a;position:absolute;top:-4px;left:0}
/* faq */
#asked{counter-reset:q}
details.faq{border:1px solid #3a332a;border-radius:4px;margin:10px 0;background:#14110d;overflow:hidden}
details.faq summary{cursor:pointer;list-style:none;font-family:"Special Elite","Courier New",monospace;font-size:18px;padding:14px 18px;display:flex;gap:12px;align-items:baseline}
details.faq summary::-webkit-details-marker{display:none}
details.faq summary::before{content:"+";color:#8a1c1c;font-family:"IBM Plex Mono",ui-monospace,monospace;flex:none}
details.faq[open] summary::before{content:"–"}
details.faq summary::after{content:"Q" counter(q,decimal-leading-zero);margin-left:auto;font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:12px;color:var(--fade);flex:none}
details.faq{counter-increment:q}
details.faq p{margin:0;padding:0 18px 16px 42px;color:#cfc3a5;max-width:70ch}
/* exit */
.exit{text-align:left}
.links{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:14px}
.links a{text-underline-offset:3px}
footer{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:18px 22px;font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:12.5px;color:var(--fade);border-top:1px solid var(--line)}
footer a{color:#b9ad93}
.snd-toggle{background:none;border:1px solid var(--line);color:var(--fade);border-radius:6px;font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:12px;padding:3px 12px;cursor:pointer}
.snd-toggle:hover{color:#ece2cc;border-color:#8d8471}
/* reveal */
.js .rv{opacity:0}
.js .rv.in{opacity:1;transition:opacity .35s ease}
/* lightbox */
#lightbox{position:fixed;inset:0;z-index:99;display:none;align-items:center;justify-content:center;background:rgba(5,4,3,.93);padding:24px}
#lightbox.open{display:flex}
#lightbox figure{margin:0;max-width:min(1000px,94vw);background:#e9dfc6;border:1px solid #1c1712;padding:12px}
#lightbox img{width:100%;max-height:74vh;object-fit:contain;display:block;background:#000}
#lightbox figcaption{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:13px;color:#4a4234;padding:10px 4px 2px;display:flex;justify-content:space-between;gap:12px}
#lightbox .x{font-family:"Special Elite","Courier New",monospace;color:#8a1c1c;cursor:pointer;white-space:nowrap}
@media (prefers-reduced-motion:reduce){.js .rv{opacity:1}}
@media(max-width:900px){
.hero-inner,.cols,.grid-3,.cols-3-small,.lex,.gallery,.video-row{grid-template-columns:1fr}
.video-row.flip{grid-template-columns:1fr}
.video-row.flip>.video-note{order:0}
.nav nav{display:none}
#menuBtn{display:block;margin-left:auto}
.game-log{height:270px}.hero h1{font-size:72px}
.polaroid img,.polaroid canvas,.hero-img,.cover-fig canvas{height:240px}
#gameInput,#miniForm input{font-size:16px}
}
