:root{--bg:#e9ecef;--panel:#fff;--ink:#1a1f25;--muted:#5b6470;--line:#d3d8de;--accent:#d9581a;--accent-ink:#fff;--stage:#23282f;--ok:#2c8a57;--warn:#a8700f;--bad:#c03a2b;--font-display:"IBM Plex Sans Condensed", "Arial Narrow", system-ui, sans-serif;--font-body:"IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#121519;--panel:#1b1f25;--ink:#e5e8ec;--muted:#98a1ad;--line:#2d333b;--accent:#f0773a;--accent-ink:#1a0d05;--stage:#0d1013;--ok:#4cc283;--warn:#e0a83a;--bad:#f0675a;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#121519;--panel:#1b1f25;--ink:#e5e8ec;--muted:#98a1ad;--line:#2d333b;--accent:#f0773a;--accent-ink:#1a0d05;--stage:#0d1013;--ok:#4cc283;--warn:#e0a83a;--bad:#f0675a;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0}body{background:var(--bg);color:var(--ink);font:14px/1.45 var(--font-body)}header{border-bottom:1px solid var(--line);background:var(--panel);flex-wrap:wrap;align-items:center;gap:12px 20px;padding:14px 20px;display:flex}h1{font:600 20px/1.1 var(--font-display);letter-spacing:.01em;text-wrap:balance;margin:0}h1 small{font:400 13px var(--font-body);color:var(--muted);letter-spacing:0;margin-left:8px}.chips{flex-wrap:wrap;gap:6px;margin-left:auto;display:flex}.chip{font:500 12px var(--font-mono);border:1px solid var(--line);color:var(--muted);white-space:nowrap;border-radius:4px;padding:3px 8px}.chip.ok{color:var(--ok);border-color:color-mix(in srgb, var(--ok) 45%, transparent)}.chip.warn{color:var(--warn);border-color:color-mix(in srgb, var(--warn) 50%, transparent)}.chip.bad{color:var(--bad);border-color:color-mix(in srgb, var(--bad) 50%, transparent)}main{grid-template-columns:300px minmax(0,1fr);gap:16px;padding:16px 20px 32px;display:grid}@media (max-width:900px){main{grid-template-columns:1fr;padding:12px 16px 24px}}aside{flex-direction:column;gap:12px;display:flex}.card{background:var(--panel);border:1px solid var(--line);border-radius:6px;flex-direction:column;gap:10px;padding:14px;display:flex}.card h2{font:600 13px var(--font-display);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0}.row{grid-template-columns:1fr auto;align-items:center;gap:4px 10px;display:grid}.row label{font-size:13px}.row output,.val{font:500 12px var(--font-mono);color:var(--muted);font-variant-numeric:tabular-nums;text-align:right;min-width:56px}.row input[type=range]{width:100%;accent-color:var(--accent);grid-column:1/-1}.hint{color:var(--muted);margin:0;font-size:12px}select,input[type=text],input[type=number]{font:13px var(--font-body);color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:4px;width:100%;padding:5px 7px}input[type=number]{font-family:var(--font-mono)}.pair{grid-template-columns:1fr 1fr;gap:8px;display:grid}.pair label{color:var(--muted);flex-direction:column;gap:3px;font-size:12px;display:flex}.check{align-items:center;gap:8px;font-size:13px;display:flex}.check input{accent-color:var(--accent);width:15px;height:15px}button,.btn{font:500 13px var(--font-body);border:1px solid var(--line);background:var(--bg);color:var(--ink);cursor:pointer;text-align:center;border-radius:4px;padding:7px 12px}button:hover,.btn:hover{border-color:var(--accent)}button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}button:disabled{opacity:.5;cursor:not-allowed}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btns{flex-wrap:wrap;gap:8px;display:flex}.btns>*{flex:auto}#trayOpts,.sub{flex-direction:column;gap:10px;display:flex}.sub{border-top:1px dashed var(--line);padding-top:10px}.hint.ok{color:var(--ok)}.hint.warn{color:var(--warn)}#drop{border:1.5px dashed var(--line);text-align:center;color:var(--muted);border-radius:6px;flex-direction:column;gap:8px;padding:12px;font-size:12px;display:flex}#drop.over{border-color:var(--accent);color:var(--ink)}#file{display:none}.work{flex-direction:column;gap:16px;min-width:0;display:flex}.panels{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;display:grid}@media (max-width:1200px){.panels{grid-template-columns:1fr}}.panel{background:var(--panel);border:1px solid var(--line);border-radius:6px;flex-direction:column;min-width:0;display:flex}.panel-head{border-bottom:1px solid var(--line);align-items:baseline;gap:10px;padding:10px 14px;display:flex}.panel-head .num{font:600 13px var(--font-mono);color:var(--accent)}.panel-head h3{font:600 15px var(--font-display);margin:0}.panel-head p{color:var(--muted);text-align:right;margin:0 0 0 auto;font-size:12px}.stage{background:var(--stage);border-radius:0 0 6px 6px;justify-content:center;align-items:center;min-height:240px;padding:10px;display:flex;overflow:hidden}.stage canvas{max-width:100%;height:auto;max-height:78vh;display:block}#srcCanvas{touch-action:none;cursor:crosshair}.placeholder{color:#9aa3ad;font:13px var(--font-mono)}.split{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:0;display:grid}@media (max-width:1200px){.split{grid-template-columns:1fr}}.split .stage{border-radius:0 0 0 6px}table{border-collapse:collapse;width:100%;font-size:13px}th{text-align:left;font:600 11px var(--font-display);text-transform:uppercase;letter-spacing:.05em;color:var(--muted);border-bottom:1px solid var(--line);padding:8px 10px}td{border-bottom:1px solid var(--line);vertical-align:middle;padding:6px 10px}td.num,th.num{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums;white-space:nowrap}td input[type=text]{min-width:90px;padding:3px 6px}.badge{background:var(--accent);width:20px;height:20px;color:var(--accent-ink);font:600 11px var(--font-mono);border-radius:50%;place-items:center;display:inline-grid}.swatch{vertical-align:-1px;border-radius:2px;width:10px;height:10px;margin-right:6px;display:inline-block}.tablewrap{padding:4px 4px 10px;overflow-x:auto}.plate-info{flex-direction:column;gap:8px;padding:10px 14px 14px;font-size:13px;display:flex}.legend{color:var(--muted);flex-wrap:wrap;gap:6px 14px;font-size:12px;display:flex}.legend i{vertical-align:middle;border-top:2px solid;width:18px;height:0;margin-right:5px;display:inline-block}.legend i.dash{border-top-style:dashed}#toast{background:var(--ink);color:var(--bg);opacity:0;pointer-events:none;border-radius:4px;max-width:calc(100% - 32px);padding:8px 14px;font-size:13px;transition:opacity .2s;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}#toast.show{opacity:1}@media (prefers-reduced-motion:reduce){#toast{transition:none}}dialog{border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:6px;width:min(720px,100% - 32px);padding:16px}dialog::backdrop{background:#00000080}dialog textarea{width:100%;height:50vh;font:12px/1.4 var(--font-mono);background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:4px;padding:8px}dialog .btns{justify-content:flex-end;margin-top:10px}dialog .btns>*{flex:none}details summary{cursor:pointer;color:var(--muted);font-size:12px}details p{color:var(--muted);margin:6px 0 0;font-size:12px}.tabs{gap:4px;display:flex}.tabs button{border-radius:4px;padding:6px 14px;font-weight:600}.tabs button.on,.modebar button.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.field{color:var(--muted);flex-direction:column;gap:3px;font-size:12px;display:flex}.pick{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.pick button{text-align:left;width:100%}.pick button.on{border-color:var(--accent);box-shadow:inset 3px 0 0 var(--accent)}.card.dim{opacity:.7}.modebar{border-bottom:1px solid var(--line);gap:6px;padding:8px 14px;display:flex}.edstage{min-height:0;padding:0}.edstage canvas{touch-action:none;cursor:crosshair;outline-offset:-2px;width:100%;max-width:none;height:min(70vh,720px);min-height:360px;max-height:none}.problem{border:1px solid var(--line);border-radius:4px;padding:4px 8px;font-size:13px}.problem.overlap,.problem.outside{color:var(--bad);border-color:color-mix(in srgb, var(--bad) 50%, transparent)}.problem.thin{color:var(--warn);border-color:color-mix(in srgb, var(--warn) 50%, transparent)}.viewbar{gap:4px;margin-left:auto;display:flex}.viewbar button.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.edstage{grid-template-columns:minmax(0,1fr);display:grid}.edstage[data-view=split]{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}@media (max-width:1100px){.edstage[data-view=split]{grid-template-columns:minmax(0,1fr)}}.edstage[data-view="3d"] #edCanvas{display:none}.ed3d{background:var(--stage);border-left:1px solid var(--line);min-width:0;position:relative}.edstage[data-view="3d"] .ed3d{border-left:0}.ed3d canvas{touch-action:none;cursor:grab;width:100%;height:min(70vh,720px);min-height:360px;display:block}.ed3d-note{font:12px var(--font-mono);color:#9aa3ad;pointer-events:none;margin:0;position:absolute;bottom:8px;left:10px}.pair.dim{opacity:.55}.account{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.account .who{font:500 13px var(--font-body);color:var(--ink)}.account button{padding:5px 10px}#dlgSignUp form{flex-direction:column;gap:10px;display:flex}#dlgSignUp h2{font:600 16px var(--font-display);margin:0}#dlgSignUp label{flex-direction:column;gap:4px;font-size:13px;display:flex}#signUpError{color:var(--bad);min-height:1em;margin:0;font-size:13px}button.link{color:var(--muted);background:0 0;border-color:#0000;padding:5px 4px;text-decoration:underline}#dlgCodes,#dlgRecover,#dlgInvite{width:min(460px,100% - 32px)}#dlgCodes h2,#dlgRecover h2,#dlgInvite h2{font:600 16px var(--font-display);margin:0 0 8px}#dlgCodes .hint,#dlgInvite .hint{margin-bottom:8px}#dlgRecover form{flex-direction:column;gap:10px;display:flex}#dlgRecover label{flex-direction:column;gap:4px;font-size:13px;display:flex}#recoverCode{font-family:var(--font-mono);letter-spacing:.04em}#recoverError{color:var(--bad);min-height:1em;margin:0;font-size:13px}.codes{font:500 14px/1.9 var(--font-mono);columns:2;margin:8px 0 12px;padding-left:28px}#inviteCode{font:500 16px/1.9 var(--font-mono);letter-spacing:.04em;text-align:center;-webkit-user-select:all;user-select:all;margin:8px 0 12px}
