:root{--bg:#f4f5f7;--bg-deep:#eceef1;--surface-2:#f9fafb;--border:#e4e6ea;--border-strong:#d1d5db;--text:#0f172a;--header:#1b2434;--header-2:#2a3447;--link:#2563eb;--green:#10b981;--green-bg:#dcfce7;--amber:#f59e0b;--amber-bg:#fef3c7;--red:#ef4444;--red-bg:#fee2e2;--blue:#3b82f6;--blue-bg:#dbeafe;--gray:#94a3b8;--gray-bg:#e5e7eb;--teal:#0ea5a5;--purple:#8b5cf6;--shadow:0 1px 2px rgba(15,23,42,.04),0 1px 1px rgba(15,23,42,.03);--shadow-lg:0 4px 12px rgba(15,23,42,.06),0 1px 3px rgba(15,23,42,.04);--radius:6px;--radius-lg:10px}body{margin:0;font-family:Segoe UI,-apple-system,BlinkMacSystemFont,Helvetica Neue,system-ui,sans-serif;line-height:1.45}button{cursor:pointer;border:none;background:none}button,input,select{font:inherit;color:inherit}.app{grid-template-rows:52px 1fr;grid-template-areas:"topbar topbar" "sidebar main";min-height:0}.hamburger{width:38px;height:38px;align-items:center;justify-content:center;border-radius:6px;color:#fff;flex-shrink:0;transition:background .15s}.hamburger:focus-visible,.hamburger:hover{background:hsla(0,0%,100%,.1);outline:none}.hamburger-bars{display:block;position:relative;width:20px;height:14px}.hamburger-bars span{display:block;position:absolute;left:0;right:0;height:2px;border-radius:2px;background:currentColor;transition:transform .22s,top .22s,opacity .15s}.hamburger-bars span:first-child{top:0}.hamburger-bars span:nth-child(2){top:6px}.hamburger-bars span:nth-child(3){top:12px}.hamburger-bars.open span:first-child{top:6px;transform:rotate(45deg)}.hamburger-bars.open span:nth-child(2){opacity:0}.hamburger-bars.open span:nth-child(3){top:6px;transform:rotate(-45deg)}.mobile-nav-backdrop{display:none;position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:90;opacity:0;transition:opacity .2s}.topbar{grid-area:topbar;background:var(--header);padding:0 16px;gap:16px;border-bottom:1px solid hsla(0,0%,100%,.08)}.topbar .brand{display:flex;align-items:center;gap:10px;font-weight:600;font-size:14px;letter-spacing:.2px;padding-right:16px;border-right:1px solid hsla(0,0%,100%,.12);margin-right:4px}.topbar .brand-mark{width:26px;height:26px;background:var(--accent);border-radius:4px;display:grid;place-items:center;color:#1b2434;font-weight:800;font-size:14px;letter-spacing:-.5px}.topbar .crumbs{font-size:12px;color:hsla(0,0%,100%,.7);display:flex;align-items:center;gap:8px}.topbar .crumbs strong{color:#fff;font-weight:500}.topbar .spacer{flex:1 1}.topbar .search{background:hsla(0,0%,100%,.08);border:1px solid hsla(0,0%,100%,.12);border-radius:4px;height:30px;width:280px;padding:0 10px 0 32px;color:#fff;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='rgba(255,255,255,0.6)' stroke-width='2'><circle cx='11' cy='11' r='7'/><path d='m21 21-4.3-4.3'/></svg>");background-repeat:no-repeat;background-position:10px}.topbar .search::placeholder{color:hsla(0,0%,100%,.5)}.topbar .icon-btn{width:30px;height:30px;display:grid;place-items:center;color:hsla(0,0%,100%,.85);border-radius:4px}.topbar .icon-btn:hover{background:hsla(0,0%,100%,.1)}.topbar .meta{font-size:11px;color:hsla(0,0%,100%,.65);text-align:right;line-height:1.3}.topbar .meta .live:before{content:"";display:inline-block;width:7px;height:7px;background:var(--green);border-radius:50%;margin-right:5px;box-shadow:0 0 0 0 rgba(16,185,129,.5);animation:pulse 2s infinite;vertical-align:middle}@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(16,185,129,.6)}70%{box-shadow:0 0 0 6px rgba(16,185,129,0)}to{box-shadow:0 0 0 0 rgba(16,185,129,0)}}.sidebar{grid-area:sidebar;background:var(--header-2);color:hsla(0,0%,100%,.85);padding:12px 0}.sidebar .section-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:1.5px;color:hsla(0,0%,100%,.4);padding:14px 18px 6px}.sidebar .nav-item{display:flex;align-items:center;gap:11px;padding:9px 18px;font-size:13px;color:hsla(0,0%,100%,.78);text-align:left;width:100%;border-left:3px solid transparent;position:relative}.sidebar .nav-item:hover{background:hsla(0,0%,100%,.05);color:#fff}.sidebar .nav-item.active{background:rgba(242,183,5,.1);color:#fff;border-left-color:var(--accent);font-weight:500}.sidebar .nav-item .num{margin-left:auto;font-size:11px;color:hsla(0,0%,100%,.55);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.sidebar .nav-icon{width:16px;height:16px;display:grid;place-items:center;opacity:.85}.sidebar .footer{margin-top:auto;padding:14px 18px;font-size:10px;color:hsla(0,0%,100%,.35);border-top:1px solid hsla(0,0%,100%,.06)}.main{padding:16px 20px 32px;background:var(--bg)}.page-head{align-items:flex-end;margin-bottom:16px;flex-wrap:wrap;gap:14px}.page-head h1{margin:0 0 2px;letter-spacing:-.2px}.page-head p{font-size:12px}.page-head .actions{display:flex;gap:8px;align-items:center}.btn{background:var(--surface);white-space:nowrap}.btn:hover{border-color:#94a3b8}.btn.primary{background:var(--header);border-color:var(--header)}.btn.primary:hover{background:#0b1320}.btn.accent:hover{filter:brightness(.96)}.btn.ghost:hover{background:var(--bg-deep)}.card{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow);overflow:hidden}.card-head{padding:12px 16px}.card-head h3{margin:0;font-size:13px;font-weight:600;letter-spacing:.1px}.card-head .sub{font-size:11px;color:var(--text-3)}.card-body{padding:14px 16px}.card-body.flush{padding:0}.kpi-row{grid-template-columns:repeat(6,1fr);grid-gap:12px;gap:12px}.kpi{background:var(--surface);border-radius:var(--radius-lg)}.kpi .label{font-size:11px;color:var(--text-2);letter-spacing:.8px}.kpi .value{font-size:26px;line-height:1.1;margin-top:6px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.kpi .sub{color:var(--text-3);margin-top:4px;display:flex;align-items:center;gap:6px}.kpi .delta{font-weight:600}.kpi .delta.up{color:var(--green)}.kpi .delta.down{color:var(--red)}.kpi .accent-bar{position:absolute;left:0;top:0;bottom:0;width:3px}.pill{display:inline-flex;align-items:center;gap:5px;height:20px;padding:0 8px;border-radius:10px;font-size:11px;font-weight:500;white-space:nowrap}.pill .dot{width:6px;height:6px;border-radius:50%}.pill.complete{background:var(--green-bg);color:#065f46}.pill.complete .dot{background:var(--green)}.pill.in-progress{background:var(--blue-bg);color:#1e40af}.pill.in-progress .dot{background:var(--blue)}.pill.constraint{background:var(--red-bg);color:#991b1b}.pill.constraint .dot{background:var(--red)}.pill.not-started{background:var(--gray-bg);color:#475569}.pill.not-started .dot{background:var(--gray)}.pill.not-delivered{background:#ffedd5;color:#9a3412}.pill.not-delivered .dot{background:#f97316}.pill.warning{background:var(--amber-bg);color:#92400e}.pill.warning .dot{background:var(--amber)}.proposed-date-pill{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 8px;border-radius:4px;font-size:11px;font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap;line-height:1}.proposed-date-pill .dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.proposed-date-pill .proposed-date-sub{font-weight:500;opacity:.7;font-size:10px;margin-left:2px}.grid-2{grid-template-columns:1fr 1fr;grid-gap:14px}.grid-2,.grid-3{display:grid;gap:14px}.grid-3{grid-template-columns:repeat(3,1fr);grid-gap:14px}.grid-12-7-5{display:grid;grid-template-columns:7fr 5fr;grid-gap:14px;gap:14px}.mt-14,.row-gap-14>*+*{margin-top:14px}.donut-wrap{display:flex;align-items:center;gap:16px}.donut-wrap svg{flex-shrink:0}.donut-legend{font-size:12px;flex:1 1;min-width:0}.donut-legend .row{display:grid;grid-template-columns:14px 1fr auto auto;grid-gap:8px;gap:8px;align-items:center;padding:4px 0;border-bottom:1px dashed var(--border)}.donut-legend .row:last-child{border-bottom:0}.donut-legend .swatch{width:10px;height:10px;border-radius:2px}.donut-legend .val{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:600}.donut-legend .pct{color:var(--text-3);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;min-width:38px;text-align:right}.donut-center{position:relative;width:130px;height:130px;display:grid;place-items:center}.donut-center .donut-total{position:absolute;inset:0;display:grid;place-items:center;text-align:center;pointer-events:none}.donut-center .donut-total .num{font-size:22px;font-weight:600;line-height:1}.donut-center .donut-total .lbl{font-size:10px;color:var(--text-3);text-transform:uppercase;letter-spacing:.8px;margin-top:4px}.table-wrap{overflow:auto}table.data td,table.data th{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);vertical-align:middle}table.data th{font-weight:600;background:var(--surface-2);color:var(--text-2);font-size:11px;text-transform:uppercase;letter-spacing:.4px;position:-webkit-sticky;position:sticky;top:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}table.data th:hover{background:#f1f3f6}table.data th .sort{display:inline-block;width:0;height:0;margin-left:4px;border-left:3px solid transparent;border-right:3px solid transparent;opacity:0}table.data th.sorted-asc .sort{opacity:1;border-bottom:4px solid var(--text-2)}table.data th.sorted-desc .sort{opacity:1;border-top:4px solid var(--text-2)}table.data td.mono{font-family:SF Mono,Menlo,Consolas,monospace;font-size:11.5px}table.data td.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}table.data .id-cell{font-family:SF Mono,Menlo,Consolas,monospace;font-size:11.5px;color:var(--text);font-weight:500}table.data .asset-link{text-decoration:none;color:var(--text)}table.data .asset-link:hover{color:var(--link);text-decoration:underline}table.data .priority-cell{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:4px;font-weight:600;font-size:11px;color:#fff}.bar-list .row{display:grid;grid-template-columns:130px 1fr 50px;grid-gap:10px;gap:10px;align-items:center;padding:6px 0;font-size:12px}.bar-list .row .lbl{color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bar-list .row .bar-track{height:16px;background:var(--bg-deep);border-radius:3px;position:relative;overflow:hidden;display:flex}.bar-list .row .bar-seg{height:100%}.bar-list .row .num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:600}.filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px}.filter{position:relative}.filter input,.filter select{height:30px;border:1px solid var(--border-strong);background:var(--surface);border-radius:4px;padding:0 8px;font-size:12px;min-width:130px;color:var(--text)}.filter select{padding-right:22px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%23475569' stroke-width='2'><polyline points='6 9 12 15 18 9'/></svg>");background-repeat:no-repeat;background-position:right 8px center}.filter label{font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:var(--text-3);font-weight:600;display:block;margin-bottom:3px}.chip{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 8px;border:1px solid var(--border-strong);background:var(--surface);border-radius:11px;font-size:11px}.chip .x{color:var(--text-3);cursor:pointer}.chip .x:hover{color:var(--red)}.dropzone{border:2px dashed var(--border-strong);border-radius:var(--radius-lg);padding:36px;text-align:center;background:var(--surface);transition:all .15s;cursor:pointer}.dropzone.over,.dropzone:hover{border-color:var(--accent);background:#fffbea}.dropzone .title{font-size:15px;font-weight:600;margin-bottom:4px}.dropzone .sub{font-size:12px;color:var(--text-2)}.dropzone .icon{width:44px;height:44px;background:var(--bg-deep);border-radius:12px;display:grid;place-items:center;margin:0 auto 12px;color:var(--text-2)}.import-log{font-family:SF Mono,Menlo,Consolas,monospace;font-size:11.5px;line-height:1.6;background:#0b1320;color:#c9d6ea;padding:14px 16px;border-radius:var(--radius-lg);max-height:360px;overflow:auto}.import-log .ts{color:#4b5563}.import-log .ok{color:#6ee7b7}.import-log .warn{color:#fcd34d}.import-log .err{color:#fca5a5}.import-log .info{color:#93c5fd}.source-list{display:grid;grid-gap:8px;gap:8px}.source-row{display:grid;grid-template-columns:32px 1fr auto auto auto;grid-gap:12px;gap:12px;align-items:center;padding:10px 12px;border:1px solid var(--border);border-radius:6px;background:var(--surface)}.source-row .file-icon{width:30px;height:36px;background:var(--bg-deep);border-radius:4px;display:grid;place-items:center;font-size:9px;font-weight:700;color:var(--text-2);position:relative}.source-row .file-icon.xlsx{background:#dcfce7;color:#065f46}.source-row .file-icon.pdf{background:#fee2e2;color:#991b1b}.source-row .nm{font-weight:500;font-size:13px}.source-row .meta{font-size:11px;color:var(--text-3)}.progress{height:6px;border-radius:3px;background:var(--bg-deep);overflow:hidden;display:flex}.progress>div{height:100%}.detail-panel{position:fixed;top:0;right:0;bottom:0;width:480px;background:var(--surface);border-left:1px solid var(--border);box-shadow:-8px 0 24px rgba(15,23,42,.12);z-index:50;transform:translateX(100%);transition:transform .2s ease;display:flex;flex-direction:column}.detail-panel.open{transform:translateX(0)}.detail-panel .head{padding:14px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.detail-panel .body{padding:16px 18px;overflow:auto;flex:1 1}.detail-panel .kv{display:grid;grid-template-columns:130px 1fr;grid-gap:6px 12px;gap:6px 12px;font-size:12px}.detail-panel .kv dt{color:var(--text-3)}.detail-panel .kv dd{margin:0;font-weight:500}.detail-panel h4{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;color:var(--text-3);margin:18px 0 8px;padding-bottom:6px;border-bottom:1px solid var(--border)}.backdrop{position:fixed;inset:0;background:rgba(15,23,42,.18);z-index:49;opacity:0;pointer-events:none;transition:opacity .2s}.backdrop.open{opacity:1;pointer-events:auto}.muted{color:var(--text-3)}.spinner{border:2px solid var(--border);border-top-color:var(--accent);animation:spin 1s linear infinite;vertical-align:middle}.heatmap{display:grid;grid-template-columns:90px repeat(var(--cols,8),1fr);grid-gap:2px;gap:2px;font-size:11px}.heatmap .h-label{color:var(--text-2);padding:4px 6px;text-align:right;font-size:11px}.heatmap .h-col{padding:4px 0;text-align:center;font-size:10px;color:var(--text-3);font-weight:600;text-transform:uppercase;letter-spacing:.4px}.heatmap .h-cell{padding:6px 4px;text-align:center;border-radius:3px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:500;color:#fff;font-size:11px;cursor:default}.stage-flow{display:grid;grid-template-columns:1fr 1fr 1fr;grid-gap:16px;gap:16px;position:relative}.stage-flow:before{content:"";position:absolute;top:38px;left:12%;right:12%;height:2px;background:linear-gradient(to right,var(--green),var(--blue),var(--gray));z-index:0}.stage-step{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:14px;z-index:1}.stage-step .step-head{display:flex;align-items:center;gap:10px}.stage-step .step-num{width:26px;height:26px;border-radius:50%;background:var(--header);color:#fff;display:grid;place-items:center;font-weight:600;font-size:12px}.stage-step .step-title{font-weight:600;font-size:13px}.stage-step .step-stack{height:8px;border-radius:4px;background:var(--bg-deep);display:flex;overflow:hidden;margin:12px 0 8px}.stage-step .step-stack>div{height:100%}.stage-step .step-rows{display:grid;grid-template-columns:1fr 1fr;grid-gap:4px 12px;gap:4px 12px;font-size:11px}.stage-step .step-rows .lbl{color:var(--text-2);display:flex;align-items:center;gap:5px}.stage-step .step-rows .num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:600}.stage-step .step-rows .sw{width:8px;height:8px;border-radius:2px}.empty{padding:40px 20px;text-align:center;font-size:13px}.edit-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--text-3);margin-bottom:4px}.edit-input{width:100%;height:30px;border:1px solid var(--border-strong);background:var(--surface);border-radius:4px;padding:0 8px;font-size:12px;color:var(--text);font-family:inherit}.edit-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px rgba(242,183,5,.18)}select.edit-input{padding-right:22px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%23475569' stroke-width='2'><polyline points='6 9 12 15 18 9'/></svg>");background-repeat:no-repeat;background-position:right 8px center}input[type=range].edit-input,select.edit-input{-webkit-appearance:none;-moz-appearance:none;appearance:none}input[type=range].edit-input{height:4px;background:var(--bg-deep);border-radius:2px;cursor:pointer}input[type=range].edit-input::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:14px;height:14px;background:var(--accent);border:2px solid var(--header);border-radius:50%;cursor:-webkit-grab;cursor:grab}input[type=range].edit-input::-moz-range-thumb{width:14px;height:14px;background:var(--accent);border:2px solid var(--header);border-radius:50%;cursor:grab}.roadmap{display:grid;grid-template-columns:repeat(9,1fr);grid-gap:2px;gap:2px;margin:6px 0 14px;position:relative}.rm-step{display:flex;flex-direction:column;align-items:center;gap:4px;font-size:9.5px;text-align:center;position:relative}.rm-step+.rm-step:before{content:"";position:absolute;left:-50%;right:50%;top:11px;height:2px;background:var(--border-strong);z-index:0}.rm-step.past+.rm-step.past:before,.rm-step.past+.rm-step:before{background:var(--green)}.rm-step.here+.rm-step:before{background:var(--border-strong)}.rm-dot{width:22px;height:22px;border-radius:50%;background:var(--bg-deep);border:1.5px solid var(--border-strong);color:var(--text-3);display:grid;place-items:center;font-weight:600;font-size:10px;position:relative;z-index:1;transition:all .2s}.rm-step.past .rm-dot{background:var(--green);border-color:var(--green);color:#fff}.rm-step.here .rm-dot{background:var(--blue);border-color:var(--blue);color:#fff;box-shadow:0 0 0 3px rgba(59,130,246,.18)}.rm-step.here.blocked .rm-dot{background:var(--red);border-color:var(--red);box-shadow:0 0 0 3px rgba(239,68,68,.2)}.rm-label{color:var(--text-2);line-height:1.2;font-weight:500;font-size:9.5px}.rm-step.here .rm-label{color:var(--text);font-weight:600}.rm-step.past .rm-label{color:var(--text-2)}.rm-meta{font-size:9px;color:var(--blue);font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.rm-step.here.blocked .rm-meta{color:var(--red)}.rm-stage-date{margin-top:4px;width:100%;display:flex;flex-direction:column;align-items:center;gap:2px}.rm-date-input{width:84px;font-size:8px;padding:2px 3px;border:1px dashed var(--border-strong);border-radius:3px;background:transparent;color:var(--text-3);cursor:pointer;text-align:center;font-family:inherit;transition:border-color .15s,background .15s}.rm-date-input::-webkit-calendar-picker-indicator{width:8px;height:8px;opacity:.5;cursor:pointer;padding:0;margin:0}.rm-date-input:focus,.rm-date-input:hover{border-color:var(--blue);background:#eff6ff;color:var(--blue);outline:none}.rm-date-input.rm-date-set{border:1px solid var(--blue,#3b82f6);color:var(--blue,#3b82f6);background:#eff6ff;font-weight:600}.rm-date-clear{font-size:8px;line-height:1;padding:0 2px;background:none;border:none;cursor:pointer;color:var(--text-3)}.rm-date-clear:hover{color:var(--red,#ef4444)}.rm-blocked-hint{font-size:8.5px;color:var(--red);font-weight:500;text-transform:uppercase;letter-spacing:.3px;margin-top:2px;white-space:nowrap}.roc-section{margin:18px 0 4px}.roc-header{width:100%;display:flex;align-items:center;gap:12px;padding:8px 0 10px;margin-bottom:10px;background:transparent;border:0;border-bottom:1px solid var(--border);cursor:pointer;text-align:left;font:inherit;color:var(--text);transition:border-color .15s}.roc-header:hover{border-bottom-color:var(--text-3)}.roc-header:focus-visible{outline:2px solid rgba(242,183,5,.35);outline-offset:2px;border-radius:2px}.roc-header-left{display:inline-flex;align-items:center;gap:8px;flex:1 1;min-width:0}.roc-chev{color:var(--text-3);transform:rotate(-90deg);transition:transform .15s;flex-shrink:0}.roc-chev.open{transform:rotate(0deg)}.roc-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.roc-header:hover .roc-title{color:var(--text)}.roc-auto-badge{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.55px;background:#dcfce7;color:#065f46;padding:2px 7px;border-radius:999px;border:1px solid #86efac;white-space:nowrap;flex-shrink:0}.roc-summary{display:inline-flex;align-items:center;gap:10px;padding-left:10px;border-left:1px solid var(--border);flex-shrink:0}.roc-count{font-size:11px;font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--text-2);letter-spacing:.2px;white-space:nowrap;text-transform:uppercase}.roc-count .roc-slash{margin:0 4px;font-weight:400;color:var(--text-3);text-transform:lowercase;letter-spacing:0}.roc-count.done{color:#065f46}.roc-pct-chip{font-size:11px;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;padding:3px 9px;border-radius:999px;min-width:46px;text-align:center;letter-spacing:.15px;white-space:nowrap;border:1px solid transparent}.roc-pct-chip[data-tone=low]{background:#fef2f2;color:#991b1b;border-color:#fecaca}.roc-pct-chip[data-tone=mid]{background:#fffbeb;color:#92400e;border-color:#fde68a}.roc-pct-chip[data-tone=done]{background:#ecfdf5;color:#065f46;border-color:#86efac}.roc-body{display:flex;flex-direction:column;gap:12px}.roc-readonly-note{font-size:11.5px;background:#f0fdf4;border:1px solid #bbf7d0;color:#065f46;padding:8px 10px;border-radius:6px;font-weight:500;line-height:1.45}.roc-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.roc-item label{display:grid;grid-template-columns:18px 22px minmax(0,1fr) auto;align-items:center;grid-column-gap:12px;column-gap:12px;padding:9px 8px;border-radius:6px;cursor:pointer;font-size:12.5px;line-height:1.45;color:var(--text);transition:background .12s;border:1px solid transparent;min-height:40px}.roc-item label:hover{background:rgba(15,23,42,.035)}.roc-item.on label{background:#f7fee7;border-color:rgba(22,163,74,.18)}.roc-item.readonly label{cursor:default}.roc-item.readonly label:hover{background:transparent}.roc-item.on.readonly label{background:#f7fee7}.roc-item input[type=checkbox]{width:16px;height:16px;accent-color:#16a34a;margin:0;cursor:pointer;flex-shrink:0}.roc-item.readonly input[type=checkbox]{cursor:default}.roc-idx{font-size:10.5px;font-weight:700;color:var(--text-3);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-align:center;background:var(--bg-deep,#f1f5f9);border-radius:999px;padding:2px 0;min-width:22px;line-height:1.3}.roc-item.on .roc-idx{background:#dcfce7;color:#065f46}.roc-label{font-size:12.5px;color:var(--text);min-width:0;word-break:break-word;padding-right:4px}.roc-credit,.roc-item.on .roc-label{color:var(--text-2)}.roc-credit{font-size:11px;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-align:right;background:var(--surface-2,#f1f5f9);padding:3px 9px;border-radius:999px;min-width:40px;border:1px solid var(--border);white-space:nowrap}.roc-item.on .roc-credit{background:#16a34a;color:#fff;border-color:#16a34a}.roc-footer{margin-top:4px;padding-top:12px;border-top:1px dashed var(--border)}.roc-bar{height:6px;background:var(--bg-deep,#e2e8f0);border-radius:4px;overflow:hidden}.roc-bar-fill{height:100%;background:linear-gradient(90deg,#f2b705,#16a34a);transition:width .25s}.roc-totals{margin-top:8px;display:flex;align-items:baseline;gap:6px;font-size:11.5px;color:var(--text-2)}.roc-totals strong{font-size:14px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--text);font-weight:700}.roc-hint{font-size:11px;color:var(--text-2);line-height:1.5;padding:8px 10px;background:#fffbeb;border:1px solid #fde68a;border-radius:6px}@media (max-width:640px){.roc-header{flex-wrap:wrap;align-items:flex-start;gap:8px}.roc-summary{border-left:0;padding-left:0;width:100%;justify-content:flex-start;padding-top:4px}.roc-item label{grid-template-columns:18px 22px minmax(0,1fr) auto;column-gap:10px;padding:12px 8px;min-height:48px}.roc-item label,.roc-label{font-size:13.5px}.roc-credit{font-size:12px;padding:4px 10px}.roc-item input[type=checkbox]{width:20px;height:20px}}.bulk-bar{background:linear-gradient(180deg,#fffbea,#fff8dd);border:1px solid var(--accent);border-radius:var(--radius-lg);padding:0;margin-bottom:12px;overflow:hidden}.bulk-bar-main{display:flex;align-items:center;gap:14px;padding:12px 14px}.bulk-icon{width:32px;height:32px;background:var(--accent);color:#1b2434;border-radius:8px;display:grid;place-items:center;flex-shrink:0}.bulk-title{font-size:13px;font-weight:600;color:#78350f}.bulk-sub{font-size:11px;color:#92400e;margin-top:2px}.bulk-sub strong{font-weight:600}.bulk-breakdown{background:hsla(0,0%,100%,.5);border-top:1px solid var(--accent);padding:8px 14px 10px;display:grid;grid-gap:4px;gap:4px}.bulk-row{display:flex;align-items:center;gap:10px;font-size:12px;padding:4px 0}.bulk-arrow{color:var(--accent-2);font-weight:600}.bulk-arrow.rollback{color:var(--red)}.bulk-arrow.advance{color:var(--accent-2)}.constraint-row{display:grid;grid-template-columns:24px 1fr 220px;grid-gap:10px;gap:10px;align-items:flex-start;padding:8px 10px;background:#fffbea;border:1px solid #fde68a;border-radius:6px;font-size:12px}.constraint-row.closed{background:#f0fdf4;border-color:#bbf7d0;opacity:.85}.cr-status{padding-top:2px}.cr-check{width:18px;height:18px;border:1.5px solid var(--border-strong);border-radius:4px;background:#fff;display:grid;place-items:center;font-size:11px;color:#fff;cursor:pointer;transition:all .12s}.cr-check.on,.cr-check:hover{border-color:var(--green)}.cr-check.on{background:var(--green);color:#fff}.cr-body{min-width:0}.cr-itr{font-size:10.5px;font-weight:600;color:var(--text-2);text-transform:uppercase;letter-spacing:.3px;margin-bottom:3px}.cr-desc{font-size:12px;color:var(--text);white-space:pre-wrap;line-height:1.4}.constraint-row.closed .cr-desc{text-decoration:line-through;color:var(--text-2)}.cr-comment{margin-top:6px;width:100%;border:1px solid rgba(202,138,4,.3);border-radius:4px;padding:6px 8px;font-size:11.5px;background:hsla(0,0%,100%,.7);font-family:inherit;resize:vertical;color:var(--text)}.cr-comment:focus{outline:none;border-color:var(--accent);background:#fff}.cr-closed-meta{margin-top:4px;font-size:10px;color:var(--green);text-transform:uppercase;letter-spacing:.4px;font-weight:600}.cr-side{display:flex;flex-direction:column;gap:6px;align-items:flex-end}.cr-owner-row{display:flex;align-items:center;gap:6px;width:100%}.cr-owner-select{flex:1 1;height:26px!important;font-size:11.5px!important}.cr-actions{display:flex;gap:4px;width:100%;justify-content:flex-end}.site-tab{height:28px;padding:0 12px;border-radius:4px;font-size:12px;font-weight:500;border:none;white-space:nowrap}.site-tab:hover{background:rgba(0,0,0,.04);color:var(--text)}.site-tab.active{background:var(--surface);box-shadow:0 1px 2px rgba(0,0,0,.06)}.floorplan-container{height:calc(100vh - 220px);min-height:480px}.floorplan-stage{transition:opacity .3s}.floorplan-stage canvas{display:block;box-shadow:0 4px 18px rgba(15,23,42,.1)}.marker-layer{pointer-events:none}.asset-marker{position:absolute;width:14px;height:14px;border-radius:50%;border:2px solid #fff;box-shadow:0 1px 3px rgba(0,0,0,.3);transform:translate(-50%,-50%);cursor:pointer;padding:0;pointer-events:auto;transition:transform .12s,box-shadow .12s}.asset-marker:hover{transform:translate(-50%,-50%) scale(1.6);box-shadow:0 2px 8px rgba(0,0,0,.4),0 0 0 4px hsla(0,0%,100%,.5);z-index:10}.asset-marker.selected{transform:translate(-50%,-50%) scale(1.6);box-shadow:0 2px 8px rgba(0,0,0,.4),0 0 0 3px var(--accent);z-index:11}.floorplan-controls{position:absolute;bottom:12px;left:12px;display:flex;gap:4px;background:var(--surface);border:1px solid var(--border);border-radius:6px;box-shadow:var(--shadow-lg);align-items:center;padding:4px 10px 4px 4px}.floorplan-controls .btn{height:24px;width:28px;padding:0;font-size:14px;border:1px solid transparent}.legend-list{display:grid;grid-gap:4px;gap:4px;font-size:11.5px}.legend-row{display:flex;align-items:center;gap:8px}.legend-row .dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.legend-row .num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:600;color:var(--text-2)}.placeholder-row{display:flex;align-items:center;gap:8px;width:100%;padding:6px 12px;background:transparent;border:none;border-bottom:1px dashed var(--border);cursor:pointer;text-align:left}.placeholder-row:hover{background:var(--surface-2)}.placeholder-row .dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}.kv-mini{display:grid;grid-template-columns:70px 1fr;grid-gap:4px 10px;gap:4px 10px;font-size:11.5px}.kv-mini>:nth-child(odd){color:var(--text-3)}.site-controls{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:14px;padding:6px 8px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.site-tabs-group{display:flex;gap:2px;background:var(--bg-deep);border-radius:6px;padding:3px}.site-controls .site-tab{background:transparent}.site-controls .site-tab.active{background:var(--surface);box-shadow:0 1px 2px rgba(0,0,0,.06)}.floorplan-container{position:relative;width:100%;height:calc(100vh - 210px);min-height:520px;background:#f1f3f6;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none}.floorplan-stage{position:absolute;top:0;left:0;background:#fff;box-shadow:0 4px 18px rgba(15,23,42,.1);transition:width .2s,height .2s,transform .2s}.floorplan-stage iframe{width:100%;height:100%;display:block;border:none;pointer-events:none}.marker-layer{position:absolute;top:0;left:0}.floor-overlay{position:absolute;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px rgba(15,23,42,.14);font-size:12px;z-index:5;overflow:hidden}.floor-overlay.top-right{top:12px;right:12px;min-width:200px;max-width:240px}.floor-overlay.top-left{top:12px;left:12px}.floor-overlay.placeholder-panel{top:50px;left:12px;width:280px;z-index:6}.floor-overlay .overlay-head{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;background:var(--surface-2);border-bottom:1px solid var(--border)}.floor-overlay .overlay-body{padding:8px 12px}.floor-overlay .overlay-foot{padding:6px 12px;font-size:10px;border-top:1px dashed var(--border);background:var(--surface-2)}.floor-overlay .x-btn{width:18px;height:18px;background:transparent;border:none;color:var(--text-3);cursor:pointer;font-size:11px;padding:0}.floor-overlay .x-btn:hover{color:var(--text)}.floor-overlay.toggle-btn{height:28px;padding:0 10px;display:inline-flex;align-items:center;cursor:pointer;font-size:11px;font-weight:500;color:var(--text);border:1px solid var(--border-strong)}.floor-overlay.toggle-btn:hover{background:var(--surface-2)}.floor-overlay.toggle-btn.active{background:var(--accent);border-color:var(--accent);color:#1b2434;font-weight:600}.schematic-bg{position:absolute;inset:0;background:#fafbfc}.schematic-bg svg{display:block}.schematic-label{position:absolute;bottom:12px;right:12px;background:hsla(0,0%,100%,.9);padding:6px 10px;border-radius:4px;font-size:11px;font-weight:600;color:var(--text-2);letter-spacing:.5px;border:1px solid var(--border)}.asset-marker.labelled{width:12px;height:12px}.marker-label{position:absolute;top:100%;left:50%;transform:translateX(-50%);margin-top:3px;font-size:9px;font-weight:600;color:var(--text);background:hsla(0,0%,100%,.92);padding:1px 3px;border-radius:2px;white-space:nowrap;font-family:SF Mono,monospace;pointer-events:none}.floor-overlay.open-pdf-btn{bottom:12px;right:12px;top:auto;left:auto;padding:6px 12px;font-size:11px;font-weight:600;color:var(--text);text-decoration:none;display:inline-flex;align-items:center}.floor-overlay.open-pdf-btn:hover{background:var(--bg-deep)}.imported-issue{display:grid;grid-template-columns:80px 1fr 240px;grid-gap:14px;gap:14px;padding:10px 16px;border-bottom:1px solid var(--border);font-size:12px;background:var(--surface)}.imported-issue.orphan{background:linear-gradient(90deg,#fffbea 0,var(--surface) 80px)}.imported-issue.closed{opacity:.65}.imported-issue.closed .ii-title{text-decoration:line-through}.imported-issue .ii-side{display:flex;flex-direction:column;align-items:flex-start;gap:4px}.imported-issue .ii-body{min-width:0}.imported-issue .ii-title{font-weight:600;font-size:12.5px;margin-bottom:4px}.imported-issue .ii-desc{font-size:11.5px;color:var(--text-2);margin-bottom:4px;line-height:1.4}.imported-issue .ii-meta{display:flex;flex-wrap:wrap;gap:8px 14px;font-size:10.5px;color:var(--text-3)}.imported-issue .ii-meta code{background:var(--bg-deep);padding:1px 4px;border-radius:3px;font-size:10px}.imported-issue .ii-actions{display:flex;flex-direction:column;gap:6px}.detail-panel::-webkit-scrollbar,.import-log::-webkit-scrollbar,.main::-webkit-scrollbar,.table-wrap::-webkit-scrollbar{width:10px;height:10px}.detail-panel::-webkit-scrollbar-thumb,.main::-webkit-scrollbar-thumb,.table-wrap::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:5px;border:2px solid var(--bg)}.import-log::-webkit-scrollbar-thumb{background:#334155;border-radius:5px}.wp-body{display:grid;grid-gap:14px;gap:14px;padding:14px 16px}.wp-mini-kpis{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:10px;gap:10px;padding-bottom:10px;border-bottom:1px solid var(--border)}.wp-mini-kpi{text-align:left}.wp-mini-kpi-v{font-size:22px;font-weight:700;letter-spacing:-.4px;line-height:1.1;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.wp-mini-kpi-l{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-3);margin-top:2px}.wp-grid{display:grid;grid-template-columns:minmax(260px,1.4fr) minmax(220px,1fr) minmax(220px,1fr);grid-gap:18px;gap:18px}@media (max-width:1200px){.wp-grid{grid-template-columns:1fr}}.wp-section-h{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--text-3);margin-bottom:8px}.wp-bars{display:grid;grid-gap:5px;gap:5px}.wp-bar-row{display:grid;grid-template-columns:100px 1fr 28px;align-items:center;grid-gap:8px;gap:8px;font-size:11px}.wp-bar-label{display:inline-block;padding:2px 6px;border-radius:10px;font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.35px;border:1px solid;text-align:center;white-space:nowrap}.wp-bar-track{height:8px;background:var(--bg-deep);border-radius:4px;overflow:hidden}.wp-bar-fill{height:100%;border-radius:4px;transition:width .3s}.wp-bar-n{font-size:11px;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-align:right;color:var(--text)}.wp-days{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:4px;gap:4px;height:110px}.wp-day{display:flex;flex-direction:column;justify-content:flex-end;gap:4px;text-align:center}.wp-day-bar-wrap{flex:1 1;align-items:flex-end}.wp-day-bar,.wp-day-bar-wrap{display:flex;justify-content:center}.wp-day-bar{width:100%;background:linear-gradient(180deg,#2563eb,#1e40af);border-radius:3px 3px 0 0;align-items:flex-start;padding-top:4px;transition:height .3s;min-height:3px}.wp-day-bar-n{font-size:10px;font-weight:700;color:#fff;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.wp-day-label{font-size:10px;color:var(--text-3);line-height:1.2}.wp-day-label strong{color:var(--text);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.wp-area-list{display:grid;grid-gap:5px;gap:5px}.wp-area-row{display:grid;grid-template-columns:100px 1fr 28px;align-items:center;grid-gap:8px;gap:8px;font-size:11px}.wp-area-label{color:var(--text-2);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wp-area-bar-track{height:8px;background:var(--bg-deep);border-radius:4px;overflow:hidden}.wp-area-bar{height:100%;background:linear-gradient(90deg,#0ea5a5,#14b8a6);border-radius:4px}.wp-area-n{font-size:11px;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-align:right;color:var(--text)}.planner{display:grid;grid-gap:14px;gap:14px}.planner-kpi-row{display:grid;grid-template-columns:repeat(6,1fr);grid-gap:10px;gap:10px}@media (max-width:1280px){.planner-kpi-row{grid-template-columns:repeat(3,1fr)}}.planner-toolbar{display:flex;align-items:center;gap:14px;padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);flex-wrap:wrap}.planner-week-nav{display:flex;align-items:center;gap:4px}.planner-week-nav .btn.ghost{width:28px;height:28px;padding:0;display:grid;place-items:center;color:var(--text-2);border:1px solid var(--border);border-radius:6px}.planner-week-nav .btn.ghost:hover{color:var(--text);background:var(--surface-2)}.planner-week-label{padding:0 10px;font-size:13px;display:flex;gap:6px;align-items:baseline;min-width:240px}.planner-week-label strong{font-weight:700;letter-spacing:.2px;color:var(--text)}.planner-week-label .muted{color:var(--text-3);font-size:12px}.planner-view-toggle{display:flex;gap:2px;background:var(--bg-deep);border:1px solid var(--border);border-radius:6px;padding:3px}.planner-view-toggle .site-tab{background:transparent;height:24px;padding:0 14px;font-size:11px}.planner-view-toggle .site-tab.active{background:var(--surface);box-shadow:0 1px 2px rgba(0,0,0,.06);color:var(--text)}.planner-actions{margin-left:auto;display:flex;align-items:center;gap:10px}.planner-mini-toggle{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--text-2);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.planner-mini-toggle input{margin:0;cursor:pointer}.planner-filter-row{display:grid;grid-gap:8px;gap:8px;padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow)}.planner-filter-group{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.planner-filter-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--text-3);margin-right:4px;min-width:56px}.planner-chip{display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 9px;border:1px solid var(--border-strong);background:var(--surface);border-radius:12px;font-size:11px;font-weight:500;color:var(--text-2);cursor:pointer;transition:background .12s,border-color .12s,color .12s;white-space:nowrap}.planner-chip:hover{background:var(--surface-2);color:var(--text)}.planner-chip.active{font-weight:600}.planner-chip.all.active{background:var(--header);border-color:var(--header);color:#fff}.planner-chip-count{display:inline-block;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:10px;color:var(--text-3);font-weight:600;padding:0 5px;background:var(--bg-deep);border-radius:8px;min-width:18px;text-align:center}.planner-chip.active .planner-chip-count{background:rgba(0,0,0,.08);color:inherit}.planner-chip.all.active .planner-chip-count{background:hsla(0,0%,100%,.15);color:#fff}.planner-week-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:8px;gap:8px}.planner-day-col{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);min-height:360px;display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow)}.planner-day-col.today{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),var(--shadow)}.planner-day-col.past{background:#fafafa}.planner-day-col.past .planner-day-num{color:var(--text-3)}.planner-day-head{display:flex;align-items:center;gap:6px;padding:8px 10px;border-bottom:1px solid var(--border);background:linear-gradient(180deg,var(--surface) 0,var(--surface-2) 100%)}.planner-day-col.today .planner-day-head{background:linear-gradient(180deg,#fffbea,#fef3c7)}.planner-day-head-btn{flex:1 1;display:flex;align-items:baseline;gap:6px;padding:0;background:transparent;border:none;cursor:pointer;text-align:left}.planner-day-head-btn:hover .planner-day-num{color:var(--accent)}.planner-day-name{font-size:10px;font-weight:700;letter-spacing:.8px;color:var(--text-3)}.planner-day-num{font-size:17px;font-weight:700;color:var(--text);letter-spacing:-.4px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.planner-day-count{font-size:10px;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;background:var(--bg-deep);color:var(--text-2);padding:1px 6px;border-radius:8px;min-width:18px;text-align:center}.planner-day-add{width:22px;height:22px;display:grid;place-items:center;border:1px dashed var(--border-strong);border-radius:5px;background:transparent;color:var(--text-3);cursor:pointer}.planner-day-add:hover{border-style:solid;border-color:var(--accent);color:var(--accent);background:#fffbea}.planner-day-body{padding:6px;display:flex;flex-direction:column;gap:4px;flex:1 1;overflow-y:auto}.planner-day-empty{color:var(--text-3);font-size:11px;text-align:center;padding:12px 0}.planner-task-pill{display:block;width:100%;text-align:left;padding:5px 7px 5px 9px;border:1px solid transparent;border-left-width:3px;border-radius:4px;cursor:pointer;font-size:11px;line-height:1.35;background:var(--surface-2);transition:filter .12s,transform .12s}.planner-task-pill:hover{filter:brightness(.97);transform:translateX(1px)}.planner-task-pill.complete{opacity:.55;text-decoration:line-through}.planner-task-pill-type{display:flex;align-items:center;gap:4px;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;margin-bottom:1px}.planner-task-pill-auto-dot{font-size:9px;color:#4f46e5;margin-left:1px}.planner-task-pill-pct{margin-left:auto;font-size:9px;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:0;text-transform:none;color:var(--text-2)}.planner-task-pill.auto{border-style:solid}.planner-task-pill-asset{display:block;font-weight:600;font-family:SF Mono,Menlo,Consolas,monospace;font-size:10.5px;word-break:break-all}.planner-task-pill-desc{display:block;font-size:10px;color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.planner-day-area-head{display:flex;align-items:center;justify-content:space-between;padding:7px 16px;background:var(--surface-2);border-top:1px solid var(--border);border-bottom:1px solid var(--border);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--text-2)}.planner-day-area-count{background:var(--bg-deep);color:var(--text);padding:1px 7px;border-radius:8px;font-size:10px;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:0}.planner-day-list{display:flex;flex-direction:column}.planner-day-row{display:grid;grid-template-columns:100px minmax(220px,2.4fr) minmax(140px,1fr) minmax(160px,1.4fr) auto;align-items:center;grid-gap:14px;gap:14px;padding:10px 16px;background:var(--surface);border:none;border-bottom:1px solid var(--border);cursor:pointer;text-align:left;width:100%}.planner-day-row:last-child{border-bottom:none}.planner-day-row:hover{background:var(--surface-2)}.planner-day-row.complete{opacity:.55}.planner-day-row.complete .planner-day-row-asset .id-cell{text-decoration:line-through}.planner-day-row.cancelled{opacity:.55;background:#fff7f7}.planner-day-row.cancelled .planner-day-row-asset .id-cell{text-decoration:line-through}.planner-day-row.overdue{background:#fef6f6;cursor:default}.planner-day-row.overdue:hover{background:#fef2f2}.planner-day-row-actions{display:flex;gap:4px;align-items:center}.planner-row-act{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 8px;border:1px solid var(--border-strong);background:var(--surface);border-radius:5px;font-size:11px;font-weight:500;color:var(--text-2);cursor:pointer;white-space:nowrap;transition:background .12s,border-color .12s,color .12s}.planner-row-act:hover{background:var(--surface-2)}.planner-row-act .act-label{display:inline-block}.planner-row-act.complete:hover{background:#dcfce7;border-color:#86efac;color:#065f46}.planner-row-act.cancel:hover{background:#fee2e2;border-color:#fca5a5;color:#991b1b}.planner-row-act.reschedule:hover{background:#fef3c7;border-color:#fcd34d;color:#78350f}@media (max-width:1400px){.planner-row-act .act-label{display:none}.planner-row-act{padding:0 6px}}.planner-month-grid-wrap{padding:0}.planner-month-weekdays{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-bottom:1px solid var(--border);background:var(--surface-2)}.planner-month-wd{padding:8px 12px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--text-3);border-right:1px solid var(--border)}.planner-month-wd:last-child{border-right:none}.planner-month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-auto-rows:minmax(94px,1fr)}.planner-month-cell{position:relative;display:flex;flex-direction:column;gap:6px;padding:8px 8px 10px;border-right:1px solid var(--border);border-bottom:1px solid var(--border);background:var(--surface);cursor:pointer;text-align:left;font:inherit;color:inherit;transition:background .1s}.planner-month-cell:nth-child(7n){border-right:none}.planner-month-cell:hover{background:var(--surface-2)}.planner-month-cell.out{background:#fafbfc;color:var(--text-3)}.planner-month-cell.weekend{background:#fafbfc}.planner-month-cell.weekend.out{background:#f4f5f7}.planner-month-cell.today{background:#fffbea;box-shadow:inset 0 0 0 2px var(--accent)}.planner-month-cell-head{display:flex;align-items:center;justify-content:space-between;gap:4px}.planner-month-cell-day{font-size:13px;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:-.2px;color:var(--text)}.planner-month-cell.out .planner-month-cell-day{color:var(--text-3)}.planner-month-cell-count{font-size:10px;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;padding:1px 6px;background:var(--header);color:#fff;border-radius:9px}.planner-month-cell.today .planner-month-cell-count{background:var(--accent);color:var(--header)}.planner-month-cell-dots{display:flex;gap:3px;flex-wrap:wrap}.planner-month-cell-dot{position:relative;width:16px;height:16px;border-radius:3px;display:inline-grid;place-items:center}.planner-month-cell-dot-n{font-size:9px;font-weight:700;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.35);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;line-height:1}.planner-month-cell-dot.more{font-size:10px;font-weight:700;color:var(--text-2);background:var(--bg-deep);width:auto;padding:0 5px}.planner-month-legend{display:flex;flex-wrap:wrap;gap:12px 14px;padding:10px 14px;border-top:1px solid var(--border);background:var(--surface-2)}.planner-month-legend-item{display:inline-flex;align-items:center;gap:6px;font-size:10.5px;color:var(--text-2)}.planner-month-legend-swatch{width:10px;height:10px;border-radius:2px}.planner-day-row-type{display:inline-block;padding:3px 8px;border-radius:11px;font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;border:1px solid;text-align:center;white-space:nowrap}.planner-day-row-asset{min-width:0}.planner-day-row-owner{font-size:11.5px}.planner-day-row-notes,.planner-day-row-owner{color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.planner-day-row-notes{font-size:11px}@media (max-width:1100px){.planner-week-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.planner-day-col{min-height:220px}}@media (max-width:900px){.app{grid-template-columns:1fr;grid-template-rows:auto 1fr;grid-template-areas:"topbar" "main";height:100dvh;height:100vh}.hamburger{display:inline-flex}.topbar{position:relative;z-index:60;padding:0 8px;min-height:56px;height:56px;flex-wrap:nowrap}.topbar,.topbar .brand{gap:8px;overflow:hidden}.topbar .brand{border-right:0;padding-right:0;margin-right:0;min-width:0;flex-shrink:1}.topbar .brand>div{min-width:0}.topbar .brand>div,.topbar .brand>div>div:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar .brand>div>div:first-child{font-size:13px}.topbar .brand>div>div:nth-child(2),.topbar .crumbs{display:none}.topbar .search{width:140px;flex-shrink:1;min-width:0}.sidebar{position:fixed;top:56px;left:0;bottom:0;width:280px;max-width:82vw;z-index:200;transform:translateX(-100%);transition:transform .25s ease;box-shadow:4px 0 18px rgba(0,0,0,.28);padding-bottom:env(safe-area-inset-bottom,0);pointer-events:none;visibility:hidden}.sidebar.open{transform:translateX(0);pointer-events:auto;visibility:visible}.sidebar .nav-item{padding:14px 18px;font-size:14px;min-height:50px;cursor:pointer;-webkit-tap-highlight-color:rgba(255,255,255,.1);touch-action:manipulation}.sidebar .nav-item:active{background:rgba(242,183,5,.18)}.sidebar .section-label{padding:16px 18px 8px;font-size:11px}.mobile-nav-backdrop{z-index:150;inset:56px 0 0 min(280px,82vw)}.app.nav-open .mobile-nav-backdrop{display:block;opacity:1;pointer-events:auto}.main{padding:14px 14px 28px;grid-area:main}.page-head h1{font-size:17px}.page-head p{font-size:12px}.detail-panel{width:100%!important;max-width:100%}.detail-panel .head{padding:12px 14px}.detail-panel .body{padding:14px}.detail-panel h4{margin-top:18px}.detail-panel .body>div[style*="grid-template-columns: 1fr 1fr"]{grid-template-columns:1fr!important}.filters{gap:8px}.filters .filter button{height:36px;min-height:36px}.filters input[type=search],.filters>input[placeholder^=Search]{width:100%!important;height:38px!important}.table-wrap{-webkit-overflow-scrolling:touch}.edit-input{height:36px;font-size:13px}select.edit-input{background-position:right 10px center;padding-right:26px}}@media (max-width:560px){.topbar{padding:0 6px;gap:6px}.topbar .brand>div,.topbar .search{display:none}.topbar .spacer{flex:1 1}}@media (max-width:900px){.supabase-status-sub{display:none}.supabase-status-text{line-height:1.1}.supabase-refresh-label{display:none}.supabase-refresh-btn{padding:0 8px!important}}@media (max-width:560px){.supabase-status-pill{padding:4px 8px!important;border-radius:12px!important}.supabase-status-text span:first-child{font-size:10px!important}}:root{--bg:#f7f8fa;--surface:#fff;--surface-2:#f1f3f6;--border:#e5e7eb;--border-strong:#cbd5e1;--text:#1b2434;--text-2:#475569;--text-3:#94a3b8;--accent:#f2b705;--accent-2:#1f8a5b;--danger:#ef4444;--warn:#f59e0b;--info:#3b82f6;--nav-bg:#1b2434;--nav-fg:hsla(0,0%,100%,.78);--lagan:#dc2626;--griffdon:#ea580c;--gts:#0ea5a5}*{box-sizing:border-box}#root,body,html{height:100%;margin:0}body{font-family:Segoe UI,-apple-system,BlinkMacSystemFont,Helvetica Neue,Arial,sans-serif;font-size:13px;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}.app{display:grid;grid-template-columns:220px 1fr;grid-template-rows:48px 1fr;grid-template-areas:"top top" "nav main";height:100vh}.topbar{grid-area:top;color:#fff;align-items:center;gap:12px;padding:0 14px}.sidebar,.topbar{background:var(--nav-bg);display:flex}.sidebar{grid-area:nav;color:var(--nav-fg);padding:14px 8px;overflow-y:auto;flex-direction:column}.main{grid-area:main;overflow:auto;padding:18px 22px}.brand{display:flex;align-items:center;gap:10px;font-weight:600;font-size:13px}.brand-mark{width:28px;height:28px;border-radius:6px;background:var(--accent);color:#1b2434;display:grid;place-items:center;font-weight:800}.crumbs{display:flex;gap:6px;font-size:11px;color:hsla(0,0%,100%,.55);align-items:center}.crumbs strong{color:#fff;font-weight:500}.spacer{flex:1 1}.search{height:28px;padding:0 10px;min-width:240px;border:1px solid hsla(0,0%,100%,.15);background:hsla(0,0%,100%,.08);color:#fff;border-radius:4px;font-size:12px;outline:none}.search::placeholder{color:hsla(0,0%,100%,.45)}.section-label{font-size:9.5px;text-transform:uppercase;letter-spacing:.6px;color:hsla(0,0%,100%,.4);padding:14px 10px 6px}.nav-item{display:flex;align-items:center;gap:9px;width:100%;padding:7px 10px;border:0;background:transparent;color:var(--nav-fg);font-size:12.5px;text-align:left;border-radius:4px;cursor:pointer;font-family:inherit}.nav-item:hover{background:hsla(0,0%,100%,.06);color:#fff}.nav-item.active{background:hsla(0,0%,100%,.1);color:#fff}.nav-icon{width:16px;display:grid;place-items:center;color:hsla(0,0%,100%,.65)}.nav-item .num{margin-left:auto;font-size:10.5px;color:hsla(0,0%,100%,.55)}.nav-item .num.hot{color:var(--accent);font-weight:700}.footer{margin-top:auto;padding:14px 10px;font-size:10.5px;color:hsla(0,0%,100%,.5);line-height:1.5}.user-chip{display:inline-flex;align-items:center;gap:8px;height:28px;padding:0 10px;background:hsla(0,0%,100%,.08);border:1px solid hsla(0,0%,100%,.12);border-radius:4px;color:#fff;font-size:11.5px}.user-chip .av{width:20px;height:20px;border-radius:50%;background:var(--accent);color:#1b2434;display:grid;place-items:center;font-size:10px;font-weight:700}.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:14px}.page-head h1{margin:0 0 4px;font-size:18px;font-weight:600}.page-head p{margin:0;color:var(--text-2);font-size:12.5px;max-width:760px;line-height:1.5}.actions{display:flex;gap:8px;flex-wrap:wrap;flex-shrink:0;justify-content:flex-end}.actions .btn{white-space:nowrap}.btn{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;background:#fff;color:var(--text);border:1px solid var(--border-strong);border-radius:4px;font-size:12px;font-weight:500;cursor:pointer;font-family:inherit}.btn:hover{background:var(--surface-2)}.btn.primary{background:#1b2434;color:#fff;border-color:#1b2434}.btn.accent{background:var(--accent);color:#1b2434;border-color:var(--accent);font-weight:600}.btn.ghost{background:transparent;border-color:transparent;color:var(--text-2)}.btn.sm{height:26px;padding:0 10px;font-size:11.5px}.card{background:#fff;border:1px solid var(--border);border-radius:6px;margin-bottom:14px}.card-head{justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--border);font-size:12px;font-weight:600;gap:12px}.card-head,.card-head .title{display:flex;align-items:center}.card-head .title{gap:10px}.card-body{padding:14px}.kpi-row{display:grid;grid-gap:10px;gap:10px;grid-template-columns:repeat(5,1fr);margin-bottom:14px}.kpi{background:#fff;border:1px solid var(--border);border-radius:6px;padding:12px 14px;position:relative;overflow:hidden}.kpi .label{font-size:10.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-3);font-weight:600}.kpi .value{font-size:24px;font-weight:600;margin-top:4px;letter-spacing:-.5px}.kpi .sub{font-size:11px;color:var(--text-2);margin-top:2px}.kpi .strip{position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--accent)}.site-tab{border:0;background:transparent;padding:8px 14px;font-size:12.5px;color:var(--text-2);cursor:pointer;border-bottom:2px solid transparent;font-family:inherit}.site-tab.active{color:var(--text);border-bottom-color:var(--accent);font-weight:600}.tab-row{display:flex;gap:2px;border-bottom:1px solid var(--border);margin-bottom:14px;padding-left:6px}.empty{display:flex;align-items:center;justify-content:center;gap:10px;padding:48px 16px;color:var(--text-3);font-size:12.5px}.spinner{width:14px;height:14px;border-radius:50%;border:2px solid rgba(0,0,0,.12);border-top:2px solid var(--text);animation:spin .8s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(1turn)}}table.data{width:100%;border-collapse:collapse;font-size:12px}table.data thead th{background:var(--surface-2);color:var(--text-2);font-size:10.5px;font-weight:600;letter-spacing:.4px;text-transform:uppercase;padding:8px 10px;text-align:left;border-bottom:1px solid var(--border);position:-webkit-sticky;position:sticky;top:0;z-index:1}table.data tbody td{padding:7px 10px;border-bottom:1px solid var(--border);vertical-align:middle}table.data tbody tr:hover{background:#fafbfc}table.data tbody tr.selected{background:#fff8e1}.cell-input,.cell-select{width:100%;height:26px;padding:0 6px;border:1px solid transparent;background:transparent;border-radius:3px;font-size:12px;font-family:inherit;color:var(--text);outline:none}.cell-input:hover,.cell-select:hover{border-color:var(--border);background:#fff}.cell-input:focus,.cell-select:focus{border-color:var(--accent);background:#fffef6}.editable-bg{background:#fffceb}.editable-bg .cell-input,.editable-bg .cell-select{background:transparent}.editable-bg .cell-input:hover,.editable-bg .cell-select:hover{background:#fff}.derived-bg{background:#f0f9f4}.derived-bg .cell-input{background:transparent;color:var(--text-2)}.actual-bg{background:#f2f0ff}.co-chip{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;padding:2px 7px;border-radius:3px;letter-spacing:.2px}.co-chip .dot{width:6px;height:6px;border-radius:50%}.co-chip.lagan{background:#fee2e2;color:#991b1b}.co-chip.lagan .dot{background:var(--lagan)}.co-chip.griffdon{background:#ffedd5;color:#9a3412}.co-chip.griffdon .dot{background:var(--griffdon)}.co-chip.gts{background:#ccfbf1;color:#115e59}.co-chip.gts .dot{background:var(--gts)}.mps,.mps-trigger{position:relative;width:100%}.mps-trigger{min-height:26px;display:flex;align-items:center;gap:6px;padding:2px 22px 2px 6px;background:transparent;border:1px solid transparent;border-radius:4px;font:inherit;color:var(--text);cursor:pointer;text-align:left}.mps-trigger:hover{background:#fff;border-color:var(--border)}.mps-trigger.open{background:#fff;border-color:var(--accent);box-shadow:0 0 0 2px rgba(242,183,5,.18)}.mps-placeholder{color:var(--text-3);font-size:11.5px;font-style:italic}.mps-chips{flex-wrap:wrap;gap:3px;min-width:0}.mps-chips,.mps-count{display:inline-flex;align-items:center}.mps-count{justify-content:center;height:16px;min-width:22px;padding:0 5px;background:var(--accent);color:#1b2434;border-radius:8px;font-size:9.5px;font-weight:700;letter-spacing:.3px}.mps-caret{position:absolute;right:6px;top:50%;transform:translateY(-50%);color:var(--text-3);font-size:9px;pointer-events:none}.mps-pop{position:absolute;top:calc(100% + 4px);left:0;z-index:50;min-width:240px;max-width:320px;max-height:360px;background:#fff;border:1px solid var(--border-strong);border-radius:6px;box-shadow:0 8px 24px rgba(15,23,42,.18);display:flex;flex-direction:column}.mps-pop-head{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;border-bottom:1px solid var(--border);background:#f8fafc}.mps-clear{background:transparent;border:0;color:#dc2626;font-size:11px;font-weight:600;cursor:pointer;padding:2px 6px}.mps-clear:hover{text-decoration:underline}.mps-pop-body{overflow:auto;padding:4px 0;flex:1 1}.mps-group{padding:4px 0}.mps-group+.mps-group{border-top:1px solid var(--border)}.mps-group-label{display:flex;align-items:center;gap:6px;padding:4px 10px;font-size:9.5px;letter-spacing:.5px;text-transform:uppercase;font-weight:700;color:var(--text-3)}.mps-group-label .dot{width:6px;height:6px;border-radius:50%}.mps-option{display:flex;align-items:center;gap:8px;padding:4px 10px;cursor:pointer;font-size:12px}.mps-option:hover{background:#f1f5f9}.mps-option.on{background:#fffbeb}.mps-option input[type=checkbox]{margin:0;cursor:pointer}.mps-opt-id{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:600;min-width:28px}.mps-opt-co{margin-left:auto}.status-chip{display:inline-block;padding:2px 7px;border-radius:3px;font-size:10.5px;font-weight:600;letter-spacing:.3px;text-transform:uppercase}.status-chip.pending{background:#e5e7eb;color:#475569}.status-chip.progress{background:#fef3c7;color:#92400e}.status-chip.complete{background:#dcfce7;color:#166534}.status-chip.hold{background:#fee2e2;color:#991b1b}.pri-chip{display:inline-block;padding:1px 6px;border-radius:3px;font-size:10px;font-weight:700;letter-spacing:.3px;background:#1b2434;color:#fff}.pri-chip.p1{background:#dc2626}.pri-chip.p2{background:#ea580c}.pri-chip.p3{background:#f59e0b;color:#1b2434}.pri-chip.p4{background:#475569}.pri-chip.p5{background:#94a3b8}.filter-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;background:#fff;border:1px solid var(--border);border-radius:6px;padding:10px 12px;margin-bottom:12px}.filter-bar input,.filter-bar select{height:28px;padding:0 8px;border:1px solid var(--border-strong);border-radius:4px;background:#fff;font-size:12px;color:var(--text);font-family:inherit;outline:none}.filter-bar input:focus,.filter-bar select:focus{border-color:var(--accent)}.filter-bar .label{font-size:11px;color:var(--text-3);text-transform:uppercase;letter-spacing:.4px;font-weight:600}.gantt-shell{background:#fff;border:1px solid var(--border);border-radius:6px;overflow:hidden}.gantt-scroll{overflow:auto;max-height:calc(100vh - 280px)}.gantt-grid{display:grid;font-size:11.5px}.gantt-corner{left:0;z-index:4;padding:6px 10px;font-weight:600;font-size:10.5px;text-transform:uppercase;letter-spacing:.4px}.gantt-corner,.gantt-day-head{position:-webkit-sticky;position:sticky;top:0;background:var(--surface-2);border-bottom:1px solid var(--border);border-right:1px solid var(--border);color:var(--text-2)}.gantt-day-head{z-index:2;font-size:10px;text-align:center;padding:4px 0}.gantt-day-head.weekend{background:#eceef1;color:var(--text-3)}.gantt-day-head.month-start{border-left:2px solid var(--border-strong)}.gantt-row-head{position:-webkit-sticky;position:sticky;left:0;z-index:3;border-right:1px solid var(--border);padding:6px 10px;font-size:11.5px;color:var(--text);display:flex;align-items:center;gap:8px}.gantt-cell,.gantt-row-head{background:#fff;border-bottom:1px solid var(--border);min-height:30px}.gantt-cell{border-right:1px solid #f1f3f6;position:relative}.gantt-cell.weekend{background:#fafbfc}.gantt-bar{position:absolute;top:5px;bottom:5px;left:1px;right:1px;background:var(--info);border-radius:3px;display:flex;align-items:center;padding:0 6px;font-size:10.5px;color:#fff;font-weight:600;white-space:nowrap;overflow:hidden;cursor:pointer;box-shadow:0 1px 2px rgba(0,0,0,.08)}.gantt-bar:hover{filter:brightness(1.05)}.gantt-bar.complete{background:#16a34a!important}.gantt-bar.progress{background:#f59e0b!important;color:#1b2434}.gantt-bar.hold{background:#ef4444!important}.gantt-row-head .row-title{font-weight:500;flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gantt-row-head .row-meta{font-size:10px;color:var(--text-3)}.gantt-zone-band{grid-column:1/-1;background:linear-gradient(90deg,#f1f3f6,#fff);border-bottom:1px solid var(--border);padding:6px 12px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;position:-webkit-sticky;position:sticky;left:0}.gantt-zone-band,.legend{font-size:11px;color:var(--text-2)}.legend{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.legend .item{display:inline-flex;align-items:center;gap:5px}.legend .sw{width:12px;height:12px;border-radius:2px}.drawer-overlay{position:fixed;inset:0;background:rgba(15,23,42,.35);z-index:50;display:flex;justify-content:flex-end}.drawer{background:#fff;width:460px;height:100vh;box-shadow:-8px 0 24px rgba(15,23,42,.15);display:flex;flex-direction:column;animation:slidein .2s ease-out}@keyframes slidein{0%{transform:translateX(20px);opacity:0}to{transform:translateX(0);opacity:1}}.drawer-head{padding:14px 18px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.drawer-head h3{margin:0;font-size:14px;font-weight:600}.drawer-head .sub{font-size:11.5px;color:var(--text-3);margin-top:2px;font-family:SF Mono,Menlo,monospace}.drawer-body{padding:14px 18px;overflow:auto;flex:1 1}.drawer-row{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--border);font-size:12px}.drawer-row .k{color:var(--text-2)}.drawer-row .v{color:var(--text);font-weight:500;text-align:right}.close-x{background:transparent;border:0;font-size:18px;color:var(--text-3);cursor:pointer;padding:0;width:24px;height:24px;display:grid;place-items:center;border-radius:4px}.close-x:hover{color:var(--text)}.bar-track,.close-x:hover{background:var(--surface-2)}.bar-track{height:8px;border-radius:4px;overflow:hidden}.bar-fill{height:100%;border-radius:4px}.mono{font-family:SF Mono,Menlo,Consolas,monospace}.txt-r{text-align:right}.txt-c{text-align:center}.small{font-size:11px}.note,.small{color:var(--text-2)}.note{font-size:11.5px}.divider{height:1px;background:var(--border);margin:14px 0}.amber-head{background:#fef3c7!important;color:#92400e!important}.green-head{background:#dcfce7!important;color:#166534!important}.purple-head{background:#ede9fe!important;color:#5b21b6!important}.split-grid{display:grid;grid-template-columns:2fr 1fr;grid-gap:12px;gap:12px}@media (max-width:1100px){.split-grid{grid-template-columns:1fr}.kpi-row{grid-template-columns:repeat(3,1fr)}}.hamburger{display:none;width:36px;height:36px;background:transparent;border:0;cursor:pointer;padding:8px;margin-right:4px;flex-direction:column;justify-content:space-between}.hamburger span{display:block;height:2px;width:100%;background:#fff;border-radius:1px;transition:transform .2s ease,opacity .2s ease}.sidebar-scrim{display:none}@media (max-width:1024px){.app{grid-template-columns:1fr;grid-template-rows:52px 1fr;grid-template-areas:"top" "main"}.hamburger{display:flex}.topbar{padding:0 10px;gap:8px}.sidebar{position:fixed;top:52px;left:0;bottom:0;width:260px;max-width:80vw;z-index:60;transform:translateX(-100%);transition:transform .22s ease;box-shadow:0 12px 32px rgba(0,0,0,.25)}.sidebar-scrim{display:block;position:fixed;inset:52px 0 0 0;background:rgba(15,23,42,.45);z-index:55;opacity:0;pointer-events:none;transition:opacity .2s ease}.app.sidebar-open .sidebar{transform:translateX(0)}.app.sidebar-open .sidebar-scrim{opacity:1;pointer-events:auto}.app.sidebar-open .hamburger span:first-child{transform:translateY(7px) rotate(45deg)}.app.sidebar-open .hamburger span:nth-child(2){opacity:0}.app.sidebar-open .hamburger span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.crumbs{display:none}.search{min-width:0;flex:1 1;max-width:260px}.user-chip span:not(.av){display:none}.user-chip{padding:0 6px}.main{padding:14px 14px 60px}.kpi-row{grid-template-columns:repeat(3,1fr);gap:8px}.kpi .value{font-size:18px}.kpi .label{font-size:9.5px}.kpi .sub{font-size:10px}.page-head{flex-direction:column;align-items:stretch;gap:10px}.page-head h1{font-size:17px}.actions{justify-content:flex-start}.actions .btn{flex:0 0 auto}.tab-row{overflow-x:auto;-webkit-overflow-scrolling:touch;flex-wrap:nowrap;scrollbar-width:thin}.tab-row::-webkit-scrollbar{height:4px}.site-tab{white-space:nowrap;flex-shrink:0}.filter-bar{padding:8px 10px;gap:6px}.filter-bar input,.filter-bar select{height:32px;font-size:13px}.filter-bar .label{display:none}.filter-bar input[placeholder]{min-width:0;flex:1 1 100%}.card{overflow-x:auto;-webkit-overflow-scrolling:touch}.card table.data{min-width:720px}.drawer{width:100vw!important;max-width:100vw;box-shadow:none}.drawer-overlay{padding:0}.btn{height:36px;padding:0 14px;font-size:13px}.btn.sm{height:28px;padding:0 10px;font-size:12px}.cell-input,.cell-select{min-height:32px;font-size:12.5px}.report-cover .rcov-kpis{grid-template-columns:repeat(3,1fr)!important}.report-cover .rcov-header{gap:10px}.report-cover .rcov-title h1{font-size:18px}.report-cover .rcov-window{flex-wrap:wrap;gap:10px}.gantt-scroll{max-height:calc(100vh - 320px)}}@media (max-width:640px){.topbar .brand div:first-child{font-size:12px}.search,.topbar .brand div:nth-child(2)>div:nth-child(2){display:none}.topbar .user-chip .av{width:26px;height:26px;font-size:11px}.main{padding:12px 10px 80px}.kpi-row{grid-template-columns:repeat(2,1fr)}.kpi{padding:10px 12px}.kpi .value{font-size:16px}.card-head{flex-direction:column;align-items:flex-start;gap:4px;padding:10px 12px}.card-head .title{font-size:13px}.filter-bar{padding:8px}.filter-bar input,.filter-bar select{flex-grow:1;flex-shrink:1;flex-basis:calc(50% - 6px);min-width:0}.filter-bar input[placeholder]{flex:1 1 100%}.drawer-overlay .card{width:100vw!important;max-width:100vw!important;height:100vh;border-radius:0;display:flex;flex-direction:column}.drawer-overlay .card .card-body{flex:1 1;overflow:auto}.company-grid{grid-template-columns:1fr!important}.report-section{padding:14px 16px}.report-cover .rcov-kpis{grid-template-columns:repeat(2,1fr)!important}.report-cover .rcov-mark{width:44px;height:44px;font-size:13px}.report-cover .rcov-title h1{font-size:16px}.card table.data{min-width:600px;font-size:11.5px}.nav-item{padding:11px 10px;font-size:14px}.nav-icon{width:18px}.site-tab{padding:12px 14px;font-size:12.5px}.co-chip,.pri-chip,.status-chip{font-size:10.5px}}@media (pointer:coarse){.card,.gantt-scroll,.tab-row{-webkit-overflow-scrolling:touch}input,select,textarea{font-size:16px!important}.cell-input,.cell-select,.filter-bar input,.filter-bar select{font-size:14px!important}}@media print{@page{size:A3 landscape;margin:10mm}#root,body,html{height:auto;overflow:visible;background:#fff}.no-print,.no-print *{display:none!important}.app{display:block;height:auto}.main{overflow:visible;padding:0}.card{box-shadow:none;break-inside:avoid;page-break-inside:avoid}table.data thead{display:table-header-group}table.data tfoot{display:table-footer-group}table.data thead th{position:static!important;background:#1b2434!important;color:#fff!important;-webkit-print-color-adjust:exact;print-color-adjust:exact;font-size:9.5px!important;padding:4px 6px!important}table.data tbody tr{break-inside:avoid;page-break-inside:avoid}table.data tbody td{font-size:10px!important;padding:3px 6px!important}.card>div[style*=max-height],.card>div[style*=overflow],.gantt-scroll{max-height:none!important;overflow:visible!important}.actions,.drawer-overlay,.filter-bar,.tab-row{display:none!important}.kpi-row{grid-template-columns:repeat(5,1fr)!important;gap:6px!important;margin-bottom:8px!important}.kpi{padding:8px 10px!important}.kpi .value{font-size:20px!important}.co-chip,.gantt-bar,.pri-chip,.status-chip{-webkit-print-color-adjust:exact;print-color-adjust:exact}.view-host[data-active-view]{page-break-before:avoid;break-before:avoid}.print-header{display:block!important;margin-bottom:8px;padding-bottom:6px;border-bottom:2px solid #1b2434}body[data-print-scope] .page-head h1{font-size:14px!important;margin:0 0 2px!important}body[data-print-scope] .page-head p{font-size:9.5px!important;max-width:none!important}body[data-print-scope=plan] .print-header:after{content:"Plan — Full editable schedule";display:block;font-size:11px;color:#475569;margin-top:2px}body[data-print-scope=gantt] .print-header:after{content:"Gantt — Timeline view";display:block;font-size:11px;color:#475569;margin-top:2px}body[data-print-scope=checkoff] .print-header:after{content:"Check-Off — Planned vs Actual sign-off sheet";display:block;font-size:11px;color:#475569;margin-top:2px}body[data-print-scope=lugs] .print-header:after{content:"Lug Log — Individual lug register";display:block;font-size:11px;color:#475569;margin-top:2px}body[data-print-scope=resources] .print-header:after{content:"Resources — Companies & per-pair workload";display:block;font-size:11px;color:#475569;margin-top:2px}body[data-print-scope=overview] .print-header:after{content:"Overview — Allocation summary";display:block;font-size:11px;color:#475569;margin-top:2px}body[data-print-scope=plan] table.data{font-size:9.5px!important}body[data-print-scope=plan] table.data tbody td{padding:2px 5px!important}body[data-print-scope=plan] .cell-input,body[data-print-scope=plan] .cell-select{background:transparent!important;border:0!important;padding:0!important;min-height:0!important;height:auto!important;color:#1b2434!important;-webkit-appearance:none;-moz-appearance:none;appearance:none}body[data-print-scope=plan] .actual-bg,body[data-print-scope=plan] .derived-bg,body[data-print-scope=plan] .editable-bg{background:transparent!important}body[data-print-scope=gantt]{font-size:9px}body[data-print-scope=gantt] .kpi-row{display:none!important}body[data-print-scope=gantt] .legend{display:flex!important;margin-bottom:6px;font-size:9px}body[data-print-scope=gantt] .gantt-shell{border:0!important}body[data-print-scope=gantt] .gantt-row-head .row-title{font-size:8.5px!important}body[data-print-scope=gantt] .gantt-bar{font-size:8px!important}body[data-print-scope=gantt] .planner-root .gantt-day-head{font-size:7.5px!important}body[data-print-scope=checkoff] .actual-bg input{background:transparent!important;border:0!important;padding:0!important}body[data-print-scope=checkoff] table.data{font-size:10px!important}body[data-print-scope=lugs] .kpi-row{display:none!important}body[data-print-scope=lugs] table.data{font-size:9px!important}body[data-print-scope=lugs] table.data tbody td{padding:2px 5px!important}body[data-print-scope=lugs] .card-head>div:last-child{display:none!important}body[data-print-scope=resources] .company-grid,body[data-print-scope=resources] [style*="grid-template-columns: repeat(auto-fit, minmax(320px, 1fr))"]{grid-template-columns:repeat(2,1fr)!important}}.print-header{display:none;font-size:14px}.print-header .ph-title{font-weight:700;font-size:18px}.print-header .ph-meta{font-size:11px;color:var(--text-2);margin-top:4px}.plan-table td,.plan-table th{white-space:nowrap}.plan-table tbody tr:hover{background:#fafbfc}.report-view{background:#fff;padding:0;max-width:1400px;margin:0 auto}.report-section{background:#fff;padding:18px 24px;margin-bottom:14px;border:1px solid var(--border);border-radius:6px;break-inside:avoid;page-break-inside:avoid}.report-section h2.rh{margin:0 0 12px;padding-bottom:6px;border-bottom:2px solid var(--nav-bg);font-size:14px;font-weight:700;letter-spacing:.3px;text-transform:uppercase;color:var(--nav-bg)}.report-section .report-sub{margin:-6px 0 12px;font-size:11.5px;color:var(--text-2)}.report-section .rlist{margin:0;padding-left:18px;font-size:12px;line-height:1.6;color:var(--text)}.report-section .rlist li{margin-bottom:4px}.report-table{font-size:11px}.report-table thead th{background:var(--nav-bg)!important;color:#fff!important;border-bottom:0;font-size:10px}.report-table tbody tr:nth-child(2n){background:#fafbfc}.report-table tbody td{padding:5px 8px}.report-week-table{font-size:9.5px}.report-week-table .rw-cell{padding:4px 5px;vertical-align:top;min-width:70px}.report-cover .rcov-header{display:flex;align-items:center;gap:16px;border-bottom:3px solid var(--accent);padding-bottom:14px;margin-bottom:16px}.report-cover .rcov-mark{width:56px;height:56px;background:var(--nav-bg);color:var(--accent);font-weight:800;font-size:16px;display:grid;place-items:center;border-radius:8px;letter-spacing:1px}.report-cover .rcov-title h1{margin:0;font-size:22px;font-weight:700;color:var(--nav-bg)}.report-cover .rcov-sub{margin-top:4px;font-size:11.5px;color:var(--text-2)}.report-cover .rcov-kpis{display:grid;grid-template-columns:repeat(6,1fr);grid-gap:8px;gap:8px;margin-bottom:14px}.report-cover .rcov-kpi{border:1px solid var(--border);border-radius:6px;padding:10px 12px;background:#fbfcfd}.report-cover .rcov-kpi .rk-l{font-size:9px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-3);font-weight:600;margin-bottom:3px}.report-cover .rcov-kpi .rk-v{font-size:22px;font-weight:700;letter-spacing:-.5px;color:var(--nav-bg)}.report-cover .rcov-window{display:flex;gap:18px;padding:10px 14px;background:var(--surface-2);border-radius:6px;margin-bottom:18px}.report-cover .rcov-window>div{display:flex;flex-direction:column;gap:2px}.report-cover .rcov-window .rk-l{font-size:9px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-3);font-weight:600}.report-cover .rcov-window strong{font-size:13px;color:var(--text)}.report-foot{border:0;padding:12px 0}.view-host[data-active-view=report]{background:#eceef1;padding:14px;margin:-14px -22px -18px;border-radius:0}.view-host[data-active-view=report] .report-view{box-shadow:0 4px 14px rgba(15,23,42,.08);background:#fff;padding:24px;border-radius:8px}@media print{body[data-print-scope=report] .view-host{background:#fff!important;padding:0!important;margin:0!important}body[data-print-scope=report] .report-view{box-shadow:none!important;padding:0!important;max-width:none!important}.report-section{border:0!important;padding:0 0 14px!important;margin-bottom:14px!important;page-break-inside:avoid}.report-section.landscape{page-break-before:always}.report-section h2.rh{page-break-after:avoid}.report-table thead th{font-size:9px;padding:4px 6px}.report-table tbody td{padding:4px 6px;font-size:10px}.report-week-table{font-size:8px}.report-week-table .rw-cell{padding:3px}.report-cover .rcov-kpis{grid-template-columns:repeat(6,1fr)!important}.report-cover .rcov-kpi .rk-v{font-size:18px}.report-section+.report-section{page-break-before:auto}}.drop-overlay{position:fixed;inset:0;z-index:300;background:rgba(15,23,42,.55);display:flex;align-items:center;justify-content:center;pointer-events:none;animation:dropFadeIn .12s ease-out}.drop-overlay-inner{background:#fff;border:3px dashed #3b82f6;border-radius:10px;padding:40px 48px;display:flex;flex-direction:column;align-items:center;gap:8px;box-shadow:0 20px 50px -10px rgba(15,23,42,.35);max-width:460px;text-align:center}.drop-overlay-inner .drop-icon{width:56px;height:56px;border-radius:50%;background:#dbeafe;color:#1d4ed8;display:grid;place-items:center;font-size:28px;font-weight:700;margin-bottom:6px}.drop-overlay-inner .drop-title{font-size:16px;font-weight:600;color:#0f172a}.drop-overlay-inner .drop-sub{font-size:12px;color:#475569}@keyframes dropFadeIn{0%{opacity:0}to{opacity:1}}.import-toast{position:fixed;bottom:20px;right:20px;z-index:250;background:#fff;border:1px solid var(--border-strong);border-left:4px solid #16a34a;border-radius:6px;padding:12px 14px;display:flex;align-items:flex-start;gap:12px;box-shadow:0 12px 30px -8px rgba(15,23,42,.25);min-width:280px;max-width:380px;animation:toastSlide .18s ease-out}.import-toast .it-icon{width:28px;height:28px;border-radius:50%;background:#dcfce7;color:#166534;display:grid;place-items:center;font-size:16px;font-weight:700;flex-shrink:0}.import-toast .it-title{font-size:13px;font-weight:600;color:var(--text)}.import-toast .it-sub{font-size:11.5px;color:var(--text-3);margin-top:2px}.import-toast .it-dupes{color:var(--text-3);font-weight:500}.import-toast .close-x{flex-shrink:0;margin-top:-2px}@keyframes toastSlide{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media print{.drop-overlay,.import-toast{display:none!important}}.reorder-overlay{justify-content:center;align-items:center;padding:24px}.reorder-modal{background:#fff;border-radius:8px;width:min(880px,100%);max-height:calc(100vh - 48px);box-shadow:0 18px 48px rgba(15,23,42,.25);display:flex;flex-direction:column;animation:reorderIn .14s ease-out}@keyframes reorderIn{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.reorder-head{display:flex;align-items:flex-start;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--border)}.reorder-title{font-size:14px;font-weight:600;color:var(--text)}.reorder-pair-id{font-family:SF Mono,Menlo,monospace;color:var(--text)}.reorder-pair-co{color:var(--text-3);font-weight:500;font-size:12px;margin-left:2px}.reorder-help{padding:10px 18px;font-size:11.5px;line-height:1.5;color:var(--text-2);background:#fbfcfd;border-bottom:1px solid var(--border)}.reorder-help strong{font-family:SF Mono,Menlo,monospace;font-weight:700;color:var(--text)}.reorder-pin{display:inline-block;margin-left:6px;color:var(--text-3)}.reorder-body{overflow:auto;padding:0;flex:1 1;min-height:80px}.reorder-table{width:100%}.reorder-table th{background:var(--surface-2);position:-webkit-sticky;position:sticky;top:0;z-index:1}.reorder-table td{padding:8px 10px;vertical-align:middle}.reorder-num{text-align:right;font-family:SF Mono,Menlo,monospace;color:var(--text-3);white-space:nowrap}.reorder-row-num{display:inline-block;min-width:18px;text-align:right}.reorder-pin-mark{margin-right:4px}.reorder-btns{gap:4px}.reorder-btn,.reorder-btns{display:inline-flex;justify-content:center}.reorder-btn{width:26px;height:24px;padding:0;border:1px solid var(--border-strong);background:#fff;border-radius:4px;cursor:pointer;font-size:11px;font-weight:600;color:var(--text-2);font-family:inherit;line-height:1;align-items:center}.reorder-btn:hover:not(:disabled){background:var(--surface-2);color:var(--text)}.reorder-btn:disabled{opacity:.35;cursor:not-allowed}.reorder-foot{display:flex;align-items:center;gap:8px;padding:10px 14px;border-top:1px solid var(--border);background:#fbfcfd;border-radius:0 0 8px 8px}.reorder-reset{background:transparent;border:0;padding:6px 8px;cursor:pointer;color:#b91c1c;font-size:12px;font-weight:500;font-family:inherit}.reorder-reset:hover{text-decoration:underline}.plan-start-cell{position:relative;transition:background .12s}.plan-start-cell:hover{background:#fef9c3!important;box-shadow:inset 0 0 0 1px #fbbf24}.plan-start-cell .pin-mark{margin-right:4px;font-size:10px}@media (max-width:760px){.reorder-modal{max-height:100vh;height:100vh;width:100vw;border-radius:0}.reorder-overlay{padding:0}}@media print{.reorder-overlay{display:none!important}}