:root {
  --black: #050505;
  --ink: #0a0a0a;
  --paper: #f1f1ee;
  --silver: #babdc1;
  --muted: #7b7d81;
  --line: rgba(255, 255, 255, .22);
  --soft-line: rgba(255, 255, 255, .1);
  --ease: cubic-bezier(.2, .8, .2, 1);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; background: var(--black); }
body {
  margin: 0;
  overflow-x: hidden;
  background: var(--black);
  color: var(--paper);
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  cursor: crosshair;
}
body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -2;
  background: radial-gradient(circle at 50% 20%, #242424 0, #080808 36%, #020202 78%);
}
body::after {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 90;
  background: linear-gradient(rgba(255,255,255,.018) 50%, rgba(0,0,0,.025) 50%);
  background-size: 100% 4px;
  mix-blend-mode: screen;
  opacity: .75;
}
a { color: inherit; text-decoration: none; }
button, input { font: inherit; }
button { color: inherit; }
button:focus-visible, a:focus-visible, input:focus-visible { outline: 2px solid #fff; outline-offset: 4px; }
img { display: block; max-width: 100%; }
::selection { color: #000; background: #fff; }

.boot {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: grid;
  place-content: center;
  justify-items: center;
  gap: 16px;
  background: #000;
  transition: opacity .7s var(--ease), visibility .7s;
}
.boot.done { opacity: 0; visibility: hidden; }
.boot-mark { font: 900 clamp(5rem, 12vw, 10rem)/1 Arial, sans-serif; letter-spacing: -.12em; animation: boot-glitch .22s steps(2) infinite; }
.boot p { margin: 0; font: 700 .68rem/1 monospace; letter-spacing: .28em; text-transform: uppercase; color: var(--silver); }
.boot-line { width: min(260px, 65vw); height: 2px; background: #222; overflow: hidden; }
.boot-line i { display: block; width: 0; height: 100%; background: #fff; animation: load 1.4s var(--ease) forwards; }
@keyframes load { to { width: 100%; } }
@keyframes boot-glitch { 0%,100%{transform:translate(0)} 45%{transform:translate(2px,-1px)} 50%{transform:translate(-2px,1px)} }

.noise {
  position: fixed;
  inset: -50%;
  pointer-events: none;
  z-index: 89;
  opacity: .045;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.95' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.8'/%3E%3C/svg%3E");
  animation: grain .2s steps(2) infinite;
}
@keyframes grain { 0%{transform:translate(0,0)} 25%{transform:translate(2%,-1%)} 50%{transform:translate(-1%,2%)} 75%{transform:translate(1%,1%)} 100%{transform:translate(-2%,-2%)} }
.flash { position: fixed; inset: 0; z-index: 120; pointer-events: none; background: #fff; opacity: 0; }
.flash.fire { animation: flash .4s ease-out; }
@keyframes flash { 0%{opacity:.9} 100%{opacity:0} }
.cursor {
  position: fixed;
  width: 34px;
  height: 34px;
  border: 1px solid rgba(255,255,255,.55);
  border-radius: 50%;
  pointer-events: none;
  z-index: 150;
  transform: translate(-50%, -50%);
  transition: width .2s, height .2s, background .2s, border .2s;
  mix-blend-mode: difference;
}
.cursor span { position:absolute; left:50%; top:50%; width:3px; height:3px; border-radius:50%; background:#fff; transform:translate(-50%,-50%); }
.cursor.hover { width: 62px; height: 62px; background: #fff; border-color: #fff; }

.site-header {
  position: fixed;
  z-index: 70;
  left: 18px;
  right: 18px;
  top: 14px;
  min-height: 62px;
  display: grid;
  grid-template-columns: auto auto 1fr auto;
  align-items: center;
  gap: 28px;
  padding: 8px 9px 8px 8px;
  border: 1px solid rgba(255,255,255,.22);
  background: rgba(4,4,4,.72);
  backdrop-filter: blur(14px);
  transition: transform .45s var(--ease), background .3s;
}
.site-header.hidden { transform: translateY(-110%); }
.brand { display: grid; grid-template-columns: 42px auto; grid-template-rows: 1fr 1fr; column-gap: 10px; align-items: center; min-width: 165px; }
.brand img { width: 42px; height: 42px; object-fit: cover; grid-row: 1 / 3; border-radius: 50%; filter: grayscale(1) contrast(1.2); }
.brand span { align-self: end; font-size: .78rem; font-weight: 900; letter-spacing: .12em; }
.brand small { align-self: start; font: 600 .62rem/1.3 monospace; color: var(--muted); letter-spacing: .1em; }
.status { display: flex; align-items: center; gap: 9px; font: 600 .65rem/1 monospace; letter-spacing: .1em; color: var(--silver); white-space: nowrap; }
.status i { width: 7px; height: 7px; background: #fff; border-radius: 50%; box-shadow: 0 0 12px #fff; animation: blink 1.4s steps(1) infinite; }
@keyframes blink { 50%{opacity:.2} }
.site-header nav { display:flex; justify-content:center; gap:26px; }
.nav-jump, .back-top { border:0; background:transparent; padding:9px 0; font:700 .64rem/1 monospace; letter-spacing:.12em; cursor:pointer; color:var(--silver); position:relative; }
.nav-jump::after { content:""; position:absolute; left:0; right:100%; bottom:3px; height:1px; background:#fff; transition:right .3s; }
.nav-jump:hover::after { right:0; }
.header-actions { display:flex; align-items:center; gap:8px; }
.sound-toggle { border: 1px solid var(--line); background:#101010; height:40px; padding:0 13px; font:700 .62rem/1 monospace; letter-spacing:.1em; cursor:pointer; }
.sound-toggle span { display:inline-block; width:8px; height:8px; margin-right:8px; border:1px solid #fff; border-radius:50%; }
.sound-toggle[aria-pressed="true"] span { background:#fff; box-shadow:0 0 10px #fff; }
.icon-link, .buy-link { display:grid; place-items:center; height:40px; border:1px solid var(--line); font:800 .72rem/1 monospace; }
.icon-link { width:40px; }
.buy-link { padding:0 20px; color:#000; background:#fff; border-color:#fff; transition:color .25s, background .25s; }
.buy-link:hover { color:#fff; background:transparent; }

.hero {
  min-height: 100svh;
  position: relative;
  overflow: hidden;
  display: grid;
  grid-template-columns: minmax(0, .9fr) minmax(420px, 1.1fr);
  align-items: center;
  padding: 118px clamp(28px, 6vw, 96px) 48px;
  isolation: isolate;
}
.hero::before {
  content:""; position:absolute; inset:0; z-index:-3;
  background: radial-gradient(circle at 75% 50%, rgba(255,255,255,.11), transparent 26%), linear-gradient(110deg, #030303 30%, transparent 66%);
}
.hero-backdrop {
  position:absolute; inset:-4%; z-index:-2;
  background-image: linear-gradient(to right, rgba(0,0,0,.94) 0%, rgba(0,0,0,.38) 52%, rgba(0,0,0,.7) 100%), url("assets/night-collage.png");
  background-size: cover;
  background-position:center;
  opacity:.6;
  filter:contrast(1.15);
  transform:scale(1.05);
}
.hero::after { content:""; position:absolute; inset:auto 0 0; height:22%; z-index:-1; background:linear-gradient(transparent,#050505); }
.hero-copy { position:relative; z-index:4; max-width:720px; }
.eyebrow { font:700 .7rem/1.4 monospace; color:var(--silver); letter-spacing:.2em; text-transform:uppercase; }
.hero h1, .origin h2, .route h2, .game h2, .terminal-intro h2, .finale h2 {
  margin: 18px 0;
  font-size: clamp(5.4rem, 10.5vw, 11rem);
  line-height: .72;
  letter-spacing: -.085em;
  font-weight: 950;
  text-transform: uppercase;
}
.hero h1 em, h2 em { color:transparent; -webkit-text-stroke:1.5px var(--paper); font-style:normal; }
.hero-line { margin: 34px 0 0; max-width:540px; font:400 clamp(1.3rem,2vw,2rem)/1.12 Georgia,serif; color:#d2d2cf; }
.hero-cta { display:flex; align-items:center; gap:14px; margin-top:40px; }
.enter-btn, .ghost-btn { min-height:58px; border:1px solid #fff; display:flex; align-items:center; justify-content:space-between; gap:30px; padding:0 20px; text-transform:uppercase; cursor:pointer; }
.enter-btn { width:min(330px,100%); background:#fff; color:#000; }
.enter-btn span,.ghost-btn { font:800 .68rem/1 monospace; letter-spacing:.12em; }
.enter-btn b { font:800 .72rem/1 monospace; }
.ghost-btn { background:rgba(0,0,0,.34); color:#fff; }

.character-wrap {
  position: relative;
  align-self: end;
  justify-self: center;
  z-index:3;
  width:min(49vw, 735px);
  transform-style:preserve-3d;
  transition:transform .18s ease-out;
}
.character { width:100%; position:relative; z-index:2; filter:drop-shadow(0 20px 30px rgba(0,0,0,.75)); transform:translateZ(26px); }
.orbit { position:absolute; border:1px solid rgba(255,255,255,.18); border-radius:50%; pointer-events:none; }
.orbit-a { width:87%; aspect-ratio:1; left:7%; top:7%; animation:spin 24s linear infinite; }
.orbit-b { width:69%; aspect-ratio:1; left:16%; top:16%; border-style:dashed; animation:spin 15s linear reverse infinite; }
.orbit-a span { position:absolute; padding:5px 8px; background:#080808; font:700 .56rem/1 monospace; letter-spacing:.16em; color:#aaa; }
.orbit-a span:first-child { top:6%; left:9%; }
.orbit-a span:last-child { bottom:12%; right:-2%; }
@keyframes spin { to{transform:rotate(360deg)} }
.face-hotspot { position:absolute; z-index:5; top:23%; left:39%; width:24%; aspect-ratio:1; border:0; border-radius:50%; background:transparent; cursor:pointer; }
.face-hotspot span { position:absolute; left:100%; top:30%; width:92px; padding-left:25px; text-align:left; font:700 .58rem/1.35 monospace; color:#bbb; opacity:.75; }
.face-hotspot span::before { content:""; position:absolute; left:0; top:50%; width:18px; border-top:1px solid #aaa; }
.face-hotspot:hover + .signal-readout { color:#fff; border-color:#fff; box-shadow:0 0 30px rgba(255,255,255,.08); }
.signal-readout { position:absolute; z-index:6; right:4%; bottom:17%; padding:9px 12px; border:1px solid var(--line); background:rgba(0,0,0,.7); font:700 .58rem/1 monospace; letter-spacing:.12em; color:#898989; transition:.3s; }
.character-wrap.awake .character { animation:awake .55s steps(2); }
@keyframes awake { 0%{filter:brightness(4) contrast(2);transform:translate(5px,-3px)} 25%{transform:translate(-7px,2px)} 50%{filter:invert(1);transform:translate(3px)} 100%{transform:none} }
.hero-side-note { position:absolute; left:20px; bottom:64px; writing-mode:vertical-rl; transform:rotate(180deg); font:700 .56rem/1 monospace; color:#777; letter-spacing:.2em; }
.collect-meter { position:absolute; z-index:5; right:28px; bottom:26px; display:grid; grid-template-columns:auto 90px auto; gap:10px; align-items:center; font:700 .58rem/1 monospace; color:#aaa; letter-spacing:.12em; }
.collect-meter div { height:3px; background:#333; }
.collect-meter div i { display:block; width:0; height:100%; background:#fff; transition:width .4s; }
.collect-meter b { color:#fff; }.collect-meter em{font-style:normal}
.fragment { position:absolute; z-index:8; width:32px; height:32px; border:1px solid rgba(255,255,255,.45); border-radius:50%; background:rgba(0,0,0,.5); backdrop-filter:blur(4px); font:700 .55rem/1 monospace; cursor:pointer; animation:float 4s ease-in-out infinite; box-shadow:0 0 25px rgba(255,255,255,.06); }
.fragment.collected { pointer-events:none; animation:collect .45s forwards; }
.f1{left:34%;top:24%}.f2{right:8%;top:31%;animation-delay:-1s}.f3{left:6%;bottom:22%;animation-delay:-2s}.f4{right:34%;bottom:13%;animation-delay:-3s}.f5{right:23%;top:17%;animation-delay:-.5s}
@keyframes float { 50%{transform:translateY(-12px) rotate(8deg)} }
@keyframes collect { to{opacity:0;transform:scale(2.6)} }

.ticker { overflow:hidden; border-block:1px solid var(--line); background:#eee; color:#070707; padding:13px 0; transform:rotate(-1deg) scale(1.02); position:relative; z-index:10; }
.ticker div { display:flex; width:max-content; align-items:center; gap:27px; animation:ticker 28s linear infinite; }
.ticker span { font:950 1rem/1 Arial,sans-serif; letter-spacing:.06em; }
.ticker i { font-style:normal; }
@keyframes ticker { to{transform:translateX(-50%)} }

.section-shell { position:relative; padding:130px clamp(22px, 6vw, 92px); }
.section-index { position:absolute; top:75px; right:clamp(22px,6vw,92px); font:700 .6rem/1 monospace; color:#737373; letter-spacing:.16em; }
.origin { min-height:100vh; background:linear-gradient(180deg,#050505,#111 55%,#050505); }
.origin-head { display:grid; grid-template-columns:.55fr 1.45fr; align-items:start; gap:30px; }
.origin-head .eyebrow { margin-top:16px; }
.origin h2, .route h2, .game h2, .terminal-intro h2, .finale h2 { font-size:clamp(3.3rem,7.3vw,8rem); line-height:.84; margin-top:0; }
.memory-machine { display:grid; grid-template-columns:minmax(0,1.5fr) minmax(300px,.5fr); margin-top:80px; border:1px solid var(--line); min-height:580px; background:#080808; box-shadow:0 40px 100px rgba(0,0,0,.5); }
.memory-screen { padding:30px clamp(24px,5vw,75px); display:flex; flex-direction:column; position:relative; overflow:hidden; border-right:1px solid var(--line); background:radial-gradient(circle at 70% 30%,#282828,#080808 55%); touch-action:pan-y; }
.memory-screen::after { content:""; position:absolute; inset:0; pointer-events:none; background:repeating-linear-gradient(90deg,transparent 0 90px,rgba(255,255,255,.025) 91px); }
.screen-label { display:flex; justify-content:space-between; font:700 .58rem/1 monospace; color:#888; letter-spacing:.14em; }
.screen-label b { color:#fff; }
.memory { display:none; align-content:center; flex:1; max-width:780px; animation:memory-in .55s var(--ease); position:relative; z-index:1; }
.memory.active { display:grid; }
@keyframes memory-in { from{opacity:0;transform:translateX(30px) skewX(-2deg)} }
.memory .chapter { margin:0 0 20px; font:700 .66rem/1 monospace; color:#9a9a9a; letter-spacing:.18em; }
.memory h3 { margin:0 0 25px; font:800 clamp(2.1rem,4vw,5rem)/.95 Arial,sans-serif; letter-spacing:-.055em; text-transform:uppercase; }
.memory>p:last-child { margin:0; font:400 clamp(1rem,1.45vw,1.28rem)/1.55 Georgia,serif; color:#bcbcbc; max-width:700px; }
.memory-controls { display:grid; grid-template-columns:52px 1fr 52px; gap:15px; align-items:center; position:relative; z-index:2; }
.memory-prev,.memory-next { width:52px;height:52px;border:1px solid var(--line);background:#0d0d0d;cursor:pointer;font-size:1.15rem; }
.memory-dots { display:flex; gap:8px; }
.memory-dots button { height:3px; border:0; background:#393939; flex:1; cursor:pointer; padding:0; transition:.3s; }
.memory-dots button.active { background:#fff; }
.object-board { display:flex; flex-direction:column; padding:30px; background:#0b0b0b; }
.board-title { margin:0 0 26px; font:700 .62rem/1.3 monospace; letter-spacing:.14em; color:#777; }
.object-tag { border:0; border-top:1px solid var(--soft-line); background:transparent; padding:22px 4px; display:flex; gap:20px; text-align:left; cursor:pointer; font:800 .76rem/1 monospace; letter-spacing:.08em; color:#777; transition:.25s; }
.object-tag:last-of-type { border-bottom:1px solid var(--soft-line); }
.object-tag span { font-family:monospace; color:#555; }
.object-tag:hover,.object-tag.active { color:#fff; padding-left:12px; }
.object-tag.active span { color:#fff; }
.object-note { margin-top:auto; padding:26px 24px; border:1px solid var(--line); background:#111; min-height:150px; }
.object-note strong { font:900 .82rem/1 Arial,sans-serif; letter-spacing:.08em; }
.object-note p { color:#a7a7a7; font:400 .9rem/1.5 Georgia,serif; margin:13px 0 0; }

.interlude { min-height:90vh; padding:30px 0; background:#030303; }
.collage { min-height:calc(90vh - 60px); margin:0 20px; border:1px solid var(--line); display:grid; place-items:center; position:relative; overflow:hidden; background:#000 url("assets/night-collage.png") center/cover no-repeat; }
.collage::before { content:""; position:absolute; inset:0; background:rgba(0,0,0,.22); transition:opacity .4s; }
.collage.scanning::before { opacity:.75; animation:scanveil 1.5s steps(3) infinite; }
@keyframes scanveil { 50%{background:rgba(255,255,255,.09)} }
.collage-copy { text-align:center; position:relative; z-index:2; text-shadow:0 3px 30px #000; }
.collage-copy p { font:700 .65rem/1 monospace; letter-spacing:.25em; color:#c0c0c0; }
.collage-copy h2 { margin:25px auto 35px; font:900 clamp(2.7rem,6vw,6.8rem)/.86 Arial,sans-serif; letter-spacing:-.065em; text-transform:uppercase; }
.scan-btn { padding:18px 28px; border:1px solid #fff; background:rgba(0,0,0,.65); font:800 .7rem/1 monospace; letter-spacing:.13em; cursor:pointer; }
.hotspot { position:absolute; z-index:4; width:34px; height:34px; border:1px solid #fff; background:rgba(0,0,0,.25); border-radius:50%; cursor:pointer; opacity:0; transform:scale(.3); transition:.35s; }
.hotspot::after { content:"+"; position:absolute; inset:0; display:grid; place-items:center; font:400 1rem/1 monospace; }
.collage.scanning .hotspot { opacity:1; transform:scale(1); animation:pulse 1.6s infinite; }
@keyframes pulse { 50%{box-shadow:0 0 0 10px rgba(255,255,255,.12)} }
.h-phone{left:28%;top:46%}.h-stairs{left:56%;top:33%}.h-cross{left:15%;top:23%}.h-clock{right:25%;bottom:22%}
.clue-toast { position:absolute; z-index:5; left:24px; bottom:22px; max-width:400px; padding:13px 16px; border:1px solid var(--line); background:rgba(0,0,0,.82); font:700 .64rem/1.35 monospace; letter-spacing:.12em; color:#aaa; }

.route { min-height:100vh; overflow:hidden; }
.route-head { display:grid; grid-template-columns:.65fr 1.35fr; gap:30px; }
.route-head .eyebrow { max-width:300px; margin-top:16px; }
.route-machine { margin-top:70px; display:grid; grid-template-columns:minmax(480px,1.25fr) minmax(310px,.55fr); min-height:650px; border:1px solid var(--line); background:linear-gradient(125deg,#161616,#050505 65%); }
.route-canvas-wrap { position:relative; min-height:650px; overflow:hidden; border-right:1px solid var(--line); touch-action:none; cursor:grab; }
.route-canvas-wrap:active{cursor:grabbing}
#route-canvas { position:absolute; inset:0; width:100%; height:100%; opacity:.4; }
.route-orbit { position:absolute; left:50%; top:50%; width:min(72%,610px); aspect-ratio:1; transform:translate(-50%,-50%) rotate(0deg); border:1px solid rgba(255,255,255,.14); border-radius:50%; transition:transform .6s var(--ease); }
.route-orbit::before,.route-orbit::after{content:"";position:absolute;border:1px dashed rgba(255,255,255,.1);border-radius:50%;inset:12%}.route-orbit::after{inset:27%}
.route-node { --x:calc(cos(var(--a))*var(--d)); --y:calc(sin(var(--a))*var(--d)); position:absolute; left:calc(50% + var(--x)); top:calc(50% + var(--y)); transform:translate(-50%,-50%) rotate(calc(-1 * var(--orbit-rotation,0deg))); width:106px; aspect-ratio:1; border:1px solid #555; border-radius:50%; background:#0a0a0a; display:grid; place-content:center; gap:7px; padding:12px; text-align:center; cursor:pointer; transition:border .3s,background .3s,box-shadow .3s,transform .6s var(--ease); z-index:3; }
.route-node b { font:900 1rem/1 Arial,sans-serif; }.route-node span{font:700 .52rem/1.25 monospace;color:#777;letter-spacing:.05em}
.route-node:hover,.route-node.active { border-color:#fff;background:#eee;color:#000;box-shadow:0 0 35px rgba(255,255,255,.16)}
.route-node.active span{color:#333}
.route-core { position:absolute; left:50%;top:50%;transform:translate(-50%,-50%) rotate(calc(-1 * var(--orbit-rotation,0deg))); z-index:2; display:grid;justify-items:center;gap:7px;transition:transform .6s var(--ease); }
.route-core span,.route-core small{font:700 .55rem/1 monospace;color:#777;letter-spacing:.15em}.route-core b{font:900 clamp(3rem,5.5vw,5.5rem)/1 Arial,sans-serif;letter-spacing:-.08em}
.route-card { padding:44px 36px; display:flex; flex-direction:column; background:#080808; }
.route-card-top { display:flex; justify-content:space-between; font:700 .6rem/1 monospace; color:#777; letter-spacing:.12em; border-bottom:1px solid var(--soft-line); padding-bottom:22px; }
.route-card-top span{color:#fff}.route-card h3{font:900 clamp(2.2rem,3.8vw,4.6rem)/.9 Arial,sans-serif;letter-spacing:-.055em;text-transform:uppercase;margin:50px 0 24px}.route-card>p{font:400 1.05rem/1.6 Georgia,serif;color:#aaa;margin:0}.route-card dl{margin:auto 0 35px;display:grid;grid-template-columns:1fr 1fr;border-block:1px solid var(--soft-line)}.route-card dl div{padding:20px 0}.route-card dl div+div{border-left:1px solid var(--soft-line);padding-left:22px}.route-card dt{font:700 .55rem/1 monospace;color:#666;letter-spacing:.14em}.route-card dd{margin:8px 0 0;font:800 .8rem/1 monospace}.route-next{height:56px;border:1px solid #fff;background:#fff;color:#000;font:800 .68rem/1 monospace;letter-spacing:.12em;cursor:pointer}

.game { display:grid; grid-template-columns:minmax(280px,.65fr) minmax(480px,1.35fr); gap:80px; align-items:center; background:#eee; color:#060606; min-height:100vh; }
.game .section-index { color:#555; }.game .eyebrow{color:#555}.game h2 em{-webkit-text-stroke-color:#080808}.game-copy>p:not(.eyebrow){font:400 1.08rem/1.55 Georgia,serif;max-width:440px;color:#333}.game-start{margin-top:30px;min-width:220px;height:58px;background:#070707;color:#fff;border:1px solid #070707;font:800 .7rem/1 monospace;letter-spacing:.13em;cursor:pointer}.game-window{height:min(650px,78vh);border:2px solid #090909;background:#090909;color:#fff;display:flex;flex-direction:column;box-shadow:18px 18px 0 #c8c8c8}.game-bar{height:48px;display:flex;justify-content:space-between;align-items:center;padding:0 18px;border-bottom:1px solid #3a3a3a;font:700 .6rem/1 monospace;letter-spacing:.12em}.game-field{position:relative;overflow:hidden;flex:1;background:radial-gradient(circle at 50% 50%,#1f1f1f,#070707)}.game-field::before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px);background-size:40px 40px}.game-idle{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:15px;text-align:center;font:700 .65rem/1.5 monospace;letter-spacing:.12em;color:#777}.game-idle span{font-size:3rem}.notification{position:absolute;z-index:3;width:min(240px,64%);min-height:72px;padding:14px 16px;border:1px solid #777;background:#e8e8e8;color:#090909;text-align:left;cursor:pointer;animation:fall var(--fall,4s) linear forwards;box-shadow:5px 5px 0 rgba(255,255,255,.15)}.notification strong{display:block;font:900 .68rem/1 Arial,sans-serif;letter-spacing:.07em}.notification span{display:block;margin-top:7px;font:500 .62rem/1.3 monospace;color:#555}.notification.killed{animation:kill .25s forwards}@keyframes fall{from{top:-90px;transform:rotate(var(--rot,-2deg))}to{top:calc(100% + 10px);transform:rotate(calc(var(--rot,-2deg) * -1))}}@keyframes kill{to{opacity:0;transform:scale(.2) rotate(18deg);filter:blur(8px)}}.game-message{position:absolute;inset:auto;}.game-field .result{position:absolute;inset:0;z-index:8;display:grid;place-content:center;text-align:center;background:rgba(0,0,0,.9)}.game-field .result b{font:900 clamp(2rem,5vw,5rem)/.9 Arial,sans-serif}.game-field .result span{margin-top:18px;font:700 .65rem/1.5 monospace;color:#888;letter-spacing:.12em}

.terminal-section { min-height:100vh; background:#080808; display:grid; grid-template-columns:.8fr 1.2fr; gap:70px; align-items:center; }
.terminal-intro>p:last-child{font:400 1rem/1.6 Georgia,serif;color:#999;max-width:520px}.quick-command{border:0;border-bottom:1px solid #777;padding:0;background:transparent;font:700 .78rem/1 monospace;cursor:pointer;color:#fff}.terminal-box{min-height:560px;border:1px solid #777;background:#020202;box-shadow:0 0 80px rgba(255,255,255,.055),15px 15px 0 #111;display:flex;flex-direction:column;padding:0 28px 25px}.terminal-top{height:52px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #333;font:700 .58rem/1 monospace;letter-spacing:.12em;color:#777}.terminal-output{flex:1;max-height:410px;overflow:auto;padding:22px 0;font:500 .8rem/1.55 monospace;color:#b7b7b7;scrollbar-color:#555 #111}.terminal-output p{margin:0 0 12px}.terminal-output span{color:#555;margin-right:10px}.terminal-output .system{color:#fff}.terminal-form{height:58px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;border-top:1px solid #333;gap:10px;font:700 .72rem/1 monospace}.terminal-form label{color:#777}.terminal-form input{width:100%;border:0;background:transparent;color:#fff;outline:0}.terminal-form button{border:0;background:transparent;color:#fff;cursor:pointer;font:700 .65rem/1 monospace;letter-spacing:.1em}

.finale { min-height:100svh; position:relative; overflow:hidden; display:grid; place-items:center; padding:120px 30px 70px; text-align:center; isolation:isolate; }
.finale-bg { position:absolute;inset:0;z-index:-3;background:linear-gradient(rgba(0,0,0,.66),rgba(0,0,0,.86)),url("assets/night-collage.png") center/cover no-repeat;filter:contrast(1.25) }
.finale::after{content:"";position:absolute;z-index:-1;inset:0;background:radial-gradient(circle at 50% 45%,transparent,#000 72%)}
.finale-character{position:absolute;z-index:-2;left:50%;bottom:-18%;transform:translateX(-50%);height:108%;width:auto;opacity:.35;filter:blur(1px)}.finale-copy{max-width:1000px}.finale h2{font-size:clamp(5rem,11vw,12rem);margin:25px 0 40px}.finale-copy>p:not(.eyebrow){font:400 clamp(1.1rem,1.6vw,1.45rem)/1.45 Georgia,serif;color:#bcbcbc}.finale-actions{display:grid;grid-template-columns:1fr 1fr;margin:50px auto 0;max-width:760px}.big-buy,.big-x{height:76px;display:flex;align-items:center;justify-content:space-between;padding:0 24px;border:1px solid #fff;font:800 .72rem/1 monospace;letter-spacing:.12em}.big-buy{background:#fff;color:#000}.big-x{background:rgba(0,0,0,.55)}.big-buy b,.big-x b{font-size:1.3rem}
footer{min-height:120px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:20px;padding:24px clamp(22px,5vw,72px);border-top:1px solid var(--line);background:#030303}.footer-brand{font:950 1rem/1 Arial,sans-serif;letter-spacing:.03em}.footer-brand span{font:600 .65rem/1 monospace;color:#777;margin-left:9px}footer p{font:600 .56rem/1.4 monospace;color:#666;letter-spacing:.12em;text-align:center}.back-top{justify-self:end}

.reveal { opacity:0; transform:translateY(28px); transition:opacity .8s var(--ease),transform .8s var(--ease); }.loaded .reveal{opacity:1;transform:none}.loaded .reveal:nth-child(2){transition-delay:.08s}.loaded .reveal:nth-child(3){transition-delay:.16s}.loaded .reveal:nth-child(4){transition-delay:.24s}
.awake-mode .hero-backdrop,.awake-mode .finale-bg{filter:invert(1) contrast(1.35);opacity:.8}.awake-mode .site-header{background:rgba(235,235,235,.85);color:#000}.awake-mode .brand img{filter:invert(1)}.awake-mode .nav-jump,.awake-mode .status{color:#222}.awake-mode .buy-link{background:#000;color:#fff}.awake-mode .sound-toggle,.awake-mode .icon-link{color:#000;background:transparent;border-color:#333}

@media (max-width: 1050px) {
  .site-header { grid-template-columns:auto 1fr auto; }.site-header nav,.status{display:none}
  .hero{grid-template-columns:1fr .9fr;padding-inline:36px}.character-wrap{width:55vw}.hero h1{font-size:clamp(5rem,11vw,8rem)}
  .origin-head,.route-head{grid-template-columns:1fr}.origin-head .eyebrow,.route-head .eyebrow{margin:0}.memory-machine{grid-template-columns:1fr}.memory-screen{border-right:0;border-bottom:1px solid var(--line);min-height:540px}.object-board{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}.board-title,.object-note{grid-column:1/-1}.object-note{margin-top:24px}.object-tag:nth-of-type(2){border-top:1px solid var(--soft-line)}
  .route-machine{grid-template-columns:1fr}.route-canvas-wrap{border-right:0;border-bottom:1px solid var(--line)}.route-card{min-height:500px}.route-card dl{margin-top:50px}
  .game{gap:40px;grid-template-columns:.7fr 1.3fr}.terminal-section{grid-template-columns:1fr}.terminal-intro{max-width:800px}
}

@media (max-width: 760px) {
  .cursor{display:none}body{cursor:auto}
  .site-header{left:8px;right:8px;top:8px;min-height:56px;gap:8px}.brand{min-width:0;grid-template-columns:38px auto}.brand img{width:38px;height:38px}.brand span{font-size:.67rem}.brand small{display:none}.sound-toggle{display:none}.icon-link{height:38px;width:38px}.buy-link{height:38px;padding:0 14px}
  .hero{min-height:980px;display:block;padding:112px 20px 50px}.hero h1{font-size:clamp(5rem,24vw,8rem);margin-top:26px}.hero-line{font-size:1.35rem}.hero-cta{display:grid;width:100%}.enter-btn,.ghost-btn{width:100%}.ghost-btn{justify-content:center}.character-wrap{position:absolute;width:112vw;right:-30vw;bottom:-4%;opacity:.73}.hero-copy{z-index:7}.hero-side-note{display:none}.collect-meter{left:20px;right:auto;bottom:18px}.fragment{z-index:9}.f1{left:12%;top:43%}.f2{right:7%;top:40%}.f3{left:8%;bottom:22%}.f4{right:36%;bottom:11%}.f5{right:20%;top:20%}
  .section-shell{padding:100px 18px}.section-index{top:52px;right:18px}.origin h2,.route h2,.game h2,.terminal-intro h2,.finale h2{font-size:clamp(3.3rem,15vw,6rem)}
  .memory-machine{margin-top:48px}.memory-screen{padding:24px 20px;min-height:570px}.memory h3{font-size:2.5rem}.screen-label span:last-child{display:none}.object-board{display:block;padding:22px}.object-note{margin-top:25px}.object-tag{width:100%}
  .interlude{min-height:720px}.collage{min-height:680px;margin:0 8px;background-position:42% center}.collage-copy{padding:20px}.collage-copy h2{font-size:2.8rem}.h-phone{left:20%}.h-stairs{left:54%}.h-cross{left:18%}.h-clock{right:18%}.clue-toast{left:12px;right:12px;bottom:12px}
  .route-machine{margin-top:42px;min-height:0}.route-canvas-wrap{min-height:520px}.route-orbit{width:390px}.route-node{width:84px}.route-node span{font-size:.45rem}.route-core b{font-size:3rem}.route-card{padding:34px 24px;min-height:510px}
  .game{display:block;min-height:0}.game-copy{margin-bottom:55px}.game-window{height:610px;box-shadow:9px 9px 0 #c8c8c8}.game-start{width:100%}
  .terminal-section{display:block}.terminal-intro{margin-bottom:55px}.terminal-box{min-height:560px;padding-inline:16px}.terminal-top span:last-child{display:none}.terminal-form{grid-template-columns:1fr auto}.terminal-form label{grid-column:1/-1;align-self:end}.terminal-form input{align-self:start}
  .finale{min-height:900px;padding-inline:18px}.finale h2{font-size:clamp(4.5rem,22vw,8rem)}.finale-actions{grid-template-columns:1fr}.big-buy,.big-x{height:68px}.finale-character{height:80%;bottom:-2%;opacity:.3}
  footer{grid-template-columns:1fr auto}.footer-brand{align-self:end}footer p{display:none}.back-top{align-self:end}
}

@media (prefers-reduced-motion: reduce) {
  *,*::before,*::after{scroll-behavior:auto!important;animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}.cursor{display:none}
}
