:root{--color-paper:oklch(15% .012 265);--color-paper-2:oklch(19% .014 265);--color-paper-3:oklch(24% .016 265);--color-stage:oklch(10% .01 265);--color-rule:oklch(30% .014 265);--color-rule-2:oklch(40% .014 265);--color-muted:oklch(68% .012 265);--color-ink-2:oklch(82% .01 265);--color-ink:oklch(95% .006 265);--color-accent:oklch(80% .14 80);--color-accent-2:oklch(72% .15 75);--color-accent-ink:oklch(20% .04 80);--color-accent-wash:oklch(80% .14 80/.1);--color-focus:oklch(85% .15 85);--color-danger:oklch(70% .16 25);--color-scrim:oklch(10% .01 265/.72);--color-flash:oklch(98% .004 265);--font-display:"Bricolage Grotesque Variable", "Segoe UI", sans-serif;--font-body:"Geist Variable", "Segoe UI", sans-serif;--font-mono:"Geist Mono Variable", ui-monospace, monospace;--text-2xs:.6875rem;--text-xs:.75rem;--text-sm:.875rem;--text-md:1rem;--text-lg:1.25rem;--text-xl:1.75rem;--text-countdown:clamp(4rem, 12vw, 8rem);--tracking-tight:-.02em;--tracking-micro:.08em;--space-3xs:.25rem;--space-2xs:.5rem;--space-xs:.75rem;--space-sm:1rem;--space-md:1.5rem;--space-lg:2rem;--space-xl:3rem;--radius-stage:6px;--radius-control:4px;--radius-round:999px;--rule:1px solid var(--color-rule);--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in:cubic-bezier(.7, 0, .84, 0);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--dur-short:.14s;--dur-flash:.35s}*{box-sizing:border-box}html,body{overflow-x:clip}body{background:var(--color-paper);min-height:100vh;color:var(--color-ink-2);font:400 var(--text-md) / 1.5 var(--font-body);-webkit-font-smoothing:antialiased;flex-direction:column;margin:0;display:flex}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.bar{justify-content:space-between;align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-md);border-bottom:var(--rule);display:flex}.wordmark{min-width:0;font:650 var(--text-lg) / 1.1 var(--font-display);letter-spacing:var(--tracking-tight);color:var(--color-ink);overflow-wrap:anywhere;margin:0}.lang select{font:500 var(--text-sm) var(--font-body);color:var(--color-ink-2);background:var(--color-paper-2);border:var(--rule);border-radius:var(--radius-control);padding:var(--space-3xs) var(--space-xs);cursor:pointer}.lang select:hover{border-color:var(--color-rule-2)}.bench{gap:var(--space-md);padding:var(--space-md);flex:1;grid-template-columns:minmax(0,1fr) minmax(300px,380px);align-items:start;display:grid}.stage-col{gap:var(--space-sm);flex-direction:column;min-width:0;display:flex}.stage{background:var(--color-stage);border:var(--rule);border-radius:var(--radius-stage);aspect-ratio:16/9;position:relative;overflow:hidden}#canvas{object-fit:contain;width:100%;height:100%;display:block}.gate{justify-content:flex-end;align-items:flex-start;gap:var(--space-sm);padding:var(--space-lg);flex-direction:column;display:flex;position:absolute;inset:0}.gate[hidden]{display:none}.gate__lede{max-width:22ch;font:600 var(--text-xl) / 1.15 var(--font-display);letter-spacing:var(--tracking-tight);color:var(--color-ink);margin:0}.gate__note{max-width:46ch;font-size:var(--text-sm);color:var(--color-muted);margin:0}.status{top:var(--space-sm);left:var(--space-sm);max-width:calc(100% - var(--space-lg));padding:var(--space-3xs) var(--space-2xs);background:var(--color-scrim);border-radius:var(--radius-control);font:500 var(--text-xs) / 1.4 var(--font-mono);letter-spacing:var(--tracking-micro);text-transform:uppercase;color:var(--color-ink);margin:0;position:absolute}.status[hidden]{display:none}.countdown{font:700 var(--text-countdown) / 1 var(--font-mono);font-variant-numeric:tabular-nums;color:var(--color-ink);place-items:center;display:grid;position:absolute;inset:0}.countdown[hidden]{display:none}.flash{background:var(--color-flash);opacity:0;pointer-events:none;position:absolute;inset:0}.flash.on{animation:flash var(--dur-flash) var(--ease-out)}@keyframes flash{0%{opacity:.8}to{opacity:0}}.shutter-bar{justify-content:space-between;align-items:center;gap:var(--space-sm);flex-wrap:wrap;display:flex}.shutter{align-items:center;gap:var(--space-xs);padding:var(--space-3xs) var(--space-sm) var(--space-3xs) var(--space-3xs);font:600 var(--text-md) / 1 var(--font-body);white-space:nowrap;color:var(--color-ink);background:var(--color-paper-2);border:var(--rule);border-radius:var(--radius-round);cursor:pointer;transition:border-color var(--dur-short) var(--ease-out), background-color var(--dur-short) var(--ease-out);display:inline-flex}.shutter__ring{border-radius:var(--radius-round);border:2px solid var(--color-accent);width:2.5rem;height:2.5rem;box-shadow:inset 0 0 0 4px var(--color-paper-2);background:var(--color-accent);transition:transform var(--dur-short) var(--ease-out)}.shutter:hover:not(:disabled){border-color:var(--color-rule-2);background:var(--color-paper-3)}.shutter:hover:not(:disabled) .shutter__ring{box-shadow:inset 0 0 0 4px var(--color-paper-3)}.shutter:active:not(:disabled) .shutter__ring{transform:scale(.92)}.shutter:disabled{cursor:not-allowed;color:var(--color-muted)}.shutter:disabled .shutter__ring{background:var(--color-rule);border-color:var(--color-rule-2)}.toggle{align-items:center;gap:var(--space-2xs);font-size:var(--text-sm);color:var(--color-muted);white-space:nowrap;cursor:pointer;display:inline-flex}.toggle input{accent-color:var(--color-accent);width:1rem;height:1rem;margin:0}.btn{font:600 var(--text-md) / 1 var(--font-body);padding:var(--space-xs) var(--space-md);border-radius:var(--radius-control);white-space:nowrap;cursor:pointer;transition:background-color var(--dur-short) var(--ease-out);border:1px solid #0000}.btn--accent{background:var(--color-accent);color:var(--color-accent-ink)}.btn--accent:hover{background:var(--color-accent-2)}.btn--accent:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.inventory{background:var(--color-paper-2);border:var(--rule);border-radius:var(--radius-stage);top:var(--space-md);max-height:calc(100vh - 2 * var(--space-md));flex-direction:column;min-height:0;display:flex;position:sticky;overflow:hidden}.slots{border-bottom:var(--rule);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.slot{min-width:0;padding:var(--space-xs) var(--space-sm);font:600 var(--text-md) / 1.2 var(--font-display);text-align:left;color:var(--color-muted);border:0;border-right:var(--rule);cursor:pointer;transition:color var(--dur-short) var(--ease-out), background-color var(--dur-short) var(--ease-out);background:0 0;flex-direction:column;align-items:flex-start;gap:2px;display:flex;box-shadow:inset 0 -2px #0000}.slot:last-child{border-right:0}.slot small{max-width:100%;font:400 var(--text-xs) / 1.3 var(--font-body);color:var(--color-muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.slot:hover{color:var(--color-ink);background:var(--color-paper-3)}.slot[aria-selected=true]{color:var(--color-ink);box-shadow:inset 0 -2px 0 var(--color-accent)}.slot[aria-selected=true] small{color:var(--color-ink-2)}.finder{padding:var(--space-sm);border-bottom:var(--rule);gap:var(--space-2xs);display:grid}.search{width:100%;font:400 var(--text-md) var(--font-body);padding:var(--space-2xs) var(--space-xs);color:var(--color-ink);background:var(--color-paper);border:var(--rule);border-radius:var(--radius-control)}.search::placeholder{color:var(--color-muted)}.search:hover{border-color:var(--color-rule-2)}.search:focus-visible{outline-offset:0;border-color:var(--color-focus)}.count{font:500 var(--text-2xs) / 1.4 var(--font-mono);letter-spacing:var(--tracking-micro);text-transform:uppercase;font-variant-numeric:tabular-nums;color:var(--color-muted);margin:0}.picker{background:var(--color-rule);flex:1;grid-template-columns:repeat(3,minmax(0,1fr));align-content:start;gap:1px;min-height:12rem;margin:0;padding:0;list-style:none;display:grid;overflow-y:auto}.picker li{background:var(--color-paper-2);display:flex}.picker button{align-items:center;gap:var(--space-2xs);min-width:0;padding:var(--space-sm) var(--space-2xs) var(--space-xs);font:500 var(--text-xs) / 1.3 var(--font-body);text-align:center;color:var(--color-ink-2);cursor:pointer;overflow-wrap:anywhere;transition:background-color var(--dur-short) var(--ease-out);background:0 0;border:0;flex-direction:column;flex:1;display:flex}.picker img{width:56px;height:56px}.picker button:hover{background:var(--color-paper-3);color:var(--color-ink)}.picker button[aria-pressed=true]{background:var(--color-accent-wash);color:var(--color-ink);box-shadow:inset 0 0 0 1px var(--color-accent)}.picker button:disabled{opacity:.4;cursor:not-allowed}.picker button:focus-visible{outline-offset:-2px}.picker .none-tile{border:1px dashed var(--color-rule-2);border-radius:var(--radius-round);width:56px;height:56px;font:400 var(--text-lg) var(--font-mono);color:var(--color-muted);place-items:center;display:grid}.foot{padding:var(--space-sm) var(--space-md);border-top:var(--rule);font-size:var(--text-xs);color:var(--color-muted)}.foot p{margin:0}.calibration{border:var(--rule);border-radius:var(--radius-stage);background:var(--color-paper-2)}.calibration>summary{align-items:center;gap:var(--space-2xs);padding:var(--space-xs) var(--space-sm);font:600 var(--text-sm) / 1.2 var(--font-body);color:var(--color-ink-2);white-space:nowrap;cursor:pointer;list-style:none;display:flex}.calibration>summary::-webkit-details-marker{display:none}.calibration>summary:before{content:"";width:.45rem;height:.45rem;transition:transform var(--dur-short) var(--ease-out);border-bottom:1.5px solid;border-right:1.5px solid;transform:rotate(-45deg)}.calibration[open]>summary:before{transform:rotate(45deg)}.calibration>summary:hover{color:var(--color-ink)}.calibration[open]>summary{border-bottom:var(--rule)}.calibration>.hint{padding:var(--space-sm) var(--space-sm) 0;max-width:70ch}.calibration>.cal-grid{padding:var(--space-sm)}.cal-grid{gap:var(--space-md);grid-template-columns:repeat(auto-fit,minmax(230px,1fr));align-items:start;display:grid}.cal-col{gap:var(--space-xs);flex-direction:column;min-width:0;display:flex}.calibration .hint,.calibration .target{font-size:var(--text-sm);color:var(--color-muted);margin:0}.calibration .target{color:var(--color-ink);font-weight:600}.calibration .vue-status{font:400 var(--text-xs) var(--font-mono);font-variant-numeric:tabular-nums}.calibration .seg,.calibration .row{gap:var(--space-3xs);flex-wrap:wrap;display:flex}.calibration .seg button,.calibration .row button,.calibration button[data-act=copy]{font:500 var(--text-sm) var(--font-body);white-space:nowrap;padding:var(--space-2xs) var(--space-xs);border-radius:var(--radius-control);border:var(--rule);background:var(--color-paper);color:var(--color-ink-2);cursor:pointer;flex:1}.calibration .seg button:hover:not(:disabled),.calibration .row button:hover,.calibration button[data-act=copy]:hover{border-color:var(--color-rule-2);color:var(--color-ink)}.calibration .seg button[aria-pressed=true]{border-color:var(--color-accent);color:var(--color-ink);background:var(--color-accent-wash)}.calibration .seg button:disabled{opacity:.4;cursor:not-allowed}.calibration .field{gap:2px var(--space-2xs);font-size:var(--text-xs);color:var(--color-muted);grid-template-columns:minmax(0,1fr) auto;display:grid}.calibration .field input{width:100%;accent-color:var(--color-accent);grid-column:1/-1}.calibration output{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--color-ink)}.calibration .primary{font:600 var(--text-sm) / 1 var(--font-body);white-space:nowrap;padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-control);background:var(--color-accent);color:var(--color-accent-ink);cursor:pointer;border:0}.calibration .primary:hover{background:var(--color-accent-2)}body:has(.calibration[open]) #canvas{cursor:grab;touch-action:none}.calibration .field input:disabled{opacity:.4}@media (width<=860px){.bar{padding:var(--space-xs) var(--space-sm)}.bench{padding:var(--space-sm);gap:var(--space-sm);grid-template-columns:minmax(0,1fr)}.stage{aspect-ratio:4/3}.gate{padding:var(--space-md)}.inventory{max-height:none;position:static}.picker{grid-template-columns:repeat(4,minmax(0,1fr));max-height:60vh}.foot{padding:var(--space-sm)}}@media (width<=480px){.wordmark{font-size:var(--text-md)}.picker{grid-template-columns:repeat(3,minmax(0,1fr))}.slot{padding:var(--space-xs) var(--space-2xs)}.stage:has(.gate:not([hidden])){aspect-ratio:auto;min-height:16rem}.gate{padding:var(--space-md) var(--space-sm);position:relative}.gate__lede{font-size:var(--text-lg)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:0s!important}.flash.on{animation-duration:.15s}}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-wght-normal-BgDaEnEv.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-ext-wght-normal-X_5orZeX.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-wght-normal-DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-ext-wght-normal-Bwz-egvJ.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-vietnamese-wght-normal-BUzh504Q.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-ext-wght-normal-CcLUaPy7.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-wght-normal-DLoelf7F.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
