@import url("https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap");:root{--bg-primary:#0a0a0f;--bg-secondary:#12121a;--bg-tertiary:#1a1a26;--bg-elevated:#22222f;--bg-hover:#2a2a3a;--border-subtle:rgba(255,255,255,0.06);--border-default:rgba(255,255,255,0.1);--border-active:rgba(255,255,255,0.2);--text-primary:#e8e8ef;--text-secondary:#8888a0;--text-tertiary:#5a5a70;--text-inverse:#0a0a0f;--accent-primary:#6366f1;--accent-primary-hover:#818cf8;--accent-secondary:#22d3ee;--accent-success:#34d399;--accent-warning:#fbbf24;--accent-danger:#f87171;--gradient-primary:linear-gradient(135deg,#6366f1,#8b5cf6);--gradient-accent:linear-gradient(135deg,#22d3ee,#6366f1);--gradient-success:linear-gradient(135deg,#34d399,#22d3ee);--font-sans:"Inter",-apple-system,BlinkMacSystemFont,sans-serif;--font-mono:"JetBrains Mono",monospace;--sidebar-width:380px;--toolbar-height:52px;--statusbar-height:36px;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--shadow-sm:0 1px 2px rgba(0,0,0,0.3);--shadow-md:0 4px 12px rgba(0,0,0,0.4);--shadow-lg:0 8px 32px rgba(0,0,0,0.5);--shadow-glow:0 0 20px rgba(99,102,241,0.15)}*{margin:0;padding:0;box-sizing:border-box}body,html{height:100%;overflow:hidden;font-family:var(--font-sans);background:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:rgba(255,255,255,.1);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.2)}.app-container{flex-direction:column;height:100vh;width:100vw}.app-container,.main-area{display:flex;overflow:hidden}.main-area{flex:1}.canvas-area{flex:1;position:relative;overflow:hidden;background:#08080d;cursor:crosshair}.canvas-area[data-tool=pan]{cursor:grab}.canvas-area[data-tool=pan]:active{cursor:grabbing}.canvas-area[data-tool=select]{cursor:default}.canvas-area[data-tool=calibrate]{cursor:crosshair}.toolbar{height:var(--toolbar-height);background:var(--bg-secondary);border-bottom:1px solid var(--border-subtle);padding:0 16px;gap:8px;z-index:10}.toolbar,.toolbar-section{display:flex;align-items:center}.toolbar-section{gap:4px}.toolbar-divider{width:1px;height:28px;background:var(--border-default);margin:0 8px}.toolbar-brand{display:flex;align-items:center;gap:10px;margin-right:12px}.toolbar-brand-icon{width:28px;height:28px;background:var(--gradient-primary);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;color:white}.toolbar-brand-text{font-size:14px;font-weight:700;letter-spacing:-.02em;background:var(--gradient-accent);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.toolbar-btn{height:34px;padding:0 12px;border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:var(--bg-tertiary);color:var(--text-secondary);font-family:var(--font-sans);font-size:12px;font-weight:500;cursor:pointer;transition:all .15s ease;display:flex;align-items:center;gap:6px;white-space:nowrap}.toolbar-btn:hover{background:var(--bg-hover);color:var(--text-primary);border-color:var(--border-active)}.toolbar-btn.active{background:var(--accent-primary);color:white;border-color:var(--accent-primary);box-shadow:var(--shadow-glow)}.toolbar-btn.icon-only{padding:0;width:34px;justify-content:center}.toolbar-spacer{flex:1}.toolbar-info{font-size:12px;color:var(--text-tertiary);font-family:var(--font-mono);font-weight:500}.page-nav{display:flex;align-items:center;gap:2px}.page-nav-label{font-size:12px;color:var(--text-secondary);font-family:var(--font-mono);font-weight:500;padding:0 8px;min-width:80px;text-align:center}.statusbar{height:var(--statusbar-height);background:var(--bg-secondary);border-top:1px solid var(--border-subtle);display:flex;align-items:center;padding:0 16px;gap:16px;z-index:10}.statusbar-message{font-size:11px;font-weight:500;color:var(--text-secondary);flex:1}.statusbar-indicator{font-size:10px;font-family:var(--font-mono);font-weight:500;padding:2px 8px;border-radius:10px;display:flex;align-items:center;gap:5px}.statusbar-indicator.calibrated{background:rgba(52,211,153,.15);color:var(--accent-success)}.statusbar-indicator.uncalibrated{background:rgba(248,113,113,.15);color:var(--accent-danger)}.statusbar-stat{font-size:11px;font-family:var(--font-mono);font-weight:500;color:var(--text-tertiary)}.sidebar{width:var(--sidebar-width);background:var(--bg-secondary);border-left:1px solid var(--border-subtle);display:flex;flex-direction:column;overflow:hidden}.sidebar-header{padding:16px 20px;border-bottom:1px solid var(--border-subtle)}.sidebar-title{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-secondary);margin-bottom:4px}.sidebar-subtitle{font-size:11px;color:var(--text-tertiary)}.sidebar-content{flex:1;overflow-y:auto;padding:8px 0}.sidebar-footer{padding:16px 20px;border-top:1px solid var(--border-subtle);background:var(--bg-tertiary)}.sidebar-footer-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.sidebar-footer-row:last-child{margin-bottom:0}.sidebar-footer-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary)}.sidebar-footer-value{font-size:16px;font-weight:700;font-family:var(--font-mono)}.sidebar-footer-value.page{color:var(--accent-secondary)}.sidebar-footer-value.total{color:var(--accent-success)}.room-item{display:flex;align-items:center;padding:10px 20px;gap:12px;cursor:pointer;transition:all .1s ease;border-left:3px solid transparent}.room-item:hover{background:var(--bg-hover)}.room-item.selected{background:rgba(99,102,241,.08);border-left-color:var(--accent-primary)}.room-item.dimmed{opacity:.4}.room-color-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.room-info{flex:1;min-width:0}.room-name{font-size:13px;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.room-page-badge{font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary);margin-left:6px}.room-metrics{display:flex;gap:12px;flex-shrink:0}.room-metric{text-align:right}.room-metric-value{font-size:13px;font-weight:600;font-family:var(--font-mono);color:var(--text-primary)}.room-metric-label{font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary)}.room-delete-btn{width:24px;height:24px;border:none;background:transparent;color:var(--text-tertiary);cursor:pointer;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;opacity:0;transition:all .15s ease;flex-shrink:0;font-size:14px}.room-item:hover .room-delete-btn{opacity:1}.room-delete-btn:hover{background:rgba(248,113,113,.15);color:var(--accent-danger)}.rooms-grouped{display:flex;flex-direction:column}.room-page-group{border-bottom:1px solid var(--border-subtle)}.room-page-group.current{background:rgba(99,102,241,.02)}.room-page-group.other{opacity:.7}.room-page-group.other:hover{opacity:.9}.room-page-group.total{background:var(--bg-tertiary)}.room-page-header{display:flex;align-items:center;gap:8px;padding:8px 16px 4px}.room-page-header.clickable{cursor:pointer;transition:background .12s ease}.room-page-header.clickable:hover{background:var(--bg-hover)}.room-page-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--accent-primary)}.room-page-stats,.room-page-title.dimmed{color:var(--text-tertiary)}.room-page-stats{font-size:10px;font-weight:500;font-family:var(--font-mono);margin-left:auto}.room-page-stats.dimmed{color:var(--text-tertiary);opacity:.7}.room-page-nav{font-size:12px;color:var(--text-tertiary);transition:color .12s ease}.room-page-header.clickable:hover .room-page-nav{color:var(--accent-primary)}.dialog-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000}.dialog{background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:var(--radius-xl);padding:32px;width:420px;box-shadow:var(--shadow-lg)}.dialog-title{font-size:18px;font-weight:700;margin-bottom:24px;color:var(--text-primary)}.dialog-field{margin-bottom:20px}.dialog-label{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);margin-bottom:8px;display:block}.dialog-input{width:100%;height:42px;padding:0 14px;background:var(--bg-primary);border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-primary);font-family:var(--font-sans);font-size:14px;font-weight:500;outline:none;transition:border-color .15s ease}.dialog-input:focus{border-color:var(--accent-primary);box-shadow:0 0 0 3px rgba(99,102,241,.15)}.dialog-hint{font-size:11px;color:var(--text-tertiary);margin-top:6px}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:28px}.dialog-btn{height:38px;padding:0 20px;border-radius:var(--radius-md);font-family:var(--font-sans);font-size:13px;font-weight:600;cursor:pointer;transition:all .15s ease;border:none}.dialog-btn.primary{background:var(--gradient-primary);color:white}.dialog-btn.primary:hover{opacity:.9;box-shadow:var(--shadow-glow)}.dialog-btn.secondary{background:var(--bg-tertiary);border:1px solid var(--border-default);color:var(--text-secondary)}.dialog-btn.secondary:hover{background:var(--bg-hover);color:var(--text-primary)}.upload-screen{flex:1;gap:24px;background:var(--bg-primary)}.upload-screen,.upload-zone{display:flex;flex-direction:column;align-items:center;justify-content:center}.upload-zone{width:480px;height:280px;border:2px dashed var(--border-default);border-radius:var(--radius-xl);gap:16px;cursor:pointer;transition:all .2s ease;background:var(--bg-secondary)}.upload-zone:hover{border-color:var(--accent-primary);background:rgba(99,102,241,.04);box-shadow:var(--shadow-glow)}.upload-zone.dragging{border-color:var(--accent-primary);background:rgba(99,102,241,.08);box-shadow:0 0 40px rgba(99,102,241,.2)}.upload-icon{font-size:48px;line-height:1}.upload-title{font-size:16px;font-weight:600;color:var(--text-primary)}.upload-subtitle{font-size:13px;color:var(--text-tertiary)}.upload-input{display:none}.calibration-bar{position:absolute;bottom:60px;left:50%;transform:translateX(-50%);background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:var(--radius-lg);padding:16px 24px;display:flex;align-items:center;gap:12px;box-shadow:var(--shadow-lg);z-index:100}.calibration-bar label{font-size:12px;font-weight:600;color:var(--text-secondary);white-space:nowrap}.calibration-bar input{width:64px;height:34px;padding:0 8px;background:var(--bg-primary);border:1px solid var(--border-default);border-radius:var(--radius-sm);color:var(--text-primary);font-family:var(--font-mono);font-size:14px;font-weight:600;outline:none;text-align:center}.calibration-bar input:focus{border-color:var(--accent-primary)}.calibration-bar .unit{font-size:13px;color:var(--text-tertiary);font-weight:600}.toolbar-btn.cal-pulse{animation:calPulse 2s ease-in-out infinite;border-color:var(--accent-warning)!important;color:var(--accent-warning)!important}@keyframes calPulse{0%,to{box-shadow:0 0 0 0 rgba(251,191,36,.4)}50%{box-shadow:0 0 12px 3px rgba(251,191,36,.3)}}.toolbar-btn.tool-locked{opacity:.4;position:relative}.toolbar-btn.tool-locked:hover{opacity:.6;border-color:var(--accent-warning)}.lock-badge{font-size:9px;position:absolute;top:2px;right:2px;line-height:1}.line-measurements-list{display:flex;flex-direction:column;gap:2px}.line-measurement-item{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);cursor:default;position:relative;transition:background .15s ease}.line-measurement-item:hover{background:var(--bg-elevated);border-color:var(--border-default)}.line-measurement-item:hover .room-delete-btn{opacity:1}.canvas-overlay{position:absolute;inset:0;pointer-events:none}.zoom-indicator{position:absolute;bottom:12px;left:12px;font-size:11px;font-family:var(--font-mono);font-weight:600;color:var(--text-tertiary);background:rgba(10,10,15,.7);padding:4px 10px;border-radius:var(--radius-sm);backdrop-filter:blur(8px)}.empty-state{padding:40px 20px;text-align:center}.empty-state-icon{font-size:32px;margin-bottom:12px}.empty-state-text{font-size:13px;line-height:1.5}.empty-state-text,.kbd{color:var(--text-tertiary)}.kbd{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 5px;background:var(--bg-tertiary);border:1px solid var(--border-default);border-radius:4px;font-family:var(--font-mono);font-size:10px;font-weight:600}.sidebar-tabs{display:flex;border-bottom:1px solid var(--border-subtle)}.sidebar-tab{flex:1;padding:12px 0;background:none;border:none;border-bottom:2px solid transparent;color:var(--text-tertiary);font-family:var(--font-sans);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;cursor:pointer;transition:all .15s ease;display:flex;align-items:center;justify-content:center;gap:6px}.sidebar-tab:hover{color:var(--text-secondary);background:var(--bg-tertiary)}.sidebar-tab.active{color:var(--accent-primary);border-bottom-color:var(--accent-primary)}.tab-badge{font-size:10px;font-weight:700;background:var(--bg-hover);padding:1px 6px;border-radius:10px;color:var(--text-secondary)}.sidebar-tab.active .tab-badge{background:rgba(99,102,241,.15);color:var(--accent-primary)}.layers-list{padding:4px 0}.layer-group{border-bottom:1px solid var(--border-subtle)}.layer-group.active{background:rgba(99,102,241,.03)}.layer-header{display:flex;align-items:center;padding:10px 16px;gap:8px;cursor:pointer;transition:all .1s ease}.layer-header:hover{background:var(--bg-hover)}.layer-group.active .layer-header{border-left:3px solid var(--accent-primary);padding-left:13px}.layer-visibility{background:none;border:none;font-size:12px;cursor:pointer;padding:2px;color:var(--text-secondary);transition:opacity .15s}.layer-icon{font-size:14px;flex-shrink:0}.layer-name{font-size:12px;font-weight:600;color:var(--text-primary);flex:1}.layer-type-badge{font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;padding:2px 6px;border-radius:4px;background:var(--bg-tertiary);color:var(--text-tertiary)}.layer-total{font-size:12px;font-weight:600;font-family:var(--font-mono);color:var(--accent-secondary)}.layer-subcategories{padding:4px 0 8px 32px}.layer-subcategory{display:flex;align-items:center;padding:5px 16px 5px 8px;gap:8px;cursor:pointer;border-radius:var(--radius-sm);transition:all .1s ease;margin-right:12px}.layer-subcategory:hover{background:var(--bg-hover)}.layer-subcategory.active{background:rgba(99,102,241,.08)}.subcategory-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.subcategory-name{font-size:11px;font-weight:500;color:var(--text-secondary);flex:1}.layer-subcategory.active .subcategory-name{color:var(--text-primary);font-weight:600}.subcategory-count{font-size:10px;font-weight:600;font-family:var(--font-mono);color:var(--accent-secondary)}.layer-measurements{margin-top:6px;padding-top:6px;border-top:1px solid var(--border-subtle)}.measurement-item{display:flex;align-items:center;padding:4px 8px;gap:6px;border-radius:var(--radius-sm)}.measurement-item:hover{background:var(--bg-hover)}.measurement-label{font-size:11px;font-weight:500;color:var(--text-secondary);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.measurement-room{font-size:9px;font-weight:600;color:var(--text-tertiary);padding:1px 5px;background:var(--bg-tertiary);border-radius:3px}.subcategory-picker{position:absolute;background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:var(--radius-lg);padding:8px;box-shadow:var(--shadow-lg);z-index:200;min-width:200px;max-height:300px;overflow-y:auto}.subcategory-picker-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary);padding:4px 8px 8px}.subcategory-picker-item{display:block;width:100%;padding:8px 12px;background:none;border:none;border-radius:var(--radius-sm);color:var(--text-primary);font-family:var(--font-sans);font-size:12px;font-weight:500;cursor:pointer;text-align:left;transition:all .1s ease}.subcategory-picker-item:hover{background:var(--accent-primary);color:white}.export-btn{background:var(--bg-tertiary)!important;border-color:var(--border-default)!important}.export-btn:not(:disabled):hover{border-color:var(--accent-success)!important;color:var(--accent-success)!important}.export-btn.active{background:var(--accent-primary)!important;color:white!important;border-color:var(--accent-primary)!important}.export-btn:disabled{opacity:.35;cursor:not-allowed}.export-dropdown{position:absolute;top:calc(100% + 8px);right:0;width:280px;background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:var(--radius-lg);padding:8px;box-shadow:var(--shadow-lg),0 0 40px rgba(0,0,0,.3);z-index:500;animation:exportDropdownIn .15s ease-out}@keyframes exportDropdownIn{0%{opacity:0;transform:translateY(-6px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.export-dropdown-header{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);padding:6px 10px 10px}.export-dropdown-item{display:flex;align-items:center;width:100%;padding:10px 12px;gap:12px;background:none;border:none;border-radius:var(--radius-md);cursor:pointer;transition:all .12s ease;text-align:left}.export-dropdown-item:hover{background:rgba(99,102,241,.1)}.export-dropdown-item:active{background:rgba(99,102,241,.2);transform:scale(.98)}.export-item-icon{font-size:20px;flex-shrink:0;width:28px;text-align:center}.export-item-info{display:flex;flex-direction:column;gap:2px}.export-item-title{font-family:var(--font-sans);font-size:13px;font-weight:600;color:var(--text-primary)}.export-item-desc{font-size:11px;color:var(--text-tertiary);font-weight:400}.export-dropdown-divider{height:1px;background:var(--border-subtle);margin:4px 8px}.export-dropdown-footer{font-size:10px;font-weight:500;color:var(--text-tertiary);padding:8px 10px 4px;text-align:center;font-family:var(--font-mono)}