:root{color-scheme:dark;--bg:#0b0f19;--panel:#121927;--panel-deep:#0e1522;--line:#293448;--text:#edf1f7;--muted:#a0aec2;--accent:#d5a24b;--green:#80bea9;--danger:#ffaaa2;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:14px;line-height:1.5}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}button,input,select{font:inherit}button,input,select,summary{outline-offset:4px}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,canvas:focus-visible{outline:2px solid var(--accent)}button{cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}input,select{width:100%;min-width:0;min-height:44px;border:1px solid #37445a;border-radius:6px;background:#0b111e;color:var(--text);padding:9px 10px}input:invalid{border-color:var(--danger)}input[type=checkbox]{width:18px;height:18px;min-height:18px;flex:0 0 18px;accent-color:var(--accent)}input[type=color]{width:40px;min-height:40px;height:40px;padding:4px}label{display:block;font-size:.87rem;color:#d4dce8}label>input,label>select{margin-top:5px}h1,h2,h3,p{margin:0}h1{font-size:1.32rem;letter-spacing:-.025em;font-weight:620}h2{font-size:1rem;font-weight:650}h3{font-size:.94rem;font-weight:600}.app-header{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:18px 16px;border-bottom:1px solid var(--line)}.eyebrow{font-size:.68rem;letter-spacing:.15em;color:var(--muted)}.stage{font-size:.73rem;color:var(--green);border:1px solid #34564d;border-radius:5px;padding:5px 8px;text-align:center}.workspace{padding:12px;display:grid;gap:12px;max-width:1900px;margin:auto}.panel{border:1px solid var(--line);border-radius:9px;background:var(--panel)}.sidebar{align-self:start;min-width:0}.sidebar>summary{padding:15px 16px;cursor:pointer;font-weight:650;min-height:50px}.summary-hint{font-weight:400;font-size:.72rem;color:var(--muted);float:right;margin-top:3px}.sidebar[open]>summary{border-bottom:1px solid var(--line)}.sidebar-body{padding:0 16px}.sidebar section{padding:18px 0;border-bottom:1px solid var(--line)}.sidebar section:last-child{border:0}.sidebar h2{margin-bottom:14px}.section-number{font-size:.72rem;color:var(--muted);margin-right:8px;font-variant-numeric:tabular-nums}.dimensions-row{display:grid;grid-template-columns:1fr 52px 1fr;gap:8px;align-items:end}.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.unit{color:var(--muted);font-size:.77rem;font-weight:400}.fine-print{color:var(--muted);font-size:.76rem;margin-top:9px;line-height:1.55}.button,.icon-button{border-radius:6px;border:1px solid #3c485d;background:#1b2638;color:var(--text);min-height:44px;padding:10px 12px;font-weight:550;font-size:.83rem}.icon-button{padding:8px;min-width:44px}.button:not(:disabled):hover,.icon-button:not(:disabled):hover{background:#29364c}.primary{background:#c49a50;color:#10151f;border-color:#d3ac66}.primary:not(:disabled):hover{background:#dfb974}.secondary{background:#172132}.full{width:100%}.button-row{display:flex;gap:8px;flex-wrap:wrap}.dropzone{position:relative;margin-top:14px;display:flex;flex-direction:column;gap:3px;align-items:center;justify-content:center;min-height:132px;border:1px dashed #64728a;border-radius:7px;background:var(--panel-deep);padding:17px 12px;text-align:center;cursor:pointer;overflow:hidden}.dropzone strong{font-size:.95rem;color:var(--text)}.dropzone span,.dropzone small{color:var(--muted);font-size:.77rem}.dropzone:focus-within,.dropzone.dragover{border-color:var(--accent);background:#252435}.dropzone input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}.import-progress{margin:9px 0 13px}.import-progress p{font-size:.75rem;color:var(--muted);overflow-wrap:anywhere;margin-top:3px}progress{width:100%;height:5px;border:0;accent-color:var(--green)}progress::-webkit-progress-bar{background:#293448}progress::-webkit-progress-value{background:var(--green)}.confirmation{border:1px solid #806739;border-radius:7px;padding:12px;margin-top:15px;background:#242232}.confirmation p{font-size:.79rem;margin:8px 0;overflow-wrap:anywhere;white-space:pre-line}.confirmation .button-row{margin-top:12px}.warning{color:#e9c78b}.checkbox{display:flex;align-items:center;gap:8px;min-height:44px;font-size:.81rem}.checkbox input{margin:0}.checkbox .unit{margin-left:auto}.filename{font-weight:600}.list-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:20px 0 10px}.pill{padding:3px 8px;border:1px solid var(--line);border-radius:4px;color:var(--muted);font-size:.72rem}.empty{color:var(--muted);font-size:.82rem;padding:10px 0}.piece-list{padding:0;margin:0;list-style:none;display:grid;gap:9px}.piece-card{border:1px solid var(--line);border-radius:7px;padding:10px;background:var(--panel-deep)}.piece-card h3{font-size:.83rem;overflow-wrap:anywhere}.piece-info{font-size:.75rem;color:var(--muted);margin-top:4px;overflow-wrap:anywhere}.piece-controls{display:flex;align-items:end;gap:8px;margin-top:8px}.piece-controls label{font-size:.71rem}.piece-controls .qty{width:85px}.piece-controls .delete{margin-left:auto;color:#edb3ac;font-size:.74rem}.piece-controls input[type=number]{min-height:40px;height:40px}.main-area{min-width:0;display:grid;align-content:start;gap:12px}.toolbar{padding:12px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px}.toolbar .checkbox{flex-wrap:wrap}.toolbar .checkbox .unit{margin:0}.metrics{display:grid;grid-template-columns:1fr 1fr;gap:8px}.metric{padding:12px;border:1px solid var(--line);background:var(--panel);border-radius:7px;min-width:0}.metric>span{display:block;color:var(--muted);font-size:.72rem;margin-bottom:5px}.metric strong{font-size:1.15rem;font-weight:600;font-variant-numeric:tabular-nums}.metric small{font-size:.76rem;font-weight:400;color:var(--muted)}#free-rectangle{font-size:1rem}.viewport-panel{overflow:hidden}.viewport-heading{padding:11px 12px;display:flex;gap:10px;justify-content:space-between;align-items:center}.viewport-heading h2{font-size:.9rem}.viewport-heading span{font-size:.72rem;color:var(--muted)}.view-buttons{display:flex;gap:5px;align-items:center}.view-buttons .button{padding:8px}.canvas-wrap{height:52vh;min-height:330px;max-height:840px;position:relative;background:#0a101b;border-top:1px solid var(--line);border-bottom:1px solid var(--line);overflow:hidden}canvas{display:block;width:100%;height:100%;touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none}canvas.dragging{cursor:grabbing}.canvas-badge{position:absolute;top:10px;left:10px;padding:4px 7px;border:1px solid #344059;background:#111b2b;color:#bdc8d8;pointer-events:none;font-size:.62rem;letter-spacing:.08em}.viewport-footer{display:flex;justify-content:space-between;gap:12px;padding:9px 12px;font-size:.69rem;color:var(--muted)}#zoom-label{white-space:nowrap;font-variant-numeric:tabular-nums}.notice{font-size:.79rem;line-height:1.6;color:var(--muted);padding:0 3px}.notice strong{color:#d4dce8;font-weight:550}.technical{padding:14px}.technical h2{font-size:.87rem;margin-bottom:6px}.technical>div>p:not(.fine-print){font-size:.79rem;color:var(--green)}.technical details{margin-top:15px;border-top:1px solid var(--line);padding-top:12px}.technical summary{font-size:.82rem;cursor:pointer;min-height:30px}.technical summary span{float:right;color:var(--muted);font-size:.72rem}.history{max-height:200px;overflow:auto;font-size:.75rem;color:var(--muted);padding-left:25px;margin-bottom:0}.history li{padding:4px 0;overflow-wrap:anywhere}.history time{font-variant-numeric:tabular-nums;color:#c2ccdb;margin-right:8px}.error{color:var(--danger);font-size:.8rem;overflow-wrap:anywhere;white-space:pre-line;margin-top:10px}p.error.panel{padding:12px}.error[hidden],[hidden]{display:none!important}@media(min-width:760px){.app-header{padding:20px 24px}h1{font-size:1.5rem}.workspace{padding:18px;grid-template-columns:310px minmax(0,1fr);gap:16px}.sidebar{position:sticky;top:12px;max-height:calc(100vh - 24px);overflow:auto}.workspace:has(.sidebar:not([open])){grid-template-columns:190px minmax(0,1fr)}.sidebar:not([open]) .summary-hint{display:none}.sidebar .summary-hint{float:none;display:block;margin-left:17px}.canvas-wrap{height:58vh;min-height:410px}.metrics{grid-template-columns:repeat(4,minmax(0,1fr))}.metric{padding:14px 12px}.viewport-heading{padding:13px 16px}}@media(min-width:1200px){.workspace{grid-template-columns:340px minmax(0,1fr)}.canvas-wrap{height:64vh}.metric strong{font-size:1.35rem}#free-rectangle{font-size:1.1rem}.technical{display:grid;grid-template-columns:1fr minmax(240px,.8fr);gap:25px}.technical details{margin-top:0;border-top:0;padding-top:0}.sidebar .summary-hint{display:inline;float:right;margin-left:0}}.nest-controls{flex:1 1 420px;min-width:0}.seed-field{flex:0 1 170px;min-width:130px}.nest-progress{flex:1 0 100%;min-width:0}.nest-progress p{font-size:.78rem;color:var(--muted);overflow-wrap:anywhere;margin-top:4px}.metric>small{display:block;margin-top:4px}#nesting-time{font-size:1rem}.toolbar .fine-print{margin-top:6px}#nest-status{min-height:1.5em}#rotation{padding-left:7px;padding-right:4px}@media(max-width:440px){.nest-controls .button{flex:1 1 135px}.seed-field{flex:1 1 100%}.checkbox .unit{flex-basis:100%}.metric strong{font-size:1rem}#nesting-time,#free-rectangle{font-size:.9rem}}@media(prefers-reduced-motion:no-preference){button{transition:background-color .12s}}.unplaced-badge{float:right;margin-left:8px;padding:2px 8px;border:1px solid #7c4050;border-radius:10px;background:#47202b;color:#ffaaa2;font-size:.7rem;font-weight:600}