:root{--brand-blue: #2095d6;--brand-blue-dark: #1a7ab0;--brand-blue-soft: #e6f3fb;--bg-page: #ffffff;--bg-sidebar: #ffffff;--bg-soft: #f5f7f9;--bg-viewer: #e9eef4;--border-subtle: #e6e9ed;--border-strong: #cfd6dd;--text-primary: #1a2d3d;--text-secondary: #6c7989;--text-muted: #aab2bc;--accent-yellow: #f2c849;--accent-error: #c0392b;--accent-warning: #d49a1c}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif;background:var(--bg-page);color:var(--text-primary)}.app{display:grid;grid-template-rows:56px 1fr;grid-template-columns:380px 1fr;grid-template-areas:"topbar topbar" "sidebar main";height:100vh}.topbar{grid-area:topbar;background:#fff;border-bottom:1px solid var(--border-subtle);display:flex;align-items:center;padding:0 16px;gap:16px}.brand{display:flex;align-items:center;gap:8px;color:var(--text-primary);font-weight:700;font-size:18px;letter-spacing:.5px}.brand svg{display:block}.brand .brand-cover{color:var(--text-primary)}.brand .brand-swim{color:var(--brand-blue)}.topbar-spacer{flex:1}.user-email{color:var(--text-secondary);font-size:13px}.topbar-menu{cursor:pointer;color:var(--text-secondary);padding:4px 10px;font-size:18px;letter-spacing:1px}.sidebar{grid-area:sidebar;background:var(--bg-sidebar);border-right:1px solid var(--border-subtle);overflow-y:auto}.project-header{display:grid;grid-template-columns:1fr 1fr 1fr;align-items:center;padding:14px 16px;border-bottom:1px solid var(--border-subtle);gap:8px}.project-tabs{display:flex;gap:18px}.project-tab{background:none;border:0;padding:0 0 4px;font-size:13px;font-weight:600;letter-spacing:.5px;cursor:pointer;color:var(--text-muted);text-transform:uppercase}.project-tab.active{color:var(--brand-blue);border-bottom:2px solid var(--brand-blue)}.project-id{text-align:center;color:var(--text-primary);font-size:14px;font-weight:500;letter-spacing:.5px}.project-actions{display:flex;justify-content:flex-end;align-items:center;gap:10px;color:var(--text-muted);font-size:14px}.project-actions .icon{cursor:pointer;padding:2px 4px}.project-actions .icon.active{color:var(--text-primary)}.steps{padding:0}.step{border-bottom:1px solid var(--border-subtle)}.step-header{width:100%;display:flex;align-items:center;gap:10px;padding:14px 16px;background:transparent;border:0;cursor:pointer;font-size:13px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--text-muted);text-align:left}.step-header:hover{background:var(--bg-soft)}.step.open .step-header{color:var(--brand-blue)}.step.open .step-header .step-num,.step.open .step-header .step-title{border-bottom:2px solid var(--brand-blue);padding-bottom:4px}.step-num{min-width:24px;font-weight:700}.step-title{flex:1}.step-icon{width:22px;height:22px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:16px;font-weight:600;background:#eef2f5;color:var(--text-muted);line-height:1}.step.open .step-icon{background:var(--brand-blue);color:#fff}.step-body{padding:8px 16px 18px;background:var(--bg-soft);border-top:1px solid var(--border-subtle)}.pill-row{display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid var(--brand-blue);border-radius:4px;overflow:hidden;margin-bottom:12px}.pill{background:#fff;color:var(--brand-blue);padding:12px 8px;font-size:13px;font-weight:500;cursor:pointer;border:0;border-right:1px solid var(--brand-blue)}.pill:last-child{border-right:0}.pill.active{background:var(--brand-blue);color:#fff}.field{display:flex;flex-direction:column;margin-bottom:12px}.field label{font-size:11px;font-weight:600;letter-spacing:.4px;text-transform:uppercase;color:var(--text-secondary);margin-bottom:4px}.field input,.field select{background:#fff;color:var(--text-primary);border:1px solid var(--border-strong);border-radius:4px;padding:7px 9px;font-size:13px;font-family:inherit}.field textarea{background:#fff;color:var(--text-primary);border:1px solid var(--border-strong);border-radius:4px;padding:7px 9px;font-size:13px;font-family:inherit;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{outline:0;border-color:var(--brand-blue)}.button{margin-top:10px;background:var(--brand-blue);color:#fff;border:0;border-radius:4px;padding:10px 16px;font-size:13px;font-weight:600;letter-spacing:.4px;text-transform:uppercase;cursor:pointer}.button:hover:not(:disabled){background:var(--brand-blue-dark)}.button:disabled{background:var(--text-muted);cursor:not-allowed}.button-mini{background:var(--brand-blue-soft);color:var(--brand-blue);border:0;border-radius:3px;padding:5px 10px;font-size:12px;font-weight:600;cursor:pointer}.button-mini:hover{background:var(--brand-blue);color:#fff}.list-row{display:flex;align-items:center;gap:6px;margin-bottom:6px;flex-wrap:wrap}.list-row select,.list-row input{background:#fff;color:var(--text-primary);border:1px solid var(--border-strong);border-radius:4px;padding:5px 7px;font-size:12px}.list-row input[type=number]{width:80px}.result{margin:12px 16px 0;padding:10px 12px;background:var(--brand-blue-soft);border:1px solid var(--brand-blue);border-radius:4px;display:flex;justify-content:space-between;align-items:baseline}.result .label{font-size:11px;font-weight:600;letter-spacing:.4px;text-transform:uppercase;color:var(--brand-blue)}.result .value{font-size:14px;font-weight:600;color:var(--text-primary)}.toggle{display:flex;align-items:center;gap:8px;margin:14px 16px 0;font-size:12px;font-weight:600;letter-spacing:.3px;text-transform:uppercase;color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none}.issues{margin:12px 16px 16px;padding-top:10px;border-top:1px solid var(--border-subtle)}.issues h2{font-size:11px;font-weight:600;letter-spacing:.4px;text-transform:uppercase;color:var(--text-secondary);margin:0 0 8px}.issue{font-size:12px;padding:6px 8px;margin-bottom:4px;border-radius:3px;background:#fdf6e3;color:var(--text-primary);border-left:3px solid var(--accent-warning)}.issue.error{background:#fdecec;border-left-color:var(--accent-error)}.issue.warning{background:#fdf6e3;border-left-color:var(--accent-warning)}.empty{color:var(--text-muted);font-size:12px}.bom-panel{margin:16px;padding-top:12px;border-top:1px solid var(--border-subtle)}.bom-panel h2{font-size:11px;font-weight:600;letter-spacing:.4px;text-transform:uppercase;color:var(--text-secondary);margin:0 0 8px}.bom-summary{display:flex;gap:16px;margin-bottom:8px}.bom-summary-row{display:flex;gap:8px;align-items:baseline;font-size:12px;color:var(--text-secondary)}.bom-summary-row b{color:var(--text-primary);font-size:14px}.bom-table{width:100%;border-collapse:collapse;font-size:12px}.bom-table th,.bom-table td{text-align:left;padding:4px 6px;border-bottom:1px solid var(--border-subtle)}.bom-table th{color:var(--text-secondary);font-weight:600;text-transform:uppercase;font-size:10px;letter-spacing:.4px}.bom-table .num{text-align:right;font-variant-numeric:tabular-nums}.bom-issues{margin-top:10px}.bom-legend{margin-top:12px;font-size:12px;color:var(--text-secondary)}.bom-legend-title{font-size:11px;font-weight:600;letter-spacing:.4px;text-transform:uppercase;color:var(--text-secondary);margin-bottom:6px}.bom-legend ul{list-style:none;margin:0 0 8px;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:2px 8px}.bom-legend li{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--text-primary)}.swatch{width:12px;height:12px;border-radius:2px;display:inline-block}.swatch-ev73{background:#3a4045}.swatch-cev73{background:#b6bdc4}.swatch-tb90{background:#885a2e}.swatch-pa03{background:#4a7a3e}.swatch-f36{background:#d4884f}.swatch-t4{background:#3d6a8a}.swatch-ppl{background:#6a4a8a}.swatch-doors{background:#d4b443}.bom-legend-deferred{font-size:11px;color:var(--text-muted);font-style:italic}main{grid-area:main;position:relative;background:var(--bg-viewer)}.viewer{position:relative;width:100%;height:100%}.viewer canvas{display:block;width:100%;height:100%}
