*{box-sizing:border-box}:root{color:#1e293b;background:#fff;font-family:system-ui,Avenir,Helvetica,Arial,sans-serif}body{margin:0}#root,.app{flex-direction:column;height:100vh;display:flex}.topbar{background:#f8fafc;border-bottom:1px solid #e2e8f0;align-items:center;gap:12px;padding:8px 16px;display:flex}.topbar h1{margin:0 12px 0 0;font-size:18px}.topbar .error{color:#dc2626}.file-button{cursor:pointer;background:#fff;border:1px solid #94a3b8;border-radius:4px;padding:4px 12px;display:inline-block}.file-button input[type=file]{display:none}button{cursor:pointer;font:inherit;background:#fff;border:1px solid #94a3b8;border-radius:4px;padding:4px 12px}button:hover:not(:disabled){background:#f1f5f9}button:disabled{opacity:.5;cursor:default}.layout{flex:1;min-height:0;display:flex}.panel{padding:12px;overflow-y:auto}.panel h2{text-transform:uppercase;letter-spacing:.05em;color:#64748b;margin:0 0 8px;font-size:14px}.parts-panel{border-right:1px solid #e2e8f0;flex-shrink:0;width:300px}.right-panel{border-left:1px solid #e2e8f0;flex-direction:column;flex-shrink:0;gap:20px;width:320px;display:flex}.right-panel .panel{padding:0;overflow:visible}.center{flex:1;min-width:0;position:relative}.viewer{position:absolute;inset:0}.viewer canvas{touch-action:none;cursor:grab;display:block}.viewer canvas:active{cursor:grabbing}.viewer-fit{position:absolute;top:10px;right:10px}.parts-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.parts-list li{cursor:pointer;border:1px solid #e2e8f0;border-radius:6px;align-items:flex-start;gap:8px;padding:6px;display:flex}.parts-list li.selected{background:#f0fdfa;border-color:#0d9488}.part-info{flex-direction:column;flex:1;min-width:0;font-size:13px;display:flex}.part-info strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.part-controls{align-items:center;gap:8px;margin-top:6px;font-size:12px;display:flex}.part-controls .part-qty{color:#64748b;align-items:center;gap:4px;display:flex}.part-controls input[type=number]{width:52px}.part-controls .part-clc{color:#16a34a;cursor:pointer;align-items:center;gap:4px;font-weight:600;display:flex}.part-controls button{margin-left:auto;padding:2px 6px}.muted{color:#64748b;font-size:12px}.warn{color:#b45309;font-size:12px}.issues{margin-top:12px;font-size:12px}.issues li.warning{color:#b45309}.issues li.error{color:#dc2626}input,select{font:inherit;border:1px solid #cbd5e1;border-radius:4px;max-width:100%;padding:3px 6px}.sheets-table{table-layout:fixed;border-collapse:collapse;width:100%;margin-bottom:8px;font-size:12px}.sheets-table th{text-align:left;color:#64748b;text-overflow:ellipsis;white-space:nowrap;padding:2px 3px 6px 0;font-weight:500;overflow:hidden}.sheets-table th:first-child{width:27%}.sheets-table th:nth-child(2),.sheets-table th:nth-child(3){width:20%}.sheets-table th:nth-child(4){width:14%}.sheets-table th:nth-child(5){width:10%}.sheets-table th:nth-child(6){width:9%}.sheets-table td{padding:2px 3px 2px 0}.sheets-table td.center{text-align:center}.sheets-table input{width:100%;padding:3px 4px;font-size:12px}.sheets-table input[type=checkbox]{width:auto}.sheets-table button{padding:2px 6px}.settings-grid{grid-template-columns:auto 1fr;align-items:center;gap:8px 12px;font-size:13px;display:grid}.settings-grid input,.settings-grid select{justify-self:start;width:110px}.nfp-debug{flex-direction:column;padding:8px 12px;display:flex;position:absolute;inset:0}.topbar button.active{background:#e0e7ff;border-color:#6366f1}.nest-button{font-weight:600}.nest-stats{color:#334155;white-space:nowrap;font-size:13px}.viewer-toolbar{background:#ffffffeb;border:1px solid #e2e8f0;border-radius:6px;align-items:center;gap:6px;padding:6px;display:flex;position:absolute;top:10px;left:10px}.viewer-bad{color:#dc2626;font-size:13px;font-weight:600}.clc-form{background:#f0fdf4;border:1px solid #a7f3d0;border-radius:6px;flex-direction:column;gap:8px;margin-top:10px;padding:10px;font-size:13px;display:flex}.clc-grid-inputs{align-items:center;gap:10px;display:flex}.clc-grid-inputs label{align-items:center;gap:4px;display:flex}.clc-grid-inputs input{width:56px}.part-actions button.active{background:#dcfce7;border-color:#16a34a}.report-table{border-collapse:collapse;width:100%;font-size:13px}.report-table th{text-align:left;color:#64748b;padding:2px 6px 6px 0;font-weight:500}.report-table td{padding:2px 6px 2px 0}.report-table .report-total td{border-top:1px solid #e2e8f0;font-weight:600}.report-savings{color:#16a34a;margin-top:8px;font-size:12px;font-weight:600}
