:root{--bg-dark: #0b0f17;--bg-panel: #131a24;--bg-card: #1a2330;--bg-input: #0e141d;--border-color: #263244;--border-subtle: #1d2736;--text-main: #f1f5f9;--text-muted: #94a3b8;--accent: #38bdf8;--accent-hover: #0ea5e9;--accent-glow: rgba(56, 189, 248, .16);--emerald: #10b981;--amber: #f59e0b;--danger: #ef4444;--blender-orange: #ea7600;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", Consolas, monospace}*{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%;overflow:hidden;background-color:var(--bg-dark);color:var(--text-main);font-family:var(--font-sans);font-size:13px;-webkit-user-select:none;user-select:none}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}#app{display:flex;flex-direction:column;width:100vw;height:100vh}.topbar{height:52px;background:var(--bg-panel);border-bottom:1px solid var(--border-color);display:flex;align-items:center;justify-content:space-between;padding:0 12px;gap:10px;flex-shrink:0}.topbar-left,.topbar-center,.topbar-right{display:flex;align-items:center;gap:8px}.brand{display:flex;align-items:center;gap:8px;flex-shrink:0}.brand-logo{width:32px;height:32px;border-radius:7px;background:linear-gradient(135deg,#0284c7,#38bdf8);display:flex;align-items:center;justify-content:center;color:#fff;box-shadow:0 2px 10px #38bdf847}.brand h1{font-size:14px;font-weight:700;letter-spacing:-.01em;line-height:1.1}.brand-subtitle{font-size:10.5px;color:var(--accent);font-weight:600}.preset-select{width:315px;background:var(--bg-card);border:1px solid rgba(56,189,248,.4);color:var(--text-main);font-weight:600;font-size:11.5px;padding:5px 8px;border-radius:6px;cursor:pointer}.toolbar-group{display:flex;align-items:center;gap:3px;background:var(--bg-input);padding:3px;border-radius:7px;border:1px solid var(--border-subtle)}.btn-mode,.btn-tool,.btn-cam{background:transparent;color:var(--text-muted);border:none;padding:5px 9px;border-radius:5px;font-size:11.5px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all .14s ease;white-space:nowrap}.btn-mode:hover,.btn-tool:hover,.btn-cam:hover{color:var(--text-main);background:#ffffff0f}.btn-mode.active,.btn-tool.active{background:var(--accent);color:#081018;font-weight:700}.btn-cam.active{background:#38bdf82e;color:var(--accent);border:1px solid rgba(56,189,248,.45)}.btn-pill{background:var(--bg-card);color:var(--text-muted);border:1px solid var(--border-color);padding:5px 10px;border-radius:6px;font-size:11.5px;font-weight:600;cursor:pointer;transition:all .14s ease;white-space:nowrap}.btn-pill.active{background:#10b98129;color:#34d399;border-color:#10b98173}.btn-id-spec{background:linear-gradient(135deg,#f59e0b,#d97706);color:#090d14;border:none;padding:6px 12px;border-radius:6px;font-size:12px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;gap:6px;box-shadow:0 2px 12px #f59e0b47;transition:transform .12s ease,filter .12s ease;white-space:nowrap}.btn-id-spec:hover{filter:brightness(1.08);transform:translateY(-1px)}.studio-workspace{flex:1;display:flex;min-height:0;overflow:hidden}.sidebar-left{width:276px;background:var(--bg-panel);border-right:1px solid var(--border-color);display:flex;flex-direction:column;flex-shrink:0}.sidebar-tabs{display:grid;grid-template-columns:repeat(3,1fr);border-bottom:1px solid var(--border-color);background:var(--bg-input);flex-shrink:0}.sidebar-tabs.right-tabs{grid-template-columns:repeat(2,1fr)}.tab-btn,.right-tab-btn{background:transparent;color:var(--text-muted);border:none;border-bottom:2px solid transparent;padding:9px 4px;font-size:11.5px;font-weight:600;cursor:pointer;transition:all .15s ease}.tab-btn:hover,.right-tab-btn:hover{color:var(--text-main)}.tab-btn.active,.right-tab-btn.active{color:var(--accent);border-bottom-color:var(--accent);background:var(--bg-panel)}.tab-panel,.right-tab-panel{display:none;flex-direction:column;flex:1;overflow-y:auto;padding:10px;gap:10px}.tab-panel.active,.right-tab-panel.active{display:flex}.panel-header-controls{display:flex;flex-direction:column;gap:7px}.category-pills{display:flex;flex-wrap:wrap;gap:4px}.pill{background:var(--bg-card);color:var(--text-muted);border:1px solid var(--border-color);padding:3.5px 8px;border-radius:99px;font-size:10.5px;font-weight:600;cursor:pointer}.pill.active,.pill:hover{background:var(--accent-glow);color:var(--accent);border-color:var(--accent)}.catalog-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:7px}.catalog-item{background:var(--bg-card);border:1px solid var(--border-color);border-radius:7px;padding:8px;display:flex;flex-direction:column;gap:4px;cursor:pointer;position:relative;transition:transform .12s ease,border-color .12s ease}.catalog-item:hover{border-color:var(--accent);transform:translateY(-1px)}.catalog-tag{position:absolute;top:5px;right:5px;font-size:8.5px;font-weight:700;padding:1px 4px;border-radius:3px;background:#f59e0b33;color:#fbbf24;border:1px solid rgba(245,158,11,.4)}.catalog-swatch{height:32px;border-radius:5px;display:flex;align-items:center;justify-content:center;font-size:17px;border:1px solid rgba(255,255,255,.08)}.catalog-item-title{font-weight:600;font-size:11.5px;color:var(--text-main);line-height:1.25}.catalog-item-dims{font-size:10px;font-family:var(--font-mono);color:var(--text-muted)}.import-custom-box,.control-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:8px;padding:10px;display:flex;flex-direction:column;gap:7px}.control-card h3,.import-custom-box h4{font-size:12px;font-weight:700;color:var(--text-main)}.muted-text{color:var(--text-muted);font-size:11px;line-height:1.4}.viewport-container{flex:1;display:grid;grid-template-columns:1fr 1fr;min-width:0;min-height:0;background:#0b0f16}.viewport-container[data-layout="2d"]{grid-template-columns:1fr}.viewport-container[data-layout="2d"] #pane-3d{display:none}.viewport-container[data-layout="3d"],.viewport-container[data-layout=plate]{grid-template-columns:1fr}.viewport-container[data-layout="3d"] #pane-2d,.viewport-container[data-layout=plate] #pane-2d{display:none}.viewport-pane{display:flex;flex-direction:column;min-width:0;min-height:0;border-right:1px solid var(--border-color);position:relative}.pane-header{min-height:38px;background:#131a24f5;border-bottom:1px solid var(--border-color);display:flex;align-items:center;justify-content:space-between;padding:3px 8px;gap:6px;flex-shrink:0;flex-wrap:wrap}.cad-tools-inline,.camera-presets-bar{display:flex;align-items:center;gap:2px;flex-wrap:wrap}.inline-slider-pill{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;color:var(--text-muted);background:var(--bg-card);padding:2px 7px;border-radius:5px;border:1px solid var(--border-color)}.inline-slider-pill input[type=range]{width:54px;accent-color:var(--accent)}.pane-controls{display:flex;align-items:center;gap:4px}.canvas-wrapper{flex:1;position:relative;min-height:0;overflow:hidden;background:#0b1017}#canvas-2d,#three-mount{width:100%;height:100%;display:block}.pane-footer{height:25px;background:var(--bg-panel);border-top:1px solid var(--border-color);display:flex;align-items:center;justify-content:space-between;padding:0 10px;font-size:10.5px;font-family:var(--font-mono);color:var(--text-muted);flex-shrink:0}.sidebar-right{width:332px;background:var(--bg-panel);border-left:1px solid var(--border-color);display:flex;flex-direction:column;flex-shrink:0;min-height:0}.inspector-section{background:var(--bg-card);border:1px solid var(--border-color);border-radius:8px;padding:10px;display:flex;flex-direction:column;gap:8px}.schedule-list-section{display:flex;flex-direction:column;gap:6px;flex:1;min-height:0}.schedule-sidebar-list{display:flex;flex-direction:column;gap:5px;overflow-y:auto;padding-right:2px}.sched-group-header{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--accent);padding:6px 4px 2px;border-bottom:1px solid var(--border-subtle)}.sched-item-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:6px;padding:6px 8px;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:6px;transition:all .12s ease}.sched-item-card:hover{border-color:var(--accent);background:#38bdf80f}.sched-item-card.selected{border-color:var(--accent);background:#38bdf824}.sched-item-left{display:flex;flex-direction:column;gap:2px;min-width:0}.sched-item-title{font-size:11.5px;font-weight:600;color:var(--text-main);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sched-item-sub{font-size:10px;font-family:var(--font-mono);color:var(--text-muted)}.section-title-bar{display:flex;align-items:center;justify-content:space-between}.section-title-bar h2{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-main)}.badge{font-size:10px;font-weight:700;padding:2px 7px;border-radius:99px;background:var(--bg-input);color:var(--text-muted);border:1px solid var(--border-color)}.badge-green{background:#10b98124;color:var(--emerald);border-color:#10b98159}.badge-amber{background:#f59e0b29;color:#fbbf24;border-color:#f59e0b66}.inspector-body,.print-hub-body{display:flex;flex-direction:column;gap:7px}.empty-hint{color:var(--text-muted);font-size:11.5px;line-height:1.45;padding:8px;background:var(--bg-input);border-radius:6px;border:1px dashed var(--border-color)}.form-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.form-col{display:flex;flex-direction:column;gap:4px}.form-row label,.form-col label{font-size:11px;color:var(--text-muted);font-weight:500}.input-text,.input-num,.input-select,.input-textarea{background:var(--bg-input);border:1px solid var(--border-color);color:var(--text-main);padding:5px 7px;border-radius:5px;font-size:11.5px;font-family:var(--font-sans)}.input-textarea{resize:vertical;min-height:44px;line-height:1.35}.input-num{width:90px;font-family:var(--font-mono);text-align:right}.input-select{width:168px}.input-color{width:42px;height:24px;border:1px solid var(--border-color);border-radius:4px;background:var(--bg-input);cursor:pointer}.checkbox-row{display:flex;align-items:center;gap:7px;font-size:11.5px;color:var(--text-main);cursor:pointer}.btn-primary,.btn-secondary,.btn-accent,.btn-danger,.btn-icon{border-radius:5px;font-size:11.5px;font-weight:600;padding:5px 9px;cursor:pointer;border:1px solid transparent;display:inline-flex;align-items:center;justify-content:center;gap:4px;transition:all .14s ease}.btn-sm{padding:4px 8px;font-size:11px}.btn-primary{background:var(--accent);color:#081018}.btn-primary:hover{background:var(--accent-hover)}.btn-accent{background:#38bdf824;color:var(--accent);border-color:#38bdf866}.btn-accent:hover{background:#38bdf83d}.btn-secondary{background:var(--bg-card);color:var(--text-main);border-color:var(--border-color)}.btn-secondary:hover{border-color:var(--text-muted)}.btn-danger{background:#ef444426;color:#f87171;border-color:#ef444459}.btn-danger:hover{background:#ef444440}.btn-icon{background:var(--bg-card);color:var(--text-main);border-color:var(--border-color);padding:3px 7px;font-size:11px}.btn-icon:hover{border-color:var(--accent);color:var(--accent)}.full-width{width:100%}.btn-row{display:flex;gap:5px}.file-label{cursor:pointer}.toggle-pill{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;background:var(--bg-card);padding:3px 7px;border-radius:4px;border:1px solid var(--border-color);cursor:pointer}.telemetry-card{background:var(--bg-input);border:1px solid var(--border-color);border-radius:6px;padding:7px 9px;display:flex;flex-direction:column;gap:4px}.telemetry-row{display:flex;justify-content:space-between;font-size:11px}.telemetry-row span{color:var(--text-muted)}.telemetry-row strong{font-family:var(--font-mono);font-size:10.5px}.status-pass{color:var(--emerald)}.status-warn{color:var(--amber)}.export-buttons-stack{display:flex;flex-direction:column;gap:6px}.btn-export{background:var(--bg-card);border:1px solid var(--border-color);border-radius:7px;padding:8px 10px;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:2px;transition:all .14s ease}.btn-export:hover:not(:disabled){border-color:var(--accent);background:#38bdf814}.btn-export:disabled{opacity:.45;cursor:not-allowed}.btn-export.primary{background:linear-gradient(135deg,#10b98129,#38bdf829);border-color:#10b98180}.btn-export.blender{border-color:#ea76008c;background:#ea76001a}.btn-export.blender:hover{background:#ea760033}.export-title{font-size:12px;font-weight:700;color:var(--text-main)}.export-sub{font-size:10.5px;color:var(--text-muted)}.export-divider{height:1px;background:var(--border-color);margin:2px 0}.floating-dialog{position:absolute;top:16px;left:50%;transform:translate(-50%);background:var(--bg-panel);border:1px solid var(--accent);border-radius:8px;padding:14px;width:280px;box-shadow:0 12px 32px #0009;display:flex;flex-direction:column;gap:10px;z-index:30}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#060a10d6;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);z-index:90;display:flex;align-items:center;justify-content:center;padding:20px}.modal-sheet{width:min(1220px,96vw);height:min(880px,92vh);background:var(--bg-panel);border:1px solid var(--border-color);border-radius:12px;box-shadow:0 24px 64px #000000a6;display:flex;flex-direction:column;overflow:hidden}.modal-header{padding:14px 20px;background:var(--bg-card);border-bottom:1px solid var(--border-color);display:flex;align-items:center;justify-content:space-between;gap:12px}.modal-header h2{font-size:16px;font-weight:700;margin-top:3px}.modal-actions{display:flex;align-items:center;gap:8px}.modal-body{flex:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:18px;-webkit-user-select:text;user-select:text}.id-kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.id-kpi-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:8px;padding:12px 14px}.id-kpi-card .kpi-label{font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.id-kpi-card .kpi-val{font-size:18px;font-weight:700;font-family:var(--font-mono);color:var(--accent);margin-top:4px}.id-snapshots-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.id-snapshot-box{background:var(--bg-input);border:1px solid var(--border-color);border-radius:8px;padding:10px;display:flex;flex-direction:column;gap:6px}.id-snapshot-box h4{font-size:12px;color:var(--text-muted)}.id-snapshot-box img{width:100%;height:240px;object-fit:contain;background:#0b1017;border-radius:5px}.id-table-wrap{background:var(--bg-card);border:1px solid var(--border-color);border-radius:8px;overflow:hidden}.id-spec-table{width:100%;border-collapse:collapse;font-size:11.5px}.id-spec-table th{background:var(--bg-input);color:var(--text-muted);font-weight:700;text-align:left;padding:9px 10px;border-bottom:1px solid var(--border-color);font-size:10.5px;text-transform:uppercase}.id-spec-table td{padding:8px 10px;border-bottom:1px solid var(--border-subtle);vertical-align:top;line-height:1.4}.id-spec-table tr:hover td{background:#ffffff05}.hidden{display:none!important}.stats-list{display:flex;flex-direction:column;gap:5px;font-size:11.5px;color:var(--text-muted)}.toast{position:fixed;bottom:18px;left:50%;transform:translate(-50%);background:#0f172a;color:var(--text-main);border:1px solid var(--accent);padding:9px 16px;border-radius:99px;font-size:12.5px;font-weight:600;box-shadow:0 8px 24px #00000080;z-index:100}@media print{body,html{background:#fff!important;color:#0f172a!important;overflow:visible!important;height:auto!important}.topbar,.studio-workspace,.no-print,.toast{display:none!important}.modal-backdrop{position:static!important;background:#fff!important;padding:0!important;display:block!important}.modal-sheet{width:100%!important;height:auto!important;border:none!important;box-shadow:none!important;background:#fff!important}.modal-body{overflow:visible!important;padding:0!important;color:#0f172a!important}.id-kpi-card,.id-snapshot-box,.id-table-wrap{background:#f8fafc!important;border-color:#cbd5e1!important;color:#0f172a!important}.id-spec-table th{background:#e2e8f0!important;color:#0f172a!important;border-color:#cbd5e1!important}.id-spec-table td{border-color:#e2e8f0!important;color:#1e293b!important}}
