/* ═══════════════════════════════════════════════════════
   AGENT 404 — Room 01: WAKE
   ═══════════════════════════════════════════════════════ */

:root{
  /* palette */
  --deep:#050608;
  --bg:#090B0F;
  --graphite:#11141A;
  --panel:#171B22;
  --txt:#E8EBEF;
  --txt2:#8A929D;
  --red:#D94444;
  --amber:#D9A441;
  --cyan:#63C7D8;

  /* room light state (JS swaps these) */
  --em:217,68,68;          /* emergency light rgb */
  --em-i:1;                /* emergency intensity */
  --lit:0;                 /* room reveal 0..1 (class driven) */

  --sans:'Space Grotesk',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --mono:'IBM Plex Mono',ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;

  --e-out:cubic-bezier(.16,1,.3,1);
  --e-io:cubic-bezier(.65,0,.35,1);
  --e-soft:cubic-bezier(.22,.61,.36,1);
}

*,*::before,*::after{box-sizing:border-box}
html,body{height:100%;margin:0}
body{
  background:var(--deep);
  color:var(--txt);
  font-family:var(--sans);
  font-size:16px;
  overflow:hidden;
  overscroll-behavior:none;
  -webkit-font-smoothing:antialiased;
  -webkit-tap-highlight-color:transparent;
  touch-action:manipulation;
}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
::selection{background:rgba(99,199,216,.25)}

/* ─────────── generic screens ─────────── */
.screen{
  position:fixed;inset:0;z-index:30;
  display:grid;place-items:center;
  background:var(--deep);
  opacity:0;visibility:hidden;
  transition:opacity 1s var(--e-soft),visibility 1s,filter 1s var(--e-soft),transform 1.4s var(--e-out);
}
.screen.is-active{opacity:1;visibility:visible}
.screen.is-out{opacity:0;visibility:hidden;filter:blur(14px);transform:scale(1.04)}

/* ─────────── letterbox bars ─────────── */
.bar{position:fixed;left:0;right:0;height:5.2vh;background:var(--deep);z-index:65;pointer-events:none;
     transition:height 1.6s var(--e-out)}
.bar--t{top:0}
.bar--b{bottom:0}
body.is-room .bar{height:0}
body.is-end .bar{height:5.2vh}

/* ═══════════════════════════════════════════════════════
   BOOT
   ═══════════════════════════════════════════════════════ */
