:root{--bg: #FAFAF7;--surface: #FFFFFF;--surface-alt: #F5F4EF;--border: #E7E5DE;--border-strong:#D8D5CB;--text: #1A1F2E;--text-2: #5B5E6B;--text-3: #8E909A;--navy: #1F2A55;--navy-2: #2E3B6B;--accent: #9E2B25;--accent-2: #B33B33;--accent-soft: #F4E4E2;--blue-rule: #1E5BB8;--shadow-sm: 0 1px 0 rgba(20,22,30,.04), 0 1px 2px rgba(20,22,30,.04);--shadow-md: 0 2px 6px rgba(20,22,30,.06), 0 6px 18px rgba(20,22,30,.06);--t-violet-fg:#5B3E9F;--t-violet-bg:#EEE7FB;--t-purple-fg:#6B3E96;--t-purple-bg:#F0E7F7;--t-blue-fg: #2A57A8;--t-blue-bg: #E2ECFA;--t-cyan-fg: #1F6F7F;--t-cyan-bg: #DFEFF2;--t-green-fg: #2E6A3C;--t-green-bg: #E1EFE3;--t-amber-fg: #8A5A14;--t-amber-bg: #F6ECD7;--t-orange-fg:#A04E1B;--t-orange-bg:#F8E2D2;--t-pink-fg: #9A3F6B;--t-pink-bg: #F6E1EA;--t-slate-fg: #515667;--t-slate-bg: #E9E8E2;--bn-free: #F5F4EF;--bn-light: #E3EFE2;--bn-moderate:#F6ECD7;--bn-heavy: #F1D5D1;--radius: 6px;--radius-lg: 10px}:root[data-theme=dark]{color-scheme:dark;--bg: #0F1117;--surface: #171A21;--surface-alt: #1E222B;--border: #2A2F3A;--border-strong:#3A4150;--text: #E6E8EE;--text-2: #A6ABB8;--text-3: #6E7480;--navy: #3B4C86;--navy-2: #4A5B95;--accent: #E0564E;--accent-2: #EC6A62;--accent-soft: #3A211F;--blue-rule: #4D8AE0;--shadow-sm: 0 1px 0 rgba(0,0,0,.3), 0 1px 2px rgba(0,0,0,.35);--shadow-md: 0 2px 6px rgba(0,0,0,.4), 0 6px 18px rgba(0,0,0,.45);--t-violet-fg:#C3AEF2;--t-violet-bg:#2C2542;--t-purple-fg:#D2AEEA;--t-purple-bg:#2F2540;--t-blue-fg: #8FB8F0;--t-blue-bg: #1E2A40;--t-cyan-fg: #7FCBD9;--t-cyan-bg: #162A2E;--t-green-fg: #8FD3A0;--t-green-bg: #182A1E;--t-amber-fg: #E0BC78;--t-amber-bg: #2E2615;--t-orange-fg:#EAA877;--t-orange-bg:#2E2014;--t-pink-fg: #E89BBC;--t-pink-bg: #321F29;--t-slate-fg: #B0B5C2;--t-slate-bg: #23262E;--bn-free: #1E222B;--bn-light: #18301F;--bn-moderate:#332B16;--bn-heavy: #3A211F}*{box-sizing:border-box}html,body,#root{height:100%}#root{width:calc(100vw * var(--dc-inv-zoom, 1));height:calc(100vh * var(--dc-inv-zoom, 1));overflow:hidden}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter Tight,Inter,system-ui,-apple-system,Helvetica Neue,Arial,sans-serif;font-size:13px;line-height:1.45;-webkit-font-smoothing:antialiased;font-feature-settings:"cv02","cv03","cv04","ss01"}.mono{font-family:JetBrains Mono,ui-monospace,SF Mono,Menlo,Consolas,monospace;font-feature-settings:"tnum"}.tabular{font-variant-numeric:tabular-nums}.ico{width:14px;height:14px;flex-shrink:0;display:inline-block;vertical-align:middle}.app{display:grid;grid-template-columns:var(--sidebar-w, 240px) 1fr;height:100%;overflow:hidden}.app.sidebar-collapsed{grid-template-columns:56px 1fr}.sidebar.collapsed{width:56px}.sidebar-resize{position:absolute;top:0;right:-3px;bottom:0;width:7px;cursor:col-resize;z-index:5;touch-action:none}.sidebar-resize:after{content:"";position:absolute;top:0;bottom:0;left:3px;width:1px;background:transparent;transition:background .12s}.sidebar-resize:hover:after{background:var(--accent)}body.resizing-sidebar{cursor:col-resize!important;-webkit-user-select:none;user-select:none}body.resizing-sidebar .sidebar-resize:after{background:var(--accent)}.sidebar.collapsed .sidebar-resize{display:none}.sidebar.collapsed .sidebar-brand{padding:12px 8px;justify-content:center}.sidebar.collapsed .nav-section{padding:4px 6px 8px}.sidebar.collapsed .nav-item{padding:8px 0;justify-content:center}.sidebar.collapsed .nav-item .ico{margin:0}.sidebar.collapsed .sidebar-user{padding:8px;justify-content:center}.sidebar{position:relative;border-right:1px solid var(--border);background:var(--surface-alt);display:flex;flex-direction:column;height:100%}.sidebar-brand{padding:14px 14px 12px;display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--border)}.sidebar-brand .logo-mark{width:32px;height:32px;background:var(--navy);border-radius:6px;display:grid;place-items:center;position:relative;overflow:hidden}.sidebar-brand .logo-mark:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,transparent 0 35%,var(--accent) 35% 65%,transparent 65% 100%);opacity:.85}.sidebar-brand .logo-mark span{position:relative;color:#fff;font-weight:800;font-size:13px;letter-spacing:-.02em}.sidebar-brand h1{font-size:14px;margin:0;font-weight:700;letter-spacing:-.01em}.sidebar-brand small{font-size:11px;color:var(--text-2);display:block;margin-top:1px}.sidebar-search{padding:10px 12px}.sidebar-search input{width:100%;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:6px 8px;font-size:12px;color:var(--text)}.sidebar-search input::placeholder{color:var(--text-3)}.nav-section{padding:4px 8px 10px}.nav-section-title{font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);padding:8px 8px 4px;display:flex;align-items:center;justify-content:space-between}.nav-item{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:var(--radius);font-size:12.5px;color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none;width:100%;text-align:left;background:none;border:none}.nav-item:hover{background:#14161e0a}.nav-item.active{background:var(--surface);box-shadow:var(--shadow-sm);color:var(--text);font-weight:600}.nav-item .ico{width:14px;height:14px;flex-shrink:0;color:var(--text-2)}.nav-item.active .ico{color:var(--accent)}.nav-item .badge-num{margin-left:auto;font-size:10.5px;color:var(--text-2);background:var(--surface-alt);padding:1px 5px;border-radius:10px;border:1px solid var(--border)}.nav-item.active .badge-num{background:var(--surface)}.sidebar-scale{padding:8px 12px;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:8px}.sidebar-scale .lbl{font-size:11px;color:var(--text-2);font-weight:500}.sidebar-scale .ctl{display:flex;align-items:center;gap:2px}.sidebar-scale .ctl button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:var(--surface);color:var(--text-1);height:22px;min-width:26px;padding:0 6px;border-radius:6px;font-size:12px;font-weight:700;cursor:pointer;line-height:1}.sidebar-scale .ctl button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.sidebar-scale .ctl button:disabled{opacity:.4;cursor:default}.sidebar-scale .ctl button.reset{font-weight:400;min-width:22px;padding:0 4px}.sidebar-scale .ctl .val{font-size:11px;color:var(--text-2);min-width:34px;text-align:center}.sidebar-foot{padding:10px 12px;border-top:1px solid var(--border);font-size:11px;color:var(--text-3)}.sidebar-user{margin-top:auto;display:flex;align-items:center;gap:8px;padding:8px 12px;border-top:1px solid var(--border)}.avatar{width:22px;height:22px;border-radius:50%;background:var(--navy);color:#fff;display:grid;place-items:center;font-size:10.5px;font-weight:700;flex-shrink:0}.avatar.lg{width:32px;height:32px;font-size:12px}.avatar.sm{width:18px;height:18px;font-size:9px}.page{display:flex;flex-direction:column;height:100%;overflow:hidden;background:var(--bg)}.topbar{height:46px;padding:0 18px;border-bottom:1px solid var(--border);background:var(--surface);display:flex;align-items:center;gap:14px;flex-shrink:0}.crumbs{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text-2)}.crumbs .sep{color:var(--text-3)}.crumbs .current{color:var(--text);font-weight:600}.topbar .spacer{flex:1}.topbar .toolbar{display:flex;align-items:center;gap:6px}.page-body{flex:1;overflow:auto}.page-pad{padding:18px 24px 40px;max-width:1600px;margin:0 auto;width:100%}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:14px}.page-head h2{margin:0;font-size:20px;font-weight:700;letter-spacing:-.015em}.page-head .sub{font-size:12.5px;color:var(--text-2);margin-top:2px}.btn{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;font-size:12.5px;font-weight:500;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none}.btn:hover{background:var(--surface-alt)}.btn .ico{width:13px;height:13px}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:var(--accent-2)}.btn.navy{background:var(--navy);border-color:var(--navy);color:#fff}.btn.navy:hover{background:var(--navy-2)}.btn.ghost{border-color:transparent;background:transparent}.btn.ghost:hover{background:#14161e0d}.btn.sm{height:24px;padding:0 8px;font-size:12px}.btn.xs{height:20px;padding:0 6px;font-size:11px}.btn.icon{width:28px;padding:0;justify-content:center}.btn:disabled{opacity:.55;cursor:not-allowed}.kbd{font-family:JetBrains Mono,monospace;font-size:10.5px;background:var(--surface-alt);border:1px solid var(--border);border-radius:4px;padding:1px 4px;color:var(--text-2)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.card-h{padding:12px 14px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.card-h h3{margin:0;font-size:13px;font-weight:600;letter-spacing:-.005em}.card-h .sub{font-size:11.5px;color:var(--text-2);margin-top:1px}.card-b{padding:14px}.card-b.flush{padding:0}table{width:100%;border-collapse:collapse;font-size:12.5px}th{font-weight:600;color:var(--text-2);text-align:left;padding:8px 12px;border-bottom:1px solid var(--border);background:var(--surface-alt);font-size:11.5px}td{padding:9px 12px;border-bottom:1px solid var(--border)}tr:last-child td{border-bottom:none}tr.hover-row:hover{background:var(--surface-alt);cursor:pointer}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}.chip{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:500;padding:2px 7px;border-radius:999px;background:var(--surface-alt);color:var(--text-2);border:1px solid var(--border);line-height:1.4}.chip .dot{width:6px;height:6px;border-radius:50%;background:var(--text-3)}.chip.solid{padding:2px 7px}.chip[data-tone=violet]{background:var(--t-violet-bg);color:var(--t-violet-fg);border-color:transparent}.chip[data-tone=violet] .dot{background:var(--t-violet-fg)}.chip[data-tone=purple]{background:var(--t-purple-bg);color:var(--t-purple-fg);border-color:transparent}.chip[data-tone=purple] .dot{background:var(--t-purple-fg)}.chip[data-tone=blue]{background:var(--t-blue-bg);color:var(--t-blue-fg);border-color:transparent}.chip[data-tone=blue] .dot{background:var(--t-blue-fg)}.chip[data-tone=cyan]{background:var(--t-cyan-bg);color:var(--t-cyan-fg);border-color:transparent}.chip[data-tone=cyan] .dot{background:var(--t-cyan-fg)}.chip[data-tone=green]{background:var(--t-green-bg);color:var(--t-green-fg);border-color:transparent}.chip[data-tone=green] .dot{background:var(--t-green-fg)}.chip[data-tone=amber]{background:var(--t-amber-bg);color:var(--t-amber-fg);border-color:transparent}.chip[data-tone=amber] .dot{background:var(--t-amber-fg)}.chip[data-tone=orange]{background:var(--t-orange-bg);color:var(--t-orange-fg);border-color:transparent}.chip[data-tone=orange] .dot{background:var(--t-orange-fg)}.chip[data-tone=pink]{background:var(--t-pink-bg);color:var(--t-pink-fg);border-color:transparent}.chip[data-tone=pink] .dot{background:var(--t-pink-fg)}.chip[data-tone=slate]{background:var(--t-slate-bg);color:var(--t-slate-fg);border-color:transparent}.chip[data-tone=slate] .dot{background:var(--t-slate-fg)}.chip[data-tone=red]{background:var(--accent-soft);color:var(--accent);border-color:transparent}.chip[data-tone=red] .dot{background:var(--accent)}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;vertical-align:middle;margin-right:6px}.status-dot.planned{background:#b0b3bd}.status-dot.in-progress{background:#2a57a8}.status-dot.waiting{background:#c58a24}.status-dot.completed{background:#2e6a3c}.status-dot.delayed{background:#b0392f}.status-dot.cancelled{background:#8e909a}.field{display:flex;flex-direction:column;gap:4px}.field label{font-size:11.5px;color:var(--text-2);font-weight:500}input:not([type]),input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],input[type=search],input[type=tel],select,textarea{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);padding:6px 8px;font-size:12.5px;color:var(--text);font-family:inherit;width:100%}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 2px #1f2a551f}textarea{min-height:60px;resize:vertical}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#14161e66;display:grid;place-items:center;z-index:80}.modal{background:var(--surface);border-radius:var(--radius-lg);width:540px;max-width:calc(100vw * var(--dc-inv-zoom, 1) - 40px);max-height:calc(100vh * var(--dc-inv-zoom, 1) - 60px);display:flex;flex-direction:column;box-shadow:0 30px 60px -20px #0006;overflow:hidden}.modal-h{padding:14px 16px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.modal-h h3{margin:0;font-size:14px;font-weight:600}.modal-b{padding:16px;overflow:auto}.modal-f{padding:12px 16px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:8px;background:var(--surface-alt)}hr.rule{border:none;border-top:1px solid var(--border);margin:12px 0}.kv{display:grid;grid-template-columns:140px 1fr;gap:6px 12px;font-size:12.5px}.kv dt{color:var(--text-2)}.kv dd{margin:0;color:var(--text)}.stat{padding:14px 16px;border:1px solid var(--border);background:var(--surface);border-radius:var(--radius-lg)}.stat .label{font-size:11.5px;color:var(--text-2);text-transform:uppercase;letter-spacing:.05em;font-weight:500}.stat .v{font-size:22px;font-weight:700;margin-top:4px;letter-spacing:-.02em}.stat .d{font-size:11.5px;color:var(--text-2);margin-top:2px}.scroll-x{overflow-x:auto;overflow-y:visible;max-width:100%}.scroll-x{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}.scroll-x::-webkit-scrollbar{height:9px}.scroll-x::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:5px}.scroll-x::-webkit-scrollbar-track{background:transparent}.scroll-x::-webkit-scrollbar{height:8px}.scroll-x::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:4px}.fadein{animation:fadein .15s ease}@keyframes fadein{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:none}}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--border);margin-bottom:16px}.tab{padding:8px 12px;font-size:12.5px;font-weight:500;color:var(--text-2);cursor:pointer;border-bottom:2px solid transparent;background:none;border-top:none;border-left:none;border-right:none;margin-bottom:-1px}.tab:hover{color:var(--text)}.tab.active{color:var(--text);border-bottom-color:var(--accent);font-weight:600}.seg{display:inline-flex;padding:2px;background:var(--surface-alt);border:1px solid var(--border);border-radius:var(--radius)}.seg button{height:22px;padding:0 9px;font-size:11.5px;font-weight:500;background:transparent;border:none;color:var(--text-2);cursor:pointer;border-radius:4px}.seg button.on{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}.dashboard-shell{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm)}.dashboard-toolbar{padding:10px 12px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px;flex-wrap:wrap}.dashboard-toolbar .filters{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.dashboard-toolbar .filters select{width:auto;height:26px;padding:0 24px 0 8px;font-size:11.5px}.dashboard-toolbar .legend{display:flex;gap:10px;font-size:11px;color:var(--text-2);align-items:center}.dashboard-toolbar .swatch{width:12px;height:12px;border-radius:3px;display:inline-block}.grid-month{display:grid;grid-template-columns:200px repeat(12,minmax(108px,1fr));font-size:11.5px}.grid-month .h-cell,.grid-month .row-h,.grid-month .cell{border-right:1px solid var(--border);border-bottom:1px solid var(--border);padding:6px 8px;min-height:38px}.grid-month .h-cell{background:var(--surface-alt);font-weight:600;color:var(--text-2);font-size:11px;text-transform:uppercase;letter-spacing:.04em;text-align:center;padding:8px 6px;position:sticky;top:0;z-index:4}.grid-month .h-cell.corner{text-align:left;padding-left:12px;z-index:5}.grid-month .row-h{background:var(--surface-alt);position:sticky;left:0;z-index:3;display:flex;align-items:center;gap:8px}.grid-month .row-h .ru-meta{flex:1;min-width:0}.grid-month .row-h .name{font-weight:600;color:var(--text);font-size:12.5px}.grid-month .row-h .role{font-size:10.5px;color:var(--text-2);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.grid-month .cell{padding:4px;vertical-align:top;position:relative}.grid-month .cell.bn-free{background:transparent}.grid-month .cell.bn-light{background:var(--bn-light)}.grid-month .cell.bn-moderate{background:var(--bn-moderate)}.grid-month .cell.bn-heavy{background:var(--bn-heavy)}.taskcard{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--border-strong);border-radius:4px;padding:4px 6px;margin:2px 0;font-size:11px;line-height:1.3;cursor:pointer;position:relative}.taskcard:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.taskcard .code{font-weight:600;font-size:10.5px;color:var(--text-2)}.taskcard .nm{font-size:11px;color:var(--text);margin-top:1px;font-weight:500}.taskcard .meta{display:flex;align-items:center;gap:4px;margin-top:3px}.taskcard.continues-left{border-top-left-radius:0;border-bottom-left-radius:0}.taskcard.continues-right{border-top-right-radius:0;border-bottom-right-radius:0}.taskcard[data-tone=violet]{border-left-color:var(--t-violet-fg)}.taskcard[data-tone=purple]{border-left-color:var(--t-purple-fg)}.taskcard[data-tone=blue]{border-left-color:var(--t-blue-fg)}.taskcard[data-tone=cyan]{border-left-color:var(--t-cyan-fg)}.taskcard[data-tone=green]{border-left-color:var(--t-green-fg)}.taskcard[data-tone=amber]{border-left-color:var(--t-amber-fg)}.taskcard[data-tone=orange]{border-left-color:var(--t-orange-fg)}.taskcard[data-tone=pink]{border-left-color:var(--t-pink-fg)}.taskcard[data-tone=slate]{border-left-color:var(--t-slate-fg)}.gantt{display:grid;grid-template-columns:200px 1fr;font-size:11.5px}.gantt .g-rowh,.gantt .g-head{background:var(--surface-alt);padding:6px 10px;border-bottom:1px solid var(--border);border-right:1px solid var(--border)}.gantt .g-track-head{display:grid;grid-template-columns:repeat(12,1fr)}.gantt .g-track-head div{padding:6px;font-size:11px;color:var(--text-2);font-weight:600;text-transform:uppercase;letter-spacing:.04em;border-right:1px solid var(--border);border-bottom:1px solid var(--border);background:var(--surface-alt);text-align:center}.gantt .g-rowh{display:flex;align-items:center;gap:8px;min-height:44px}.gantt .g-track{position:relative;min-height:44px;border-bottom:1px solid var(--border);display:grid;grid-template-columns:repeat(12,1fr)}.gantt .g-track .gcol{border-right:1px solid var(--border)}.gantt .g-bar{position:absolute;top:4px;height:16px;background:var(--surface-alt);border:1px solid var(--border-strong);border-radius:4px;padding:0 6px;font-size:10.5px;font-weight:500;display:flex;align-items:center;gap:6px;cursor:pointer;white-space:nowrap;overflow:hidden}.gantt .g-bar:hover{z-index:5;box-shadow:var(--shadow-md)}.gantt .g-bar[data-tone=violet]{background:var(--t-violet-bg);color:var(--t-violet-fg);border-color:var(--t-violet-bg)}.gantt .g-bar[data-tone=purple]{background:var(--t-purple-bg);color:var(--t-purple-fg);border-color:var(--t-purple-bg)}.gantt .g-bar[data-tone=blue]{background:var(--t-blue-bg);color:var(--t-blue-fg);border-color:var(--t-blue-bg)}.gantt .g-bar[data-tone=cyan]{background:var(--t-cyan-bg);color:var(--t-cyan-fg);border-color:var(--t-cyan-bg)}.gantt .g-bar[data-tone=green]{background:var(--t-green-bg);color:var(--t-green-fg);border-color:var(--t-green-bg)}.gantt .g-bar[data-tone=amber]{background:var(--t-amber-bg);color:var(--t-amber-fg);border-color:var(--t-amber-bg)}.gantt .g-bar[data-tone=orange]{background:var(--t-orange-bg);color:var(--t-orange-fg);border-color:var(--t-orange-bg)}.gantt .g-bar[data-tone=pink]{background:var(--t-pink-bg);color:var(--t-pink-fg);border-color:var(--t-pink-bg)}.gantt .g-bar[data-tone=slate]{background:var(--t-slate-bg);color:var(--t-slate-fg);border-color:var(--t-slate-bg)}.heatmap{display:grid;grid-template-columns:200px repeat(12,1fr)}.heatmap .h-cell,.heatmap .row-h,.heatmap .hcell{border-right:1px solid var(--border);border-bottom:1px solid var(--border);padding:8px 10px}.heatmap .h-cell{background:var(--surface-alt);font-size:11px;color:var(--text-2);font-weight:600;text-align:center;text-transform:uppercase}.heatmap .row-h{background:var(--surface-alt);display:flex;align-items:center;gap:8px;font-size:12px}.heatmap .hcell{min-height:56px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-weight:600;font-size:14px;color:var(--text)}.heatmap .hcell .lab{font-size:10px;color:var(--text-2);font-weight:500;letter-spacing:.04em;text-transform:uppercase}.heatmap .hcell.bn-free{background:transparent;color:var(--text-3)}.heatmap .hcell.bn-light{background:var(--bn-light)}.heatmap .hcell.bn-moderate{background:var(--bn-moderate)}.heatmap .hcell.bn-heavy{background:var(--bn-heavy)}.project-row{display:grid;grid-template-columns:90px 1fr 140px 120px 120px 100px;padding:10px 14px;border-bottom:1px solid var(--border);align-items:center;cursor:pointer}.project-row:hover{background:var(--surface-alt)}.project-row .pcode{font-weight:600}.project-row .ptitle{display:flex;flex-direction:column;gap:1px}.project-row .ptitle .t{font-weight:500}.project-row .ptitle .st{font-size:11px;color:var(--text-2)}.quote-doc{background:#fff;width:820px;max-width:100%;border:1px solid var(--border);margin:0 auto;font-family:Inter,system-ui,sans-serif;color:#14171f;box-shadow:var(--shadow-md)}.quote-doc .rule-top,.quote-doc .rule-bot{height:5px;background:var(--blue-rule)}.quote-doc .qhead{padding:32px 40px 0;display:flex;justify-content:space-between;gap:20px}.quote-doc .qhead h1{margin:0;font-size:13px;font-weight:700}.quote-doc .qhead p{margin:2px 0 0;font-size:12px;color:#2c2f3c}.quote-doc .qlogo{width:130px;flex-shrink:0}.quote-doc .qhead-divider{margin:28px 40px 0;border-top:1px solid #D8DAE0}.quote-doc .qtitle{padding:24px 40px 0}.quote-doc .qtitle h2{margin:0;font-size:30px;font-weight:800;letter-spacing:-.02em}.quote-doc .qtitle .sub{font-size:13px;font-weight:600;margin-top:2px;color:#2c2f3c}.quote-doc .qproject{padding:18px 40px 0;display:grid;grid-template-columns:1fr 120px;gap:24px}.quote-doc .qproject h3{font-size:14px;font-weight:700;margin:0 0 6px}.quote-doc .qproject .pbody{font-size:12px;color:#14171f;line-height:1.5}.quote-doc .qno{font-size:14px;font-weight:700;text-align:right}.quote-doc .qno .num{font-size:13px;color:#2c2f3c;font-weight:500;margin-top:4px}.quote-doc .qtable-divider{margin:22px 40px 0;border-top:1px solid #D8DAE0}.quote-doc .qtable{padding:20px 40px 0}.quote-doc .qtable .qhead-row{display:grid;grid-template-columns:1fr 140px;font-size:14px;font-weight:700;padding-bottom:6px}.quote-doc .qtable .qhead-row span:last-child{text-align:right}.quote-doc .qtable .qsec{display:grid;grid-template-columns:1fr 140px;font-size:12.5px;background:#f4f4f1;padding:7px 8px;font-weight:700;margin:6px -8px 0}.quote-doc .qtable .qrow{display:grid;grid-template-columns:1fr 140px;padding:6px 8px;font-size:12.5px}.quote-doc .qtable .qrow span:last-child,.quote-doc .qtable .qsec span:last-child{text-align:right;font-variant-numeric:tabular-nums}.quote-doc .qtotal-divider{margin:12px 40px 0;border-top:1px solid #D8DAE0}.quote-doc .qtotal{padding:18px 40px 32px;display:grid;grid-template-columns:1fr 200px;align-items:center;font-size:16px}.quote-doc .qtotal .lbl{text-align:right;padding-right:12px;color:#2c2f3c}.quote-doc .qtotal .v{text-align:right;font-weight:800;font-size:18px}.bar-track{height:8px;background:var(--surface-alt);border-radius:4px;overflow:hidden;border:1px solid var(--border)}.bar-fill{height:100%;background:var(--navy)}.bar-fill.green{background:#4a8a55}.bar-fill.accent{background:var(--accent)}.auth-shell{min-height:100%;display:grid;grid-template-columns:1fr 460px;background:var(--bg)}.auth-hero{background:var(--navy);color:#fff;padding:60px;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}.auth-hero:before{content:"";position:absolute;top:0;left:0;right:0;height:12px;background:var(--accent)}.auth-hero:after{content:"";position:absolute;bottom:0;left:0;right:0;height:12px;background:var(--accent)}.auth-form{background:var(--surface);padding:60px;display:flex;flex-direction:column;justify-content:center}.auth-form h2{margin:0 0 4px;font-size:24px;font-weight:700;letter-spacing:-.02em}.auth-form .sub{font-size:13px;color:var(--text-2);margin-bottom:24px}.hover-card{position:absolute;z-index:50;min-width:220px}
