 
.wall{position:relative;flex:0 0 38%;min-height:0;overflow:hidden;
  background:
    linear-gradient(180deg,#0006 0,#0000 22%,#0000 70%,#000a 100%),
    radial-gradient(ellipse 60% 70% at 24% 20%,rgba(176,102,63,.12),transparent 52%),
    radial-gradient(ellipse 50% 60% at 82% 68%,rgba(126,118,92,.12),transparent 62%),
    repeating-linear-gradient(0deg,#0000 0 118px,#0008 118px 121px,#ffffff08 121px 122px),
    repeating-linear-gradient(90deg,#0000 0 340px,#0006 340px 342px),
    var(--grain),#202725;
  border-bottom:6px solid #0b0d0c;box-shadow:0 10px 28px #000d,inset 0 0 40px rgba(0,0,0,.34)}
.wall::before{content:"";position:absolute;inset:0;background:
  linear-gradient(115deg, transparent 0 48%, rgba(255,255,255,.06) 49%, transparent 50%),
  linear-gradient(160deg, transparent 0 56%, rgba(255,255,255,.04) 57%, transparent 58%),
  radial-gradient(circle at 70% 18%, rgba(255,255,255,.07), transparent 18%),
  radial-gradient(circle at 20% 12%, rgba(255,255,255,.05), transparent 12%),
  linear-gradient(90deg,rgba(0,0,0,.14),transparent 22%,transparent 78%,rgba(0,0,0,.18));
  opacity:.9; pointer-events:none}
.wall::after{content:"";position:absolute;inset:-10% -5% auto auto;width:28vw;height:26vw;max-width:260px;max-height:260px;
  background:radial-gradient(circle at 38% 35%, rgba(255,255,255,.08), transparent 54%);
  border:1px solid rgba(255,255,255,.04); border-radius:50%; transform:rotate(14deg); opacity:.7; pointer-events:none}
.cables{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.cables path{fill:none;stroke:#0b0c0b;stroke-width:9;stroke-linecap:round;vector-effect:non-scaling-stroke;filter:drop-shadow(0 3px 2px #000a)}
.cables path.thin{stroke-width:4}
.ceiling-pipe{position:absolute;left:0;right:0;top:0;height:22px;background:linear-gradient(#5a625c,#2b302c 40%,#151815);border-bottom:2px solid #000;box-shadow:0 4px 8px #000a}
.ceiling-pipe::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(90deg,#0000 0 180px,#000a 180px 184px,#7a837c33 184px 186px)}
.tubes{position:absolute;top:26px;left:0;right:0;display:flex;justify-content:space-around;padding:0 8%;pointer-events:none}
.tube{display:block;width:min(20vw,260px);height:9px;border-radius:5px;background:linear-gradient(#f2f0e2,#c9c7b5);box-shadow:0 0 18px 4px #d7e3d055,0 30px 60px 10px #cfe0c714;border:1px solid #0008}

.vent{position:absolute;left:3.5%;top:22%;width:clamp(70px,9vw,128px);aspect-ratio:1;border-radius:6px;background:linear-gradient(145deg,#4a514c,#1a1d1b);border:3px solid #0b0d0c;box-shadow:inset 0 0 0 4px #2b302c,inset 0 0 22px #000,0 4px 10px #000a;overflow:hidden}
.vent::before{content:"";position:absolute;inset:8%;border-radius:50%;background:radial-gradient(#000 40%,#090b09 41%,#1b1f1c 100%);box-shadow:inset 0 0 12px #000}
.vent::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,#0000 0 8px,#000d 8px 11px,#7a837c33 11px 12px);z-index:3}
.fan{position:absolute;inset:14%;z-index:2;animation:spin var(--fan,1.1s) linear infinite}
.fan i{position:absolute;left:50%;top:6%;width:16%;height:44%;margin-left:-8%;background:#252a27;border-radius:40% 40% 10% 10%;transform-origin:50% 100%}
.fan i:nth-child(1){transform:rotate(0)} .fan i:nth-child(2){transform:rotate(90deg)} .fan i:nth-child(3){transform:rotate(180deg)} .fan i:nth-child(4){transform:rotate(270deg)}
@keyframes spin{to{transform:rotate(360deg)}}

.notice{position:absolute;left:3%;bottom:9%;width:clamp(120px,15vw,210px);padding:9px 10px;background:linear-gradient(180deg,#ddd3b3,#bcae86);color:#1a1917;font-size:clamp(8px,.85vw,11px);line-height:1.4;transform:rotate(-2.2deg);box-shadow:2px 3px 6px rgba(0,0,0,.5),0 0 0 1px rgba(0,0,0,.18),inset 0 1px 0 rgba(255,255,255,.25);background-image:var(--grain);display:flex;flex-direction:column;gap:2px;text-shadow:0 1px 0 rgba(255,255,255,.2)}
.notice b{font-family:var(--stencil);letter-spacing:.2em;font-size:1.2em;border-bottom:1px solid rgba(38,36,31,.35);margin-bottom:3px;color:#141311;text-shadow:0 1px 0 rgba(255,255,255,.18)}
.notice span{color:#201f1d;font-weight:700;letter-spacing:.08em}
.notice small{opacity:1;color:#4d463c;font-size:.85em;margin-top:2px;font-weight:700;letter-spacing:.08em}
.notice::before{content:"";position:absolute;top:-6px;left:38%;width:34%;height:12px;background:linear-gradient(180deg,rgba(168,158,122,.8),rgba(100,84,52,.7));transform:rotate(3deg);box-shadow:0 0 8px rgba(211,182,110,.18)}

.observation-window{position:absolute;right:4%;top:22%;width:clamp(110px,13vw,190px);height:clamp(62px,8vw,105px);border:5px solid #101311;border-radius:4px;background:linear-gradient(150deg,#080c0e,#111d22 46%,#050708);box-shadow:inset 0 0 0 2px #3a4643,inset 0 0 28px #000,0 8px 16px #000b;overflow:hidden;transform:skewY(-2deg)}
.observation-window::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,#0000 0 3px,#bdd2d51a 3px 4px),linear-gradient(90deg,transparent 0 48%,#d68e4d1c 49% 51%,transparent 52%);animation:windowNoise 2.8s steps(2) infinite}
.observation-window::after{content:"";position:absolute;left:-10%;right:-10%;top:52%;height:1px;background:#d99b5b66;box-shadow:0 0 12px #d99b5b66;animation:scanline 5s linear infinite}
.observation-window i{position:absolute;left:12%;bottom:13%;width:22px;height:22px;border-radius:50%;background:#92372e;box-shadow:0 0 16px #c0281d88;animation:windowPulse 3.4s ease-in-out infinite}
.observation-window span,.observation-window b{position:absolute;left:12%;right:8%;font:700 7px var(--stencil);letter-spacing:.14em;color:#7d9aa0}
.observation-window span{top:10%}.observation-window b{bottom:17%;text-align:right;color:#cb725b;font-size:8px}
.wall-caption{position:absolute;right:4%;bottom:8%;width:min(250px,23vw);display:flex;flex-direction:column;gap:3px;text-align:right;text-shadow:0 2px 4px #000;pointer-events:none}
.wall-caption .caption-kicker{color:#9a6d4a;font:700 8px var(--stencil);letter-spacing:.22em}
.wall-caption strong{color:#bccdc2;font:600 clamp(11px,1vw,14px)/1.3 var(--mono);letter-spacing:.04em}
.wall-caption small{color:#63766e;font:600 8px var(--mono);letter-spacing:.12em}
#wall-names{color:#7d6a4e;letter-spacing:.08em;line-height:1.4;transition:color .8s}
#wall-names.has-names{color:#c9a96a;text-shadow:0 0 8px #c98a2b2e}
#wall-names.full-wall{color:#e3c98d;text-shadow:0 0 12px #c98a2b55}
.wall-chip{position:absolute;right:0;top:-16px;padding:1px 6px;border:1px solid #5b4629;background:#15100a;color:#d9b479;font:700 8px var(--mono);letter-spacing:.14em;font-style:normal}
.wall-chip.hidden{display:none}
@keyframes windowNoise{0%,100%{transform:translate(0)}20%{transform:translate(8px,-2px)}60%{transform:translate(-5px,3px)}80%{transform:translate(2px,0)}}
@keyframes scanline{from{transform:translateY(-26px)}to{transform:translateY(72px)}}
@keyframes windowPulse{0%,100%{opacity:.45;transform:scale(.8)}50%{opacity:1;transform:scale(1)}}

.gauge-panel{position:absolute;left:50%;bottom:9%;transform:translateX(-50%);width:min(760px,58vw);height:86%;padding:12px 18px 8px;border-radius:5px;
  display:grid;grid-template-columns:1fr 1.32fr 1fr;grid-template-rows:1fr auto auto;gap:6px 14px;align-items:center;justify-items:center;
  background:linear-gradient(160deg,#454c47,#1b1f1c 55%,#252a26),#222;border:2px solid #0a0c0b;
  box-shadow:inset 0 1px 0 #ffffff26,inset 0 0 0 5px #1c201d,inset 0 0 0 6px #000,0 10px 26px #000d}
.gauge-panel::before,.gauge-panel::after{content:"";position:absolute;top:8px;width:8px;height:8px;border-radius:50%;background:radial-gradient(#8a918b,#2a2e2b);box-shadow:0 0 0 2px #0008}
.gauge-panel::before{left:8px} .gauge-panel::after{right:8px}
.gauge{height:100%;max-height:100%;aspect-ratio:1;min-height:0;filter:drop-shadow(0 4px 5px #000c)}
.gauge.big{grid-column:2;grid-row:1}
#g-charge{grid-column:1;grid-row:1;height:86%} #g-integ{grid-column:3;grid-row:1;height:86%}
.gsvg{display:block;width:100%;height:100%}
.gsvg .tk{stroke:#25231d;stroke-width:1.4} .gsvg .tk.mj{stroke-width:2.6}
.gsvg .gn{font:600 10px var(--stencil);fill:#2b2a22;text-anchor:middle}
.gsvg .gl{font:700 8px var(--stencil);letter-spacing:.1em;fill:#2b2a22;text-anchor:middle}
.gsvg .ba{fill:none;stroke-width:5;opacity:.85} .ba.r{stroke:#9a2a20} .ba.a{stroke:#b3802f} .ba.g{stroke:#5f7862} .ba.n{stroke:#2b2a2233;stroke-width:2}
.gsvg .needle,.gsvg .mark{transform-origin:100px 100px;transition:transform .9s cubic-bezier(.3,1.5,.5,1)}
.gsvg .needle path{fill:#7d1a12;stroke:#2a0806;stroke-width:.6} .gsvg .needle circle{fill:#22201b;stroke:#000;stroke-width:1}
.gsvg .mark path{fill:#7d1a12}
.needle{animation:tremble 2.4s ease-in-out infinite}
@keyframes tremble{0%,100%{translate:0 0}50%{translate:.3px .2px}}

.lamp-row{grid-column:1/4;grid-row:2;display:flex;gap:clamp(8px,1.6vw,22px);justify-content:center}
.lp{display:flex;flex-direction:column;align-items:center;gap:3px;font:700 clamp(6px,.7vw,8.5px) var(--stencil);letter-spacing:.14em;color:#7b857e}
.lamp{display:block;width:clamp(10px,1.3vw,16px);height:clamp(10px,1.3vw,16px);border-radius:50%;background:#1a1c1a;border:2px solid #0a0b0a;box-shadow:inset 0 2px 3px #000,0 0 0 1px #3a403b;transition:background .25s,box-shadow .25s}
.lamp.on.amber{background:radial-gradient(circle at 35% 30%,#ffd07a,#c98a2b 60%,#7a5216);box-shadow:0 0 12px 3px #c98a2b88,inset 0 -2px 3px #0005;animation:lampPulse 1.6s ease-in-out infinite}
.lamp.on.pale{background:radial-gradient(circle at 35% 30%,#f4f6e6,#b9c8ae 60%,#6d7d68);box-shadow:0 0 12px 3px #c8d8bf66}
.lamp.on.red{background:radial-gradient(circle at 35% 30%,#ff9a86,#c0281d 60%,#6b100a);box-shadow:0 0 14px 4px #c0281d99;animation:lampPulse .9s ease-in-out infinite}
.lamp.on.green{background:radial-gradient(circle at 35% 30%,#d9f0c8,#7fa76e 60%,#3c5a33);box-shadow:0 0 12px 3px #7fa76e77}
@keyframes lampPulse{50%{filter:brightness(.7)}}

.digital{grid-column:1/4;grid-row:3;display:flex;gap:clamp(8px,1.8vw,24px);justify-content:center;flex-wrap:wrap;font:600 clamp(9px,.95vw,12px) var(--mono);color:var(--amber);background:#0a0c0a;padding:3px 12px;border-radius:2px;border:1px solid #000;box-shadow:inset 0 0 8px #000;letter-spacing:.06em;text-shadow:0 0 6px #c98a2b66}
.digital b{font-weight:600;color:#e2b062}

 
.desk{position:relative;flex:1;min-height:0;display:grid;grid-template-columns:minmax(150px,20%) 1fr minmax(170px,21%);grid-template-rows:minmax(0,1fr) auto;gap:14px 2.2vw;padding:16px 2.2vw 12px;
  background:
    linear-gradient(180deg,#f5f3eb06 0,#0000 3px),
    repeating-linear-gradient(90deg,#0000 0 3px,#ffffff05 3px 4px),
    linear-gradient(180deg,#2d332f,#131614 60%,#0b0d0c);
  border-top:2px solid #4a524c; box-shadow:inset 0 1px 0 rgba(255,255,255,.08),inset 0 22px 30px rgba(0,0,0,.15)}
.desk::before{content:"";position:absolute;inset:0;background:var(--grain);opacity:.5;pointer-events:none}
.desk>*{position:relative}
.plate{font:700 clamp(9px,1vw,12px) var(--stencil);letter-spacing:.3em;text-align:center;color:#b8b4a2;padding:4px 6px;border:1px solid #545c56;background:#181b19;text-transform:uppercase;margin-right:-.3em}
.plate.small{font-size:clamp(7px,.75vw,9px);letter-spacing:.14em;line-height:1.4;color:#8c9089;border-color:#333a35}

 
.desk::after{content:"";position:absolute;left:0;right:0;top:-6px;height:220px;pointer-events:none;z-index:5;opacity:0;
  background:
    radial-gradient(ellipse 46% 74% at 22% 0%,rgba(255,214,150,.13),transparent 66%),
    radial-gradient(ellipse 30% 60% at 74% 0%,rgba(190,226,205,.08),transparent 70%),
    linear-gradient(180deg,rgba(0,0,0,.42),transparent 74%);
  transition:opacity 1.4s ease}
#room[data-power="normal"] .desk::after{opacity:.42}
#room[data-power="low"] .desk::after{opacity:.72;animation:deskLightFade 6.5s ease-in-out infinite}
#room[data-power="critical"] .desk::after{opacity:.95;animation:deskLightFade 2.4s ease-in-out infinite}
#room[data-power="dead"] .desk::after{opacity:0}
@keyframes deskLightFade{0%,100%{filter:brightness(.92)}38%{filter:brightness(1.24)}72%{filter:brightness(.78)}}
#room[data-pressure="3"] .desk::after,#room[data-pressure="4"] .desk::after{opacity:.86}
#room[data-pressure="4"] .desk::after{animation:deskLightFade 3.6s ease-in-out infinite}

 
.desk .surface-mote{position:absolute;width:2px;height:2px;border-radius:50%;background:#e6d7a488;box-shadow:0 0 4px #e6d7a466;pointer-events:none;z-index:6;animation:surfaceDrift var(--d,9s) linear infinite;animation-delay:var(--dl,0s);opacity:.5}
@keyframes surfaceDrift{0%{transform:translate(0,0)}50%{transform:translate(7px,-9px)}100%{transform:translate(-5px,4px)}}
#room[data-pressure="3"] .desk .surface-mote,#room[data-pressure="4"] .desk .surface-mote{opacity:.85}
#room[data-wear="3"] .desk .surface-mote{opacity:.9}