.boot{place-items:center;padding:8vh 6vw}
.boot__inner{width:100%;max-width:min(74ch,92vw)}
.boot__log{
  margin:0;font-family:var(--mono);font-size:clamp(10px,1.55vw,13.5px);
  line-height:1.85;letter-spacing:.02em;color:var(--txt2);
  white-space:pre-wrap;word-break:break-word;
  min-height:20em;
}
.boot__log b{color:var(--txt);font-weight:400}
.boot__log .ok{color:var(--txt2)}
.boot__log .am{color:var(--amber)}
.boot__log .rd{color:var(--red)}
.boot__log .cy{color:var(--cyan)}
.boot__log .dim{color:#4b525c}
.boot__log .car{
  display:inline-block;width:.55em;height:1.05em;vertical-align:-.18em;
  background:var(--amber);animation:blink 1.05s steps(1,end) infinite;
}
@keyframes blink{0%,49%{opacity:1}50%,100%{opacity:0}}
.boot__log.is-glitch{animation:gskew .3s steps(3,end) 1}
.boot__bar{margin-top:2.4em;height:1px;background:rgba(232,235,239,.09);overflow:hidden}
.boot__bar i{display:block;height:100%;width:0;background:var(--amber);
  box-shadow:0 0 8px rgba(217,164,65,.7);transition:width .45s linear}

.skip{
  position:fixed;right:max(4vw,20px);bottom:max(4vh,20px);z-index:34;
  font-family:var(--mono);font-size:10px;letter-spacing:.28em;color:#4b525c;
  border:1px solid rgba(232,235,239,.1);padding:.6em 1.1em;
  transition:color .3s,border-color .3s,opacity .8s;
}
.skip:hover{color:var(--txt2);border-color:rgba(232,235,239,.24)}

/* ═══════════════════════════════════════════════════════
   TITLE
   ═══════════════════════════════════════════════════════ */
.title{
  background:
    radial-gradient(105% 78% at 50% 44%,rgba(23,27,34,.5) 0%,rgba(5,6,8,0) 60%),
    radial-gradient(62% 46% at 50% 110%,rgba(217,68,68,.16) 0%,rgba(5,6,8,0) 68%),
    var(--deep);
  align-content:center;
}
.title__mark{text-align:center;padding:0 6vw;transform:translateY(-3vh)}
.title__eyebrow{
  margin:0 0 clamp(18px,3.4vh,34px);font-family:var(--mono);
  font-size:clamp(8.5px,1.05vw,10.5px);letter-spacing:.44em;color:#5c646f;text-transform:uppercase;
  animation:fadeUp 1.6s var(--e-out) .3s both;
}
.title__logo{
  position:relative;margin:0;
  font-size:clamp(44px,12.5vw,152px);font-weight:700;line-height:.92;
  letter-spacing:clamp(2px,.06em,14px);
  color:var(--txt);
  animation:fadeUp 2s var(--e-out) .5s both;
}
.glyph::before,.glyph::after{
  content:attr(data-text);position:absolute;inset:0;
  mix-blend-mode:screen;pointer-events:none;
}
.glyph::before{color:var(--cyan);transform:translate(-1.5px,0);opacity:.3}
.glyph::after{color:var(--red);transform:translate(1.5px,0);opacity:.24}
.glyph.is-glitch{animation:gskew .34s steps(3,end) both}
.glyph.is-glitch::before{transform:translate(-7px,1px);opacity:.75}
.glyph.is-glitch::after{transform:translate(6px,-2px);opacity:.7}
@keyframes gskew{
  0%{clip-path:inset(0 0 0 0)}
  22%{clip-path:inset(38% 0 42% 0);transform:translateX(4px)}
  45%{clip-path:inset(8% 0 78% 0);transform:translateX(-5px)}
  70%{clip-path:inset(66% 0 12% 0);transform:translateX(2px)}
  100%{clip-path:inset(0 0 0 0);transform:none}
}
.title__rule{margin:clamp(20px,3.6vh,38px) auto clamp(16px,2.4vh,24px);width:min(340px,58vw);height:1px;
  background:rgba(232,235,239,.1);overflow:hidden;animation:fadeUp 1.6s var(--e-out) 1.1s both}
.title__rule i{display:block;height:100%;width:38%;
  background:linear-gradient(90deg,transparent,var(--cyan),transparent);
  animation:sweep 5.5s var(--e-io) 1.8s infinite}
@keyframes sweep{0%{transform:translateX(-120%)}55%,100%{transform:translateX(360%)}}
.title__sub{
  margin:0;font-family:var(--mono);font-size:clamp(8.5px,1.15vw,11px);
  letter-spacing:.34em;color:var(--txt2);
  animation:fadeUp 1.8s var(--e-out) 1.3s both;
}
.title__start{
  position:absolute;left:50%;bottom:clamp(64px,14vh,132px);transform:translateX(-50%);
  font-family:var(--mono);font-size:clamp(9px,1.1vw,11px);letter-spacing:.34em;
  color:var(--txt2);padding:1.1em 2.2em;
  border:1px solid rgba(232,235,239,.12);
  background:rgba(23,27,34,.3);backdrop-filter:blur(3px);
  animation:fadeUp 1.6s var(--e-out) 1.9s both,breathe 3.6s ease-in-out 3s infinite;
  transition:color .4s,border-color .4s,background .4s;
}
.title__start:hover{color:var(--txt);border-color:rgba(99,199,216,.4);background:rgba(99,199,216,.06)}
@keyframes breathe{0%,100%{opacity:.72}50%{opacity:1}}
.title__foot{
  position:absolute;left:50%;bottom:clamp(26px,5vh,48px);transform:translateX(-50%);margin:0;
  font-family:var(--mono);font-size:9px;letter-spacing:.3em;color:#3d444d;
  animation:fadeUp 1.6s var(--e-out) 2.3s both;
}
@keyframes fadeUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

/* ═══════════════════════════════════════════════════════
   ROOM
   ═══════════════════════════════════════════════════════ */
.room{
  position:fixed;inset:0;z-index:1;background:var(--deep);
  /* opacity alone leaves the room fully hit-testable: an inactive room then
     covers the screen invisibly and eats the active room's clicks */
  opacity:0;visibility:hidden;pointer-events:none;
  transition:opacity 1.2s var(--e-soft),visibility 1.2s;
}
.room.is-active{opacity:1;visibility:visible;pointer-events:auto}
.room{--em-i:.1}
.room.is-focus{--em-i:1}
.room__depth{
  position:absolute;inset:0;overflow:hidden;
  perspective:1100px;perspective-origin:50% 44%;
  transition:filter 1.1s var(--e-soft);
}
.room.is-zoom .room__depth{filter:blur(7px) brightness(.45)}

/* ── the camera rig ──────────────────────────────────────────
   The layers sit on real planes at different Z. Before the reveal the
   camera is pushed in on the monitor; on .is-focus it flies back out
   into the room, and the perspective does the rest. */
.cam{
  position:absolute;inset:0;transform-style:preserve-3d;
  transform:translate3d(0,0,0);
  transition:transform 4s cubic-bezier(.25,.82,.28,1);
}
.room:not(.is-focus) .cam{transform:translate3d(24%,-19%,505px)}
.room.is-zoom .cam{transform:translate3d(0,0,60px)}
/* Room 02's lit thing is the desk screen, centre-bottom, so it needs its own framing */
.room2:not(.is-focus) .cam{transform:translate3d(-3%,-21%,430px)}

/* the room starts blind: only the monitor is readable */
.room__dark{
  position:absolute;inset:0;z-index:5;pointer-events:none;opacity:1;
  background:radial-gradient(var(--mrx,32%) var(--mry,38%) at var(--mx,23.5%) var(--my,79%),
    rgba(5,6,8,0) 0%,rgba(5,6,8,0) 40%,rgba(5,6,8,.68) 64%,rgba(5,6,8,.94) 82%,rgba(5,6,8,.99) 96%);
  transition:opacity 4.2s var(--e-soft);
}
.room.is-focus .room__dark{opacity:0}

.layer{position:absolute;inset:0;transform-style:preserve-3d;transition:transform 1.4s var(--e-out)}
.layer--far,.layer--mid{filter:blur(7px);transition:transform 1.4s var(--e-out),filter 3.4s var(--e-soft)}
.room.is-focus .layer--far,.room.is-focus .layer--mid{filter:blur(0)}
.layer--far {transform:translate3d(calc(var(--px,0)*-16px),calc(var(--py,0)*-9px),-210px) scale(1.1909)}
.layer--mid {transform:translate3d(calc(var(--px,0)*-8px),calc(var(--py,0)*-5px),-105px) scale(1.0955)}
.layer--near{transform:translate3d(calc(var(--px,0)*11px),calc(var(--py,0)*6px),0)}
.layer--mon {transform:translate3d(calc(var(--px,0)*11px),calc(var(--py,0)*6px),95px) scale(.9136)}

/* back wall + ambient */
.backwall{
  position:absolute;inset:0;
  background:
    radial-gradient(70% 55% at 62% 46%,rgba(23,27,34,.9) 0%,rgba(9,11,15,0) 70%),
    linear-gradient(180deg,#070809 0%,#0b0d12 58%,#060709 100%);
}
.backwall::after{
  content:'';position:absolute;inset:0;opacity:calc(.5*var(--em-i));
  background:radial-gradient(64% 46% at 63% 20%,rgba(var(--em),.16) 0%,rgba(var(--em),0) 72%);
  transition:opacity 2.2s var(--e-soft),background 2.6s var(--e-soft);
}

/* ceiling strips */
.ceiling{position:absolute;top:0;left:0;right:0;height:16%;
  background:linear-gradient(180deg,#040507,rgba(4,5,7,0))}
.strip{
  position:absolute;top:5.5%;left:var(--x);width:11%;height:5px;border-radius:3px;
  background:rgba(var(--em),.5);
  box-shadow:0 0 26px 8px rgba(var(--em),.24),0 0 90px 30px rgba(var(--em),.1);
  opacity:calc(.85*var(--em-i));
  transition:opacity 1.8s var(--e-soft),background 2.2s,box-shadow 2.2s;
}

/* ── glass wall ── */
.glass{position:absolute;left:5.5%;top:9.5%;width:24%;height:70%;transform:perspective(900px) rotateY(9deg)}
.glass__void{position:absolute;inset:0;background:linear-gradient(160deg,#05070a,#020304 70%);overflow:hidden}
.farlight{
  position:absolute;left:var(--x);top:var(--y);width:3px;height:3px;border-radius:50%;
  background:var(--cyan);opacity:.5;
  box-shadow:0 0 12px 3px rgba(99,199,216,.35);
  animation:pulse 4.6s ease-in-out var(--d,0s) infinite;
}
@keyframes pulse{0%,100%{opacity:.14}50%{opacity:.6}}
.glass__pane{
  position:absolute;inset:0;
  background:
    linear-gradient(112deg,rgba(232,235,239,0) 26%,rgba(232,235,239,.055) 35%,rgba(232,235,239,0) 43%),
    linear-gradient(112deg,rgba(232,235,239,0) 58%,rgba(232,235,239,.03) 63%,rgba(232,235,239,0) 68%),
    linear-gradient(180deg,rgba(99,199,216,.05),rgba(99,199,216,.012) 40%,rgba(0,0,0,.2));
}
.glass__pane::after{
  content:'';position:absolute;inset:0;opacity:calc(.6*var(--em-i));
  background:linear-gradient(255deg,rgba(var(--em),.11),transparent 46%);
  transition:opacity 2s,background 2.4s;
}
.glass__mull{position:absolute;inset:0;
  background:repeating-linear-gradient(90deg,rgba(232,235,239,.07) 0 1px,transparent 1px 33.33%)}
.glass__frame{position:absolute;inset:0;border:1px solid rgba(232,235,239,.1);
  box-shadow:inset 0 1px 0 rgba(232,235,239,.14),0 30px 60px -20px #000}
.glass__stencil{
  position:absolute;left:8%;bottom:3%;font-family:var(--mono);font-size:clamp(7px,.85vw,10px);
  letter-spacing:.4em;color:rgba(138,146,157,.4);
}

/* ── door ── */
.door{position:absolute;left:53%;bottom:11%;width:25%;height:70%}
.door__recess{position:absolute;inset:-7% -9%;
  background:linear-gradient(180deg,#0a0c10,#050608);
  box-shadow:inset 0 0 70px 20px #000}
.door__void{
  position:absolute;inset:1.5%;opacity:0;
  background:
    radial-gradient(52% 40% at 50% 66%,rgba(226,236,240,.5) 0%,rgba(150,166,174,.16) 44%,rgba(6,8,10,0) 74%),
    linear-gradient(180deg,#05070a 0%,#131920 24%,#28313a 58%,#151b21 84%,#070a0d 100%);
  transition:opacity 2.2s var(--e-soft);
}
.door.is-open .door__void{opacity:1}
/* light bleeding out of the gap, over the leaves */
.door__spill{
  position:absolute;left:50%;top:0;bottom:-16%;width:76%;transform:translateX(-50%);
  pointer-events:none;opacity:0;mix-blend-mode:screen;
  background:
    radial-gradient(19% 38% at 50% 56%,rgba(226,236,240,.5) 0%,rgba(226,236,240,.05) 54%,transparent 74%),
    linear-gradient(90deg,transparent 42%,rgba(226,236,240,.14) 50%,transparent 58%);
  transition:opacity 2.4s var(--e-soft);
}
.door.is-open .door__spill{opacity:1}
.door__leaf{
  position:absolute;top:0;bottom:0;width:50%;
  background:
    repeating-linear-gradient(180deg,rgba(232,235,239,.02) 0 2px,transparent 2px 9px),
    linear-gradient(178deg,#191d25 0%,#12151b 46%,#0b0e13 100%);
  box-shadow:inset 0 1px 0 rgba(232,235,239,.09);
  transition:transform 2.6s var(--e-out);
}
.door__leaf::after{
  content:'';position:absolute;inset:0;opacity:calc(.85*var(--em-i));
  background:linear-gradient(185deg,rgba(var(--em),.2) 0%,rgba(var(--em),.03) 45%,transparent 72%);
  transition:opacity 2s var(--e-soft),background 2.4s var(--e-soft);
}
.door__leaf--l{left:0;border-right:1px solid rgba(0,0,0,.7)}
.door__leaf--r{right:0;border-left:1px solid rgba(232,235,239,.05)}
.door.is-open .door__seam{opacity:0}
.door.is-open .door__leaf--l{transform:translateX(-11%)}
.door.is-open .door__leaf--r{transform:translateX(11%)}
.door__seam{
  transition:opacity 1.2s var(--e-soft);
  position:absolute;left:50%;top:1.5%;bottom:1.5%;width:2px;margin-left:-1px;
  background:linear-gradient(180deg,transparent,rgba(232,235,239,.16) 22%,rgba(232,235,239,.16) 78%,transparent);
}
.door__locks{position:absolute;left:50%;top:0;bottom:0;width:0}
.bolt{
  position:absolute;left:-30%;top:calc(24% + var(--i)*26%);
  width:clamp(26px,3.4vw,52px);height:clamp(7px,.85vw,12px);
  transform:translateX(0);
  background:linear-gradient(180deg,#333b46,#1b2027);
  box-shadow:inset 0 1px 0 rgba(232,235,239,.28),0 2px 6px rgba(0,0,0,.7);
  transition:transform 1s cubic-bezier(.3,1.5,.5,1);
}
.bolt::after{
  content:'';position:absolute;right:-1px;top:50%;width:4px;height:4px;margin-top:-2px;border-radius:50%;
  background:var(--red);box-shadow:0 0 7px 2px rgba(217,68,68,.7);transition:background .5s,box-shadow .5s;
}
.bolt.is-out{transform:translateX(-108%)}
.bolt.is-out::after{background:var(--cyan);box-shadow:0 0 8px 3px rgba(99,199,216,.6)}
.door__plate{
  position:absolute;left:6%;top:8%;font-family:var(--mono);font-size:clamp(9px,1.3vw,17px);
  letter-spacing:.3em;color:rgba(138,146,157,.5);
}
.door__plate span{display:block;margin-top:.6em;width:2.4em;height:1px;background:rgba(138,146,157,.28)}
.door__frame{position:absolute;inset:-2.4% -3.2%;border:1px solid rgba(232,235,239,.08);
  box-shadow:inset 0 0 30px rgba(0,0,0,.9)}
.door__lamp{position:absolute;left:50%;top:-11%;width:16%;height:7%;transform:translateX(-50%)}
.door__lamp i{
  position:absolute;inset:32% 0 0;border-radius:50% 50% 3px 3px;
  background:rgba(var(--em),.9);
  box-shadow:0 0 22px 7px rgba(var(--em),.55),0 0 70px 22px rgba(var(--em),.2);
  opacity:var(--em-i);transition:opacity .3s,background 1.6s,box-shadow 1.6s;
}
.door__cone{
  position:absolute;left:50%;top:-8%;width:150%;height:120%;transform:translateX(-50%);
  background:radial-gradient(58% 74% at 50% 0%,rgba(var(--em),.15) 0%,rgba(var(--em),.04) 40%,transparent 74%);
  opacity:var(--em-i);pointer-events:none;
  transition:opacity 1.6s,background 2.2s;
}
.room.is-stutter .door__lamp i,
.room.is-stutter .strip{animation:stut .9s steps(1,end) 2}
@keyframes stut{0%,100%{opacity:1}18%{opacity:.05}30%{opacity:.9}44%{opacity:.1}58%{opacity:1}72%{opacity:.2}}

/* ── relay box ── */
.relay{position:absolute;left:82.5%;top:33%;width:9.5%;height:15%}
.relay__conduit{
  position:absolute;left:-46%;top:44%;width:48%;height:3px;
  background:linear-gradient(90deg,rgba(232,235,239,.05),rgba(232,235,239,.13));
}
.relay__body{position:absolute;inset:0;
  background:linear-gradient(170deg,#1a1f27,#0e1116);
  border:1px solid rgba(232,235,239,.09);
  box-shadow:inset 0 1px 0 rgba(232,235,239,.1),0 14px 30px -12px #000}
.relay__grill{position:absolute;left:12%;right:12%;top:16%;height:34%;
  background:repeating-linear-gradient(180deg,rgba(0,0,0,.55) 0 2px,transparent 2px 5px)}
.relay__lever{
  position:absolute;left:50%;bottom:27%;width:6.5%;height:23%;margin-left:-3.25%;
  border-radius:2px;
  transform-origin:50% 100%;transform:rotate(-30deg);
  background:linear-gradient(180deg,#242a33,#12161c);
  box-shadow:inset .5px 0 0 rgba(232,235,239,.14);
  transition:transform .22s cubic-bezier(.3,1.8,.4,1);
}
.relay__lever::before{               /* knob */
  content:'';position:absolute;left:50%;top:-14%;width:190%;padding-top:190%;
  margin-left:-95%;border-radius:50%;
  background:radial-gradient(38% 34% at 34% 28%,#3d4550,#171b22 70%);
  box-shadow:0 1px 3px rgba(0,0,0,.7);
}
.relay__lever::after{                /* pivot */
  content:'';position:absolute;left:50%;bottom:-9%;width:150%;padding-top:150%;
  margin-left:-75%;border-radius:50%;background:#0c0f13;
  box-shadow:inset 0 0 0 1px rgba(232,235,239,.12);
}
.relay.is-on .relay__lever::before{background:radial-gradient(38% 34% at 34% 28%,#4a535f,#1b2027 70%)}
.relay.is-on .relay__lever{transform:rotate(28deg)}
.relay__led{position:absolute;bottom:9%;width:5px;height:5px;border-radius:50%;background:#2a3038}
.relay__led--a{left:15%}
.relay__led--b{left:26%}
.relay.is-on .relay__led--a{background:var(--amber);box-shadow:0 0 9px 3px rgba(217,164,65,.65)}
.relay.is-on .relay__led--b{background:var(--cyan);box-shadow:0 0 9px 3px rgba(99,199,216,.5);
  animation:blink2 1.4s steps(1,end) infinite}
@keyframes blink2{0%,70%{opacity:1}71%,100%{opacity:.25}}
.relay__tag{position:absolute;right:6%;bottom:6%;font-family:var(--mono);font-size:7px;
  letter-spacing:.16em;color:rgba(138,146,157,.45)}
.relay__flash{
  position:absolute;inset:-260%;opacity:0;pointer-events:none;
  background:radial-gradient(circle at 50% 50%,rgba(217,164,65,.85) 0%,rgba(217,164,65,.18) 22%,transparent 55%);
}
.relay.is-fire .relay__flash{animation:flash .85s var(--e-out) 1}
@keyframes flash{0%{opacity:0}6%{opacity:1}22%{opacity:.25}34%{opacity:.9}100%{opacity:0}}

/* ── floor ── */
.floor{position:absolute;left:0;right:0;bottom:0;height:26%;
  background:linear-gradient(180deg,#05060a 0%,#0a0d12 34%,#040507 100%)}
.floor::before{content:'';position:absolute;left:0;right:0;top:0;height:1px;background:rgba(232,235,239,.06)}
.floor__grid{position:absolute;inset:0;opacity:.5;
  background:repeating-linear-gradient(90deg,rgba(232,235,239,.025) 0 1px,transparent 1px 9%)}
.floor__glow{position:absolute;bottom:0;filter:blur(22px);pointer-events:none;transition:opacity 2s var(--e-soft)}
.floor__glow--door{left:44%;width:44%;height:78%;opacity:calc(.7*var(--em-i));
  background:radial-gradient(50% 100% at 50% 0%,rgba(var(--em),.3),transparent 72%)}
.floor__glow--mon{left:6%;width:42%;height:64%;opacity:.85;
  background:radial-gradient(50% 100% at 50% 0%,rgba(99,199,216,.16),transparent 70%)}
.floor__glow--gap{left:52%;width:28%;height:92%;opacity:0;filter:blur(16px);
  background:radial-gradient(46% 100% at 50% 0%,rgba(226,236,240,.3),transparent 66%);
  transition:opacity 2.6s var(--e-soft)}
.room.is-breached .floor__glow--gap{opacity:.9}

/* ── monitor ── */
.monitor{position:absolute;left:11%;bottom:12%;width:25%}
.monitor__halo{
  position:absolute;inset:-90% -80% -60%;pointer-events:none;
  background:radial-gradient(50% 50% at 50% 42%,rgba(99,199,216,.13) 0%,rgba(99,199,216,.03) 38%,transparent 66%);
  animation:halo 6.5s ease-in-out infinite;
}
@keyframes halo{0%,100%{opacity:.8}50%{opacity:1}}
.monitor__bezel{
  position:relative;display:block;width:100%;aspect-ratio:4/2.72;
  padding:clamp(6px,.85vw,12px);
  background:linear-gradient(170deg,#1c212a,#0d1015);
  border:1px solid rgba(232,235,239,.1);border-radius:4px;
  box-shadow:inset 0 1px 0 rgba(232,235,239,.12),0 26px 50px -18px #000;
  transition:transform .5s var(--e-out),box-shadow .5s;
}
.monitor.is-hot .monitor__bezel{cursor:pointer}
.monitor.is-hot .monitor__bezel:hover{transform:translateY(-2px) scale(1.008);
  box-shadow:inset 0 1px 0 rgba(232,235,239,.14),0 26px 50px -18px #000,0 0 0 1px rgba(99,199,216,.3)}
.monitor__screen{
  position:relative;width:100%;height:100%;overflow:hidden;border-radius:2px;
  background:radial-gradient(120% 120% at 50% 0%,#0e1319,#05070a);
  box-shadow:inset 0 0 40px rgba(0,0,0,.9);
}
.mscreen{position:absolute;inset:0;display:grid;place-content:center;text-align:center;padding:6% 5%}
.mscreen__line{
  font-family:var(--mono);font-size:clamp(8px,1.32vw,17px);letter-spacing:.24em;
  color:var(--txt2);transition:color .6s;
}
.mscreen.is-found .mscreen__line{color:var(--cyan);text-shadow:0 0 14px rgba(99,199,216,.6)}
.mscreen.is-sys .mscreen__line{color:var(--amber);text-shadow:0 0 14px rgba(217,164,65,.45)}
.mscreen.is-agent .mscreen__line{
  color:var(--cyan);text-shadow:0 0 20px rgba(99,199,216,.55);
  font-size:clamp(7.5px,1.16vw,15px);letter-spacing:.2em;text-wrap:balance;line-height:1.7;
  animation:arrive 1.4s var(--e-out) both;
}
@keyframes arrive{from{opacity:0;filter:blur(3px)}to{opacity:1;filter:none}}
.mscreen.is-sys .mscreen__sub{color:var(--txt2)}
.mscreen__sub{
  margin-top:.9em;font-family:var(--mono);font-size:clamp(6.5px,.92vw,11px);
  letter-spacing:.28em;color:#4d5560;min-height:1.2em;
}
.mscreen.is-hot .mscreen__sub{color:var(--amber);animation:breathe 2.6s ease-in-out infinite}
.monitor__scan{position:absolute;inset:0;pointer-events:none;
  background:repeating-linear-gradient(180deg,rgba(0,0,0,.32) 0 1px,transparent 1px 3px)}
.monitor__curve{position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(110% 100% at 50% 42%,transparent 52%,rgba(0,0,0,.6) 100%)}
.monitor__led{position:absolute;right:8px;bottom:5px;width:4px;height:4px;border-radius:50%;
  background:var(--cyan);box-shadow:0 0 8px 2px rgba(99,199,216,.5);animation:blink2 3.2s steps(1,end) infinite}
.monitor__neck{position:absolute;left:50%;bottom:-13%;width:7%;height:14%;margin-left:-3.5%;
  background:linear-gradient(180deg,#161a21,#0c0f13)}
.monitor__base{position:absolute;left:50%;bottom:-16%;width:34%;height:3.5%;margin-left:-17%;border-radius:2px;
  background:linear-gradient(180deg,#191d25,#0a0d11);box-shadow:0 10px 24px -8px #000}
.monitor.is-flick .monitor__screen{animation:flick .42s steps(2,end) 2}
@keyframes flick{0%,100%{filter:none}30%{filter:brightness(.25)}60%{filter:brightness(1.5)}}

/* haze */
.haze{position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(90% 60% at 50% 100%,rgba(23,27,34,.5),transparent 66%)}

/* ═══════════════════════════════════════════════════════
   TERMINAL / PUZZLE
   ═══════════════════════════════════════════════════════ */
.terminal{
  position:fixed;inset:0;z-index:40;display:grid;place-items:center;padding:max(4vh,18px) max(4vw,16px);
  background:radial-gradient(80% 70% at 50% 50%,rgba(5,6,8,.55),rgba(5,6,8,.9));
  opacity:0;visibility:hidden;
  transition:opacity .7s var(--e-soft),visibility .7s;
}
.terminal.is-open{opacity:1;visibility:visible}
.terminal__shell{
  width:100%;max-width:560px;max-height:100%;overflow:auto;
  padding:clamp(18px,2.6vw,30px);
  background:linear-gradient(168deg,rgba(23,27,34,.94),rgba(9,11,15,.96));
  border:1px solid rgba(232,235,239,.11);
  box-shadow:0 40px 90px -30px #000,inset 0 1px 0 rgba(232,235,239,.1),0 0 0 1px rgba(0,0,0,.5);
  backdrop-filter:blur(14px);
  transform:translateY(20px) scale(.97);opacity:0;
  transition:transform .8s var(--e-out),opacity .6s var(--e-soft);
}
.terminal.is-open .terminal__shell{transform:none;opacity:1}
.term__head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;
  padding-bottom:clamp(12px,1.8vw,18px);border-bottom:1px solid rgba(232,235,239,.08)}
.term__title{margin:0;font-size:clamp(15px,2.2vw,21px);font-weight:500;letter-spacing:.2em}
.term__meta{margin:.55em 0 0;font-family:var(--mono);font-size:9px;letter-spacing:.24em;color:#5c646f}
.term__close{font-family:var(--mono);font-size:9px;letter-spacing:.24em;color:#5c646f;
  border:1px solid rgba(232,235,239,.1);padding:.55em .9em;transition:color .3s,border-color .3s}
.term__close:hover{color:var(--txt);border-color:rgba(232,235,239,.26)}

.nodes{list-style:none;margin:clamp(14px,2vw,20px) 0;padding:0;
  display:grid;gap:1px;background:rgba(232,235,239,.06)}
.node{display:grid;grid-template-columns:auto 1.4em 1fr;align-items:center;gap:.9em;
  padding:.72em .9em;background:var(--bg);font-family:var(--mono);font-size:clamp(9px,1.35vw,11.5px);
  letter-spacing:.16em;transition:background .5s}
.node__id{color:var(--txt2)}
.node__mark{text-align:center;color:#3d444d;font-size:1.1em}
.node__st{color:#4d5560;text-align:right;letter-spacing:.14em}
.node.is-ok .node__id{color:var(--txt)}
.node.is-ok .node__mark{color:var(--amber)}
.node.is-ok .node__st{color:var(--amber)}
.node.is-wait .node__mark{color:var(--amber);animation:blink 1.2s steps(1,end) infinite}
.node.is-wait .node__st{color:var(--txt2)}
.node.is-lock .node__mark,.node.is-lock .node__st{color:var(--red)}
.node.is-just{animation:hit .9s var(--e-out) 1}
@keyframes hit{0%{background:rgba(217,164,65,.3)}100%{background:var(--bg)}}

.circuit{
  --cell:clamp(44px,10.4vw,72px);
  display:grid;grid-template-columns:auto auto auto;align-items:center;justify-content:center;
  gap:0;margin:clamp(6px,1vw,10px) 0 clamp(16px,2.2vw,22px);
}
.cgrid{
  display:grid;grid-template-columns:repeat(4,var(--cell));grid-template-rows:repeat(3,var(--cell));
  gap:1px;background:rgba(232,235,239,.055);
  border:1px solid rgba(232,235,239,.08);
}
.cell{position:relative;background:#0b0e13;display:grid;place-items:center;overflow:hidden}
.cell--void{background:#070809}
.cell--void::after{content:'';position:absolute;inset:0;
  background:repeating-linear-gradient(45deg,rgba(232,235,239,.022) 0 1px,transparent 1px 6px)}
.cell--pipe{cursor:pointer;transition:background .3s}
.cell--pipe:hover{background:#10141a}
.cell--pipe:active{background:#141920}
.cell__rot{position:absolute;inset:0;transition:transform .34s cubic-bezier(.34,1.42,.5,1)}
.pipe{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.pipe .pl{fill:none;stroke:#333a45;stroke-width:12;stroke-linecap:round;transition:stroke .35s}
.pipe .hub{fill:#262c35;transition:fill .35s}
.pipe .fl{fill:none;stroke:#fff;stroke-width:4;stroke-linecap:round;
  stroke-dasharray:5 24;opacity:0;transition:opacity .4s}
.cell.is-live .pl{stroke:var(--amber);filter:drop-shadow(0 0 5px rgba(217,164,65,.6))}
.cell.is-live .hub{fill:var(--amber)}
.cell.is-live .fl{opacity:.34;animation:flow 1.6s linear infinite}
@keyframes flow{to{stroke-dashoffset:-29}}
.cell.is-live{background:#12100b}

.rail{display:grid;grid-template-rows:repeat(3,var(--cell));align-items:center;position:relative}
.rail--in{justify-items:end}
.rail--out{justify-items:start}
.rail__tag{
  grid-row:1;font-family:var(--mono);font-size:8.5px;letter-spacing:.2em;color:#5c646f;
  padding:0 .7em;position:relative;white-space:nowrap;transition:color .5s,text-shadow .5s;
}
.rail--out .rail__tag{grid-row:3}
.rail__tag::after{
  content:'';position:absolute;top:50%;width:10px;height:2px;background:#333a45;transition:background .4s,box-shadow .4s;
}
.rail--in .rail__tag::after{right:-10px}
.rail--out .rail__tag::after{left:-10px}
.rail--in .rail__tag{color:var(--amber)}
.rail--in .rail__tag::after{background:var(--amber);box-shadow:0 0 6px rgba(217,164,65,.6)}
.rail--out.is-live .rail__tag{color:var(--amber);text-shadow:0 0 12px rgba(217,164,65,.5)}
.rail--out.is-live .rail__tag::after{background:var(--amber);box-shadow:0 0 6px rgba(217,164,65,.6)}

.term__foot{display:flex;justify-content:space-between;align-items:center;gap:14px;
  padding-top:clamp(12px,1.8vw,16px);border-top:1px solid rgba(232,235,239,.08);
  font-family:var(--mono);font-size:8.5px;letter-spacing:.2em;color:#5c646f}
.term__count{color:var(--txt2);white-space:nowrap}
.foot__right{display:flex;align-items:center;gap:14px}
.helpBtn{
  font-family:var(--mono);font-size:8.5px;letter-spacing:.24em;color:#5c646f;
  border:1px solid rgba(232,235,239,.1);padding:.5em .8em;min-height:30px;
  transition:color .3s,border-color .3s;
}
.helpBtn:hover{color:var(--txt);border-color:rgba(99,199,216,.4)}
.helpBtn:focus-visible{outline:1px solid var(--cyan);outline-offset:2px}
.helpBtn[hidden]{display:none}
.cell.is-nudge .pl{stroke:var(--cyan);animation:nudge 1.1s ease-in-out 3}
@keyframes nudge{0%,100%{filter:none}50%{filter:drop-shadow(0 0 8px rgba(99,199,216,.9))}}

/* ═══════════════════════════════════════════════════════
   ═══════════════════════════════════════════════════════ */
/* lifts the blacks for playing in daylight, without touching the palette or
   the 3D camera (a CSS filter on an ancestor would flatten preserve-3d) */
.lift{
  position:fixed;inset:0;z-index:59;pointer-events:none;
  background:#93a3b4;mix-blend-mode:screen;opacity:0;
  transition:opacity .45s var(--e-soft);
}
body[data-lift="1"] .lift{opacity:.085}
body[data-lift="2"] .lift{opacity:.17}
#fx{position:fixed;inset:0;z-index:60;pointer-events:none;width:100%;height:100%}
.vignette{position:fixed;inset:0;z-index:61;pointer-events:none;
  background:radial-gradient(112% 100% at 50% 50%,transparent 42%,rgba(5,6,8,.72) 100%)}
.scanlines{position:fixed;inset:0;z-index:62;pointer-events:none;opacity:.4;
  background:repeating-linear-gradient(180deg,rgba(0,0,0,.14) 0 1px,transparent 1px 3px)}

.caption{
  position:fixed;left:max(4vw,22px);bottom:max(7vh,34px);z-index:70;pointer-events:none;
  font-family:var(--mono);font-size:clamp(9px,1.15vw,11.5px);letter-spacing:.34em;
  color:var(--amber);text-transform:uppercase;
  opacity:0;transform:translateY(8px);
  transition:opacity .9s var(--e-soft),transform .9s var(--e-out);
}
.caption::before{content:'';position:absolute;left:0;top:-11px;width:26px;height:1px;background:var(--amber);opacity:.6}
.caption.is-on{opacity:1;transform:none}

.record{
  position:fixed;inset:0;z-index:71;display:grid;place-items:center;
  padding:max(7vh,54px) max(5vw,18px);
  background:radial-gradient(78% 66% at 50% 46%,rgba(5,6,8,.86) 0%,rgba(5,6,8,.96) 100%);
  opacity:0;visibility:hidden;
  transition:opacity 1.8s var(--e-soft),visibility 1.8s;
}
.record.is-on{opacity:1;visibility:visible}
.record__shell{width:100%;max-width:470px;max-height:100%;overflow:auto}
.record__eyebrow{margin:0;font-family:var(--mono);font-size:9px;letter-spacing:.36em;color:var(--amber)}
.record__title{
  margin:.9em 0 1.6em;font-size:clamp(14px,2.1vw,20px);font-weight:400;letter-spacing:.24em;
  color:var(--txt);
}
.record__list{display:grid;gap:.62em;min-height:8.6em}
.rrow{
  display:flex;align-items:baseline;gap:.55em;
  font-family:var(--mono);font-size:clamp(9px,1.28vw,11.5px);letter-spacing:.12em;
  animation:rin .7s var(--e-out) both;
}
@keyframes rin{from{opacity:0;transform:translateX(-6px)}to{opacity:1;transform:none}}
.rrow__k{color:var(--txt2);white-space:nowrap}
.rrow__d{flex:1;border-bottom:1px dotted rgba(138,146,157,.3);transform:translateY(-.3em)}
.rrow__v{color:var(--amber);white-space:nowrap;font-variant-numeric:tabular-nums}
.record__beat{
  margin:2.1em 0 0;display:grid;gap:.45em;
  font-size:clamp(12px,1.62vw,15.5px);font-weight:300;line-height:1.5;letter-spacing:.05em;
  color:var(--txt2);opacity:0;transition:opacity 1.9s var(--e-soft);
}
.record__beat.is-on{opacity:1}
.record__beat span:last-child{color:var(--cyan);text-shadow:0 0 20px rgba(99,199,216,.35)}
.record__foot{
  margin-top:2.6em;padding-top:1.7em;border-top:1px solid rgba(232,235,239,.08);text-align:center;
}
.record__k{margin:0;font-family:var(--mono);font-size:8.5px;letter-spacing:.38em;color:#5c646f}
.record__v{margin:.7em 0 0;font-size:clamp(12px,1.7vw,16px);font-weight:400;letter-spacing:.26em;color:var(--txt2)}
.record__btn{
  margin-top:1.9em;font-family:var(--mono);font-size:9px;letter-spacing:.3em;color:var(--txt2);
  border:1px solid rgba(232,235,239,.14);padding:.9em 1.9em;
  transition:color .3s,border-color .3s,background .3s;
}
.record__btn:hover{color:var(--txt);border-color:rgba(99,199,216,.4);background:rgba(99,199,216,.06)}
.record__btn:focus-visible{outline:1px solid var(--cyan);outline-offset:3px}

.chips{
  position:fixed;right:max(3vw,16px);top:max(3vh,16px);z-index:80;
  display:none;gap:8px;
}
body.is-playing .chips{display:flex}
.chip{
  display:flex;align-items:center;gap:.7em;min-height:34px;
  font-family:var(--mono);font-size:8px;letter-spacing:.26em;color:#4b525c;
  padding:.6em .85em;border:1px solid rgba(232,235,239,.08);
  transition:color .3s,border-color .3s;
}
.chip:hover{color:var(--txt2);border-color:rgba(232,235,239,.2)}
.chip:focus-visible{outline:1px solid var(--cyan);outline-offset:2px}
.chip__bars{display:flex;align-items:flex-end;gap:2px;height:9px}
.chip__bars i{width:2px;background:#4b525c;transition:background .3s,height .3s}
.chip__bars i:nth-child(1){height:34%}
.chip__bars i:nth-child(2){height:64%}
.chip__bars i:nth-child(3){height:100%}
body[data-lift="1"] .chip__bars i:nth-child(1),
body[data-lift="1"] .chip__bars i:nth-child(2){background:var(--amber)}
body[data-lift="2"] .chip__bars i{background:var(--amber)}
body:not([data-lift]) .chip__bars i:nth-child(1),
body[data-lift="0"] .chip__bars i:nth-child(1){background:var(--txt2)}

.audio{
  position:static;z-index:80;
  display:none;align-items:center;gap:.7em;
  font-family:var(--mono);font-size:8px;letter-spacing:.26em;color:#4b525c;
  padding:.6em .85em;border:1px solid rgba(232,235,239,.08);
  transition:color .3s,border-color .3s;
}
body.is-playing .audio{display:flex}
.chips .audio{display:flex}
.audio:hover{color:var(--txt2);border-color:rgba(232,235,239,.2)}
.audio__wave{display:flex;align-items:flex-end;gap:2px;height:9px}
.audio__wave i{width:2px;background:var(--cyan);opacity:.85;animation:eq .9s ease-in-out infinite}
.audio__wave i:nth-child(1){height:40%;animation-delay:0s}
.audio__wave i:nth-child(2){height:100%;animation-delay:.18s}
.audio__wave i:nth-child(3){height:62%;animation-delay:.36s}
@keyframes eq{0%,100%{transform:scaleY(.4)}50%{transform:scaleY(1)}}
.audio.is-muted .audio__wave i{animation:none;transform:scaleY(.3);background:#4b525c}

/* ═══════════════════════════════════════════════════════
   ROOM 02 — RECALL (the observation booth)
   Cold room. The only warm light is Room 01, seen through the glass.
   ═══════════════════════════════════════════════════════ */
.room2 .r2wall{
  position:absolute;inset:0;
  background:
    radial-gradient(64% 50% at 44% 34%,rgba(22,27,34,.9) 0%,rgba(7,9,12,0) 72%),
    linear-gradient(180deg,#05070a 0%,#0a0d12 56%,#05060898 100%);
}

/* ── Room 01, behind the glass ── */
.r2thru{position:absolute;left:14%;top:8%;width:62%;height:56%;overflow:hidden;background:#05070a}
.r2thru__amber{
  position:absolute;inset:0;
  background:
    radial-gradient(48% 60% at 62% 22%,rgba(217,164,65,.2) 0%,rgba(217,164,65,.03) 46%,transparent 74%),
    linear-gradient(180deg,#080a0d,#0c0f14 62%,#06080b);
}
.r2thru__door{position:absolute;left:56%;top:12%;width:17%;height:78%;
  background:linear-gradient(178deg,#161a21,#0b0e13)}
.r2thru__door i{                       /* the gap you walked out of */
  position:absolute;left:50%;top:2%;bottom:2%;width:16%;margin-left:-8%;
  background:linear-gradient(180deg,#0a0e11,#2b333a 52%,#0b0e11);
  box-shadow:0 0 34px 12px rgba(226,236,240,.16);
}
.r2thru__mon{
  position:absolute;left:16%;bottom:14%;width:20%;height:16%;
  background:#0b1016;border:1px solid rgba(232,235,239,.08);
  box-shadow:0 0 26px 8px rgba(99,199,216,.12);
}

/* ── the glass, now from the watcher's side ── */
.r2glass{position:absolute;left:14%;top:8%;width:62%;height:56%}
.r2glass__pane{
  position:absolute;inset:0;
  background:
    linear-gradient(104deg,rgba(232,235,239,0) 30%,rgba(232,235,239,.05) 38%,rgba(232,235,239,0) 45%),
    linear-gradient(180deg,rgba(99,199,216,.045),rgba(0,0,0,.26));
}
.r2glass__mull{position:absolute;inset:0;
  background:repeating-linear-gradient(90deg,rgba(232,235,239,.06) 0 1px,transparent 1px 25%)}
.r2glass__frame{position:absolute;inset:-1.4% -1%;border:1px solid rgba(232,235,239,.12);
  box-shadow:inset 0 1px 0 rgba(232,235,239,.14),0 34px 60px -24px #000}
.r2glass__stencil{
  position:absolute;left:1%;top:-6.5%;font-family:var(--mono);
  font-size:clamp(7px,.82vw,9.5px);letter-spacing:.36em;color:rgba(138,146,157,.45);
  white-space:nowrap;
}

/* ── one cold lamp ── */
.r2lamp{position:absolute;left:44%;top:0;width:22%;height:5%}
.r2lamp i{
  position:absolute;inset:auto 0 0;height:4px;border-radius:2px;
  background:rgba(198,214,222,.6);
  box-shadow:0 0 24px 7px rgba(150,180,196,.22),0 46px 120px 40px rgba(120,150,168,.07);
}

/* ── the chair someone watched you from ── */
.r2chair{position:absolute;left:7.5%;bottom:15%;width:15%;height:33%}
.r2chair__back{
  position:absolute;left:14%;top:0;width:64%;height:52%;border-radius:4px 4px 1px 1px;
  background:linear-gradient(96deg,#12161c 0%,#1d232b 62%,#2a323c 100%);
  box-shadow:inset 0 1px 0 rgba(232,235,239,.13),inset -1px 0 0 rgba(217,164,65,.16),
             0 14px 28px -10px #000;
  transform:rotate(-8deg);transform-origin:50% 100%;
}
.r2chair__seat{
  position:absolute;left:0;top:50%;width:100%;height:14%;border-radius:3px;
  background:linear-gradient(96deg,#161b21,#242b34 70%,#2f3841);
  box-shadow:inset 0 1px 0 rgba(232,235,239,.1),0 12px 24px -8px #000;
}
.r2chair__stem{position:absolute;left:46%;top:62%;width:8%;height:26%;background:#12161c}
.r2chair__foot{position:absolute;left:18%;bottom:0;width:64%;height:4%;border-radius:2px;
  background:linear-gradient(180deg,#191d25,#0a0d11)}

/* ── floor + desk ── */
.r2floor{position:absolute;left:0;right:0;bottom:0;height:24%;
  background:linear-gradient(180deg,#05070a,#0a0d12 40%,#040507)}
.r2floor::before{content:'';position:absolute;left:0;right:0;top:0;height:1px;background:rgba(232,235,239,.055)}
.r2floor__spill{
  position:absolute;left:16%;bottom:0;width:58%;height:88%;filter:blur(20px);
  background:radial-gradient(50% 100% at 50% 0%,rgba(217,164,65,.11),transparent 68%);
}
.r2desk{position:absolute;left:31%;bottom:7%;width:44%}
.r2desk__top{
  position:absolute;left:-6%;right:-6%;bottom:-14%;height:16px;border-radius:2px;
  background:linear-gradient(180deg,#1b2028,#0a0d11);
  box-shadow:inset 0 1px 0 rgba(232,235,239,.1),0 18px 34px -14px #000;
}
.r2desk__screen{
  position:relative;display:block;width:100%;aspect-ratio:4/1.5;
  padding:clamp(5px,.7vw,10px);
  background:linear-gradient(170deg,#1a1f27,#0c0f14);
  border:1px solid rgba(232,235,239,.1);border-radius:3px;
  box-shadow:inset 0 1px 0 rgba(232,235,239,.11),0 22px 44px -18px #000;
  transition:transform .5s var(--e-out),box-shadow .5s;
}
.r2desk.is-hot .r2desk__screen{cursor:pointer}
.r2desk.is-hot .r2desk__screen:hover{transform:translateY(-2px);
  box-shadow:inset 0 1px 0 rgba(232,235,239,.13),0 22px 44px -18px #000,0 0 0 1px rgba(99,199,216,.3)}
.r2s{
  position:relative;height:100%;display:grid;place-content:center;text-align:center;
  background:radial-gradient(120% 120% at 50% 0%,#0d1218,#05070a);
  box-shadow:inset 0 0 34px rgba(0,0,0,.9);
}
.r2s__line{font-family:var(--mono);font-size:clamp(7.5px,1.1vw,14px);letter-spacing:.22em;color:var(--txt2)}
.r2s.is-sys .r2s__line{color:var(--amber);text-shadow:0 0 14px rgba(217,164,65,.4)}
.r2s.is-agent .r2s__line{color:var(--cyan);text-shadow:0 0 18px rgba(99,199,216,.5)}
.r2s__sub{margin-top:.8em;font-family:var(--mono);font-size:clamp(6px,.85vw,10px);
  letter-spacing:.26em;color:#4d5560;min-height:1.1em}
.r2s.is-hot .r2s__sub{color:var(--amber);animation:breathe 2.6s ease-in-out infinite}
.r2s__scan{position:absolute;inset:0;pointer-events:none;
  background:repeating-linear-gradient(180deg,rgba(0,0,0,.3) 0 1px,transparent 1px 3px)}

/* ═══════════════════════════════════════════════════════
   VERIFICATION — one claim at a time, so it has to be judged
   ═══════════════════════════════════════════════════════ */
.claim__brief{
  margin:clamp(16px,2.4vw,22px) 0 0;padding:0 0 clamp(14px,2vw,18px);
  border-bottom:1px solid rgba(232,235,239,.07);
  font-family:var(--mono);font-size:clamp(9px,1.2vw,11px);line-height:1.85;
  letter-spacing:.1em;color:var(--txt2);
}
.claim{padding:clamp(20px,3.4vw,34px) 0 clamp(12px,2vw,18px)}
.claim__q{
  margin:0 0 clamp(20px,3vw,30px);min-height:4.2em;
  font-size:clamp(14px,2.1vw,19px);font-weight:300;line-height:1.55;letter-spacing:.01em;
  color:var(--txt);text-wrap:balance;
}
.claim__q.is-in{animation:arrive 1s var(--e-out) both}
.claim__btns{display:flex;gap:10px}
.vbtn{
  flex:1;min-height:48px;font-family:var(--mono);font-size:clamp(9px,1.2vw,11px);
  letter-spacing:.26em;color:var(--txt2);padding:1.15em .8em;
  border:1px solid rgba(232,235,239,.14);background:rgba(23,27,34,.5);
  transition:color .25s,border-color .25s,background .25s;
}
.vbtn:hover{color:var(--txt);border-color:rgba(99,199,216,.45);background:rgba(99,199,216,.07)}
.vbtn--no:hover{border-color:rgba(217,68,68,.45);background:rgba(217,68,68,.07)}
.vbtn:focus-visible{outline:1px solid var(--cyan);outline-offset:3px}
.vbtn:disabled{opacity:.32;cursor:default}
.claim__note{
  margin:clamp(14px,2.2vw,20px) 0 0;min-height:1.5em;
  font-family:var(--mono);font-size:clamp(8.5px,1.15vw,10.5px);letter-spacing:.24em;
  color:#5c646f;opacity:0;transition:opacity .5s var(--e-soft);
}
.claim__note.is-on{opacity:1}
.claim__note.is-amend{color:var(--amber)}

/* ═══════════════════════════════════════════════════════
   RESPONSIVE — portrait / small
   ═══════════════════════════════════════════════════════ */
@media (max-aspect-ratio:9/10){
  .glass{left:-9%;top:5%;width:36%;height:54%;transform:perspective(700px) rotateY(13deg)}
  .glass__stencil{left:auto;right:7%;bottom:2%}
  .door{left:52%;transform:translateX(-50%);bottom:30%;width:60%;height:42%}
  .relay{left:auto;right:3%;top:31%;width:17%;height:9.5%}
  .relay__conduit{left:-48%;width:50%}
  .monitor{left:50%;transform:translateX(-50%);bottom:8%;width:68%}
  .floor{height:21%}
  .floor__glow--mon{left:22%;width:56%}
  .floor__glow--door{left:24%;width:56%}
  .floor__glow--gap{left:36%;width:30%}
  .ceiling{height:9%}
  .strip{top:3.5%;width:16%}
  .circuit{--cell:clamp(38px,13.4vw,66px)}
  /* portrait: the monitor sits centre-bottom, so the push-in comes from below */
  .room:not(.is-focus) .cam{transform:translate3d(0,-22%,300px)}
  .room2:not(.is-focus) .cam{transform:translate3d(0,-19%,290px)}
  /* ROOM 02 portrait: glass wide across the top, desk across the bottom */
  .r2thru,.r2glass{left:4%;top:8%;width:84%;height:38%}
  .r2glass{transform:none}
  .r2thru__door{left:54%;width:22%}
  .r2thru__mon{left:12%;bottom:12%;width:26%;height:20%}
  .r2lamp{left:37%;width:26%}
  .r2chair{left:5%;bottom:27%;width:27%;height:21%}
  .r2desk{left:13%;bottom:9%;width:74%}
  .r2floor{height:20%}
  .r2floor__spill{left:12%;width:70%}
  .rail__tag{font-size:7.5px;padding:0 .5em}
}
@media (max-width:420px){
  .terminal__shell{padding:16px 14px}
  .caption{letter-spacing:.24em}
}
@media (max-height:460px){
  .bar{height:0}
  .title__start{bottom:26px}
  .title__foot{display:none}
}

/* ═══════════════════════════════════════════════════════
   REDUCED MOTION
   ═══════════════════════════════════════════════════════ */
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms !important;animation-iteration-count:1 !important}
  .layer{transform:none !important}
  .room__depth,.room.is-focus .room__depth{filter:none;transform:none}
  .cam,.room:not(.is-focus) .cam,.room.is-zoom .cam{transform:none !important;transition:none}
  .scanlines{display:none}
  .screen,.terminal,.terminal__shell,.door__leaf,.bolt{transition-duration:.35s}
}
