.app-header{height:var(--header-height);background:var(--header-bg);display:flex;align-items:center;padding:0 16px;gap:12px;flex-shrink:0;color:var(--header-text);-webkit-user-select:none;user-select:none}.header-logo{display:flex;align-items:center;gap:8px;font-weight:700;font-size:15px;letter-spacing:.3px}.header-logo-icon{width:28px;height:28px;background:var(--accent);border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;color:#fff}.header-divider{width:1px;height:24px;background:#fff3}.header-title{font-size:14px;font-weight:500;color:#ffffffe6}.header-project-badge{background:#ffffff26;border-radius:4px;padding:2px 8px;font-size:12px;color:#93c5fd;font-weight:600;cursor:pointer}.header-spacer{flex:1}.header-icon-btn{width:32px;height:32px;border-radius:50%;background:transparent;border:none;color:#ffffffb3;display:flex;align-items:center;justify-content:center;font-size:16px;transition:background .15s}.header-icon-btn:hover{background:#ffffff1a;color:#fff}.header-avatar{width:32px;height:32px;border-radius:50%;background:#0070f3;color:#fff;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;cursor:pointer}.header-username{font-size:13px;color:#ffffffd9}.header-back-btn{display:flex;align-items:center;gap:6px;padding:5px 12px;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:6px;color:#fff;font-size:13px;transition:background .15s}.header-back-btn:hover{background:#ffffff2e}.documents-page{display:flex;flex-direction:column;height:100vh;overflow:hidden}.documents-body{display:flex;flex:1;overflow:hidden}.documents-sidebar{width:var(--sidebar-width);border-right:1px solid var(--border);background:#fff;overflow-y:auto;flex-shrink:0;display:flex;flex-direction:column}.sidebar-view-toggle{padding:10px 12px 6px;border-bottom:1px solid var(--border)}.sidebar-view-label{font-size:11px;color:#6b7280;font-weight:500;margin-bottom:6px}.sidebar-tabs{display:flex;gap:2px}.sidebar-tab{flex:1;padding:4px 8px;font-size:12px;border:1px solid var(--border);background:#fff;border-radius:4px;color:#374151;transition:all .15s}.sidebar-tab.active{background:#1c2b3a;border-color:#1c2b3a;color:#fff}.sidebar-tree{flex:1;padding:8px 0}.documents-main{flex:1;display:flex;flex-direction:column;overflow:hidden;background:#fff}.nav-tabs{display:flex;border-bottom:1px solid var(--border);padding:0 20px;background:#fff;flex-shrink:0}.nav-tab{padding:12px 16px;font-size:13px;font-weight:500;color:#6b7280;border:none;background:transparent;border-bottom:2px solid transparent;cursor:pointer;transition:color .15s;margin-bottom:-1px}.nav-tab:hover{color:var(--accent)}.nav-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.table-toolbar{display:flex;align-items:center;gap:8px;padding:10px 16px;border-bottom:1px solid var(--border);flex-shrink:0}.table-toolbar-right{margin-left:auto;display:flex;align-items:center;gap:8px}.items-count{font-size:13px;color:#6b7280}.search-input{padding:5px 10px;border:1px solid var(--border);border-radius:20px;font-size:12px;width:180px;outline:none;color:#374151;background:#f9fafb}.search-input:focus{border-color:var(--accent);background:#fff}.folder-breadcrumb{font-size:13px;font-weight:600;color:#1c2b3a;white-space:nowrap;padding-right:4px}.clash-panel{--cp-bg: #ffffff;--cp-panel-2: #f1f3f6;--cp-line: #e4e7ec;--cp-line-2: #d3d8e0;--cp-ink: #1a1f2b;--cp-ink-2: #475063;--cp-ink-3: #8b94a5;--cp-accent: var(--accent, #2563eb);--cp-warn: #f59e0b;--cp-bad: #ef4444;--cp-ok: #10b981;--cp-review: #8b5cf6;--cp-shadow-sm: 0 1px 2px rgba(15,23,42,.04), 0 1px 3px rgba(15,23,42,.06);--cp-shadow-md: 0 4px 14px rgba(15,23,42,.08), 0 1px 3px rgba(15,23,42,.04);--cp-shadow-lg: 0 12px 40px rgba(15,23,42,.18), 0 4px 12px rgba(15,23,42,.08)}.clash-topbar-btn{display:inline-flex;align-items:center;gap:7px;padding:6px 12px;border-radius:8px;background:#ffffff1a;border:1.5px solid rgba(239,68,68,.7);color:#fff;font-weight:600;font-size:12.5px;cursor:pointer;font-family:inherit;position:relative;transition:background .15s,border-color .15s}.clash-topbar-btn:hover{background:#ef44442e;border-color:#ef4444}.clash-topbar-btn.active{background:#ef4444;border-color:#ef4444}.clash-topbar-btn .dot{position:absolute;top:-3px;right:-3px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:#ef4444;color:#fff;font-size:10px;font-weight:700;display:grid;place-items:center;border:2px solid var(--header-bg, #1c2b3a)}.clash-panel{position:absolute;top:8px;right:8px;bottom:8px;width:600px;background:var(--cp-bg);border:1px solid var(--cp-line);border-radius:12px;box-shadow:var(--cp-shadow-lg);display:flex;flex-direction:column;z-index:20;font-family:inherit;color:var(--cp-ink);transform:translate(calc(100% + 24px));opacity:0;pointer-events:none;transition:transform .25s cubic-bezier(.22,1,.36,1),opacity .25s}.clash-panel.open{transform:translate(0);opacity:1;pointer-events:auto}.clash-panel .mono{font-family:JetBrains Mono,ui-monospace,Consolas,monospace;letter-spacing:.01em}.cp-head{padding:12px 14px;border-bottom:1px solid var(--cp-line);display:flex;align-items:center;gap:10px}.cp-head h2{margin:0;font-size:14.5px;font-weight:700;flex:1;display:flex;align-items:center;gap:8px}.cp-head h2 .icon{width:24px;height:24px;border-radius:6px;background:#ef44441a;color:var(--cp-bad);display:grid;place-items:center}.cp-head .pill{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:999px;background:var(--cp-panel-2);border:1px solid var(--cp-line);font-size:11px;color:var(--cp-ink-2);font-weight:500}.panel-close{width:26px;height:26px;border-radius:6px;display:grid;place-items:center;color:var(--cp-ink-2);cursor:pointer;background:none;border:1px solid transparent}.panel-close:hover{background:var(--cp-panel-2);border-color:var(--cp-line)}.uploader{margin:12px 14px 0;padding:12px;border:1.5px dashed var(--cp-line-2);border-radius:10px;background:linear-gradient(180deg,#fafbfc,#fff);display:flex;align-items:center;gap:12px;transition:.15s}.uploader.dragover{border-color:var(--cp-accent);background:#2563eb0a}.uploader.loaded{border-style:solid;border-color:#10b98166;background:#10b9810a}.uploader .xl-icon{width:40px;height:40px;border-radius:8px;background:#1f7244;color:#fff;display:grid;place-items:center;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;flex-shrink:0;box-shadow:0 2px 6px #1f724440}.uploader.empty .xl-icon{background:var(--cp-panel-2);color:var(--cp-ink-3);box-shadow:none}.upl-body{flex:1;min-width:0}.upl-title{font-size:13px;font-weight:600;color:var(--cp-ink);margin-bottom:2px}.upl-sub{font-size:11.5px;color:var(--cp-ink-3);display:flex;align-items:center;gap:8px;flex-wrap:wrap}.upl-sub .mono{color:var(--cp-ink-2)}.upl-actions{display:flex;gap:6px;flex-shrink:0}.upl-btn{padding:6px 10px;border-radius:7px;font-size:12px;font-weight:500;cursor:pointer;font-family:inherit;border:1px solid var(--cp-line);background:#fff;color:var(--cp-ink-2);display:inline-flex;align-items:center;gap:5px}.upl-btn:hover{border-color:var(--cp-line-2);background:var(--cp-panel-2)}.upl-btn.primary{border-color:var(--cp-accent);background:var(--cp-accent);color:#fff}.upl-btn.primary:hover{background:#1d4ed8}.cp-tabs{display:flex;gap:0;border-bottom:1px solid var(--cp-line);padding:8px 14px 0;overflow:auto;scrollbar-width:none}.cp-tabs::-webkit-scrollbar{display:none}.cp-tabs button{padding:7px 11px;font-size:12.5px;color:var(--cp-ink-2);border:none;background:none;cursor:pointer;display:inline-flex;align-items:center;gap:6px;border-bottom:2px solid transparent;white-space:nowrap;font-family:inherit;font-weight:500;margin-bottom:-1px}.cp-tabs button:hover{color:var(--cp-ink)}.cp-tabs button.on{color:var(--cp-accent);border-color:var(--cp-accent)}.cp-tabs .cnt{font-size:10.5px;background:var(--cp-panel-2);padding:1px 6px;border-radius:999px;color:var(--cp-ink-3);font-weight:500}.cp-tabs button.on .cnt{color:var(--cp-accent);background:#2563eb1a}.cp-toolbar{display:flex;gap:6px;align-items:center;flex-wrap:wrap;padding:10px 14px 6px}.cp-search{display:flex;align-items:center;gap:6px;background:#fff;border:1px solid var(--cp-line);border-radius:8px;padding:6px 10px;flex:1 1 100%;min-width:200px}.cp-search:focus-within{border-color:var(--cp-accent);box-shadow:0 0 0 3px #2563eb1a}.cp-search input{background:none;border:none;outline:none;color:var(--cp-ink);font-size:12.5px;width:100%;font-family:inherit}.cp-search input::placeholder{color:var(--cp-ink-3)}.filter{position:relative}.filter-btn{display:flex;align-items:center;gap:5px;padding:5px 10px;background:#fff;border:1px solid var(--cp-line);border-radius:8px;font-size:12px;color:var(--cp-ink-2);cursor:pointer;font-family:inherit;transition:.15s}.filter-btn:hover{border-color:var(--cp-line-2)}.filter-btn.has-value{border-color:#2563eb66;background:#2563eb0d;color:var(--cp-accent)}.filter-btn b{font-weight:600;color:var(--cp-ink)}.filter-btn.has-value b{color:var(--cp-accent)}.filter-pop{position:absolute;top:calc(100% + 4px);left:0;background:#fff;border:1px solid var(--cp-line);border-radius:8px;padding:4px;min-width:170px;max-height:280px;overflow:auto;box-shadow:var(--cp-shadow-md);z-index:25}.filter-opt{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;font-size:12px;color:var(--cp-ink-2);cursor:pointer}.filter-opt:hover{background:var(--cp-panel-2)}.filter-opt input{margin:0;accent-color:var(--cp-accent)}.filter-opt .sw{width:9px;height:9px;border-radius:2px;flex-shrink:0}.active-filters{display:flex;gap:5px;flex-wrap:wrap;padding:0 14px 8px;min-height:0}.active-filters:empty{display:none;padding:0}.afc{display:inline-flex;align-items:center;gap:5px;padding:3px 3px 3px 8px;background:#2563eb14;border:1px solid rgba(37,99,235,.2);border-radius:999px;font-size:11px;color:var(--cp-accent);font-weight:500}.afc button{background:transparent;border:none;color:var(--cp-accent);width:16px;height:16px;border-radius:50%;cursor:pointer;display:grid;place-items:center;padding:0}.afc button:hover{background:#2563eb2e}.cp-list{flex:1;overflow:auto;padding:0 14px 14px;display:flex;flex-direction:column;gap:8px}.cp-list::-webkit-scrollbar{width:6px}.cp-list::-webkit-scrollbar-thumb{background:var(--cp-line-2);border-radius:3px}.cp-row{background:#fff;border:1px solid var(--cp-line);border-radius:12px;overflow:hidden;display:flex;transition:.15s;flex-shrink:0;min-height:220px}.cp-row .thumb{width:200px;flex-shrink:0;order:2}.cp-row .row-body{flex:1;min-width:0;padding:10px 12px;display:flex;flex-direction:column;min-height:0}.cp-row:hover{border-color:var(--cp-line-2);box-shadow:var(--cp-shadow-sm)}.cp-row.selected{border-color:var(--cp-accent);box-shadow:0 0 0 1px var(--cp-accent)}.head{display:flex;align-items:center;gap:9px;margin-bottom:8px;min-width:0;flex-wrap:wrap}.status-bar{width:14px;height:22px;border-radius:3px;flex-shrink:0}.group-name{font-size:14.5px;font-weight:700;color:var(--cp-ink)}.gstatus{font-size:11.5px;padding:3px 9px;border-radius:6px;font-family:JetBrains Mono,monospace;white-space:nowrap;font-weight:500}.head-spacer{flex:1}.id-row{display:flex;align-items:center;gap:9px;margin-bottom:8px;flex-wrap:wrap}.clash-id{font-family:JetBrains Mono,monospace;font-size:12.5px;color:var(--cp-ink);font-weight:600;padding:4px 10px;background:var(--cp-panel-2);border:1px solid var(--cp-line);border-radius:7px;display:inline-flex;align-items:center;gap:6px;flex-shrink:0}.clash-id .pre{color:var(--cp-ink-3);font-weight:500}.clash-id .sep{color:var(--cp-line-2)}.desc{font-size:13px;color:var(--cp-ink-2);line-height:1.45;flex:1;min-width:0}.meta{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;font-size:12.5px;margin:0 0 8px}.meta dt{color:var(--cp-ink-3);font-weight:400;white-space:nowrap}.meta dd{margin:0;color:var(--cp-ink);font-weight:600;min-width:0;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.meta .id-mono{font-family:JetBrains Mono,monospace;font-size:11.5px;color:var(--cp-ink-2);background:var(--cp-panel-2);padding:1px 6px;border-radius:4px}.chips{display:flex;gap:5px;flex-wrap:wrap}.chip{font-size:11.5px;padding:2px 8px;border-radius:5px;font-weight:500;border:1px solid}.chip-hvac{background:#0ea5e914;color:#0369a1;border-color:#0ea5e940}.chip-struct{background:#6366f114;color:#4338ca;border-color:#6366f140}.chip-arch{background:#8b5cf614;color:#6d28d9;border-color:#8b5cf640}.chip-plumb{background:#10b98114;color:#047857;border-color:#10b98140}.chip-elec{background:#f59e0b1a;color:#b45309;border-color:#f59e0b4d}.chip-default{background:var(--cp-panel-2);color:var(--cp-ink-2);border-color:var(--cp-line)}.group-text{font-family:JetBrains Mono,monospace;font-size:12.5px;color:var(--cp-ink);font-weight:500;background:var(--cp-panel-2);padding:2px 8px;border-radius:5px;border:1px solid var(--cp-line)}.loc-arrow{color:var(--cp-ink-3);font-weight:400}.actions{display:flex;align-items:center;gap:6px;margin-top:auto;padding-top:8px;border-top:1px dashed var(--cp-line);flex-wrap:wrap}.actions .btn{font-size:12px;padding:5px 10px;border-radius:7px;border:1px solid var(--cp-line);background:#fff;color:var(--cp-ink-2);cursor:pointer;font-family:inherit;font-weight:500;display:inline-flex;align-items:center;gap:6px;transition:.15s}.actions .btn:hover{border-color:var(--cp-line-2);background:var(--cp-panel-2)}.actions .btn.primary{background:#2563eb14;border-color:#2563eb40;color:var(--cp-accent)}.actions .btn.primary:hover{background:#2563eb26}.actions .spacer{flex:1}.sev-tag{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:4px 9px;border-radius:6px}.sev-cao{color:#b91c1c;background:#ef444414;border:1px solid rgba(239,68,68,.2)}.sev-tb{color:#b45309;background:#f59e0b1a;border:1px solid rgba(245,158,11,.25)}.sev-thap{color:#0369a1;background:#0ea5e914;border:1px solid rgba(14,165,233,.2)}.sev-tag .d{width:6px;height:6px;border-radius:50%;background:currentColor}.thumb{position:relative;background:#0f172a;overflow:hidden;border-left:1px solid var(--cp-line);min-height:0}.thumb svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block}.thumb:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,transparent 50%,rgba(0,0,0,.45));pointer-events:none}.thumb .tag{position:absolute;left:8px;top:8px;font-family:JetBrains Mono,monospace;font-size:10.5px;padding:3px 8px;background:#fffffff2;border-radius:5px;color:var(--cp-ink);font-weight:600;box-shadow:0 2px 6px #0003}.thumb .coord-tag{position:absolute;left:8px;bottom:8px;right:8px;font-family:JetBrains Mono,monospace;font-size:10px;color:#fff;display:flex;justify-content:space-between;gap:6px;text-shadow:0 1px 2px rgba(0,0,0,.8)}.thumb .zoom{position:absolute;right:8px;top:8px;width:26px;height:26px;border-radius:6px;background:#fffffff2;border:none;display:grid;place-items:center;color:var(--cp-ink);cursor:pointer;box-shadow:0 2px 6px #0003}.status-bar.st-untouched{background:var(--cp-bad)}.status-bar.st-progress{background:var(--cp-warn)}.status-bar.st-review{background:var(--cp-review)}.status-bar.st-resolved{background:var(--cp-ok)}.gstatus.st-untouched{background:#ef44441a;color:#b91c1c;border:1px solid rgba(239,68,68,.25)}.gstatus.st-progress{background:#f59e0b1f;color:#b45309;border:1px solid rgba(245,158,11,.3)}.gstatus.st-review{background:#8b5cf61a;color:#6d28d9;border:1px solid rgba(139,92,246,.25)}.gstatus.st-resolved{background:#10b9811a;color:#047857;border:1px solid rgba(16,185,129,.25)}.cp-foot{padding:8px 14px;border-top:1px solid var(--cp-line);display:flex;align-items:center;justify-content:space-between;font-size:11.5px;color:var(--cp-ink-3)}.cp-foot b{color:var(--cp-ink);font-family:JetBrains Mono,monospace}.cp-foot .hint-restore{font-size:11px;color:var(--cp-ink-3)}.cp-empty{text-align:center;padding:40px 20px;color:var(--cp-ink-3);font-size:13px;line-height:1.6}.cp-empty b{color:var(--cp-ink-2)}.file-table-container{flex:1;overflow:auto}.file-table{width:100%;border-collapse:collapse;font-size:13px;table-layout:fixed}.file-table thead{position:sticky;top:0;background:#fff;z-index:2}.file-table th{height:36px;padding:0 12px;text-align:left;font-size:var(--table-header-size);font-weight:600;color:var(--table-header-color);border-bottom:1px solid var(--border);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative;-webkit-user-select:none;user-select:none}.file-table th.sortable{cursor:pointer}.file-table th.sortable:hover{background:#f9fafb}.th-content{display:flex;align-items:center;gap:4px}.sort-icon{font-size:10px;color:#9ca3af;flex-shrink:0}.sort-icon.active{color:var(--accent)}.col-resize-handle{position:absolute;right:0;top:0;width:4px;height:100%;cursor:col-resize;z-index:3;background:transparent}.col-resize-handle:hover,.col-resize-handle.resizing{background:var(--accent);opacity:.5}.file-table td{height:var(--row-height);padding:0 12px;border-bottom:1px solid #f3f4f6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#374151;vertical-align:middle}.file-table tr:hover td{background:var(--row-hover)}.col-checkbox{width:36px}.file-table th.col-checkbox,.file-table td.col-checkbox{text-align:center;padding:0}.file-link{color:var(--file-link);text-decoration:none;cursor:default;display:flex;align-items:center;gap:6px}.file-link.file-link-ifc{cursor:pointer}.file-link.file-link-ifc:hover{text-decoration:underline}.file-icon{font-size:14px;flex-shrink:0}.folder-icon{color:#f59e0b}.ifc-icon{color:#0070f3}.file-icon-generic{color:#9ca3af}.dash{color:#d1d5db}.btn-upload{display:flex;align-items:center;gap:6px;padding:7px 14px;background:var(--accent);color:#fff;border:none;border-radius:6px;font-size:13px;font-weight:500;transition:background .15s}.btn-upload:hover{background:var(--accent-dark)}.btn-upload-arrow{padding:7px 9px;background:var(--accent);color:#fff;border:none;border-left:1px solid rgba(255,255,255,.3);border-radius:0 6px 6px 0;font-size:11px;transition:background .15s}.btn-upload-arrow:hover{background:var(--accent-dark)}.upload-btn-group{display:flex}.upload-btn-group .btn-upload{border-radius:6px 0 0 6px}.btn-open-combined{padding:7px 14px;background:#fff;color:var(--accent);border:1px solid var(--accent);border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;transition:background .15s,color .15s}.btn-open-combined:hover:not(:disabled){background:var(--accent-light)}.btn-open-combined:disabled{border-color:var(--border);color:#9ca3af;cursor:not-allowed}.tree-section{margin-top:4px}.tree-section-header{display:flex;align-items:center;gap:4px;padding:6px 12px;font-size:12px;font-weight:700;color:#374151;cursor:pointer;-webkit-user-select:none;user-select:none}.tree-section-header:hover{background:#f9fafb}.tree-section-icon{font-size:1.2em}.tree-item{display:flex;align-items:center;gap:4px;padding:5px 12px 5px 24px;font-size:12px;color:#374151;cursor:pointer;border-radius:0;-webkit-user-select:none;user-select:none;transition:background .1s}.tree-item:hover{background:#f3f4f6}.tree-item.active{background:var(--accent-light);color:var(--accent);font-weight:500}.tree-item.depth-2{padding-left:36px}.tree-item.depth-3{padding-left:48px}.tree-item-icon{font-size:1.1em;flex-shrink:0}.tree-item-dots{margin-left:auto;color:#9ca3af;font-size:14px;padding:0 4px;visibility:hidden}.tree-item:hover .tree-item-dots{visibility:visible}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .15s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.dialog{background:#fff;border-radius:10px;box-shadow:0 20px 60px #00000040;min-width:440px;max-width:90vw;max-height:90vh;display:flex;flex-direction:column;animation:slideUp .15s ease}@keyframes slideUp{0%{transform:translateY(12px);opacity:.5}to{transform:translateY(0);opacity:1}}.dialog-header{padding:16px 20px 12px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:8px}.dialog-title{font-size:15px;font-weight:600;color:#111827;flex:1}.dialog-close{width:28px;height:28px;border-radius:6px;background:transparent;border:none;color:#9ca3af;font-size:18px;display:flex;align-items:center;justify-content:center;transition:background .15s}.dialog-close:hover{background:#f3f4f6;color:#374151}.dialog-tabs{display:flex;border-bottom:1px solid var(--border);padding:0 20px;flex-shrink:0}.dialog-tab{padding:9px 14px;font-size:13px;color:#6b7280;border:none;background:transparent;border-bottom:2px solid transparent;cursor:pointer;margin-bottom:-1px;transition:color .15s}.dialog-tab:hover{color:var(--accent)}.dialog-tab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:500}.dialog-body{flex:1;overflow-y:auto;padding:16px 20px}.dialog-footer{padding:12px 20px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:8px}.btn-primary{padding:7px 18px;background:var(--accent);color:#fff;border:none;border-radius:6px;font-size:13px;font-weight:500;transition:background .15s}.btn-primary:hover:not(:disabled){background:var(--accent-dark)}.btn-primary:disabled{opacity:.45;cursor:not-allowed}.btn-secondary{padding:7px 18px;background:#fff;color:#374151;border:1px solid var(--border);border-radius:6px;font-size:13px;font-weight:500;transition:background .15s}.btn-secondary:hover{background:#f9fafb}.form-group{margin-bottom:14px}.form-label{display:block;font-size:12px;font-weight:500;color:#374151;margin-bottom:5px}.form-input{width:100%;padding:7px 10px;border:1px solid var(--border);border-radius:6px;font-size:13px;outline:none;transition:border-color .15s;color:#111827}.form-input:focus{border-color:var(--accent)}.form-select{width:100%;padding:7px 10px;border:1px solid var(--border);border-radius:6px;font-size:13px;outline:none;background:#fff;color:#111827}.dual-list-wrap{display:flex;gap:10px;align-items:flex-start}.dual-list-col{flex:1;display:flex;flex-direction:column;gap:4px}.dual-list-label{font-size:11px;font-weight:600;color:#6b7280;text-transform:uppercase;letter-spacing:.3px}.dual-list-box{height:220px;border:1px solid var(--border);border-radius:6px;overflow-y:auto;background:#fff}.dual-list-item{padding:5px 10px;font-size:12px;color:#374151;cursor:pointer;border-bottom:1px solid #f9fafb;transition:background .1s}.dual-list-item:hover{background:#f3f4f6}.dual-list-item.selected{background:var(--accent-light);color:var(--accent)}.dual-list-actions{display:flex;flex-direction:column;gap:4px;align-self:center;padding-top:16px}.dual-action-btn{width:28px;height:28px;border:1px solid var(--border);background:#fff;border-radius:5px;font-size:13px;color:#374151;display:flex;align-items:center;justify-content:center;transition:background .15s}.dual-action-btn:hover:not(:disabled){background:var(--accent-light);border-color:var(--accent);color:var(--accent)}.dual-action-btn:disabled{opacity:.35;cursor:not-allowed}.filter-row{display:flex;gap:6px;align-items:center;margin-bottom:8px}.filter-row-index{font-size:11px;color:#9ca3af;width:16px;flex-shrink:0}.filter-select{flex:1;padding:5px 7px;border:1px solid var(--border);border-radius:5px;font-size:12px;outline:none;background:#fff}.filter-select:focus{border-color:var(--accent)}.filter-input{flex:1;padding:5px 7px;border:1px solid var(--border);border-radius:5px;font-size:12px;outline:none}.filter-input:focus{border-color:var(--accent)}.filter-del-btn{width:24px;height:24px;border:none;background:transparent;color:#ef4444;font-size:14px;border-radius:4px;display:flex;align-items:center;justify-content:center}.filter-del-btn:hover{background:#fee2e2}.filter-add-btn{padding:5px 12px;font-size:12px;color:var(--accent);background:var(--accent-light);border:1px solid #bfdbfe;border-radius:5px;margin-top:4px}.filter-add-btn:hover{background:#dbeafe}.filter-logic-connector{display:flex;align-items:center;margin:1px 0 1px 22px}.filter-logic-btn{padding:2px 9px;border-radius:10px;font-size:10px;font-weight:700;border:1px solid transparent;cursor:pointer;letter-spacing:.5px;transition:all .15s}.filter-logic-btn.is-and{background:#eff6ff;border-color:#93c5fd;color:#2563eb}.filter-logic-btn.is-and:hover{background:#dbeafe;border-color:#60a5fa}.filter-logic-btn.is-or{background:#fff7ed;border-color:#fdba74;color:#ea580c}.filter-logic-btn.is-or:hover{background:#ffedd5;border-color:#fb923c}.sort-row{display:flex;gap:8px;align-items:center;margin-bottom:10px}.sort-label{font-size:12px;color:#6b7280;width:72px;flex-shrink:0}.sort-field-select{flex:1;padding:5px 7px;border:1px solid var(--border);border-radius:5px;font-size:12px;outline:none;background:#fff}.sort-field-select:focus{border-color:var(--accent)}.sort-field-select:disabled{background:#f9fafb;color:#9ca3af}.sort-dir-select{width:90px;padding:5px 7px;border:1px solid var(--border);border-radius:5px;font-size:12px;outline:none;background:#fff}.sort-dir-select:disabled{background:#f9fafb;color:#9ca3af}.sort-check-group{display:flex;gap:12px;align-items:center;font-size:12px;color:#374151}.sort-check-group input[type=checkbox]:disabled{opacity:.4}.sort-itemize-row{margin-top:16px;margin-bottom:0;padding:10px 12px;background:#f9fafb;border:1px solid var(--border);border-radius:6px}.sort-grand-totals{margin-top:16px;padding-top:12px;border-top:1px solid var(--border)}.format-field-list{display:flex;gap:0;min-height:280px}.format-field-sidebar{width:160px;flex-shrink:0;border:1px solid var(--border);border-radius:6px;overflow-y:auto;max-height:300px}.format-field-item{padding:6px 10px;font-size:12px;cursor:pointer;border-bottom:1px solid #f3f4f6;color:#374151;transition:background .1s}.format-field-item:hover{background:#f3f4f6}.format-field-item.selected{background:var(--accent-light);color:var(--accent)}.format-field-detail{flex:1;padding:0 0 0 14px}.format-align-group{display:flex;gap:6px;flex-wrap:wrap}.format-align-btn{padding:5px 12px;border:1px solid var(--border);border-radius:5px;font-size:12px;cursor:pointer;background:#fff;color:#374151;transition:all .15s}.format-align-btn:hover{background:#f3f4f6}.format-align-btn.active{background:var(--accent-light);border-color:var(--accent);color:var(--accent);font-weight:500}.appearance-option{display:flex;align-items:flex-start;gap:8px;margin-bottom:14px;font-size:13px;color:#374151}.appearance-option input[type=checkbox]{width:14px;height:14px;margin-top:2px;flex-shrink:0}.schedule-progress-bar{position:relative;height:18px;background:#e5e7eb;border-radius:9px;overflow:hidden;margin:4px 0}.schedule-progress-fill{height:100%;background:var(--accent);border-radius:9px;transition:width .15s ease;min-width:4px}.schedule-progress-text{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:10px;color:#374151;font-weight:600}.sched-modal-dialog{width:90vw;max-height:90vh;min-width:600px;display:flex;flex-direction:column}.sched-modal-title{font-size:15px;font-weight:600;color:#111827;flex:1}.sched-table-container{flex:1;overflow:auto}.sched-full-table{width:100%;border-collapse:collapse;font-size:12px}.sched-full-table th{padding:6px 10px;background:#f3f4f6;border-bottom:2px solid #d1d5db;text-align:left;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;font-size:11px;font-weight:600;color:#374151;text-transform:uppercase;letter-spacing:.3px;position:sticky;top:0;z-index:1}.sched-full-table th:hover{background:#e5e7eb}.sort-indicator{margin-left:4px;color:var(--accent)}.sched-full-table td{padding:5px 10px;border-bottom:1px solid #f3f4f6;color:#111827;white-space:nowrap}.sched-full-table tr:hover td{background:#f8faff}.sched-group-header td{background:#eef2f7;font-weight:600;font-size:12px;color:#374151;padding:5px 10px;border-bottom:1px solid #d1d5db;border-top:1px solid #d1d5db}.sched-grand-total td{background:#eff6ff;font-weight:700;font-size:12px;color:#1d4ed8;border-top:2px solid #93c5fd;padding:6px 10px}.alternate-rows tbody tr:nth-child(2n):not(.sched-group-header):not(.sched-grand-total) td{background:#f9fafb}.has-grid-lines td,.has-grid-lines th{border:1px solid #e5e7eb}.sched-pagination{display:flex;align-items:center;gap:6px;padding:8px 16px;border-top:1px solid var(--border);font-size:12px;color:#6b7280;flex-shrink:0}.sched-pagination button{padding:3px 9px;border:1px solid var(--border);border-radius:4px;font-size:12px;background:#fff;color:#374151;transition:background .15s}.sched-pagination button:hover:not(:disabled){background:#f3f4f6}.sched-pagination button:disabled{opacity:.4;cursor:not-allowed}.loading-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#ffffffd9;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;z-index:50}.loading-spinner{width:40px;height:40px;border:3px solid #e5e7eb;border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}.loading-text{font-size:13px;color:#6b7280}.sched-cat-dialog{min-width:520px}.sched-cat-body{display:flex;gap:20px;padding:16px 20px}.sched-cat-list-col{flex:1}.sched-cat-search{width:100%;padding:5px 8px;border:1px solid var(--border);border-radius:5px;font-size:12px;margin-bottom:8px;outline:none;box-sizing:border-box}.sched-cat-search:focus{border-color:var(--accent)}.sched-cat-list{border:1px solid var(--border);border-radius:6px;overflow-y:auto;max-height:260px}.sched-cat-item{display:flex;align-items:center;justify-content:space-between;padding:7px 10px;font-size:12px;cursor:pointer;border-bottom:1px solid #f3f4f6;color:#374151}.sched-cat-item:last-child{border-bottom:none}.sched-cat-item:hover{background:var(--accent-light)}.sched-cat-item.selected{background:var(--accent-light);color:var(--accent);font-weight:600}.sched-cat-item.multi{font-weight:600;color:#374151;border-bottom:2px solid var(--border)}.sched-cat-count{font-size:11px;color:#9ca3af}.sched-cat-right{width:180px;flex-shrink:0}.sched-cat-name-label{font-size:12px;font-weight:500;color:#374151;display:block;margin-bottom:4px}.sched-category-badge{display:inline-block;padding:2px 8px;background:var(--accent-light);color:var(--accent);border:1px solid #bfdbfe;border-radius:10px;font-size:11px;font-weight:500;white-space:nowrap}.viewer-page{display:flex;flex-direction:column;height:100vh;overflow:hidden}.viewer-body{display:flex;flex:1;overflow:hidden;position:relative}.viewer-left-panel{width:220px;background:#fff;border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0;overflow:hidden}.panel-tabs{display:flex;border-bottom:1px solid var(--border);flex-shrink:0}.panel-tab{flex:1;padding:9px 8px;font-size:12px;font-weight:500;color:#6b7280;border:none;background:transparent;border-bottom:2px solid transparent;cursor:pointer;transition:color .15s;margin-bottom:-1px}.panel-tab:hover{color:var(--accent)}.panel-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.panel-content{flex:1;overflow-y:auto;padding:8px}.panel-section-title{font-size:11px;font-weight:600;color:#9ca3af;text-transform:uppercase;letter-spacing:.5px;padding:4px 4px 6px}.panel-item{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:6px;font-size:12px;color:#374151;cursor:pointer;transition:background .1s;border:1px solid transparent}.panel-item:hover{background:#f3f4f6}.panel-item.active{background:var(--accent-light);color:var(--accent);border-color:#bfdbfe}.panel-item-icon{font-size:14px}.panel-item-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.panel-item-edit{visibility:hidden;padding:2px 4px;background:transparent;border:none;color:#6b7280;font-size:13px;border-radius:4px;cursor:pointer}.panel-item-edit:hover{background:#f3f4f6;color:var(--accent)}.panel-item-del{visibility:hidden;padding:2px 4px;background:transparent;border:none;color:#ef4444;font-size:13px;border-radius:4px;cursor:pointer}.panel-item:hover .panel-item-del{visibility:visible}.panel-item-del:hover{background:#fee2e2}.panel-add-btn{width:100%;padding:7px;font-size:12px;color:var(--accent);background:transparent;border:1px dashed #bfdbfe;border-radius:6px;margin-top:4px;transition:background .15s}.panel-add-btn:hover{background:var(--accent-light)}.viewer-canvas-wrap{width:100%;height:100%;position:relative;background:var(--viewer-bg);overflow:hidden}.viewer-canvas-wrap canvas{display:block;width:100%!important;height:100%!important}.viewer-toolbar{position:absolute;bottom:24px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:4px;background:var(--toolbar-bg);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(0,0,0,.1);border-radius:40px;padding:6px 12px;box-shadow:0 4px 20px #0000001f;z-index:10}.tool-btn{width:36px;height:36px;border-radius:50%;border:none;background:transparent;color:#374151;display:flex;align-items:center;justify-content:center;font-size:16px;transition:background .15s,color .15s;position:relative}.tool-btn:hover{background:#f3f4f6;color:var(--accent)}.tool-btn.active{background:var(--accent-light);color:var(--accent)}.toolbar-divider{width:1px;height:22px;background:var(--border);margin:0 4px}.tool-btn:after{content:attr(title);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);background:#1f2937;color:#fff;font-size:11px;padding:3px 7px;border-radius:4px;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .15s;z-index:20}.tool-btn:hover:after{opacity:1}.viewer-right-panel{width:300px;background:var(--props-bg);border-left:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0;overflow:hidden}.props-header{padding:10px 14px;font-size:12px;font-weight:700;color:#374151;border-bottom:1px solid var(--border);background:#fff;flex-shrink:0;display:flex;align-items:center;justify-content:space-between}.props-edit-toggle{display:flex;align-items:center;gap:4px;font-size:11px;font-weight:500;color:#6b7280;cursor:pointer;-webkit-user-select:none;user-select:none}.props-edit-toggle input[type=checkbox]{cursor:pointer;accent-color:var(--accent);width:13px;height:13px}.props-edit-toggle:has(input:checked){color:var(--accent)}.props-source-file{padding:6px 12px;font-size:11px;color:var(--accent-dark);background:var(--accent-light);border-bottom:1px solid var(--border);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.prop-readonly-badge{margin-left:6px;font-size:9px;font-weight:500;color:#9ca3af;background:#f3f4f6;border:1px solid var(--border);border-radius:3px;padding:1px 4px;text-transform:none;letter-spacing:0;vertical-align:middle}.prop-value-input{flex:1;height:22px;border:none;border-bottom:1px solid #93c5fd;background:#eff6ff;font-family:SF Mono,Fira Code,monospace;font-size:10.5px;color:#111827;outline:none;padding:0 2px;border-radius:2px 2px 0 0;transition:border-color .15s,background .15s}.prop-value-input:focus{border-bottom-color:var(--accent);background:#dbeafe}.props-body{flex:1;overflow-y:auto;padding:4px 0}.prop-empty{padding:20px 14px;font-size:12px;color:#9ca3af;text-align:center}.prop-group{margin-bottom:4px}.prop-group-title{padding:6px 14px;font-size:11px;font-weight:700;color:var(--props-section-color);background:#f0f4f8;border-top:1px solid var(--border);border-bottom:1px solid var(--border);text-transform:uppercase;letter-spacing:.3px}.prop-row{display:flex;align-items:baseline;padding:0 14px;height:28px;border-bottom:1px solid #f3f4f6;font-size:11px;gap:8px}.prop-row:hover{background:#f0f4f8}.prop-name{color:#6b7280;width:110px;flex-shrink:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:28px}.prop-value{flex:1;color:#111827;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:28px;font-family:SF Mono,Fira Code,monospace;font-size:10.5px}.schedule-table-wrap{overflow:auto;max-height:400px;border:1px solid var(--border);border-radius:4px;margin-top:8px}.schedule-table{width:100%;border-collapse:collapse;font-size:11px}.schedule-table th{padding:5px 8px;background:#f3f4f6;border-bottom:1px solid var(--border);text-align:left;white-space:nowrap;font-size:11px;color:var(--table-header-color)}.schedule-table td{padding:4px 8px;border-bottom:1px solid #f9fafb;white-space:nowrap}.schedule-table tr:hover td{background:var(--row-hover)}.schedule-export-btn{margin-top:6px;padding:5px 10px;font-size:11px;background:var(--accent-light);color:var(--accent);border:1px solid #bfdbfe;border-radius:5px}.schedule-export-btn:hover{background:#dbeafe}.schedule-generate-btn{padding:5px 10px;font-size:11px;background:var(--accent);color:#fff;border:none;border-radius:5px}.schedule-generate-btn:hover{background:var(--accent-dark)}.schedule-status{font-size:11px;color:#9ca3af;margin-top:4px}.panel-item-edit{visibility:hidden;padding:2px 5px;color:#6b7280;background:transparent;border:none;font-size:13px;border-radius:3px;cursor:pointer;line-height:1}.panel-item:hover .panel-item-edit{visibility:visible}.panel-item-edit:hover{color:var(--accent);background:var(--accent-light)}.schedule-view-btn{padding:3px 9px;font-size:11px;color:var(--accent);background:var(--accent-light);border:1px solid #bfdbfe;border-radius:4px;cursor:pointer;transition:background .15s}.schedule-view-btn:hover{background:#dbeafe}.pivot-indicator{position:absolute;width:12px;height:12px;border-radius:50%;background:#0070f3d9;border:2px solid #fff;box-shadow:0 0 8px #0070f38c;transform:translate(-50%,-50%);pointer-events:none;z-index:20;animation:pivot-fade 1.5s ease-out forwards}@keyframes pivot-fade{0%{opacity:1;transform:translate(-50%,-50%) scale(1.3)}25%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-50%) scale(.3)}}.viewcube-wrap{position:absolute;top:16px;right:16px;z-index:15;width:72px;height:72px;perspective:240px;perspective-origin:center center}.viewcube-inner{width:60px;height:60px;margin:6px;position:relative;transform-style:preserve-3d;transition:none}.viewcube-face{position:absolute;width:60px;height:60px;border:1px solid rgba(80,110,140,.35);background:#dce8f5b8;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:700;color:#374151;letter-spacing:.6px;text-transform:uppercase;-webkit-user-select:none;user-select:none;cursor:pointer;transition:background .15s,color .15s}.viewcube-face:hover{background:#0070f338;color:#0056c7;border-color:#0070f366}.viewcube-face.front{transform:rotateY(0) translateZ(30px)}.viewcube-face.back{transform:rotateY(180deg) translateZ(30px)}.viewcube-face.left{transform:rotateY(-90deg) translateZ(30px)}.viewcube-face.right{transform:rotateY(90deg) translateZ(30px)}.viewcube-face.top{transform:rotateX(90deg) translateZ(30px)}.viewcube-face.bottom{transform:rotateX(-90deg) translateZ(30px)}.viewcube-face.top{background:#c8dcf0d9}:root{--header-bg: #1c2b3a;--header-height: 48px;--header-text: #ffffff;--accent: #0070f3;--accent-dark: #0056c7;--accent-light: #e8f0fe;--sidebar-width: 220px;--border: #e5e7eb;--bg-page: #f3f4f6;--row-height: 36px;--table-header-color: #5f6368;--table-header-size: 12px;--row-hover: #f8faff;--file-link: #1a73e8;--viewer-bg: #ffffff;--toolbar-bg: rgba(255, 255, 255, .92);--props-bg: #fafafa;--props-section-color: #374151}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px;color:#111827;background:var(--bg-page)}@keyframes spin{to{transform:rotate(360deg)}}button{cursor:pointer;font-family:inherit}input,select{font-family:inherit;font-size:13px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#9ca3af}
