@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@600;700;800&family=IBM+Plex+Mono:wght@400;500;600&family=Inter:wght@400;500;600;700&display=swap');
:root{color-scheme:dark;--green:#c9ff88;--muted:#8b9894;--line:#26332e}*{box-sizing:border-box}body{margin:0;background:#0b110f;color:#e9eee6;font-family:Inter,Arial,sans-serif;background-image:radial-gradient(ellipse at 48% 45%,#182a203b,transparent 65%)}button,a{-webkit-tap-highlight-color:transparent}button{font:500 10px 'IBM Plex Mono',monospace;letter-spacing:1px;cursor:pointer;color:inherit;background:none;border:1px solid var(--line);border-radius:4px;min-height:42px}button:hover{border-color:var(--green);color:var(--green)}button:focus-visible,a:focus-visible{outline:2px solid var(--green);outline-offset:5px}header{height:87px;margin:0 3.5%;display:flex;align-items:center;gap:30px;border-bottom:1px solid var(--line);font:10px 'IBM Plex Mono',monospace;letter-spacing:1.3px}.brand{color:#eff4ec;text-decoration:none;display:flex;align-items:center;gap:12px;font-weight:600}.brand-icon{font-size:33px;color:var(--green)}.edition{margin-left:12px;color:#829087;font-size:9px}.online{margin-left:auto;color:#a5b3a9;display:flex;align-items:center;gap:8px}i{display:inline-block}.online i,.table-top i{width:5px;height:5px;background:var(--green);border-radius:50%;box-shadow:0 0 9px #c9ff8866}header button{padding:0 15px}header button span{margin-left:18px;color:var(--green)}main{max-width:1660px;margin:auto;padding:43px 3.5% 25px;display:grid;grid-template-columns:240px minmax(400px,1fr) 230px;gap:25px;align-items:center}.eyebrow{font:9px 'IBM Plex Mono',monospace;letter-spacing:1.5px;color:#99a99e}.intro{align-self:center}h1{font:800 clamp(60px,5.9vw,88px)/.87 'Barlow Condensed','Arial Narrow',Impact,sans-serif;letter-spacing:-1px;margin:26px 0 18px}h1 span{display:block;color:var(--green);font-size:.66em;letter-spacing:5px;margin-top:12px}.description{font-size:15px;line-height:1.7;color:#aab7ad}.specimen{display:flex;gap:11px;align-items:center;margin:28px 0;font:10px 'IBM Plex Mono',monospace}.specimen small{display:block;color:#7f9085;font:10px Inter,sans-serif;margin-top:7px}.cross{font-size:28px;color:var(--green);font-weight:200}.objective{border-top:1px solid var(--line);padding-top:22px;margin-top:25px}.objective p{font-size:12px;color:#9aaa9f;line-height:1.9;max-width:220px}.primary{width:100%;background:var(--green);color:#142016;border:0;margin-top:15px;font-size:10px;padding:0 15px;height:48px;display:flex;justify-content:space-between;align-items:center}.primary:hover{background:#deffb7;color:#142016}.primary span{font-size:21px}#message{font:9px 'IBM Plex Mono',monospace;color:#a1b09f;margin-top:12px;min-height:26px;line-height:1.6}.keys{margin-top:22px;display:grid;gap:9px}.keys>div{display:flex;align-items:center;gap:5px}.keys span{margin-left:7px;font-size:10px;color:#8b9d91}kbd{border:1px solid #34443a;border-radius:3px;min-width:24px;height:22px;padding:3px 6px;font:10px 'IBM Plex Mono',monospace;text-align:center}.game{position:relative;border:1px solid #304036;border-radius:120px 120px 18px 18px;background:radial-gradient(ellipse at 50% 20%,#192b24,#0c1511 68%);box-shadow:0 22px 60px #0008,inset 0 0 40px #030a06;overflow:hidden}.table-top{display:flex;justify-content:space-between;position:absolute;top:28px;left:16%;right:16%;font:8px 'IBM Plex Mono',monospace;color:#8c9d90;letter-spacing:1px}.table-top i{margin-right:6px}canvas{display:block;width:100%;aspect-ratio:1.06;touch-action:none}.table-bottom{display:flex;justify-content:space-between;padding:0 26px 20px;color:#8a9a8e;font:8px 'IBM Plex Mono',monospace;letter-spacing:1px}.table-bottom b{color:var(--green);padding:0 4px}.drain{font-size:7px;color:#b17983}.telemetry{align-self:center;padding-left:8px}.score-label{font:9px 'IBM Plex Mono',monospace;color:#8fa393;letter-spacing:1px;margin-top:25px}output{display:block;font:500 42px 'IBM Plex Mono',monospace;letter-spacing:-2px;color:var(--green);margin:8px 0 15px;text-shadow:0 0 25px #b6ff6330}.record{display:flex;justify-content:space-between;font:8px 'IBM Plex Mono',monospace;color:#889e8c;letter-spacing:.6px}.record b{color:#d0ddcd;font-size:10px}.stats{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:22px 0;margin-top:22px}.stats>div:last-child{border-left:1px solid var(--line);padding-left:24px}.stats span{display:block;font:8px 'IBM Plex Mono',monospace;color:#90a08f;letter-spacing:1px}.stats strong{display:block;font:28px 'IBM Plex Mono',monospace;margin-top:8px}.stats small{font-size:13px;color:#697d6a}.anatomy{margin-top:29px}.anatomy>.eyebrow{font-size:8px;letter-spacing:.8px;margin-bottom:13px}.anatomy>div:not(:first-child){display:flex;gap:10px;padding:14px 0;border-bottom:1px solid #243127;font-size:11px;align-items:center}.anatomy i{width:7px;height:7px;border-radius:50%;background:var(--c);box-shadow:0 0 12px color-mix(in srgb,var(--c) 40%,transparent)}.anatomy small{display:block;font-size:9px;color:#7e9282;margin-top:6px}.anatomy b{margin-left:auto;font:10px 'IBM Plex Mono',monospace;color:#b0c6ad}.monitor{margin-top:22px}.monitor svg{width:100%;height:45px}.monitor path{fill:none;stroke:#bdff86;stroke-width:1;opacity:.7}.monitor span{font:8px 'IBM Plex Mono',monospace;letter-spacing:1.8px;color:#88a27e}.quiet{border:none;color:#8da18e;margin-top:15px;padding:0}.touch{display:none}footer{margin:10px 3.5% 0;padding:20px 0;border-top:1px solid var(--line);display:flex;justify-content:space-between;font:8px 'IBM Plex Mono',monospace;letter-spacing:1.2px;color:#728578}footer b{color:#c9ff88;margin-left:20px;font-size:16px}@media(min-width:1500px){main{grid-template-columns:280px minmax(400px,1fr) 250px;gap:45px}}@media(max-width:1100px){main{grid-template-columns:185px minmax(340px,1fr) 170px;gap:15px;padding-left:2%;padding-right:2%}h1{font-size:60px}output{font-size:34px}.table-bottom{padding:0 15px 18px}.anatomy small{font-size:8px}.eyebrow{font-size:8px}.edition{display:none}}@media(max-width:800px){header{height:65px}.online{display:none}header button{margin-left:auto}main{display:flex;flex-wrap:wrap;padding:24px 4%;gap:23px}.intro{width:100%;display:grid;grid-template-columns:1fr 1fr;gap:0 20px}.intro>.eyebrow{grid-column:1/-1}h1{font-size:54px;grid-row:2/5;margin:15px 0}h1 span{font-size:30px}.description,.specimen,.objective,.keys{display:none}.primary{margin-top:24px}#message{margin-top:9px}.game{width:100%;order:2}.telemetry{width:100%;order:1;display:flex;align-items:center;flex-wrap:wrap;gap:10px 18px;padding:0}.telemetry>.eyebrow,.score-label,.record,.anatomy,.monitor{display:none}output{font-size:32px;margin:0}.stats{padding:0;margin:0;border:0;flex:1}.stats strong{font-size:20px;margin-top:3px}.stats>div:last-child{padding-left:15px}.quiet{margin:0}.touch{display:flex;gap:12px;padding:0 20px 16px}.touch button{flex:1;background:#1b2c20;touch-action:none;user-select:none}.table-top{top:20px}.table-bottom{font-size:7px}footer{font-size:7px}footer>span:last-child{display:none}}
@media(min-width:801px) and (max-height:850px){header{height:65px}main{padding-top:20px;padding-bottom:10px;align-items:center}.game{border-radius:85px 85px 16px 16px}canvas{height:calc(100vh - 165px);max-height:660px;aspect-ratio:auto}.table-top{top:21px}.table-bottom{padding-bottom:15px}.intro h1{font-size:61px;margin:17px 0 12px}.intro .description{font-size:13px;line-height:1.5}.specimen{margin:18px 0}.objective{margin-top:16px;padding-top:15px}.objective p{font-size:11px;line-height:1.6}.primary{margin-top:7px;height:43px}.keys{margin-top:9px;gap:5px}.anatomy{margin-top:20px}.anatomy>div:not(:first-child){padding:11px 0}.stats{padding:16px 0;margin-top:17px}.monitor{margin-top:12px}.quiet{margin-top:4px}footer{margin-top:0;padding:12px 0}.score-label{margin-top:16px}}
/* Allocate the desktop viewport explicitly: the table never sits below the fold. */
@media(min-width:801px){
  html,body{height:100%;margin:0}
  body{height:100dvh;display:grid;grid-template-rows:56px minmax(0,1fr) 30px;overflow:hidden}
  header{height:56px;min-height:0}
  main{width:100%;height:100%;min-height:0;max-width:1660px;margin:0 auto;padding:14px 3.5%;grid-template-columns:clamp(170px,18vw,250px) minmax(0,1fr) clamp(170px,17vw,240px);gap:22px}
  .game{height:100%;min-height:0;max-height:100%;display:flex;flex-direction:column;border-radius:70px 70px 16px 16px}
  canvas{flex:1 1 0;min-height:0;height:0;max-height:none;aspect-ratio:auto}
  .table-top{top:17px;left:15%;right:15%;font-size:7px}
  .table-bottom{flex:none;padding:0 18px 14px;font-size:7px}
  .intro,.telemetry{min-height:0;align-self:center}
  .intro h1{font-size:clamp(45px,7.3vh,75px);margin:16px 0 12px}
  .intro .description{font-size:12px;line-height:1.5;margin:12px 0}
  .specimen{margin:16px 0}.objective{margin-top:14px;padding-top:13px}.objective p{font-size:11px;line-height:1.6;margin-bottom:9px}
  .primary{margin-top:8px;height:42px;font-size:9px}.keys{margin-top:8px;gap:5px}#message{font-size:8px;margin-top:8px;min-height:25px}
  .score-label{margin-top:16px}output{font-size:clamp(30px,3.2vw,42px)}.stats{margin-top:16px;padding:15px 0}.anatomy{margin-top:20px}.anatomy>div:not(:first-child){padding:10px 0}.monitor{margin-top:12px}.monitor svg{height:35px}.quiet{margin:4px 0 0}
  footer{height:30px;margin:0 3.5%;padding:7px 0;font-size:7px;align-items:center}
}
@media(min-width:801px) and (max-height:740px){
  .specimen,.objective,.monitor{display:none}.intro h1{font-size:clamp(44px,8.5vh,63px)}.description{margin-bottom:18px!important}.intro>.eyebrow{font-size:7px;letter-spacing:1px}.anatomy small{display:none}.anatomy>div:not(:first-child){padding:11px 0}.anatomy>.eyebrow{font-size:7px}.stats{padding:12px 0}.telemetry>.eyebrow{font-size:8px}.keys{margin-top:15px}.table-top{font-size:6px}
}
@media(min-width:801px) and (max-height:540px){
  body{grid-template-rows:44px minmax(0,1fr) 22px}header{height:44px}.intro h1{font-size:39px}.intro .description,.anatomy,.edition,.intro>.eyebrow{display:none}.keys{margin-top:7px}.primary{min-height:36px;height:36px}.stats strong{font-size:22px}.score-label{margin-top:9px}footer{height:22px}.table-top{display:none}main{padding-top:8px;padding-bottom:8px}
}
/* A narrow desktop panel keeps the game alongside its score instead of stacking below an intro. */
@media(min-width:600px) and (max-width:800px){
  html,body{height:100%;margin:0}body{height:100dvh;display:grid;grid-template-rows:48px minmax(0,1fr) 24px;overflow:hidden}header{height:48px;margin:0 3%}.brand-icon{font-size:26px}header button{min-height:34px}
  main{display:grid;width:100%;height:100%;min-height:0;margin:0;padding:10px 3%;grid-template-columns:minmax(0,1fr) 140px;grid-template-rows:48px minmax(0,1fr);gap:10px 15px}
  .intro{grid-column:1/-1;grid-row:1;display:flex;width:100%;align-items:center;justify-content:space-between;gap:20px}.intro>.eyebrow,.intro .description,.specimen,.objective,.keys,#message{display:none}.intro h1{font-size:27px;line-height:.9;margin:0;letter-spacing:0}.intro h1 br{display:none}.intro h1 span{display:inline;font-size:22px;letter-spacing:2px;margin-left:12px}.primary{width:174px;flex:none;margin:0;height:36px;min-height:36px;font-size:8px}
  .game{grid-column:1;grid-row:2;order:initial;display:flex;flex-direction:column;min-height:0;height:100%;border-radius:55px 55px 12px 12px}canvas{flex:1 1 0;height:0;min-height:0;max-height:none;aspect-ratio:auto}.table-top{top:13px;font-size:5px;left:14%;right:14%}.table-bottom{font-size:5px;padding:0 12px 10px}.drain{font-size:5px}.touch{gap:8px;padding:0 12px 10px}.touch button{min-height:32px;font-size:7px}
  .telemetry{grid-column:2;grid-row:2;display:block;width:100%;align-self:center;order:initial}.telemetry>.eyebrow,.score-label,.record{display:block}.telemetry>.eyebrow{font-size:7px}.score-label{font-size:7px;margin-top:18px}output{font-size:29px;margin:8px 0 12px}.record{display:flex;font-size:6px}.record b{font-size:8px}.stats{margin-top:17px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:15px 0}.stats strong{font-size:20px}.stats small{font-size:10px}.stats>div:last-child{padding-left:12px}.stats span{font-size:6px}.anatomy{display:block;margin-top:18px}.anatomy>.eyebrow{font-size:6px;line-height:1.5}.anatomy>div:not(:first-child){font-size:8px;gap:7px;padding:9px 0}.anatomy b{font-size:8px}.anatomy small,.monitor{display:none}.quiet{margin-top:12px;font-size:8px}
  footer{height:24px;margin:0 3%;padding:7px 0;font-size:6px}
}
@media(max-width:599px){
  html,body{height:100%;margin:0}body{height:100dvh;display:grid;grid-template-rows:48px minmax(0,1fr) 22px;overflow:hidden}header{height:48px;gap:10px;margin:0 4%;font-size:8px}.brand{gap:8px}.brand-icon{font-size:26px}header button{min-height:32px;font-size:8px;padding:0 9px}header button span{margin-left:8px}
  main{display:grid;width:100%;height:100%;min-height:0;margin:0;padding:10px 4%;grid-template-columns:minmax(0,1fr);grid-template-rows:100px 42px minmax(0,1fr);gap:10px}
  .intro{grid-row:1;display:grid;grid-template-columns:minmax(0,1fr) 145px;grid-template-rows:16px 48px 28px;gap:0 10px}.intro>.eyebrow{font-size:6px;letter-spacing:.8px}.intro h1{grid-column:1;grid-row:2/4;font-size:37px;line-height:.9;margin:0;letter-spacing:-.4px}.intro h1 span{font-size:24px;letter-spacing:2px;margin-top:7px}.primary{grid-column:2;grid-row:2;margin:0;height:36px;min-height:36px;font-size:8px;padding:0 10px}#message{grid-column:2;grid-row:3;font-size:7px;line-height:1.5;margin-top:4px}
  .telemetry{grid-row:2;min-height:0;gap:10px;align-self:center;flex-wrap:nowrap}.telemetry output{font-size:27px}.stats strong{font-size:17px}.stats span{font-size:6px}.stats small{font-size:9px}.quiet{min-height:32px;font-size:8px}
  .game{grid-row:3;min-height:0;height:100%;display:flex;flex-direction:column;border-radius:50px 50px 12px 12px}canvas{flex:1 1 0;min-height:0;height:0;max-height:none;aspect-ratio:auto}.table-top{top:12px;font-size:5px;left:14%;right:14%;letter-spacing:.5px}.table-bottom{padding:0 12px 8px;font-size:5px}.drain{font-size:5px}.touch{padding:0 12px 10px;gap:9px}.touch button{min-height:36px;font-size:8px}footer{height:22px;margin:0 4%;padding:6px 0;font-size:6px}
}
button:disabled{cursor:default;opacity:.65}.primary:disabled{background:#ecae88;color:#34241d}.primary span{font-size:12px}
.scene-banner{position:absolute;bottom:37px;left:50%;transform:translateX(-50%);white-space:nowrap;pointer-events:none;padding:8px 12px;border:1px solid #7ca36c55;border-radius:3px;background:#101f19ed;color:#d3efb7;font:8px 'IBM Plex Mono',monospace;letter-spacing:1px}.scene-banner[hidden]{display:none}
@media(max-width:800px){.scene-banner{bottom:76px;font-size:6px;padding:6px 9px}}
/* Startup presents only the loading screen until a textured 3D frame is ready. */
body > header,body > main,body > footer{opacity:0;transition:opacity .65s ease}
body[data-load-state="ready"] > header,body[data-load-state="ready"] > main,body[data-load-state="ready"] > footer{opacity:1}
#table-fallback{display:none!important}
#loading-screen{position:fixed;inset:0;z-index:100;display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(ellipse at center,#1a3023,#0b110f 65%);text-align:center;opacity:1;visibility:visible;transition:opacity .65s ease,visibility 0s linear .65s}
#loading-screen h2{font:800 clamp(30px,6vw,58px)/1 'Barlow Condensed',Impact,sans-serif;letter-spacing:2px;margin:18px 0 4px}
#loading-message{font:11px 'IBM Plex Mono',monospace;color:#a5b99f;line-height:1.7;max-width:340px;padding:0 20px}
.loading-emblem{font-size:58px;color:#c9ff88;margin-bottom:24px;text-shadow:0 0 28px #b8ed6e44}
.loading-track{width:150px;height:2px;background:#314b36;overflow:hidden;margin-top:16px}
.loading-track i{display:block;width:45%;height:100%;background:#c9ff88;animation:loading-scan 1.5s ease-in-out infinite}
@keyframes loading-scan{from{transform:translateX(-110%)}to{transform:translateX(330%)}}
body[data-load-state="ready"] #loading-screen{opacity:0;visibility:hidden;pointer-events:none}
body[data-load-state="error"] .loading-track{display:none}
#loading-retry{margin-top:16px;padding:0 22px}
@media(prefers-reduced-motion:reduce){body > header,body > main,body > footer,#loading-screen{transition:none}.loading-track i{animation:none;width:100%}}
/* Keep the view control available on short and narrow screens. */
.table-top{display:flex;align-items:center;z-index:2;pointer-events:none}
#view-toggle{pointer-events:auto;font:inherit;letter-spacing:inherit;min-height:32px;padding:5px 8px;margin:-8px -8px -8px 4px;border-color:#647b4755;background:#102017cc;color:#b7c8a6;white-space:nowrap}
#view-toggle:hover{color:#dcffba;border-color:#a1c276;background:#203322}
#view-toggle:focus-visible{outline-offset:2px}
/* Independent transparent wordmarks can reflow without scaling a fixed lockup. */
.intro h1.game-logo,#loading-screen h2.game-logo{display:flex;flex-direction:column;align-items:center;gap:5px;font-size:0;line-height:0;letter-spacing:0;width:100%;margin:16px 0 18px}
.game-logo .logo-piece{display:block;position:relative;overflow:hidden;flex:none;margin:0;line-height:0;font-size:0;letter-spacing:0}
.game-logo .logo-piece img{display:block;position:absolute;height:auto;max-width:none}
.game-logo .logo-glow{width:76%;aspect-ratio:1628/654}
.game-logo .logo-glow img{width:102.7%;left:-1.54%;top:-19.72%}
.game-logo .logo-autopsy{width:100%;aspect-ratio:2132/521}
.game-logo .logo-autopsy img{width:101.88%;left:-.94%;top:-17.66%}
.game-logo .logo-pinball{width:72%;aspect-ratio:2074/475}
.game-logo .logo-pinball img{width:104.73%;left:-2.07%;top:-21.47%}
#loading-screen h2.loading-logo{width:min(460px,80vw);gap:8px;margin:20px 0 18px}
#loading-screen .loading-emblem{font-size:28px;margin-bottom:12px}
@media(min-width:600px) and (max-width:800px){
 .intro h1.game-logo{flex:1;min-width:0;flex-direction:row;gap:5px;margin:0;justify-content:flex-start}
 .intro h1.game-logo .logo-glow{width:23%}.intro h1.game-logo .logo-autopsy{width:43%}.intro h1.game-logo .logo-pinball{width:29%}
}
@media(max-width:599px){.intro h1.game-logo{align-self:center;max-width:190px;margin:0;gap:1px}.intro h1.game-logo .logo-glow{width:55%}.intro h1.game-logo .logo-autopsy{width:85%}.intro h1.game-logo .logo-pinball{width:60%}}
@media(min-width:801px) and (max-height:600px){.intro h1.game-logo{max-width:175px;margin:8px auto;gap:2px}}
@media(max-height:560px){#loading-screen h2.loading-logo{width:min(280px,65vw);gap:3px;margin:8px 0}#loading-screen .loading-emblem{display:none}}
.primary.begin-procedure{justify-content:center;text-align:center;font-size:13px;font-weight:600;letter-spacing:.7px;padding:0 10px}
.primary.begin-procedure span{display:none}
.scene-banner.awaiting-release{animation:release-prompt 2.6s ease-in-out infinite}
@keyframes release-prompt{0%,100%{opacity:1}50%{opacity:.25}}
@media(max-width:599px){.primary.begin-procedure{font-size:11px;letter-spacing:.3px}}
@media(prefers-reduced-motion:reduce){.scene-banner.awaiting-release{animation:none}}
/* Narrow landscape screens: collapse the intro to one row so the table still fits without scrolling. */
@media(max-width:599px) and (max-height:479px){
  body{grid-template-rows:40px minmax(0,1fr) 0}header{height:40px;font-size:7px}header button{min-height:28px;font-size:7px}footer{display:none}
  main{padding:6px 4%;grid-template-rows:36px 30px minmax(0,1fr);gap:6px}
  .intro{grid-template-columns:minmax(0,1fr) 130px;grid-template-rows:36px;align-items:center}.intro>.eyebrow,#message{display:none}
  .intro h1.game-logo{grid-column:1;grid-row:1;flex-direction:row;justify-content:flex-start;width:100%;max-width:300px;gap:4px;margin:0}
  .intro h1.game-logo .logo-glow{width:24%}.intro h1.game-logo .logo-autopsy{width:44%}.intro h1.game-logo .logo-pinball{width:30%}
  .primary{grid-column:2;grid-row:1;height:30px;min-height:30px}.primary.begin-procedure{font-size:9px}
  .telemetry{grid-row:2;gap:8px}.telemetry output{font-size:20px}.stats strong{font-size:14px}.stats small{font-size:8px}.quiet{min-height:28px;font-size:7px}
  .game{grid-row:3;border-radius:36px 36px 10px 10px}.table-top,.table-bottom{display:none}
  .touch{padding:0 10px 8px;gap:8px}.touch button{min-height:30px;font-size:7px}
}

