:root{--bg:#0d0f0e;--panel:#141716;--panel2:#191d1b;--line:#2a302d;--line2:#3a433e;--ink:#f4f7f5;--muted:#8f9994;--muted2:#657069;--acid:#b8f34a;--orange:#f4a340;--red:#e25f5f;--blue:#66b6ff;--r:14px}*{box-sizing:border-box}html,body{height:100%;margin:0}body{font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--ink);overflow:hidden;-webkit-font-smoothing:antialiased}button,input{font:inherit}.app{height:100%;display:grid;grid-template-rows:58px minmax(0,1fr)}.topbar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 18px;border-bottom:1px solid var(--line);background:#0d0f0ef5;z-index:10}.brand{display:flex;align-items:center;gap:9px;letter-spacing:.09em}.brand small{font-size:10px;color:var(--muted);letter-spacing:0}.mark{width:28px;height:28px;border:1px solid var(--acid);border-radius:8px;position:relative}.mark:before,.mark:after{content:"";position:absolute;left:7px;top:13px;width:12px;height:1px;background:var(--acid)}.mark:before{transform:rotate(45deg)}.mark:after{transform:rotate(-45deg)}.machine{font:11px ui-monospace,monospace;color:#b9c1bd}.live{justify-self:end;display:flex;align-items:center;gap:8px;font-size:10px;color:var(--muted)}.live i{width:7px;height:7px;border-radius:50%;background:var(--acid);box-shadow:0 0 0 4px #b8f34a14}.workspace{min-height:0;display:grid;grid-template-columns:330px minmax(460px,1fr) 286px}.controls,.results{min-height:0;overflow:auto;background:var(--panel);padding:18px;scrollbar-width:thin;scrollbar-color:#36403b transparent}.controls{border-right:1px solid var(--line)}.results{border-left:1px solid var(--line)}.eyebrow{font:10px ui-monospace,monospace;text-transform:uppercase;letter-spacing:.13em;color:var(--acid)}h1{font-size:23px;line-height:1.12;letter-spacing:-.035em;margin:10px 0 8px}.intro{font-size:11px;line-height:1.55;color:var(--muted);margin:0 0 16px}.file-card{display:grid;grid-template-columns:38px minmax(0,1fr) auto;gap:10px;align-items:center;border:1px solid var(--line2);border-radius:11px;padding:11px;background:var(--panel2);cursor:pointer}.file-card:hover{border-color:#59665f}.file-badge{width:38px;height:38px;border:1px solid #455149;border-radius:8px;display:grid;place-items:center;font:700 10px ui-monospace;color:var(--acid)}.file-card b,.file-card small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-card b{font-size:11px}.file-card small{font-size:9px;color:var(--muted);margin-top:4px}.replace{font-size:9px;color:var(--muted)}.selection-card{margin-top:14px;padding:13px;border:1px solid var(--line);border-radius:12px;background:#111412}.selection-card.selected{border-color:#7d9d3e;box-shadow:0 0 0 1px #b8f34a12 inset}.selection-top,.normal-row,.control-row,.preview-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.selection-top{font-size:10px;color:var(--muted);margin-bottom:10px}.selection-top b{color:var(--ink)}.normal-row{font-size:9px;color:var(--muted);padding:5px 0;border-top:1px solid #252b28}.normal-row code{color:#cdd5d0;font-size:9px}.primary,.secondary{width:100%;height:44px;border-radius:10px;border:0;font-weight:800;font-size:11px;cursor:pointer}.primary{margin-top:12px;background:var(--acid);color:#11150e}.primary:disabled,.secondary:disabled{opacity:.35;cursor:not-allowed}.primary:not(:disabled):hover{background:#cbff67}.hint{font-size:9px;line-height:1.45;color:var(--muted);margin-top:9px;text-align:center}.constraints{border-top:1px solid var(--line);margin-top:16px;padding-top:15px}.section-title{font-size:11px;font-weight:700;margin-bottom:12px}.control-row{font-size:10px;color:#c8ceca;margin:11px 0}.control-row output{font:10px ui-monospace;color:var(--ink)}input[type=range]{appearance:none;width:100%;height:4px;border-radius:4px;background:#343b37;outline:0}input[type=range]::-webkit-slider-thumb{appearance:none;width:18px;height:18px;border-radius:50%;background:var(--acid);border:3px solid #1a2117}.switch{width:42px;height:24px;border-radius:99px;border:1px solid #444d48;background:#2c332f;padding:2px;cursor:pointer}.switch i{display:block;width:18px;height:18px;border-radius:50%;background:#87918b;transition:.2s}.switch.on{background:#b8f34a20;border-color:#789b37}.switch.on i{transform:translateX(18px);background:var(--acid)}.segments{display:flex;padding:3px;border:1px solid var(--line);border-radius:8px}.segments button{height:25px;padding:0 8px;border:0;border-radius:5px;background:transparent;color:var(--muted);font-size:9px;cursor:pointer}.segments button.active{background:#303733;color:var(--ink)}.stage{min-height:0;display:grid;grid-template-rows:46px minmax(0,1fr);position:relative;background:radial-gradient(circle at 50% 38%,#242a27,#111412 58%,#0d0f0e)}.stagebar{display:flex;align-items:center;justify-content:space-between;padding:0 14px;border-bottom:1px solid var(--line);background:#111412c9;z-index:4}.tabs{display:flex;gap:4px}.tabs button,.stage-actions button{height:29px;border:0;border-radius:7px;padding:0 11px;background:transparent;color:var(--muted);font-size:10px;cursor:pointer}.tabs button.active{background:#2b322e;color:var(--ink)}.stage-actions{display:flex;align-items:center;gap:9px;font:9px ui-monospace;color:var(--muted)}.stage-actions button{border:1px solid var(--line);background:#191d1b}.part-view,.plate-view{display:none;min-height:0;position:relative;overflow:hidden}.part-view.active,.plate-view.active{display:block}#viewport{position:absolute;inset:0;touch-action:none}#viewport canvas{display:block;width:100%;height:100%;cursor:crosshair}.view-help{position:absolute;left:50%;top:18px;transform:translateX(-50%);display:flex;align-items:center;gap:10px;padding:8px 12px;border:1px solid #3b443f;border-radius:99px;background:#101310d9;backdrop-filter:blur(8px);font-size:9px;color:var(--muted);pointer-events:none}.view-help b{color:var(--acid)}.axis-legend{position:absolute;left:16px;bottom:14px;font:9px ui-monospace;color:var(--muted);display:flex;gap:6px;align-items:center}.axis-legend i{width:6px;height:6px;border-radius:50%}.floating-place{position:absolute;right:18px;bottom:18px;z-index:4;min-height:44px;padding:0 18px;border:0;border-radius:10px;background:var(--acid);color:#10150d;font-size:11px;font-weight:800;box-shadow:0 10px 30px #0008;cursor:pointer}.floating-place[hidden]{display:none}.axis-legend .x{background:#ff6868}.axis-legend .y{background:#65d884}.axis-legend .z{background:#66b6ff}.plate-view{padding:24px;overflow:auto}.plate-wrap{width:min(72vh,680px);margin:auto;padding:10px;border:1px solid #424d47;border-radius:18px;background:#282f2b;box-shadow:0 30px 80px #0007}#plateCanvas{display:block;width:100%;height:auto;border-radius:10px;background:#161a18}.plate-caption{display:flex;gap:12px;justify-content:flex-end;padding:9px 3px 0;font-size:8px;color:var(--muted)}.plate-caption span{display:flex;align-items:center;gap:4px}.plate-caption i{width:8px;height:8px;border-radius:2px}.safe-dot{background:#b8f34a55}.startup-dot{background:var(--orange)}.cut-dot{background:var(--red)}.toast{position:absolute;left:50%;bottom:24px;transform:translate(-50%,12px);padding:9px 13px;background:#eef5f0;color:#101411;border-radius:8px;font-size:10px;font-weight:750;opacity:0;pointer-events:none;transition:.2s;z-index:8}.toast.show{opacity:1;transform:translate(-50%,0)}.result-state{font-size:21px;font-weight:700;letter-spacing:-.025em;margin:12px 0 16px}.dimension-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.dimension-grid div{border:1px solid var(--line);border-radius:10px;padding:10px;background:#111412}.dimension-grid span{display:block;font-size:8px;color:var(--muted);text-transform:uppercase;letter-spacing:.07em}.dimension-grid b{display:block;margin-top:6px;font:650 12px ui-monospace;color:#e5ebe7}.divider{height:1px;background:var(--line);margin:17px 0}.preview-head{font-size:10px;color:var(--muted)}.preview-head b{font-size:34px;color:var(--ink);letter-spacing:-.04em}.results p{font-size:10px;line-height:1.55;color:var(--muted)}.secondary{margin-top:6px;border:1px solid var(--line2);background:#232925;color:var(--ink)}.truth{margin-top:18px;padding:11px;border:1px solid #f4a34035;border-radius:10px;background:#f4a3400c}.truth b,.truth span{display:block}.truth b{font-size:9px;color:#e9c48e;margin-bottom:6px}.truth span{font-size:8px;line-height:1.5;color:#ab9b82}@media(max-width:980px){body{overflow:auto}.app{height:auto;min-height:100%}.topbar{position:sticky;top:0;height:58px}.machine{display:none}.workspace{display:flex;flex-direction:column}.controls,.results{overflow:visible;border:0}.stage{height:70vh;min-height:520px;border-block:1px solid var(--line)}.dimension-grid{grid-template-columns:repeat(4,1fr)}}@media(max-width:600px){.topbar{grid-template-columns:1fr auto;padding:0 14px}.live span{display:none}.brand small{display:none}.controls{padding:15px}.stage{height:62vh;min-height:480px}.stagebar{padding:0 8px}.stage-actions span{display:none}.stage-actions button,.tabs button{min-height:44px}.view-help{white-space:nowrap;top:12px}.plate-view{padding:12px}.results{padding:18px 15px 34px}.dimension-grid{grid-template-columns:1fr 1fr}.primary,.secondary{min-height:44px}.segments button{min-height:32px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}.help-button{width:30px;height:30px;border:1px solid var(--line2);border-radius:50%;background:#191d1b;color:var(--ink);font-weight:800;cursor:pointer}.help-button:hover,.help-button:focus-visible{border-color:var(--acid);color:var(--acid);outline:none}#plateCanvas{touch-action:none;cursor:grab;transform-origin:50% 50%;will-change:transform}#plateCanvas.dragging{cursor:grabbing}.plate-wrap{overflow:hidden}.plate-gesture-hint{position:absolute;left:50%;top:18px;transform:translateX(-50%);display:flex;align-items:center;gap:10px;padding:8px 12px;border:1px solid #3b443f;border-radius:99px;background:#101310e6;backdrop-filter:blur(8px);font-size:9px;color:var(--muted);pointer-events:none;white-space:nowrap}.plate-gesture-hint b{color:var(--acid)}.help-dialog{width:min(680px,calc(100vw - 28px));max-height:min(720px,calc(100dvh - 28px));padding:0;border:1px solid var(--line2);border-radius:18px;background:#151917;color:var(--ink);box-shadow:0 30px 100px #000c;grid-template-rows:auto minmax(0,1fr) auto;overflow:hidden}.help-dialog[open]{display:grid}.help-dialog::backdrop{background:#050706c7;backdrop-filter:blur(5px)}.help-head{display:flex;justify-content:space-between;align-items:flex-start;padding:20px 20px 14px;border-bottom:1px solid var(--line)}.help-head h2{font-size:24px;letter-spacing:-.035em;margin:5px 0 0}.help-head button{width:40px;height:40px;border:1px solid var(--line);border-radius:50%;background:#202522;color:var(--ink);font-size:24px;line-height:1;cursor:pointer}.help-scroll{min-height:0;overflow-y:auto;padding:16px 20px;-webkit-overflow-scrolling:touch;touch-action:pan-y}.help-scroll section+section{margin-top:18px}.help-scroll h3{margin:0 0 9px;font-size:13px;color:var(--acid)}.help-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.help-grid article{padding:13px;border:1px solid var(--line);border-radius:12px;background:#111412}.help-grid article>b{font-size:11px}.help-grid p{margin:8px 0 0;color:var(--muted);font-size:11px;line-height:1.8}.help-grid strong{color:var(--ink)}.help-note{margin:16px 0 2px;padding:11px;border-left:2px solid var(--acid);background:#b8f34a0a;color:#b7c0bb;font-size:10px;line-height:1.55}.help-done{margin:0 20px 20px;width:calc(100% - 40px)}@media(max-width:600px){.help-grid{grid-template-columns:1fr}.help-dialog{max-height:calc(100dvh - 16px)}.plate-gesture-hint{top:10px}.help-head{padding:16px 16px 12px}.help-scroll{padding:14px 16px}.help-done{margin:0 16px 16px;width:calc(100% - 32px)}}.plate-result-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.plate-result-actions .secondary{margin-top:0}.layout-cycle-status{margin-top:8px;color:var(--muted);font-size:10px;text-align:right}.fit-warning{margin:10px 0 8px;padding:11px;border:1px solid #e25f5f80;border-radius:10px;background:#e25f5f14;color:#ffd4d4;font-size:10px;line-height:1.5}.fit-warning b{display:block;margin-bottom:4px;color:#ff8585;font-size:11px}.fit-warning[hidden]{display:none}#plateViewport{width:100%;aspect-ratio:1;min-height:280px;touch-action:none;background:#111412;border-radius:10px;overflow:hidden}#plateViewport canvas{display:block;width:100%;height:100%;cursor:grab}#plateViewport canvas:active{cursor:grabbing}#plateCanvas{display:none!important}.plate-wrap{position:relative;max-width:100%}
