: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;--color-doc-wip: #94a3b8;--color-doc-shared: #f59e0b;--color-doc-published: #22c55e;--color-doc-superseded: #ef4444;--color-phase-planned: #64748b;--color-phase-active: #f59e0b;--color-phase-done: #22c55e;--color-phase-demolished: #ef4444;--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;--mobile-tabbar-height: 52px;--icon-btn-size: 28px;--icon-btn-radius: var(--r-sm);--icon-btn-gap: 3px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "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)}[data-density=compact]{--header-height: 40px;--tab-bar-height: 30px;--fs-base: 11px;--fs-md: 12px;--sp-2: 6px;--sp-3: 10px}[data-density=spacious]{--header-height: 56px;--tab-bar-height: 42px;--fs-base: 13px;--fs-md: 14px;--sp-2: 10px;--sp-3: 14px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;height:100dvh;overflow:hidden}body{font-family:var(--font-sans);font-size:var(--fs-base);line-height:var(--lh-base);color:var(--color-text-1);background:var(--color-bg-0);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button{font-family:inherit;font-size:inherit;cursor:pointer;border:none;background:none;color:inherit}input,select,textarea{font-family:inherit;font-size:inherit}a{color:inherit;text-decoration:none}ul,ol{list-style:none}svg{display:block;flex-shrink:0}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-border-2);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--color-border-strong)}#app{width:100%;height:100%;display:flex;flex-direction:column}.app-layout{height:100%;display:grid;grid-template-rows:var(--header-height) 1fr var(--statusbar-height);overflow:hidden}.app-workspace{display:grid;grid-template-columns:var(--sidebar-default-left) 1fr var(--sidebar-default-right);grid-template-rows:1fr var(--bottom-panel-height);overflow:hidden;min-height:0}.app-workspace.no-left{grid-template-columns:0 1fr var(--sidebar-default-right)}.app-workspace.no-right{grid-template-columns:var(--sidebar-default-left) 1fr 0}.app-workspace.no-bottom{grid-template-rows:1fr 0}.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);flex-shrink:0}.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);flex-shrink:0;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{position:absolute;top:calc(100% + 6px);left:0;min-width:180px;background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:var(--r-base);box-shadow:0 8px 24px #0006;z-index:var(--z-modal);overflow:hidden}.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-dropdown-subitem{display:block;width:100%;padding:6px 14px 6px 26px;text-align:left;font-size:var(--fs-xs);color:var(--color-text-3);background:none;border:none;cursor:pointer;white-space:nowrap}.header-dropdown-subitem:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.header-dropdown-sep{height:1px;background:var(--color-border);margin:2px 0}.header-user-wrap{position:relative;margin-left:var(--sp-2)}.header-user{display:flex;align-items:center;gap:var(--sp-2);background:none;border:none;cursor:pointer;padding:0}.header-user:hover .user-name{color:var(--color-text-1)}.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);flex-shrink:0;pointer-events:none}.user-name{font-size:var(--fs-base);color:var(--color-text-2);white-space:nowrap}.user-dropdown{position:absolute;right:0;top:calc(100% + 6px);background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:var(--r-md);box-shadow:0 8px 24px #0000004d;min-width:220px;z-index:1000;overflow:hidden}.user-dd-profile{display:flex;align-items:center;gap:var(--sp-3);padding:14px 16px}.user-dd-avatar{width:36px;height:36px;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);flex-shrink:0}.user-dd-name{font-size:var(--fs-base);font-weight:var(--fw-bold);color:var(--color-text-1)}.user-dd-email{font-size:var(--fs-xs);color:var(--color-text-3);margin-top:1px}.user-dd-version{display:block;padding:5px 16px;font-size:var(--fs-xs);color:var(--color-text-4)}.header-dropdown-item--danger{color:#ef4444!important}.header-dropdown-item--danger:hover{background:#ef444414!important;color:#ef4444!important}.acct-profile-section{display:flex;align-items:center;gap:14px;padding:20px;border-bottom:1px solid var(--color-border)}.acct-avatar{width:48px;height:48px;border-radius:50%;background:var(--color-accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:var(--fw-bold);flex-shrink:0}.acct-name{font-size:var(--fs-md);font-weight:var(--fw-bold);color:var(--color-text-1)}.acct-email{font-size:var(--fs-sm);color:var(--color-text-3);margin-top:2px}.acct-role-section{padding:16px 20px;border-bottom:1px solid var(--color-border)}.acct-role-label{font-size:var(--fs-xs);color:var(--color-text-4);text-transform:uppercase;letter-spacing:.05em;margin-bottom:6px}.acct-role-badge{display:inline-block;padding:3px 10px;background:color-mix(in srgb,var(--color-accent) 15%,transparent);color:var(--color-accent);border-radius:20px;font-size:var(--fs-sm);font-weight:var(--fw-bold);margin-bottom:6px}.acct-role-desc{font-size:var(--fs-xs);color:var(--color-text-3)}.acct-perms-section{padding:16px 20px}.acct-perms-title{font-size:var(--fs-xs);color:var(--color-text-4);text-transform:uppercase;letter-spacing:.05em;margin-bottom:10px}.acct-perm-row{display:flex;align-items:center;gap:10px;padding:4px 0;font-size:var(--fs-sm)}.acct-perm-icon{width:16px;text-align:center;font-weight:700;flex-shrink:0}.acct-perm-granted .acct-perm-icon{color:#22c55e}.acct-perm-denied .acct-perm-icon{color:var(--color-text-4)}.acct-perm-granted .acct-perm-label{color:var(--color-text-2)}.acct-perm-denied .acct-perm-label{color:var(--color-text-4)}.app-panel{background:var(--color-bg-2);display:flex;flex-direction:column;overflow:hidden;position:relative;min-width:0}.app-panel--left{border-right:1px solid var(--color-border);grid-column:1;grid-row:1 / -1}.app-panel--right{border-left:1px solid var(--color-border);grid-column:3;grid-row:1 / -1}.app-panel--bottom{border-top:1px solid var(--color-border);grid-column:2;grid-row:2}.app-panel--left .panel-split-pane,.app-panel--right .panel-split-pane{flex-direction:row}.panel-pane-body{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.panel-resizer{position:absolute;z-index:20;background:transparent;transition:background var(--t-fast)}.panel-resizer:hover,.panel-resizer.dragging{background:var(--color-accent)}.panel-resizer--h{width:4px;top:0;bottom:0;right:-2px;cursor:col-resize}.panel-resizer--h-left{left:-2px;right:auto}.panel-resizer--v{height:4px;left:0;right:0;top:-2px;cursor:row-resize}.tab-bar{display:flex;align-items:center;flex-shrink:0;background:var(--color-bg-1);gap:var(--icon-btn-gap)}.tab-bar--horizontal{flex-direction:row;min-height:var(--tab-bar-height);padding:0 var(--sp-1);overflow-x:auto;overflow-y:hidden}.tab-bar--horizontal::-webkit-scrollbar{height:0}.tab-bar--vertical{flex-direction:column;width:var(--tab-bar-height);padding:var(--sp-1) 0;overflow-y:auto;overflow-x:hidden}.tab-bar--vertical::-webkit-scrollbar{width:0}.app-panel--left .tab-bar--vertical{border-right:1px solid var(--color-border)}.app-panel--right .tab-bar--vertical{border-left:1px solid var(--color-border)}.app-panel--bottom .tab-bar--horizontal{border-top:1px solid var(--color-border)}.tab-btn{display:flex;align-items:center;justify-content:center;position:relative;width:var(--icon-btn-size);height:var(--icon-btn-size);border-radius:var(--icon-btn-radius);font-size:var(--fs-base);font-weight:var(--fw-medium);color:var(--color-text-3);cursor:pointer;transition: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);background:var(--color-accent-muted)}.tab-btn--active:after{content:"";position:absolute;background:var(--color-accent);border-radius:var(--r-full)}.app-panel--left .tab-btn--active:after{top:5px;bottom:5px;right:2px;width:2px}.app-panel--right .tab-btn--active:after{top:5px;bottom:5px;left:2px;width:2px}.app-panel--bottom .tab-btn--active:after,.workspace-pane-tab-bar .tab-btn--active:after{left:5px;right:5px;bottom:2px;height:2px}.tab-bar--horizontal .tab-btn{flex-direction:column;gap:2px;width:auto;min-width:var(--icon-btn-size);height:auto;min-height:var(--icon-btn-size);padding:4px 8px}.tab-label{font-size:var(--fs-xs);font-weight:var(--fw-semibold);line-height:1;white-space:nowrap}.panel-active-title{display:flex;align-items:center;position:relative;flex-shrink:0;min-height:calc(var(--icon-btn-size) + 8px);padding:0 var(--sp-3) 0 calc(var(--sp-3) + 4px);border-bottom:1px solid var(--color-border);background:var(--color-bg-1);font-size:var(--fs-md);font-weight:var(--fw-bold);color:var(--color-text-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.panel-active-title:before{content:"";position:absolute;left:0;top:7px;bottom:7px;width:3px;border-radius:0 var(--r-full) var(--r-full) 0;background:var(--color-accent)}.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}.vp-capture{display:flex;align-items:center;gap:5px;padding:3px 9px;border:1px solid var(--color-accent);border-radius:var(--r-base);background:var(--color-accent-muted);color:var(--color-accent);font-size:var(--fs-xs);font-family:inherit;cursor:pointer;white-space:nowrap;transition:background var(--t-fast),color var(--t-fast)}.vp-capture:hover{background:var(--color-accent);color:#fff}.vp-share{display:flex;align-items:center;gap:5px;margin-right:var(--sp-2);padding:3px 9px;border:1px solid var(--color-border);border-radius:var(--r-base);background:var(--color-surface-2);color:var(--color-text-2);font-size:var(--fs-xs);font-family:inherit;cursor:pointer;white-space:nowrap;transition:border-color var(--t-fast),color var(--t-fast)}.vp-share:hover{border-color:var(--color-accent);color:var(--color-accent)}.vp-meetings{display:flex;flex-wrap:wrap;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border)}.vp-meeting-tile{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:128px;padding:6px 9px;border:1px solid var(--color-border);border-radius:var(--r-base);background:var(--color-surface-2);color:var(--color-text-2);font-family:inherit;text-align:left;cursor:pointer;transition:border-color var(--t-fast),background var(--t-fast)}.vp-meeting-tile:hover{background:var(--color-surface-hover)}.vp-meeting-tile.selected{border-color:var(--color-accent);color:var(--color-text-1)}.vp-meeting-tile.live{border-color:#f59e0b;box-shadow:0 0 0 1px #f59e0b inset}.vp-meeting-name{font-size:var(--fs-xs);font-weight:600;color:var(--color-text-1)}.vp-meeting-when,.vp-meeting-people{font-size:10px;color:var(--color-text-3)}.vp-meeting-tile.due{border-color:var(--color-text-4)}.vp-meeting-due,.vp-meeting-present{font-size:9px;color:var(--color-text-3)}.vp-meeting-present{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-text-2)}.vp-conn{margin-left:auto;margin-right:8px;font-size:9px;letter-spacing:.04em;color:var(--color-text-3)}.vp-conn.open{color:#22c55e}.vp-conn.closed{color:var(--color-danger, #ef4444)}.vp-meeting-live{font-size:9px;font-weight:700;letter-spacing:.08em;color:#f59e0b}.vp-compose{display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border);background:var(--color-surface-2)}.vp-compose-title,.vp-compose-date{padding:5px 7px;border:1px solid var(--color-border);border-radius:var(--r-base);background:var(--color-bg-3);color:var(--color-text-1);font-size:var(--fs-xs);font-family:inherit}.vp-compose-attendees{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}.vp-compose-label{font-size:var(--fs-xs);color:var(--color-text-3)}.vp-attendee{display:flex;align-items:center;gap:4px;font-size:var(--fs-xs);color:var(--color-text-2);cursor:pointer}.vp-compose-actions{display:flex;gap:var(--sp-2)}.vp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);overflow-y:auto}.vp-card{border:1px solid var(--color-border);border-radius:var(--r-base);overflow:hidden;background:var(--color-surface-2)}.vp-thumb{position:relative;display:block;width:100%;aspect-ratio:16 / 10;padding:0;border:none;background:var(--color-bg-3);cursor:pointer}.vp-thumb img{width:100%;height:100%;object-fit:cover;display:block}.vp-thumb-placeholder{display:flex;align-items:center;justify-content:center;height:100%;color:var(--color-text-4);font-size:var(--fs-sm)}.vp-badge{position:absolute;right:4px;bottom:4px;padding:1px 5px;border-radius:10px;background:#000000a6;color:#fff;font-size:10px;line-height:1.4}.vp-meta{display:flex;align-items:center;gap:2px;padding:3px 4px 3px 6px;border-top:1px solid var(--color-border)}.vp-name{flex:1;min-width:0;background:none;border:none;color:var(--color-text-1);font-size:var(--fs-xs);font-family:inherit;padding:2px;border-radius:3px}.vp-name:focus{outline:none;background:var(--color-bg-hover)}.vp-empty{padding:var(--sp-3);color:var(--color-text-4);font-size:var(--fs-sm)}.vp-error{display:inline-block;width:fit-content;max-width:calc(100% - 2 * var(--sp-3));margin:var(--sp-2) var(--sp-3);padding:5px 9px;border-radius:var(--r-base);background:#ef44441f;border:1px solid rgba(239,68,68,.4);color:var(--color-text-1);font-size:var(--fs-xs)}.mobile-toast{display:none;position:fixed;left:50%;transform:translate(-50%);bottom:calc(var(--mobile-tabbar-height, 56px) + env(safe-area-inset-bottom,0px) + 12px);z-index:3000;max-width:min(92vw,560px);padding:10px 14px;border-radius:8px;background:var(--color-surface-2);border:1px solid var(--color-border);box-shadow:0 6px 24px #00000073;color:var(--color-text-1);font-size:13px;line-height:1.35;text-align:center;cursor:pointer}.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);color:var(--color-text-4)}.statusbar-sep{width:1px;height:10px;background:var(--color-border)}.app-viewer-area{background:var(--color-bg-0);position:relative;overflow:hidden;grid-column:2;grid-row:1}#viewer-canvas{width:100%!important;height:100%!important}.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)}.tool-hud-row{position:absolute;top:8px;left:52px;z-index:10;display:flex;flex-direction:row;align-items:flex-start;gap:8px;pointer-events:none}.tool-hud-row>*{pointer-events:auto}.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);position:relative}.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-toolbar-tooltip{position:absolute;left:calc(100% + 8px);top:50%;transform:translateY(-50%);background:var(--color-bg-4);border:1px solid var(--color-border);color:var(--color-text-1);font-size:var(--fs-xs);padding:3px 7px;border-radius:var(--r-sm);white-space:nowrap;pointer-events:none;opacity:0;transition:opacity var(--t-fast);z-index:100}.viewer-toolbar-btn:hover .viewer-toolbar-tooltip{opacity:1}.viewer-hud-right{position:absolute;top:8px;right:8px;bottom:8px;z-index:10;display:flex;flex-direction:column;align-items:flex-end;pointer-events:none}.viewer-hud-right>*{pointer-events:auto}.viewer-hud-right-bottom{margin-top:auto;display:flex;flex-direction:column;align-items:flex-end;gap:10px}.viewer-import-btn{display:flex;align-items:center;gap:4px;font-size:var(--fs-sm);padding:5px 12px;border-radius:var(--r-base);background:var(--color-accent);color:#fff;border:none;cursor:pointer}.viewer-drop-overlay{position:absolute;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:20}.viewer-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}.viewer-drop-zone svg{color:var(--color-accent)}.viewer-drop-zone p{font-size:var(--fs-lg)}.viewer-drop-zone span{font-size:var(--fs-sm);color:var(--color-text-4)}.viewer-load-status{position:absolute;top:8px;right:110px;z-index:20;display:flex;align-items:center;gap:8px;background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:var(--r-base);padding:5px 10px;pointer-events:none}.viewer-load-spinner{width:16px;height:16px;flex-shrink:0;border:2px solid var(--color-bg-3);border-top-color:var(--color-accent);border-radius:50%;animation:vl-spin .75s linear infinite}@keyframes vl-spin{to{transform:rotate(360deg)}}.viewer-load-text{font-size:var(--fs-sm);color:var(--color-text-2);white-space:nowrap;max-width:220px;overflow:hidden;text-overflow:ellipsis}.tree-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}.tree-search{flex:1;background:var(--color-bg-3);border:1px solid var(--color-border-2);border-radius:var(--r-base);color:var(--color-text-1);font-size:var(--fs-sm);padding:4px 8px;outline:none}.tree-search:focus{border-color:var(--color-accent)}.tree-search::placeholder{color:var(--color-text-4)}.tree-icon-btn{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}.tree-icon-btn:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.nav-mode-toggle{display:flex;align-items:center;gap:2px;background:var(--color-bg-3);border:1px solid var(--color-border-2);border-radius:var(--r-sm);padding:2px;flex-shrink:0}.nav-mode-btn{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:3px;color:var(--color-text-3);cursor:pointer;transition:background var(--t-fast),color var(--t-fast)}.nav-mode-btn:hover{color:var(--color-text-1)}.nav-mode-btn.active{background:var(--color-accent);color:#fff}.tree-container{flex:1;overflow-y:auto;padding:var(--sp-2) 0}.tree-node{display:flex;align-items:center;min-height:24px;padding-right:var(--sp-2);border-radius:var(--r-sm);cursor:pointer;transition:background var(--t-fast);user-select:none;position:relative}.tree-node:hover{background:var(--color-bg-hover)}.tree-node.selected{background:var(--color-accent-muted)}.tree-node.selected .tree-node-name{color:var(--color-accent)}.tree-node.hidden-node .tree-node-name,.tree-node.pending-node .tree-node-name,.tree-node.pending-node .tree-node-icon{opacity:.45}.tree-node-pending-label{font-size:10px;color:var(--color-text-4);flex-shrink:0;margin-left:4px;font-style:italic}.tree-node-reload{color:var(--color-accent)}.tree-node-reload:hover{background:var(--color-accent-muted)}.tree-node-indent{flex-shrink:0;display:flex}.tree-node-toggle{width:16px;height:24px;display:flex;align-items:center;justify-content:center;color:var(--color-text-4);flex-shrink:0;transition:transform var(--t-fast)}.tree-node-toggle.open{transform:rotate(90deg)}.tree-node-icon{margin-right:4px;color:var(--color-text-3);flex-shrink:0}.tree-node-name{font-size:var(--fs-sm);color:var(--color-text-2);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree-node-count{font-size:var(--fs-xs);color:var(--color-text-4);flex-shrink:0;margin-left:4px}.tree-node-size{font-size:10px;color:var(--color-text-4);flex-shrink:0;margin-left:4px;white-space:nowrap}.nav-tree-header{padding:6px var(--sp-3) 2px;font-size:10px;font-weight:var(--fw-semibold);color:var(--color-text-4);text-transform:uppercase;letter-spacing:.06em}.nav-tree-header--toggle{display:flex;align-items:center;gap:3px;padding:5px var(--sp-2) 5px var(--sp-1);cursor:pointer;user-select:none;border-top:1px solid var(--color-border)}.nav-tree-header--toggle:hover{background:var(--color-bg-3)}.nav-custom-group{margin-top:var(--sp-1);border-top:1px solid var(--color-border)}.nav-cg-header{display:flex;align-items:center;gap:4px;padding:5px var(--sp-2) 5px var(--sp-1);cursor:pointer;user-select:none}.nav-cg-header:hover{background:var(--color-bg-3)}.nav-cg-label{flex:1;font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--color-text-2)}.nav-cg-list{padding-bottom:var(--sp-1)}.nav-cg-item{display:flex;align-items:center;gap:6px;padding:3px var(--sp-2) 3px 28px;font-size:var(--fs-xs);color:var(--color-text-2);transition:background .1s}.nav-cg-item:hover{background:var(--color-bg-3)}.nav-cg-item--hidden{opacity:.4}.nav-cg-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;background:var(--color-border)}.nav-cg-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-cg-badge{font-size:9px;padding:1px 5px;border-radius:8px;background:var(--color-bg-3);color:var(--color-text-4);border:1px solid var(--color-border);white-space:nowrap;flex-shrink:0}.nav-cg-item .tree-node-vis{opacity:0}.nav-cg-item:hover .tree-node-vis{opacity:1}.nav-cg-header .tree-node-vis{opacity:0}.nav-cg-header:hover .tree-node-vis{opacity:1}.tree-node-del{width:20px;height:20px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:var(--color-text-4);opacity:0;transition:opacity var(--t-fast),color var(--t-fast);border-radius:var(--r-sm);cursor:pointer}.tree-node:hover .tree-node-del{opacity:1}.tree-node-del:hover{color:var(--color-error)!important}.tree-node-vis{width:20px;height:20px;display:flex;align-items:center;justify-content:center;border-radius:var(--r-sm);color:var(--color-text-3);flex-shrink:0;transition:color var(--t-fast),background var(--t-fast);cursor:pointer}.tree-node-vis:hover{color:var(--color-accent);background:var(--color-bg-active)}.tree-node-vis.hidden{color:var(--color-text-4)}.tree-node-name-input{font-size:var(--fs-sm);background:var(--color-bg-3);border:1px solid var(--color-accent);border-radius:var(--r-base);color:var(--color-text-1);padding:0 4px;height:18px;flex:1;min-width:0;outline:none}.pc-density-row{display:flex;gap:3px;padding:2px 8px 4px 34px}.pc-density-btn{font-size:10px;padding:1px 6px;border-radius:var(--r-full);border:1px solid var(--color-border);background:transparent;color:var(--color-text-3);cursor:pointer;transition:background var(--t-fast),color var(--t-fast)}.pc-density-btn:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.pc-density-btn.active{background:var(--color-accent-muted);color:var(--color-accent);border-color:transparent}.tree-node-settings{width:20px;height:20px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:var(--color-text-4);opacity:0;transition:opacity var(--t-fast),color var(--t-fast),background var(--t-fast);border-radius:var(--r-sm);cursor:pointer}.tree-node:hover .tree-node-settings{opacity:1}.tree-node-settings:hover{color:var(--color-accent);background:var(--color-bg-active)}.tree-node-settings.active{opacity:1;color:var(--color-accent);background:var(--color-bg-active)}.model-settings-panel{display:flex;flex-direction:column;gap:6px;padding:6px 8px;background:var(--color-bg-3);border-radius:var(--r-sm);margin:0 8px 2px 0}.model-settings-row{display:flex;align-items:center;gap:6px}.model-settings-del{opacity:1;margin-left:auto}.model-status-select,.model-suitability-select{flex:1;min-width:0;font-size:10px;padding:2px 4px;height:22px;border:1px solid var(--color-border);border-radius:var(--r-sm);background:var(--color-bg-2);color:var(--color-text-1);cursor:pointer}.model-status-select:disabled,.model-suitability-select:disabled{cursor:default;opacity:.7}.model-settings-approval{font-size:10px;color:var(--color-text-3)}.model-settings-note{font-size:9px;color:var(--color-text-4)}.model-color-input{width:18px;height:18px;padding:0;border:1px solid var(--color-border);border-radius:var(--r-sm);background:transparent;cursor:pointer;flex-shrink:0}.model-color-input::-webkit-color-swatch-wrapper{padding:1px}.model-color-input::-webkit-color-swatch{border:none;border-radius:2px}.model-color-reset{width:18px;height:18px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:var(--color-text-4);border-radius:var(--r-sm);cursor:pointer}.model-color-reset:hover{color:var(--color-error)}.model-opacity-slider{flex:1;min-width:0;accent-color:var(--color-accent);cursor:pointer}.model-opacity-value{font-size:10px;color:var(--color-text-3);width:30px;text-align:right;flex-shrink:0}.tree-children{overflow:hidden}.props-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}.props-title{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--color-text-2)}.props-container{flex:1;overflow-y:auto;padding:var(--sp-2) 0}.props-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:var(--sp-2);color:var(--color-text-4)}.props-empty svg{opacity:.3}.props-empty p{font-size:var(--fs-sm)}.pset-header{display:flex;align-items:center;gap:var(--sp-2);padding:6px var(--sp-3);cursor:pointer;border-bottom:1px solid var(--color-border);background:var(--color-bg-1);user-select:none}.pset-header:hover{background:var(--color-bg-hover)}.pset-toggle{color:var(--color-text-4);transition:transform var(--t-fast)}.pset-toggle.open{transform:rotate(90deg)}.pset-name{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--color-text-2);flex:1}.pset-rows{overflow:hidden}.prop-row{display:flex;align-items:baseline;gap:var(--sp-2);padding:4px var(--sp-3) 4px calc(var(--sp-3) + 14px);border-bottom:1px solid var(--color-border)}.prop-row:last-child{border-bottom:none}.prop-name{font-size:var(--fs-xs);color:var(--color-text-3);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.prop-value{font-size:var(--fs-xs);color:var(--color-text-1);font-family:var(--font-mono);text-align:right;word-break:break-word;max-width:55%}.bcf-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}.bcf-search{flex:1;background:var(--color-bg-3);border:1px solid var(--color-border-2);border-radius:var(--r-base);color:var(--color-text-1);font-size:var(--fs-sm);padding:4px 8px;outline:none}.bcf-search:focus{border-color:var(--color-accent)}.bcf-search::placeholder{color:var(--color-text-4)}.bcf-list{flex:1;overflow-y:auto}.bcf-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:200px;gap:var(--sp-2);color:var(--color-text-4)}.bcf-empty p{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.active{background:var(--color-accent-muted);border-left:2px solid var(--color-accent)}.issue-card-thumb{display:block;width:100%;height:80px;object-fit:cover;border-radius:var(--r-sm);margin-bottom:var(--sp-2);border:1px solid var(--color-border);background:var(--color-bg-3)}.issue-card-head{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:4px}.issue-priority-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.issue-priority-dot.critical{background:var(--color-priority-critical)}.issue-priority-dot.major{background:var(--color-priority-high)}.issue-priority-dot.normal{background:var(--color-priority-medium)}.issue-priority-dot.minor{background:var(--color-priority-low)}.issue-title{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--color-text-1);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.issue-status-badge{font-size:var(--fs-xs);padding:1px 6px;border-radius:var(--r-full);flex-shrink:0;font-weight:var(--fw-medium);text-transform:uppercase;letter-spacing:.04em}.issue-status-badge.open{background:var(--color-error-muted);color:var(--color-status-open)}.issue-status-badge.in-progress{background:var(--color-warning-muted);color:var(--color-status-in-progress)}.issue-status-badge.resolved{background:var(--color-success-muted);color:var(--color-status-resolved)}.issue-status-badge.closed{background:var(--color-bg-3);color:var(--color-status-closed)}.issue-card-meta{display:flex;align-items:center;gap:var(--sp-3);font-size:var(--fs-xs);color:var(--color-text-4)}.issue-detail{flex:1;overflow-y:auto;padding:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-3)}.issue-detail-header{display:flex;align-items:flex-start;gap:var(--sp-3)}.issue-detail-back{background:none;border:none;color:var(--color-text-3);cursor:pointer;display:flex;align-items:center;gap:4px;font-size:var(--fs-sm);padding:4px 0}.issue-detail-back:hover{color:var(--color-text-1)}.issue-detail-title{font-size:var(--fs-lg);font-weight:var(--fw-semibold);color:var(--color-text-1)}.issue-viewpoint img{width:100%;border-radius:var(--r-base);border:1px solid var(--color-border)}.issue-comments{display:flex;flex-direction:column;gap:var(--sp-2)}.issue-comment{background:var(--color-bg-3);border-radius:var(--r-base);padding:var(--sp-2) var(--sp-3);font-size:var(--fs-sm)}.issue-comment-author{font-weight:var(--fw-medium);color:var(--color-accent);margin-right:4px}.issue-comment-date{color:var(--color-text-4);font-size:var(--fs-xs)}.bcf-float-panel{position:fixed;top:52px;right:340px;width:380px;max-height:calc(100vh - 72px);display:flex;flex-direction:column;background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:var(--r-md);box-shadow:0 8px 32px #00000073;z-index:800;overflow:hidden}.bcf-float-header{display:flex;align-items:center;gap:var(--sp-2);padding:10px 14px;background:var(--color-bg-3);border-bottom:1px solid var(--color-border);cursor:grab;user-select:none;flex-shrink:0}.bcf-float-header:active{cursor:grabbing}.bcf-float-drag-icon{color:var(--color-text-4);flex-shrink:0}.bcf-float-title{flex:1;font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--color-text-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bcf-float-body{flex:1;overflow-y:auto;padding:14px}.bcf-float-footer{display:flex;align-items:center;justify-content:flex-end;gap:var(--sp-2);padding:10px 14px;border-top:1px solid var(--color-border);background:var(--color-bg-3);flex-shrink:0}.bcf-float-footer .btn--danger{margin-right:auto}.bcf-visibility-badge{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;flex-shrink:0}.bcf-visibility--self{background:#94a3b82e;color:var(--color-text-3)}.bcf-visibility--person{background:#6366f126;color:#818cf8}.bcf-visibility--role{background:#f59e0b26;color:#f59e0b}.bcf-target-row{display:flex;gap:var(--sp-2);flex-wrap:wrap}.bcf-target-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:var(--r-full);border:1px solid var(--color-border);background:var(--color-bg-3);color:var(--color-text-2);font-size:var(--fs-sm);cursor:pointer;transition:all .12s}.bcf-target-btn:hover{border-color:var(--color-accent);color:var(--color-accent)}.bcf-target-btn.active{background:var(--color-accent);border-color:var(--color-accent);color:#fff}.bcf-float-panel--docked{position:absolute;bottom:0;left:0;right:0;width:auto;max-height:50%;border-radius:0;border-left:none;border-right:none;border-bottom:none;border-top:2px solid var(--color-accent);z-index:50;box-shadow:0 -4px 20px #00000059}.bcf-float-panel--docked .bcf-float-header{cursor:default}.bcf-panel-dock-btn{opacity:.6;transition:opacity .12s}.bcf-panel-dock-btn:hover{opacity:1}.bcf-detail-snapshot-wrap{border-radius:var(--r-base);overflow:hidden;border:1px solid var(--color-border)}.bcf-detail-snapshot{display:block;width:100%}.bcf-detail-snapshot-meta{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;background:var(--color-bg-3);font-size:var(--fs-xs);color:var(--color-text-3)}.bcf-ann-section{border:1px solid var(--color-border);border-radius:var(--r-md);overflow:hidden}.bcf-ann-toolbar{display:flex;align-items:center;background:var(--color-bg-3);padding:6px 10px;border-bottom:1px solid var(--color-border)}.bcf-ann-tools{display:flex;align-items:center;gap:4px}.bcf-ann-btn{width:28px;height:28px;border-radius:var(--r-sm);background:none;border:1px solid transparent;color:var(--color-text-3);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s,color .12s}.bcf-ann-btn:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.bcf-ann-btn.active{background:var(--color-accent-muted);border-color:var(--color-accent);color:var(--color-accent)}.bcf-ann-color{width:20px;height:20px;border-radius:50%;border:2px solid transparent;cursor:pointer;flex-shrink:0;transition:border-color .12s,transform .12s}.bcf-ann-color:hover{transform:scale(1.15)}.bcf-ann-color.active{border-color:#fff;box-shadow:0 0 0 1px var(--color-accent)}.bcf-ann-sep{width:1px;height:20px;background:var(--color-border);margin:0 4px}.bcf-ann-canvas-wrap{background:#0a0a0a;display:flex;align-items:center;justify-content:center;max-height:320px;overflow:hidden}.bcf-ann-canvas{display:block;width:100%;max-height:320px;object-fit:contain;cursor:crosshair;touch-action:none}.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;flex-wrap:wrap}.docs-search{flex:1;min-width:120px;background:var(--color-bg-3);border:1px solid var(--color-border-2);border-radius:var(--r-base);color:var(--color-text-1);font-size:var(--fs-sm);padding:4px 8px;outline:none}.docs-search:focus{border-color:var(--color-accent)}.docs-filter-row{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-1) var(--sp-3);border-bottom:1px solid var(--color-border);flex-shrink:0;overflow-x:auto}.docs-filter-btn{font-size:var(--fs-xs);padding:2px 8px;border-radius:var(--r-full);color:var(--color-text-3);border:1px solid var(--color-border-2);cursor:pointer;white-space:nowrap;transition:background var(--t-fast),color var(--t-fast),border-color var(--t-fast)}.docs-filter-btn:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.docs-filter-btn.active{background:var(--color-accent-muted);color:var(--color-accent);border-color:var(--color-accent-border)}.docs-table{flex:1;overflow-y:auto}.docs-table-header{display:grid;grid-template-columns:1fr 80px 80px 80px 80px;padding:4px var(--sp-3);background:var(--color-bg-1);border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:1}.docs-table-header span{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--color-text-4);text-transform:uppercase;letter-spacing:.05em}.doc-row{display:grid;grid-template-columns:1fr 80px 80px 80px 80px;align-items:center;padding:6px var(--sp-3);border-bottom:1px solid var(--color-border);cursor:pointer;transition:background var(--t-fast)}.doc-row:hover{background:var(--color-bg-hover)}.doc-row-name{display:flex;align-items:center;gap:var(--sp-2);min-width:0}.doc-ext{font-size:9px;font-weight:var(--fw-bold);text-transform:uppercase;padding:1px 4px;border-radius:var(--r-sm);flex-shrink:0;letter-spacing:.04em}.doc-ext.pdf{background:#ef444433;color:#ef4444}.doc-ext.ifc{background:#3b82f633;color:#3b82f6}.doc-ext.dwg{background:#f59e0b33;color:#f59e0b}.doc-ext.xlsx{background:#22c55e33;color:#22c55e}.doc-ext.docx{background:#06b6d433;color:#06b6d4}.doc-ext.other{background:var(--color-bg-3);color:var(--color-text-3)}.doc-name{font-size:var(--fs-sm);color:var(--color-text-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.doc-cell{font-size:var(--fs-xs);color:var(--color-text-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.doc-status-badge{font-size:var(--fs-xs);padding:1px 6px;border-radius:var(--r-full);font-weight:var(--fw-medium);display:inline-block}.doc-status-badge.wip{background:#94a3b826;color:var(--color-doc-wip)}.doc-status-badge.shared{background:var(--color-warning-muted);color:var(--color-doc-shared)}.doc-status-badge.published{background:var(--color-success-muted);color:var(--color-doc-published)}.doc-status-badge.superseded{background:var(--color-error-muted);color:var(--color-doc-superseded)}.docs-fp-header{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:14px 24px;border-bottom:1px solid var(--color-border);flex-shrink:0;gap:16px;background:var(--color-bg-2)}.docs-fp-title{display:flex;align-items:center;gap:10px;font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--color-text-1)}.docs-fp-count{font-size:var(--fs-sm);color:var(--color-text-4);font-weight:var(--fw-normal);background:var(--color-bg-3);border:1px solid var(--color-border-2);padding:1px 8px;border-radius:var(--r-full)}.docs-fp-search-wrap{position:relative;display:flex;align-items:center}.docs-fp-search{background:var(--color-bg-3);border:1px solid var(--color-border-2);border-radius:var(--r-base);color:var(--color-text-1);font-size:var(--fs-sm);padding:5px 10px 5px 30px;outline:none;width:220px;transition:border-color var(--t-fast)}.docs-fp-search:focus{border-color:var(--color-accent)}.docs-fp-table-header{display:grid;grid-template-columns:1fr 140px 100px 130px 150px 1fr;padding:6px 24px;background:var(--color-bg-2);border-bottom:1px solid var(--color-border);flex-shrink:0}.docs-fp-table-header span{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--color-text-4);text-transform:uppercase;letter-spacing:.06em}.docs-fp-body{flex:1;overflow-y:auto;display:flex;flex-direction:column}.docs-fp-group{display:flex;flex-direction:column}.docs-fp-group-header{display:flex;align-items:center;gap:8px;padding:8px 24px;background:var(--color-bg-1);border-bottom:1px solid var(--color-border);user-select:none;transition:background var(--t-fast)}.docs-fp-group-header:hover{background:var(--color-bg-hover)}.docs-fp-group-count{font-size:var(--fs-xs);color:var(--color-text-4);background:var(--color-bg-3);border:1px solid var(--color-border-2);padding:0 6px;border-radius:var(--r-full);line-height:1.6}.docs-fp-row{display:grid;grid-template-columns:1fr 140px 100px 130px 150px 1fr;align-items:center;padding:9px 24px;border-bottom:1px solid var(--color-border);transition:background var(--t-fast)}.docs-fp-row--interactive{cursor:pointer}.docs-fp-row--interactive:hover{background:var(--color-bg-hover)}.docs-fp-cell-name{display:flex;align-items:center;gap:8px;min-width:0}.docs-fp-name{font-size:var(--fs-sm);color:var(--color-text-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.docs-fp-cell{font-size:var(--fs-xs);color:var(--color-text-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.docs-fp-date{color:var(--color-text-3)}.docs-fp-badge{font-size:var(--fs-xs);font-weight:var(--fw-medium);padding:2px 8px;border-radius:var(--r-full);display:inline-block;white-space:nowrap}.docs-fp-objlink{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-xs);color:var(--color-accent);font-family:var(--font-mono);background:var(--color-accent-muted);padding:2px 7px;border-radius:var(--r-full);border:1px solid var(--color-accent-border);cursor:pointer;transition:background var(--t-fast),border-color var(--t-fast)}.docs-fp-objlink:hover{background:var(--color-accent-border);border-color:var(--color-accent)}.docs-fp-objlink--bcf{color:#f97416;background:#f9741611;border-color:#f9741633;font-family:var(--font-sans)}.docs-fp-objlink--bcf:hover{background:#f9741622;border-color:#f97416}.docs-tag-cell{display:flex;align-items:center;gap:4px;flex-wrap:wrap;white-space:normal;overflow:visible}.docs-tag-chip{display:inline-flex;align-items:center;gap:2px;font-size:10px;font-weight:var(--fw-medium);padding:2px 6px;border-radius:var(--r-full);white-space:nowrap;line-height:1.5;transition:opacity var(--t-fast)}.docs-tag-add-btn{font-size:12px;color:var(--color-text-4);background:none;border:1px dashed var(--color-border-2);border-radius:var(--r-full);width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:border-color var(--t-fast),color var(--t-fast)}.docs-tag-add-btn:hover{border-color:var(--color-accent);color:var(--color-accent)}.docs-tag-popover{position:fixed;z-index:9000;background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:var(--r-md);box-shadow:var(--shadow-lg);padding:10px;width:210px;display:flex;flex-direction:column;gap:8px}.docs-tag-list{display:flex;flex-direction:column;gap:4px;max-height:180px;overflow-y:auto}.docs-tag-option{display:flex;align-items:center;cursor:pointer;border-radius:var(--r-sm);padding:2px 4px;transition:background var(--t-fast)}.docs-tag-option:hover{background:var(--color-bg-hover)}.docs-tag-option.active .docs-tag-chip{opacity:1}.docs-tag-option .docs-tag-chip{opacity:.5;transition:opacity var(--t-fast)}.docs-tag-option.active .docs-tag-chip:before{content:"✓ ";font-size:9px}.docs-tag-new{display:flex;gap:6px;align-items:center}.docs-status-badge{display:inline-flex;align-items:center;gap:3px;font-size:10px;font-weight:var(--fw-medium);padding:2px 8px;border-radius:var(--r-full);white-space:nowrap}.docs-status-badge--clickable{cursor:pointer;transition:opacity var(--t-fast)}.docs-status-badge--clickable:hover{opacity:.8}.docs-status-popover{position:fixed;z-index:9000;background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:var(--r-md);box-shadow:var(--shadow-lg);padding:10px;width:240px;display:flex;flex-direction:column;gap:8px}.docs-status-field{display:flex;flex-direction:column;gap:3px}.docs-status-note{font-size:9px;color:var(--color-text-4)}.docs-status-approval{font-size:var(--fs-xs);color:var(--color-text-3);background:var(--color-bg-3);border-radius:var(--r-sm);padding:6px 8px}.docs-status-actions{display:flex;justify-content:flex-end;gap:6px}.docs-view-tabs{display:flex;gap:2px;background:var(--color-bg-3);border:1px solid var(--color-border);border-radius:var(--r-md);padding:2px}.docs-view-tab{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--color-text-3);background:none;border:none;padding:4px 14px;border-radius:var(--r-sm);cursor:pointer;transition:background var(--t-fast),color var(--t-fast)}.docs-view-tab.active{background:var(--color-bg-2);color:var(--color-text-1);box-shadow:0 1px 3px #0000001f}.docs-view-tab:not(.active):hover{color:var(--color-text-2)}.docs-folder-row{display:flex;align-items:center;gap:8px;padding:9px 24px;border-bottom:1px solid var(--color-border);background:var(--color-bg-1);cursor:pointer;transition:background var(--t-fast);user-select:none}.docs-folder-row:hover{background:var(--color-bg-hover)}.docs-folder-name{flex:1;font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--color-text-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.docs-folder-actions{display:flex;gap:4px;opacity:0;transition:opacity var(--t-fast)}.docs-folder-row:hover .docs-folder-actions{opacity:1}.docs-folder-btn{display:inline-flex;align-items:center;gap:4px;background:none;border:1px solid var(--color-border-2);border-radius:var(--r-sm);color:var(--color-text-3);font-size:var(--fs-xs);padding:2px 7px;cursor:pointer;transition:background var(--t-fast),color var(--t-fast),border-color var(--t-fast)}.docs-folder-btn:hover{background:var(--color-bg-hover);border-color:var(--color-border);color:var(--color-text-1)}.docs-folder-btn--danger:hover{background:#ef444411;border-color:#ef4444;color:#ef4444}.docs-folder-doc{display:grid;grid-template-columns:1fr 140px 100px 130px 150px 1fr;align-items:center;gap:12px;padding:7px 24px;border-bottom:1px solid var(--color-border);transition:background var(--t-fast)}.docs-folder-doc:hover{background:var(--color-bg-hover)}.docs-folder-picker{position:fixed;z-index:9000;background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:var(--r-md);box-shadow:var(--shadow-lg);padding:6px;width:210px;max-height:280px;overflow-y:auto;display:flex;flex-direction:column;gap:2px}.docs-folder-pick-item{display:flex;align-items:center;gap:7px;padding:6px 10px;border-radius:var(--r-sm);cursor:pointer;font-size:var(--fs-sm);color:var(--color-text-2);transition:background var(--t-fast)}.docs-folder-pick-item:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.docs-folder-pick-item.selected{background:var(--color-accent-muted);color:var(--color-accent)}.docs-folder-pick-item.is-none{color:var(--color-text-4);font-style:italic}.docs-folder-doc.dragging,.docs-folder-row.dragging{opacity:.35;pointer-events:none}.docs-drag-handle{transition:opacity var(--t-fast)}.docs-folder-doc:hover .docs-drag-handle,.docs-folder-row:hover .docs-drag-handle{opacity:.55!important}.docs-folder-row.drag-over{background:var(--color-accent-muted)!important;outline:2px dashed var(--color-accent);outline-offset:-2px}.tl-panel{display:flex;flex-direction:column;height:100%;background:var(--color-bg-2);overflow:hidden}.tl-controls{display:flex;align-items:center;gap:4px;flex-shrink:0;padding:5px 8px;border-bottom:1px solid var(--color-border);background:var(--color-bg-1)}.tl-ctrl-btn{display:flex;align-items:center;justify-content:center;height:24px;min-width:24px;padding:0 5px;border-radius:var(--r-sm);font-size:var(--fs-xs);color:var(--color-text-3);cursor:pointer;transition:background var(--t-fast),color var(--t-fast)}.tl-ctrl-btn:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.tl-play-ring{display:flex;align-items:center;justify-content:center;width:26px;height:26px;min-width:26px;border-radius:50%;background:var(--color-accent);color:#fff;cursor:pointer;flex-shrink:0;transition:background var(--t-fast)}.tl-play-ring:hover{background:var(--color-accent-hover)}.tl-speed-pills{display:flex;gap:2px;border:1px solid var(--color-border-2);border-radius:var(--r-sm);padding:1px}.tl-speed-pill{font-size:10px;padding:1px 5px;border-radius:2px;color:var(--color-text-4);cursor:pointer;transition:background var(--t-fast),color var(--t-fast)}.tl-speed-pill.active{background:var(--color-accent);color:#fff}.tl-speed-pill:not(.active):hover{background:var(--color-bg-hover);color:var(--color-text-1)}.tl-date-pill{font-size:10px;font-family:var(--font-mono);color:var(--color-text-1);background:var(--color-bg-3);border:1px solid var(--color-border-2);border-radius:var(--r-sm);padding:2px 8px;min-width:88px;text-align:center}.tl-zoom-row{display:flex;align-items:center;gap:2px}.tl-zoom-val{font-size:9px;color:var(--color-text-4);font-family:var(--font-mono);min-width:38px;text-align:center}.tl-4d-pill{font-size:10px;font-weight:var(--fw-semibold);letter-spacing:.06em;padding:2px 8px;border-radius:var(--r-sm);cursor:pointer;border:1px solid var(--color-phase-active);color:var(--color-phase-active);transition:background var(--t-fast),color var(--t-fast)}.tl-4d-pill.active{background:var(--color-phase-active);color:#111}.tl-4d-pill:hover:not(.active){background:#f59e0b1f}.tl-add-phase-btn{font-size:var(--fs-xs);padding:2px 9px;border-radius:var(--r-sm);cursor:pointer;border:1px solid var(--color-accent-border);color:var(--color-accent);transition:background var(--t-fast)}.tl-add-phase-btn:hover{background:var(--color-accent-muted)}.tl-gantt{flex:1;min-height:0;overflow:hidden}.tl-chart-scroll{width:100%;height:100%;overflow:auto;position:relative;scrollbar-width:thin;scrollbar-color:var(--color-border-2) transparent}.tl-chart-scroll::-webkit-scrollbar{width:6px;height:6px}.tl-chart-scroll::-webkit-scrollbar-thumb{background:var(--color-border-2);border-radius:3px}.tl-chart-inner{position:relative;min-height:100%}.tl-time-header{position:sticky;top:0;z-index:4;background:var(--color-bg-1);border-bottom:1px solid var(--color-border);display:flex;align-items:stretch}.tl-label-spacer{flex-shrink:0;background:var(--color-bg-1);position:sticky;left:0;z-index:5;border-right:1px solid var(--color-border)}.tl-month-cell{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;font-size:9px;color:var(--color-text-4);font-family:var(--font-mono);border-right:1px solid var(--color-border);white-space:nowrap;overflow:hidden;user-select:none}.tl-rows{position:relative}.tl-row{position:absolute;left:0;right:0;display:flex;align-items:center;border-bottom:1px solid rgba(255,255,255,.03)}.tl-row-alt{background:#0000001a}.tl-row:hover{background:#ffffff05}.tl-row-label{position:sticky;left:0;z-index:2;height:100%;display:flex;align-items:center;gap:5px;padding:0 7px;background:var(--color-bg-2);border-right:1px solid var(--color-border);flex-shrink:0}.tl-row:hover .tl-row-label{background:var(--color-bg-3)}.tl-sdot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.tl-sdot-planned{background:var(--color-phase-planned)}.tl-sdot-active{background:var(--color-phase-active)}.tl-sdot-done{background:var(--color-phase-done)}.tl-sdot-demolished{background:var(--color-phase-demolished)}.tl-row-name{font-size:10px;color:var(--color-text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.tl-linked-badge{font-size:9px;color:var(--color-accent);flex-shrink:0}.tl-grid-line{position:absolute;top:0;width:1px;background:#ffffff0a;pointer-events:none}.tl-bar{position:absolute;border-radius:3px;cursor:pointer;display:flex;align-items:center;overflow:hidden;padding:0 5px;transition:filter var(--t-fast);box-shadow:0 1px 3px #0006}.tl-bar:hover{filter:brightness(1.18)}.tl-bar-lbl{font-size:9px;font-weight:var(--fw-semibold);color:#000000bf;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}.tl-bar-planned{background:var(--color-phase-planned);opacity:.8}.tl-bar-active{background:var(--color-phase-active)}.tl-bar-done{background:var(--color-phase-done)}.tl-bar-demolished{background:var(--color-phase-demolished)}.tl-needle{position:absolute;top:0;width:2px;background:#ff3b3b;z-index:3;pointer-events:none;transform:translate(-50%);box-shadow:0 0 6px #ff3c3c8c}.tl-needle:before{content:"";position:absolute;top:-5px;left:50%;transform:translate(-50%);border-left:5px solid transparent;border-right:5px solid transparent;border-top:7px solid #ff3b3b}.tl-legend{display:flex;align-items:center;gap:12px;flex-shrink:0;padding:4px 10px;border-top:1px solid var(--color-border);background:var(--color-bg-1)}.tl-leg-item{display:flex;align-items:center;gap:4px;font-size:10px;color:var(--color-text-4)}.tl-leg-dot{width:8px;height:8px;border-radius:50%}.tl-4d-badge{margin-left:auto;font-size:10px;font-weight:var(--fw-semibold);color:var(--color-phase-active);letter-spacing:.04em}.tl-ctx-menu{background:var(--color-bg-3);border:1px solid var(--color-border-2);border-radius:var(--r-md);box-shadow:var(--shadow-md);min-width:190px;overflow:hidden}.tl-ctx-item{padding:7px 12px;font-size:var(--fs-sm);color:var(--color-text-2);cursor:pointer;transition:background var(--t-fast)}.tl-ctx-item:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.tl-ctx-dim{opacity:.45;pointer-events:none}.tl-ctx-sep{height:1px;background:var(--color-border);margin:2px 0}.tl-ctx-danger{color:var(--color-error)}.tl-ctx-danger:hover{background:var(--color-error-muted)}.tl-link-assist-btn{border:1px solid var(--color-border-2);color:var(--color-text-2);font-size:var(--fs-xs);padding:2px 8px}.tl-link-assist-btn:hover{border-color:var(--color-accent);color:var(--color-accent)}.la-modal{max-width:640px;width:640px}.la-tabs{display:flex;border-bottom:1px solid var(--color-border);background:var(--color-bg-1);flex-shrink:0}.la-tab{padding:8px 16px;font-size:var(--fs-sm);color:var(--color-text-3);cursor:pointer;border-bottom:2px solid transparent;transition:color var(--t-fast),border-color var(--t-fast)}.la-tab.active{color:var(--color-accent);border-bottom-color:var(--color-accent)}.la-tab:hover:not(.active){color:var(--color-text-1)}.la-body{min-height:300px;max-height:460px;overflow-y:auto}.la-panel{padding:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-3)}.la-desc{font-size:var(--fs-sm);color:var(--color-text-3);line-height:1.5;background:var(--color-bg-3);border-radius:var(--r-sm);padding:6px 10px}.la-desc code{font-family:var(--font-mono);font-size:10px;background:var(--color-bg-4);border-radius:2px;padding:1px 4px}.la-type-list{max-height:210px;overflow-y:auto;border:1px solid var(--color-border);border-radius:var(--r-sm);background:var(--color-bg-3)}.la-type-row{display:flex;align-items:center;gap:8px;padding:5px 10px;cursor:pointer;transition:background var(--t-fast);border-bottom:1px solid var(--color-border)}.la-type-row:last-child{border-bottom:none}.la-type-row:hover{background:var(--color-bg-hover)}.la-type-row input[type=checkbox]{accent-color:var(--color-accent);flex-shrink:0}.la-type-name{font-size:var(--fs-sm);color:var(--color-text-2);flex:1}.la-type-count{font-size:10px;font-family:var(--font-mono);color:var(--color-text-4);background:var(--color-bg-4);border-radius:10px;padding:1px 7px}.la-status{font-size:var(--fs-xs);color:var(--color-accent);min-height:16px}.la-loading,.la-empty{padding:16px;text-align:center;font-size:var(--fs-sm);color:var(--color-text-4)}.la-apply-btn{align-self:flex-start}.la-csv-drop{display:flex;flex-direction:column;align-items:center;gap:8px;padding:24px;border:2px dashed var(--color-border-2);border-radius:var(--r-md);cursor:pointer;transition:border-color var(--t-fast),background var(--t-fast);color:var(--color-text-4);font-size:var(--fs-sm)}.la-csv-drop:hover,.la-csv-drop.drag-over{border-color:var(--color-accent);background:var(--color-accent-muted)}.la-csv-browse{font-size:var(--fs-xs);padding:3px 10px;border-radius:var(--r-sm);border:1px solid var(--color-accent-border);color:var(--color-accent);cursor:pointer;transition:background var(--t-fast)}.la-csv-browse:hover{background:var(--color-accent-muted)}.la-csv-cols{margin-bottom:var(--sp-2)}.la-preview-wrap{max-height:140px;overflow:auto;border:1px solid var(--color-border);border-radius:var(--r-sm)}.la-preview-table{width:100%;border-collapse:collapse;font-size:10px;font-family:var(--font-mono)}.la-preview-table th{padding:4px 8px;background:var(--color-bg-3);color:var(--color-text-3);border-bottom:1px solid var(--color-border);text-align:left;position:sticky;top:0}.la-preview-table td{padding:3px 8px;color:var(--color-text-2);border-bottom:1px solid var(--color-border)}.la-preview-more{padding:4px 8px;font-size:10px;color:var(--color-text-4)}.la-pset-table{display:flex;flex-direction:column;gap:4px;max-height:220px;overflow-y:auto}.la-pset-row{display:flex;align-items:center;gap:8px;padding:5px 8px;background:var(--color-bg-3);border-radius:var(--r-sm);border:1px solid var(--color-border)}.la-pset-val{font-size:var(--fs-sm);color:var(--color-text-1);font-family:var(--font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.la-pset-count{font-size:10px;color:var(--color-text-4);flex-shrink:0;min-width:70px;text-align:right}.la-pset-phase{max-width:180px;flex-shrink:0}.tl-root{display:flex;flex-direction:row;height:100%;overflow:hidden}.tl-root>.tl-panel{flex:1;min-width:0}.tl-sims-sidebar{width:210px;flex-shrink:0;display:flex;flex-direction:column;border-left:1px solid var(--color-border);background:var(--color-bg-1);overflow:hidden}.tl-sims-hdr{display:flex;align-items:center;justify-content:space-between;padding:7px 10px;border-bottom:1px solid var(--color-border);font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--color-text-2);flex-shrink:0}.tl-sims-save-btn{font-size:10px;padding:2px 7px;border-radius:var(--r-sm);background:var(--color-accent-muted);color:var(--color-accent);border:1px solid transparent;cursor:pointer;transition:background var(--t-fast)}.tl-sims-save-btn:hover{background:var(--color-accent);color:#fff}.tl-sims-save-form{padding:8px;border-bottom:1px solid var(--color-border);background:var(--color-bg-2);flex-shrink:0}.tl-sims-name-input{width:100%;box-sizing:border-box;padding:4px 7px;font-size:var(--fs-xs);background:var(--color-bg-1);border:1px solid var(--color-border-2);border-radius:var(--r-sm);color:var(--color-text-1);outline:none;margin-bottom:6px}.tl-sims-name-input:focus{border-color:var(--color-accent)}.tl-sims-form-btns{display:flex;gap:5px}.tl-sims-ok-btn{flex:1;padding:3px 0;font-size:10px;border-radius:var(--r-sm);background:var(--color-accent);color:#fff;border:none;cursor:pointer}.tl-sims-ok-btn:hover{background:var(--color-accent-hover)}.tl-sims-cancel-btn{flex:1;padding:3px 0;font-size:10px;border-radius:var(--r-sm);background:var(--color-bg-3);color:var(--color-text-3);border:1px solid var(--color-border);cursor:pointer}.tl-sims-cancel-btn:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.tl-sims-list{flex:1;overflow-y:auto;padding:6px;display:flex;flex-direction:column;gap:4px}.tl-sims-list::-webkit-scrollbar{width:5px}.tl-sims-list::-webkit-scrollbar-thumb{background:var(--color-border-2);border-radius:3px}.tl-sims-empty{font-size:10px;color:var(--color-text-4);text-align:center;padding:16px 8px;line-height:1.5}.tl-sim-item{background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:var(--r-md);padding:7px 8px;transition:border-color var(--t-fast)}.tl-sim-item:hover{border-color:var(--color-border-2)}.tl-sim-name{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--color-text-1);outline:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:text;border-radius:2px;padding:1px 2px;margin:-1px -2px}.tl-sim-name:focus{background:var(--color-bg-3);white-space:normal;border:1px solid var(--color-accent);border-radius:var(--r-sm)}.tl-sim-meta{font-size:9px;color:var(--color-text-4);margin-top:2px}.tl-sim-actions{display:flex;gap:4px;margin-top:6px}.tl-sim-load-btn{flex:1;padding:3px 0;font-size:10px;border-radius:var(--r-sm);background:var(--color-accent-muted);color:var(--color-accent);border:1px solid transparent;cursor:pointer;transition:background var(--t-fast)}.tl-sim-load-btn:hover{background:var(--color-accent);color:#fff}.tl-sim-del-btn{padding:3px 7px;font-size:10px;border-radius:var(--r-sm);background:transparent;color:var(--color-text-4);border:1px solid var(--color-border);cursor:pointer;transition:color var(--t-fast),border-color var(--t-fast)}.tl-sim-del-btn:hover{color:var(--color-error);border-color:var(--color-error)}.dash-grid{padding:var(--sp-3);display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--sp-3);overflow-y:auto}.dash-card{background:var(--color-bg-3);border:1px solid var(--color-border);border-radius:var(--r-md);padding:var(--sp-3)}.dash-card-title{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--color-text-3);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--sp-2)}.kpi-row{display:flex;gap:var(--sp-3)}.kpi{display:flex;flex-direction:column;gap:2px}.kpi-value{font-size:var(--fs-2xl);font-weight:var(--fw-bold);color:var(--color-text-1);line-height:1}.kpi-label{font-size:var(--fs-xs);color:var(--color-text-4)}.kpi-accent{color:var(--color-accent)}.kpi-success{color:var(--color-success)}.kpi-warning{color:var(--color-warning)}.kpi-error{color:var(--color-error)}.progress-bar-row{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:6px}.progress-bar-label{font-size:var(--fs-xs);color:var(--color-text-3);width:80px;flex-shrink:0}.progress-bar-track{flex:1;height:6px;background:var(--color-bg-1);border-radius:var(--r-full);overflow:hidden}.progress-bar-fill{height:100%;border-radius:var(--r-full);background:var(--color-accent);transition:width .4s ease}.progress-bar-value{font-size:var(--fs-xs);color:var(--color-text-4);width:30px;text-align:right;flex-shrink:0}.measure-list{flex:1;overflow-y:auto;padding:var(--sp-2) 0}.measure-item{display:flex;align-items:center;gap:var(--sp-2);padding:6px var(--sp-3);border-bottom:1px solid var(--color-border);cursor:pointer;transition:background var(--t-fast)}.measure-item:hover{background:var(--color-bg-hover)}.measure-icon{color:var(--color-accent);flex-shrink:0}.measure-value{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--color-text-1)}.measure-label{font-size:var(--fs-xs);color:var(--color-text-3)}.measure-del{margin-left:auto;display:flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:var(--r-sm);cursor:pointer;color:var(--color-text-4);opacity:0;transition:opacity var(--t-fast),color var(--t-fast)}.measure-item:hover .measure-del{opacity:1}.measure-del:hover{color:var(--color-error)}.plans-list{flex:1;overflow-y:auto}.plan-item{display:flex;align-items:center;gap:var(--sp-2);padding:8px var(--sp-3);border-bottom:1px solid var(--color-border);cursor:pointer;transition:background var(--t-fast)}.plan-item:hover{background:var(--color-bg-hover)}.plan-item.active{background:var(--color-accent-muted)}.plan-name{font-size:var(--fs-sm);color:var(--color-text-1)}.plan-level{font-size:var(--fs-xs);color:var(--color-text-4);margin-left:auto}.clip-list{flex:1;overflow-y:auto;padding:var(--sp-2) 0}.clip-item{display:flex;align-items:center;gap:var(--sp-2);padding:6px var(--sp-3);border-bottom:1px solid var(--color-border)}.clip-name{font-size:var(--fs-sm);color:var(--color-text-1);flex:1}.clip-toggle{width:28px;height:16px;background:var(--color-bg-3);border-radius:var(--r-full);cursor:pointer;position:relative;flex-shrink:0;transition:background var(--t-fast);border:1px solid var(--color-border-2)}.clip-toggle.on{background:var(--color-accent)}.clip-toggle:after{content:"";position:absolute;top:1px;left:1px;width:12px;height:12px;border-radius:50%;background:#fff;transition:transform var(--t-fast)}.clip-toggle.on:after{transform:translate(12px)}.cl-panel{display:flex;flex-direction:column;height:100%;background:var(--color-bg-2);overflow:hidden}.cl-controls{display:flex;align-items:center;gap:5px;flex-shrink:0;padding:5px 8px;border-bottom:1px solid var(--color-border);background:var(--color-bg-1);flex-wrap:wrap}.cl-field-group{display:flex;align-items:center;gap:4px;border:1px solid var(--color-border-2);border-radius:var(--r-sm);padding:2px 6px}.cl-field-label{font-size:9px;color:var(--color-text-4);white-space:nowrap;flex-shrink:0}.cl-select{font-size:10px;background:transparent;border:none;color:var(--color-text-1);cursor:pointer;outline:none;max-width:110px;font-family:var(--font-sans)}.cl-select option{background:var(--color-bg-3)}.cl-buffer-group{display:flex;align-items:center;gap:3px;border:1px solid var(--color-border-2);border-radius:var(--r-sm);padding:2px 6px}.cl-buf-input{width:32px;font-size:10px;background:transparent;border:none;color:var(--color-text-1);font-family:var(--font-mono);text-align:right;outline:none}.cl-buf-input::-webkit-inner-spin-button,.cl-buf-input::-webkit-outer-spin-button{opacity:.4}.cl-spinner{width:14px;height:14px;flex-shrink:0;border-radius:50%;border:2px solid var(--color-border-2);border-top-color:var(--color-accent);animation:spin .7s linear infinite}.cl-vtab-count{display:inline-flex;align-items:center;justify-content:center;font-size:9px;background:var(--color-bg-3);border-radius:8px;padding:0 5px;margin-left:3px;color:var(--color-text-4);min-width:16px}.cl-body{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:row}.cl-col{display:flex;flex-direction:column;flex:1;min-width:0;overflow:hidden}.cl-col-divider{width:1px;flex-shrink:0;background:var(--color-border)}.cl-col-header{display:flex;align-items:center;gap:5px;flex-shrink:0;padding:5px 8px;border-bottom:1px solid var(--color-border);background:var(--color-bg-1)}.cl-col-title{font-size:10px;font-weight:var(--fw-semibold);color:var(--color-text-3);letter-spacing:.04em;text-transform:uppercase}.cl-stats{display:flex;align-items:center;gap:8px;flex-shrink:0;padding:4px 10px;border-bottom:1px solid var(--color-border);background:var(--color-bg-1)}.cl-list{flex:1;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--color-border-2) transparent}.cl-item{display:flex;align-items:center;gap:var(--sp-2);padding:5px var(--sp-3);border-bottom:1px solid var(--color-border);cursor:pointer;transition:background var(--t-fast)}.cl-item:hover{background:var(--color-bg-hover)}.cl-item--active{background:var(--color-accent-muted)}.cl-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.cl-dot--hard{background:var(--color-error)}.cl-dot--soft{background:var(--color-warning)}.cl-names{display:flex;flex-direction:column;gap:1px;flex:1;min-width:0}.cl-name{font-size:var(--fs-xs);color:var(--color-text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cl-dist{font-size:var(--fs-xs);color:var(--color-text-4);font-family:var(--font-mono);flex-shrink:0}.cl-excl-btn{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:var(--r-sm);flex-shrink:0;font-size:14px;color:var(--color-text-4);cursor:pointer;transition:background var(--t-fast),color var(--t-fast);line-height:1}.cl-excl-btn:hover{background:var(--color-warning-muted);color:var(--color-warning)}.cl-excl-btn:disabled{opacity:.4;cursor:default}.cl-progress-wrap{display:flex;align-items:center;justify-content:center;gap:10px;flex:1;color:var(--color-text-3);font-size:var(--fs-sm)}.cl-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:var(--sp-4);color:var(--color-text-4);font-size:var(--fs-sm);text-align:center}.cl-excl-item{display:flex;align-items:center;gap:var(--sp-2);padding:5px var(--sp-3);border-bottom:1px solid var(--color-border);transition:background var(--t-fast)}.cl-excl-item:hover{background:var(--color-bg-hover)}.cl-excl-icon{width:7px;height:7px;border-radius:2px;flex-shrink:0;background:var(--color-bg-4);border:1px solid var(--color-border-2)}.cl-excl-label{font-size:var(--fs-xs);color:var(--color-text-2);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cl-excl-remove{display:flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:var(--r-sm);flex-shrink:0;color:var(--color-text-4);cursor:pointer;transition:background var(--t-fast),color var(--t-fast)}.cl-excl-remove:hover{background:var(--color-error-muted);color:var(--color-error)}.cl-legend{display:flex;align-items:center;gap:12px;flex-shrink:0;padding:4px 10px;border-top:1px solid var(--color-border);background:var(--color-bg-1)}.btn{display:inline-flex;align-items:center;gap:var(--sp-1);cursor:pointer;border-radius:var(--r-base);font-size:var(--fs-md);font-weight:var(--fw-medium);transition:background var(--t-fast),color var(--t-fast),border-color var(--t-fast);padding:6px 12px;white-space:nowrap}.btn--primary{background:var(--color-accent);color:#fff;border:1px solid transparent}.btn--primary:hover{background:var(--color-accent-hover)}.btn--primary:disabled{opacity:.5;cursor:not-allowed}.btn--ghost{background:transparent;color:var(--color-text-2);border:1px solid var(--color-border-2)}.btn--ghost:hover{background:var(--color-bg-hover);color:var(--color-text-1);border-color:var(--color-border-strong)}.btn--danger{background:var(--color-error-muted);color:var(--color-error);border:1px solid transparent}.btn--danger:hover{background:var(--color-error);color:#fff}.btn-icon{display:inline-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)}.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)}.modal-overlay{position:fixed;inset:0;background:#000000a6;display:flex;align-items:center;justify-content:center;z-index:var(--z-modal);backdrop-filter:blur(2px)}.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;max-height:90vh;display:flex;flex-direction:column}.modal--wide{max-width:760px}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:18px 24px;border-bottom:1px solid var(--color-border);flex-shrink:0}.modal-title{font-size:var(--fs-xl);font-weight:var(--fw-semibold);color:var(--color-text-1)}.modal-close{background:none;border:none;color:var(--color-text-3);font-size:20px;cursor:pointer;padding:2px 6px;border-radius:var(--r-sm);transition:color var(--t-fast);line-height:1}.modal-close:hover{color:var(--color-text-1)}.modal-body{padding:24px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:var(--sp-4)}.modal-footer{display:flex;justify-content:flex-end;gap:var(--sp-3);padding:16px 24px;border-top:1px solid var(--color-border);flex-shrink:0}.form-input{background:var(--color-bg-3);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[readonly]{opacity:.7;cursor:default}.form-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3)}.form-span-2{grid-column:1 / -1}.form-error{font-size:var(--fs-sm);color:var(--color-error);margin-top:var(--sp-1)}.badge{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-xs);font-weight:var(--fw-medium);padding:1px 6px;border-radius:var(--r-full)}.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--default{background:var(--color-bg-3);color:var(--color-text-3)}.notification-btn{position:relative}.notification-badge{position:absolute;top:2px;right:2px;width:14px;height:14px;border-radius:50%;background:var(--color-error);color:#fff;font-size:9px;font-weight:var(--fw-bold);display:flex;align-items:center;justify-content:center}.notification-dropdown{position:absolute;top:calc(100% + 6px);right:0;width:320px;background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:var(--r-md);box-shadow:var(--shadow-lg);z-index:var(--z-modal);overflow:hidden}.notification-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-3);border-bottom:1px solid var(--color-border)}.notification-header span{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--color-text-1)}.notification-list{max-height:300px;overflow-y:auto}.notification-item{display:flex;gap:var(--sp-2);padding:var(--sp-3);border-bottom:1px solid var(--color-border);cursor:pointer;transition:background var(--t-fast)}.notification-item:hover{background:var(--color-bg-hover)}.notification-item.unread{border-left:2px solid var(--color-accent)}.notification-dot{width:6px;height:6px;border-radius:50%;background:var(--color-accent);margin-top:5px;flex-shrink:0}.notification-text{font-size:var(--fs-sm);color:var(--color-text-2);flex:1}.notification-time{font-size:var(--fs-xs);color:var(--color-text-4);flex-shrink:0}.context-menu{position:fixed;background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:var(--r-md);box-shadow:var(--shadow-lg);z-index:var(--z-modal);min-width:180px;overflow:hidden;padding:4px 0}.context-menu-item{display:flex;align-items:center;gap:var(--sp-2);padding:7px 14px;font-size:var(--fs-base);color:var(--color-text-2);cursor:pointer;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.danger{color:var(--color-error)}.context-menu-item.danger:hover{background:var(--color-error-muted)}.context-menu-sep{height:1px;background:var(--color-border);margin:4px 0}.context-menu-label{font-size:var(--fs-xs);color:var(--color-text-4);padding:4px 14px 2px;text-transform:uppercase;letter-spacing:.05em}.section-header{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}.section-title{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--color-text-2)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-2);padding:40px var(--sp-4);color:var(--color-text-4);text-align:center}.empty-state svg{opacity:.3}.empty-state p{font-size:var(--fs-sm)}.empty-state small{font-size:var(--fs-xs)}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.header-view-btn{display:flex;align-items:center;gap:5px;padding:4px 10px;height:28px;border-radius:var(--r-base);font-size:var(--fs-base);font-weight:var(--fw-medium);color:var(--color-text-3);border:1px solid transparent;cursor:pointer;transition:all var(--t-fast);white-space:nowrap}.header-view-btn:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.header-view-btn.active{color:var(--color-accent);background:var(--color-accent-muted);border-color:var(--color-accent-border)}.header-toolbar{display:flex;align-items:center;gap:2px;flex:1;justify-content:center}.header-tool-btn{display:flex;align-items:center;gap:5px;padding:4px 10px;height:28px;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);white-space:nowrap}.header-tool-btn:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.header-tool-btn.active{background:var(--color-accent-muted);color:var(--color-accent)}.header-tool-sep{width:1px;height:20px;background:var(--color-border);margin:0 2px}.phase-badge{font-size:10px;font-weight:var(--fw-semibold);padding:1px 7px;border-radius:var(--r-full);background:var(--color-accent-muted);color:var(--color-accent);letter-spacing:.03em;white-space:nowrap}.nav-models-section{border-bottom:1px solid var(--color-border);flex-shrink:0}.nav-models-header{display:flex;align-items:center;justify-content:space-between;padding:5px var(--sp-3);background:var(--color-bg-1)}.nav-models-title{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--color-text-4);text-transform:uppercase;letter-spacing:.05em}.nav-model-list{overflow:hidden;max-height:200px;overflow-y:auto}.nav-model-row{display:flex;align-items:center;gap:var(--sp-2);padding:4px var(--sp-3);min-height:28px;transition:background var(--t-fast);cursor:default}.nav-model-row:hover{background:var(--color-bg-hover)}.nav-model-row:hover .nav-model-del{opacity:1!important}.nav-model-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.nav-model-name{font-size:var(--fs-sm);color:var(--color-text-2);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-model-size{font-size:10px;color:var(--color-text-4);flex-shrink:0}.nav-model-del{color:var(--color-text-4);transition:opacity var(--t-fast),color var(--t-fast)}.nav-model-del:hover{color:var(--color-error)!important}.layer-view-tabs{display:flex;gap:2px;padding:var(--sp-2) var(--sp-2) 0;border-bottom:1px solid var(--color-border);flex-shrink:0}.layer-tab{padding:4px 10px;border-radius:var(--r-sm) var(--r-sm) 0 0;font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--color-text-3);cursor:pointer;transition:background var(--t-fast),color var(--t-fast);border-bottom:2px solid transparent}.layer-tab:hover{color:var(--color-text-1);background:var(--color-bg-hover)}.layer-tab.active{color:var(--color-accent);border-bottom-color:var(--color-accent)}.layer-toolbar{display:flex;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border);flex-shrink:0}.btn--sm{padding:3px 8px;font-size:var(--fs-xs)}.layer-list{flex:1;overflow-y:auto}.lsec-hdr{display:flex;align-items:center;gap:var(--sp-2);padding:7px var(--sp-3);cursor:pointer;user-select:none;border-bottom:1px solid var(--color-border);background:var(--color-bg-1);font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--color-text-3);text-transform:uppercase;letter-spacing:.04em;position:sticky;top:0;z-index:1}.lsec-hdr:hover{background:var(--color-bg-2)}.lsec-chevron{display:flex;align-items:center;color:var(--color-text-4);transition:transform .15s}.lsec-title{flex:1}.lsec-badge{font-size:10px;background:var(--color-accent);color:#fff;border-radius:10px;padding:1px 6px;font-weight:var(--fw-semibold)}.layer-empty{padding:var(--sp-3) var(--sp-3);font-size:var(--fs-sm);color:var(--color-text-4);text-align:center}.lsec-del{color:var(--color-text-4)}.lsec-del:hover{color:var(--color-danger, #ef4444)}.layer-row{display:flex;align-items:center;gap:var(--sp-2);padding:5px var(--sp-3);border-bottom:1px solid var(--color-border);min-height:30px}.layer-row--child{padding-left:calc(var(--sp-3) + 16px)}.disc-row{display:flex;align-items:center;gap:var(--sp-2);padding:6px var(--sp-3);border-bottom:1px solid var(--color-border);background:var(--color-bg-1)}.layer-cb{accent-color:var(--color-accent);flex-shrink:0;cursor:pointer}.layer-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.layer-name{font-size:var(--fs-sm);color:var(--color-text-2);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layer-controls{display:flex;align-items:center;gap:4px;flex-shrink:0}.layer-opacity{width:60px;accent-color:var(--color-accent)}.layer-opacity-val{font-size:10px;color:var(--color-text-4);font-family:var(--font-mono);width:30px;text-align:right}.history-panel{display:flex;flex-direction:column;height:100%}.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;flex-wrap:wrap}.history-obj-label{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--color-text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.history-list{flex:1;overflow-y:auto}.history-empty{padding:var(--sp-4);font-size:var(--fs-sm);color:var(--color-text-4);text-align:center}.history-entry{padding:var(--sp-3);border-bottom:1px solid var(--color-border)}.history-entry-header{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:4px}.history-entry-name{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--color-text-1);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.history-entry-type{font-size:10px;padding:1px 6px;border-radius:var(--r-full);background:var(--color-bg-3);color:var(--color-text-4);flex-shrink:0}.history-del{opacity:0;color:var(--color-text-4);transition:opacity var(--t-fast)}.history-entry:hover .history-del{opacity:1}.history-del:hover{color:var(--color-error)!important}.history-badges{display:flex;flex-wrap:wrap;gap:4px;margin:4px 0}.history-badge{font-size:10px;padding:1px 6px;border-radius:var(--r-full);background:var(--color-bg-3);color:var(--color-text-3);border:1px solid var(--color-border)}.history-entry-desc{font-size:var(--fs-xs);color:var(--color-text-3);margin:4px 0;line-height:1.5;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}.history-entry-file{font-size:var(--fs-xs);color:var(--color-accent);display:flex;align-items:center;gap:4px;margin:4px 0}.history-entry-date{font-size:10px;color:var(--color-text-4);margin-top:4px}.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}.activity-list{flex:1;overflow-y:auto}.activity-entry{display:flex;align-items:center;gap:var(--sp-2);padding:5px var(--sp-3);border-bottom:1px solid var(--color-border)}.activity-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.activity-label{font-size:var(--fs-xs);color:var(--color-text-2);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.activity-time{font-size:10px;color:var(--color-text-4);font-family:var(--font-mono);flex-shrink:0}.settings-stabs{display:flex;gap:0;border-bottom:1px solid var(--color-border);background:var(--color-surface-2);flex-shrink:0;position:sticky;top:0;z-index:1}.settings-stab{padding:var(--sp-3) var(--sp-4);font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--color-text-3);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:color .15s;margin-bottom:-1px}.settings-stab:hover{color:var(--color-text-1)}.settings-stab--active{color:var(--color-accent);border-bottom-color:var(--color-accent)}.settings-stab-pane{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column}.rbac-inline-header{padding:var(--sp-4) var(--sp-5) var(--sp-2)}.rbac-inline-title{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--color-text-1)}.settings-layout{overflow-y:auto;height:100%}.settings-section{padding:var(--sp-4);border-bottom:1px solid var(--color-border)}.settings-section-title{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--color-text-4);text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--sp-3)}.props-type-chip{font-size:10px;padding:1px 6px;border-radius:var(--r-full);background:var(--color-accent-muted);color:var(--color-accent);font-weight:var(--fw-medium);white-space:nowrap;flex-shrink:0}.props-actions{display:flex;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border);flex-shrink:0;flex-wrap:wrap}.props-action-btn{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:var(--r-base);font-size:var(--fs-xs);color:var(--color-text-3);background:var(--color-bg-3);border:1px solid var(--color-border-2);cursor:pointer;white-space:nowrap;transition:background var(--t-fast),color var(--t-fast),border-color var(--t-fast)}.props-action-btn:hover{background:var(--color-bg-hover);color:var(--color-text-1);border-color:var(--color-border-strong)}.props-set-badge{font-size:9px;padding:1px 5px;border-radius:var(--r-full);font-weight:var(--fw-medium);white-space:nowrap;flex-shrink:0;margin-left:auto}.props-set-badge--pset{background:color-mix(in srgb,var(--color-accent) 15%,transparent);color:var(--color-accent)}.props-set-badge--qset{background:color-mix(in srgb,var(--color-warning) 15%,transparent);color:var(--color-warning)}bim-button,bim-panel,bim-tabs{--bim-ui_accent-base: var(--color-accent)}.settings-outer-tabs{display:flex;border-bottom:2px solid var(--color-border);background:var(--color-surface-2)}.settings-outer-tab{flex:1;padding:14px var(--sp-4);font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--color-text-3);background:none;border:none;border-bottom:3px solid transparent;cursor:pointer;transition:all var(--t-fast);margin-bottom:-2px;text-align:center}.settings-outer-tab:hover{color:var(--color-text-1);background:var(--color-bg-hover)}.settings-outer-tab--active{color:var(--color-accent);border-bottom-color:var(--color-accent);background:var(--color-surface-1)}.cust-tabs{display:flex;border-bottom:1px solid var(--color-border);padding:0 var(--sp-4)}.cust-tab{padding:10px 16px;font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--color-text-3);border-bottom:2px solid transparent;cursor:pointer;transition:all var(--t-fast);margin-bottom:-1px}.cust-tab:hover{color:var(--color-text-1)}.cust-tab.active{color:var(--color-accent);border-bottom-color:var(--color-accent)}.cust-body{padding:var(--sp-4)}.cust-section{display:flex;flex-direction:column;gap:var(--sp-4)}.cust-group{display:flex;flex-direction:column;gap:var(--sp-2)}.cust-group-label{font-size:10px;font-weight:var(--fw-semibold);letter-spacing:.06em;color:var(--color-text-4);text-transform:uppercase}.cust-row{display:flex;gap:var(--sp-2)}.cust-mode-btn{display:flex;align-items:center;gap:8px;flex:1;padding:10px 14px;border-radius:var(--r-base);border:1px solid var(--color-border-2);color:var(--color-text-2);font-size:var(--fs-sm);cursor:pointer;background:var(--color-bg-3);transition:all var(--t-fast)}.cust-mode-btn:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.cust-mode-btn.active{border-color:var(--color-accent);color:var(--color-accent);background:var(--color-accent-muted)}.cust-swatches{display:flex;gap:8px;flex-wrap:wrap}.cust-swatch{width:28px;height:28px;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:transform var(--t-fast),border-color var(--t-fast)}.cust-swatch:hover{transform:scale(1.15)}.cust-swatch.active{border-color:var(--color-text-1);box-shadow:0 0 0 2px var(--color-bg-1),0 0 0 4px currentColor}input[type=range]{-webkit-appearance:none;height:4px;border-radius:2px;background:var(--color-bg-3);outline:none;cursor:pointer}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:var(--color-accent);border:2px solid var(--color-bg-1)}.cust-range-lbl{font-size:var(--fs-xs);color:var(--color-text-3);white-space:nowrap}.cust-range-val{font-size:var(--fs-sm);color:var(--color-text-1);min-width:42px;text-align:right}.cust-check-row{display:flex;align-items:center;gap:10px;font-size:var(--fs-sm);color:var(--color-text-2);padding:4px 0;cursor:pointer}.cust-check-row input[type=checkbox]{width:16px;height:16px;accent-color:var(--color-accent);cursor:pointer}.cust-module-row{display:flex;align-items:center;gap:10px;font-size:var(--fs-sm);color:var(--color-text-2);padding:5px 0;cursor:pointer}.cust-module-row input[type=checkbox]{width:16px;height:16px;accent-color:var(--color-accent);cursor:pointer}.cust-module-icon{display:flex;align-items:center;color:var(--color-text-3)}.cust-reset-btn{width:100%;padding:10px;border-radius:var(--r-base);border:1px solid var(--color-border-2);color:var(--color-text-2);font-size:var(--fs-sm);cursor:pointer;background:var(--color-bg-3);margin-top:var(--sp-2);transition:background var(--t-fast),color var(--t-fast)}.cust-reset-btn:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.cust-swatch--bg{border-radius:50%}.cust-bg-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.cust-bg-swatch{display:flex;flex-direction:column;align-items:center;gap:4px;background:none;border:2px solid transparent;border-radius:6px;padding:5px 4px 4px;cursor:pointer;transition:border-color .15s,background .15s}.cust-bg-swatch:hover{background:var(--color-bg-hover);border-color:var(--color-border-2)}.cust-bg-swatch.active{border-color:var(--color-accent);background:var(--color-accent-muted)}.cust-bg-preview{width:32px;height:32px;border-radius:50%;border:1px solid rgba(128,128,128,.3);display:block;flex-shrink:0}.cust-bg-label{font-size:9px;color:var(--color-text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;text-align:center;line-height:1.2}.cust-bg-swatch.active .cust-bg-label{color:var(--color-accent)}.meas-label{position:absolute;transform:translate(-50%,-50%);background:#000000c7;color:#0f9;font-size:12px;font-family:var(--font-mono, monospace);font-weight:600;padding:3px 9px;border-radius:12px;pointer-events:none;white-space:nowrap;border:1px solid rgba(0,255,153,.35);letter-spacing:.02em;text-shadow:0 0 8px rgba(0,255,153,.5)}.meas-hud{pointer-events:auto;display:flex;flex-direction:row;align-items:center;gap:2px;background:var(--color-bg-3);border:1px solid var(--color-border);border-radius:var(--r-md);padding:4px;box-shadow:var(--shadow-md);animation:meas-hud-in .12s ease}@keyframes meas-hud-in{0%{opacity:0;transform:translate(-6px)}to{opacity:1;transform:translate(0)}}.meas-hud-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:42px;height:42px;padding:0 6px;border:none;border-radius:var(--r-base);background:transparent;color:var(--color-text-3);cursor:pointer;font-size:9px;font-family:var(--font-sans, system-ui);transition:background var(--t-fast),color var(--t-fast)}.meas-hud-btn:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.meas-hud-btn.active{background:var(--color-accent-muted);color:var(--color-accent)}.meas-hud-btn[data-meas=snap].active{background:#ffcc0026;color:#fc0}.meas-hud-sep{width:1px;height:28px;background:var(--color-border);margin:0 2px}.meas-label[data-constraint=h]{color:#4af;border-color:#44aaff59;text-shadow:0 0 8px rgba(68,170,255,.5)}.meas-label[data-constraint=v]{color:#f92;border-color:#ff992259;text-shadow:0 0 8px rgba(255,153,34,.5)}.meas-label[data-constraint=normal]{color:#c6f;border-color:#cc66ff59;text-shadow:0 0 8px rgba(204,102,255,.5)}.meas-label{pointer-events:auto;display:flex;align-items:center;gap:6px}.meas-label-layer{position:absolute;inset:0;overflow:hidden;pointer-events:none}.meas-label.is-preview,.meas-text{pointer-events:none}.meas-del{pointer-events:auto;background:none;border:none;cursor:pointer;color:inherit;opacity:0;font-size:10px;line-height:1;padding:0 1px;transition:opacity .15s;flex-shrink:0}.meas-label:hover .meas-del{opacity:.7}.meas-del:hover{opacity:1!important}.draw-hud{pointer-events:auto;display:flex;flex-direction:row;align-items:center;gap:2px;background:var(--color-bg-3);border:1px solid var(--color-border);border-radius:var(--r-md);padding:4px;box-shadow:var(--shadow-md);animation:meas-hud-in .12s ease}.draw-hud-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:42px;height:42px;padding:0 6px;border:none;border-radius:var(--r-base);background:transparent;color:var(--color-text-3);cursor:pointer;font-size:9px;font-family:var(--font-sans, system-ui);transition:background var(--t-fast),color var(--t-fast)}.draw-hud-btn:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.draw-hud-btn.active{background:var(--color-accent-muted);color:var(--color-accent)}.draw-hud-sep{width:1px;height:28px;background:var(--color-border);margin:0 2px}.draw-hud-colors{display:flex;align-items:center;gap:4px;padding:0 4px}.draw-hud-swatch{width:16px;height:16px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0;box-shadow:0 0 0 1px #80808059;transition:transform var(--t-fast)}.draw-hud-swatch:hover{transform:scale(1.15)}.draw-hud-swatch.active{border-color:var(--color-accent)}.draw-hud-thickness{display:flex;align-items:center;gap:6px;padding:0 6px}.draw-hud-slider{width:64px;accent-color:var(--color-accent);cursor:pointer;height:4px}.draw-hud-thickness-value{font-size:10px;font-weight:600;color:var(--color-text-2);min-width:34px;text-align:right;font-family:var(--font-mono, monospace)}.draw-hud-canvas-chip{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:42px;height:42px;padding:0 6px;border:1px dashed var(--color-border);border-radius:var(--r-base);background:transparent;color:var(--color-text-3);cursor:grab;font-size:9px;font-family:var(--font-sans, system-ui);user-select:none;transition:background var(--t-fast),color var(--t-fast)}.draw-hud-canvas-chip:hover{background:var(--color-bg-hover);color:var(--color-text-1);border-color:var(--color-accent)}.draw-hud-canvas-chip:active{cursor:grabbing}.draw-layers{pointer-events:auto;width:168px;background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:8px;box-shadow:0 4px 20px #00000073;overflow:hidden;font-size:12px;color:var(--color-text-1)}.draw-layers-head{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:5px 6px 5px 10px;background:var(--color-surface-3);border-bottom:1px solid var(--color-border)}.draw-layers-title{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-2)}.draw-layers-all{background:none;border:1px solid var(--color-border);border-radius:3px;padding:2px 6px;font-size:9px;font-family:var(--font-sans, system-ui);color:var(--color-text-3);cursor:pointer;white-space:nowrap;transition:color var(--t-fast),background var(--t-fast)}.draw-layers-all:hover{color:var(--color-text-1);background:var(--color-surface-hover);border-color:var(--color-accent)}.draw-layers-sheet{background:none;border:none;padding:2px;cursor:pointer;color:var(--color-text-3);display:flex;align-items:center;border-radius:3px;flex-shrink:0;transition:color var(--t-fast),background var(--t-fast)}.draw-layers-sheet:hover{color:var(--color-text-1);background:var(--color-surface-hover)}.draw-layers-sheet.off{opacity:.4}.draw-layers-row{display:flex;align-items:center;gap:6px;padding:5px 8px;border-bottom:1px solid var(--color-border)}.draw-layers-row:last-child{border-bottom:none}.draw-layers-row.hidden .draw-layers-name{opacity:.45;text-decoration:line-through}.draw-layers-eye,.draw-layers-del{background:none;border:none;padding:2px;cursor:pointer;color:var(--color-text-3);display:flex;align-items:center;border-radius:3px;flex-shrink:0;transition:color var(--t-fast),background var(--t-fast)}.draw-layers-eye:hover,.draw-layers-del:hover{color:var(--color-text-1);background:var(--color-surface-hover)}.draw-layers-name{flex:1;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.draw-layers-count{padding-right:4px;font-size:10px;font-variant-numeric:tabular-nums;color:var(--color-text-3)}.projection-hud{display:flex;flex-direction:column;gap:3px;pointer-events:auto}.projection-hud-sep{height:1px;background:#ffffff1a;margin:2px 0}.projection-hud-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:4px;border:1px solid rgba(255,255,255,.07);cursor:pointer;background:#1c1e24eb;color:#bec0c8c7;transition:background var(--t-fast),color var(--t-fast),border-color var(--t-fast)}.projection-hud-btn:hover{background:#3c6ec8eb;color:#fff;border-color:#78a0ff99}.projection-hud-btn.active{background:#2c303af5;color:#dcdee6f2;border-color:#ffffff38}.projection-hud-sun-wrap{position:relative}.projection-hud-sun-popup{position:absolute;right:36px;bottom:0;background:#14161ef5;border:1px solid rgba(255,255,255,.12);border-radius:8px;padding:10px 14px 10px 12px;display:flex;flex-direction:column;gap:8px;pointer-events:auto;z-index:20;min-width:160px;box-shadow:0 4px 20px #00000080}.projection-hud-sun-label{font-size:11px;color:#bec0d2b3;letter-spacing:.04em;display:flex;justify-content:space-between;align-items:center}.projection-hud-sun-label span[data-testid=sun-value]{color:#dcdef0f2;font-weight:600}.projection-hud-sun-popup input[type=range]{width:136px;accent-color:#4a8cff;cursor:pointer}.section-hud{display:flex;flex-direction:row;align-items:center;gap:5px;pointer-events:auto}.section-hud-canvas{width:92px;height:92px;border-radius:10px;cursor:pointer;display:block;background:#242836eb;outline:1px solid rgba(255,255,255,.22)}.section-hud-toggle{width:28px;height:28px;border:none;border-radius:6px;background:#242836eb;color:#b4b9c8d9;cursor:pointer;display:flex;align-items:center;justify-content:center;outline:1px solid rgba(255,255,255,.22);transition:background var(--t-fast),color var(--t-fast);flex-shrink:0}.section-hud-toggle:hover{background:#282d3aeb}.section-hud-toggle.is-hidden{color:var(--color-accent)}.pick-menu{position:fixed;z-index:9999;background:#1a1c24;border:1px solid rgba(255,255,255,.09);border-radius:10px;padding:5px;min-width:200px;box-shadow:0 8px 32px #000000b3;pointer-events:auto;font-family:system-ui,sans-serif;font-size:13px;color:#dcdee8eb}.pick-submenu{min-width:190px}.pick-menu-row{padding:7px 12px;border-radius:6px;cursor:pointer;display:flex;align-items:center;gap:10px;transition:background .1s;position:relative}.pick-menu-row:hover{background:#ffffff12}.pick-menu-trigger{cursor:default}.pick-menu-icon{flex-shrink:0;display:flex;align-items:center;opacity:.75}.pick-menu-label{flex:1}.pick-menu-chevron{opacity:.5;display:flex;align-items:center}.pick-menu-sep{height:1px;background:#ffffff12;margin:4px 2px}.pick-menu-sub-header{padding:5px 12px 4px;color:#8c91a0b3;font-size:10px;letter-spacing:.06em;text-transform:uppercase}.pick-menu-sub-row{padding:6px 12px;border-radius:6px;cursor:pointer;display:flex;align-items:center;gap:8px;transition:background .1s;user-select:none}.pick-menu-sub-row:hover{background:#ffffff0f}.pick-menu-sub-row.selected{background:#3c50a059}.pick-menu-sub-dot{width:8px;height:8px;border-radius:50%;background:#46a;flex-shrink:0;display:inline-block;transition:background .1s}.pick-menu-sub-row.selected .pick-menu-sub-dot{background:#8af}.pick-menu-sub-check{flex-shrink:0;color:#8af;font-size:12px}.pick-menu-sub-label{flex:1}.origin-hud{width:244px;background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:8px;box-shadow:0 4px 20px #00000073;z-index:60;overflow:hidden;font-size:12px;color:var(--color-text-1)}.origin-hud-header{display:flex;align-items:center;justify-content:space-between;padding:8px 10px 8px 12px;background:var(--color-surface-3);border-bottom:1px solid var(--color-border)}.origin-hud-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-2)}.origin-hud-close{background:none;border:none;padding:2px;cursor:pointer;color:var(--color-text-3);display:flex;align-items:center;border-radius:3px;transition:color .15s,background .15s}.origin-hud-close:hover{color:var(--color-text-1);background:var(--color-surface-hover)}.origin-hud-body{padding:10px 12px 12px;display:flex;flex-direction:column;gap:8px}.origin-hud-toggle{display:flex;align-items:center;gap:6px;background:var(--color-surface-3);border:1px solid var(--color-border);border-radius:5px;padding:5px 9px;cursor:pointer;color:var(--color-text-2);font-size:11px;transition:background .15s,color .15s}.origin-hud-toggle:hover{background:var(--color-surface-hover);color:var(--color-text-1)}.origin-hud-toggle.off{opacity:.55}.origin-hud-axes{display:flex;flex-wrap:wrap;gap:4px 10px;padding:4px 0 2px}.origin-hud-axes span{font-size:11px;color:var(--color-text-3)}.origin-hud-sep{height:1px;background:var(--color-border);margin:2px 0}.origin-hud-section{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--color-text-3);margin-bottom:-2px}.origin-hud-field{display:grid;grid-template-columns:20px 1fr;align-items:center;gap:6px}.origin-hud-field label{font-size:11px;font-weight:600;color:var(--color-text-3)}.origin-hud-field input{background:var(--color-surface-1);border:1px solid var(--color-border);border-radius:4px;padding:4px 7px;font-size:11px;color:var(--color-text-1);width:100%;box-sizing:border-box;transition:border-color .15s;font-family:inherit}.origin-hud-field input:focus{outline:none;border-color:var(--color-accent)}.origin-hud-field input::placeholder{color:var(--color-text-4)}.origin-hud-btns{display:flex;gap:6px;margin-top:2px}.origin-hud-btn{flex:1;padding:5px 0;border-radius:5px;border:1px solid var(--color-border);background:var(--color-surface-3);color:var(--color-text-2);font-size:11px;cursor:pointer;transition:background .15s,color .15s}.origin-hud-btn:hover{background:var(--color-surface-hover);color:var(--color-text-1)}.origin-hud-btn.primary{background:var(--color-accent);border-color:var(--color-accent);color:#fff;font-weight:600}.origin-hud-btn.primary:hover{filter:brightness(1.12)}.origin-hud-status{min-height:16px;font-size:11px;color:var(--color-text-3)}.origin-hud-status.ok{color:#4caf50}.origin-hud-status.warn{color:#ff9800}.explode-hud{width:220px;background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:8px;box-shadow:0 4px 20px #00000073;z-index:60;overflow:hidden;font-size:12px;color:var(--color-text-1)}.explode-hud-header{display:flex;align-items:center;justify-content:space-between;padding:8px 10px 8px 12px;background:var(--color-surface-3);border-bottom:1px solid var(--color-border)}.explode-hud-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-2)}.explode-hud-close{background:none;border:none;padding:2px;cursor:pointer;color:var(--color-text-3);display:flex;align-items:center;border-radius:3px;transition:color .15s,background .15s}.explode-hud-close:hover{color:var(--color-text-1);background:var(--color-surface-hover)}.explode-hud-body{padding:12px 14px 14px;display:flex;flex-direction:column;gap:8px}.explode-hud-label-row{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:var(--color-text-3)}.explode-hud-value{font-size:11px;font-weight:600;color:var(--color-text-1);min-width:20px;text-align:right}.explode-hud-slider{width:100%;accent-color:var(--color-accent);cursor:pointer;height:4px}.mt-hud{width:242px;background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:8px;box-shadow:0 4px 20px #00000073;z-index:60;overflow:hidden;font-size:12px;color:var(--color-text-1)}.mt-hud-header{display:flex;align-items:center;justify-content:space-between;padding:8px 10px 8px 12px;background:var(--color-surface-3);border-bottom:1px solid var(--color-border)}.mt-hud-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-2)}.mt-hud-close{background:none;border:none;padding:2px;cursor:pointer;color:var(--color-text-3);display:flex;align-items:center;border-radius:3px;transition:color .15s,background .15s}.mt-hud-close:hover{color:var(--color-text-1);background:var(--color-surface-hover)}.mt-hud-body{padding:10px 12px 12px;display:flex;flex-direction:column;gap:8px}.mt-hud-row{display:flex;align-items:center;gap:8px}.mt-hud-label{font-size:11px;color:var(--color-text-3);flex-shrink:0}.mt-hud-select{flex:1;background:var(--color-surface-3);border:1px solid var(--color-border);border-radius:4px;color:var(--color-text-1);font-size:11px;padding:4px 6px;cursor:pointer;outline:none;min-width:0}.mt-hud-coords{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}.mt-hud-field{display:flex;flex-direction:column;gap:3px}.mt-hud-field label{font-size:10px;font-weight:700;text-align:center}.mt-hud-field input{width:100%;box-sizing:border-box;background:var(--color-surface-3);border:1px solid var(--color-border);border-radius:4px;color:var(--color-text-1);font-size:11px;font-family:var(--font-mono);padding:4px 5px;text-align:right;outline:none}.mt-hud-field input:focus{border-color:var(--color-accent)}.mt-hud-btns{display:flex;gap:6px}.mt-hud-btn{flex:1;padding:5px 8px;border-radius:5px;font-size:11px;cursor:pointer;border:1px solid var(--color-border);background:var(--color-surface-3);color:var(--color-text-1);transition:background .15s}.mt-hud-btn:hover{background:var(--color-surface-hover)}.mt-hud-apply{background:var(--color-accent);color:#fff;border-color:transparent}.mt-hud-apply:hover{opacity:.88;background:var(--color-accent)}.mt-hud-hint{font-size:10px;color:var(--color-text-4);text-align:center;margin:0}.rbac-tabs{display:flex;gap:var(--sp-4);padding:0 var(--sp-5);border-bottom:1px solid var(--color-border)}.rbac-tab{background:none;border:none;cursor:pointer;font-size:var(--fs-sm);color:var(--color-text-3);padding:var(--sp-3) 0;border-bottom:2px solid transparent;transition:color .15s,border-color .15s}.rbac-tab--active{color:var(--color-accent);border-bottom-color:var(--color-accent)}.rbac-tab:hover:not(.rbac-tab--active){color:var(--color-text-1)}.rbac-pane{padding:var(--sp-4) var(--sp-5)}.rbac-members-list{display:flex;flex-direction:column;gap:var(--sp-2)}.rbac-member-row{border-radius:var(--r-base);background:var(--color-bg-2);border:1px solid var(--color-border);overflow:hidden}.rbac-member-row--wrap{display:flex;flex-direction:column}.rbac-member-main{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3)}.rbac-avatar{width:32px;height:32px;border-radius:50%;background:var(--color-accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:var(--fs-xs);font-weight:var(--fw-semibold);flex-shrink:0}.rbac-member-info{flex:1;min-width:0}.rbac-member-name{display:block;font-size:var(--fs-sm);color:var(--color-text-1);font-weight:var(--fw-medium)}.rbac-member-email{display:block;font-size:var(--fs-xs);color:var(--color-text-3)}.rbac-self-badge{display:inline-block;font-size:10px;padding:1px 5px;background:var(--color-accent-subtle, rgba(59, 130, 246, .15));color:var(--color-accent);border-radius:4px;margin-left:4px;font-weight:400}.rbac-role-select{width:220px;flex-shrink:0;font-size:var(--fs-xs)!important;padding:4px 8px!important}.rbac-role-label-ro{width:220px;flex-shrink:0;font-size:var(--fs-xs);color:var(--color-text-3);padding:4px 8px;background:var(--color-bg-3);border-radius:var(--r-sm);border:1px solid var(--color-border)}.rbac-remove-btn{flex-shrink:0;color:var(--color-text-3)}.rbac-remove-btn:hover{color:#ef4444}.rbac-modules-btn{display:flex;align-items:center;gap:4px;flex-shrink:0;color:var(--color-text-3);font-size:var(--fs-xs);padding:3px 6px;border-radius:var(--r-sm);border:1px solid transparent}.rbac-modules-btn:hover{background:var(--color-bg-hover);color:var(--color-text-1);border-color:var(--color-border)}.rbac-modules-btn.active{background:var(--color-accent-muted);color:var(--color-accent);border-color:var(--color-accent)}.rbac-modules-btn--custom{color:var(--color-accent)}.rbac-mod-count{font-size:10px}.rbac-module-panel{border-top:1px solid var(--color-border);background:var(--color-bg-3);padding:10px 14px 12px}.rbac-module-panel-header{display:flex;align-items:center;justify-content:space-between;font-size:var(--fs-xs);color:var(--color-text-3);margin-bottom:10px}.rbac-module-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px 12px}.rbac-module-check{display:flex;align-items:center;gap:6px;font-size:var(--fs-xs);color:var(--color-text-2);cursor:pointer}.rbac-module-check input{accent-color:var(--color-accent);cursor:pointer}.rbac-module-check:hover{color:var(--color-text-1)}.rbac-add-section{margin-top:var(--sp-4);padding-top:var(--sp-4);border-top:1px solid var(--color-border)}.rbac-add-title{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-3);margin-bottom:var(--sp-2)}.rbac-add-row{display:flex;gap:var(--sp-2);align-items:center}.rbac-perm-table{width:100%;border-collapse:collapse;font-size:var(--fs-xs)}.rbac-perm-table th{text-align:left;padding:var(--sp-2) var(--sp-2);border-bottom:1px solid var(--color-border);color:var(--color-text-3);font-weight:var(--fw-medium);white-space:nowrap}.rbac-perm-table td{padding:var(--sp-2);border-bottom:1px solid var(--color-border-light, var(--color-border));vertical-align:top}.rbac-perm-role{color:var(--color-text-1);font-weight:var(--fw-medium)}.rbac-perm-desc{color:var(--color-text-3);font-weight:400;display:block;margin-top:2px}.rbac-perm-cell{text-align:center}.rbac-yes{color:#22c55e;font-weight:700}.rbac-no{color:var(--color-text-4)}.rbac-invite-form{border-top:1px solid var(--color-border);padding-top:var(--sp-4)}.rbac-invite-grid{display:grid;grid-template-columns:1fr 220px;gap:var(--sp-2);margin-bottom:var(--sp-3)}.rbac-link-box{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:var(--sp-2) var(--sp-3);margin-bottom:var(--sp-2)}.rbac-link-text{flex:1;font-size:var(--fs-xs);color:var(--color-text-2);font-family:var(--font-mono, monospace);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rbac-hint{font-size:var(--fs-xs);color:var(--color-text-4);margin-top:var(--sp-2)}.rbac-badge{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;border-radius:8px;background:var(--color-accent);color:#fff;font-size:10px;font-weight:600;padding:0 4px;margin-left:4px}.rbac-empty{font-size:var(--fs-sm);color:var(--color-text-4);padding:var(--sp-3) 0}.rbac-avatar--pending{background:var(--color-bg-3);color:var(--color-text-3);border:1px dashed var(--color-border)}.rbac-role-editor{display:flex;flex-direction:column;gap:var(--sp-3);background:var(--color-bg-3);border:1px solid var(--color-border);border-radius:var(--r-base);padding:var(--sp-3);margin:var(--sp-2) 0}.rbac-role-editor-name{display:flex;flex-direction:column;gap:4px;font-size:var(--fs-xs);color:var(--color-text-3);max-width:280px}.rbac-role-editor-section{display:flex;flex-direction:column;gap:6px}.rbac-role-editor-title{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-3)}.invite-info-box{background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:var(--r-base);padding:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-1)}.invite-info-label{font-size:var(--fs-sm);color:var(--color-text-2)}.invite-info-project{font-size:var(--fs-base);color:var(--color-text-1)}.invite-info-role{font-size:var(--fs-sm);color:var(--color-text-2)}.invite-role-badge{display:inline-block;padding:2px 8px;border-radius:4px;background:#3b82f626;color:var(--color-accent);font-size:var(--fs-xs);font-weight:600}.pcm-layout{display:flex;flex-direction:column;gap:var(--sp-4);padding:var(--sp-3);height:100%;overflow-y:auto}.pcm-header{display:flex;flex-direction:column;gap:var(--sp-1)}.pcm-title{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--color-text-1)}.pcm-desc{font-size:var(--fs-xs);color:var(--color-text-3)}.pcm-empty{font-size:var(--fs-sm);color:var(--color-text-4);padding:var(--sp-3) 0}.pcm-section{display:flex;flex-direction:column;gap:var(--sp-2)}.pcm-label{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-3);margin-bottom:var(--sp-1)}.pcm-slider-row{display:flex;align-items:center;gap:var(--sp-3)}.pcm-slider{flex:1;accent-color:var(--color-accent)}.pcm-slider-val{font-size:var(--fs-xs);color:var(--color-text-2);min-width:40px;text-align:right}.pcm-hint{font-size:var(--fs-xs);color:var(--color-text-4)}.pcm-btn{display:inline-flex;align-items:center;justify-content:center;padding:var(--sp-2) var(--sp-4);border-radius:var(--r-base);background:var(--color-accent);color:#fff;font-size:var(--fs-sm);font-weight:var(--fw-medium);border:none;cursor:pointer;transition:opacity .15s}.pcm-btn:hover:not(:disabled){opacity:.85}.pcm-btn:disabled{opacity:.45;cursor:not-allowed}.pcm-progress-bar{height:4px;background:var(--color-bg-3);border-radius:2px;overflow:hidden}.pcm-progress-fill{height:100%;background:var(--color-accent);border-radius:2px;transition:width .1s}.pcm-result{display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-3);background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:var(--r-base)}.pcm-result-header{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--color-text-2)}.pcm-export-row{display:flex;gap:var(--sp-2);flex-wrap:wrap}.pcm-export-row .pcm-btn{background:var(--color-bg-3);color:var(--color-text-1);border:1px solid var(--color-border);font-size:var(--fs-xs);padding:var(--sp-1) var(--sp-3)}.pcm-export-row .pcm-btn:hover:not(:disabled){background:var(--color-bg-4, var(--color-bg-3));opacity:1;border-color:var(--color-accent);color:var(--color-accent)}.pcm-label-row{display:flex;align-items:center;gap:var(--sp-2)}.pcm-live-badge{font-size:10px;font-weight:var(--fw-semibold);color:var(--color-accent);letter-spacing:.02em;animation:pcm-pulse 1.6s ease-in-out infinite}@keyframes pcm-pulse{0%,to{opacity:1}50%{opacity:.45}}.pcm-actions-row{display:flex;gap:var(--sp-2)}.pcm-actions-row .pcm-btn{flex:1}.pcm-btn-secondary{background:var(--color-bg-3)!important;color:var(--color-text-1)!important;border:1px solid var(--color-border)!important}.pcm-btn-secondary:hover:not(:disabled){border-color:var(--color-accent)!important;color:var(--color-accent)!important;opacity:1!important}.ifd-layout{display:flex;flex-direction:column;height:100%;overflow:hidden}.ifd-tabs{display:flex;align-items:center;border-bottom:1px solid var(--color-border);flex-shrink:0}.ifd-tab{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);font-size:var(--fs-xs);color:var(--color-text-3);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:color .15s;white-space:nowrap}.ifd-tab:hover{color:var(--color-text-1)}.ifd-tab--active{color:var(--color-accent);border-bottom-color:var(--color-accent)}.ifd-tab--sub{font-size:10px;opacity:.8}.ifd-tab--sub.ifd-tab--active{opacity:1}.ifd-tab-sep{width:1px;height:14px;background:var(--color-border);margin:0 var(--sp-1);flex-shrink:0}.ifd-section-head{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);font-size:10px;font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-4);border-bottom:1px solid var(--color-border);background:var(--color-bg-2);position:sticky;top:0;z-index:1}.ifd-result-row--local{border-left:2px solid var(--color-accent)}.ifd-ai-badge{font-size:10px;padding:1px 5px;border-radius:9px;font-weight:600}.ifd-ai-badge--on{background:#22c55e26;color:#22c55e}.ifd-ai-badge--off{background:var(--color-bg-3);color:var(--color-text-4)}.ifd-pane{flex:1;overflow-y:auto;min-height:0}.ifd-ki-pane{display:flex;flex-direction:column;overflow:hidden}.ifd-search-bar{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}.ifd-search-input{flex:1;background:none;border:none;outline:none;font-size:var(--fs-sm);color:var(--color-text-1)}.ifd-cat-chips{display:flex;flex-wrap:wrap;gap:var(--sp-1);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border);flex-shrink:0}.ifd-cat-chip{font-size:10px;padding:2px 7px;border-radius:10px;border:1px solid var(--color-border);background:var(--color-bg-2);color:var(--color-text-3);cursor:pointer;transition:all .12s}.ifd-cat-chip:hover{border-color:var(--color-accent);color:var(--color-accent)}.ifd-cat-chip--active{background:#3b82f61f;border-color:var(--color-accent);color:var(--color-accent)}.ifd-entries{padding:var(--sp-2);display:flex;flex-direction:column;gap:var(--sp-2)}.ifd-empty{padding:var(--sp-4);text-align:center;color:var(--color-text-4);font-size:var(--fs-sm)}.ifd-entry{padding:var(--sp-3);border:1px solid var(--color-border);border-radius:var(--r-base);background:var(--color-bg-2);transition:border-color .12s}.ifd-entry:hover{border-color:var(--color-accent)}.ifd-entry-head{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;margin-bottom:var(--sp-1)}.ifd-entity-name{font-size:var(--fs-xs);font-weight:var(--fw-medium);font-family:var(--font-mono, monospace);color:var(--color-accent)}.ifd-entry-desc{font-size:var(--fs-xs);color:var(--color-text-2);line-height:1.5;margin:var(--sp-1) 0}.ifd-entry-row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-1);margin-top:var(--sp-1)}.ifd-entry-label{font-size:10px;color:var(--color-text-4);text-transform:uppercase;letter-spacing:.05em;margin-right:var(--sp-1)}.ifd-badge{font-size:10px;padding:1px 6px;border-radius:8px;font-weight:600}.ifd-badge--cat{background:var(--color-bg-3);color:var(--color-text-3)}.ifd-badge--schema-IFC2X3{background:#fbbf2426;color:#f59e0b}.ifd-badge--schema-IFC4{background:#22c55e1f;color:#22c55e}.ifd-badge--schema-beide{background:#3b82f61f;color:var(--color-accent)}.ifd-badge--dep{background:#ef44441f;color:#ef4444}.ifd-pill{display:inline-block;font-size:10px;padding:1px 6px;border-radius:8px;background:var(--color-bg-3);color:var(--color-text-3);font-family:var(--font-mono, monospace)}.ifd-pill--link{border:none;cursor:pointer;color:var(--color-accent);background:#3b82f614}.ifd-pill--link:hover{background:#3b82f633}.ifd-no-api{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-2);padding:var(--sp-5);text-align:center}.ifd-no-api p{font-size:var(--fs-sm);color:var(--color-text-3);margin:0}.ifd-no-api-hint{font-size:var(--fs-xs)!important;color:var(--color-text-4)!important}.ifd-chat{flex:1;overflow-y:auto;padding:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-3);min-height:0}.ifd-chat-welcome{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-2);height:100%;color:var(--color-text-4);text-align:center}.ifd-chat-welcome p{font-size:var(--fs-xs);max-width:260px;line-height:1.5;margin:0}.ifd-msg{display:flex}.ifd-msg--user{justify-content:flex-end}.ifd-msg--assistant{justify-content:flex-start}.ifd-msg-bubble{max-width:88%;padding:var(--sp-2) var(--sp-3);border-radius:var(--r-base);font-size:var(--fs-xs);line-height:1.55}.ifd-msg--user .ifd-msg-bubble{background:var(--color-accent);color:#fff;border-bottom-right-radius:3px}.ifd-msg--assistant .ifd-msg-bubble{background:var(--color-bg-3);color:var(--color-text-1);border-bottom-left-radius:3px}.ifd-code{background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:3px;padding:0 3px;font-family:var(--font-mono, monospace);font-size:10px}.ifd-h4{font-size:var(--fs-xs);font-weight:var(--fw-medium);margin:var(--sp-2) 0 var(--sp-1)}.ifd-ul{margin:var(--sp-1) 0 var(--sp-1) var(--sp-4);padding:0}.ifd-ul li{margin:2px 0}.ifd-typing{display:flex;gap:4px;align-items:center;padding:var(--sp-2) var(--sp-3)!important}.ifd-typing span{width:6px;height:6px;border-radius:50%;background:var(--color-text-3);animation:ifd-bounce 1.2s ease-in-out infinite}.ifd-typing span:nth-child(2){animation-delay:.2s}.ifd-typing span:nth-child(3){animation-delay:.4s}@keyframes ifd-bounce{0%,60%,to{transform:translateY(0)}30%{transform:translateY(-5px)}}.ifd-chat-suggestions{display:flex;flex-wrap:wrap;gap:var(--sp-1);padding:0 var(--sp-3) var(--sp-2);flex-shrink:0}.ifd-suggestion{font-size:10px;padding:3px 8px;border-radius:10px;border:1px solid var(--color-border);background:var(--color-bg-2);color:var(--color-text-3);cursor:pointer;transition:all .12s;text-align:left}.ifd-suggestion:hover{border-color:var(--color-accent);color:var(--color-accent)}.ifd-chat-form{display:flex;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-top:1px solid var(--color-border);flex-shrink:0}.ifd-chat-input{flex:1;background:var(--color-bg-3);border:1px solid var(--color-border);border-radius:var(--r-base);padding:var(--sp-2) var(--sp-3);font-size:var(--fs-xs);color:var(--color-text-1);outline:none}.ifd-chat-input:focus{border-color:var(--color-accent)}.ifd-send-btn{padding:var(--sp-2) var(--sp-3);background:var(--color-accent);color:#fff;border:none;border-radius:var(--r-base);cursor:pointer;display:flex;align-items:center}.ifd-send-btn:hover{opacity:.85}.ifd-content{flex:1;overflow:hidden;min-height:0;display:flex;flex-direction:column}.ifd-loading{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-4);font-size:var(--fs-xs);color:var(--color-text-4)}.ifd-spinner{width:14px;height:14px;border:2px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;animation:ifd-spin .7s linear infinite;flex-shrink:0}@keyframes ifd-spin{to{transform:rotate(360deg)}}.ifd-empty-hint{padding:var(--sp-5) var(--sp-4);text-align:center;font-size:var(--fs-xs);color:var(--color-text-4);line-height:1.5}.ifd-badge--type{text-transform:uppercase;letter-spacing:.04em;font-size:9px}.ifd-badge--class{background:#3b82f61f;color:var(--color-accent)}.ifd-badge--pset{background:#a855f71f;color:#a855f7}.ifd-badge--prop{background:#22c55e1f;color:#22c55e}.ifd-badge--other{background:var(--color-bg-3);color:var(--color-text-3)}.ifd-pill--ifc{background:#3b82f61a;color:var(--color-accent);font-family:var(--font-mono, monospace)}.ifd-ghost-btn{padding:var(--sp-1) var(--sp-2);background:var(--color-bg-3);border:1px solid var(--color-border);border-radius:var(--r-sm);font-size:var(--fs-xs);color:var(--color-text-2);cursor:pointer;transition:all .12s}.ifd-ghost-btn:hover{border-color:var(--color-accent);color:var(--color-accent)}.ifd-danger-btn{padding:var(--sp-1) var(--sp-2);background:none;border:1px solid transparent;border-radius:var(--r-sm);font-size:var(--fs-xs);color:var(--color-text-4);cursor:pointer;transition:all .12s}.ifd-danger-btn:hover{border-color:#ef4444;color:#ef4444}.ifd-back-btn{display:flex;align-items:center;gap:var(--sp-1);padding:var(--sp-1) var(--sp-2);background:none;border:none;border-radius:var(--r-sm);font-size:var(--fs-xs);color:var(--color-text-3);cursor:pointer;transition:color .12s}.ifd-back-btn:hover{color:var(--color-accent)}.ifd-add-btn{display:flex;align-items:center;gap:4px;padding:var(--sp-1) var(--sp-2);background:#3b82f61a;border:1px solid rgba(59,130,246,.25);border-radius:var(--r-sm);font-size:var(--fs-xs);color:var(--color-accent);cursor:pointer;transition:all .12s}.ifd-add-btn:hover{background:#3b82f633}.ifd-bsdd{display:flex;flex-direction:column;height:100%;overflow:hidden}.ifd-bsdd-toolbar{display:flex;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border);flex-shrink:0}.ifd-dict-sel{flex:1;min-width:0;font-size:var(--fs-xs)}.ifd-lang-sel{width:56px;font-size:var(--fs-xs)}.ifd-bsdd-body{flex:1;display:flex;overflow:hidden;min-height:0}.ifd-bsdd-list{width:40%;min-width:140px;overflow-y:auto;border-right:1px solid var(--color-border);display:flex;flex-direction:column}.ifd-bsdd-detail{flex:1;overflow-y:auto}.ifd-result-meta{font-size:10px;color:var(--color-text-4);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border);flex-shrink:0}.ifd-result-row{display:block;width:100%;text-align:left;padding:var(--sp-2) var(--sp-3);border:none;border-bottom:1px solid var(--color-border);background:none;cursor:pointer;transition:background .1s}.ifd-result-row:hover{background:var(--color-bg-2)}.ifd-result-row--active{background:#3b82f614;border-left:2px solid var(--color-accent)}.ifd-result-head{display:flex;align-items:center;gap:var(--sp-1);flex-wrap:wrap;margin-bottom:2px}.ifd-result-name{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--color-text-1);font-family:var(--font-mono, monospace)}.ifd-result-code{font-size:10px;color:var(--color-text-4);font-family:var(--font-mono, monospace)}.ifd-result-desc{font-size:10px;color:var(--color-text-3);margin-top:2px;line-height:1.4}.ifd-load-more{width:100%;padding:var(--sp-2);font-size:var(--fs-xs);color:var(--color-accent);background:none;border:none;border-top:1px dashed var(--color-border);cursor:pointer}.ifd-load-more:hover{background:var(--color-bg-2)}.ifd-detail-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-2);height:100%;padding:var(--sp-5);text-align:center;color:var(--color-text-4)}.ifd-detail-empty p{font-size:var(--fs-xs);max-width:220px;line-height:1.5;margin:0}.ifd-detail-sub{color:var(--color-text-5, var(--color-text-4))!important;font-size:10px!important}.ifd-detail-panel{padding:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-3)}.ifd-detail-header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--sp-2)}.ifd-detail-name{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--color-text-1);font-family:var(--font-mono, monospace)}.ifd-detail-code{font-size:10px;color:var(--color-text-4);font-family:var(--font-mono, monospace);margin-top:2px}.ifd-bsdd-link{display:flex;align-items:center;gap:4px;font-size:10px;color:var(--color-text-4);text-decoration:none;padding:2px 6px;border:1px solid var(--color-border);border-radius:var(--r-sm);flex-shrink:0}.ifd-bsdd-link:hover{color:var(--color-accent);border-color:var(--color-accent)}.ifd-detail-parent{font-size:var(--fs-xs);color:var(--color-text-3)}.ifd-link-btn{background:none;border:none;color:var(--color-accent);cursor:pointer;font-size:inherit;padding:0;text-decoration:underline}.ifd-detail-def{font-size:var(--fs-xs);color:var(--color-text-2);line-height:1.6;margin:0}.ifd-props-section{display:flex;flex-direction:column;gap:var(--sp-2)}.ifd-props-title{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--color-text-2);text-transform:uppercase;letter-spacing:.06em;font-size:10px}.ifd-pset-group{border:1px solid var(--color-border);border-radius:var(--r-base);overflow:hidden}.ifd-pset-name{font-size:10px;font-weight:var(--fw-medium);color:var(--color-text-3);background:var(--color-bg-2);padding:4px var(--sp-2);font-family:var(--font-mono, monospace);text-transform:uppercase;letter-spacing:.04em}.ifd-prop-row{padding:var(--sp-2);border-top:1px solid var(--color-border)}.ifd-prop-head{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:2px}.ifd-prop-name{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--color-text-1);font-family:var(--font-mono, monospace)}.ifd-prop-type{font-size:10px;color:var(--color-text-4);background:var(--color-bg-3);padding:1px 5px;border-radius:8px}.ifd-prop-def{font-size:10px;color:var(--color-text-3);line-height:1.4}.ifd-comp{display:flex;flex-direction:column;height:100%;overflow:hidden}.ifd-comp--edit .ifd-edit-body{flex:1;overflow-y:auto;padding:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-3)}.ifd-comp-header{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}.ifd-comp-title{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--color-text-1);flex:1}.ifd-comp-dict-meta{flex:1;display:flex;align-items:center;gap:var(--sp-2);overflow:hidden}.ifd-comp-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-2);padding:var(--sp-5);text-align:center;color:var(--color-text-4)}.ifd-comp-empty p{font-size:var(--fs-sm);margin:0}.ifd-comp-empty-sub{font-size:var(--fs-xs)!important;color:var(--color-text-5, var(--color-text-4))!important;max-width:240px;line-height:1.5}.ifd-dict-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:var(--sp-2);padding:var(--sp-3);overflow-y:auto}.ifd-dict-card{display:flex;flex-direction:column;gap:4px;padding:var(--sp-3);border:1px solid var(--color-border);border-radius:var(--r-base);background:var(--color-bg-2)}.ifd-dict-card-head{display:flex;align-items:center;gap:var(--sp-1)}.ifd-dict-code{font-size:10px;font-family:var(--font-mono, monospace);background:#3b82f61a;color:var(--color-accent);padding:1px 5px;border-radius:6px;font-weight:600}.ifd-dict-ver{font-size:10px;color:var(--color-text-4)}.ifd-dict-name{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--color-text-1)}.ifd-dict-org{font-size:10px;color:var(--color-text-4)}.ifd-dict-count{font-size:10px;color:var(--color-text-4);margin-top:2px}.ifd-dict-actions{display:flex;gap:var(--sp-1);margin-top:var(--sp-1)}.ifd-new-dict-form{border-top:1px solid var(--color-border);padding:var(--sp-3);background:var(--color-bg-2);flex-shrink:0}.ifd-form-title{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--color-text-2);margin-bottom:var(--sp-2);text-transform:uppercase;letter-spacing:.06em}.ifd-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-2)}.ifd-form-label{display:flex;flex-direction:column;gap:4px;font-size:var(--fs-xs);color:var(--color-text-3)}.ifd-form-label .form-input{font-size:var(--fs-xs)}.ifd-textarea{resize:vertical;min-height:52px}.ifd-form-actions{display:flex;align-items:center;gap:var(--sp-2);justify-content:flex-end;margin-top:var(--sp-3)}.ifd-class-list{flex:1;overflow-y:auto;display:flex;flex-direction:column}.ifd-class-row{display:flex;align-items:flex-start;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border)}.ifd-class-row:hover{background:var(--color-bg-2)}.ifd-class-info{flex:1;min-width:0}.ifd-class-head{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;margin-bottom:3px}.ifd-class-code{font-size:10px;font-family:var(--font-mono, monospace);color:var(--color-text-4)}.ifd-class-name{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--color-text-1)}.ifd-class-meta{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:3px}.ifd-class-desc{font-size:10px;color:var(--color-text-3);line-height:1.4}.ifd-class-actions{display:flex;gap:2px;flex-shrink:0}.ifd-tag-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1);padding:var(--sp-1) 0}.ifd-tag{display:flex;align-items:center;gap:4px;background:#3b82f61a;border:1px solid rgba(59,130,246,.2);color:var(--color-accent);font-size:var(--fs-xs);padding:2px 6px;border-radius:10px}.ifd-tag-rm{background:none;border:none;color:inherit;cursor:pointer;padding:0;line-height:1;opacity:.6}.ifd-tag-rm:hover{opacity:1}.ifd-tag-add{width:auto;font-size:var(--fs-xs);padding:2px 6px}.ifd-syn-input{width:160px;font-size:var(--fs-xs)}.ifd-props-editor{border:1px solid var(--color-border);border-radius:var(--r-base);overflow:hidden}.ifd-props-editor-head{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-2) var(--sp-3);background:var(--color-bg-2);border-bottom:1px solid var(--color-border)}.ifd-prop-edit-row{padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border);display:flex;flex-direction:column;gap:var(--sp-1);position:relative}.ifd-prop-edit-row:last-child{border-bottom:none}.ifd-prop-edit-row .prop-rm{position:absolute;top:var(--sp-2);right:var(--sp-2)}.ifd-prop-edit-grid{display:grid;grid-template-columns:1fr 110px 110px auto;gap:var(--sp-1);align-items:center;padding-right:28px}.ifd-prop-desc-input{font-size:var(--fs-xs)}.ifd-req-label{display:flex;align-items:center;gap:4px;font-size:var(--fs-xs);color:var(--color-text-3);cursor:pointer;white-space:nowrap}.ifd-ki-wrap{flex:1;display:flex;flex-direction:column;overflow:hidden;min-height:0}.intg-section-title{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--color-text-1);margin-bottom:var(--sp-2)}.intg-desc{font-size:var(--fs-xs);color:var(--color-text-3);line-height:1.55;margin-bottom:var(--sp-4)}.intg-label{display:block;font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-3);margin-bottom:var(--sp-1);margin-top:var(--sp-3)}.intg-optional{text-transform:none;letter-spacing:0;color:var(--color-text-4)}.intg-provider-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-2);margin-bottom:var(--sp-3)}.intg-provider-btn{padding:var(--sp-2) var(--sp-3);border:1px solid var(--color-border);border-radius:var(--r-base);background:var(--color-bg-2);color:var(--color-text-2);font-size:var(--fs-xs);cursor:pointer;transition:all .12s}.intg-provider-btn:hover{border-color:var(--color-accent);color:var(--color-accent)}.intg-provider-btn--active{border-color:var(--color-accent);background:#3b82f61a;color:var(--color-accent);font-weight:var(--fw-medium)}.intg-key-row{display:flex;gap:var(--sp-2)}.intg-eye-btn{padding:var(--sp-2);background:var(--color-bg-3);border:1px solid var(--color-border);border-radius:var(--r-base);cursor:pointer;color:var(--color-text-3);display:flex;align-items:center}.intg-eye-btn:hover{color:var(--color-text-1)}.intg-saved{font-size:var(--fs-xs);color:#22c55e;margin-left:var(--sp-3)}.intg-guides{display:flex;flex-direction:column;gap:var(--sp-2)}.intg-guide{border:1px solid var(--color-border);border-radius:var(--r-base);overflow:hidden}.intg-guide-summary{padding:var(--sp-2) var(--sp-3);font-size:var(--fs-xs);font-weight:var(--fw-medium);cursor:pointer;color:var(--color-text-2);background:var(--color-bg-2);list-style:none;display:flex;align-items:center}.intg-guide-summary:before{content:"▶";font-size:9px;margin-right:var(--sp-2);color:var(--color-text-4);transition:transform .15s}.intg-guide[open] .intg-guide-summary:before{transform:rotate(90deg)}.intg-steps{margin:0;padding:var(--sp-3) var(--sp-3) var(--sp-3) calc(var(--sp-3) + 18px);font-size:var(--fs-xs);color:var(--color-text-2);line-height:1.7;background:var(--color-bg-1)}.intg-steps li{margin-bottom:var(--sp-1)}.intg-steps code{font-family:var(--font-mono, monospace);background:var(--color-bg-3);padding:1px 4px;border-radius:3px;font-size:10px}.guest-banner{display:flex;align-items:center;gap:var(--sp-2);padding:0 var(--sp-3);font-size:var(--fs-xs);color:var(--color-text-2);background:#f59e0b1a;border-left:1px solid rgba(245,158,11,.25);border-right:1px solid rgba(245,158,11,.25);white-space:nowrap}.guest-badge{display:inline-flex;align-items:center;padding:2px 7px;border-radius:10px;background:#f59e0b33;color:#f59e0b;font-size:10px;font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:.06em;margin-right:var(--sp-1)}.bcf-filter-section{padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border);background:var(--color-bg-2)}.bcf-filter-dropdowns{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-1)}.bcf-filter-sel{font-size:var(--fs-xs)!important;padding:4px 6px!important;height:auto!important;cursor:pointer}.bcf-filter-label{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-4);margin-bottom:2px}.bcf-filter-row{display:flex;align-items:center;gap:var(--sp-1);flex-wrap:wrap}.bcf-filter-btn{padding:3px 8px;border-radius:10px;border:1px solid var(--color-border);background:var(--color-bg-3);color:var(--color-text-2);font-size:var(--fs-xs);cursor:pointer;transition:all .12s;white-space:nowrap}.bcf-filter-btn:hover{border-color:var(--color-accent);color:var(--color-accent)}.bcf-filter-btn--active{background:var(--color-accent);border-color:var(--color-accent);color:#fff}.bcf-sort-row{display:flex;align-items:center;gap:var(--sp-2)}.bcf-sort-label{font-size:10px;color:var(--color-text-4);flex-shrink:0}.bcf-sort-sel{flex:1;padding:4px 6px;border:1px solid var(--color-border);border-radius:var(--r-sm);background:var(--color-bg-3);color:var(--color-text-1);font-size:var(--fs-xs);cursor:pointer}.bcf-section-divider{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-4)}.bcf-section-divider:before,.bcf-section-divider:after{content:"";flex:1;height:1px;background:var(--color-border)}.issue-card--ext{border-left:2px solid #f59e0b}.bcf-ext-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 7px;border-radius:10px;background:#f59e0b26;color:#f59e0b;font-size:10px;font-weight:var(--fw-medium)}.bcf-ext-badge-inline{display:inline-block;padding:1px 5px;border-radius:8px;background:#f59e0b26;color:#f59e0b;font-size:10px;margin-left:4px}.bcf-ext-author{font-size:var(--fs-xs);color:var(--color-text-3);margin-top:2px}.bcf-role-pill{display:inline-flex;align-items:center;padding:2px 7px;border-radius:10px;background:#6366f126;color:#818cf8;font-size:10px;font-weight:var(--fw-medium)}.bcf-element-badge{display:inline-flex;align-items:center;gap:3px;padding:2px 6px;border-radius:8px;background:var(--color-bg-3);color:var(--color-text-3);font-size:10px}.bcf-status-tiny{display:inline-block;padding:1px 6px;border-radius:8px;font-size:10px;background:var(--color-bg-3);color:var(--color-text-3)}.bcf-element-row{display:flex;flex-direction:column;gap:var(--sp-1);padding:var(--sp-2) 0;border-top:1px solid var(--color-border)}.bcf-element-label{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--color-text-3)}.bcf-element-ids{display:flex;flex-wrap:wrap;gap:4px}.bcf-guid{font-family:var(--font-mono, monospace);font-size:10px;padding:2px 5px;border-radius:4px;background:var(--color-bg-3);color:var(--color-text-2);cursor:pointer}.bcf-guid:hover{background:var(--color-bg-4)}.nav-role-shield{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;background:transparent;cursor:pointer;border-radius:var(--r-sm);color:var(--color-text-4);flex-shrink:0;opacity:0;transition:opacity .12s,color .12s}.tree-node-row:hover .nav-role-shield{opacity:1}.nav-role-shield--locked{opacity:1!important;color:#f59e0b}.nav-role-popover{position:absolute;z-index:200;min-width:180px;background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:var(--r-base);box-shadow:0 4px 16px #00000040;padding:var(--sp-3)}.nav-role-pop-title{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--color-text-2);margin-bottom:var(--sp-2)}.nav-role-row{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-1) 0;font-size:var(--fs-xs);color:var(--color-text-2);cursor:pointer}.nav-role-row input[type=checkbox]{accent-color:var(--color-accent)}.nav-role-save{width:100%;margin-top:var(--sp-2);padding:var(--sp-1) 0;background:var(--color-accent);color:#fff;border:none;border-radius:var(--r-sm);font-size:var(--fs-xs);font-weight:var(--fw-medium);cursor:pointer}.nav-role-save:hover{opacity:.88}.tree-node-roles{display:flex;align-items:center;gap:var(--sp-1);margin-left:auto}.share-toggle-row{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) 0;border-bottom:1px solid var(--color-border)}.share-toggle-label{flex:1}.share-toggle-label strong{display:block;font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--color-text-1);margin-bottom:2px}.share-toggle-label span{font-size:var(--fs-xs);color:var(--color-text-3)}.sh-section-title{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--color-text-2);margin:var(--sp-4) 0 var(--sp-2);text-transform:uppercase;letter-spacing:.05em}.sh-link-row{display:flex;gap:var(--sp-2);align-items:center}.sh-link-input{flex:1;padding:var(--sp-2) var(--sp-3);border:1px solid var(--color-border);border-radius:var(--r-base);background:var(--color-bg-3);color:var(--color-text-2);font-size:var(--fs-xs);font-family:var(--font-mono, monospace);min-width:0}.sh-link-input:focus{outline:none;border-color:var(--color-accent)}.sh-models-list{display:flex;flex-direction:column;gap:4px}.sh-model-row{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border:1px solid var(--color-border);border-radius:var(--r-base);background:var(--color-bg-2)}.sh-model-row input[type=checkbox]{accent-color:var(--color-accent);flex-shrink:0}.sh-model-name{flex:1;font-size:var(--fs-xs);color:var(--color-text-1);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sh-model-size{font-size:10px;color:var(--color-text-4);flex-shrink:0}.sh-no-models{font-size:var(--fs-xs);color:var(--color-text-4);padding:var(--sp-3);text-align:center}.sh-public-bcf-list{display:flex;flex-direction:column;gap:4px}.sh-bcf-count{font-size:var(--fs-xs);color:var(--color-text-3);margin-bottom:var(--sp-2)}.sh-bcf-row{display:flex;flex-direction:column;gap:2px;padding:var(--sp-2) var(--sp-3);border:1px solid var(--color-border);border-radius:var(--r-base);background:var(--color-bg-2);border-left:2px solid #f59e0b}.sh-bcf-title{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--color-text-1)}.sh-bcf-author{font-size:10px;color:var(--color-text-4)}.mc-wrap{display:flex;flex-direction:column;gap:0;height:100%;overflow-y:auto}.mc-toolbar{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-3) var(--sp-3);border-bottom:1px solid var(--color-border);flex-shrink:0}.mc-title{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--color-text-1)}.mc-toolbar-actions{display:flex;align-items:center;gap:var(--sp-2)}.mc-run-btn{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-xs);padding:5px 12px}.mc-run-btn:disabled{opacity:.45;cursor:not-allowed}.mc-spinner{width:10px;height:10px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:mc-spin .7s linear infinite}@keyframes mc-spin{to{transform:rotate(360deg)}}.mc-no-model{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-2);padding:var(--sp-8) var(--sp-4);color:var(--color-text-3)}.mc-no-model p{margin:0;font-size:var(--fs-sm);text-align:center}.mc-hint{font-size:var(--fs-xs);color:var(--color-text-4)}.mc-rules{display:flex;flex-direction:column;gap:2px;padding:var(--sp-2) var(--sp-3)}.mc-empty-rules{font-size:var(--fs-xs);color:var(--color-text-4);padding:var(--sp-4) var(--sp-3);text-align:center}.mc-rule-card{display:flex;align-items:flex-start;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border:1px solid var(--color-border);border-radius:var(--r-base);background:var(--color-bg-2);transition:border-color .12s}.mc-rule-card:hover{border-color:var(--color-accent)}.mc-rule-icon{padding-top:2px;color:var(--color-text-4);flex-shrink:0}.mc-rule-info{flex:1;min-width:0}.mc-rule-name{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--color-text-1);margin-bottom:3px}.mc-rule-meta{display:flex;flex-wrap:wrap;gap:4px}.mc-tag{display:inline-block;padding:1px 6px;border-radius:8px;font-size:10px;background:#3b82f626;color:var(--color-accent);font-weight:var(--fw-medium)}.mc-tag--pset{background:#6366f11f;color:#818cf8}.mc-tag--val{background:#22c55e1f;color:#22c55e}.mc-tag--dim{background:var(--color-bg-3);color:var(--color-text-4)}.mc-rule-actions{display:flex;gap:4px;flex-shrink:0}.mc-rule-btn{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border:none;background:transparent;cursor:pointer;color:var(--color-text-3);border-radius:var(--r-sm)}.mc-rule-btn:hover{background:var(--color-bg-3);color:var(--color-text-1)}.mc-rule-btn--del:hover{color:#ef4444}.mc-form-wrap{margin:var(--sp-2) var(--sp-3);padding:var(--sp-3);border:1px solid var(--color-accent);border-radius:var(--r-base);background:#3b82f60a}.mc-form-title{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--color-text-1);margin-bottom:var(--sp-3)}.mc-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-2)}.mc-form-label{display:flex;flex-direction:column;gap:4px;font-size:var(--fs-xs);color:var(--color-text-2)}.mc-form-label:first-child{grid-column:1 / -1}.mc-optional{font-size:10px;color:var(--color-text-4);font-weight:400}.mc-form-actions{display:flex;justify-content:flex-end;gap:var(--sp-2);margin-top:var(--sp-3)}.mc-results{border-top:1px solid var(--color-border)}.mc-results-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-2) var(--sp-3)}.mc-results-title{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--color-text-2);text-transform:uppercase;letter-spacing:.06em}.mc-clear-btn{font-size:var(--fs-xs);padding:3px 8px;color:var(--color-text-3)}.mc-rule-result{border-bottom:1px solid var(--color-border)}.mc-rr-header{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);cursor:pointer;transition:background .1s}.mc-rr-header:hover{background:var(--color-bg-2)}.mc-rr-info{flex:1;min-width:0}.mc-rr-name{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--color-text-1);display:block}.mc-rr-sub{font-size:10px;color:var(--color-text-4);display:block;margin-top:1px}.mc-rr-stats{display:flex;align-items:center;gap:var(--sp-2);flex-shrink:0}.mc-rr-bar{width:60px;height:5px;background:var(--color-bg-3);border-radius:3px;overflow:hidden}.mc-rr-fill{height:100%;border-radius:3px;transition:width .4s}.mc-rr-pct{font-size:var(--fs-xs);font-weight:var(--fw-medium);min-width:36px;text-align:right}.mc-rr-chevron{color:var(--color-text-4);transition:transform .15s;flex-shrink:0}.mc-rr-chevron--open{transform:rotate(180deg)}.mc-rr-body{padding:0 var(--sp-3) var(--sp-2)}.mc-rr-section-title{display:flex;align-items:center;gap:5px;font-size:10px;font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:.05em;padding:var(--sp-2) 0 var(--sp-1);color:var(--color-text-3)}.mc-rr-fail-title{color:#ef4444}.mc-rr-ok-title{color:#22c55e}.mc-elem-row{display:grid;grid-template-columns:1fr auto auto;gap:var(--sp-2);align-items:center;padding:4px var(--sp-2);border-radius:var(--r-sm);cursor:pointer;font-size:var(--fs-xs)}.mc-elem-row:hover{background:var(--color-bg-3)}.mc-elem-row--fail{border-left:2px solid #ef4444;padding-left:6px}.mc-elem-row--ok{border-left:2px solid #22c55e;padding-left:6px}.mc-elem-name{color:var(--color-text-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mc-elem-val{color:#22c55e;font-size:10px;white-space:nowrap}.mc-elem-status{display:flex;align-items:center;gap:4px;white-space:nowrap}.mc-elem-id{font-family:var(--font-mono, monospace);font-size:10px;color:var(--color-text-4);white-space:nowrap}.mc-badge{display:inline-block;padding:1px 6px;border-radius:8px;font-size:10px;font-weight:var(--fw-medium)}.mc-badge--miss{background:#ef44441f;color:#ef4444}.mc-badge--wrong{background:#f59e0b1f;color:#f59e0b;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;vertical-align:middle}.mc-more{font-size:10px;color:var(--color-text-4);padding:var(--sp-1) var(--sp-2);text-align:center}.wf-layout{display:flex;height:100%;overflow:hidden}.wf-sidebar{width:200px;flex-shrink:0;border-right:1px solid var(--color-border);display:flex;flex-direction:column;overflow-y:auto;background:var(--color-bg-2)}.wf-sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-3) var(--sp-3) var(--sp-2);border-bottom:1px solid var(--color-border)}.wf-sidebar-title{font-size:var(--fs-xs);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-4)}.wf-cat-group{padding:var(--sp-2) var(--sp-2) var(--sp-1)}.wf-cat-label{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-4);padding:var(--sp-1) var(--sp-1);font-weight:var(--fw-semibold)}.wf-tpl-btn{display:flex;align-items:center;gap:var(--sp-2);width:100%;padding:5px var(--sp-2);border:none;background:transparent;cursor:pointer;border-radius:var(--r-sm);color:var(--color-text-2);font-size:var(--fs-xs);text-align:left;transition:background .1s}.wf-tpl-btn:hover{background:var(--color-bg-3)}.wf-tpl-btn--active{background:#3b82f61a;color:var(--color-text-1);font-weight:var(--fw-medium)}.wf-tpl-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.wf-tpl-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wf-tpl-pct{font-size:10px;color:var(--color-text-4);flex-shrink:0}.wf-no-custom{font-size:var(--fs-xs);color:var(--color-text-4);padding:var(--sp-2) var(--sp-1);line-height:1.5}.wf-main{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}.wf-empty{display:flex;align-items:center;justify-content:center;height:100%;font-size:var(--fs-sm);color:var(--color-text-4)}.wf-main-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--color-border);flex-shrink:0}.wf-main-header-left{display:flex;align-items:flex-start;gap:var(--sp-3)}.wf-main-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;margin-top:4px}.wf-main-title{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--color-text-1);line-height:1.3}.wf-main-desc{font-size:var(--fs-xs);color:var(--color-text-3);margin-top:2px;line-height:1.4}.wf-main-header-right{display:flex;align-items:center;gap:var(--sp-2);flex-shrink:0}.wf-progress-wrap{display:flex;align-items:center;gap:var(--sp-2)}.wf-progress-bar{width:80px;height:5px;background:var(--color-bg-3);border-radius:3px;overflow:hidden}.wf-progress-fill{height:100%;border-radius:3px;transition:width .3s}.wf-progress-label{font-size:var(--fs-xs);color:var(--color-text-2);white-space:nowrap}.wf-btn-float{display:flex;align-items:center;gap:var(--sp-1);padding:4px var(--sp-2);border:1px solid var(--color-border);background:var(--color-bg-3);color:var(--color-text-2);font-size:var(--fs-xs);border-radius:var(--r-base);cursor:pointer;white-space:nowrap;transition:all .12s}.wf-btn-float:hover{border-color:var(--color-accent);color:var(--color-accent)}.wf-btn-float--active{background:#3b82f61f;border-color:var(--color-accent);color:var(--color-accent)}.wf-icon-btn{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border:none;background:transparent;cursor:pointer;border-radius:var(--r-sm);color:var(--color-text-3);font-size:var(--fs-xs)}.wf-icon-btn:hover{background:var(--color-bg-3);color:var(--color-text-1)}.wf-icon-btn--danger:hover{color:#ef4444}.wf-btn-sm{padding:4px 10px;font-size:var(--fs-xs)}.wf-sections{flex:1;overflow-y:auto;padding:var(--sp-3) var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-3)}.wf-section{border:1px solid var(--color-border);border-radius:var(--r-base);background:var(--color-bg-2);overflow:hidden;transition:opacity .2s}.wf-section--done{opacity:.65}.wf-sec-header{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);background:var(--color-bg-2)}.wf-sec-collapse{width:20px;height:20px;display:flex;align-items:center;justify-content:center;border:none;background:transparent;cursor:pointer;color:var(--color-text-4);flex-shrink:0}.wf-sec-chevron{transition:transform .15s}.wf-sec-chevron--open{transform:rotate(180deg)}.wf-sec-title{flex:1;font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--color-text-1);padding-left:var(--sp-2);border-left:3px solid}.wf-sec-count{font-size:10px;color:var(--color-text-4);flex-shrink:0}.wf-sec-actions{display:flex;gap:2px;flex-shrink:0;opacity:0;transition:opacity .1s}.wf-sec-header:hover .wf-sec-actions{opacity:1}.wf-items{padding:var(--sp-1) var(--sp-3) var(--sp-2);display:flex;flex-direction:column;gap:2px;border-top:1px solid var(--color-border);background:var(--color-bg-1)}.wf-item{display:flex;align-items:flex-start;gap:var(--sp-2);padding:4px var(--sp-1);border-radius:var(--r-sm);transition:background .1s}.wf-item:hover{background:var(--color-bg-2)}.wf-item--done .wf-item-title{text-decoration:line-through;color:var(--color-text-4)}.wf-item--editing{background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:var(--r-base);padding:var(--sp-2)}.wf-item-check-wrap{position:relative;display:flex;align-items:center;flex-shrink:0;margin-top:1px}.wf-item-check-wrap input[type=checkbox]{position:absolute;opacity:0;width:0;height:0}.wf-cb-custom{display:flex;align-items:center;justify-content:center;width:15px;height:15px;border:1.5px solid var(--color-border);border-radius:3px;cursor:pointer;transition:all .12s;background:transparent}.wf-item-check-wrap input:checked+.wf-cb-custom{background:var(--cb-color, var(--color-accent));border-color:var(--cb-color, var(--color-accent))}.wf-item-check-wrap input:checked+.wf-cb-custom:after{content:"";display:block;width:4px;height:7px;border:1.5px solid #fff;border-top:none;border-left:none;transform:rotate(45deg) translate(-1px,-1px)}.wf-item-content{flex:1;cursor:pointer;min-width:0}.wf-item-title{font-size:var(--fs-xs);color:var(--color-text-1);display:block;line-height:1.4}.wf-item-note{font-size:10px;color:var(--color-text-4);display:block;margin-top:1px}.wf-item-edit{flex:1;display:flex;flex-direction:column;gap:var(--sp-2)}.wf-item-title-input{font-size:var(--fs-xs);padding:var(--sp-1) var(--sp-2)}.wf-item-notes-input{font-size:var(--fs-xs);padding:var(--sp-1) var(--sp-2);resize:none;min-height:48px}.wf-item-edit-actions{display:flex;gap:var(--sp-1);align-items:center}.wf-add-item-btn{display:flex;align-items:center;gap:var(--sp-1);padding:3px var(--sp-2);font-size:var(--fs-xs);color:var(--color-text-4);background:transparent;border:1px dashed var(--color-border);border-radius:var(--r-sm);cursor:pointer;transition:all .12s;margin-top:var(--sp-1)}.wf-add-item-btn:hover{color:var(--color-accent);border-color:var(--color-accent)}.wf-add-section-wrap{padding:0 var(--sp-4) var(--sp-3);flex-shrink:0}.wf-add-sec-btn{display:flex;align-items:center;gap:var(--sp-2);width:100%;padding:var(--sp-2) var(--sp-3);background:transparent;border:1px dashed var(--color-border);border-radius:var(--r-base);color:var(--color-text-4);font-size:var(--fs-xs);cursor:pointer;transition:all .12s}.wf-add-sec-btn:hover{border-color:var(--color-accent);color:var(--color-accent)}.wf-add-section-form{display:flex;align-items:center;gap:var(--sp-2)}.wf-new-sec-input{flex:1;font-size:var(--fs-xs);padding:var(--sp-1) var(--sp-2)}.wf-float{position:fixed;z-index:9000;width:320px;max-height:80vh;background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:10px;box-shadow:0 8px 32px #00000059,0 2px 8px #0003;display:flex;flex-direction:column;overflow:hidden;resize:both}.wf-float-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-2) var(--sp-3);border-bottom:2px solid;cursor:grab;user-select:none;background:var(--color-bg-2);flex-shrink:0}.wf-float-header:active{cursor:grabbing}.wf-float-title-wrap{display:flex;align-items:center;gap:var(--sp-2);min-width:0}.wf-float-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.wf-float-title{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--color-text-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wf-float-close{width:22px;height:22px;display:flex;align-items:center;justify-content:center;border:none;background:transparent;cursor:pointer;color:var(--color-text-3);border-radius:var(--r-sm);font-size:16px;line-height:1;flex-shrink:0}.wf-float-close:hover{background:#ef44441f;color:#ef4444}.wf-float-progress{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;background:var(--color-bg-1)}.wf-float-bar{flex:1;height:4px;background:var(--color-bg-3);border-radius:2px;overflow:hidden}.wf-float-fill{height:100%;border-radius:2px;transition:width .3s}.wf-float-pct{font-size:10px;color:var(--color-text-3);flex-shrink:0}.wf-float-body{overflow-y:auto;flex:1;padding:var(--sp-2) 0}.wf-float-empty{padding:var(--sp-4) var(--sp-3);font-size:var(--fs-xs);color:var(--color-text-4);text-align:center}.wf-float-section{padding:0;margin-bottom:var(--sp-1)}.wf-float-sec-title{display:flex;align-items:center;justify-content:space-between;padding:4px var(--sp-3);font-size:10px;font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-4)}.wf-float-sec-count{font-size:10px;color:var(--color-text-4)}.wf-float-item{display:flex;align-items:flex-start;gap:var(--sp-2);padding:3px var(--sp-3);cursor:pointer;transition:background .1s;font-size:var(--fs-xs);color:var(--color-text-1);width:100%}.wf-float-item:hover{background:var(--color-bg-3)}.wf-float-item--done span{text-decoration:line-through;color:var(--color-text-4)}.wf-float-cb{width:13px;height:13px;flex-shrink:0;margin-top:1px;accent-color:var(--color-accent);cursor:pointer}#tab-content-fleet.tab-content--active{display:flex;flex-direction:column;overflow:hidden}.risks-module-wrap{display:flex;flex-direction:column;height:100%}.risks-module-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px 0;flex-shrink:0;gap:12px;flex-wrap:wrap;border-bottom:1px solid var(--color-border)}.risks-module-title-row{display:flex;align-items:center;gap:8px}.risks-module-title{font-size:var(--fs-base);font-weight:var(--fw-semibold);color:var(--color-text-1);margin:0}.risks-module-body{flex:1;overflow-y:auto;padding:20px 16px}.fl-layout{display:flex;flex:1;overflow:hidden;min-height:0}.fl-sidebar{width:220px;flex-shrink:0;border-right:1px solid var(--color-border);display:flex;flex-direction:column;overflow:hidden}.fl-conn-bar{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}.fl-conn-info{display:flex;align-items:center;gap:var(--sp-1);min-width:0;flex:1;overflow:hidden}.fl-conn-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.fl-conn-dot--on{background:#22c55e;box-shadow:0 0 4px #22c55e88}.fl-conn-dot--off{background:#6b7280}.fl-conn-label{font-size:10px;font-weight:var(--fw-semibold);padding:1px 5px;border-radius:3px;flex-shrink:0}.fl-conn-label--on{background:#22c55e22;color:#22c55e}.fl-conn-label--off{background:#ef444422;color:#ef4444}.fl-conn-label--demo{background:#f59e0b22;color:#f59e0b}.fl-conn-url{font-size:10px;color:var(--color-text-4);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fl-robot-list{flex:1;overflow-y:auto}.fl-empty-list{padding:var(--sp-4);font-size:var(--fs-xs);color:var(--color-text-4);text-align:center;line-height:1.5}.fl-robot-card{padding:var(--sp-2) var(--sp-3);cursor:pointer;border-bottom:1px solid var(--color-border);transition:background .1s}.fl-robot-card:hover{background:var(--color-bg-2)}.fl-robot-card--active{background:var(--color-bg-3)}.fl-rc-header{display:flex;align-items:center;gap:var(--sp-1);margin-bottom:4px}.fl-rc-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.fl-rc-name{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--color-text-1);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fl-rc-status{font-size:10px;color:var(--color-text-4)}.fl-rc-bat{display:flex;align-items:center;gap:var(--sp-2)}.fl-bat-bar{flex:1;height:4px;background:var(--color-bg-3);border-radius:2px;overflow:hidden}.fl-bat-fill{height:100%;border-radius:2px;transition:width .5s}.fl-bat-pct{font-size:10px;color:var(--color-text-4);flex-shrink:0}.fl-rc-task{display:flex;align-items:center;gap:4px;margin-top:4px;font-size:10px;color:var(--color-text-3)}.fl-sidebar-footer{padding:var(--sp-2) var(--sp-3);border-top:1px solid var(--color-border);flex-shrink:0}.fl-add-btn{display:flex;align-items:center;gap:var(--sp-2);width:100%;padding:5px var(--sp-2);font-size:var(--fs-xs);color:var(--color-text-3);background:transparent;border:1px dashed var(--color-border);border-radius:var(--r-sm);cursor:pointer;transition:all .15s}.fl-add-btn:hover{color:var(--color-accent);border-color:var(--color-accent);background:var(--color-accent-muted, rgba(59, 130, 246, .08))}.fl-main{flex:1;overflow-y:auto}.fl-no-sel{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:var(--sp-3);color:var(--color-text-4);font-size:var(--fs-sm)}.fl-detail{display:flex;flex-direction:column;height:100%}.fl-detail-header{display:flex;align-items:flex-start;justify-content:space-between;padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--color-border);gap:var(--sp-3);flex-shrink:0}.fl-dh-left{display:flex;align-items:flex-start;gap:var(--sp-3)}.fl-dh-dot{width:12px;height:12px;border-radius:50%;flex-shrink:0;margin-top:3px}.fl-dh-name{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--color-text-1)}.fl-dh-meta{display:flex;align-items:center;gap:var(--sp-2);margin-top:3px}.fl-status-pill{font-size:10px;font-weight:var(--fw-semibold);padding:1px 7px;border-radius:10px}.fl-dh-ns{font-size:10px;color:var(--color-text-4);font-family:monospace}.fl-dh-actions{display:flex;align-items:center;gap:var(--sp-2)}.fl-detail-body{flex:1;overflow-y:auto;padding:var(--sp-3) var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-4)}.fl-pose-diag{background:#60a5fa12;border:1px solid rgba(96,165,250,.2);border-radius:6px;padding:8px 10px;font-size:11px}.fl-pose-diag--warn{background:#f59e0b12;border-color:#f59e0b40}.fl-pose-diag-title{font-weight:600;color:var(--color-text-1);margin-bottom:4px;font-size:11px}.fl-pose-diag-row{color:var(--color-text-3);margin-top:2px}.fl-pose-diag-row code{font-family:monospace;color:var(--color-text-2);font-size:10px}.fl-stats-row{display:flex;gap:var(--sp-4);flex-wrap:wrap}.fl-stat{min-width:120px}.fl-stat-label{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-4);display:block;margin-bottom:3px}.fl-stat-val{font-size:var(--fs-xs);color:var(--color-text-2)}.fl-stat-bat{display:flex;align-items:center;gap:var(--sp-2)}.fl-stat-bat-bar{flex:1;height:6px;background:var(--color-bg-3);border-radius:3px;overflow:hidden}.fl-stat-bat-fill{height:100%;border-radius:3px;transition:width .5s}.fl-stat-bat-pct{font-size:var(--fs-xs);font-weight:var(--fw-semibold)}.fl-task-section{display:flex;flex-direction:column;gap:var(--sp-1)}.fl-ts-title{display:flex;align-items:center;gap:var(--sp-2);font-size:10px;font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-4);margin-bottom:var(--sp-1)}.fl-ts-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.fl-task-row{display:flex;align-items:flex-start;gap:var(--sp-2);padding:var(--sp-2);border:1px solid var(--color-border);border-radius:var(--r-sm);background:var(--color-bg-1);transition:background .1s}.fl-task-row--active{border-color:#3b82f6;background:#3b82f60d}.fl-tr-icon{flex-shrink:0;color:var(--color-text-3);margin-top:1px}.fl-tr-body{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.fl-tr-label{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--color-text-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fl-tr-desc{font-size:10px;color:var(--color-text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fl-tr-time{font-size:10px;color:var(--color-text-4)}.fl-tr-right{display:flex;align-items:center;gap:var(--sp-1);flex-shrink:0}.fl-tr-status{font-size:12px;font-weight:700}.fl-tr-cancel{font-size:14px;line-height:1;color:var(--color-text-4)}.fl-tr-cancel:hover{color:#ef4444}.fl-priority-pill{font-size:10px;padding:1px 5px;border-radius:3px}.fl-priority-pill--low{background:#6b728022;color:#6b7280}.fl-priority-pill--normal{background:#3b82f622;color:#3b82f6}.fl-priority-pill--high{background:#f59e0b22;color:#f59e0b}.fl-priority-pill--urgent{background:#ef444422;color:#ef4444}.fl-no-tasks{padding:var(--sp-3);font-size:var(--fs-xs);color:var(--color-text-4);text-align:center;border:1px dashed var(--color-border);border-radius:var(--r-sm)}.fl-add-task-btn{display:flex;align-items:center;gap:4px;padding:3px 8px;font-size:10px;font-weight:var(--fw-semibold);color:var(--color-accent);background:var(--color-accent-muted, rgba(59, 130, 246, .08));border:1px solid var(--color-accent);border-radius:var(--r-sm);cursor:pointer;transition:all .15s}.fl-add-task-btn:hover{background:var(--color-accent);color:#fff}.fl-icon-btn{width:24px;height:24px;display:flex;align-items:center;justify-content:center;border:none;background:transparent;cursor:pointer;color:var(--color-text-3);border-radius:var(--r-sm);transition:all .15s}.fl-icon-btn:hover{background:var(--color-bg-3);color:var(--color-text-1)}.fl-ghost-btn{display:flex;align-items:center;gap:5px;padding:4px 10px;font-size:var(--fs-xs);color:var(--color-text-2);background:transparent;border:1px solid var(--color-border);border-radius:var(--r-sm);cursor:pointer;transition:all .15s}.fl-ghost-btn:hover{background:var(--color-bg-3);border-color:var(--color-text-3)}.fl-btn-danger:hover{background:#ef444414;border-color:#ef4444;color:#ef4444}.fl-modal-overlay{position:fixed;inset:0;background:#00000080;z-index:9000;display:flex;align-items:center;justify-content:center}.fl-modal{background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:var(--r-lg);width:480px;max-width:calc(100vw - 32px);max-height:calc(100vh - 64px);display:flex;flex-direction:column;overflow:hidden;box-shadow:0 20px 60px #0006}.fl-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}.fl-modal-title{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--color-text-1)}.fl-modal-close{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border:none;background:transparent;cursor:pointer;color:var(--color-text-3);border-radius:var(--r-sm);font-size:18px;line-height:1}.fl-modal-close:hover{background:#ef44441f;color:#ef4444}.fl-modal-body{overflow-y:auto;flex:1;padding:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-3)}.fl-modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);border-top:1px solid var(--color-border);flex-shrink:0}.fl-form-label{display:flex;flex-direction:column;gap:5px;font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--color-text-2)}.fl-form-row{display:flex;gap:var(--sp-3)}.fl-form-row .fl-form-label{flex:1}.fl-form-hint{font-size:10px;color:var(--color-text-4);font-weight:400}.fl-form-section-title{font-size:10px;font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-4);padding-bottom:var(--sp-1);border-bottom:1px solid var(--color-border)}.fl-label-row{display:flex;align-items:center;justify-content:space-between}.fl-sched-row{display:flex;gap:var(--sp-3)}.fl-type-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-2);margin-top:4px}.fl-type-btn{display:flex;flex-direction:column;align-items:center;gap:4px;padding:var(--sp-2) var(--sp-1);border:1px solid var(--color-border);border-radius:var(--r-sm);background:var(--color-bg-1);cursor:pointer;transition:all .15s;color:var(--color-text-3);font-size:10px}.fl-type-btn:hover{border-color:var(--color-accent);color:var(--color-accent);background:#3b82f60d}.fl-type-btn--active{border-color:var(--color-accent);background:#3b82f61a;color:var(--color-accent);font-weight:var(--fw-semibold)}.toggle-switch{position:relative;width:36px;height:20px;flex-shrink:0}.toggle-switch input{opacity:0;width:0;height:0;position:absolute}.toggle-slider{position:absolute;inset:0;background:var(--color-bg-3);border-radius:10px;cursor:pointer;transition:background .2s;border:1px solid var(--color-border)}.toggle-slider:before{content:"";position:absolute;width:14px;height:14px;left:2px;top:2px;background:var(--color-text-3);border-radius:50%;transition:transform .2s}.toggle-switch input:checked+.toggle-slider{background:var(--color-accent);border-color:var(--color-accent)}.toggle-switch input:checked+.toggle-slider:before{transform:translate(16px);background:#fff}.fl-demo-banner{display:flex;flex-direction:column;align-items:stretch;gap:6px;padding:var(--sp-2) var(--sp-3);background:#f59e0b14;border-bottom:1px solid rgba(245,158,11,.25);flex-shrink:0}.fl-demo-banner-info{display:flex;align-items:center;gap:var(--sp-2);min-width:0}.fl-demo-title{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:#f59e0b;white-space:nowrap}.fl-demo-hint{font-size:10px;color:var(--color-text-4);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fl-ros-connect-btn{display:flex;align-items:center;justify-content:center;gap:5px;padding:4px 8px;font-size:10px;font-weight:var(--fw-semibold);color:var(--color-accent);background:#3b82f61a;border:1px solid var(--color-accent);border-radius:var(--r-sm);cursor:pointer;white-space:nowrap;transition:all .15s;width:100%}.fl-ros-connect-btn:hover{background:var(--color-accent);color:#fff}.fl-ros-url-row{display:flex;gap:6px;align-items:center}.fl-ros-url-row .form-input{flex:1;min-width:0}.fl-ros-connect-now-btn{flex-shrink:0;padding:6px 12px;font-size:11px;font-weight:var(--fw-semibold);white-space:nowrap}.fl-ros-status-inline{margin-top:4px;font-size:10px}.fl-ros-ok{color:#22c55e}.fl-ros-err{color:#ef4444}.fl-ros-idle{color:#64748b}.fl-topic-panel{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:8px 10px;background:#0f172a80;border:1px solid rgba(255,255,255,.07);border-radius:var(--r-sm);margin-bottom:8px}.fl-topic-panel-col{min-width:0}.fl-topic-panel-title{font-size:9px;font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:.05em;color:#64748b;margin-bottom:4px}.fl-topic-chip{font-size:9px;font-family:monospace;padding:2px 5px;border-radius:3px;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fl-topic-chip--sub{color:#93c5fd;background:#3b82f61a;border:1px solid rgba(59,130,246,.2)}.fl-topic-chip--pub{color:#86efac;background:#22c55e1a;border:1px solid rgba(34,197,94,.2)}.fl-type-btn svg,.fl-type-btn svg *{pointer-events:none}.fl-pick-toast{position:fixed;bottom:180px;left:50%;transform:translate(-50%);background:#0f172af5;border:1px solid #f59e0b;color:#e2e8f0;padding:10px 18px;border-radius:24px;display:flex;align-items:center;gap:14px;z-index:9500;font-size:13px;box-shadow:0 8px 32px #00000080;pointer-events:all;white-space:nowrap}.fl-pick-abort-btn{padding:3px 12px;font-size:11px;background:#ef444426;border:1px solid #ef4444;color:#ef4444;border-radius:12px;cursor:pointer;transition:all .15s}.fl-pick-abort-btn:hover{background:#ef4444;color:#fff}.fl-quick-task-bar{display:flex;flex-wrap:wrap;gap:var(--sp-1);padding:var(--sp-1) 0}.fl-quick-btn{display:flex;align-items:center;gap:5px;padding:4px 9px;border:1px solid var(--color-border);border-radius:var(--r-sm);background:var(--color-bg-1);cursor:pointer;font-size:10px;color:var(--color-text-3);transition:all .15s}.fl-quick-btn:hover{border-color:var(--color-accent);color:var(--color-accent);background:#3b82f60f}.fl-quick-btn svg{pointer-events:none;flex-shrink:0}.fl-quick-btn--spatial:hover{border-color:#f59e0b;color:#f59e0b;background:#f59e0b14}.fl-picked-dest{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);background:#f59e0b14;border:1px solid rgba(245,158,11,.3);border-radius:var(--r-sm);font-size:var(--fs-xs);color:#f59e0b}.fl-picked-dest span{flex:1}.fl-repick-btn{display:flex;align-items:center;gap:4px;padding:3px 8px;font-size:10px;background:transparent;border:1px solid rgba(245,158,11,.4);color:#f59e0b;border-radius:var(--r-sm);cursor:pointer;white-space:nowrap}.fl-repick-btn:hover{background:#f59e0b26}.fl-pick-prompt{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);background:var(--color-bg-3);border:1px dashed var(--color-border);border-radius:var(--r-sm);font-size:var(--fs-xs);color:var(--color-text-3)}.fl-pick-prompt span{flex:1}.fl-pick-room-btn{padding:4px 10px;font-size:10px;font-weight:var(--fw-semibold);background:var(--color-accent);color:#fff;border:none;border-radius:var(--r-sm);cursor:pointer;white-space:nowrap}.fl-pick-room-btn:hover{opacity:.85}.fl-modal-robot{font-size:var(--fs-xs);font-weight:400;color:var(--color-text-3);margin-left:4px}.fl-pick-toast-info{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.fl-pick-toast-info strong{font-size:13px;color:#e2e8f0}.fl-pick-toast-info span{font-size:11px;color:#94a3b8}.fl-pick-pts{font-size:10px;color:#fbbf24}.fl-pick-undo-btn{padding:3px 10px;font-size:11px;background:#fbbf241f;border:1px solid #f59e0b;color:#f59e0b;border-radius:12px;cursor:pointer;white-space:nowrap}.fl-pick-undo-btn:hover{background:#fbbf2440}.fl-pick-finish-btn{padding:3px 12px;font-size:11px;background:#22c55e26;border:1px solid #22c55e;color:#22c55e;border-radius:12px;cursor:pointer;white-space:nowrap;font-weight:var(--fw-semibold)}.fl-pick-finish-btn:hover{background:#22c55e;color:#fff}.fl-dest-summary{display:flex;flex-direction:column;gap:var(--sp-1);padding:var(--sp-2) var(--sp-3);background:#3b82f60f;border:1px solid rgba(59,130,246,.2);border-radius:var(--r-sm);margin-bottom:var(--sp-2)}.fl-dest-row{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-xs);color:var(--color-text-2)}.fl-dest-step-dot{width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:var(--fw-semibold);color:#fff;flex-shrink:0}.fl-route-dots{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.fl-route-dot{width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:var(--fw-bold);color:#fff}.fl-route-label{font-size:var(--fs-xs);color:var(--color-text-3);margin-left:4px}.fl-task-row--needs-action{border-left:3px solid #f59e0b;background:#f59e0b0f}.fl-action-needed-badge{display:inline-flex;align-items:center;gap:3px;padding:1px 6px;font-size:10px;font-weight:600;color:#92400e;background:#f59e0b33;border:1px solid rgba(245,158,11,.4);border-radius:10px}.fl-transport-confirm{display:flex;align-items:center;gap:var(--sp-2);margin-top:var(--sp-1);padding:var(--sp-1) var(--sp-2);background:#3b82f614;border:1px solid rgba(59,130,246,.25);border-radius:var(--radius);flex-wrap:wrap}.fl-transport-phase-icon{font-size:14px;flex-shrink:0}.fl-transport-phase-label{font-size:var(--fs-xs);color:var(--color-text-2);flex:1}.fl-confirm-transport-btn{padding:3px 10px;font-size:var(--fs-xs);font-weight:600;background:#22c55e;color:#fff;border:none;border-radius:var(--radius);cursor:pointer;white-space:nowrap;flex-shrink:0}.fl-confirm-transport-btn:hover{background:#16a34a}.fl-tr-dest{font-size:10px;color:var(--color-text-4)}.fl-station-row{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;margin-bottom:var(--sp-1)}.fl-station-info{font-size:var(--fs-xs);color:var(--color-text-2);display:flex;align-items:center;gap:var(--sp-2);flex:1}.fl-station-info--none{color:var(--color-text-4);font-style:italic}.fl-station-dot{width:10px;height:10px;border-radius:50%;background:#f59e0b;flex-shrink:0}.fl-sidebar-footer{display:flex;flex-direction:column;gap:var(--sp-2)}.fl-tasks-badge{background:#ef4444;color:#fff;font-size:10px;font-weight:var(--fw-bold);min-width:18px;height:18px;border-radius:9px;display:flex;align-items:center;justify-content:center;padding:0 5px;line-height:1}.fl-tasks-tab{position:absolute;right:0;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;gap:5px;width:28px;padding:14px 0;background:var(--color-bg-3);border:1px solid var(--color-border);border-right:none;border-radius:6px 0 0 6px;cursor:pointer;z-index:102;transition:right .22s ease,background .15s;color:var(--color-text-3)}.fl-tasks-tab:hover{background:var(--color-bg-2);color:var(--color-accent);border-color:var(--color-accent)}.fl-tasks-tab--open{right:340px}.fl-tasks-tab-label{font-size:9px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg);white-space:nowrap;color:inherit;pointer-events:none}.fl-tasks-badge-tab{background:#ef4444;color:#fff;font-size:9px;font-weight:var(--fw-bold);min-width:15px;height:15px;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 3px;pointer-events:none}.fl-tasks-drawer{position:absolute;top:0;right:0;bottom:0;width:340px;background:var(--color-bg-1);border-left:1px solid var(--color-border);z-index:101;display:flex;flex-direction:column;transform:translate(100%);transition:transform .22s ease;box-shadow:-6px 0 24px #00000040}.fl-tasks-drawer--open{transform:translate(0)}.fl-tasks-drawer-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--color-border);flex-shrink:0;background:var(--color-bg-2)}.fl-tasks-drawer-title{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--color-text-1)}.fl-tasks-drawer-body{flex:1;overflow-y:auto}.fl-ctrl-overlay{position:fixed;inset:0;background:transparent;z-index:9600;pointer-events:none}.fl-ctrl-panel{position:absolute;top:8vh;left:50%;transform:translate(-50%);background:#0f172a;border:1px solid rgba(255,255,255,.1);border-radius:var(--r-md);overflow:hidden;display:flex;flex-direction:column;width:min(960px,97vw);max-height:92vh;box-shadow:0 24px 64px #000000b3;pointer-events:all}.fl-ctrl-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid rgba(255,255,255,.08);background:#ffffff08;flex-shrink:0;cursor:grab;user-select:none}.fl-autopilot-btn{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:#f59e0b;background:#f59e0b1a;border:1px solid rgba(245,158,11,.35);border-radius:var(--r-sm);padding:3px 9px;cursor:pointer;transition:all .15s}.fl-autopilot-btn:hover{background:#f59e0b33;border-color:#f59e0b}.fl-autopilot-btn--on{color:#22c55e;background:#22c55e1a;border-color:#22c55e59}.fl-autopilot-btn--on:hover{background:#22c55e33;border-color:#22c55e}.fl-ctrl-title{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:#e2e8f0;display:flex;align-items:center;gap:6px}.fl-ctrl-views{display:flex;gap:2px;background:#000;flex-shrink:0}.fl-ctrl-view-wrap{flex:1;display:flex;flex-direction:column;min-width:0}.fl-ctrl-view-label{font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#475569;text-align:center;padding:4px 0;background:#ffffff05;border-bottom:1px solid rgba(255,255,255,.06)}.fl-ctrl-canvas{width:100%;aspect-ratio:4/3;background:#050a14;display:block}.fl-ctrl-hud{display:flex;align-items:center;justify-content:space-between;padding:6px 14px;background:#00000080;font-size:11px;color:#64748b;border-top:1px solid rgba(255,255,255,.06);flex-shrink:0}.fl-ctrl-hud #fl-cam-pos{color:#94a3b8;font-family:monospace}.fl-ctrl-dpad{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px;background:#ffffff05;border-top:1px solid rgba(255,255,255,.06);flex-shrink:0}.fl-dpad-row{display:flex;gap:4px}.fl-dpad-btn{width:44px;height:44px;background:#ffffff0f;border:1px solid rgba(255,255,255,.12);border-radius:var(--r-sm);color:#94a3b8;font-size:16px;cursor:pointer;transition:all .1s;display:flex;align-items:center;justify-content:center;user-select:none}.fl-dpad-btn:hover,.fl-dpad-btn:active{background:#3b82f640;border-color:#3b82f6;color:#93c5fd}.fl-dpad-btn--pressed{background:#3b82f659!important;border-color:#3b82f6!important;color:#93c5fd!important}.fl-ctrl-btn{display:flex;align-items:center;gap:4px;padding:4px 10px;font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:#22c55e;background:#22c55e1a;border:1px solid rgba(34,197,94,.35);border-radius:var(--r-sm);cursor:pointer;transition:all .15s}.fl-ctrl-btn:hover{background:#22c55e33;border-color:#22c55e}.fl-module-ctrl{display:flex;gap:4px}.fl-module-play-btn,.fl-module-stop-btn{display:flex;align-items:center;justify-content:center;gap:5px;padding:4px 12px;font-size:var(--fs-xs);font-weight:var(--fw-semibold);border-radius:var(--r-sm);cursor:pointer;transition:all .15s;border:1px solid transparent;white-space:nowrap}.fl-module-play-btn{color:#22c55e;background:#22c55e1f;border-color:#22c55e4d}.fl-module-play-btn:hover{background:#22c55e38;border-color:#22c55e}.fl-module-play-btn--off{color:var(--color-text-3);background:var(--color-bg-3);border-color:var(--color-border)}.fl-module-stop-btn{color:#ef4444;background:#ef44441a;border-color:#ef44444d}.fl-module-stop-btn:hover{background:#ef444433;border-color:#ef4444}.fl-module-stop-btn--off{color:var(--color-text-3);background:var(--color-bg-3);border-color:var(--color-border)}.fl-main{flex:1;display:flex;overflow:hidden;min-width:0}.fl-main-left{flex:1;display:flex;flex-direction:column;overflow:hidden;border-right:1px solid var(--color-border);min-width:0}.fl-main-right{width:300px;flex-shrink:0;display:flex;flex-direction:column;overflow:hidden}.fl-main-left-body{flex:1;overflow:hidden;display:flex;flex-direction:column;min-height:0}.fl-atp-header{display:flex;align-items:center;gap:var(--sp-2);padding:10px 14px;border-bottom:1px solid var(--color-border);flex-shrink:0;background:var(--color-bg-2)}.fl-atp-title{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--color-text-1)}.fl-atp-body{flex:1;overflow-y:auto}.fl-tr-pause{color:#f59e0b;background:#f59e0b1a;border-color:#f59e0b4d;font-size:11px}.fl-tr-pause:hover{background:#f59e0b33;border-color:#f59e0b}.fl-log-btn{display:flex;align-items:center;gap:3px;color:var(--color-text-3)}.fl-log-btn--active{color:#22c55e;background:#22c55e1a;border-color:#22c55e4d}.fl-ros-log-panel{position:absolute;left:0;right:0;top:100%;z-index:200;background:#0a0f1a;border:1px solid rgba(255,255,255,.1);border-top:none;border-radius:0 0 var(--r-sm) var(--r-sm);display:flex;flex-direction:column;max-height:320px;box-shadow:0 8px 24px #00000080}.fl-conn-bar,.fl-demo-banner{position:relative}.fl-ros-log-header{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;border-bottom:1px solid rgba(255,255,255,.08);flex-shrink:0}.fl-ros-log-title{font-size:10px;font-weight:var(--fw-semibold);color:#94a3b8;display:flex;align-items:center}.fl-ros-log-body{flex:1;overflow-y:auto;font-family:monospace;font-size:10px;line-height:1.5;padding:4px 0}.fl-ros-log-empty{padding:12px;color:#475569;text-align:center}.fl-log-row{display:flex;gap:6px;padding:2px 8px;border-bottom:1px solid rgba(255,255,255,.03);min-width:0}.fl-log-row:hover{background:#ffffff08}.fl-log-time{color:#475569;flex-shrink:0;white-space:nowrap}.fl-log-topic{color:#38bdf8;flex-shrink:0;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fl-log-data{color:#64748b;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.fl-dash-toggle-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--r-sm);cursor:pointer;border:1px solid var(--color-border);background:var(--color-bg-3);color:var(--color-text-3);transition:all .15s;flex-shrink:0}.fl-dash-toggle-btn:hover{background:var(--color-bg-2);color:var(--color-text-1)}.fl-dash-toggle-btn--active{color:#22c55e;background:#22c55e1f;border-color:#22c55e4d}.fl-dash-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:12px}.fl-dash-card{background:var(--color-bg-3);border:1px solid var(--color-border);border-radius:var(--r-md);padding:10px 12px;text-align:center}.fl-dash-card-val{font-size:22px;font-weight:var(--fw-bold);color:var(--color-text-1);line-height:1.2}.fl-dash-card-lbl{font-size:var(--fs-xs);color:var(--color-text-3);margin-top:2px}.fl-dash-robots{padding:0 12px 12px;display:flex;flex-direction:column;gap:4px}.fl-dash-robot-row{display:flex;align-items:center;gap:6px;padding:5px 8px;background:var(--color-bg-3);border-radius:var(--r-sm);font-size:var(--fs-xs)}.fl-dash-robot-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.fl-dash-robot-name{font-weight:var(--fw-semibold);color:var(--color-text-1);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.fl-dash-robot-status{color:var(--color-text-3);flex-shrink:0}.fl-dash-robot-bat{color:var(--color-text-2);flex-shrink:0}.fl-dash-robot-task{color:#3b82f6;flex-shrink:0;max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fl-zone-list{display:flex;flex-direction:column;gap:4px;padding:4px 0}.fl-zone-row{display:flex;align-items:center;gap:6px;padding:4px 0;font-size:var(--fs-xs)}.fl-zone-dot{width:8px;height:8px;background:#ef4444;border-radius:2px;flex-shrink:0}.fl-zone-label{font-weight:var(--fw-semibold);color:var(--color-text-1);min-width:0}.fl-zone-coords{color:var(--color-text-3);font-family:monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.fl-zone-toast{border-color:#ef4444!important}.fl-add-zone-btn{font-size:var(--fs-xs);padding:2px 8px;margin-left:auto;background:#ef44441f;border:1px solid rgba(239,68,68,.3);color:#ef4444;border-radius:var(--r-sm);cursor:pointer}.fl-add-zone-btn:hover{background:#ef444438}.fl-form-section-title{display:flex;align-items:center;font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--color-text-3);text-transform:uppercase;letter-spacing:.05em;padding-bottom:4px;border-bottom:1px solid var(--color-border);margin-bottom:8px;margin-top:12px}.fl-toolbar{display:flex;align-items:center;gap:6px;padding:6px 12px;border-bottom:1px solid var(--color-border);background:var(--color-bg-2);flex-shrink:0}.fl-toolbar-group{display:flex;align-items:center;gap:4px}.fl-toolbar-sep{width:1px;height:18px;background:var(--color-border);margin:0 4px;flex-shrink:0}.fl-toolbar-btn{display:flex;align-items:center;gap:5px;padding:4px 10px;border-radius:var(--r-sm);cursor:pointer;font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--color-text-3);background:transparent;border:1px solid transparent;transition:all .15s;white-space:nowrap}.fl-toolbar-btn:hover{background:var(--color-bg-3);color:var(--color-text-1);border-color:var(--color-border)}.fl-toolbar-btn--active{color:#22c55e;background:#22c55e1a;border-color:#22c55e4d}.fl-estop-banner{background:#ef4444;color:#fff;font-weight:700;font-size:13px;padding:8px 16px;text-align:center;letter-spacing:.05em;position:sticky;top:0;z-index:100}.fl-estop-btn{background:#ef4444;color:#fff;border:none;border-radius:5px;padding:4px 10px;font-size:11px;font-weight:700;cursor:pointer;letter-spacing:.05em}.fl-estop-btn--active{background:#991b1b;box-shadow:0 0 0 2px #ef4444}.fl-tr-dep{font-size:10px;color:#94a3b8;margin-left:4px}.fl-tr-repeat{font-size:10px;margin-left:4px}.fl-tr-sla-breach{font-size:10px;background:#f59e0b22;color:#f59e0b;border-radius:3px;padding:1px 4px;margin-left:4px}.fl-tr-edit{color:#94a3b8!important}.fl-cap-badge{background:var(--color-bg-3);border:1px solid var(--color-border);border-radius:4px;font-size:10px;padding:2px 6px;color:var(--color-text-muted)}.fl-audit-log{display:flex;flex-direction:column;height:100%}.fl-audit-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:1px solid var(--color-border)}.fl-audit-body{flex:1;overflow-y:auto;padding:4px 0}.fl-audit-row{display:flex;gap:8px;align-items:flex-start;padding:4px 12px;font-size:11px;border-bottom:1px solid var(--color-border-subtle, rgba(255, 255, 255, .05))}.fl-audit-time{color:var(--color-text-4);white-space:nowrap;flex-shrink:0}.fl-audit-type{flex-shrink:0;min-width:70px;font-weight:600;font-size:10px;text-transform:uppercase}.fl-audit-msg{color:var(--color-text-2)}.fl-scan-hint{font-size:11px;color:var(--color-text-3);padding:4px 0 8px}.fl-scan-hint code{font-family:monospace;color:var(--color-text-2)}.fl-scan-list{display:flex;flex-direction:column;gap:6px;margin-top:4px}.fl-scan-row{display:flex;align-items:center;justify-content:space-between;padding:7px 10px;border-radius:6px;background:var(--color-bg-3, rgba(255, 255, 255, .04));border:1px solid var(--color-border, rgba(255, 255, 255, .1))}.fl-scan-row-left{display:flex;align-items:baseline;gap:8px;min-width:0}.fl-scan-ns{font-family:monospace;font-size:12px;color:#60a5fa;font-weight:600}.fl-scan-topics{font-size:10px;color:var(--color-text-3)}.fl-scan-badge{font-size:10px;padding:2px 8px;border-radius:12px;background:#22c55e1f;color:#22c55e;border:1px solid rgba(34,197,94,.25);white-space:nowrap}.fl-scan-topic-list{display:flex;flex-wrap:wrap;gap:3px;padding:4px 10px 6px;border-left:2px solid rgba(96,165,250,.2);margin-left:2px}.fl-scan-topic-chip{font-family:monospace;font-size:9px;padding:1px 5px;border-radius:3px;background:#ffffff0d;color:var(--color-text-3);border:1px solid rgba(255,255,255,.08)}.fl-minimap-wrap{position:fixed;z-index:50;display:flex;flex-direction:column;background:#111827;border:1px solid rgba(255,255,255,.15);border-radius:8px;box-shadow:0 8px 32px #0009;overflow:hidden;min-width:220px;min-height:160px}.fl-minimap-header{display:flex;align-items:center;justify-content:space-between;padding:0 8px;height:28px;flex-shrink:0;background:#ffffff0d;border-bottom:1px solid rgba(255,255,255,.1);cursor:grab;user-select:none}.fl-minimap-header:active{cursor:grabbing}.fl-minimap-title{font-size:11px;font-weight:600;color:var(--color-text-2);letter-spacing:.04em}.fl-minimap-close{background:none;border:none;cursor:pointer;color:var(--color-text-3);font-size:14px;line-height:1;padding:2px 4px;border-radius:4px;transition:color .15s,background .15s}.fl-minimap-close:hover{color:#f1f5f9;background:#ffffff1a}.fl-minimap-floors{display:flex;gap:3px;padding:3px 8px;height:28px;align-items:center;flex-shrink:0;background:#00000040;border-bottom:1px solid rgba(255,255,255,.07);overflow-x:auto}.fl-minimap-floor-tab{background:none;border:1px solid transparent;color:var(--color-text-3, #94a3b8);font-size:10px;font-weight:500;padding:1px 8px;border-radius:4px;cursor:pointer;white-space:nowrap;transition:color .12s,background .12s,border-color .12s}.fl-minimap-floor-tab:hover{color:#f1f5f9;background:#ffffff14}.fl-minimap-floor-tab--active{color:#60a5fa;border-color:#60a5fa59;background:#60a5fa1f}.fl-minimap-canvas-inner{flex:1;display:block;width:100%;cursor:grab}.fl-minimap-canvas-inner:active{cursor:grabbing}.fl-minimap-resize{position:absolute;right:0;bottom:0;width:14px;height:14px;cursor:se-resize;background:linear-gradient(135deg,transparent 40%,rgba(255,255,255,.2) 40%,rgba(255,255,255,.2) 60%,transparent 60%,transparent 70%,rgba(255,255,255,.2) 70%,rgba(255,255,255,.2) 85%,transparent 85%)}.cc-wrap{display:flex;flex-direction:column;height:100%;overflow:hidden;font-size:var(--fs-sm)}.cc-header{flex-shrink:0;border-bottom:1px solid var(--color-border);background:var(--color-bg-2);padding:10px 14px 0}.cc-title-row{display:flex;align-items:center;gap:8px;margin-bottom:10px}.cc-title{font-size:var(--fs-base);font-weight:var(--fw-semibold);color:var(--color-text-1);margin:0}.cc-sub{font-size:var(--fs-xs);color:var(--color-text-4)}.cc-kpi-row{display:flex;align-items:center;gap:0;margin-bottom:10px;flex-wrap:wrap}.cc-kpi{padding:4px 14px;min-width:80px}.cc-kpi:first-child{padding-left:0}.cc-kpi-val{font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--color-text-1);white-space:nowrap}.cc-kpi-label{font-size:var(--fs-xs);color:var(--color-text-4);margin-top:1px}.cc-kpi-divider{width:1px;height:28px;background:var(--color-border);flex-shrink:0}.cc-tabs{display:flex;align-items:center;gap:2px}.cc-tab{display:flex;align-items:center;gap:5px;padding:6px 10px;border-radius:var(--r-sm) var(--r-sm) 0 0;font-size:var(--fs-xs);color:var(--color-text-3);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:color var(--t-fast),border-color var(--t-fast);white-space:nowrap}.cc-tab:hover{color:var(--color-text-1);background:var(--color-bg-hover)}.cc-tab--active{color:var(--color-accent);border-bottom-color:var(--color-accent);font-weight:var(--fw-medium)}.cc-gear-btn{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:var(--r-sm);color:var(--color-text-4);background:none;border:none;cursor:pointer;transition:color var(--t-fast),background var(--t-fast)}.cc-gear-btn:hover{color:var(--color-text-1);background:var(--color-bg-hover)}.cc-body{flex:1;overflow-y:auto;padding:14px}.cc-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;height:100%;min-height:160px;color:var(--color-text-3);font-size:var(--fs-sm)}.cc-empty p{margin:0}.cc-empty-list{padding:24px;text-align:center;color:var(--color-text-4);font-size:var(--fs-sm)}.cc-section-title{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--color-text-4);text-transform:uppercase;letter-spacing:.05em;margin:0 0 10px}.cc-overview{display:grid;grid-template-columns:1fr 1fr;gap:20px}@media(max-width:640px){.cc-overview{grid-template-columns:1fr}}.cc-cat-list{display:flex;flex-direction:column;gap:6px}.cc-cat-row{display:grid;grid-template-columns:140px 1fr 120px;align-items:center;gap:8px}.cc-cat-name{display:flex;align-items:center;gap:6px;font-size:var(--fs-xs);color:var(--color-text-2)}.cc-cat-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.cc-cat-bar-wrap{height:16px;background:var(--color-bg-hover);border-radius:var(--r-sm);overflow:hidden}.cc-cat-bar{height:100%;border-radius:var(--r-sm);transition:width .3s ease}.cc-cat-amounts{display:flex;flex-direction:column;align-items:flex-end;gap:1px}.cc-cat-total{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--color-text-1);white-space:nowrap}.cc-cat-pct{font-size:10px;color:var(--color-text-4)}.cc-status-bars{display:flex;flex-direction:column;gap:8px}.cc-status-row{display:grid;grid-template-columns:10px 80px 1fr 90px;align-items:center;gap:8px}.cc-status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.cc-status-name{font-size:var(--fs-xs);color:var(--color-text-2)}.cc-status-bar-wrap{height:8px;background:var(--color-bg-hover);border-radius:4px;overflow:hidden}.cc-status-bar{height:100%;border-radius:4px;transition:width .3s ease}.cc-status-val{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--color-text-1);text-align:right;white-space:nowrap}.cc-budget-bar-outer{height:10px;background:var(--color-bg-hover);border-radius:5px;overflow:hidden;margin-bottom:4px}.cc-budget-bar-inner{height:100%;background:var(--color-accent);border-radius:5px;transition:width .3s ease}.cc-budget-labels{display:flex;justify-content:space-between;font-size:10px;color:var(--color-text-4)}.cc-list-wrap{display:flex;flex-direction:column;gap:12px}.cc-list-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.cc-filters{display:flex;gap:6px;flex-wrap:wrap}.cc-filter-select{height:28px;padding:0 8px;border:1px solid var(--color-border);border-radius:var(--r-sm);background:var(--color-bg-2);color:var(--color-text-2);font-size:var(--fs-xs);cursor:pointer}.cc-filter-select:focus{outline:none;border-color:var(--color-accent)}.cc-table-wrap{overflow-x:auto}.cc-table{width:100%;border-collapse:collapse;font-size:var(--fs-xs)}.cc-table th{text-align:left;padding:6px 10px;font-weight:var(--fw-semibold);color:var(--color-text-4);border-bottom:1px solid var(--color-border);white-space:nowrap;font-size:10px;text-transform:uppercase;letter-spacing:.04em}.cc-table-row td{padding:7px 10px;border-bottom:1px solid var(--color-border);vertical-align:middle}.cc-table-row:last-child td{border-bottom:none}.cc-table-row:hover td{background:var(--color-bg-hover)}.cc-td-date{white-space:nowrap;color:var(--color-text-3)}.cc-td-desc{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-text-1)}.cc-td-vendor{color:var(--color-text-3)}.cc-td-rec{white-space:nowrap;color:var(--color-text-4);font-size:10px}.cc-td-amount{text-align:right;font-weight:var(--fw-semibold);color:var(--color-text-1);white-space:nowrap}.cc-td-actions{white-space:nowrap;text-align:right}.cc-cat-badge{display:inline-block;padding:2px 7px;border-radius:10px;font-size:10px;font-weight:var(--fw-medium);white-space:nowrap}.cc-status-badge{font-size:10px;font-weight:var(--fw-medium)}.cc-row-btn{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:var(--r-sm);color:var(--color-text-4);background:none;border:none;cursor:pointer;transition:color var(--t-fast),background var(--t-fast)}.cc-row-btn:hover{color:var(--color-text-1);background:var(--color-bg-hover)}.cc-row-btn--del:hover{color:#f87171}.cc-form{background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:var(--r-md);padding:14px;margin-bottom:4px}.cc-form-title{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--color-text-1);margin:0 0 12px}.cc-form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:12px}@media(max-width:600px){.cc-form-grid{grid-template-columns:1fr 1fr}}.cc-form-field{display:flex;flex-direction:column;gap:4px}.cc-form-field--wide{grid-column:span 2}.cc-form-label{font-size:10px;font-weight:var(--fw-semibold);color:var(--color-text-4);text-transform:uppercase;letter-spacing:.04em}.cc-form-input{height:30px;padding:0 8px;border:1px solid var(--color-border);border-radius:var(--r-sm);background:var(--color-bg-3);color:var(--color-text-1);font-size:var(--fs-xs);width:100%;box-sizing:border-box}.cc-form-input:focus{outline:none;border-color:var(--color-accent)}.cc-form-actions{display:flex;gap:8px}.cc-analysis{display:flex;flex-direction:column;gap:24px}.cc-bar-chart{display:flex;align-items:flex-end;gap:6px;height:160px;padding-bottom:28px;position:relative}.cc-bar-col{display:flex;flex-direction:column;align-items:center;gap:4px;flex:1;min-width:28px;position:relative}.cc-bar-col:hover .cc-bar-tooltip{opacity:1}.cc-bar-tooltip{position:absolute;bottom:calc(100% + 4px);left:50%;transform:translate(-50%);background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:var(--r-sm);padding:3px 7px;font-size:10px;white-space:nowrap;color:var(--color-text-1);pointer-events:none;opacity:0;transition:opacity var(--t-fast);z-index:10}.cc-bar{width:100%;background:var(--color-accent);border-radius:var(--r-sm) var(--r-sm) 0 0;transition:height .3s ease;cursor:default}.cc-bar-label{position:absolute;bottom:0;font-size:10px;color:var(--color-text-4);text-align:center;line-height:1.2}.cc-horiz-bars{display:flex;flex-direction:column;gap:8px}.cc-hbar-row{display:grid;grid-template-columns:120px 1fr 100px;align-items:center;gap:10px}.cc-hbar-label{font-size:var(--fs-xs);color:var(--color-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cc-hbar-track{height:10px;background:var(--color-bg-hover);border-radius:5px;overflow:hidden}.cc-hbar-fill{height:100%;border-radius:5px;transition:width .3s ease}.cc-hbar-val{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--color-text-1);text-align:right;white-space:nowrap}.cc-modal-overlay{position:absolute;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:100}.cc-modal{background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:var(--r-lg);padding:20px;width:300px;box-shadow:0 8px 32px #0000004d}.cc-modal-title{font-size:var(--fs-base);font-weight:var(--fw-semibold);color:var(--color-text-1);margin:0 0 14px}.cc-modal--wide{width:420px;max-height:80vh;overflow-y:auto}.cc-din-code{font-size:10px;font-weight:var(--fw-semibold);color:var(--color-text-4);background:var(--color-bg-3);border-radius:3px;padding:1px 4px;font-variant-numeric:tabular-nums;flex-shrink:0}.cc-din-inline{font-size:10px;color:var(--color-text-4);margin-right:4px;font-variant-numeric:tabular-nums}.cc-tab-badge{display:inline-flex;align-items:center;justify-content:center;font-size:9px;font-weight:var(--fw-bold);min-width:16px;height:16px;padding:0 4px;border-radius:8px;margin-left:4px}.cc-tab-badge--red{background:#f8717130;color:#f87171}.cc-tab-badge--yellow{background:#fbbf2430;color:#fbbf24}.cc-soll-ist{display:flex;flex-direction:column;gap:0}.cc-si-head,.cc-si-row{display:grid;grid-template-columns:1fr 110px 110px 80px 130px 90px;align-items:center;gap:8px;padding:7px 10px}.cc-si-head{font-size:10px;font-weight:var(--fw-semibold);color:var(--color-text-4);border-bottom:1px solid var(--color-border);padding-bottom:6px}.cc-si-row{font-size:var(--fs-xs);color:var(--color-text-2);border-bottom:1px solid var(--color-border)}.cc-si-row:last-child{border-bottom:none}.cc-si-row:hover{background:var(--color-bg-hover)}.cc-si-row--total{border-top:1px solid var(--color-border);margin-top:2px;color:var(--color-text-1);font-weight:var(--fw-semibold)}.cc-si-col-cat{display:flex;align-items:center;gap:6px;color:var(--color-text-1)}.cc-si-col-budget,.cc-si-col-ist,.cc-si-col-m2,.cc-si-col-dev{text-align:right;font-variant-numeric:tabular-nums}.cc-si-col-bar{display:flex;align-items:center;gap:6px}.cc-si-bar-outer{flex:1;height:5px;background:var(--color-bg-3);border-radius:3px;overflow:hidden}.cc-si-bar-fill{height:100%;border-radius:3px;transition:width .3s ease}.cc-si-bar-pct{font-size:10px;font-variant-numeric:tabular-nums;flex-shrink:0;min-width:30px;text-align:right}@media(max-width:700px){.cc-si-head,.cc-si-row{grid-template-columns:1fr 90px 100px 70px}.cc-si-col-m2{display:none}}.cc-maint-wrap{display:flex;flex-direction:column;gap:12px}.cc-maint-list{display:flex;flex-direction:column;gap:2px}.cc-maint-row{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:var(--r-md);transition:background .15s}.cc-maint-row:hover{background:var(--color-bg-hover)}.cc-traffic-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;box-shadow:0 0 0 2px currentColor}.cc-maint-info{flex:1;min-width:0}.cc-maint-title{display:flex;align-items:center;gap:6px;font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--color-text-1);flex-wrap:wrap}.cc-maint-meta{font-size:10px;color:var(--color-text-4);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cc-maint-legal{font-size:10px;font-weight:var(--fw-bold);background:#f8717120;color:#f87171;border-radius:3px;padding:1px 5px;flex-shrink:0}.cc-maint-actions{display:flex;align-items:center;gap:4px;flex-shrink:0}.cc-settings-block{margin-bottom:16px}.cc-settings-label{font-size:10px;font-weight:var(--fw-semibold);color:var(--color-text-4);text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px}.cc-settings-budget-row{display:grid;grid-template-columns:1fr 110px;align-items:center;gap:8px;margin-bottom:5px}.cc-settings-budget-label{display:flex;align-items:center;gap:5px;font-size:var(--fs-xs);color:var(--color-text-2)}.gefma-detail{display:flex;flex-direction:column;gap:12px;padding:12px}.gefma-detail-head{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--color-bg-2);border:1px solid var(--color-border-1);border-radius:var(--radius-md)}.gefma-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media(max-width:900px){.gefma-detail-grid{grid-template-columns:1fr}}.gefma-section{background:var(--color-bg-2);border:1px solid var(--color-border-1);border-radius:var(--radius-md);padding:10px 12px}.gefma-section--wide{grid-column:1 / -1}.gefma-responsible{font-size:var(--fs-xs);color:var(--color-text-2);margin-bottom:6px}.gefma-chain{list-style:none;margin:0 0 8px;padding:0;display:flex;flex-direction:column;gap:4px}.gefma-chain-step{font-size:var(--fs-xs);color:var(--color-text-2)}.gefma-chain-date{font-size:10px;color:var(--color-text-4);margin-right:6px}.gefma-chain-note{color:var(--color-text-4)}.gefma-inline-form{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.gefma-inline-form .cc-form-input{flex:1;min-width:140px}.gefma-empty-hint{font-size:var(--fs-xs);color:#fbbf24;margin-bottom:8px}.gefma-evidence-list{list-style:none;margin:0 0 8px;padding:0;display:flex;flex-direction:column;gap:4px}.gefma-evidence-row{display:flex;align-items:center;gap:8px;font-size:var(--fs-xs);color:var(--color-text-2)}.gefma-audit{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;max-height:200px;overflow-y:auto}.gefma-audit-row{font-size:var(--fs-xs);color:var(--color-text-2);display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}.app-panel--collapsed{overflow:hidden}.app-panel--collapsed .panel-tab-region,.app-panel--collapsed .panel-resizer{display:none!important}.panel-icon-strip{display:none;flex-direction:column;align-items:center;gap:2px;padding:6px 0;width:100%;overflow-y:auto;flex:1}.app-panel--collapsed .panel-icon-strip{display:flex}.app-panel--bottom .panel-icon-strip{flex-direction:row;justify-content:center;padding:0 6px;overflow-x:auto;overflow-y:hidden;background:var(--color-bg-1);border-top:1px solid var(--color-border)}.panel-strip-btn{position:relative;display:flex;align-items:center;justify-content:center;width:var(--icon-btn-size);height:var(--icon-btn-size);border-radius:var(--icon-btn-radius);color:var(--color-text-3);cursor:pointer;flex-shrink:0;transition:background var(--t-fast),color var(--t-fast)}.panel-strip-btn:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.panel-strip-btn.active{background:var(--color-accent-muted);color:var(--color-accent)}.panel-strip-tooltip{position:absolute;background:var(--color-bg-4);border:1px solid var(--color-border);color:var(--color-text-1);font-size:var(--fs-xs);padding:3px 8px;border-radius:var(--r-sm);white-space:nowrap;pointer-events:none;opacity:0;transition:opacity var(--t-fast);z-index:var(--z-tooltip)}.panel-strip-btn:hover .panel-strip-tooltip{opacity:1}.app-panel--left .panel-strip-tooltip{left:calc(100% + 6px);top:50%;transform:translateY(-50%)}.app-panel--right .panel-strip-tooltip{right:calc(100% + 6px);top:50%;transform:translateY(-50%);left:auto}.app-panel--bottom .panel-strip-tooltip{bottom:calc(100% + 6px);left:50%;transform:translate(-50%);top:auto}.tab-btn-tooltip{position:fixed;background:var(--color-bg-4);border:1px solid var(--color-border);color:var(--color-text-1);font-size:var(--fs-xs);padding:3px 8px;border-radius:var(--r-sm);white-space:nowrap;pointer-events:none;z-index:var(--z-tooltip)}.tab-btn-tooltip--right{transform:translateY(-50%)}.tab-btn-tooltip--left{transform:translate(-100%,-50%)}.tab-btn-tooltip--above{transform:translate(-50%,-100%)}.tab-btn-tooltip--below{transform:translate(-50%)}.panel-tab-region,.panel-split-container{display:flex;flex-direction:column;flex:1;overflow:hidden;min-height:0}.panel-split-pane{display:flex;flex-direction:column;overflow:hidden;min-height:0;flex:1}.panel-split-pane--bottom{flex:none}.panel-split-divider{flex-shrink:0;height:4px;background:var(--color-border);cursor:row-resize;position:relative;z-index:5;transition:background var(--t-fast)}.panel-split-divider:hover,.panel-split-divider.dragging{background:var(--color-accent)}.panel-split-divider:before{content:"";position:absolute;inset:-4px 0}.panel-split-hint{flex:1;display:flex;align-items:center;justify-content:center;color:var(--color-text-4);font-size:var(--fs-xs);border:1px dashed var(--color-border);border-radius:var(--r-base);margin:var(--sp-2);pointer-events:none}.panel-edge-toggle-btn{position:absolute;z-index:10;display:flex;align-items:center;justify-content:center;width:16px;height:40px;background:var(--color-bg-3);border:1px solid var(--color-border);border-radius:var(--icon-btn-radius);color:var(--color-text-3);cursor:pointer;transition:background var(--t-fast),color var(--t-fast),border-color var(--t-fast)}.panel-edge-toggle-btn:hover{background:var(--color-bg-hover);color:var(--color-text-1);border-color:var(--color-border-2)}.panel-edge-toggle-btn svg{transition:transform .15s ease}.panel-edge-toggle-btn--left{right:0;top:50%;transform:translateY(-50%);border-right:none;border-radius:var(--r-sm) 0 0 var(--r-sm)}.app-panel--left .panel-edge-toggle-btn--left svg{transform:rotate(180deg)}.app-panel--left.app-panel--collapsed .panel-edge-toggle-btn--left svg{transform:rotate(0)}.panel-edge-toggle-btn--right{left:0;top:50%;transform:translateY(-50%);border-left:none;border-radius:0 var(--r-sm) var(--r-sm) 0}.app-panel--right .panel-edge-toggle-btn--right svg{transform:rotate(0)}.app-panel--right.app-panel--collapsed .panel-edge-toggle-btn--right svg{transform:rotate(180deg)}.panel-edge-toggle-btn--bottom{width:var(--icon-btn-size);height:var(--icon-btn-size);right:var(--sp-2);bottom:var(--sp-1);background:transparent;border:none;border-radius:var(--icon-btn-radius)}.app-panel--bottom .panel-edge-toggle-btn--bottom svg{transform:rotate(90deg)}.app-panel--bottom.app-panel--collapsed .panel-edge-toggle-btn--bottom svg{transform:rotate(-90deg)}.tab-bar-split-btn{display:flex;align-items:center;justify-content:center;width:var(--icon-btn-size);height:var(--icon-btn-size);border-radius:var(--icon-btn-radius);color:var(--color-text-3);cursor:pointer;flex-shrink:0;margin-left:auto;align-self:center;transition:background var(--t-fast),color var(--t-fast)}.tab-bar-split-btn:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.tab-bar-split-btn.active{color:var(--color-accent);background:var(--color-accent-muted)}.tab-bar-add-btn{display:flex;align-items:center;justify-content:center;width:var(--icon-btn-size);height:var(--icon-btn-size);border-radius:var(--icon-btn-radius);color:var(--color-text-3);cursor:pointer;flex-shrink:0;align-self:center;transition:background var(--t-fast),color var(--t-fast)}.tab-bar-add-btn:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.tab-bar-split-btn~.tab-bar-add-btn{margin-left:0}.tab-bar--horizontal:not(:has(.tab-bar-split-btn,.ws-split-btn)) .tab-bar-add-btn{margin-left:auto}.app-panel--bottom .tab-bar--horizontal{justify-content:center}.app-panel--bottom .tab-bar--horizontal .tab-bar-add-btn{margin-left:0}.tab-bar--vertical .tab-bar-split-btn{margin-left:0;margin-top:auto}.tab-bar--vertical .tab-bar-split-btn~.tab-bar-add-btn{margin-top:0}.tab-bar--vertical:not(:has(.tab-bar-split-btn)) .tab-bar-add-btn{margin-left:0;margin-top:auto}.tab-btn[draggable=true]{cursor:grab;user-select:none}.tab-btn[draggable=true]:active{cursor:grabbing}.tab-btn.tab-dragging{opacity:.35}.tab-bar.drag-over{background:color-mix(in srgb,var(--color-accent) 8%,var(--color-bg-1))}.tab-drop-indicator{width:2px;height:20px;border-radius:2px;background:var(--color-accent);flex-shrink:0;align-self:center;pointer-events:none}.app-viewer--hidden{overflow:hidden;pointer-events:none}#viewer-wrap{position:absolute;inset:0}.workspace-panes{display:flex;flex-direction:row;width:100%;height:100%;overflow:hidden}.workspace-pane{display:flex;flex-direction:column;overflow:hidden;min-width:0}#ws-pane-0{flex:1}#ws-pane-1{flex:none}.workspace-pane-tab-bar{display:flex;align-items:center;min-height:var(--tab-bar-height);flex-shrink:0;border-bottom:1px solid var(--color-border);padding:0 4px;background:color-mix(in srgb,var(--color-bg-1) 90%,transparent);backdrop-filter:blur(2px)}.workspace-pane-content{flex:1;min-height:0;position:relative;overflow:hidden}#tab-content-viewer,#tab-content-viewer2{position:absolute!important;inset:0;overflow:hidden;padding:0}#tab-content-viewer #viewer-wrap{position:absolute;inset:0}.viewer-tab-btn{cursor:grab}.viewer-tab-btn:active{cursor:grabbing}.ws-split-btn{display:flex;align-items:center;justify-content:center;width:var(--icon-btn-size);height:var(--icon-btn-size);border-radius:var(--icon-btn-radius);color:var(--color-text-3);cursor:pointer;flex-shrink:0;margin-left:auto;transition:background var(--t-fast),color var(--t-fast)}.ws-split-btn:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.ws-split-btn.active{color:var(--color-accent);background:var(--color-accent-muted)}#ws-pane-0.ws-pane--viewer-away .workspace-pane-tab-bar:after{content:"← 3D-Ansicht hier ablegen";font-size:11px;color:var(--color-text-4);margin-left:8px;pointer-events:none;white-space:nowrap;flex-shrink:1;overflow:hidden;text-overflow:ellipsis}#ws-pane-0.ws-pane--viewer-away .workspace-pane-tab-bar.drag-over{background:color-mix(in srgb,var(--color-accent) 12%,var(--color-bg-1))!important;outline:2px dashed var(--color-accent);outline-offset:-2px}.workspace-pane-resizer{width:4px;background:var(--color-border);cursor:col-resize;flex-shrink:0;position:relative;z-index:5;transition:background var(--t-fast)}.workspace-pane-resizer:hover,.workspace-pane-resizer.dragging{background:var(--color-accent)}.workspace-pane-resizer:before{content:"";position:absolute;inset:0 -4px}.workspace-pane-close-btn{display:flex;align-items:center;justify-content:center;width:var(--icon-btn-size);height:var(--icon-btn-size);border-radius:var(--icon-btn-radius);color:var(--color-text-3);cursor:pointer;flex-shrink:0;transition:background var(--t-fast),color var(--t-fast)}.workspace-pane-close-btn:hover{background:var(--color-error-muted);color:var(--color-error)}.workspace-drop-hint{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:var(--color-text-4);pointer-events:none}.workspace-drop-hint p{font-size:var(--fs-sm);margin:0}#content-ws1-top:has(.tab-content) .workspace-drop-hint{display:none}.tab-content-container{position:relative}.tab-content-drop-overlay{position:absolute;inset:6px;background:color-mix(in srgb,var(--color-accent) 10%,var(--color-bg-1));border:2px dashed var(--color-accent);border-radius:var(--r-md);display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;z-index:20;transition:opacity 80ms ease}.tab-content-drop-overlay:after{content:"Hierher ziehen";font-size:var(--fs-sm);color:var(--color-accent);font-weight:var(--fw-medium);letter-spacing:.01em}.tab-content-drop-overlay.active{opacity:1}.layout-presets-wrap{position:relative}.layout-presets-btn{display:flex;align-items:center;gap:5px;height:28px;padding:0 9px;border-radius:var(--r-base);border:1px solid var(--color-border-2);background:var(--color-bg-3);color:var(--color-text-2);font-size:var(--fs-sm);cursor:pointer;white-space:nowrap;max-width:160px;overflow:hidden;text-overflow:ellipsis;transition:background var(--t-fast),border-color var(--t-fast),color var(--t-fast)}.layout-presets-btn:hover{background:var(--color-bg-hover);border-color:var(--color-border);color:var(--color-text-1)}.layout-presets-dropdown{position:absolute;top:calc(100% + 4px);right:0;min-width:220px;background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:var(--r-md);box-shadow:var(--shadow-lg);z-index:var(--z-modal);overflow:hidden}.presets-section-label{padding:7px 12px 3px;font-size:10px;font-weight:var(--fw-semibold);color:var(--color-text-4);text-transform:uppercase;letter-spacing:.06em}.preset-item{display:flex;align-items:center;gap:8px;padding:7px 12px;cursor:pointer;font-size:var(--fs-sm);color:var(--color-text-2);transition:background var(--t-fast)}.preset-item:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.preset-item.active{color:var(--color-accent)}.preset-item-name{flex:1}.preset-delete-btn{width:18px;height:18px;border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;color:var(--color-text-4);opacity:0;transition:opacity var(--t-fast),color var(--t-fast),background var(--t-fast);cursor:pointer;flex-shrink:0}.preset-item:hover .preset-delete-btn{opacity:1}.preset-delete-btn:hover{color:var(--color-error);background:var(--color-error-muted)}.presets-sep{height:1px;background:var(--color-border);margin:2px 0}.presets-save-row{display:flex;align-items:center;gap:6px;padding:8px 10px;border-top:1px solid var(--color-border)}.presets-save-input{flex:1;background:var(--color-bg-3);border:1px solid var(--color-border-2);border-radius:var(--r-base);color:var(--color-text-1);font-size:var(--fs-sm);padding:3px 7px;outline:none}.presets-save-input:focus{border-color:var(--color-accent)}.presets-reset-row{display:flex;align-items:center;gap:8px;padding:7px 12px;cursor:pointer;font-size:var(--fs-sm);color:var(--color-text-3);border-top:1px solid var(--color-border);transition:background var(--t-fast),color var(--t-fast)}.presets-reset-row:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.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-logo{width:36px;height:36px;flex-shrink:0}.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}.form-input-wrapper{position:relative;display:flex}.form-input-wrapper .form-input{flex:1;padding-right:36px}.form-input-eye{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:none;border:none;padding:0;cursor:pointer;color:var(--color-text-3);display:flex;align-items:center;transition:color var(--t-fast)}.form-input-eye:hover{color:var(--color-text-1)}.form-input-eye svg{width:16px;height:16px}.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}.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-logo{width:28px;height:28px}.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-card-actions{display:flex;align-items:center;gap:var(--sp-1)}.ps-card-del{opacity:0;display:flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:var(--r-sm);color:var(--color-text-4);transition:opacity var(--t-fast),color var(--t-fast),background var(--t-fast)}.ps-card:hover .ps-card-del{opacity:1}.ps-card-del:hover{color:var(--color-error);background:var(--color-error-muted)}.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}.pf-thumb-wrap{display:flex;align-items:flex-start;gap:14px}.pf-thumb-preview{width:160px;height:90px;border-radius:var(--r-base);overflow:hidden;flex-shrink:0;background:var(--color-bg-2);border:1px solid var(--color-border);display:flex;align-items:center;justify-content:center}.pf-thumb-img{width:100%;height:100%;object-fit:cover;display:block}.pf-thumb-empty{font-size:var(--fs-xs);color:var(--color-text-4)}.pf-thumb-btns{display:flex;flex-direction:column;gap:8px}.pf-thumb-lbl{display:inline-flex;align-items:center;cursor:pointer}.phase-color-Planungsgrundlage{color:#94a3b8}.phase-color-Planung{color:#60a5fa}.phase-color-Ausführung{color:#34d399}.phase-color-Betrieb{color:#fbbf24}.phase-color-Rückbau{color:#f87171}.home-screen{position:fixed;inset:0;background:var(--color-bg-0);display:flex;flex-direction:column;z-index:9999;overflow:hidden}.home-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}.home-header-left{display:flex;align-items:center;gap:var(--sp-3)}.home-header-logo{width:24px;height:24px;color:var(--color-text-1)}.home-header-brand{font-size:var(--fs-lg);font-weight:var(--fw-semibold);color:var(--color-text-1)}.home-header-right{display:flex;align-items:center;gap:var(--sp-3)}.home-icon-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--r-base);background:none;border:none;color:var(--color-text-3);cursor:pointer;transition:color var(--t-fast),background var(--t-fast)}.home-icon-btn:hover{color:var(--color-text-1);background:var(--color-bg-hover)}.home-avatar-wrap{position:relative}.home-avatar{width:32px;height:32px;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;border:none;cursor:pointer;transition:opacity var(--t-fast)}.home-avatar:hover{opacity:.85}.home-avatar-menu{position:absolute;top:calc(100% + 8px);right:0;z-index:100;background:var(--color-bg-2);border:1px solid var(--color-border-2);border-radius:var(--r-md);box-shadow:var(--shadow-lg);padding:var(--sp-2);min-width:180px;flex-direction:column;gap:0}.home-avatar-menu-name{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--color-text-1);padding:6px 10px 2px}.home-avatar-menu-email{font-size:var(--fs-xs);color:var(--color-text-4);padding:0 10px 8px}.home-avatar-menu-sep{border-top:1px solid var(--color-border);margin:2px 0}.home-avatar-menu-item{display:block;width:100%;text-align:left;background:none;border:none;color:var(--color-text-2);font-size:var(--fs-sm);padding:7px 10px;border-radius:var(--r-sm);cursor:pointer;transition:background var(--t-fast),color var(--t-fast)}.home-avatar-menu-item:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.home-body{flex:1;overflow-y:auto;display:flex;flex-direction:column;align-items:center;padding:40px 40px 60px}.home-hero{display:flex;flex-direction:column;align-items:center;gap:14px;margin-bottom:40px;margin-top:16px}.home-hero-logo-wrap{display:flex;align-items:center;justify-content:center}.home-hero-logo-img{height:110px;width:auto;object-fit:contain}.home-hero-logo-svg{width:120px;height:120px;color:var(--color-text-1);opacity:.9}.home-greeting{font-size:var(--fs-2xl);font-weight:var(--fw-semibold);color:var(--color-text-1);margin:0;letter-spacing:-.01em}.home-dashboard{margin-bottom:36px}.home-dashboard-head{margin-bottom:12px}.home-section-label{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--color-text-4);text-transform:uppercase;letter-spacing:.07em}.home-project-kpi-row{display:flex;align-items:center;background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:var(--r-md);padding:14px 20px;margin-bottom:10px;gap:0}.home-project-kpi-total{display:flex;flex-direction:column;justify-content:center;min-width:110px;flex-shrink:0}.home-project-kpi-total-num{font-size:2rem;font-weight:var(--fw-bold);color:var(--color-text-1);line-height:1;margin-bottom:4px}.home-project-kpi-total-label{font-size:var(--fs-xs);color:var(--color-text-3)}.home-project-kpi-divider{width:1px;background:var(--color-border);margin:0 20px;align-self:stretch;flex-shrink:0}.home-phase-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;gap:5px;padding:6px 8px;border-radius:var(--r-base);transition:background var(--t-fast);cursor:default}.home-phase-tile:hover{background:var(--color-bg-3)}.home-phase-tile-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.home-phase-tile-count{font-size:var(--fs-xl);font-weight:var(--fw-bold);line-height:1}.home-phase-tile-name{font-size:10px;color:var(--color-text-4);text-align:center;white-space:nowrap}.home-issues-kpi-row{display:flex;flex-direction:column;align-items:stretch;background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:var(--r-md);padding:14px 20px;margin-bottom:12px;gap:0}.home-issues-kpi-top{display:flex;align-items:center}.home-issues-kpi-header{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:4px;min-width:100px;flex-shrink:0}.home-issues-kpi-title{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--color-text-3)}.home-issue-bubbles{display:flex;gap:24px;align-items:center;min-width:0;overflow-x:auto;scroll-behavior:smooth;scrollbar-width:none;padding:2px 2px 4px}.home-issue-bubbles::-webkit-scrollbar{display:none}.home-issue-bubble{display:flex;flex-direction:column;align-items:center;gap:6px;flex-shrink:0}.home-issue-bubble-inner{width:52px;height:52px;border-radius:50%;border:2px solid color-mix(in srgb,var(--bubble-color) 25%,transparent);background:color-mix(in srgb,var(--bubble-color) 6%,var(--color-bg-3));display:flex;align-items:center;justify-content:center;transition:border-color var(--t-fast),background var(--t-fast)}.home-issue-bubble--active .home-issue-bubble-inner{border-color:var(--bubble-color);background:color-mix(in srgb,var(--bubble-color) 14%,var(--color-bg-2))}.home-issue-bubble-num{font-size:var(--fs-lg);font-weight:var(--fw-bold);color:var(--color-text-4);line-height:1}.home-issue-bubble--active .home-issue-bubble-num{color:var(--bubble-color)}.home-issue-bubble-label{font-size:10px;color:var(--color-text-4);text-align:center;white-space:nowrap}.home-issue-bubble--clickable{cursor:pointer}.home-issue-bubble--clickable .home-issue-bubble-inner{transition:border-color var(--t-fast),background var(--t-fast),transform var(--t-fast),box-shadow var(--t-fast)}.home-issue-bubble--clickable:hover .home-issue-bubble-inner{transform:scale(1.08)}.home-issue-bubble--filtered .home-issue-bubble-inner{box-shadow:0 0 0 3px var(--bubble-color)}.home-issue-bubble--filtered .home-issue-bubble-label{color:var(--bubble-color);font-weight:var(--fw-semibold)}.home-bcf-slider-section .home-tiles-scroll-btn{position:static;top:auto;transform:none;opacity:0;pointer-events:none;flex-shrink:0;align-self:center;transition:opacity var(--t-fast),background var(--t-fast),color var(--t-fast)}.home-bcf-slider-section:hover .home-tiles-scroll-btn{opacity:1;pointer-events:auto}.home-bcf-slider-section{display:flex;align-items:stretch;gap:6px;margin-top:14px;padding-top:12px;border-top:1px solid var(--color-border);min-height:148px}.home-bcf-slider{display:flex;gap:10px;flex:1;overflow-x:auto;scroll-behavior:smooth;scrollbar-width:none;align-items:stretch}.home-bcf-slider::-webkit-scrollbar{display:none}.home-bcf-empty{font-size:var(--fs-xs);color:var(--color-text-4);padding:6px 0;display:flex;align-items:center}.home-bcf-card{flex-shrink:0;width:200px;background:color-mix(in srgb,var(--card-color) 7%,var(--color-bg-3));border:1px solid color-mix(in srgb,var(--card-color) 25%,transparent);border-radius:var(--r-base);padding:0;overflow:hidden;cursor:pointer;transition:background var(--t-fast),box-shadow var(--t-fast);display:flex;flex-direction:column}.home-bcf-card:hover{background:color-mix(in srgb,var(--card-color) 14%,var(--color-bg-3));box-shadow:0 2px 8px color-mix(in srgb,var(--card-color) 20%,transparent)}.home-bcf-card-stripe{height:4px;background:var(--card-color);flex-shrink:0}.home-bcf-card-body{padding:10px 12px;display:flex;flex-direction:column;flex:1;gap:4px}.home-bcf-card-head{display:flex;align-items:center;gap:5px;flex-wrap:wrap}.home-bcf-card-priority-badge{font-size:9px;font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:.06em;padding:2px 6px;border-radius:20px;line-height:1.4;flex-shrink:0}.home-bcf-card-type{font-size:9px;color:var(--color-text-4);font-weight:var(--fw-medium);text-transform:uppercase;letter-spacing:.04em}.home-bcf-card-title{font-size:var(--fs-xs);color:var(--color-text-1);font-weight:var(--fw-semibold);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;line-height:1.35;flex:1}.home-bcf-card-foot{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.home-bcf-card-status{font-size:9px;font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:.04em}.home-bcf-card-due{font-size:9px;font-weight:var(--fw-semibold)}.home-bcf-card-assignee{display:flex;align-items:center;gap:4px;font-size:9px;color:var(--color-text-4);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.home-bcf-card-project{font-size:9px;color:var(--color-text-4);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-top:2px;border-top:1px solid color-mix(in srgb,var(--card-color) 15%,transparent);margin-top:2px}.home-calendar-section{background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:var(--r-md);padding:16px 20px;margin-bottom:10px}.home-cal-nav-row{display:flex;align-items:flex-start;gap:10px}.home-cal-nav-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;flex-shrink:0;margin-top:26px;background:none;border:1px solid var(--color-border-2);border-radius:var(--r-base);color:var(--color-text-3);cursor:pointer;transition:background var(--t-fast),color var(--t-fast)}.home-cal-nav-btn:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.home-cal-dual{display:grid;grid-template-columns:1fr 1fr;gap:28px;flex:1}.home-cal-month{display:flex;flex-direction:column}.home-cal-month-title{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--color-text-1);text-align:center;margin-bottom:10px}.home-cal-wday-header{display:grid;grid-template-columns:24px repeat(7,1fr);margin-bottom:2px}.home-cal-kw-header{font-size:9px;font-weight:var(--fw-semibold);color:var(--color-text-4);text-align:center;padding:2px 0;text-transform:uppercase;letter-spacing:.03em}.home-cal-wday{font-size:10px;font-weight:var(--fw-semibold);color:var(--color-text-4);text-align:center;padding:2px 0;text-transform:uppercase;letter-spacing:.03em}.home-cal-week-block{margin-bottom:2px}.home-cal-bar-track{display:grid;grid-template-columns:24px repeat(7,1fr);height:10px;gap:1px;margin-bottom:0}.home-cal-bar-track--empty{height:10px}.home-cal-bar{height:10px;align-self:stretch;overflow:hidden;display:flex;align-items:center;min-width:0}.home-cal-bar-label{font-size:8px;color:#ffffffe6;padding:0 4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:var(--fw-semibold);line-height:1}.home-cal-day-track{display:grid;grid-template-columns:24px repeat(7,1fr);gap:1px}.home-cal-kw{font-size:9px;color:var(--color-text-4);text-align:center;padding-top:4px;align-self:start;line-height:1}.home-cal-day{display:flex;flex-direction:column;align-items:center;gap:1px;font-size:11px;color:var(--color-text-2);padding:3px 1px;border-radius:var(--r-sm);min-height:30px;box-sizing:border-box;border:1px solid transparent}.home-cal-day--has-info{cursor:default}.home-cal-day--today .home-cal-day-num{background:var(--color-accent);color:#fff;font-weight:var(--fw-semibold);border-radius:50%;width:20px;height:20px;display:flex;align-items:center;justify-content:center}.home-cal-day--milestone{border-color:var(--color-border-2);border-radius:var(--r-sm)}.home-cal-day--weekend{color:var(--color-text-4)}.home-cal-day--has-event{border-radius:var(--r-sm)}.home-cal-day-num{font-size:11px;line-height:1;min-width:20px;text-align:center}.cal-dots{display:flex;gap:2px;align-items:center;justify-content:center;min-height:5px}.cal-dot{width:4px;height:4px;border-radius:50%;background:#f87171;flex-shrink:0}.home-cal-day--today .cal-dot{background:#ffffffb3}.home-cal-tooltip{position:fixed;z-index:9999;background:var(--color-bg-2);border:1px solid var(--color-border-2);border-radius:var(--r-md);padding:7px 10px;box-shadow:0 8px 24px #0006;max-width:240px;min-width:120px}.home-cal-tooltip-item{font-size:11px;color:var(--color-text-2);padding:3px 0;line-height:1.4;border-bottom:1px solid var(--color-border)}.home-cal-tooltip-item:last-child{border-bottom:none}.home-cal-tooltip-item--link{cursor:pointer;color:var(--color-accent);border-radius:var(--r-sm);padding:3px 4px;margin:0 -4px}.home-cal-tooltip-item--link:hover{background:var(--color-bg-hover)}.home-cal-legend{display:flex;gap:16px;align-items:center;margin-top:10px;padding-top:8px;border-top:1px solid var(--color-border);flex-wrap:wrap}.home-cal-legend-item{display:flex;align-items:center;gap:5px;font-size:10px;color:var(--color-text-4)}.home-cal-legend-dot{width:5px;height:5px;border-radius:50%;background:#f87171;flex-shrink:0}.home-cal-legend-box{width:12px;height:12px;border-radius:var(--r-sm);border:1px solid var(--color-border-2);flex-shrink:0}.home-cal-legend-bar{width:20px;height:6px;border-radius:3px;flex-shrink:0}.home-dashboard-panels{display:grid;grid-template-columns:1fr 1fr;gap:10px}.home-dashboard-phases,.home-dashboard-calendar{background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:var(--r-md);padding:16px 18px}.home-panel-title{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--color-text-2);margin-bottom:12px}.home-panel-empty{font-size:var(--fs-sm);color:var(--color-text-4);padding:8px 0}.home-phase-row{display:grid;grid-template-columns:minmax(max-content,130px) 1fr 20px;align-items:center;gap:8px;margin-bottom:6px}.home-phase-label{font-size:var(--fs-xs);font-weight:var(--fw-semibold);white-space:nowrap}.home-phase-bar-wrap{background:var(--color-bg-3);border-radius:2px;height:6px;overflow:hidden}.home-phase-bar{height:100%;border-radius:2px;min-width:6px;transition:width var(--t-base)}.home-phase-count{font-size:var(--fs-xs);color:var(--color-text-4);text-align:right}.home-cal-header{margin-bottom:8px}.home-cal-month{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--color-text-2)}.home-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.home-cal-weekday{font-size:10px;font-weight:var(--fw-semibold);color:var(--color-text-4);text-align:center;padding:2px 0;text-transform:uppercase;letter-spacing:.03em}.home-cal-day{font-size:11px;color:var(--color-text-3);text-align:center;padding:4px 2px;border-radius:var(--r-sm);transition:background var(--t-fast)}.home-cal-day--today{background:var(--color-accent);color:#fff;font-weight:var(--fw-semibold)}.home-caldav-row{display:flex;align-items:center;gap:6px;margin-top:12px;padding-top:10px;border-top:1px solid var(--color-border);color:var(--color-text-4)}.home-caldav-btn{background:none;border:none;font-size:var(--fs-xs);color:var(--color-text-4);cursor:pointer;padding:0;text-decoration:underline;transition:color var(--t-fast)}.home-caldav-btn:hover{color:var(--color-accent)}.home-extra-kpi-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:10px}.home-extra-kpi-panel{background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:var(--r-md);padding:14px 16px}.home-extra-kpi-panel .home-panel-title{display:flex;align-items:center;gap:6px;margin-bottom:10px}.home-stat-row{display:flex;align-items:center;gap:8px;padding:5px 0;border-bottom:1px solid var(--color-border)}.home-stat-row:last-child{border-bottom:none}.home-stat-row--progress{gap:10px}.home-stat-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.home-stat-label{flex:1;font-size:var(--fs-xs);color:var(--color-text-3);white-space:nowrap}.home-stat-value{font-size:var(--fs-sm);font-weight:var(--fw-semibold);min-width:24px;text-align:right}.home-stat-progress-wrap{flex:1;background:var(--color-bg-3);border-radius:2px;height:5px;overflow:hidden}.home-stat-progress-bar{height:100%;border-radius:2px;transition:width var(--t-base)}@media(max-width:860px){.home-extra-kpi-row{grid-template-columns:1fr 1fr}}@media(max-width:560px){.home-extra-kpi-row{grid-template-columns:1fr}}.risk-editor-tabs{display:flex;gap:4px;border-bottom:1px solid var(--color-border);margin-bottom:28px}.risk-editor-tab{display:flex;align-items:center;gap:6px;padding:8px 16px;background:none;border:none;border-bottom:2px solid transparent;font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--color-text-3);cursor:pointer;margin-bottom:-1px;transition:color var(--t-fast)}.risk-editor-tab:hover{color:var(--color-text-1)}.risk-editor-tab--active{color:var(--color-accent);border-bottom-color:var(--color-accent)}.risk-list-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.risk-list-title{font-size:var(--fs-lg);font-weight:var(--fw-semibold);color:var(--color-text-1);margin:0}.risk-list-empty{font-size:var(--fs-sm);color:var(--color-text-4);padding:40px 0;text-align:center}.risk-list-table{display:flex;flex-direction:column;gap:0}.risk-table-header{display:grid;grid-template-columns:1fr 180px 110px 120px 32px;gap:8px;padding:0 8px 8px;font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--color-text-4);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--color-border)}.risk-table-row{display:grid;grid-template-columns:1fr 180px 110px 120px 32px;gap:8px;align-items:center;padding:6px 8px;border-bottom:1px solid var(--color-border);transition:background var(--t-fast)}.risk-table-row:hover{background:var(--color-bg-hover)}.risk-row-input{background:transparent;border:1px solid transparent;border-radius:var(--r-sm);color:var(--color-text-1);font-size:var(--fs-sm);padding:4px 6px;transition:border-color var(--t-fast),background var(--t-fast);width:100%;box-sizing:border-box}.risk-row-input:hover{border-color:var(--color-border-2)}.risk-row-input:focus{outline:none;border-color:var(--color-accent);background:var(--color-bg-3)}.risk-prob-wrap{display:flex;align-items:center;gap:6px}.risk-prob-bar-wrap{flex:1;background:var(--color-bg-3);border-radius:2px;height:5px;overflow:hidden}.risk-prob-bar-fill{height:100%;border-radius:2px;transition:width var(--t-base)}.risk-row-del{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--r-sm);background:none;border:none;color:var(--color-text-4);cursor:pointer;transition:color var(--t-fast),background var(--t-fast)}.risk-row-del:hover{color:#f87171;background:#f871711a}.risk-abc-desc{font-size:var(--fs-sm);color:var(--color-text-3);margin:6px 0 28px}.risk-abc-layout{display:grid;grid-template-columns:auto 1fr;gap:40px;align-items:start}.risk-abc-section-title{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--color-text-2);margin:0 0 12px}.risk-matrix-wrap{display:flex;flex-direction:column;align-items:center;gap:4px}.risk-matrix-y-label{font-size:10px;color:var(--color-text-4);letter-spacing:.04em;align-self:flex-start;margin-left:48px}.risk-matrix-x-label{font-size:10px;color:var(--color-text-4);letter-spacing:.04em;margin-left:48px}.risk-matrix{display:grid;grid-template-columns:56px repeat(3,88px);grid-template-rows:28px repeat(3,72px);gap:2px}.risk-matrix-col-label{display:flex;align-items:center;justify-content:center;font-size:10px;color:var(--color-text-4);font-weight:var(--fw-semibold)}.risk-matrix-row-label{display:flex;align-items:center;justify-content:flex-end;padding-right:8px;font-size:10px;color:var(--color-text-4);font-weight:var(--fw-semibold)}.risk-matrix-cell{display:flex;flex-wrap:wrap;align-content:center;justify-content:center;gap:4px;padding:6px;border-radius:var(--r-sm);min-height:72px}.risk-matrix-dot{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;font-size:10px;font-weight:var(--fw-bold);color:#fff;cursor:default}.risk-abc-table{display:flex;flex-direction:column;gap:0}.risk-abc-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border-bottom:1px solid var(--color-border);transition:background var(--t-fast)}.risk-abc-row:hover{background:var(--color-bg-hover)}.risk-abc-badge{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:var(--r-sm);font-size:var(--fs-xs);font-weight:var(--fw-bold);flex-shrink:0}.risk-abc-badge--a{background:#f8717133;color:#f87171}.risk-abc-badge--b{background:#fbbf2433;color:#fbbf24}.risk-abc-badge--c{background:#34d39933;color:#34d399}.risk-abc-name{flex:1;font-size:var(--fs-sm);color:var(--color-text-1)}.risk-abc-impact{font-size:var(--fs-xs);font-weight:var(--fw-semibold);min-width:48px}.risk-abc-prob{font-size:var(--fs-xs);color:var(--color-text-3);min-width:36px;text-align:right}.risk-abc-score{font-size:var(--fs-xs);min-width:52px;text-align:right}.risk-import-row{display:flex;align-items:center;gap:10px;padding:8px 16px;cursor:pointer;transition:background var(--t-fast)}.risk-import-row:hover{background:var(--color-bg-hover)}.risk-import-row input[type=checkbox]{flex-shrink:0;cursor:pointer}.risk-import-name{flex:1;font-size:var(--fs-sm);color:var(--color-text-1)}.risk-import-prob{font-size:var(--fs-xs);color:var(--color-text-3);min-width:34px;text-align:right}.risk-import-impact{font-size:var(--fs-xs);font-weight:var(--fw-semibold);min-width:46px}.risk-import-cat{font-size:var(--fs-xs);color:var(--color-text-4)}@media(max-width:760px){.risk-abc-layout{grid-template-columns:1fr}.risk-table-header,.risk-table-row{grid-template-columns:1fr 130px 90px 32px}.risk-col-cat,.risk-row-input.risk-row-cat{display:none}}.home-fin-block{margin-bottom:10px}.home-fin-block:last-of-type{margin-bottom:0}.home-fin-label{font-size:var(--fs-xs);color:var(--color-text-4);margin-bottom:2px}.home-fin-value{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--color-text-1)}.home-fin-bar-wrap{background:var(--color-bg-3);border-radius:2px;height:6px;overflow:hidden;margin-bottom:3px}.home-fin-bar{height:100%;border-radius:2px;transition:width var(--t-base)}.home-fin-sub{font-size:var(--fs-xs);color:var(--color-text-3)}.home-fin-status{margin-top:10px;padding:5px 8px;border-radius:var(--r-base);font-size:var(--fs-xs);font-weight:var(--fw-medium);background:color-mix(in srgb,currentColor 10%,transparent)}.home-projects-section{width:100%}.home-section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.home-section-title{font-size:var(--fs-xl);font-weight:var(--fw-semibold);color:var(--color-text-1);margin:0}.home-btn-primary{background:var(--color-accent);color:#fff;border:none;border-radius:var(--r-base);font-size:var(--fs-sm);font-weight:var(--fw-medium);padding:7px 14px;cursor:pointer;transition:background var(--t-fast)}.home-btn-primary:hover{background:var(--color-accent-hover)}.home-project-list{display:flex;flex-direction:column;gap:10px;max-height:450px;overflow-y:auto;padding-right:4px}.home-project-list::-webkit-scrollbar{width:4px}.home-project-list::-webkit-scrollbar-track{background:transparent}.home-project-list::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:2px}.home-loading{color:var(--color-text-4);font-size:var(--fs-sm);padding:40px 0;text-align:center}.home-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 0;gap:var(--sp-2);color:var(--color-text-3);font-size:var(--fs-md)}.home-empty-sub{color:var(--color-text-4);font-size:var(--fs-sm)}.home-project-row{display:grid;grid-template-columns:72px 2fr 1fr auto auto;align-items:center;gap:16px;background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:var(--r-md);padding:12px 16px;cursor:pointer;transition:border-color var(--t-base),box-shadow var(--t-base)}.home-project-row:hover{border-color:var(--color-accent-border);box-shadow:0 0 0 1px var(--color-accent-border),var(--shadow-sm)}.home-project-thumb{width:72px;height:56px;border-radius:var(--r-base);overflow:hidden;flex-shrink:0;background:var(--color-bg-3)}.home-thumb-placeholder{width:100%;height:100%;background:linear-gradient(135deg,color-mix(in srgb,var(--ph-color) 10%,var(--color-bg-3)),color-mix(in srgb,var(--ph-color) 25%,var(--color-bg-3)));display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.home-thumb-initials{font-size:var(--fs-xs);font-weight:var(--fw-bold);line-height:1;letter-spacing:.03em}.home-project-info-main{min-width:0}.home-project-name{display:flex;align-items:center;gap:6px;font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--color-text-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:4px}.home-shared-badge{display:inline-flex;align-items:center;gap:3px;flex-shrink:0;font-size:10px;font-weight:var(--fw-medium);color:var(--color-accent);background:color-mix(in srgb,var(--color-accent) 10%,transparent);border:1px solid color-mix(in srgb,var(--color-accent) 30%,transparent);border-radius:20px;padding:2px 6px;line-height:1}.home-project-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:var(--fs-xs);color:var(--color-text-3)}.home-meta-sep{color:var(--color-text-5, var(--color-text-4))}.home-project-phase{font-weight:var(--fw-medium)}.home-project-issues-wrap{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}.home-project-issues{display:inline-flex;align-items:center;gap:4px;padding:2px 7px;border-radius:20px;font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--color-text-4);background:transparent;border:1px solid color-mix(in srgb,var(--color-border) 60%,transparent);white-space:nowrap;opacity:.7}.home-project-issues--open,.home-project-issues--models{color:var(--color-text-4)}.home-tiles-scroll-wrap{position:relative;max-width:320px}.home-tiles-scroll-btn{position:absolute;top:50%;transform:translateY(-50%);z-index:2;display:flex;align-items:center;justify-content:center;width:22px;height:28px;border-radius:var(--r-sm);background:color-mix(in srgb,var(--color-bg-2) 85%,transparent);border:1px solid var(--color-border);color:var(--color-text-3);cursor:pointer;padding:0;opacity:0;pointer-events:none;backdrop-filter:blur(4px);transition:opacity var(--t-fast),background var(--t-fast),color var(--t-fast)}.home-tiles-scroll-btn--left{left:2px}.home-tiles-scroll-btn--right{right:2px}.home-tiles-scroll-wrap:hover .home-tiles-scroll-btn{opacity:1;pointer-events:auto}.home-tiles-scroll-btn:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.home-workspace-tiles{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;scroll-behavior:smooth}.home-workspace-tiles::-webkit-scrollbar{display:none}.home-tile{display:flex;flex-direction:column;align-items:center;gap:5px;padding:8px 12px;border-radius:var(--r-base);background:var(--color-bg-3);border:1px solid var(--color-border);color:var(--color-text-3);font-size:10px;font-weight:var(--fw-medium);cursor:pointer;white-space:nowrap;min-width:68px;flex-shrink:0;transition:background var(--t-fast),border-color var(--t-fast),color var(--t-fast);line-height:1}.home-tile:hover{background:var(--color-accent);border-color:var(--color-accent);color:#fff}.home-tile svg{flex-shrink:0}.home-project-progress{height:3px;background:var(--color-bg-3);border-radius:2px;overflow:hidden;width:80px;margin-top:6px}.home-project-progress-bar{height:100%;border-radius:2px;transition:width var(--t-base)}.home-row-actions{display:flex;align-items:center;gap:4px;opacity:0;transition:opacity var(--t-fast)}.home-project-row:hover .home-row-actions{opacity:1}.home-row-action-btn{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:var(--r-sm);background:none;border:none;color:var(--color-text-4);cursor:pointer;transition:background var(--t-fast),color var(--t-fast)}.home-row-action-btn:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.home-row-del:hover{background:var(--color-error-muted);color:var(--color-error)}.proj-settings-tabs{display:flex;gap:0;border-bottom:1px solid var(--color-border);margin-top:4px}.proj-tab{background:none;border:none;border-bottom:2px solid transparent;color:var(--color-text-3);font-size:var(--fs-sm);font-weight:var(--fw-medium);padding:8px 16px;cursor:pointer;margin-bottom:-1px;transition:color var(--t-fast),border-color var(--t-fast)}.proj-tab:hover{color:var(--color-text-1)}.proj-tab--active{color:var(--color-accent);border-bottom-color:var(--color-accent)}.proj-phase-stepper{display:flex;align-items:flex-start;gap:0;margin-bottom:20px;overflow-x:auto}.proj-phase-step{display:flex;flex-direction:column;align-items:center;position:relative;flex:1;min-width:80px}.proj-phase-dot{width:24px;height:24px;border-radius:50%;border:2px solid var(--color-border-2);background:var(--color-bg-3);display:flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0;z-index:1;position:relative}.proj-phase-name{font-size:10px;color:var(--color-text-4);text-align:center;margin-top:6px;line-height:1.3;max-width:80px}.proj-phase-connector{position:absolute;top:11px;left:calc(50% + 12px);width:calc(100% - 24px);height:2px;background:var(--color-border-2)}.proj-phase-connector--done{background:var(--color-accent);opacity:.5}.proj-phase-step--current .proj-phase-dot{box-shadow:0 0 0 3px color-mix(in srgb,currentColor 20%,transparent)}.proj-phase-current-box{border:1px solid;border-radius:var(--r-md);padding:14px 16px;margin-bottom:16px}.proj-phase-current-label{font-size:var(--fs-xs);color:var(--color-text-4);font-weight:var(--fw-medium);text-transform:uppercase;letter-spacing:.06em;margin-bottom:4px}.proj-phase-current-value{font-size:var(--fs-xl);font-weight:var(--fw-semibold)}.proj-phase-current-since{font-size:var(--fs-xs);color:var(--color-text-4);margin-top:4px}.proj-phase-advance-box{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--color-bg-3);border:1px solid var(--color-border);border-radius:var(--r-md);padding:14px 16px;margin-top:16px}.home-row-advance{color:var(--color-accent)!important}.home-row-advance:hover{background:color-mix(in srgb,var(--color-accent) 15%,transparent)!important}.home-row-archive:hover{background:color-mix(in srgb,var(--color-accent) 15%,transparent)!important;color:var(--color-accent)!important}.home-btn-secondary{display:flex;align-items:center;gap:5px;background:var(--color-bg-3);color:var(--color-text-2);border:1px solid var(--color-border-2);border-radius:var(--r-base);font-size:var(--fs-sm);font-weight:var(--fw-medium);padding:7px 14px;cursor:pointer;transition:background var(--t-fast),color var(--t-fast)}.home-btn-secondary:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.home-search-wrap{position:relative;display:flex;align-items:center;margin-bottom:12px}.home-search-icon{position:absolute;left:10px;color:var(--color-text-4);pointer-events:none}.home-search-input{width:100%;background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:var(--r-base);color:var(--color-text-1);font-size:var(--fs-sm);font-family:var(--font-sans);padding:7px 10px 7px 32px;outline:none;box-sizing:border-box;transition:border-color var(--t-fast)}.home-search-input:focus{border-color:var(--color-accent)}.home-search-input::placeholder{color:var(--color-text-4)}.home-search-input::-webkit-search-cancel-button{display:none}.home-archive-restore{display:flex;align-items:center;gap:5px;flex-shrink:0;background:none;border:1px solid var(--color-border-2);border-radius:var(--r-sm);color:var(--color-text-2);font-size:var(--fs-xs);font-weight:var(--fw-medium);padding:5px 10px;cursor:pointer;transition:background var(--t-fast),color var(--t-fast)}.home-archive-restore:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.archive-row{cursor:default}.archive-row:hover{border-color:var(--color-border);box-shadow:none}.archive-row-date{flex-shrink:0;text-align:right}.archive-row-date-label{font-size:var(--fs-xs);color:var(--color-text-4);margin-bottom:2px}.archive-row-date-value{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--color-text-2);white-space:nowrap}.archive-row-actions{display:flex;align-items:center;gap:6px;flex-shrink:0;opacity:1}.archive-sort-wrap{display:flex;align-items:center;gap:4px}.archive-sort-label{font-size:var(--fs-xs);color:var(--color-text-4);margin-right:2px}.archive-sort-btn{background:none;border:1px solid var(--color-border-2);border-radius:var(--r-sm);color:var(--color-text-3);font-size:var(--fs-xs);font-weight:var(--fw-medium);padding:4px 10px;cursor:pointer;transition:background var(--t-fast),color var(--t-fast),border-color var(--t-fast)}.archive-sort-btn:hover{color:var(--color-text-1);background:var(--color-bg-hover)}.archive-sort-btn--active{background:var(--color-bg-3);color:var(--color-text-1);border-color:var(--color-border-strong, var(--color-border-2))}.archive-sort-dir{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:var(--r-sm);background:none;border:1px solid var(--color-border-2);color:var(--color-text-3);cursor:pointer;transition:background var(--t-fast),color var(--t-fast)}.archive-sort-dir:hover{background:var(--color-bg-hover);color:var(--color-text-1)}.cal-mod-wrap{display:flex;flex-direction:column;height:100%;min-height:0}.cal-mod-layout{display:flex;flex:1;min-height:0;overflow:hidden}.cal-mod-main{flex:1;min-width:0;overflow-y:auto;display:flex;flex-direction:column}.cal-mod-header{display:flex;align-items:flex-start;gap:8px;padding:12px 12px 0;flex:1}.cal-mod-dual{flex:1;min-width:0;grid-template-columns:1fr 1fr;gap:16px}.cal-view-toggle{display:flex;align-items:center;gap:2px;background:var(--color-bg-3);border:1px solid var(--color-border);border-radius:var(--r-base);padding:2px;flex-shrink:0;align-self:flex-start;margin-top:1px}.cal-view-btn{background:none;border:none;border-radius:calc(var(--r-base) - 2px);color:var(--color-text-3);font-size:var(--fs-xs);font-weight:var(--fw-medium);padding:3px 10px;cursor:pointer;white-space:nowrap;transition:background var(--t-fast),color var(--t-fast)}.cal-view-btn:hover{color:var(--color-text-1)}.cal-view-btn--active{background:var(--color-bg-2);color:var(--color-text-1);box-shadow:0 1px 3px #00000026}.cal-day-timed-events{display:flex;flex-direction:column;gap:1px;width:100%;min-width:0}.cal-timed-chip{display:flex;align-items:center;gap:2px;border-left:2px solid;border-radius:3px;padding:1px 3px;font-size:8px;line-height:1.35;overflow:hidden;white-space:nowrap;cursor:pointer;box-sizing:border-box;max-width:100%;transition:filter var(--t-fast)}.cal-timed-chip:hover{filter:brightness(1.15)}.cal-timed-chip-time{flex-shrink:0;font-weight:var(--fw-semibold)}.cal-timed-chip-name{overflow:hidden;text-overflow:ellipsis}.cal-timed-more{font-size:8px;color:var(--color-text-4);text-align:center;line-height:1.3}.cal-legend-chip{width:28px;height:11px;border-radius:3px;border-left:2px solid;flex-shrink:0;display:inline-block}.cal-week-sticky-top{position:sticky;top:0;z-index:10;background:var(--color-bg-1);border-bottom:none}.cal-week-head-border{height:1px;background:var(--color-border)}.cal-week-title{flex:1;font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--color-text-1);white-space:nowrap;text-align:center;align-self:flex-start;padding-top:6px}.cal-week-head-row{display:grid;grid-template-columns:48px repeat(7,1fr);border-bottom:1px solid var(--color-border)}.cal-week-day-header{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:6px 2px;border-left:1px solid var(--color-border)}.cal-week-day-header:first-of-type{border-left:none}.cal-week-day-header--weekend .cal-week-day-name,.cal-week-day-header--weekend .cal-week-day-num{color:var(--color-text-4)}.cal-week-time-gutter{width:48px;flex-shrink:0;display:flex;align-items:flex-end;justify-content:center;padding-bottom:4px}.cal-week-day-name{font-size:10px;font-weight:var(--fw-semibold);color:var(--color-text-4);text-transform:uppercase;letter-spacing:.04em}.cal-week-day-num{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--color-text-2);line-height:1}.cal-week-day-num--today{background:var(--color-accent);color:#fff;font-weight:var(--fw-semibold);border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.cal-week-allday-section{display:flex;align-items:stretch;background:var(--color-bg-2);border-bottom:1px solid var(--color-border)}.cal-week-allday-bars{flex:1;display:flex;flex-direction:column;gap:1px;padding:3px 0}.cal-week-allday-bar-row{display:grid;grid-template-columns:repeat(7,1fr);height:14px;gap:1px}.cal-week-allday-label{font-size:9px;color:var(--color-text-4);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:.03em}.cal-week-scroll-body{flex:1;overflow-y:auto}.cal-week-time-grid{display:flex}.cal-week-time-labels{width:48px;flex-shrink:0;position:relative}.cal-week-hour-label{height:48px;font-size:9px;color:var(--color-text-4);text-align:right;padding-right:8px;box-sizing:border-box;line-height:1;padding-top:3px;user-select:none}.cal-week-days-row{display:grid;grid-template-columns:repeat(7,1fr);flex:1}.cal-week-day-col{position:relative;border-left:1px solid var(--color-border);cursor:pointer}.cal-week-day-col:hover{background:color-mix(in srgb,var(--color-accent) 2%,transparent)}.cal-week-day-col--today{background:color-mix(in srgb,var(--color-accent) 3%,transparent)}.cal-week-day-col--weekend{background:var(--color-bg-3)}.cal-week-day-col--weekend.cal-week-day-col--today{background:color-mix(in srgb,var(--color-accent) 4%,var(--color-bg-3))}.cal-week-hour-line{position:absolute;left:0;right:0;border-top:1px solid var(--color-border);pointer-events:none}.cal-week-half-line{position:absolute;left:0;right:0;border-top:1px dashed color-mix(in srgb,var(--color-border) 50%,transparent);pointer-events:none}.cal-week-now-line{position:absolute;left:0;right:0;border-top:2px solid var(--color-accent);pointer-events:none;z-index:2}.cal-week-now-dot{position:absolute;left:-4px;top:-4px;width:7px;height:7px;border-radius:50%;background:var(--color-accent)}.cal-week-event{position:absolute;border-radius:var(--r-sm);padding:2px 5px;overflow:hidden;cursor:pointer;box-sizing:border-box;z-index:1;opacity:.92;transition:opacity var(--t-fast),filter var(--t-fast)}.cal-week-event:hover{opacity:1;filter:brightness(1.08)}.cal-week-event-time{font-size:9px;color:#ffffffd9;font-weight:var(--fw-semibold);line-height:1.2;white-space:nowrap}.cal-week-event-title{font-size:10px;color:#fff;font-weight:var(--fw-medium);line-height:1.3;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}.home-cal-day{position:relative}.cal-day-plus{position:absolute;top:1px;right:2px;font-size:9px;color:var(--color-text-4);opacity:0;line-height:1;pointer-events:none;transition:opacity var(--t-fast)}.home-cal-day:hover .cal-day-plus{opacity:1}.home-cal-day:hover{background:var(--color-bg-hover);cursor:pointer}.cal-mod-sidebar{display:none;width:220px;flex-shrink:0;border-left:1px solid var(--color-border);overflow-y:auto;background:var(--color-bg-2)}.cal-mod-sidebar--open{display:flex;flex-direction:column}.cal-sb-inner{display:flex;flex-direction:column;gap:var(--sp-4);padding:var(--sp-3)}.cal-sb-section{display:flex;flex-direction:column;gap:var(--sp-2)}.cal-sb-section-title{font-size:10px;font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-4);padding-bottom:var(--sp-1);border-bottom:1px solid var(--color-border)}.cal-sb-new-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:var(--sp-2);font-size:var(--fs-sm)}.cal-sb-export-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:var(--sp-2);font-size:var(--fs-xs)}.cal-sb-hint{font-size:var(--fs-xs);color:var(--color-text-3);line-height:1.5;margin:0}.cal-sb-apps{display:flex;flex-direction:column;gap:6px}.cal-sb-app-item{display:flex;align-items:center;gap:8px;padding:5px 6px;border-radius:var(--r-sm);border:1px solid var(--color-border);background:var(--color-bg-3)}.cal-sb-app-icon{width:18px;height:18px;flex-shrink:0;color:var(--color-text-3)}.cal-sb-app-name{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--color-text-2)}.cal-sb-app-hint{font-size:10px;color:var(--color-text-4)}.cal-sb-webcal-url{font-size:9px;color:var(--color-text-3);background:var(--color-bg-1);border:1px solid var(--color-border);border-radius:var(--r-sm);padding:5px 7px;word-break:break-all;line-height:1.4;cursor:default;user-select:text}.cal-sb-webcal-actions{display:flex;gap:4px}.cal-sb-copy-btn{flex:1;font-size:10px;padding:3px 8px;display:flex;align-items:center;justify-content:center;gap:4px}.cal-ev-allday-label{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);color:var(--color-text-2);cursor:pointer;user-select:none}.cal-ev-allday-label input[type=checkbox]{width:14px;height:14px;accent-color:var(--color-accent);cursor:pointer}.cal-ev-members{display:flex;flex-wrap:wrap;gap:6px;min-height:32px;padding:6px;border:1px solid var(--color-border);border-radius:var(--r-base);background:var(--color-bg-3)}.cal-ev-chip{padding:3px 10px;border-radius:99px;border:1px solid var(--color-border);background:var(--color-bg-2);color:var(--color-text-2);font-size:var(--fs-xs);cursor:pointer;transition:background var(--t-fast),border-color var(--t-fast),color var(--t-fast)}.cal-ev-chip:hover{background:var(--color-bg-hover)}.cal-ev-chip--selected{background:var(--color-accent);border-color:var(--color-accent);color:#fff}.cal-ev-no-members{font-size:var(--fs-xs);color:var(--color-text-4)}.cal-ev-colors{display:flex;gap:8px;flex-wrap:wrap}.cal-ev-color-btn{width:22px;height:22px;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:transform var(--t-fast),border-color var(--t-fast)}.cal-ev-color-btn:hover{transform:scale(1.15)}.cal-ev-color-btn--active{border-color:#fff;box-shadow:0 0 0 2px var(--color-accent)}.home-cal-bar--event{opacity:.92}.home-cal-bar--event:hover{opacity:1;filter:brightness(1.08)}.cal-gear-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--r-sm);border:1px solid transparent;background:transparent;color:var(--color-text-3);cursor:pointer;transition:background var(--t-fast),color var(--t-fast),border-color var(--t-fast)}.cal-gear-btn:hover{background:var(--color-bg-hover);color:var(--color-text-1);border-color:var(--color-border)}.cal-gear-btn--active{background:var(--color-bg-3);color:var(--color-accent);border-color:var(--color-border)}.cal-bar-tooltip{position:fixed;z-index:9999;background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:var(--r-base);box-shadow:0 4px 16px #0000002e;padding:8px 10px;min-width:160px;max-width:260px;display:flex;flex-direction:column;gap:4px;pointer-events:auto}.cal-bar-tip-title{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--color-text-1);line-height:1.3;padding-bottom:4px;border-bottom:1px solid var(--color-border);margin-bottom:2px}.cal-bar-tip-row{display:flex;align-items:center;gap:5px;font-size:var(--fs-xs);color:var(--color-text-3);line-height:1.4}.cal-bar-tip-row svg{flex-shrink:0;color:var(--color-text-4)}.cal-bar-tip-desc{font-size:var(--fs-xs);color:var(--color-text-3);line-height:1.5;padding-top:4px;border-top:1px solid var(--color-border);margin-top:2px;max-height:60px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}.share-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--color-bg-1);padding:var(--sp-4)}.share-card{width:100%;max-width:420px;background:var(--color-bg-2);border:1px solid var(--color-border);border-radius:12px;padding:var(--sp-6);display:flex;flex-direction:column;gap:var(--sp-4)}.share-logo{display:flex;align-items:center;gap:var(--sp-3);font-size:18px;font-weight:var(--fw-semibold);color:var(--color-text-1)}.share-project-name{font-size:20px;font-weight:var(--fw-semibold);color:var(--color-text-1);line-height:1.3}.share-desc{font-size:var(--fs-sm);color:var(--color-text-3);line-height:1.6;margin:0}.share-form{display:flex;flex-direction:column;gap:var(--sp-3)}.share-label{display:flex;flex-direction:column;gap:var(--sp-1);font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--color-text-2)}.share-submit{margin-top:var(--sp-2)}.share-hint{font-size:var(--fs-xs);color:var(--color-text-4);text-align:center;margin:0}.share-error{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3);background:#ef444414;border:1px solid rgba(239,68,68,.2);border-radius:var(--r-base);color:#ef4444;font-size:var(--fs-sm);line-height:1.5}@media(max-width:768px){.app-layout{grid-template-rows:var(--header-height) minmax(0,1fr)}.app-statusbar{display:none}.mobile-toast{display:block}.app-workspace{padding-bottom:calc(var(--mobile-tabbar-height) + env(safe-area-inset-bottom,0px))}.app-header{overflow-x:auto;-webkit-overflow-scrolling:touch}.header-panel-toggle{display:none}.app-viewer-area{grid-column:1;grid-row:1}.app-panel--left,.app-panel--right,.app-panel--bottom{grid-column:1;grid-row:2;border:none}.app-panel--collapsed,.panel-resizer,.panel-edge-toggle-btn,.workspace-pane-tab-bar,.panel-active-title,.app-panel--left .tab-bar--vertical,.app-panel--right .tab-bar--vertical,.app-panel--bottom .tab-bar--horizontal,.viewer-toolbar,.viewer-hud-right,.viewer-hud-right-bottom{display:none}input,select,textarea,.form-input{font-size:16px}.btn{min-height:44px}.btn--sm{min-height:40px}.btn-icon,.header-icon-btn{min-width:40px;min-height:40px}.modal-overlay{align-items:flex-end}.modal{max-width:100%;max-height:92dvh;border-radius:var(--r-lg) var(--r-lg) 0 0;border-left:none;border-right:none;border-bottom:none;padding-bottom:env(safe-area-inset-bottom,0)}.app-layout,.home-screen{padding-top:env(safe-area-inset-top,0)}.home-header{padding:0 var(--sp-3)}.home-body{padding:20px var(--sp-3) 32px}.home-hero{margin-bottom:24px}.home-hero-logo-img,.home-hero-logo-svg{height:64px;width:64px}.home-greeting{font-size:var(--fs-xl);text-align:center}.home-project-kpi-row{flex-wrap:wrap;row-gap:var(--sp-3);padding:var(--sp-3)}.home-project-kpi-divider{display:none}.home-dashboard-panels,.home-cal-dual{grid-template-columns:1fr}.home-cal-month:nth-child(n+2){display:none}.home-issue-bubbles{flex-wrap:wrap;gap:14px 20px}.home-issues-kpi-row{padding:12px 14px}.home-extra-kpi-row{grid-template-columns:1fr}.home-section-head{flex-wrap:wrap;gap:10px}.home-section-head>div,.archive-sort-wrap{flex-wrap:wrap}.home-project-row{grid-template-columns:56px minmax(0,1fr) auto;grid-template-areas:"thumb info actions" "counters counters counters" "tiles tiles tiles";gap:10px 12px;padding:12px}.home-project-thumb{grid-area:thumb;width:56px;height:56px}.home-project-info-main,.home-project-info{grid-area:info;min-width:0}.home-project-name{white-space:normal;overflow-wrap:anywhere}.home-row-actions{grid-area:actions}.home-project-issues-wrap{grid-area:counters;flex-direction:row;justify-content:flex-start;gap:12px}.home-tiles-scroll-wrap{grid-area:tiles;max-width:none;min-width:0}.home-tiles-scroll-btn{display:none}}
