:root{--color-accent: #3b82f6;--color-accent-hover: #2563eb;--color-accent-muted: rgba(59, 130, 246, .15);--color-accent-border: rgba(59, 130, 246, .35);--color-bg-0: #090b12;--color-bg-1: #0f1117;--color-bg-2: #151821;--color-bg-3: #1c1f2e;--color-bg-4: #252839;--color-bg-hover: #2d3048;--color-bg-active: #363b5e;--color-text-1: #f1f5f9;--color-text-2: #cbd5e1;--color-text-3: #94a3b8;--color-text-4: #64748b;--color-text-disabled: #475569;--color-border: #1e2236;--color-border-2: #2a2f4a;--color-border-strong: #3d4266;--color-success: #22c55e;--color-warning: #f59e0b;--color-error: #ef4444;--color-info: #06b6d4;--color-success-muted: rgba(34, 197, 94, .15);--color-warning-muted: rgba(245, 158, 11, .15);--color-error-muted: rgba(239, 68, 68, .15);--color-info-muted: rgba(6, 182, 212, .15);--color-status-open: #ef4444;--color-status-in-progress: #f59e0b;--color-status-resolved: #22c55e;--color-status-closed: #64748b;--color-priority-critical: #dc2626;--color-priority-high: #ef4444;--color-priority-medium: #f59e0b;--color-priority-low: #3b82f6;--header-height: 48px;--statusbar-height: 22px;--sidebar-min: 200px;--sidebar-default-left: 280px;--sidebar-default-right: 320px;--bottom-panel-height: 220px;--tab-bar-height: 36px;--tool-panel-width: 40px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--font-sans: -apple-system, BlinkMacSystemFont, "Inter", "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", "Cascadia Code", "Consolas", monospace;--fs-xs: 10px;--fs-sm: 11px;--fs-base: 12px;--fs-md: 13px;--fs-lg: 14px;--fs-xl: 16px;--fs-2xl: 18px;--fs-3xl: 22px;--lh-tight: 1.3;--lh-base: 1.5;--fw-normal: 400;--fw-medium: 500;--fw-semibold: 600;--fw-bold: 700;--r-sm: 3px;--r-base: 5px;--r-md: 7px;--r-lg: 10px;--r-full: 9999px;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .4);--shadow-md: 0 4px 12px rgba(0, 0, 0, .5);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .6);--shadow-panel: 2px 0 8px rgba(0, 0, 0, .4);--t-fast: .1s ease;--t-base: .2s ease;--t-slow: .3s ease;--z-base: 1;--z-panel: 10;--z-overlay: 50;--z-modal: 100;--z-tooltip: 200;--z-notification: 300}[data-theme=light]{--color-bg-0: #e8ecf0;--color-bg-1: #f0f2f5;--color-bg-2: #f8f9fa;--color-bg-3: #ffffff;--color-bg-4: #f0f2f5;--color-bg-hover: #e2e6ea;--color-bg-active: #d1d8e0;--color-text-1: #1e2028;--color-text-2: #374151;--color-text-3: #6b7280;--color-text-4: #9ca3af;--color-text-disabled: #d1d5db;--color-border: #e5e7eb;--color-border-2: #d1d5db;--color-border-strong: #9ca3af;--shadow-panel: 2px 0 8px rgba(0, 0, 0, .1)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;overflow:hidden;font-family:var(--font-sans);font-size:var(--fs-base);color:var(--color-text-1);background:var(--color-bg-1);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#app{height:100%;display:flex;flex-direction:column;overflow:hidden}ul,ol{list-style:none}a{color:inherit;text-decoration:none}button{font-family:inherit;font-size:inherit;cursor:pointer;border:none;background:none;color:inherit}input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}svg{display:block}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-border-2);border-radius:var(--r-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-border-strong)}::selection{background:var(--color-accent-muted);color:var(--color-text-1)}[hidden]{display:none!important}.app-layout{height:100%;overflow:hidden}.app-header{display:flex;align-items:center;gap:var(--sp-3);padding:0 var(--sp-3);background:var(--color-bg-2);border-bottom:1px solid var(--color-border);height:var(--header-height);z-index:var(--z-panel);flex-shrink:0;user-select:none}.header-left{display:flex;align-items:center;gap:var(--sp-2);min-width:200px}.header-logo-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--r-base);background:none;cursor:pointer;transition:background var(--t-fast)}.header-logo-btn:hover{background:var(--color-bg-hover)}.header-separator{width:1px;height:20px;background:var(--color-border);margin:0 var(--sp-1)}.header-project{display:flex;align-items:center;gap:var(--sp-2)}.header-project-name{font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--color-text-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}.header-nav{display:flex;align-items:center;gap:var(--sp-1);flex:1;justify-content:center}.header-nav-btn{display:flex;align-items:center;gap:5px;padding:5px var(--sp-3);border-radius:var(--r-base);color:var(--color-text-3);font-size:var(--fs-base);font-weight:var(--fw-medium);transition:background var(--t-fast),color var(--t-fast);cursor:pointer;height:30px}.header-nav-btn:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.header-nav-btn.active{background:var(--color-accent-muted);color:var(--color-accent)}.header-right{display:flex;align-items:center;gap:var(--sp-2);margin-left:auto}.header-icon-btn{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:var(--r-base);color:var(--color-text-3);cursor:pointer;transition:background var(--t-fast),color var(--t-fast)}.header-icon-btn:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.header-icon-btn.active{background:var(--color-accent-muted);color:var(--color-accent)}.header-dropdown-item{display:block;width:100%;padding:8px 14px;text-align:left;font-size:var(--fs-base);color:var(--color-text-2);background:none;border:none;cursor:pointer;white-space:nowrap}.header-dropdown-item:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.header-user{display:flex;align-items:center;gap:var(--sp-2);margin-left:var(--sp-2)}.user-avatar{width:28px;height:28px;border-radius:50%;background:var(--color-accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:var(--fs-sm);font-weight:var(--fw-bold);cursor:pointer;flex-shrink:0}.user-name{font-size:var(--fs-base);color:var(--color-text-2);white-space:nowrap}.app-panel{background:var(--color-bg-2);display:flex;flex-direction:column;overflow:hidden;position:relative}.app-panel--left,.app-panel--right{border-right:1px solid var(--color-border)}.app-panel--right{border-left:1px solid var(--color-border);border-right:none}.app-panel--bottom{border-top:1px solid var(--color-border)}.tab-bar{display:flex;flex-shrink:0;background:var(--color-bg-1);border-bottom:1px solid var(--color-border);height:var(--tab-bar-height);overflow-x:auto;overflow-y:hidden}.tab-bar::-webkit-scrollbar{height:0}.tab-btn{display:flex;align-items:center;gap:5px;padding:0 var(--sp-3);font-size:var(--fs-base);font-weight:var(--fw-medium);color:var(--color-text-3);border-bottom:2px solid transparent;white-space:nowrap;cursor:pointer;height:100%;transition:color var(--t-fast),border-color var(--t-fast),background var(--t-fast);flex-shrink:0}.tab-btn:hover{color:var(--color-text-1);background:var(--color-bg-hover)}.tab-btn--active{color:var(--color-accent);border-bottom-color:var(--color-accent);background:var(--color-bg-2)}.tab-label{font-size:var(--fs-base)}.tab-content-container{flex:1;overflow:hidden;position:relative}.tab-content{display:none;height:100%;overflow-y:auto;overflow-x:hidden}.tab-content--active{display:flex;flex-direction:column}.app-statusbar{display:flex;align-items:center;justify-content:space-between;padding:0 var(--sp-3);background:var(--color-bg-1);border-top:1px solid var(--color-border);height:var(--statusbar-height);flex-shrink:0}.statusbar-msg{font-size:var(--fs-xs);color:var(--color-text-3)}.statusbar-right{display:flex;align-items:center;gap:var(--sp-3);font-size:var(--fs-xs)}.statusbar-coords{font-family:var(--font-mono);font-size:var(--fs-xs)}.statusbar-sep{width:1px;height:10px;background:var(--color-border)}.app-viewer-area{background:var(--color-bg-0);position:relative}.viewer-toolbar{position:absolute;top:8px;left:8px;display:flex;flex-direction:column;gap:2px;background:var(--color-bg-3);border:1px solid var(--color-border);border-radius:var(--r-md);padding:4px;z-index:10;box-shadow:var(--shadow-md)}.viewer-toolbar-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--r-base);color:var(--color-text-3);cursor:pointer;transition:background var(--t-fast),color var(--t-fast)}.viewer-toolbar-btn:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.viewer-toolbar-btn.active{background:var(--color-accent-muted);color:var(--color-accent)}.viewer-toolbar-sep{height:1px;background:var(--color-border);margin:2px 0}.viewer-overlay{position:absolute;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:20;border-radius:0}.drop-zone{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);color:var(--color-text-2);border:2px dashed var(--color-accent);border-radius:var(--r-lg);padding:var(--sp-6) 40px}.drop-zone p{font-size:var(--fs-lg)}#nav-cube-canvas{border:1px solid var(--color-border-2)!important}.annotation-marker{width:22px;height:22px;border-radius:50%;background:var(--color-accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;border:2px solid #fff;cursor:pointer;box-shadow:0 2px 6px #0006}.annotation-label{background:var(--color-bg-3);border:1px solid var(--color-border);padding:6px 10px;border-radius:var(--r-base);font-size:var(--fs-sm);box-shadow:var(--shadow-md);white-space:nowrap;color:var(--color-text-1)}.panel-section{padding:var(--sp-3);border-bottom:1px solid var(--color-border);flex-shrink:0}.panel-section--flat{padding:var(--sp-2) var(--sp-3)}.panel-toolbar{display:flex;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border);flex-shrink:0}.search-bar{display:flex;align-items:center;gap:var(--sp-2);background:var(--color-bg-3);border:1px solid var(--color-border);border-radius:var(--r-base);padding:0 var(--sp-2);height:28px}.search-icon{color:var(--color-text-4);flex-shrink:0}.search-input{flex:1;background:none;border:none;outline:none;font-size:var(--fs-base);color:var(--color-text-1)}.search-input::placeholder{color:var(--color-text-4)}.tree-container{flex:1;overflow-y:auto;overflow-x:hidden}.tree-toolbar{display:flex;gap:2px;align-items:center}.tree-model{margin-bottom:2px}.tree-model-header{display:flex;align-items:center;gap:5px;padding:6px var(--sp-3);font-size:var(--fs-base);font-weight:var(--fw-semibold);color:var(--color-text-1);cursor:pointer;border-bottom:1px solid var(--color-border)}.tree-model-header:hover{background:var(--color-bg-hover)}.tree-model-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree-model-actions{display:flex;gap:2px;opacity:0;transition:opacity var(--t-fast)}.tree-model-header:hover .tree-model-actions{opacity:1}.tree-children.tree-node--collapsed{display:none}.tree-loading{padding:var(--sp-3);color:var(--color-text-4);font-size:var(--fs-sm)}.tree-node{display:flex;align-items:center;gap:4px;padding:4px var(--sp-2) 4px 8px;font-size:var(--fs-base);color:var(--color-text-2);cursor:pointer;border-radius:0;min-height:24px}.tree-node:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.tree-node.selected{background:var(--color-accent-muted);color:var(--color-accent)}.tree-toggle{display:flex;align-items:center;justify-content:center;width:14px;height:14px;flex-shrink:0;color:var(--color-text-4);transition:transform var(--t-fast)}.tree-toggle--leaf{visibility:hidden}.tree-node--collapsed>.tree-toggle{transform:rotate(-90deg)}.tree-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-sm)}.tree-vis-btn{margin-left:auto;opacity:0;transition:opacity var(--t-fast)}.tree-node:hover .tree-vis-btn,.tree-model-header:hover .tree-vis-btn{opacity:1}.tree-vis-btn.muted{opacity:1;color:var(--color-text-4)}.props-object-header{padding:var(--sp-3);border-bottom:1px solid var(--color-border);flex-shrink:0}.props-type-chip{display:inline-block;padding:2px 8px;border-radius:var(--r-full);background:var(--color-accent-muted);color:var(--color-accent);font-size:var(--fs-xs);font-weight:var(--fw-semibold);margin-bottom:4px}.props-name{font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--color-text-1)}.props-id{font-size:var(--fs-xs);margin-top:2px;word-break:break-all}.props-actions{display:flex;gap:var(--sp-1);flex-wrap:wrap;padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border);flex-shrink:0}.props-body{flex:1;overflow-y:auto}.props-section-label{padding:6px var(--sp-3) 4px;font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--color-text-4);text-transform:uppercase;letter-spacing:.05em;background:var(--color-bg-1);border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:1}.pset-group{border-bottom:1px solid var(--color-border)}.pset-header{display:flex;align-items:center;gap:var(--sp-2);padding:6px var(--sp-3);cursor:pointer;font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--color-text-2);background:var(--color-bg-1)}.pset-header:hover{background:var(--color-bg-hover)}.pset-caret{transition:transform var(--t-fast);flex-shrink:0}.pset-header--open .pset-caret{transform:rotate(0)}.pset-body--collapsed{display:none}.prop-row{display:grid;grid-template-columns:1fr 1fr;padding:4px var(--sp-3) 4px var(--sp-5);gap:var(--sp-2);border-bottom:1px solid var(--color-border);font-size:var(--fs-sm)}.prop-row:hover{background:var(--color-bg-hover)}.prop-name{color:var(--color-text-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.prop-value{color:var(--color-text-1);text-align:right;word-break:break-all}.layer-view-tabs{display:flex;gap:2px}.layer-tab{flex:1;padding:4px 8px;border-radius:var(--r-base);font-size:var(--fs-sm);color:var(--color-text-3);cursor:pointer;transition:background var(--t-fast),color var(--t-fast);text-align:center}.layer-tab:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.layer-tab.active{background:var(--color-accent-muted);color:var(--color-accent)}.layer-list{flex:1;overflow-y:auto}.layer-row{display:flex;align-items:center;gap:var(--sp-2);padding:5px var(--sp-3);border-bottom:1px solid var(--color-border);font-size:var(--fs-sm)}.layer-row:hover{background:var(--color-bg-hover)}.layer-row--child{padding-left:28px}.disc-row{display:flex;align-items:center;gap:var(--sp-2);padding:6px var(--sp-3);border-bottom:1px solid var(--color-border);font-size:var(--fs-base);font-weight:var(--fw-semibold);background:var(--color-bg-1)}.layer-color-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.layer-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layer-controls{display:flex;align-items:center;gap:4px;opacity:0;transition:opacity var(--t-fast)}.layer-row:hover .layer-controls{opacity:1}.opacity-slider{width:56px;height:3px;cursor:pointer;accent-color:var(--color-accent)}.opacity-val{font-size:var(--fs-xs);color:var(--color-text-4);min-width:28px;text-align:right}.issues-toolbar{display:flex;align-items:flex-start;gap:var(--sp-2);flex-direction:column;padding:var(--sp-3);border-bottom:1px solid var(--color-border);flex-shrink:0}.issue-filter-row{display:flex;gap:var(--sp-1);flex-wrap:wrap;width:100%}.issues-stats{display:flex;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border);flex-shrink:0}.issue-list{flex:1;overflow-y:auto}.issues-footer{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-2) var(--sp-3);border-top:1px solid var(--color-border);flex-shrink:0;font-size:var(--fs-sm)}.issue-card{padding:var(--sp-3);border-bottom:1px solid var(--color-border);cursor:pointer;transition:background var(--t-fast)}.issue-card:hover{background:var(--color-bg-hover)}.issue-card--selected{background:var(--color-accent-muted)!important}.issue-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.issue-id{font-size:var(--fs-xs);font-family:var(--font-mono)}.issue-title{font-size:var(--fs-base);font-weight:var(--fw-medium);color:var(--color-text-1);margin-bottom:4px;line-height:1.4}.issue-meta{display:flex;align-items:center;gap:5px;font-size:var(--fs-xs);flex-wrap:wrap}.issue-priority-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.issue-date{font-size:var(--fs-xs);color:var(--color-text-4);margin-top:3px}.issue-detail-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-3)}.issue-detail-actions{display:flex;gap:var(--sp-1)}.issue-detail-footer{display:flex;align-items:center;justify-content:space-between;margin-top:var(--sp-4);padding-top:var(--sp-3);border-top:1px solid var(--color-border)}.comments-section{margin-top:var(--sp-4)}.comment{padding:var(--sp-2) 0;border-bottom:1px solid var(--color-border)}.comment-header{display:flex;gap:var(--sp-2);align-items:center;margin-bottom:3px}.comment-author{font-size:var(--fs-sm);font-weight:var(--fw-semibold)}.comment-date{font-size:var(--fs-xs)}.comment-text{font-size:var(--fs-sm);color:var(--color-text-2)}.comment-input-row{display:flex;flex-direction:column;gap:var(--sp-2);margin-top:var(--sp-2)}.comment-list{max-height:200px;overflow-y:auto}.docs-toolbar{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border);flex-shrink:0}.docs-actions{display:flex;gap:var(--sp-1);align-items:center;margin-left:auto}.docs-stats{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border);font-size:var(--fs-xs);flex-shrink:0}.docs-content{flex:1;overflow-y:auto;overflow-x:hidden}.folder-header{display:flex;align-items:center;gap:5px;padding:5px var(--sp-3);cursor:pointer;font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--color-text-2);border-bottom:1px solid var(--color-border);background:var(--color-bg-1)}.folder-header:hover{background:var(--color-bg-hover)}.folder--collapsed .folder-children{display:none}.doc-row{display:flex;align-items:center;gap:var(--sp-2);padding:5px var(--sp-3) 5px 28px;border-bottom:1px solid var(--color-border);font-size:var(--fs-sm);cursor:pointer;min-height:30px}.doc-row:hover{background:var(--color-bg-hover)}.doc-row.selected{background:var(--color-accent-muted)}.doc-row--flat{display:grid;grid-template-columns:2fr .5fr .8fr .8fr .8fr auto;padding-left:var(--sp-3)}.doc-name{display:flex;align-items:center;gap:6px;flex:1;overflow:hidden}.doc-name>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.doc-meta{font-size:var(--fs-xs);color:var(--color-text-4);white-space:nowrap}.doc-row-actions{display:flex;gap:2px;opacity:0;transition:opacity var(--t-fast);margin-left:auto}.doc-row:hover .doc-row-actions{opacity:1}.doc-list-header{display:grid;grid-template-columns:2fr .5fr .8fr .8fr .8fr auto;padding:var(--sp-2) var(--sp-3);font-size:var(--fs-xs);color:var(--color-text-4);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--color-border);background:var(--color-bg-1);position:sticky;top:0;z-index:1}.file-ext{display:inline-flex;align-items:center;justify-content:center;width:28px;height:18px;border-radius:3px;font-size:9px;font-weight:var(--fw-bold);background:var(--color-bg-4);color:var(--color-text-3);flex-shrink:0}.file-ext--ifc{background:#1e3a5f;color:#60a5fa}.file-ext--xkt{background:#1a2e1a;color:#4ade80}.file-ext--pdf{background:#3b1a1a;color:#f87171}.file-ext--dwg{background:#2a1f0a;color:#fbbf24}.file-ext--gltf{background:#1a1a35;color:#a78bfa}.file-info-grid{display:grid;grid-template-columns:1fr 1.5fr;gap:var(--sp-1)}.file-info-row{display:contents}.file-info-row>span:first-child{color:var(--color-text-3);font-size:var(--fs-sm);padding:4px 0}.file-info-row>span:last-child{font-size:var(--fs-sm);padding:4px 0}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--sp-3);padding:var(--sp-3);overflow-y:auto;flex:1}.dash-card{background:var(--color-bg-3);border:1px solid var(--color-border);border-radius:var(--r-md);overflow:hidden;display:flex;flex-direction:column}.dash-card--wide{grid-column:span 2}.dash-card-header{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border);font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--color-text-2);background:var(--color-bg-1)}.dash-card-body{padding:var(--sp-3);flex:1}.kpi-row{display:flex;gap:var(--sp-3)}.kpi{text-align:center;flex:1}.kpi-value{font-size:var(--fs-2xl);font-weight:var(--fw-bold);color:var(--color-text-1)}.kpi-label{font-size:var(--fs-xs);color:var(--color-text-4);margin-top:2px}.kpi--error .kpi-value{color:var(--color-error)}.kpi--warning .kpi-value{color:var(--color-warning)}.kpi--success .kpi-value{color:var(--color-success)}.kpi--muted .kpi-value{color:var(--color-text-4)}.progress-list{display:flex;flex-direction:column;gap:var(--sp-2)}.progress-item{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-sm)}.progress-item>span:first-child{min-width:70px;color:var(--color-text-3)}.progress-item>span:last-child{min-width:35px;text-align:right;color:var(--color-text-3);font-size:var(--fs-xs)}.progress-bar{flex:1;height:6px;border-radius:var(--r-full);background:var(--color-bg-4);overflow:hidden}.progress-fill{height:100%;border-radius:var(--r-full);transition:width .5s ease}.progress-fill--success{background:var(--color-success)}.progress-fill--info{background:var(--color-info)}.progress-fill--warning{background:var(--color-warning)}.team-member{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-1) 0}.team-avatar{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:var(--fs-xs);font-weight:var(--fw-bold);color:#fff;flex-shrink:0}.team-name{font-size:var(--fs-sm);font-weight:var(--fw-medium)}.team-role{font-size:var(--fs-xs)}.model-stat-row{display:flex;align-items:center;gap:var(--sp-2);padding:3px 0;font-size:var(--fs-sm)}.model-stat-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.activity-mini-list{display:flex;flex-direction:column;gap:4px}.activity-mini{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-sm)}.activity-mini-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.activity-mini>span:last-child{margin-left:auto;white-space:nowrap}.activity-toolbar{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border);flex-shrink:0;font-size:var(--fs-sm)}.activity-list{flex:1;overflow-y:auto}.activity-entry{display:flex;align-items:center;gap:var(--sp-2);padding:4px var(--sp-3);border-bottom:1px solid var(--color-border);font-size:var(--fs-sm)}.activity-entry:hover{background:var(--color-bg-hover)}.activity-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.activity-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.activity-time{white-space:nowrap;font-size:var(--fs-xs)}.clashes-toolbar{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border);flex-shrink:0}.clashes-stats{display:flex;gap:var(--sp-2)}.clash-table{flex:1;overflow:auto}.clash-table-header{display:grid;grid-template-columns:70px 80px 80px 160px 200px 70px 80px;padding:var(--sp-2) var(--sp-3);font-size:var(--fs-xs);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-4);background:var(--color-bg-1);border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:1}.clash-row{display:grid;grid-template-columns:70px 80px 80px 160px 200px 70px 80px;padding:var(--sp-2) var(--sp-3);font-size:var(--fs-sm);border-bottom:1px solid var(--color-border);cursor:pointer;align-items:center}.clash-row:hover{background:var(--color-bg-hover)}.clash-row.selected{background:var(--color-accent-muted)}.severity-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px}.settings-layout{padding:var(--sp-3);overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:var(--sp-4)}.settings-section-title{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--color-text-3);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--sp-3);padding-bottom:var(--sp-2);border-bottom:1px solid var(--color-border)}.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--sp-3);margin-bottom:var(--sp-3)}.form-field{display:flex;flex-direction:column;gap:5px}.form-row{margin-bottom:var(--sp-3)}.form-label{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--color-text-3);text-transform:uppercase;letter-spacing:.04em}.input{height:30px;padding:0 var(--sp-2);background:var(--color-bg-3);border:1px solid var(--color-border);border-radius:var(--r-base);color:var(--color-text-1);font-size:var(--fs-base);outline:none;width:100%;transition:border-color var(--t-fast)}.input:focus{border-color:var(--color-accent)}.input::placeholder{color:var(--color-text-4)}.select{height:30px;padding:0 var(--sp-2);background:var(--color-bg-3);border:1px solid var(--color-border);border-radius:var(--r-base);color:var(--color-text-1);font-size:var(--fs-base);outline:none;cursor:pointer;width:100%;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%2364748b' stroke-width='1.3' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center}.select:focus{border-color:var(--color-accent);outline:none}.select--sm{height:26px;font-size:var(--fs-sm)}.textarea{padding:var(--sp-2);background:var(--color-bg-3);border:1px solid var(--color-border);border-radius:var(--r-base);color:var(--color-text-1);font-size:var(--fs-base);outline:none;resize:vertical;width:100%;font-family:inherit;transition:border-color var(--t-fast)}.textarea:focus{border-color:var(--color-accent)}.toggle-list{display:flex;flex-direction:column;gap:6px}.toggle-item{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);color:var(--color-text-2);cursor:pointer;user-select:none}.toggle-item input[type=checkbox]{accent-color:var(--color-accent);cursor:pointer}.slider{appearance:none;height:4px;border-radius:var(--r-full);background:var(--color-bg-4);outline:none;cursor:pointer;flex:1}.slider::-webkit-slider-thumb{appearance:none;width:14px;height:14px;border-radius:50%;background:var(--color-accent);cursor:pointer}.slider-row{display:flex;align-items:center;gap:var(--sp-2)}.slider-value{font-size:var(--fs-xs);color:var(--color-text-3);min-width:36px;text-align:right}.section-label{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--color-text-3);margin-bottom:var(--sp-2)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:6px 12px;border-radius:var(--r-base);font-size:var(--fs-base);font-weight:var(--fw-medium);cursor:pointer;transition:background var(--t-fast),color var(--t-fast),border-color var(--t-fast);white-space:nowrap;height:30px}.btn--primary{background:var(--color-accent);color:#fff;border:1px solid transparent}.btn--primary:hover{background:var(--color-accent-hover)}.btn--ghost{background:var(--color-bg-3);color:var(--color-text-2);border:1px solid var(--color-border)}.btn--ghost:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.btn--danger{background:var(--color-error);color:#fff;border:1px solid transparent}.btn--danger:hover{background:#dc2626}.btn--sm{height:26px;padding:4px 10px;font-size:var(--fs-sm)}.btn--xs{height:22px;padding:3px 8px;font-size:var(--fs-xs)}.btn-icon{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:var(--r-sm);color:var(--color-text-3);cursor:pointer;transition:background var(--t-fast),color var(--t-fast);flex-shrink:0}.btn-icon:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.btn-icon.active{background:var(--color-accent-muted);color:var(--color-accent)}.badge{display:inline-flex;align-items:center;padding:2px 7px;border-radius:var(--r-full);font-size:var(--fs-xs);font-weight:var(--fw-semibold);white-space:nowrap}.badge--error{background:var(--color-error-muted);color:var(--color-error)}.badge--warning{background:var(--color-warning-muted);color:var(--color-warning)}.badge--success{background:var(--color-success-muted);color:var(--color-success)}.badge--info{background:var(--color-info-muted);color:var(--color-info)}.badge--muted{background:var(--color-bg-4);color:var(--color-text-3)}.modal-overlay{position:fixed;inset:0;background:#000000a6;display:flex;align-items:center;justify-content:center;z-index:var(--z-modal);opacity:0;transition:opacity var(--t-base);padding:var(--sp-4)}.modal-overlay--visible{opacity:1}.modal{background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;max-height:90vh;transform:translateY(8px);transition:transform var(--t-base);min-width:340px}.modal-overlay--visible .modal{transform:translateY(0)}.modal--sm{width:360px}.modal--md{width:520px}.modal--lg{width:760px}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--color-border);flex-shrink:0}.modal-title{font-size:var(--fs-lg);font-weight:var(--fw-semibold)}.modal-close{width:26px;height:26px;color:var(--color-text-3)}.modal-body{padding:var(--sp-4);overflow-y:auto;flex:1}.ui-editor{display:flex;flex-direction:column;gap:var(--sp-3);min-height:400px}.ui-editor-tabs{display:flex;gap:2px;border-bottom:1px solid var(--color-border);padding-bottom:var(--sp-2)}.ui-editor-tab{padding:5px 14px;border-radius:var(--r-base);font-size:var(--fs-sm);cursor:pointer;color:var(--color-text-3);transition:all var(--t-fast)}.ui-editor-tab:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.ui-editor-tab.active{background:var(--color-accent-muted);color:var(--color-accent)}.ui-editor-panels{flex:1;min-height:300px;overflow-y:auto}.ui-editor-panel{display:none;flex-direction:column;gap:var(--sp-4)}.ui-editor-panel.active{display:flex}.ui-editor-footer{display:flex;justify-content:flex-end;gap:var(--sp-2);padding-top:var(--sp-3);border-top:1px solid var(--color-border)}.setting-group{display:flex;flex-direction:column;gap:var(--sp-2)}.setting-label{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--color-text-3);text-transform:uppercase;letter-spacing:.04em}.setting-row{display:flex;gap:var(--sp-2)}.theme-btn{display:flex;align-items:center;gap:var(--sp-2);padding:6px 14px;border-radius:var(--r-base);font-size:var(--fs-sm);cursor:pointer;background:var(--color-bg-3);border:1px solid var(--color-border);color:var(--color-text-2);transition:all var(--t-fast)}.theme-btn:hover{border-color:var(--color-accent);color:var(--color-text-1)}.theme-btn.active{border-color:var(--color-accent);background:var(--color-accent-muted);color:var(--color-accent)}.color-swatches{display:flex;gap:var(--sp-1);align-items:center;flex-wrap:wrap}.color-swatch{width:22px;height:22px;border-radius:50%;cursor:pointer;border:2px solid transparent;transition:border-color var(--t-fast)}.color-swatch:hover{border-color:#fff}.color-swatch.active{border-color:#fff;box-shadow:0 0 0 2px var(--color-accent)}.color-picker{width:28px;height:22px;border-radius:var(--r-sm);border:none;cursor:pointer;padding:0}#notif-mount{position:relative}.header-view-tabs{display:flex;align-items:center;gap:2px}.view-tab{display:flex;align-items:center;gap:5px;padding:4px 10px;border-radius:var(--r-base);border:1px solid transparent;background:none;color:var(--color-text-3);font-size:var(--fs-sm);font-weight:var(--fw-medium);cursor:pointer;transition:color var(--t-fast),background var(--t-fast),border-color var(--t-fast);white-space:nowrap}.view-tab:hover{color:var(--color-text-1);background:var(--color-bg-3)}.view-tab--active{color:var(--color-accent);background:color-mix(in srgb,var(--color-accent) 12%,transparent);border-color:color-mix(in srgb,var(--color-accent) 30%,transparent)}.docs-browser{display:flex;flex-direction:column;height:100%;overflow:hidden}.docs-browser-toolbar{display:flex;align-items:center;gap:var(--sp-3);padding:12px 20px;border-bottom:1px solid var(--color-border);background:var(--color-bg-2);flex-shrink:0}.docs-browser-title{font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--color-text-1)}.docs-browser-count{font-size:var(--fs-sm);color:var(--color-text-4);padding:1px 7px;background:var(--color-bg-3);border-radius:99px}.docs-browser-search{font-size:var(--fs-sm)!important}.docs-browser-table-wrap{flex:1;overflow:auto;padding:0 8px 16px}.docs-table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}.docs-table thead th{position:sticky;top:0;background:var(--color-bg-1);padding:10px 8px 8px;text-align:left;font-weight:var(--fw-medium);color:var(--color-text-3);font-size:11px;text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--color-border);z-index:1}.docs-group-row td{padding:0}.docs-group-toggle{width:100%;display:flex;align-items:center;gap:6px;padding:6px 8px;background:var(--color-bg-2);border:none;border-bottom:1px solid var(--color-border);cursor:pointer;font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--color-text-2);text-align:left;margin-top:4px}.docs-group-toggle:hover{background:var(--color-bg-3)}.docs-group-count{margin-left:auto;font-size:10px;font-weight:400;color:var(--color-text-4);background:var(--color-bg-3);padding:1px 6px;border-radius:99px}.docs-row{transition:background var(--t-fast)}.docs-row:hover{background:var(--color-bg-2)}.docs-row td{padding:7px 8px;border-bottom:1px solid color-mix(in srgb,var(--color-border) 50%,transparent);vertical-align:middle}.docs-td-icon{text-align:center;width:32px}.docs-td-name{max-width:320px}.docs-name{font-weight:var(--fw-medium);color:var(--color-text-1)}.docs-desc{font-size:11px;color:var(--color-text-4);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:300px}.docs-td-date{color:var(--color-text-3);font-size:11px;white-space:nowrap}.docs-td-obj{max-width:200px}.docs-obj-link{display:inline-flex;align-items:center;gap:4px;background:none;border:none;cursor:pointer;color:var(--color-accent);font-size:11px;padding:1px 4px;border-radius:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}.docs-obj-link:hover{background:color-mix(in srgb,var(--color-accent) 12%,transparent)}.docs-type-badge{display:inline-block;font-size:10px;padding:1px 6px;border-radius:99px;border:1px solid;white-space:nowrap}.docs-td-actions{text-align:center}.docs-more-btn{opacity:0}.docs-row:hover .docs-more-btn{opacity:1}.context-menu{position:fixed;background:var(--color-bg-3);border:1px solid var(--color-border);border-radius:var(--r-md);box-shadow:var(--shadow-lg);padding:4px;min-width:180px;z-index:var(--z-modal);opacity:0;transform:scale(.97);transform-origin:top left;transition:opacity var(--t-fast),transform var(--t-fast)}.context-menu--visible{opacity:1;transform:scale(1)}.context-menu-item{display:flex;align-items:center;gap:var(--sp-2);width:100%;padding:6px 10px;border-radius:var(--r-base);font-size:var(--fs-sm);color:var(--color-text-2);cursor:pointer;text-align:left;transition:background var(--t-fast),color var(--t-fast)}.context-menu-item:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.context-menu-item:disabled{color:var(--color-text-disabled);cursor:default}.context-menu-icon{width:16px;flex-shrink:0}.context-menu-shortcut{margin-left:auto;font-size:var(--fs-xs);color:var(--color-text-4)}.context-menu-separator{height:1px;background:var(--color-border);margin:3px 0}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-2);padding:var(--sp-6);text-align:center;color:var(--color-text-3);font-size:var(--fs-sm);flex:1}.empty-state p{max-width:180px;line-height:var(--lh-base)}.history-panel{display:flex;flex-direction:column;height:100%;overflow:hidden}.history-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border);gap:var(--sp-2);flex-shrink:0}.history-object-label{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--color-text-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.history-list{flex:1;overflow-y:auto;padding:var(--sp-2) 0}.history-empty{padding:var(--sp-4) var(--sp-3);color:var(--color-text-4);font-size:var(--fs-sm);text-align:center}.history-entry{display:flex;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border)}.history-entry:hover{background:var(--color-bg-hover)}.history-entry-icon{flex-shrink:0;color:var(--color-accent);margin-top:2px}.history-entry-body{flex:1;min-width:0}.history-entry-top{display:flex;align-items:baseline;gap:var(--sp-2);margin-bottom:2px}.history-entry-name{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--color-text-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.history-entry-type{font-size:10px;color:var(--color-text-4);background:var(--color-bg-3);padding:1px 5px;border-radius:var(--r-full);flex-shrink:0}.history-entry-desc{font-size:11px;color:var(--color-text-3);margin-bottom:4px;line-height:1.4;word-break:break-word}.history-entry-foot{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2)}.history-entry-date{font-size:10px;color:var(--color-text-4)}.history-entry-actions{display:flex;gap:2px}.history-delete-btn{color:var(--color-text-4)}.history-delete-btn:hover{color:var(--color-error)}.text-muted{color:var(--color-text-4)}.font-mono{font-family:var(--font-mono)}.text-error{color:var(--color-error)}.text-success{color:var(--color-success)}.text-warning{color:var(--color-warning)}[data-density=compact]{--tab-bar-height: 30px;--header-height: 40px;--fs-base: 11px}[data-density=spacious]{--tab-bar-height: 40px;--header-height: 56px;--fs-base: 13px;--sp-3: 14px;--sp-4: 18px}[data-theme=light] .app-viewer-area{background:#c8d4e0}[data-theme=light] .viewer-toolbar{background:#fff}[data-theme=light] .select option{background:#fff;color:#1e2028}.form-field{display:flex;flex-direction:column;gap:var(--sp-1)}.form-label{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--color-text-2)}.form-input{background:var(--color-bg-2);border:1px solid var(--color-border-2);border-radius:var(--r-base);color:var(--color-text-1);font-size:var(--fs-md);font-family:var(--font-sans);padding:8px 10px;outline:none;transition:border-color var(--t-fast)}.form-input:focus{border-color:var(--color-accent)}.form-input::placeholder{color:var(--color-text-4)}select.form-input option{background:var(--color-bg-3)}.btn-primary{background:var(--color-accent);color:#fff;border:none;border-radius:var(--r-base);font-size:var(--fs-md);font-weight:var(--fw-medium);padding:8px 16px;cursor:pointer;transition:background var(--t-fast)}.btn-primary:hover{background:var(--color-accent-hover)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{background:var(--color-bg-4);color:var(--color-text-2);border:1px solid var(--color-border-2);border-radius:var(--r-base);font-size:var(--fs-md);font-weight:var(--fw-medium);padding:8px 16px;cursor:pointer;transition:background var(--t-fast)}.btn-secondary:hover{background:var(--color-bg-hover)}.auth-screen{position:fixed;inset:0;background:var(--color-bg-0);display:flex;align-items:center;justify-content:center;z-index:9999}.auth-card{background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);padding:36px 40px;width:100%;max-width:400px}.auth-brand{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:28px}.auth-app-name{font-size:var(--fs-xl);font-weight:var(--fw-semibold);color:var(--color-text-1);margin:0;line-height:1.2}.auth-app-sub{font-size:var(--fs-sm);color:var(--color-text-3);margin:2px 0 0}.auth-tabs{display:flex;border-bottom:1px solid var(--color-border);margin-bottom:24px}.auth-tab{flex:1;background:none;border:none;border-bottom:2px solid transparent;color:var(--color-text-3);font-size:var(--fs-md);font-weight:var(--fw-medium);padding:8px 0;cursor:pointer;margin-bottom:-1px;transition:color var(--t-fast),border-color var(--t-fast)}.auth-tab:hover{color:var(--color-text-1)}.auth-tab--active{color:var(--color-accent);border-bottom-color:var(--color-accent)}.auth-form{display:flex;flex-direction:column;gap:var(--sp-4)}.auth-error{background:var(--color-error-muted);border:1px solid var(--color-error);border-radius:var(--r-base);color:var(--color-error);font-size:var(--fs-sm);padding:8px 10px}.auth-success{background:var(--color-success-muted);border:1px solid var(--color-success);border-radius:var(--r-base);color:var(--color-success);font-size:var(--fs-sm);padding:8px 10px}.auth-submit{background:var(--color-accent);color:#fff;border:none;border-radius:var(--r-base);font-size:var(--fs-md);font-weight:var(--fw-semibold);padding:10px;cursor:pointer;transition:background var(--t-fast);margin-top:var(--sp-1)}.auth-submit:hover{background:var(--color-accent-hover)}.auth-submit:disabled{opacity:.5;cursor:not-allowed}.projects-screen{position:fixed;inset:0;background:var(--color-bg-0);display:flex;flex-direction:column;z-index:9999;overflow:hidden}.projects-loading{flex:1;display:flex;align-items:center;justify-content:center;color:var(--color-text-3);font-size:var(--fs-md)}.ps-header{background:var(--color-bg-1);border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;padding:0 28px;height:52px;flex-shrink:0}.ps-brand{display:flex;align-items:center;gap:var(--sp-3)}.ps-brand-name{font-size:var(--fs-lg);font-weight:var(--fw-semibold);color:var(--color-text-1)}.ps-user{display:flex;align-items:center;gap:var(--sp-3)}.ps-avatar{width:28px;height:28px;border-radius:50%;background:var(--color-accent);color:#fff;font-size:var(--fs-sm);font-weight:var(--fw-semibold);display:flex;align-items:center;justify-content:center}.ps-email{font-size:var(--fs-sm);color:var(--color-text-3)}.ps-signout{background:none;border:1px solid var(--color-border-2);border-radius:var(--r-base);color:var(--color-text-3);font-size:var(--fs-sm);padding:4px 10px;cursor:pointer;transition:color var(--t-fast),border-color var(--t-fast)}.ps-signout:hover{color:var(--color-text-1);border-color:var(--color-border-strong)}.ps-body{flex:1;overflow-y:auto;padding:32px 40px;max-width:1200px;width:100%;margin:0 auto;box-sizing:border-box}.ps-title-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.ps-title{font-size:var(--fs-2xl);font-weight:var(--fw-semibold);color:var(--color-text-1);margin:0}.ps-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}.ps-card{background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:var(--r-md);padding:18px 20px;cursor:pointer;transition:border-color var(--t-base),box-shadow var(--t-base),transform var(--t-base);display:flex;flex-direction:column;gap:var(--sp-2)}.ps-card:hover{border-color:var(--color-accent-border);box-shadow:0 0 0 1px var(--color-accent-border),var(--shadow-md);transform:translateY(-1px)}.ps-card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-1)}.ps-card-role{font-size:var(--fs-xs);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:.05em}.ps-card-name{font-size:var(--fs-lg);font-weight:var(--fw-semibold);color:var(--color-text-1);margin:0;line-height:1.3}.ps-card-client,.ps-card-number{font-size:var(--fs-sm);color:var(--color-text-3);margin:0}.ps-card-foot{display:flex;align-items:center;justify-content:space-between;margin-top:auto;padding-top:var(--sp-2);border-top:1px solid var(--color-border)}.ps-card-phase{font-size:var(--fs-xs);font-weight:var(--fw-medium)}.ps-card-date{font-size:var(--fs-xs);color:var(--color-text-4)}.ps-empty{grid-column:1 / -1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 0;gap:var(--sp-2);color:var(--color-text-2);font-size:var(--fs-md)}.ps-empty .text-muted{color:var(--color-text-4);font-size:var(--fs-sm)}.ps-modal-backdrop{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:10001;backdrop-filter:blur(2px)}.ps-modal{background:var(--color-bg-2);border:1px solid var(--color-border-2);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);width:100%;max-width:520px;padding:28px 32px}.ps-modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.ps-modal-head h3{font-size:var(--fs-xl);font-weight:var(--fw-semibold);color:var(--color-text-1);margin:0}.ps-modal-close{background:none;border:none;color:var(--color-text-3);font-size:20px;cursor:pointer;line-height:1;padding:2px 6px;border-radius:var(--r-sm);transition:color var(--t-fast)}.ps-modal-close:hover{color:var(--color-text-1)}.ps-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:16px}.ps-form-span2{grid-column:1 / -1}.ps-modal-foot{display:flex;justify-content:flex-end;gap:var(--sp-3);margin-top:20px}
