:root{--deep: #0d0a12;--panel: rgba(19, 14, 24, .92);--panel-solid: #150f1c;--line: rgba(199, 155, 255, .26);--line-soft: rgba(199, 155, 255, .13);--ink: #f1e9f6;--muted: #b6a3c8;--violet: #c79bff;--teal: #6fd6c0;--gold: #ffcf82;--red: #ff8f7a}*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--deep)}body{color:var(--ink);font-family:Iowan Old Style,Palatino Linotype,Georgia,serif}button,input{font:inherit}button{color:inherit;cursor:pointer;background:none;border:0}button:disabled{cursor:not-allowed;opacity:.34}button:focus-visible,input:focus-visible{outline:2px solid var(--gold);outline-offset:2px}#app{position:fixed;inset:0;overflow:hidden}#stage{position:fixed;inset:0;display:block;width:100%;height:100%;touch-action:none}#grain{position:fixed;inset:0;z-index:2;pointer-events:none;opacity:.05;background-image:repeating-linear-gradient(0deg,transparent 0,transparent 3px,rgba(226,214,240,.5) 4px)}#play{position:fixed;inset:0;z-index:5;display:grid;grid-template-columns:minmax(272px,322px) 1fr minmax(318px,396px);grid-template-rows:auto auto 1fr;grid-template-areas:"head head head" "meters meters meters" "swatch spacer vat";gap:12px;padding:14px 16px 16px;pointer-events:none}#play>*{pointer-events:auto}#hud{grid-area:head;display:flex;align-items:center;justify-content:space-between;gap:14px}.mark{display:flex;align-items:center;gap:11px;letter-spacing:.2em;font-size:13px;font-weight:700}.mark i{display:block;width:26px;height:26px;border-radius:50%;background:radial-gradient(circle at 50% 38%,#f0e2ff,#8f5fd0 46%,#2a1738);box-shadow:0 0 18px #b478ff66}.mark span{display:grid;gap:3px}.mark small{color:var(--muted);font:10px ui-monospace,monospace;letter-spacing:.14em}#status{margin:0;padding:8px 16px;border:1px solid var(--line);background:var(--panel);color:var(--gold);font:11px ui-monospace,monospace;letter-spacing:.1em;text-align:center}.hud-actions{display:flex;gap:6px}.hud-actions button{padding:9px 11px;border:1px solid var(--line);background:var(--panel);font:10px ui-monospace,monospace;letter-spacing:.1em}.hud-actions button:hover{border-color:var(--violet);color:var(--violet)}.hud-actions button[aria-pressed=true]{border-color:var(--teal);color:var(--teal)}#meters{grid-area:meters;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}.meter{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;align-items:center;gap:3px 9px;padding:7px 11px;border:1px solid var(--line);background:var(--panel)}.meter b{grid-column:1;grid-row:1;color:var(--muted);font:9px ui-monospace,monospace;letter-spacing:.16em}.meter em{grid-column:2;grid-row:1;color:var(--ink);font:11px ui-monospace,monospace;font-style:normal;text-align:right;white-space:nowrap}.meter .track{position:relative;grid-column:1 / -1;grid-row:2;display:block;height:6px;background:#f1e9f629}.meter .track i{display:block;height:100%;width:0;background:var(--violet);transition:width .3s linear}.meter .track u{position:absolute;top:-2px;height:10px;background:#6fd6c033;border-left:1px solid var(--teal);border-right:1px solid var(--teal)}#meter-clock .track i{background:var(--gold)}#meter-clock em{color:var(--gold);font-size:15px}#meter-clock.hot em{color:var(--red)}#meter-clock.hot .track i{background:var(--red)}#cu-temp-fill{background:var(--red)!important}#cu-dye-fill{background:var(--teal)!important}#swatch-panel{grid-area:swatch;align-self:end;display:flex;flex-direction:column;gap:9px;max-height:100%;overflow-y:auto;padding:14px;border:1px solid var(--line);background:var(--panel)}.panel-head{display:grid;gap:5px}.eyebrow{color:var(--violet);font:10px ui-monospace,monospace;letter-spacing:.18em}.panel-head h2{margin:0;font-size:20px;line-height:1.14;letter-spacing:-.01em}.panel-head p{margin:0;color:var(--muted);font-size:12px;line-height:1.45}.swatch-strip{display:grid;grid-template-columns:1fr 1fr;gap:6px}.swatch-cell{display:grid;gap:2px;margin:0;padding:6px;border:1px solid var(--line-soft);background:#0d0912d1}.swatch-cell i{display:block;height:32px;border:1px solid rgba(241,233,246,.42)}.swatch-cell b{font:9px ui-monospace,monospace;letter-spacing:.1em}.swatch-cell span{color:var(--muted);font:8px ui-monospace,monospace}.swatch-lost{grid-column:1 / -1;margin:0;padding:6px 8px;border-left:2px solid var(--red);background:#ff8f7a1f;color:#ffd9d0;font:9px ui-monospace,monospace;letter-spacing:.06em}.swatch-lost b{font-weight:700}.swatch-lost.clean{border-left-color:var(--teal);background:#6fd6c01f;color:#d3f6ee}#diagnosis{display:grid;gap:6px;margin:0;padding:0;list-style:none}#diagnosis li{padding:7px 9px;border-left:2px solid var(--gold);background:#ffcf821c;color:#f4e8d3;font-size:12px;line-height:1.42}#diagnosis li:first-child{border-left-color:var(--red);background:#ff8f7a1f}#vat{grid-area:vat;display:flex;flex-direction:column;gap:10px;align-self:start;max-height:100%;overflow-y:auto;padding:14px;border:1px solid var(--line);background:var(--panel)}#vessels{display:grid;gap:8px}.vessel{display:grid;gap:5px;padding:9px 10px;border:1px solid var(--line-soft);background:#0d0912d1}.vessel.on{border-color:var(--teal)}.vessel-title{color:var(--muted);font:9px ui-monospace,monospace;letter-spacing:.14em}.vessel-title b{color:var(--teal);font-weight:400}.vessel-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:7px}.vessel-row.chem{grid-template-columns:repeat(3,1fr)}.vessel-row button{padding:7px 9px;border:1px solid var(--line);background:#0d0912e6;font:9px ui-monospace,monospace;letter-spacing:.1em}.vessel-row button:hover{border-color:var(--violet);color:var(--violet)}.vessel-read{color:var(--ink);font:10px ui-monospace,monospace;text-align:center}.shelf{display:grid;gap:6px;padding-top:9px;border-top:1px solid var(--line-soft)}.shelf-title{display:flex;gap:8px;align-items:baseline;color:var(--muted);font:9px ui-monospace,monospace;letter-spacing:.16em}.shelf-title em{color:var(--gold);font-style:normal;font-size:9px;letter-spacing:.02em;line-height:1.4}.shelf-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}.reagent{display:grid;gap:2px;padding:7px 6px;border:1px solid var(--line-soft);background:#0d0912d1;text-align:left}.reagent.wide{grid-column:1 / -1;padding:8px 9px}.reagent:hover{border-color:var(--violet)}.reagent[aria-pressed=true]{border-color:var(--violet);background:#c79bff33}.reagent b{font:10px ui-monospace,monospace;letter-spacing:.06em}.reagent span{color:var(--muted);font:8px ui-monospace,monospace}.reagent.wide b{color:var(--teal)}#rack-block{display:grid;gap:6px;padding-top:9px;border-top:1px solid var(--line-soft)}#rack{display:grid;gap:5px}.length{display:grid;grid-template-columns:22px 1fr auto;align-items:center;gap:9px;padding:7px 9px;border:1px solid var(--line-soft);background:#0d0912d1;text-align:left}.length:hover{border-color:var(--violet)}.length.on{border-color:var(--gold);background:#ffcf8221}.length .chip{display:block;width:22px;height:22px;border:1px solid rgba(241,233,246,.45)}.length .what{display:grid;gap:2px;min-width:0}.length .what b{font:10px ui-monospace,monospace;letter-spacing:.06em}.length .what span{overflow:hidden;color:var(--muted);font:9px ui-monospace,monospace;text-overflow:ellipsis;white-space:nowrap}.length .pct{color:var(--teal);font:11px ui-monospace,monospace}.length.busy .pct{color:var(--gold)}#moves{display:grid;grid-template-columns:1fr 1fr;gap:6px}#moves button{padding:11px 8px;border:1px solid var(--line);background:#0d0912e0;font:10px ui-monospace,monospace;letter-spacing:.08em}#moves button:hover:not(:disabled){border-color:var(--violet);color:var(--violet)}.primary{border-color:var(--teal)!important;background:#6fd6c0f0!important;color:#06120f!important}.primary:hover:not(:disabled){background:#9ae8d6!important;color:#06120f!important}.rate{display:flex;align-items:center;gap:9px;padding-top:9px;border-top:1px solid var(--line-soft)}.rate>span{color:var(--muted);font:9px ui-monospace,monospace;letter-spacing:.14em}#rate-buttons{display:flex;gap:4px;margin-left:auto}#rate-buttons button{padding:6px 9px;border:1px solid var(--line-soft);font:9px ui-monospace,monospace}#rate-buttons button.on{border-color:var(--teal);color:var(--teal)}.screen{position:fixed;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;padding:26px;background:#09060dcc}.title-screen{justify-content:space-between;align-items:flex-end;background:linear-gradient(94deg,#09060df2,#09060da8 46%,#09060d3d)}.title-copy{width:min(660px,100%);padding:26px 28px;border:1px solid var(--line);background:var(--panel-solid)}.title-copy h1{margin:12px 0 14px;font-size:clamp(52px,9vw,104px);line-height:.8;letter-spacing:-.055em;font-weight:700}.title-copy p{max-width:600px;margin:0;color:#e2d6ee;font-size:14px;line-height:1.55}.duties{display:grid;gap:8px;margin:18px 0 0;padding:0;list-style:none}.duties li{display:grid;gap:2px;padding:8px 10px;border-left:2px solid var(--line);background:#c79bff17}.duties b{color:var(--gold);font:10px ui-monospace,monospace;letter-spacing:.14em}.duties span{color:var(--muted);font-size:12px;line-height:1.4}.title-controls{display:flex;flex-wrap:wrap;gap:7px 15px;margin:18px 0;color:var(--muted);font:10px ui-monospace,monospace}kbd{display:inline-block;border:1px solid var(--line);padding:2px 5px;color:var(--ink);font:9px ui-monospace,monospace}.title-copy small{display:block;margin-top:12px;color:#a894bb;font:10px ui-monospace,monospace}.brief-card{width:min(300px,100%);padding:18px;border:1px solid var(--line);background:var(--panel-solid)}.brief-card>span{color:var(--violet);font:10px ui-monospace,monospace;letter-spacing:.16em}.brief-card p{margin:10px 0 0;color:var(--muted);font-size:12.5px;line-height:1.5}.brief-card p.warn{color:var(--gold)}.standards{display:grid;gap:5px;margin-top:10px}.standard{display:flex;align-items:center;gap:9px;padding:5px 7px;border:1px solid var(--line-soft)}.standard i{display:block;width:20px;height:20px;border:1px solid rgba(241,233,246,.42)}.standard span{color:var(--muted);font:9px ui-monospace,monospace}.modal{background:#07050adb}.modal-card{width:min(540px,100%);max-height:90vh;overflow-y:auto;padding:26px;border:1px solid var(--line);background:var(--panel-solid);box-shadow:0 26px 80px #000000a6}.modal-card h2{margin:10px 0 8px;font-size:28px;line-height:1.05;letter-spacing:-.02em}.modal-card p{margin:0 0 10px;color:var(--muted);font-size:13px;line-height:1.55}.modal-card p.warn{color:var(--gold)}.modal-card button{margin-top:10px}.toggle{display:flex;align-items:center;gap:9px;margin:16px 0;color:var(--muted);font:11px ui-monospace,monospace}.toggle input{accent-color:var(--violet);width:16px;height:16px}.secondary{padding:12px 16px;width:100%;border:1px solid var(--line);background:transparent;color:var(--muted);font:10px ui-monospace,monospace;letter-spacing:.12em}.secondary:hover{border-color:var(--violet);color:var(--ink)}.help-card{width:min(640px,100%)}.help-card dl{display:grid;grid-template-columns:150px 1fr;gap:9px 14px;margin:18px 0}.help-card dt{color:var(--gold);font:10px ui-monospace,monospace;letter-spacing:.06em}.help-card dd{margin:0;color:var(--muted);font-size:12px;line-height:1.45}.report-swatches{display:flex;flex-wrap:wrap;gap:7px;margin:14px 0 10px}.report-swatch{display:grid;gap:4px;padding:8px;border:1px solid var(--line-soft);min-width:104px}.report-swatch i{display:block;height:34px;border:1px solid rgba(241,233,246,.4)}.report-swatch b{font:10px ui-monospace,monospace;font-weight:400}.report-swatch span{color:var(--muted);font:9px ui-monospace,monospace}.report-swatch.bad b{color:var(--red)}.report-swatch.good b{color:var(--teal)}.report-notes{display:grid;gap:6px;margin:0 0 12px;padding:0;list-style:none}.report-notes li{padding:7px 9px;border-left:2px solid var(--gold);background:#ffcf821c;color:#f4e8d3;font-size:12px;line-height:1.42}.ending-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:16px 0 10px}.ending-stats span{display:grid;gap:5px;padding:9px;border:1px solid var(--line-soft)}.ending-stats small{color:var(--muted);font:8px ui-monospace,monospace;letter-spacing:.12em}.ending-stats b{font:16px ui-monospace,monospace;font-weight:400}.ending-colours{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 8px}.ending-colours div{display:grid;gap:3px;padding:7px;border:1px solid var(--line-soft)}.ending-colours i{display:block;width:54px;height:20px;border:1px solid rgba(241,233,246,.4)}.ending-colours small{color:var(--muted);font:8px ui-monospace,monospace}@media(max-width:1120px){#play{grid-template-columns:minmax(0,1fr) minmax(300px,366px);grid-template-areas:"head head" "meters meters" "swatch vat"}#meters{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:800px){#play{grid-template-columns:1fr;grid-template-rows:auto auto minmax(96px,.7fr) auto minmax(0,1.3fr);grid-template-areas:"head" "meters" "spacer" "swatch" "vat";gap:7px;padding:8px 9px 9px}#hud{flex-wrap:wrap;row-gap:6px;gap:8px}#status{order:3;width:100%;padding:6px 9px;font-size:10px}.mark{font-size:11px}.mark i{width:20px;height:20px}.mark small{display:none}.hud-actions button{padding:7px 8px;font-size:9px}#meters{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.meter{padding:5px 7px}.meter b{font-size:8px}.meter em{font-size:10px}#swatch-panel{align-self:stretch;padding:9px;gap:7px}.panel-head h2{font-size:15px}.swatch-cell{padding:5px}.swatch-cell i{height:20px}#diagnosis li:not(:first-child){display:none}#vat{max-height:100%;padding:10px;gap:8px}.panel-head p{display:none}.title-screen{flex-direction:column;align-items:stretch;justify-content:center;padding:14px;overflow-y:auto}.brief-card{display:none}.title-copy{padding:18px}.duties{display:none}.title-controls{gap:6px 11px}.help-card dl{grid-template-columns:1fr}.help-card dt{margin-top:6px}.modal-card{padding:19px}.modal-card h2{font-size:23px}.ending-stats{grid-template-columns:repeat(2,1fr)}}@media(max-width:470px){.shelf-row{grid-template-columns:repeat(2,minmax(0,1fr))}#moves{grid-template-columns:1fr}.vessel-read{font-size:9px}.length{grid-template-columns:18px 1fr auto;padding:6px 7px;gap:7px}.length .chip{width:18px;height:18px}.swatch-strip{gap:4px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.001ms!important;animation-duration:.001ms!important}}
