:root{--ink:#0f172a;--ink-hover:#1e293b;--canvas:#fff;--surface:#f8fafc;--panel:#f1f5f9;--border:#e2e8f0;--border-strong:#cbd5e1;--muted:#64748b;--muted-strong:#475569;--accent:#4f46e5;--accent-hover:#4338ca;--accent-soft:#eef2ff;--accent-border:#c7d2fe;--amber:#d97706;--amber-soft:#fffbeb;--red:#dc2626;--red-soft:#fef2f2;--green:#16a34a;--green-soft:#f0fdf4;--workshop-ink:var(--ink);--panel-steel:var(--panel);--canvas-white:var(--canvas);--measure-blue:var(--accent);--safety-amber:var(--amber);--fault-red:var(--red);--line-steel:var(--border);--muted-ink:var(--muted);--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--radius-sm:8px;--radius:10px;--radius-lg:16px;--shadow-xs:0 1px 2px #0f172a0f;--shadow-sm:0 1px 3px #0f172a17, 0 1px 2px #0f172a0d;--shadow-md:0 6px 16px #0f172a1a, 0 2px 6px #0f172a0d;--shadow-lg:0 20px 44px #0f172a2e, 0 6px 16px #0f172a14;--font-technical:"Inter", ui-sans-serif, system-ui, sans-serif;--font-body:"Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-measure:ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;color:var(--ink);background:var(--surface);font-family:var(--font-body);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}*,:before,:after{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--muted)}body{min-width:320px;min-height:100vh;margin:0;overflow:hidden}html,#root{height:100%}button,input,select{font:inherit}button{background:var(--ink);border:1px solid var(--ink);border-radius:var(--radius-sm);color:#fff;cursor:pointer;min-height:34px;padding:var(--space-2) var(--space-3);justify-content:center;align-items:center;gap:8px;font-weight:600;transition:background-color .12s,border-color .12s,box-shadow .12s,transform 80ms;display:inline-flex}button:hover{background:var(--ink-hover);border-color:var(--ink-hover)}button:active{transform:translateY(1px)}button:disabled{cursor:not-allowed;opacity:.5;transform:none}.secondaryButton{background:var(--canvas);border-color:var(--border);box-shadow:var(--shadow-xs);color:var(--ink);font-weight:600}.secondaryButton:hover{background:var(--panel);border-color:var(--border-strong)}input,select{background:var(--canvas);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--ink);min-height:34px;padding:var(--space-2) var(--space-3);width:100%;transition:border-color .12s,box-shadow .12s}input:hover,select:hover{border-color:var(--border-strong)}input:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}select{appearance:none}label{color:var(--muted);gap:5px;font-size:12px;font-weight:500;display:grid}h2,h3{color:var(--ink);letter-spacing:-.01em;margin:0;font-weight:700}h2{font-size:15px}h3{font-size:13px}.appFrame{grid-template-rows:auto minmax(0,1fr);height:100vh;min-height:0;display:grid;overflow:hidden}.appMenuBar{background:var(--canvas);border-bottom:1px solid var(--border);color:var(--ink);z-index:20;gap:0;min-width:0;display:grid;position:relative}.menuTopRow{align-items:center;gap:2px;min-height:34px;padding:2px 8px 0;display:flex}.brandMark{color:var(--ink);align-items:center;gap:7px;padding:4px 6px 4px 2px;display:inline-flex}.brandMarkIcon{background:var(--ink);color:#fff;border-radius:7px;justify-content:center;align-items:center;width:24px;height:24px;display:inline-flex}.brandMarkName{font-family:var(--font-technical);letter-spacing:-.01em;white-space:nowrap;font-size:13px;font-weight:800}.menuTopRowDivider{background:var(--border);align-self:stretch;width:1px;margin:4px 6px}.menuRoot{position:relative}.menuTrigger{color:var(--ink);background:0 0;border:0;border-radius:6px;min-height:26px;padding:4px 10px;font-size:13px;font-weight:600;transition:background-color .12s}.menuTrigger:hover,.menuTrigger.active{background:var(--panel)}.menuDropdown{background:var(--canvas);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);z-index:30;gap:3px;min-width:270px;padding:6px;display:grid;position:absolute;top:calc(100% + 6px);left:0}.menuItem{color:#0f172a;align-items:center;gap:8px;justify-content:initial;text-align:left;background:0 0;border:0;border-radius:4px;grid-template-columns:20px minmax(0,1fr) auto;width:100%;min-height:30px;padding:5px 8px;display:grid}.menuItem:hover:not(:disabled){background:#f1f5f9}.menuItem:disabled{color:#94a3b8;opacity:1;background:0 0}.menuItem>span:nth-child(2){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.menuCheck{color:#64748b;justify-content:center;align-items:center;min-width:20px;display:inline-flex}.dangerMenuItem,.dangerMenuItem .menuCheck{color:var(--fault-red)}.menuItem kbd,.shortcutLine kbd{color:#475569;font-family:var(--font-measure);white-space:nowrap;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:4px;padding:2px 5px;font-size:10px;font-weight:800}.menuSeparator{border:0;border-top:1px solid #e2e8f0;margin:4px 2px}.menuGroup{border:1px solid #e2e8f0;border-radius:5px;gap:3px;padding:4px;display:grid}.menuGroupLabel{color:#64748b;text-transform:uppercase;grid-template-columns:20px 1fr;align-items:center;gap:8px;min-height:24px;padding:0 4px;font-size:11px;display:grid}.menuGroupBody{gap:2px;display:grid}.schemasPanel{border-top:3px solid var(--schema-accent,var(--measure-blue))}.schemaTitle{align-items:center;gap:8px;display:inline-flex}.schemaSwitch{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;display:grid}.schemaSwitchButton{color:#0f172a;background:#fff;border-color:#e2e8f0;min-height:34px;padding:7px 8px;font-size:12px}.schemaSwitchButton.active{background:color-mix(in srgb, var(--schema-accent,var(--measure-blue)) 16%, #fff);border-color:var(--schema-accent,var(--measure-blue));color:#0f172a}.schemaSection{gap:8px;display:grid}.schemaSummaryGrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;display:grid}.schemaSummaryGrid>div{border-radius:var(--radius);background:#fff;border:1px solid #e2e8f0;gap:2px;padding:8px;display:grid}.schemaSummaryGrid strong{color:#0f172a;font-family:var(--font-measure);font-size:14px}.schemaSummaryGrid span{color:#64748b;font-size:10px;line-height:1.2}.schemaWarningMetric{border-color:#fbbf24!important}.schemaBulkActions{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:6px;display:grid}.schemaBulkActions p{margin:0}.schemaFilters{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;display:grid}.schemaSection h3{color:#475569;font-family:var(--font-technical);text-transform:uppercase;font-size:12px}.schemaRoleGroup{border-radius:var(--radius);background:#fff;border:1px solid #e2e8f0;gap:6px;padding:8px;display:grid}.schemaRoleGroup>strong{color:#0f172a;font-size:12px}.schemaElementPill{border-left:3px solid var(--schema-accent,var(--measure-blue));color:#0f172a;background:#fff;border-radius:4px;justify-content:space-between;align-items:center;gap:8px;padding:6px 8px;font-size:12px;display:flex}.schemaElementPill small{color:#64748b;font-family:var(--font-measure);align-items:center;gap:5px;font-size:10px;display:inline-flex}.schemaRoleBadge{background:color-mix(in srgb, var(--schema-accent,var(--measure-blue)) 14%, #fff);border:1px solid color-mix(in srgb, var(--schema-accent,var(--measure-blue)) 42%, #fff);color:#0f172a;font-family:var(--font-body);border-radius:999px;padding:2px 6px;font-size:10px;font-weight:800;display:inline-flex}.schemaConnectionForm,.schemaConnectionList{gap:8px;display:grid}.schemaConnectionRow{border-radius:var(--radius);background:#fff;border:1px solid #e2e8f0;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:8px;padding:8px;display:grid}.schemaConnectionRow.warning{border-color:#fbbf24}.schemaConnectionRow strong,.schemaConnectionRow small{display:block}.schemaConnectionRow strong{color:#0f172a;font-size:12px}.schemaConnectionRow small{color:#64748b;align-items:center;gap:4px;margin-top:2px;font-size:11px;display:flex}.materialEstimateBox{border-radius:var(--radius);background:#fff;border:1px solid #e2e8f0;padding:8px}.energyBalanceBox{border:1px solid #e2e8f0;border-left:3px solid var(--schema-accent,var(--measure-blue));border-radius:var(--radius);background:#fff;padding:10px}.materialsPanel{border-top:3px solid #059669}.materialIconBadge{--category-color:#059669;--category-soft:#d1fae5}.materialSummaryGrid{grid-template-columns:repeat(3,minmax(0,1fr))}.materialsList{gap:8px;display:grid}.materialRow{border-radius:var(--radius);background:#fff;border:1px solid #e2e8f0;border-left:4px solid #059669;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:8px;padding:9px;display:grid}.materialFamilyIcon{color:#047857;background:#d1fae5;border:1px solid #a7f3d0;border-radius:999px;justify-content:center;align-items:center;width:30px;height:30px;display:inline-flex}.materialRow strong,.materialRow small{display:block}.materialRow strong{color:#0f172a;font-size:12px}.materialRow small{color:#64748b;text-transform:uppercase;font-size:10px;font-weight:800}.materialRow p{color:#64748b;margin:3px 0 0;font-size:11px;line-height:1.35}.materialQuantity{color:#0f172a;font-family:var(--font-measure);white-space:nowrap;background:#f1f5f9;border:1px solid #a7f3d0;border-radius:999px;padding:5px 8px;font-size:12px;font-weight:800}.budgetImportBox{border-radius:var(--radius);background:#fff;border:1px solid #e2e8f0;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding:9px;display:grid}.budgetImportBox strong,.budgetImportBox p{margin:0}.budgetImportBox p{color:#64748b;margin-top:2px;font-size:11px;line-height:1.35}.budgetImportButton{cursor:pointer;min-height:34px}.budgetImportButton input{display:none}.budgetSummary{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;display:grid}.budgetSummary>div{border-radius:var(--radius);background:#fff;border:1px solid #e2e8f0;gap:2px;padding:8px;display:grid}.budgetSummary strong{color:#0f172a;font-family:var(--font-measure);font-size:13px}.budgetSummary span{color:#64748b;font-size:10px}.budgetMatchList{gap:6px;display:grid}.budgetMatchRow{border-radius:var(--radius);background:#fff;border:1px solid #e2e8f0;border-left:4px solid #059669;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding:8px;display:grid}.budgetMatchRow strong,.budgetMatchRow small{display:block}.budgetMatchRow strong{color:#0f172a;font-size:12px}.budgetMatchRow small,.budgetMatchRow span{color:#64748b;font-size:11px}.variantsPanel{border-top:3px solid #4f46e5}.variantIconBadge{--category-color:#4f46e5;--category-soft:#eef2ff}.variantList{gap:9px;display:grid}.variantCard{border-radius:var(--radius);background:#fff;border:1px solid #e2e8f0;border-left:4px solid #a5b4fc;gap:9px;padding:10px;display:grid}.variantCard.active{border-left-color:var(--measure-blue)}.variantCardHeader,.variantFooter{justify-content:space-between;align-items:center;gap:8px;display:flex}.variantCardHeader strong,.variantCardHeader small{display:block}.variantCardHeader strong{color:#0f172a;font-size:13px}.variantCardHeader small{color:#64748b;font-size:10px}.variantMetrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;display:grid}.variantMetric{border-radius:var(--radius);background:#fff;border:1px solid #e2e8f0;gap:2px;padding:7px;display:grid}.variantMetric span{color:#64748b;font-size:10px}.variantMetric strong{color:#0f172a;font-family:var(--font-measure);font-size:13px}.variantMetric.danger{border-color:#fca5a5}.variantMetric.danger strong{color:var(--fault-red)}.menuEmptyState{color:#64748b;margin:0;padding:5px 8px 6px 28px;font-size:12px}.shortcutLine{color:#475569;grid-template-columns:82px 1fr;align-items:center;gap:8px;min-height:26px;margin:0;padding:2px 6px;font-size:12px;display:grid}.documentTitleBar{border-top:1px solid #e2e8f0;align-items:center;gap:8px;min-width:0;min-height:34px;padding:3px 10px 6px;display:flex}.documentTitleInput{color:#0f172a;font-family:var(--font-technical);background:0 0;border-color:#0000;width:clamp(160px,24vw,360px);min-width:120px;max-width:360px;min-height:28px;padding:3px 6px;font-size:14px;font-weight:850}.documentTitleInput:hover,.documentTitleInput:focus{background:#fff;border-color:#e2e8f0}.documentSaveState,.documentNotice,.documentError{white-space:nowrap;border-radius:999px;padding:4px 8px;font-size:11px;font-weight:800}.documentSaveState{color:#16a34a;background:#f0fdf4}.documentSaveState.unsaved{color:#92400e;background:#fffbeb}.documentNotice{color:#4f46e5;background:#eef2ff}.documentError{color:var(--fault-red);background:#fee2e2}.appShell{grid-template-columns:minmax(360px,1fr) minmax(280px,360px);height:100%;min-height:0;display:grid;overflow:hidden}.sidePanel{background:#f8fafc;border-color:#e2e8f0;align-content:start;gap:14px;height:100%;padding:14px;display:grid;overflow-y:auto}.rightPanel{border-left:1px solid #e2e8f0}.scenePanel{height:100%;min-height:0;position:relative;overflow:hidden}.sceneWorkbench{grid-template-rows:auto minmax(0,1fr) auto;height:100%;min-height:0;display:grid}.editorToolbar{z-index:4;background:#f8fafc;border-bottom:1px solid #e2e8f0;padding:8px 10px;display:block;box-shadow:0 1px #0f172a0a}.toolbarPrimary{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;display:grid}.modeRail{background:#fff;border:1px solid #e2e8f0;border-radius:8px;grid-template-columns:repeat(4,minmax(0,auto));gap:4px;padding:4px;display:grid}.modeButton{color:#475569;background:0 0;border:0;border-radius:6px;min-height:34px;padding:7px 10px}.modeButton:hover{background:#f1f5f9}.modeButton.active{color:#fff}.mode-selection.active{background:#0f172a}.mode-placement.active,.mode-dimensions.active,.mode-contraintes.active{background:#4f46e5}.commandDeck{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.commandGroup{background:#fff;border:1px solid #e2e8f0;border-radius:8px;flex-wrap:wrap;align-items:center;gap:4px;min-height:44px;padding:5px;display:flex}.commandLabel{color:#64748b;text-transform:uppercase;margin:0 4px;font-size:11px;font-weight:800}.toolButton{color:#0f172a;background:#f8fafc;border-color:#e2e8f0;min-height:32px;padding:6px 9px}.toolButton:hover{background:#f1f5f9}.activeToggle{color:#3730a3;background:#eef2ff;border-color:#a5b4fc}.accentTool{color:#4338ca;background:#eef2ff;border-color:#c7d2fe}.compactTextButton{min-width:42px}.selectionBadge{color:#fff;text-align:center;background:#0f172a;border-radius:999px;min-width:26px;padding:5px 8px;font-size:12px;font-weight:800}.layerMenu{justify-self:end;position:relative}.layerMenu summary{color:#0f172a;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:8px;align-items:center;gap:6px;min-height:42px;padding:8px 11px;font-size:13px;font-weight:800;display:inline-flex}.layerMenu summary::marker{content:""}.layerMenuBody{z-index:10;background:#fff;border:1px solid #e2e8f0;border-radius:8px;gap:6px;min-width:230px;padding:8px;display:grid;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 10px 28px #0f172a29}.layerTool{background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;grid-template-columns:auto 1fr auto auto;align-items:center;gap:3px;padding:4px;display:grid}.layerTool:before{content:"";border-radius:999px;width:8px;height:8px;margin-left:5px}.layer-mobilier:before{background:#6f7b65}.layer-eau:before{background:#4f8ea8}.layer-electricite:before{background:#d1a642}.layer-gaz:before{background:#b95745}.layer-structure:before{background:#6d78a8}.layer-exterieur:before{background:#596469}.layerTool small{color:#475569;padding:0 5px 0 2px;font-size:11px;font-weight:700}.templateStrip button,.quickPresetStrip button{min-height:30px;padding:5px 8px}.templateStrip>span,.quickPresetStrip>span{color:#64748b;align-items:center;gap:5px;font-size:12px;font-weight:700;display:inline-flex}.sceneViewport{min-height:0;position:relative;overflow:hidden}.sceneLoading{color:#475569;background:#f1f5f9;justify-content:center;align-items:center;height:100%;min-height:420px;font-size:14px;font-weight:700;display:flex}.sceneCanvas{width:100%;height:100%;min-height:0}.sceneWorkbench .sceneCanvas{min-height:0}.panelBlock{border-bottom:1px solid #e2e8f0;gap:12px;padding-bottom:14px;display:grid}.panelHeader{justify-content:space-between;align-items:center;gap:8px;display:flex}.selectionTitle{align-items:center;gap:7px;display:inline-flex}.selectionTitle small{background:var(--category-soft,#f1f5f9);color:var(--category-color,#64748b);border-radius:999px;padding:3px 7px;font-size:11px;font-weight:800}.panelActions{gap:6px;display:flex}.iconButton{aspect-ratio:1;width:34px;min-height:34px;padding:7px}.dangerButton{background:#dc2626;border-color:#dc2626}.dangerButton:hover{background:#b91c1c}.inlineControls{flex-wrap:wrap;gap:8px;display:flex}.controlGroup{flex-wrap:wrap;align-items:center;gap:7px;display:flex}.controlGroup button{min-height:32px;padding:6px 9px}.controlLabel{color:#64748b;font-size:12px;font-weight:700}.presetChips{flex-wrap:wrap;gap:7px;display:flex}.presetChips button{min-height:32px;padding:6px 9px}.vanFilterBlock,.vanPresetGroups,.vanFamilyGroup{gap:8px;display:grid}.filterRow{flex-wrap:wrap;gap:6px;display:flex}.filterRow button{min-height:30px;padding:5px 8px}.vanPresetGrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;display:grid}.vanPresetButton{text-align:left;border-radius:7px;justify-content:stretch;align-items:start;gap:3px;min-height:82px;display:grid;position:relative}.activeVanPreset{color:#fff;background:#0f172a;border-color:#0f172a}.activeVanPreset:hover{background:#1e293b}.vanPresetButton strong,.vanPresetButton small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.vanPresetButton small{color:#64748b;font-size:11px}.activeVanPreset small{color:#e0e7ff}.vanSizeBadge{color:#0f172a;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:999px;padding:2px 7px;font-size:11px;font-weight:800;position:absolute;top:7px;right:7px}.activeVanPreset .vanSizeBadge{background:#fff;border-color:#fff}.gridInputs{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.projectList,.presetList,.placedList{gap:8px;display:grid}.presetCategoryHeader{justify-content:space-between;align-items:center;gap:8px;display:flex}.presetCategoryHeader span{color:#475569;background:#f1f5f9;border-radius:999px;padding:3px 7px;font-size:11px;font-weight:700}.projectRow,.presetRow,.placedRow{color:#0f172a;justify-content:initial;text-align:left;background:#fff;border:1px solid #e2e8f0;grid-template-columns:auto 1fr auto;display:grid}.presetActionRow{cursor:pointer;border-radius:6px;align-items:center;gap:8px;min-height:36px;padding:8px 12px}.presetRow{border-left:4px solid var(--category-color,#e2e8f0);grid-template-columns:auto minmax(0,1fr) auto auto}.categoryIconBadge{background:var(--category-soft,#f1f5f9);border:1px solid color-mix(in srgb, var(--category-color,#64748b) 44%, #fff);color:var(--category-color,#64748b);border-radius:999px;flex:none;justify-content:center;align-items:center;width:30px;height:30px;display:inline-flex}.projectRow{grid-template-columns:1fr auto}.projectRow:hover,.presetRow:hover,.placedRow:hover,.placedRow.selected{background:#f1f5f9}.mutedRow{opacity:.48}.placedRow span:nth-child(2),.presetRow span:nth-child(2){gap:2px;min-width:0;display:grid}.presetTags{flex-wrap:wrap;align-items:center;gap:5px;display:flex}.presetTags>span:not(.verifiedBadge):not(.statusWarning){color:#64748b;background:#f1f5f9;border-radius:999px;padding:3px 7px;font-size:11px;font-weight:700}.presetCapabilityTags{margin-top:2px}.presetCapabilityTags .capabilityBadge{color:#475569;background:#f1f5f9;border:1px solid #e2e8f0;align-items:center;gap:4px;padding:3px 7px;display:inline-flex}.presetRow strong,.presetRow small,.placedRow strong,.placedRow small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.presetRow small,.placedRow small{color:#64748b;font-size:11px}.sourceLink{color:#4f46e5;font-size:11px;font-weight:800;text-decoration:none}.sourceLink:hover{text-decoration:underline}.placementTools{gap:10px;display:grid}.nudgePad{grid-template-columns:repeat(3,34px);justify-content:center;gap:6px;display:grid}.nudgePad button:first-child,.nudgePad button:last-child{grid-column:2}.collisionList{background:#fef2f2;border:1px solid #fecaca;border-radius:6px;gap:4px;padding:8px;display:grid}.collisionList p{color:#dc2626;margin:0;font-size:12px}.measurementStrip{color:#475569;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:6px;gap:4px;padding:8px;font-size:12px;display:grid}.metadataBox{color:#92400e;background:#f8fafc;border:1px solid #fde68a;border-radius:6px;gap:4px;padding:8px;font-size:12px;display:grid}.dimensionGrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;display:grid}.dimensionGrid span{color:#475569;background:#fff;border:1px solid #e2e8f0;border-radius:6px;padding:7px 8px;font-size:12px}.colorSwatch{border:1px solid #fff;border-radius:999px;width:16px;height:16px;display:inline-block}.searchField{background:#fff;border:1px solid #e2e8f0;border-radius:6px;grid-template-columns:auto 1fr;align-items:center;gap:6px;padding:0 8px;display:grid}.searchField input{border:0;min-height:34px;padding-left:0}.searchField input:focus{outline:0}.categoryFilters{flex-wrap:wrap;gap:6px;display:flex}.categoryFilters button{min-height:30px;padding:5px 8px}.categoryFilterButton{border-color:color-mix(in srgb, var(--category-color) 42%, #e2e8f0);color:var(--category-color)}.categoryFilterButton:hover{background:var(--category-soft)}.categoryFilterButton.active{background:var(--category-color);border-color:var(--category-color);color:#fff}.catalogSourceBar{color:#475569;background:#eef2ff;border:1px solid #e2e8f0;border-radius:6px;justify-content:space-between;align-items:center;gap:8px;padding:7px 8px;font-size:12px;display:flex}.verifiedBadge{color:#4338ca;background:#e0e7ff;border:1px solid #c7d2fe;border-radius:999px;padding:4px 7px;font-size:11px;font-weight:800;line-height:1;display:inline-flex}.templateStrip,.quickPresetStrip{background:#f1f5f9;border:1px solid #e2e8f0;border-radius:6px;flex-wrap:wrap;align-items:center;gap:6px;padding:6px;display:flex}.gaugeTrack{background:#e2e8f0;border-radius:999px;height:12px;overflow:hidden}.gaugeFill{background:#4f46e5;height:100%;transition:width .16s}.gaugeFill.danger{background:#ef4444}.axlePanel{background:#f1f5f9;border:1px solid #e2e8f0;border-radius:8px;padding:10px}.axlePanel h2{color:#065f46}.axleCard{background:#fff;border:1px solid #e2e8f0;border-radius:8px;gap:10px;padding:10px;display:grid}.axleBarBlock{gap:6px;display:grid}.axleBarHeader{justify-content:space-between;align-items:center;gap:8px;display:flex}.axleBarHeader strong{color:#0f172a;font-size:13px}.axleTrack{height:10px}.axleFill{background:#4f46e5}.axleDiagram{grid-template-columns:auto 1fr auto;align-items:center;gap:8px;padding:2px 6px;display:grid}.axleWheel{background:#0f172a;border-radius:999px;width:16px;height:16px;display:block}.axleWheel.danger{background:#ef4444}.axleBodyLine{background:#cbd5e1;border-radius:999px;height:5px}.dangerText{color:#dc2626;font-size:12px;font-weight:700}.statusOk,.statusDanger,.statusWarning{border-radius:999px;padding:4px 8px;font-size:12px}.alertList{gap:6px;display:grid}.alertList p{margin:0}.errorText{color:#dc2626;margin:0;font-size:13px}.successText{color:#16a34a;margin:0;font-size:13px}.mutedText{color:#64748b;margin:0;font-size:13px}.topDownPanel{background:#f8fafc;border-top:1px solid #e2e8f0;gap:8px;padding:10px 12px 12px;display:grid}.topDownHeader{justify-content:space-between;align-items:center;gap:12px;display:flex}.topDownSvg{touch-action:none;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:6px;width:100%;height:220px;display:block}.sceneControls{z-index:3;background:#ffffffeb;border:1px solid #e2e8f0;border-radius:6px;align-items:center;gap:7px;padding:6px;display:grid;position:absolute;top:12px;right:12px}.sceneControls span{color:#475569;text-align:center;justify-content:center;align-items:center;min-width:42px;font-size:12px;font-weight:700;display:inline-flex}.sceneControlGroup{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:5px;max-width:420px;display:flex}.sceneHud{color:#475569;z-index:3;background:#ffffffe6;border:1px solid #e2e8f0;border-radius:6px;align-items:start;gap:6px;max-width:min(420px,100% - 24px);padding:8px 10px;display:grid;position:absolute;bottom:12px;left:12px}.sceneHud div{gap:2px;display:grid}.sceneHud strong{color:#0f172a;text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.sceneHud span{color:#64748b;font-size:12px;line-height:1.35}.sceneContextPanel{color:#0f172a;z-index:4;background:#fffffff0;border:1px solid #e2e8f0;border-radius:6px;gap:8px;width:max-content;max-width:min(520px,100% - 24px);padding:8px;display:grid;position:absolute;top:12px;left:50%;transform:translate(-50%);box-shadow:0 14px 34px #0f172a24}.sceneContextHeader{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:8px;display:grid}.sceneContextHeader strong,.sceneContextHeader span{display:block}.sceneContextHeader strong{color:#0f172a;text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.sceneContextHeader span{color:#64748b;font-family:var(--font-measure);font-size:11px}.sceneStateStrip,.sceneContextActions{flex-wrap:wrap;gap:5px;display:flex}.sceneContextActions button{min-height:30px;padding:6px 8px}.sceneItemLabel{color:#fff;pointer-events:none;text-overflow:ellipsis;white-space:nowrap;background:#0f172ad1;border:1px solid #ffffffb8;border-radius:4px;max-width:140px;padding:5px 7px;font-size:11px;font-weight:800;line-height:1;overflow:hidden}.surfaceItemLabel{background:#0f172ac2}.scenePill{color:#0f172a;background:#fff;border-color:#e2e8f0;gap:5px;min-height:30px;padding:5px 8px}.scenePill.active{color:#fff;background:#0f172a;border-color:#0f172a}.sceneLayerButton{border-color:color-mix(in srgb, var(--layer-color) 34%, #e2e8f0);color:var(--layer-color);background:#fff;grid-template-columns:auto auto;gap:1px;min-width:42px;min-height:30px;padding:5px 7px;display:inline-grid}.sceneLayerButton.active{background:color-mix(in srgb, var(--layer-color) 13%, #fff);border-color:var(--layer-color);color:var(--layer-color)}.sceneLayerButton:not(.active){opacity:.58}.topDownVan{fill:#fff;stroke:#0f172a;stroke-width:2px}.topDownBody{fill:#f1f5f9;opacity:.72;stroke:#94a3b8;stroke-width:1.5px}.topDownGrid{stroke:#e2e8f0;stroke-width:1px}.topDownLabel{fill:#64748b;font-size:12px;font-weight:700}.topDownCockpit{fill:#e2e8f0;opacity:.72;stroke:#94a3b8;stroke-dasharray:6 5;stroke-width:1.5px}.topDownNose{fill:#e2e8f0;opacity:.58;stroke:#94a3b8;stroke-width:1.4px}.topDownNoseDivider{stroke:#94a3b8;stroke-dasharray:4 4;stroke-width:1.5px}.topDownDivider{stroke:#94a3b8;stroke-dasharray:5 4;stroke-width:2px}.topDownDashboard{fill:#475569;opacity:.82}.topDownSeat{fill:#475569;opacity:.86}.topDownSeatBack{fill:#1e293b;opacity:.86}.topDownWheelWell{fill:#cbd5e1;opacity:.72;stroke:#94a3b8;stroke-width:1px}.topDownWheel{fill:#0f172a;opacity:.9}.topDownCabinText{fill:#475569;text-anchor:middle;font-size:12px;font-weight:700}.topDownItem{cursor:move}.topDownItemRect{opacity:.9;stroke:#fff;stroke-width:2px}.topDownItemRect.selected{stroke:#0f172a;stroke-width:3px}.topDownSurfaceItem{cursor:pointer}.topDownSurfaceRect{opacity:.76;stroke:#fff;stroke-dasharray:5 3;stroke-width:2px}.topDownSurfaceRect.selected{stroke:#0f172a;stroke-dasharray:none;stroke-width:3px}.topDownItemText{fill:#fff;paint-order:stroke;pointer-events:none;stroke:#0f172a;stroke-width:3px;text-anchor:middle;font-size:11px;font-weight:700}.topDownItemCategory{fill:#ffffffe6;letter-spacing:.04em;paint-order:stroke;pointer-events:none;stroke:#0f172ab8;stroke-width:2px;text-anchor:middle;text-transform:uppercase;font-size:9px;font-weight:800}button,input,select,summary{font-family:var(--font-body)}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,.presetActionRow:focus-visible{outline:2px solid var(--measure-blue);outline-offset:2px}label,.mutedText{color:var(--muted-ink)}h2,h3,.commandLabel,.controlLabel{font-family:var(--font-technical)}.appShell{background:var(--surface);grid-template-columns:minmax(460px,1fr) minmax(300px,328px)}.appShell.toolsCollapsed{grid-template-columns:minmax(560px,1fr) 58px}.sidePanel{background:var(--surface);gap:var(--space-3);padding:var(--space-3)}.rightPanel{background:var(--canvas);border-left-color:var(--border);padding:0}.collapsedPanel{overflow:hidden}.scenePanel{background:var(--panel)}.sceneWorkbench{grid-template-rows:auto auto auto minmax(0,1fr) auto}.sceneWorkbench>.editorToolbar{grid-row:1}.sceneWorkbench>.safetyStatusBar{grid-row:2}.sceneWorkbench>.sceneAlertsBar{grid-row:3}.sceneWorkbench>.sceneLoading,.sceneWorkbench>.sceneViewport{grid-row:4}.sceneWorkbench>.topDownPanel{grid-row:5}.editorToolbar{border-bottom-color:var(--line-steel);padding:var(--space-2) var(--space-3);background:#fffffff5}.toolbarPrimary{gap:var(--space-2);grid-template-columns:auto minmax(0,1fr) auto}.modeRail,.commandGroup,.layerMenu summary,.layerMenuBody,.layerTool{border-color:var(--line-steel)}.modeButton.active,.activeToggle,.activeVanPreset,.scenePill.active,.toolTab.active{background:var(--measure-blue);border-color:var(--measure-blue);color:#fff}.mode-placement.active,.mode-dimensions.active,.mode-contraintes.active{background:var(--measure-blue)}.commandDeck{gap:var(--space-2)}.commandGroup{min-height:38px;padding:var(--space-1)}.commandLabel{color:var(--muted-ink);letter-spacing:.04em}.toolButton{background:var(--canvas-white);border-color:var(--line-steel);color:var(--workshop-ink)}.panelBlock{border-bottom-color:var(--line-steel);gap:var(--space-3);padding-bottom:var(--space-3)}.collapsiblePanel{border:1px solid var(--line-steel);border-radius:var(--radius);padding:var(--space-3);background:#ffffff80}.collapsiblePanel>summary{cursor:pointer;list-style:none}.collapsiblePanel>summary::-webkit-details-marker{display:none}.collapsiblePanel>summary:after{color:var(--measure-blue);content:"Regler";letter-spacing:.04em;text-transform:uppercase;font-size:11px;font-weight:800}.collapsiblePanel[open]>summary:after{content:"Masquer"}.toolSidebar{grid-template-rows:auto auto minmax(0,1fr);height:100vh;min-height:0;display:grid}.toolSidebarHeader{border-bottom:1px solid var(--line-steel);align-items:center;gap:var(--space-2);min-height:58px;padding:var(--space-3);justify-content:space-between;display:flex}.toolSidebarHeader h2,.toolSidebarHeader p{margin:0}.toolSidebarHeader p{color:var(--muted-ink);font-size:12px}.toolTabs{border-bottom:1px solid var(--line-steel);gap:var(--space-1);padding:var(--space-2);background:#f1f5f9;grid-template-columns:repeat(auto-fit,minmax(82px,1fr));display:grid}.toolTab{color:var(--workshop-ink);background:0 0;border-color:#0000;min-height:34px}.toolTab:hover{background:#4f46e51a}.toolPanel{min-height:0;padding:var(--space-3);overflow-y:auto}.toolPanel>.panelBlock{border-bottom:0}.collapsedToolSidebar{grid-template-rows:auto auto}.collapsedToolSidebar .toolSidebarHeader{padding:var(--space-2);justify-content:center}.collapsedToolSidebar .toolTabs{grid-template-columns:1fr}.collapsedToolSidebar .toolTab{min-width:40px;padding:var(--space-2)}.safetyStatusBar{background:var(--canvas);border-bottom:1px solid var(--border);box-shadow:var(--shadow-xs);align-items:stretch;gap:var(--space-2);padding:var(--space-2) var(--space-3);z-index:5;grid-template-columns:auto repeat(3,minmax(150px,1fr)) auto;display:grid;position:relative}.safetySignal{border-radius:var(--radius);color:var(--measure-blue);font-family:var(--font-technical);align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);text-transform:uppercase;background:#eef2ff;border:1px solid #c7d2fe;justify-content:center;font-size:12px;font-weight:800;display:inline-flex}.safetySignal.danger{color:var(--fault-red);background:#fef2f2;border-color:#fca5a5}.safetyMetric{border-radius:var(--radius);padding:var(--space-2);background:#ffffffd6;border:1px solid #cbd5e1e0;gap:3px;display:grid}.safetyMetric span{color:var(--muted-ink);letter-spacing:.04em;text-transform:uppercase;font-size:11px;font-weight:800}.safetyMetric strong{color:var(--workshop-ink);font-family:var(--font-measure);font-size:13px}.miniGaugeTrack{background:#e2e8f0;border-radius:999px;height:5px;overflow:hidden}.miniGaugeFill{background:var(--measure-blue);height:100%}.miniGaugeFill.danger{background:var(--fault-red)}.safetyStatusBar p{color:var(--muted-ink);align-items:center;gap:var(--space-1);justify-content:center;margin:0;font-size:12px;display:inline-flex}.sceneViewport{background:radial-gradient(circle at 50% 0,#ffffffd9,#e2e8f0e0 42%,#e2e8f0 100%)}.sceneViewportDropActive,.topDownSvgDropActive{outline:3px solid var(--accent);outline-offset:-3px}.measurePoint{fill:var(--accent);stroke:#fff;stroke-width:1.5px}.measureLine{stroke:var(--accent);stroke-width:2px;stroke-dasharray:5 3}.measureLabel{fill:var(--accent);font-size:11px;font-weight:700}.presetActionRow{cursor:grab}.presetActionRow:active{cursor:grabbing}.dragHandle{color:var(--muted);align-items:center;display:inline-flex}.sceneAlertsBar{background:var(--canvas);border-bottom:1px solid var(--border);align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3) var(--space-2);flex-wrap:wrap;display:flex}.topDownPanel{border-top-color:var(--line-steel);gap:var(--space-2);padding:var(--space-2) var(--space-3);background:#fffffff0}.topDownSvg{border-color:var(--line-steel);height:156px}.sceneControls,.sceneHud{border-color:var(--line-steel);border-radius:var(--radius);background:#ffffffeb}.sceneCanvas{touch-action:none}.onboardingCard{border:1px solid var(--line-steel);border-left:4px solid var(--measure-blue);border-radius:var(--radius);color:var(--workshop-ink);gap:var(--space-2);max-width:min(420px,100% - 32px);padding:var(--space-3);z-index:4;background:#fffffff0;display:grid;position:absolute;top:16px;left:16px;box-shadow:0 12px 28px #0f172a24}.onboardingCard strong{font-family:var(--font-technical);font-size:14px}.onboardingCard ol{gap:4px;margin:0;padding-left:20px;display:grid}.onboardingCard li{color:var(--ink);font-size:12px;line-height:1.4}.onboardingCard p{color:var(--muted-ink);margin:0;font-size:11px;line-height:1.4}.onboardingCta{justify-self:start}.statusOk,.statusDanger,.statusWarning{border-radius:var(--radius);font-family:var(--font-technical);letter-spacing:.03em;font-size:11px;font-weight:800}.statusOk{color:var(--measure-blue);background:#eef2ff}.statusDanger{color:var(--fault-red);background:#fee2e2}.statusWarning{color:var(--safety-amber);background:#fffbeb}.dangerButton,.gaugeFill.danger,.axleWheel.danger{background:var(--fault-red);border-color:var(--fault-red)}.gaugeFill,.axleFill{background:var(--measure-blue)}.measurementStrip,.dimensionGrid span,.safetyMetric strong{font-family:var(--font-measure)}.metadataBox,.measurementStrip,.templateStrip,.quickPresetStrip{border-color:var(--line-steel)}.metadataBox{color:var(--muted-ink);background:#f8fafc}.presetRow,.placedRow,.projectRow{border-color:var(--line-steel);border-radius:var(--radius)}.presetRow:hover,.placedRow:hover,.projectRow:hover,.placedRow.selected{background:#eef2ff}.emptyStateText{border-radius:var(--radius);color:var(--muted-ink);padding:var(--space-3);background:#f1f5f9;border:1px dashed #cbd5e1;margin:0;font-size:13px;line-height:1.4}.inspectorSection{border:1px solid var(--line-steel);border-radius:var(--radius);gap:var(--space-3);padding:var(--space-2);display:grid}.inspectorSection>summary{color:var(--workshop-ink);cursor:pointer;font-family:var(--font-technical);letter-spacing:.04em;text-transform:uppercase;font-size:12px;font-weight:800;list-style:none}.inspectorSection>summary::-webkit-details-marker{display:none}.inspectorSection>summary:after{color:var(--measure-blue);content:" +"}.inspectorSection[open]>summary:after{content:" -"}.inspectorSection[open]>summary{margin-bottom:var(--space-2)}.commandGroup,.modeRail,.layerMenu summary,.presetRow,.placedRow,.projectRow,.variantCard,.materialRow,.budgetMatchRow,.budgetImportBox,.schemaConnectionRow,.schemaElementPill,.schemaSummaryGrid>div,.schemaRoleGroup,.budgetSummary>div,.variantMetric,.vanPresetButton,.axleCard,.axlePanel,.materialEstimateBox,.toolSidebarHeader,.safetyMetric,.dimensionGrid span,.measurementStrip,.metadataBox,.collisionList,.topDownSvg,.searchField,.catalogSourceBar,.presetActionRow{box-shadow:var(--shadow-xs)}.menuDropdown,.layerMenuBody,.sceneContextPanel,.onboardingCard{box-shadow:var(--shadow-lg)}.sceneControls,.sceneHud{box-shadow:var(--shadow-md)}.dialogOverlay{padding:var(--space-4);z-index:100;background:#0f172a80;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dialogPanel{background:var(--canvas);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);gap:0;width:100%;max-width:640px;max-height:86vh;display:grid;overflow:hidden}.dialogHeader{border-bottom:1px solid var(--border);padding:var(--space-3) var(--space-4);justify-content:space-between;align-items:center;display:flex}.dialogHeader h2{font-size:15px}.dialogBody{gap:var(--space-3);padding:var(--space-4);display:grid;overflow-y:auto}.subSection{background:var(--canvas);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-2) var(--space-3)}.subSection+.subSection{margin-top:var(--space-2)}.subSection>summary{cursor:pointer;justify-content:space-between;align-items:center;list-style:none;display:flex}.subSection>summary::-webkit-details-marker{display:none}.subSectionTitle{color:var(--ink);align-items:center;gap:6px;font-size:12px;font-weight:700;display:inline-flex}.subSectionChevron{color:var(--muted);transition:transform .12s}.subSection[open]>summary .subSectionChevron{transform:rotate(90deg)}.subSectionBadge{background:var(--panel);color:var(--muted-strong);border-radius:999px;padding:2px 8px;font-size:11px;font-weight:800}.subSectionBody{gap:var(--space-2);margin-top:var(--space-3);display:grid}.vanSettingsForm{gap:var(--space-3);display:grid}.finishPicker{gap:var(--space-2);display:grid}.finishPickerGroup{gap:6px;display:grid}.finishPickerGroupLabel{color:var(--muted);text-transform:uppercase;font-size:11px;font-weight:700}.finishSwatchRow{flex-wrap:wrap;gap:6px;display:flex}.finishSwatch{background:var(--canvas);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--ink);flex-direction:column;align-items:center;gap:4px;width:68px;min-height:0;padding:6px;font-weight:500;display:inline-flex}.finishSwatch:hover{background:var(--panel);border-color:var(--border-strong)}.finishSwatch.active{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.finishSwatch small{color:inherit;text-align:center;font-size:10px;line-height:1.2}.finishSwatchChip{border:1px solid #0f172a1f;border-radius:999px;width:26px;height:26px;display:block}.finishSwatchNone{background:repeating-linear-gradient(45deg, var(--panel) 0 4px, var(--canvas) 4px 8px)}.advancedToolsList{gap:var(--space-2);display:grid}.advancedToolCard{background:var(--canvas);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-xs);color:var(--ink);align-items:center;gap:var(--space-3);min-height:0;padding:var(--space-3);text-align:left;font-weight:500;display:flex}.advancedToolCard:hover{background:var(--panel);border-color:var(--border-strong)}.advancedToolCard span{gap:2px;display:grid}.advancedToolCard strong{font-size:13px}.advancedToolCard small{color:var(--muted);font-size:11px}@media (width<=980px){body{overflow:auto}.appFrame{height:auto;min-height:100vh;overflow:visible}.appMenuBar{position:sticky;top:0}.menuTopRow,.documentTitleBar{flex-wrap:wrap}.menuDropdown{max-width:calc(100vw - 16px)}.appShell{grid-template-columns:1fr;height:auto;overflow:visible}.appShell.toolsCollapsed{grid-template-columns:1fr}.sidePanel{border:0;height:auto;max-height:none}.rightPanel{border-top:1px solid var(--line-steel)}.collapsedPanel{min-height:0}.scenePanel,.sceneCanvas{min-height:520px}.sceneWorkbench{height:auto;min-height:820px}.editorToolbar{position:sticky;top:0}.toolbarPrimary{grid-template-columns:1fr}.commandDeck{align-items:stretch}.commandGroup{width:100%}.modeRail,.safetyStatusBar{grid-template-columns:repeat(2,minmax(0,1fr))}.safetySignal,.safetyStatusBar p{grid-column:span 2}.toolSidebar,.collapsedToolSidebar{height:auto}.toolSidebarHeader{min-height:50px}.collapsedToolSidebar .toolSidebarHeader{display:none}.collapsedToolSidebar .toolTabs{grid-template-columns:repeat(2,minmax(0,1fr))}.collapsedToolSidebar .toolTab span{display:inline}.layerMenu{justify-self:stretch}.layerMenu summary{justify-content:center;width:100%}.layerMenuBody{left:0;right:0}.vanPresetGrid{grid-template-columns:1fr}.sceneWorkbench .sceneCanvas{min-height:520px}.topDownSvg{height:190px}.sceneControls{top:10px;left:10px;right:10px}.sceneHud{max-width:none;bottom:10px;left:10px;right:10px}.sceneContextPanel{width:auto;top:118px;left:10px;right:10px;transform:none}.sceneControlGroup{justify-content:flex-start;max-width:none}}
