
/* Layout: full-bleed WebGL fab floor; instrument overlays — brand top-left, process card right, transport + 10-step rail along the bottom. */
:root{
  color-scheme:dark;
  --ink:#080b10;
  --panel:rgba(12,16,23,.74);
  --line:rgba(170,188,214,.16);
  --fg:#e8ecf2;
  --mute:#8e9aad;
  --amber:#f2b544;       /* lithography yellow-room light */
  --amber-dim:rgba(242,181,68,.16);
  --cyan:#74d4ff;
  --pass:#5fd08a;
  --fail:#ff6b5e;
  --f-display:"Noto Serif SC","Songti SC",serif;
  --f-body:"Noto Sans SC","PingFang SC","Microsoft YaHei",system-ui,sans-serif;
  --f-mono:"JetBrains Mono",ui-monospace,"SFMono-Regular",Menlo,monospace;
}
html,body{height:100%}
body{background:var(--ink);color:var(--fg);font-family:var(--f-body);overflow:hidden}
#gl{position:fixed;inset:0;width:100%;height:100%;display:block;outline:none}
#fade{position:fixed;inset:0;background:var(--ink);opacity:0;pointer-events:none;transition:opacity .7s ease}

#ui{position:fixed;inset:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,360px);grid-template-rows:auto minmax(0,1fr) auto;gap:16px;
  padding-block:max(18px,env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-bottom,0px));
  padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));pointer-events:none}
#ui > *{pointer-events:auto}

.brand{grid-column:1;grid-row:1;align-self:start;justify-self:start;pointer-events:none}
.eyebrow{font-family:var(--f-mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--amber)}
.brand h1{margin:6px 0 0;font-family:var(--f-display);font-weight:900;font-size:clamp(22px,3vw,34px);letter-spacing:.04em;text-wrap:balance;text-shadow:0 2px 18px rgba(0,0,0,.6)}
.brand p{margin:6px 0 0;font-size:12px;color:var(--mute)}

.panel{grid-column:2;grid-row:1 / 3;align-self:start;background:var(--panel);backdrop-filter:blur(14px) saturate(1.2);-webkit-backdrop-filter:blur(14px) saturate(1.2);
  border:1px solid var(--line);border-radius:3px;padding:18px 20px 16px;max-height:100%;overflow:auto;display:flex;flex-direction:column;gap:12px}
.stage-no{display:flex;align-items:baseline;gap:8px;font-family:var(--f-mono)}
.stage-no b{font-size:30px;font-weight:700;color:var(--amber);line-height:1}
.stage-no .of{color:var(--mute);font-size:13px}
.stage-no .en{margin-left:auto;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--mute);text-align:right}
.panel h2{margin:0;font-family:var(--f-display);font-weight:600;font-size:23px;letter-spacing:.03em;text-wrap:balance}
.panel p{margin:0;font-size:13.5px;line-height:1.75;color:#c9d0db}
dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:12.5px}
dt{color:var(--mute)}
dd{margin:0;font-family:var(--f-mono);text-align:right;font-variant-numeric:tabular-nums;color:var(--fg)}
.params{padding-top:12px;border-top:1px solid var(--line)}
.live{padding:12px 12px 10px;border:1px solid var(--amber-dim);background:rgba(242,181,68,.045);border-radius:2px;display:flex;flex-direction:column;gap:8px}
.live-h{display:flex;align-items:center;gap:8px;font-family:var(--f-mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--amber)}
.live-h .dot{width:6px;height:6px;border-radius:50%;background:var(--amber);box-shadow:0 0 10px var(--amber);animation:blink 1.4s infinite}
@keyframes blink{50%{opacity:.25}}
#sLive dd.pass{color:var(--pass)} #sLive dd.fail{color:var(--fail)} #sLive dd.hot{color:#ff9a4a} #sLive dd.cy{color:var(--cyan)}
#emap{align-self:center;width:150px;height:150px}

.bar{grid-column:1 / -1;grid-row:3;background:var(--panel);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--line);border-radius:3px;padding:10px 12px;display:flex;flex-direction:column;gap:9px;min-width:0}
.row{display:flex;align-items:center;gap:10px;min-width:0}
.btn{appearance:none;border:1px solid var(--line);background:rgba(255,255,255,.03);color:var(--fg);font:500 12px var(--f-body);height:32px;min-width:32px;padding:0 10px;border-radius:2px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap}
.btn:hover{border-color:rgba(242,181,68,.55)}
.btn:focus-visible,.step:focus-visible,#scrub:focus-visible,select:focus-visible{outline:2px solid var(--amber);outline-offset:2px}
.btn.primary{background:var(--amber);color:#1a1205;border-color:var(--amber);font-weight:700;min-width:76px}
.btn[aria-pressed="true"]{border-color:var(--amber);color:var(--amber)}
select.btn{padding-right:6px}
.hint{margin-left:auto;font-size:11px;color:var(--mute);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
#scrub{flex:1;min-width:0;accent-color:var(--amber);height:18px}
.time{font-family:var(--f-mono);font-size:11px;color:var(--mute);font-variant-numeric:tabular-nums;white-space:nowrap}
.steps-wrap{overflow-x:auto;scrollbar-width:thin;min-width:0}
#steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(10,minmax(86px,1fr));gap:6px}
.step{all:unset;box-sizing:border-box;cursor:pointer;display:flex;flex-direction:column;gap:3px;width:100%;padding:7px 9px 8px;border:1px solid var(--line);border-radius:2px;position:relative;overflow:hidden;background:rgba(255,255,255,.02)}
.step .n{font-family:var(--f-mono);font-size:10.5px;color:var(--mute)}
.step .t{font-size:12.5px;white-space:nowrap}
.step::after{content:"";position:absolute;left:0;bottom:0;height:2px;width:var(--p,0%);background:var(--amber)}
.step.done::after{width:100%;background:rgba(242,181,68,.4)}
.step.on{border-color:rgba(242,181,68,.7);background:rgba(242,181,68,.08)}
.step.on .n{color:var(--amber)}
#err[hidden]{display:none}
#err{position:fixed;inset:0;display:grid;place-items:center;padding:24px;text-align:center;color:var(--mute);font-size:14px}

@media (max-width:760px){
  #ui{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto auto;gap:10px}
  .brand p{display:none}
  .panel{grid-column:1;grid-row:3;align-self:end;max-height:36vh;padding:14px 14px 12px;gap:9px}
  .panel h2{font-size:19px}
  .panel p{font-size:12.5px;line-height:1.65}
  .params{display:none}
  #emap{width:110px;height:110px}
  .bar{grid-row:4}
  .hint{display:none}
}
@media (prefers-reduced-motion:reduce){ .live-h .dot{animation:none} #fade{transition:none} }
