*{box-sizing:border-box;margin:0;padding:0}html,body,#root{color:#1a1a1a;background:#e8e8e8;width:100%;height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px;overflow:hidden}.app-layout{grid-template:"toolbar toolbar toolbar"44px"palette viewport inspector"1fr"status status status"32px/200px 1fr 260px;width:100%;height:100%;display:grid}.toolbar{color:#ecf0f1;background:#2c3e50;grid-area:toolbar;align-items:center;gap:8px;padding:0 12px;display:flex}.toolbar .brand-lockup{white-space:nowrap;align-items:center;gap:6px;margin-right:16px;font-size:16px;font-weight:600;display:flex}.toolbar .brand-mark{flex:none;width:24px;height:24px;display:block}.toolbar button{color:#ecf0f1;cursor:pointer;background:#34495e;border:1px solid #4a6a8a;border-radius:4px;padding:4px 12px;font-size:13px}.toolbar button:hover{background:#4a6a8a}.toolbar button:focus-visible,.build-name-input:focus-visible{outline-offset:1px;outline:2px solid #a9d7ff}.toolbar button:disabled{cursor:not-allowed;opacity:.55}.build-name-input{color:#ecf0f1;text-align:right;background:0 0;border:1px solid #0000;border-bottom-color:#6b8194;width:180px;margin-left:auto;padding:3px 5px;font-size:13px}.build-name-input:focus{background:#34495e;border-color:#7fa6c8;outline:none}.dirty-indicator{opacity:.8;font-size:12px}.palette{background:#f5f5f5;border-right:1px solid #ccc;grid-area:palette;padding:12px;overflow-y:auto}.palette h2{text-transform:uppercase;color:#666;margin-bottom:8px;font-size:13px;font-weight:600}.palette button{cursor:pointer;text-align:left;background:#fff;border:1px solid #ccc;border-radius:4px;width:100%;margin-bottom:6px;padding:8px 12px;font-size:13px;display:block}.palette button:hover{background:#e8f0fe;border-color:#4a90d9}.palette-presets{border-top:1px solid #ddd;margin-top:14px;padding-top:10px}.palette-presets h3{text-transform:uppercase;color:#64748b;letter-spacing:.5px;margin-bottom:6px;font-size:11px;font-weight:700}.preset-btn{cursor:pointer;text-align:left;background:#fff;border-radius:4px;width:100%;transition:all .15s;display:block;border:1px solid #e2e8f0!important;margin-bottom:4px!important;padding:6px 8px!important;font-size:12px!important}.preset-btn:hover{background:#f1f5f9!important;border-color:#cbd5e1!important}.preset-btn small{color:#64748b;font-size:10px;display:block}.viewport{background:#dde;grid-area:viewport;position:relative;overflow:hidden}.viewport canvas{width:100%;height:100%;display:block}.marquee-overlay{pointer-events:none;z-index:5;box-sizing:border-box;background:#2f80ed1f;border:1px dashed #2f80ed;position:absolute}.snap-feedback{color:#0b4f8c;letter-spacing:.01em;pointer-events:none;z-index:6;background:#e2f2fff7;border:1.5px solid #1d6fd0;border-radius:999px;padding:7px 14px;font-size:12px;font-weight:700;position:absolute;top:12px;left:50%;transform:translate(-50%);box-shadow:0 3px 12px #155a9c47}.viewport-overlay-controls{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:10;background:#ffffffeb;border:1px solid #00000026;border-radius:6px;gap:3px;padding:3px 4px;display:flex;position:absolute;top:10px;right:12px;box-shadow:0 2px 6px #0000001f}.viewport-overlay-controls button{color:#0f172a;cursor:pointer;box-sizing:border-box;background:0 0;border:1px solid #94a3b8;border-radius:4px;justify-content:center;align-items:center;min-height:28px;padding:4px 10px;font-size:12px;font-weight:600;transition:all .15s;display:inline-flex}.viewport-overlay-controls button:hover{color:#1a73e8;background:#e8f0fe;border-color:#64748b}.viewport-overlay-controls button.view-chip-fit{color:#1a73e8;border-color:#1a73e8}.viewport-overlay-controls button.view-chip-fit:hover{color:#1557b0;background:#e8f0fe;border-color:#1a73e8}.viewport-overlay-controls button.view-chip-grid,.viewport-overlay-controls button.view-chip-center{margin-left:4px}.viewport-overlay-controls button.view-chip-center:disabled{opacity:.45;cursor:default}.viewport-overlay-controls button.view-chip-grid[aria-pressed=true]{color:#1a73e8;background:#e8f0fe;border-color:#1a73e8}.viewport-overlay-controls button.view-chip-grid[aria-pressed=true]:hover{color:#1557b0;background:#e8f0fe;border-color:#1a73e8}.build-aabb-chip{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);color:#2c3e50;pointer-events:none;z-index:10;letter-spacing:.01em;background:#ffffffeb;border:1px solid #00000026;border-radius:4px;padding:3px 8px;font-size:11px;font-weight:600;position:absolute;bottom:12px;left:12px;box-shadow:0 2px 6px #0000001f}.inspector{background:#f5f5f5;border-left:1px solid #ccc;grid-area:inspector;padding:12px;overflow-y:auto}.inspector h2{text-transform:uppercase;color:#666;margin-bottom:8px;font-size:13px;font-weight:600}.inspector .field{margin-bottom:8px}.inspector label{color:#555;margin-bottom:2px;font-size:12px;font-weight:500;display:block}.inspector input{border:1px solid #ccc;border-radius:3px;width:100%;padding:4px 6px;font-size:13px}.inspector input:focus{border-color:#4a90d9;outline:none;box-shadow:0 0 0 2px #4a90d933}.inspector .field-error{color:#d32f2f;margin-top:1px;font-size:11px}.section-title{text-transform:uppercase;letter-spacing:.5px;color:#64748b;border-bottom:1px solid #e2e8f0;justify-content:space-between;align-items:baseline;margin:10px 0 4px;padding-bottom:2px;font-size:11px;font-weight:700;display:flex}.rotation-summary{color:#475569;text-transform:none;letter-spacing:normal;font-size:11px;font-weight:500}.dimension-row{grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:4px;display:grid}.dimension-row .field{margin-bottom:0}.dimension-row label{color:#64748b;font-size:11px}.rotation-grid{flex-direction:column;gap:4px;margin-bottom:10px;display:flex}.rotation-axis-row{grid-template-columns:20px 42px 42px 1fr;align-items:center;gap:4px;display:grid}.axis-tag{color:#475569;text-align:center;font-size:11px;font-weight:700}.rot-btn{cursor:pointer;color:#334155;text-align:center;background:#fff;border:1px solid #cbd5e1;border-radius:4px;padding:3px 0;font-size:11px;font-weight:600;transition:background .15s}.rot-btn:hover{background:#f1f5f9;border-color:#94a3b8}.rot-input{text-align:right;border:1px solid #cbd5e1;border-radius:4px;padding:3px 6px;font-size:12px}.rot-input:focus{border-color:#3b82f6;outline:none;box-shadow:0 0 0 2px #3b82f633}.inspector-actions-row{grid-template-columns:1fr 1fr;gap:6px;margin-top:12px;display:grid}.duplicate-btn{color:#1d4ed8;background:#f0f7ff;border-color:#93c5fd;font-weight:600}.duplicate-btn:hover:not(:disabled){background:#dbeafe;border-color:#60a5fa}.multi-selection-summary{padding:8px 0}.selected-piece-names{max-height:9.5rem;margin:0;padding:0;list-style:none;overflow-y:auto}.selected-piece-name-row{color:#0f172a;white-space:nowrap;text-overflow:ellipsis;border-bottom:1px solid #f1f5f9;padding:3px 0;font-size:12px;overflow:hidden}.selected-piece-name-row:last-child{border-bottom:none}.summary-section{background:#fff;border:1px solid #e2e8f0;border-radius:6px;margin-bottom:8px;padding:10px}.summary-section h3{color:#334155;text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px;font-size:12px;font-weight:700}.summary-stat-row{color:#475569;justify-content:space-between;margin-bottom:4px;font-size:12px;display:flex}.summary-stat-row strong{color:#0f172a}.inspector .material-badge{border-radius:3px;margin-bottom:8px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.material-badge.lumber{color:#8b5e3c;background:#fde8cd}.material-badge.plywood{color:#7c5828;background:#f7eedc}.inspector .delete-btn{color:#d32f2f;cursor:pointer;background:#fff;border:1px solid #e57373;border-radius:4px;width:100%;margin-top:4px;padding:6px;font-size:13px}.inspector .delete-btn:hover{background:#ffebee}.selection-header{justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:8px;display:flex}.selection-header h2{margin-bottom:0}.selection-count{color:#4a6a8a;white-space:nowrap;font-size:11px;font-weight:600}.selection-actions{border-bottom:1px solid #ddd;margin-bottom:10px;padding:8px 0 10px}.selection-action-row{grid-template-columns:1fr 1fr;gap:5px;margin-bottom:6px;display:grid}.selection-btn{color:#2c3e50;cursor:pointer;background:#fff;border:1px solid #b7c5d1;border-radius:3px;min-height:28px;padding:4px 6px;font-size:11px}.selection-btn:hover:not(:disabled){background:#e8f0fe;border-color:#4a90d9}.selection-btn:disabled,.delete-btn:disabled,.alignment-controls:disabled .selection-btn{cursor:not-allowed;opacity:.5}.alignment-controls{border:0;border-top:1px solid #e5e5e5;margin:8px 0 0;padding:7px 0 0}.alignment-controls legend{color:#555;padding:0;font-size:12px;font-weight:600}.alignment-axis{grid-template-columns:18px 1fr;align-items:center;gap:5px;margin-top:5px;display:grid}.alignment-axis-label{color:#666;font-size:11px;font-weight:600}.alignment-buttons{grid-template-columns:repeat(3,1fr);gap:4px;display:grid}.selection-help{color:#666;padding:4px 0;font-size:12px;font-style:italic;line-height:1.4}.inspector-form{padding-top:2px}.status-bar{color:#64748b;background:#f8fafc;border-top:1px solid #e2e8f0;grid-area:status;align-items:center;padding:0 12px;font-size:11px;display:flex}.status-bar.error{color:#c62828;background:#ffebee}.status-bar.success{color:#2e7d32;background:#e8f5e9}.dialog-overlay{z-index:100;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dialog{background:#fff;border-radius:8px;min-width:360px;max-width:480px;max-height:80vh;padding:20px;overflow-y:auto;box-shadow:0 4px 24px #0003}.dialog h2{margin-bottom:12px;font-size:16px}.dialog .build-item{cursor:pointer;border:1px solid #e0e0e0;border-radius:4px;justify-content:space-between;align-items:center;margin-bottom:6px;padding:8px 12px;display:flex}.dialog .build-item:hover{background:#f0f0f0}.dialog .build-item .build-name{font-weight:500}.dialog .build-item .build-date{color:#888;font-size:12px}.dialog .empty-msg{text-align:center;color:#888;padding:24px 0}.dialog .empty-msg .empty-peek{margin:0 auto 8px;display:block}.dialog .dialog-actions{justify-content:flex-end;gap:8px;margin-top:12px;display:flex}.dialog .dialog-actions button{cursor:pointer;border-radius:4px;padding:6px 16px;font-size:13px}.dialog .dialog-actions button.primary{color:#fff;background:#2c3e50;border:none}.dialog .dialog-actions button.primary:hover{background:#34495e}.dialog .dialog-actions button.secondary{background:#fff;border:1px solid #ccc}.dialog .dialog-actions button.secondary:hover{background:#f0f0f0}.cut-list-dialog{width:90%;max-width:640px}.dialog-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.dialog-header h2{margin-bottom:0}.build-tag{color:#475569;background:#f1f5f9;border:1px solid #cbd5e1;border-radius:4px;padding:2px 8px;font-size:11px;font-weight:600}.cut-list-content{flex-direction:column;gap:12px;display:flex}.cut-list-section{background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;padding:10px 12px}.cut-list-section h3{color:#1e293b;text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px;font-size:13px;font-weight:700}.cut-group{margin-bottom:8px}.cut-group-header{color:#334155;border-bottom:1px dashed #cbd5e1;justify-content:space-between;margin-bottom:4px;padding-bottom:2px;font-size:12px;font-weight:600;display:flex}.cut-group-total{color:#64748b;font-weight:500}.cut-item-list{padding-left:6px;list-style:none}.cut-item{justify-content:space-between;padding:2px 0;font-size:12px;display:flex}.cut-item-length{color:#0f172a;font-weight:600}.cut-item-length small{color:#64748b;margin-left:4px;font-weight:400}.cut-item-name{color:#64748b;font-style:italic}.stock-unit{background:#fff;border:1px solid #e2e8f0;border-radius:4px;margin:6px 0 8px;padding:6px 8px}.stock-unit.oversized{background:#fffbeb;border-color:#fbbf24}.stock-unit-header{color:#1e293b;justify-content:space-between;margin-bottom:2px;font-size:11px;font-weight:600;display:flex}.stock-unit-waste{color:#64748b;font-weight:500}.stock-unit-diagram{margin-top:6px}.cut-stock-diagram{background:#f1f5f9;border:1px solid #cbd5e1;border-radius:2px;width:100%;position:relative}.cut-stock-piece{box-sizing:border-box;background:#cbd5e1;border:1px solid #64748b;justify-content:center;align-items:center;min-width:0;display:flex;position:absolute;overflow:hidden}.cut-stock-piece-label{color:#1e293b;white-space:nowrap;text-overflow:ellipsis;pointer-events:none;padding:0 2px;font-size:9px;line-height:1;overflow:hidden}.cut-stock-piece-label em{color:#64748b;margin-left:3px;font-style:normal}.group-stock-summary{color:#64748b;margin:2px 0 8px 6px;font-size:11px}.section-summary-row{color:#334155;border-top:1px solid #cbd5e1;justify-content:space-between;margin-top:6px;padding-top:4px;font-size:12px;display:flex}.shortcuts-dialog{width:90%;max-width:440px}.shortcuts-list{flex-direction:column;gap:8px;margin:12px 0 16px;display:flex}.shortcut-row{justify-content:space-between;align-items:center;gap:12px;font-size:12px;display:flex}.shortcut-row kbd{color:#1e293b;white-space:nowrap;background:#f1f5f9;border:1px solid #cbd5e1;border-radius:4px;padding:3px 6px;font-family:ui-monospace,monospace;font-size:11px;font-weight:600;box-shadow:0 1px 1px #0000000d}.shortcut-row span{color:#475569;text-align:right}@media (width<=768px){.app-layout{grid-template-columns:140px 1fr 180px}}@media (width<=600px){.app-layout{grid-template:"toolbar"44px"palette""viewport"1fr"inspector""status"32px/1fr}.toolbar{white-space:nowrap;overflow-x:auto}.toolbar .brand-lockup{margin-right:4px;font-size:14px}.build-name-input{flex:0 0 130px;width:130px}.palette,.inspector{max-height:160px;overflow-y:auto}}.palette-hint{color:#666;margin:6px 4px 0;font-size:11px;line-height:1.35}.preset-btn.active{background:#f5ebe0;outline:2px solid #c89255}.material-badge.dowel{color:#5c4a2a;background:#e8d5a3}.dowel-dia-row{gap:6px;display:flex}.dowel-dia-row .selection-btn.active{color:#fff;background:#2c3e50}.field-hint{color:#555;margin-top:4px;font-size:11px;line-height:1.35}.mode-banner{z-index:5;color:#ecf0f1;pointer-events:none;white-space:nowrap;background:#2c3e50eb;border-radius:6px;padding:6px 14px;font-size:13px;position:absolute;top:48px;left:50%;transform:translate(-50%)}.viewport.mode-active{outline-offset:-2px;outline:2px solid #c89255}.cut-item-list.dowel-list{margin-top:8px}
