:root{--bg: #0b0f14;--bg-elevated: #0f151d;--panel: #11161d;--panel-hover: #1b2736;--border: #1c2430;--border-subtle: #151b24;--text: #e7eef7;--text-secondary: #8ca0b3;--muted: #8ca0b3;--accent: #5cc8ff;--accent-hover: #7dd3fc;--accent-subtle: rgba(92, 200, 255, .15);--success: #22c55e;--success-bg: rgba(34, 197, 94, .15);--warning: #f59e0b;--warning-bg: rgba(245, 158, 11, .15);--error: #ef4444;--error-bg: rgba(239, 68, 68, .15);--info: #3b82f6;--info-bg: rgba(59, 130, 246, .15);--crane-color: #a855f7;--weight-color: #3b82f6;--zone-color: #f59e0b;--font-family: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", "SF Mono", Consolas, monospace;--font-size-xs: 10px;--font-size-sm: 12px;--font-size-base: 13px;--font-size-md: 14px;--font-size-lg: 16px;--font-size-xl: 18px;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 10px;--radius-2xl: 12px;--radius-full: 999px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .2);--shadow-md: 0 4px 12px rgba(0, 0, 0, .15);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .25);--transition-fast: .1s ease;--transition-normal: .15s ease;--transition-slow: .25s ease;--card-bg: #0f141b;--card-border: #1d2737}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;background:var(--bg);color:var(--text);font-family:var(--font-family);font-size:var(--font-size-base);line-height:var(--line-height-normal)}.app{display:grid;grid-template-columns:var(--left-width, 260px) 1fr var(--right-width, 360px);grid-template-rows:auto auto auto 1fr;grid-template-areas:"topbar topbar topbar" "pagebar pagebar pagebar" "ribbon ribbon ribbon" "left main right";height:100%;transition:grid-template-columns .25s ease}.topbar{grid-area:topbar;background:#0f151d;border-bottom:1px solid #1c2430;padding:8px 16px;display:flex;gap:12px;align-items:center}.topbar-brand{font-size:15px;font-weight:700;color:var(--text);letter-spacing:-.3px;white-space:nowrap}.topbar-title-input{width:180px;background:#0b0f14;border:1px solid #263043;border-radius:6px;padding:6px 10px;font-size:13px;color:var(--text)}.topbar-title-input:focus{border-color:var(--accent);outline:none}.topbar-title-input::placeholder{color:var(--muted)}.topbar-version{font-size:12px;font-weight:600;padding:4px 10px;border-radius:6px;background:#13202f;border:1px solid #263043;color:var(--accent);white-space:nowrap}.topbar-upload-btn{display:flex;align-items:center;gap:6px;padding:7px 14px;border-radius:6px;background:var(--accent);border:none;color:#0b0f14;font-size:13px;font-weight:600;cursor:pointer;transition:all .15s ease;white-space:nowrap}.topbar-upload-btn:hover{background:var(--accent-hover);transform:translateY(-1px)}.topbar-upload-btn:active{transform:translateY(0)}.topbar-upload-btn svg{flex-shrink:0}.topbar-dropdown{position:relative}.topbar-dropdown-btn{display:flex;align-items:center;gap:4px;padding:6px 12px;border-radius:6px;border:1px solid #263043;background:transparent;color:var(--text);font-size:13px;font-weight:500;cursor:pointer;transition:all .15s ease;white-space:nowrap}.topbar-dropdown-btn:hover{background:#1b2736;border-color:#3a4a5c}.topbar-dropdown-btn svg{opacity:.7;margin-left:2px}.topbar-dropdown-menu{position:absolute;top:100%;left:0;margin-top:6px;background:#0f151d;border:1px solid #263043;border-radius:8px;padding:4px;min-width:160px;z-index:100;box-shadow:0 8px 24px #0006}.topbar-dropdown-menu-right{left:auto;right:0}.topbar-dropdown-menu button{display:flex;align-items:center;gap:8px;width:100%;padding:8px 12px;border:none;border-radius:4px;background:transparent;color:var(--text);font-size:13px;cursor:pointer;text-align:left}.topbar-dropdown-menu button:hover{background:#1b2736}.topbar-dropdown-menu button:disabled{opacity:.4;cursor:not-allowed}.topbar-dropdown-menu button svg{flex-shrink:0;opacity:.7}.topbar-menu-checkbox{display:flex;align-items:center;gap:8px;padding:8px 12px;font-size:13px;color:var(--text);cursor:pointer;border-radius:4px}.topbar-menu-checkbox:hover{background:#1b2736}.topbar-menu-checkbox input[type=checkbox]{margin:0}.topbar-menu-select{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;font-size:13px;color:var(--text)}.topbar-menu-select span{color:var(--muted)}.topbar-menu-select select{background:#0b0f14;border:1px solid #263043;border-radius:4px;padding:4px 8px;font-size:12px;color:var(--text)}.topbar-menu-divider{height:1px;background:#263043;margin:4px 0}.topbar-right{margin-left:auto;display:flex;gap:4px;align-items:center}.topbar-icon-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border-radius:6px;border:1px solid transparent;background:transparent;color:var(--muted);cursor:pointer;transition:all .15s ease}.topbar-icon-btn:hover{background:#1b2736;border-color:#263043;color:var(--text)}.topbar-icon-btn svg{flex-shrink:0}html[data-theme=light] .topbar-title-input{background:#fff;border-color:#cbd5e1}html[data-theme=light] .topbar-title-input:focus{border-color:var(--accent)}html[data-theme=light] .topbar-version{background:#eef2ff;border-color:#c7d2fe;color:#1e40af}html[data-theme=light] .topbar-upload-btn{background:var(--accent);color:#fff}html[data-theme=light] .topbar-dropdown-btn{border-color:#cbd5e1;color:#1e293b}html[data-theme=light] .topbar-dropdown-btn:hover{background:#e2e8f0;border-color:#94a3b8}html[data-theme=light] .topbar-dropdown-menu{background:#fff;border-color:#d1d9e6;box-shadow:0 8px 24px #0000001a}html[data-theme=light] .topbar-dropdown-menu button{color:#1e293b}html[data-theme=light] .topbar-dropdown-menu button:hover{background:#f1f5f9}html[data-theme=light] .topbar-menu-checkbox{color:#1e293b}html[data-theme=light] .topbar-menu-checkbox:hover{background:#f1f5f9}html[data-theme=light] .topbar-menu-select{color:#1e293b}html[data-theme=light] .topbar-menu-select span{color:#64748b}html[data-theme=light] .topbar-menu-select select{background:#fff;border-color:#cbd5e1}html[data-theme=light] .topbar-menu-divider{background:#e5e7eb}html[data-theme=light] .topbar-icon-btn{color:#64748b}html[data-theme=light] .topbar-icon-btn:hover{background:#e2e8f0;border-color:#cbd5e1;color:#1e293b}.pagebar{grid-area:pagebar;background:#0f151d;border-bottom:1px solid #1c2430;padding:6px 12px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}.tool-ribbon{grid-area:ribbon;background:#0a0e13;border-bottom:1px solid #1c2430;padding:6px 12px;display:flex;gap:4px;align-items:center}.tool-group{display:flex;gap:2px}.tool-divider{width:1px;height:28px;background:#263043;margin:0 8px}.tool-button{display:flex;align-items:center;gap:6px;padding:6px 12px;border-radius:6px;border:1px solid transparent;background:transparent;color:var(--muted);font-size:13px;font-weight:500;cursor:pointer;transition:all .15s ease;white-space:nowrap}.tool-button:hover:not(:disabled){background:#1b2736;color:var(--text);border-color:#263043}.tool-button.active{background:#1b2736;color:var(--accent);border-color:var(--accent)}.tool-button:disabled{opacity:.4;cursor:not-allowed}.tool-button.cancel{color:#f87171}.tool-button.cancel:hover{background:#f8717126;border-color:#f87171}.tool-button svg{flex-shrink:0}.dropdown-arrow{margin-left:2px;opacity:.6}.tool-dropdown{position:relative}.dropdown-menu{position:absolute;top:100%;left:0;margin-top:4px;background:#0f151d;border:1px solid #263043;border-radius:8px;padding:4px;min-width:140px;z-index:100;box-shadow:0 4px 16px #0006}.dropdown-menu button{display:flex;align-items:center;gap:8px;width:100%;padding:8px 12px;border:none;border-radius:4px;background:transparent;color:var(--text);font-size:13px;cursor:pointer;text-align:left}.dropdown-menu button:hover{background:#1b2736}.dropdown-menu button svg{flex-shrink:0;opacity:.7}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99}.tool-status-bar{padding:10px 12px;background:#5cc8ff14;border:1px solid rgba(92,200,255,.25);border-radius:8px;margin-bottom:8px}.left,.right{padding:12px;background:var(--panel);border-right:1px solid #1c2430;overflow:auto;position:relative;transition:width .25s ease,padding .25s ease}.right{border-left:1px solid #1c2430;border-right:none}.left.collapsed,.right.collapsed{width:44px;min-width:44px;padding:12px 6px;overflow:hidden}.sidebar-toggle{position:absolute;top:12px;z-index:10;width:28px;height:28px;padding:0;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:700;background:#1b2736;border:1px solid #263043;border-radius:6px;color:var(--accent);cursor:pointer;transition:background .15s ease,transform .15s ease}.sidebar-toggle:hover{background:#253547;transform:scale(1.05)}.sidebar-toggle-left{right:8px}.sidebar-toggle-right{left:8px}.collapsed .sidebar-toggle-left{right:auto;left:50%;transform:translate(-50%)}.collapsed .sidebar-toggle-right{left:50%;transform:translate(-50%)}.collapsed .sidebar-toggle:hover{transform:translate(-50%) scale(1.05)}.right .card input[type=number]{width:100px}.right .card input[type=text],.right .card input:not([type]){min-width:0}.left-tabs{display:flex;flex-direction:column;gap:12px;margin-top:40px}.right-tabs{display:flex;flex-direction:column;gap:12px}.tab-list{display:flex;gap:8px;align-items:stretch}.tab-button{flex:1;padding:8px 12px;border-radius:8px;border:1px solid #263043;background:#0f141b;color:var(--text);font-weight:600;transition:background .2s ease,border-color .2s ease,color .2s ease}.tab-button.active{background:#1b2736;border-color:var(--accent);color:var(--accent)}.tab-panels{flex:1}.tab-panel{display:grid;gap:12px}.main{grid-area:main;position:relative;overflow:hidden;background:#0b0f14;display:flex;flex-direction:column}.canvas-wrap{position:relative;flex:1;overflow:auto}.layer{position:absolute;left:0;top:0;image-rendering:crisp-edges}h3,h4{margin:8px 0}label{display:block;font-size:12px;color:var(--muted);margin:6px 0 2px}input,select,button,textarea{background:#0f141b;color:var(--text);border:1px solid #263043;border-radius:6px;padding:6px 8px}button{cursor:pointer}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.stack{display:grid;gap:8px}.card{background:#0f141b;border:1px solid #1d2737;border-radius:10px;padding:10px}.badge{font-size:12px;padding:2px 6px;border-radius:999px;background:#13202f;border:1px solid #203046;color:#9ac3ff}.small{font-size:12px;color:var(--muted)}hr{border:none;border-top:1px solid #1f2937;margin:10px 0}table{width:100%;border-collapse:collapse;font-size:12px}th,td{border-bottom:1px solid #1f2937;padding:4px 6px;text-align:left}.legend{position:absolute;top:0;left:0;background:#0009;border:1px solid #203046;border-radius:10px;padding:8px;font-size:12px;transform:translate3d(12px,12px,0);will-change:transform}ul.clean{list-style:none;padding:0;margin:0;display:grid;gap:6px}.thumbs{display:grid;grid-template-columns:1fr;gap:8px}.thumb{border:1px solid #263043;border-radius:8px;overflow:hidden;background:#0b0f14;cursor:pointer;position:relative;padding-bottom:6px}.thumb.active{outline:2px solid #5cc8ff}.thumb canvas{width:100%;height:auto;display:block}.thumb .idx{position:absolute;left:6px;top:6px;background:#0000008c;padding:2px 6px;border-radius:999px;font-size:11px}.thumb .badgebar{position:absolute;right:6px;top:6px;display:flex;gap:6px}.pill{font-size:10px;padding:2px 6px;border-radius:999px;border:1px solid #203046;background:#00000080}.thumblabel{padding:4px 6px 0;font-size:12px;color:#c3d4e6;display:flex;gap:6px;align-items:center}.thumblabel input{width:100%}.mode{margin-left:auto;display:flex;gap:8px;align-items:center}html[data-theme=light]{--bg:#f7fafc;--panel:#ffffff;--muted:#4b5563;--accent:#0ea5e9;--text:#0f172a }html[data-theme=light] .topbar,html[data-theme=light] .pagebar{background:#f1f5f9;border-bottom:1px solid #d1d9e6}html[data-theme=light] .left,html[data-theme=light] .right{background:var(--panel);border-right:1px solid #d1d9e6}html[data-theme=light] .right{border-left:1px solid #d1d9e6;border-right:none}html[data-theme=light] .main{background:#f3f4f6}html[data-theme=light] input,html[data-theme=light] select,html[data-theme=light] button,html[data-theme=light] textarea{background:#fff;color:var(--text);border:1px solid #cbd5e1}html[data-theme=light] .card{background:#fff;border:1px solid #e5e7eb}html[data-theme=light] .badge{background:#eef2ff;border:1px solid #c7d2fe;color:#1e3a8a}html[data-theme=light] .tab-button{background:#f8fafc;border:1px solid #cbd5e1;color:#1e293b}html[data-theme=light] .tab-button.active{background:var(--accent);border-color:var(--accent);color:#fff}html[data-theme=light] hr{border-top:1px solid #e5e7eb}html[data-theme=light] th,html[data-theme=light] td{border-bottom:1px solid #e5e7eb}html[data-theme=light] .legend{background:#ffffffd9;border:1px solid #d1d9e6}html[data-theme=light] .thumb{border:1px solid #e5e7eb;background:#f8fafc}html[data-theme=light] .pill{border:1px solid #d1d9e6;background:#fffc}html[data-theme=light] .thumblabel{color:#334155}html[data-theme=light] .sidebar-toggle{background:#e2e8f0;border:1px solid #cbd5e1;color:var(--accent)}html[data-theme=light] .sidebar-toggle:hover{background:#d1d9e6}html[data-theme=light] .tool-ribbon{background:#f8fafc;border-bottom:1px solid #d1d9e6}html[data-theme=light] .tool-divider{background:#d1d9e6}html[data-theme=light] .tool-button{color:#64748b}html[data-theme=light] .tool-button:hover:not(:disabled){background:#e2e8f0;color:#1e293b;border-color:#cbd5e1}html[data-theme=light] .tool-button.active{background:#dbeafe;color:var(--accent);border-color:var(--accent)}html[data-theme=light] .dropdown-menu{background:#fff;border-color:#d1d9e6;box-shadow:0 4px 16px #0000001a}html[data-theme=light] .dropdown-menu button{color:#1e293b}html[data-theme=light] .dropdown-menu button:hover{background:#f1f5f9}html[data-theme=light] .tool-status-bar{background:#0ea5e914;border-color:#0ea5e940}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:grid;place-items:center;z-index:1000}.modal{width:min(760px,90vw);max-height:80vh;overflow:auto;background:#0f141b;border:1px solid #1d2737;border-radius:12px;padding:16px}html[data-theme=light] .modal{background:#fff;border:1px solid #e5e7eb}.markup-manager-panel{background:#0a0e13;border-top:1px solid #1c2430;z-index:50;display:flex;flex-direction:column;flex-shrink:0;transition:height .25s ease,flex-basis .25s ease}.markup-manager-panel.collapsed{height:48px;flex-basis:48px}.markup-manager-panel.expanded{min-height:220px}.markup-manager-panel.resizing{transition:none}.markup-manager-header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:#0f151d;border-bottom:1px solid #1c2430;cursor:pointer;-webkit-user-select:none;user-select:none;flex-shrink:0}.markup-manager-header:hover{background:#131a24}.markup-manager-title{display:flex;align-items:center;gap:10px;font-weight:600;font-size:14px;color:var(--text)}.markup-manager-icon{display:flex;align-items:center;justify-content:center;color:var(--accent)}.markup-manager-count{font-size:12px;font-weight:500;color:var(--muted);padding:2px 8px;background:#5cc8ff1a;border-radius:10px}.markup-manager-filters{display:flex;gap:6px}.markup-manager-resize-handle{display:flex;justify-content:center;align-items:center;padding:6px 0 2px;cursor:ns-resize;-webkit-user-select:none;user-select:none;touch-action:none;background:#0a0e13;border-bottom:1px solid #1c2430}.markup-manager-resize-bar{width:60px;height:4px;border-radius:999px;background:#1f2a37;transition:background .2s ease,transform .2s ease}.markup-manager-resize-handle.active .markup-manager-resize-bar,.markup-manager-resize-handle:hover .markup-manager-resize-bar{background:var(--accent);transform:scaleX(1.05)}.markup-filter-chip{display:flex;align-items:center;gap:4px;padding:4px 10px;border-radius:14px;border:1px solid #263043;background:transparent;color:var(--muted);font-size:12px;font-weight:500;cursor:pointer;transition:all .15s ease}.markup-filter-chip:hover{background:#1b2736;color:var(--text);border-color:#3a4a5c}.markup-filter-chip.active{background:#5cc8ff26;color:var(--accent);border-color:var(--accent)}.markup-filter-chip svg{width:14px;height:14px}.markup-manager-content{flex:1;overflow:auto;padding:0}.markup-table{width:100%;border-collapse:collapse;font-size:13px}.markup-table thead{position:sticky;top:0;background:#0a0e13;z-index:10}.markup-table th{padding:10px 12px;text-align:left;font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);border-bottom:1px solid #1c2430;white-space:nowrap}.markup-table td{padding:8px 12px;border-bottom:1px solid #151b24;vertical-align:middle}.markup-table-row{cursor:pointer;transition:background .1s ease}.markup-table-row:hover{background:#131a24}.markup-table-row.selected{background:#5cc8ff1a}.markup-table-row.selected:hover{background:#5cc8ff26}.markup-table-row.dimmed{opacity:.5}.markup-table-empty{text-align:center;color:var(--muted);padding:32px 16px!important;font-style:italic}.col-type{width:90px}.col-name{min-width:160px}.col-page{width:110px}.col-group{width:130px}.col-geometry{width:90px}.col-value,.col-priority{width:110px}.col-status{width:120px}.col-visible{width:70px;text-align:center}.markup-type-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:6px;border:1px solid;font-size:12px;font-weight:500;white-space:nowrap}.markup-type-badge svg{width:14px;height:14px}.markup-status-badge{display:inline-flex;align-items:center;padding:3px 8px;border-radius:10px;border:1px solid;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.3px}.markup-table-cell-editable{display:block;padding:4px 6px;border-radius:4px;cursor:text;transition:background .1s ease}.markup-table-cell-editable:hover{background:#5cc8ff14}.markup-table-placeholder{color:var(--muted);opacity:.6}.markup-table-input{width:100%;padding:4px 6px;border:1px solid var(--accent);border-radius:4px;background:#0f151d;color:var(--text);font-size:13px;outline:none}.markup-table-input:focus{box-shadow:0 0 0 2px #5cc8ff33}.markup-table-group{color:var(--muted)}.unit{color:var(--muted);font-size:11px;margin-left:2px}.visibility-toggle{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border-radius:6px;border:1px solid transparent;background:transparent;color:var(--muted);cursor:pointer;transition:all .15s ease;margin:0 auto}.visibility-toggle:hover{background:#1b2736;border-color:#263043;color:var(--text)}html[data-theme=light] .markup-manager-panel{background:#f8fafc;border-top-color:#d1d9e6}html[data-theme=light] .markup-manager-header{background:#f1f5f9;border-bottom-color:#d1d9e6}html[data-theme=light] .markup-manager-header:hover{background:#e8eef4}html[data-theme=light] .markup-manager-count{background:#0ea5e91a}html[data-theme=light] .markup-filter-chip{border-color:#cbd5e1}html[data-theme=light] .markup-filter-chip:hover{background:#e2e8f0;border-color:#94a3b8}html[data-theme=light] .markup-filter-chip.active{background:#0ea5e926;border-color:var(--accent)}html[data-theme=light] .markup-table thead{background:#f8fafc}html[data-theme=light] .markup-table th{border-bottom-color:#d1d9e6}html[data-theme=light] .markup-table td{border-bottom-color:#e5e7eb}html[data-theme=light] .markup-table-row:hover{background:#f1f5f9}html[data-theme=light] .markup-table-row.selected{background:#0ea5e91a}html[data-theme=light] .markup-table-row.selected:hover{background:#0ea5e926}html[data-theme=light] .markup-table-cell-editable:hover{background:#0ea5e914}html[data-theme=light] .markup-table-input{background:#fff;border-color:var(--accent)}html[data-theme=light] .visibility-toggle:hover{background:#e2e8f0;border-color:#cbd5e1}.text-xs{font-size:var(--font-size-xs)}.text-sm{font-size:var(--font-size-sm)}.text-base{font-size:var(--font-size-base)}.text-md{font-size:var(--font-size-md)}.text-lg{font-size:var(--font-size-lg)}.font-normal{font-weight:var(--font-weight-normal)}.font-medium{font-weight:var(--font-weight-medium)}.font-semibold{font-weight:var(--font-weight-semibold)}.font-bold{font-weight:var(--font-weight-bold)}.font-mono{font-family:var(--font-mono)}.text-muted{color:var(--muted)}.text-accent{color:var(--accent)}.text-success{color:var(--success)}.text-warning{color:var(--warning)}.text-error{color:var(--error)}.ui-card{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius-xl);transition:border-color var(--transition-normal)}.ui-card:hover{border-color:var(--border)}.ui-card-header{display:flex;align-items:center;justify-content:space-between}.ui-card-title{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);margin:0}.ui-card-subtitle{font-size:var(--font-size-sm);color:var(--muted);margin:var(--space-1) 0 0 0}.ui-section-header{margin-bottom:var(--space-2)}.ui-section-header h4{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);margin:0;line-height:var(--line-height-tight)}.ui-property-row{display:flex;gap:var(--space-2);align-items:center}.ui-property-row label{font-size:var(--font-size-sm);color:var(--muted);flex-shrink:0}.ui-data-row{display:flex;justify-content:space-between;align-items:center;font-size:var(--font-size-sm);padding:var(--space-1) 0}.ui-data-row .label{color:var(--muted)}.ui-collapsible-trigger{display:flex;align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2) 0;text-align:left;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);cursor:pointer}.ui-collapsible-trigger:hover{color:var(--accent)}.ui-collapsible-content{padding-left:var(--space-4);margin-top:var(--space-2)}.ui-empty-state{text-align:center;padding:var(--space-6) var(--space-4)}.ui-empty-state-icon{width:48px;height:48px;margin:0 auto var(--space-3);border-radius:50%;background:#94a3b826;display:flex;align-items:center;justify-content:center;color:var(--muted)}.ui-empty-state h4{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);margin:0 0 var(--space-2) 0}.ui-empty-state p{font-size:var(--font-size-sm);color:var(--muted);margin:0}.ui-type-badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);white-space:nowrap;transition:all var(--transition-fast)}.ui-type-badge svg{flex-shrink:0}.ui-type-badge--crane{background:#a855f726;color:var(--crane-color);border:1px solid rgba(168,85,247,.3)}.ui-type-badge--weight{background:#3b82f626;color:var(--weight-color);border:1px solid rgba(59,130,246,.3)}.ui-type-badge--zone{background:#f59e0b26;color:var(--zone-color);border:1px solid rgba(245,158,11,.3)}.ui-status-pill{display:inline-flex;align-items:center;gap:var(--space-1);padding:3px 10px;border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);white-space:nowrap;transition:all var(--transition-fast)}.ui-status-pill svg{flex-shrink:0}.ui-status-pill--small{padding:2px 6px;font-size:var(--font-size-xs)}.ui-group-label{display:inline-flex;align-items:center;padding:2px var(--space-2);border-radius:var(--radius-sm);font-size:11px;font-weight:var(--font-weight-medium);background:#94a3b826;color:#64748b;border:1px solid rgba(148,163,184,.25)}.ui-geometry-badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:3px var(--space-2);border-radius:var(--radius-sm);font-size:11px;font-weight:var(--font-weight-medium);background:#94a3b81f;color:var(--muted)}.ui-geometry-badge svg{flex-shrink:0}.ui-visibility-toggle{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border-radius:var(--radius-md);border:1px solid transparent;background:transparent;color:var(--muted);cursor:pointer;transition:all var(--transition-normal)}.ui-visibility-toggle:hover{background:var(--panel-hover);border-color:var(--border);color:var(--text)}.ui-visibility-toggle.active{color:var(--accent)}.inspector-section{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius-xl);padding:var(--space-3);margin-bottom:var(--space-3)}.inspector-section:last-child{margin-bottom:0}.inspector-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-3)}.inspector-section-title{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);margin:0;display:flex;align-items:center;gap:var(--space-2)}.inspector-section-title svg{color:var(--muted)}.inspector-row{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2)}.inspector-row:last-child{margin-bottom:0}.inspector-label{font-size:var(--font-size-sm);color:var(--muted);min-width:80px;flex-shrink:0}.inspector-value{flex:1;font-size:var(--font-size-sm)}.inspector-value.mono{font-family:var(--font-mono)}.inspector-value.highlight{font-weight:var(--font-weight-semibold)}.panel-card{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius-xl);padding:var(--space-3)}.panel-card+.panel-card{margin-top:var(--space-3)}.panel-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-3)}.panel-card-title{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);margin:0}.panel-card-content{display:flex;flex-direction:column;gap:var(--space-2)}.prop-row{display:flex;align-items:center;gap:var(--space-2)}.prop-label{font-size:var(--font-size-sm);color:var(--muted);width:70px;flex-shrink:0}.prop-value{flex:1;display:flex;align-items:center;gap:var(--space-1)}.prop-unit{font-size:var(--font-size-sm);color:var(--muted)}.status-summary{padding:var(--space-3);border-radius:var(--radius-lg);margin-top:var(--space-2)}.status-summary--success{background:var(--success-bg);border:1px solid rgba(34,197,94,.25)}.status-summary--warning{background:var(--warning-bg);border:1px solid rgba(245,158,11,.25)}.status-summary--error{background:var(--error-bg);border:1px solid rgba(239,68,68,.25)}.status-summary--info{background:var(--info-bg);border:1px solid rgba(59,130,246,.25)}.violation-list{list-style:none;padding:0;margin:var(--space-2) 0 0 0}.violation-item{display:flex;align-items:flex-start;gap:var(--space-2);padding:var(--space-1) 0;font-size:var(--font-size-sm)}.violation-item:before{content:"•";color:var(--muted);font-weight:700}.violation-item.mandatory{color:var(--error)}.violation-item.optional{color:var(--warning)}.data-table{width:100%;border-collapse:collapse;font-size:var(--font-size-sm)}.data-table th{padding:var(--space-2) var(--space-2);text-align:left;font-weight:var(--font-weight-semibold);font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.5px;color:var(--muted);border-bottom:1px solid var(--border)}.data-table td{padding:var(--space-2);border-bottom:1px solid var(--border-subtle);vertical-align:middle}.data-table tr:hover td{background:#94a3b80d}.data-table.compact th{padding:var(--space-1) var(--space-2);font-size:10px}.data-table.compact td{padding:var(--space-1) var(--space-2);font-size:var(--font-size-xs)}button.danger{color:var(--error)}button.danger:hover{background:var(--error-bg);border-color:var(--error)}html[data-theme=light]{--card-bg: #ffffff;--card-border: #e5e7eb;--panel-hover: #f1f5f9;--border-subtle: #f1f5f9}html[data-theme=light] .ui-card{background:var(--card-bg);border-color:var(--card-border)}html[data-theme=light] .ui-group-label{background:#64748b1a;color:#475569;border-color:#64748b33}html[data-theme=light] .ui-geometry-badge{background:#64748b14}html[data-theme=light] .ui-visibility-toggle:hover{background:#e2e8f0;border-color:#cbd5e1}html[data-theme=light] .inspector-section,html[data-theme=light] .panel-card{background:#fff;border-color:#e5e7eb}html[data-theme=light] .data-table th{border-bottom-color:#e5e7eb}html[data-theme=light] .data-table td{border-bottom-color:#f3f4f6}html[data-theme=light] .data-table tr:hover td{background:#64748b0a}.walkthrough-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:12000;pointer-events:none}.walkthrough-highlight{position:fixed;border-radius:10px;box-shadow:0 0 0 9999px #0000008c,0 0 0 2px #60a5fa;transition:all .18s ease;pointer-events:none}.walkthrough-card{position:fixed;max-width:380px;background:var(--card-bg);color:var(--text);border:1px solid var(--card-border);border-radius:12px;padding:16px 18px;box-shadow:0 16px 48px #00000059;pointer-events:auto}.walkthrough-header{display:flex;justify-content:space-between;align-items:center;gap:12px}.walkthrough-step-label{font-size:12px;text-transform:uppercase;letter-spacing:.02em;color:var(--muted)}.walkthrough-skip{border:none;background:none;color:var(--accent);cursor:pointer;font-weight:600;padding:4px 6px}.walkthrough-body{margin:8px 0 12px;color:var(--text);font-size:14px;line-height:1.45}.walkthrough-actions{display:flex;justify-content:flex-end;gap:10px}.walkthrough-actions button{padding:8px 12px;border-radius:8px;border:1px solid var(--border);background:#1d4ed8;color:#fff;cursor:pointer;font-weight:600}.walkthrough-actions button:disabled{opacity:.6;cursor:not-allowed}.walkthrough-actions button:nth-child(1){background:var(--card-bg);color:var(--text)}@media (max-width: 900px){.app.mobile{grid-template-columns:1fr;grid-template-rows:auto auto auto 1fr;grid-template-areas:"topbar" "pagebar" "ribbon" "main"}.app.mobile .left,.app.mobile .right{position:fixed;top:120px;bottom:12px;width:min(85vw,360px);min-width:0;max-width:420px;background:var(--panel);border-radius:12px;box-shadow:0 16px 40px #00000073;overflow:auto;z-index:1200;transition:transform var(--transition-normal),opacity var(--transition-normal)}.app.mobile .left{left:12px;border-right:1px solid var(--border);transform:translate(-110%)}.app.mobile .right{right:12px;border-left:1px solid var(--border);transform:translate(110%)}.app.mobile .left.collapsed,.app.mobile .right.collapsed{width:min(70vw,320px);min-width:0;opacity:0;pointer-events:none}.app.mobile .left.collapsed{transform:translate(-110%)}.app.mobile .right.collapsed{transform:translate(110%)}.app.mobile .left:not(.collapsed),.app.mobile .right:not(.collapsed){opacity:1;transform:translate(0);pointer-events:auto}.app.mobile .sidebar-toggle{position:fixed;top:88px;z-index:1400;transform:none}.app.mobile .sidebar-toggle-left{left:12px}.app.mobile .sidebar-toggle-right{right:12px}.app.mobile .left.collapsed .sidebar-toggle-left,.app.mobile .right.collapsed .sidebar-toggle-right{transform:none}.app.mobile .canvas-wrap{border-radius:10px}.app.mobile .legend{display:none}}.mobile-modal{z-index:13000}.mobile-modal .modal{width:min(480px,92vw)}
