.forecast-workspace{--forecast-own:#14b8a6;--forecast-labour:#60a5fa;--forecast-soft:#f59e0b;--forecast-pattern:#02061794;--forecast-total:#fff;--forecast-total-halo:#020617;--forecast-target:#f472b6;--forecast-target-halo:#020617;--forecast-zero:#94a3b8;--forecast-selection:#f8fafc;--forecast-cursor:#94a3b81a;--forecast-frozen-body:#0b1120;--forecast-frozen-body-alt:#0e1524;--forecast-frozen-body-hover:#162238;--forecast-frozen-header:#0e1628;font-variant-numeric:tabular-nums;gap:12px;min-width:0;display:grid}:root[data-theme=light] .forecast-workspace{--forecast-own:#0f766e;--forecast-labour:#2563eb;--forecast-soft:#b45309;--forecast-pattern:#ffffffb3;--forecast-total:#111827;--forecast-total-halo:#fff;--forecast-target:#be185d;--forecast-target-halo:#fff;--forecast-zero:#64748b;--forecast-selection:#0f766e;--forecast-cursor:#0f766e12;--forecast-frozen-body:#fff;--forecast-frozen-body-alt:#fcfdfe;--forecast-frozen-body-hover:#e7edf5;--forecast-frozen-header:#f8fafc}.fw-toolbar{border:1px solid var(--border-soft);background:var(--surface);border-radius:10px;grid-template-columns:minmax(260px,360px) minmax(0,1fr);align-items:end;gap:12px;min-width:0;padding:13px;display:grid}.fw-cost-centre{min-width:0;color:var(--muted);gap:6px;font-size:12px;font-weight:700;display:grid}.fw-cost-centre select{border:1px solid var(--border);width:100%;min-height:44px;color:var(--text);background:var(--surface-soft);border-radius:7px;padding:0 36px 0 11px}.fw-source-status{align-items:center;gap:10px;min-width:0;min-height:44px;display:flex}.fw-source-icon{border:1px solid var(--border);background:var(--surface-soft);border-radius:8px;flex:0 0 38px;justify-content:center;align-items:center;width:38px;height:38px;display:inline-flex}.fw-source-icon.is-ready{color:var(--good);border-color:#2dd4bf4d}.fw-source-icon.is-warning{color:var(--warning);border-color:#fbbf244d}.fw-source-status>div{gap:3px;min-width:0;display:grid}.fw-source-status strong,.fw-source-status span,.fw-refresh-status span,.fw-refresh-status small{overflow-wrap:anywhere}.fw-source-status strong{color:var(--text);font-size:12px}.fw-source-status>div>span,.fw-refresh-status small{color:var(--muted);font-size:11px;line-height:1.35}.fw-refresh-status{gap:3px;min-width:0;display:grid}.fw-refresh-status>span{color:var(--text-soft);align-items:flex-start;gap:7px;font-size:12px;line-height:1.4;display:flex}.fw-refresh-status svg{flex:none;margin-top:1px}.fw-refresh-status .is-ready svg{color:var(--good)}.fw-refresh-status .is-refreshing svg{color:var(--blue)}.fw-refresh-status .is-error svg{color:var(--danger)}.fw-refresh-button{min-width:104px}.fw-load-warning,.fw-conflict{min-height:48px;color:var(--text-soft);background:#fbbf2412;border:1px solid #fbbf2452;border-radius:9px;align-items:center;gap:10px;padding:9px 12px;font-size:12px;line-height:1.45;display:flex}.fw-conflict{background:#fb718512;border-color:#fb718561}.fw-load-warning>svg,.fw-conflict>svg{color:var(--warning);flex:none}.fw-conflict>svg{color:var(--danger)}.fw-load-warning span,.fw-conflict span{flex:1;min-width:0}.fw-load-warning strong,.fw-conflict strong{color:var(--text)}.fw-load-warning button,.fw-conflict button{min-height:44px;color:var(--warning);cursor:pointer;background:0 0;border:1px solid;border-radius:7px;flex:none;padding:0 12px;font-size:12px;font-weight:700}.fw-conflict button{color:var(--danger)}.fw-load-warning button:disabled,.fw-conflict button:disabled{opacity:.5;cursor:not-allowed}.fw-initial-state{border:1px solid var(--border-soft);min-height:320px;color:var(--muted);background:var(--surface);text-align:center;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:28px;display:flex}.fw-initial-state>svg{color:var(--accent)}.fw-initial-state strong{color:var(--text)}.fw-initial-state--error>svg{color:var(--danger)}.fw-source-summary{border:1px solid var(--border-soft);background:var(--surface-raised);border-radius:9px;justify-content:space-between;align-items:flex-start;gap:12px;min-width:0;padding:10px 13px;display:flex}.fw-source-summary>div{flex-wrap:wrap;gap:7px;min-width:0;display:flex}.fw-source-summary>div>span{border:1px solid var(--border);min-height:28px;color:var(--text-soft);background:var(--surface-soft);border-radius:14px;align-items:center;gap:6px;padding:4px 8px;font-size:11px;display:inline-flex}.fw-source-summary .is-complete svg{color:var(--good)}.fw-source-summary .is-incomplete svg{color:var(--warning)}.fw-source-summary details{flex:none;position:relative}.fw-source-summary summary,.fw-chart-data summary{border:1px solid var(--border);min-height:44px;color:var(--text-soft);background:var(--surface-soft);cursor:pointer;border-radius:7px;align-items:center;padding:0 10px;font-size:12px;font-weight:700;display:inline-flex}.fw-source-summary dl{z-index:30;border:1px solid var(--border);background:var(--surface-raised);border-radius:9px;width:min(430px,100vw - 52px);max-height:360px;margin:0;padding:10px 12px;position:absolute;top:calc(100% + 7px);right:0;overflow:auto;box-shadow:0 18px 50px #0000004d}.fw-source-summary dl>div{border-top:1px solid var(--border-soft);grid-template-columns:minmax(110px,.45fr) minmax(0,1fr);gap:10px;padding:7px 0;font-size:12px;display:grid}.fw-source-summary dl>div:first-child{border-top:0}.fw-source-summary dt{color:var(--muted)}.fw-source-summary dd{overflow-wrap:anywhere;color:var(--text);margin:0}.fw-panel{border:1px solid var(--border-soft);background:linear-gradient(155deg, #ffffff03, transparent 32%), var(--surface);border-radius:10px;min-width:0;overflow:hidden}.fw-panel__header{border-bottom:1px solid var(--border-soft);justify-content:space-between;align-items:center;gap:16px;min-height:68px;padding:13px 15px;display:flex}.fw-panel__header>div:first-child{gap:3px;min-width:0;display:grid}.fw-panel__header h2{letter-spacing:-.015em;font-size:15px}.fw-panel__header p{max-width:760px;color:var(--muted);font-size:12px;line-height:1.45}.fw-chart-legend{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px 12px;display:flex}.fw-chart-legend>span{color:var(--text-soft);align-items:center;gap:6px;font-size:11px;font-weight:600;display:inline-flex}.fw-legend-key{border:1px solid #ffffff57;border-radius:2px;width:18px;height:10px;display:inline-block}.fw-legend-key--own{background:var(--forecast-own)}.fw-legend-key--labour{background:repeating-linear-gradient(135deg, var(--forecast-labour) 0 4px, var(--forecast-pattern) 4px 5px)}.fw-legend-key--soft{background-color:var(--forecast-soft);background-image:radial-gradient(var(--forecast-pattern) 1px, transparent 1px);background-size:5px 5px}.fw-legend-key--total{background:var(--forecast-total);height:3px;box-shadow:0 0 0 1px var(--forecast-total-halo);border:0}.fw-legend-key--target{background:repeating-linear-gradient(to right, var(--forecast-target) 0 7px, transparent 7px 11px);height:3px;filter:drop-shadow(0 0 1px var(--forecast-target-halo));border:0}.fw-chart-interaction{border:1px solid #0000;border-radius:8px;margin:10px 10px 0}.fw-chart-interaction:focus-visible{border-color:var(--accent);outline:2px solid var(--accent);outline-offset:1px}.fw-chart-canvas{width:100%;height:clamp(330px,36vw,470px);min-height:330px}.fw-chart-panel .recharts-cartesian-axis-tick-value{fill:var(--muted);font-size:11px}.fw-month-detail{border:1px solid var(--border-soft);background:var(--surface-raised);border-radius:8px;grid-template-columns:minmax(135px,.25fr) minmax(0,1fr);align-items:stretch;gap:12px;min-height:88px;margin:0 15px 13px;padding:10px 12px;display:grid}.fw-month-detail__heading{flex-direction:column;justify-content:center;gap:3px;display:flex}.fw-month-detail__heading span{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;font-size:11px;font-weight:700}.fw-month-detail__heading strong{font-family:Fira Code,Consolas,monospace;font-size:14px}.fw-month-detail dl{grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;margin:0;display:grid}.fw-month-detail dl>div{border-left:2px solid var(--forecast-own);background:var(--surface-soft);align-content:center;gap:4px;min-width:0;padding:7px 9px;display:grid}.fw-month-detail dl>div:nth-child(2){border-left-color:var(--forecast-labour)}.fw-month-detail dl>div:nth-child(3){border-left:2px dotted var(--forecast-soft)}.fw-month-detail dl>.fw-month-detail__total{border-left:3px double var(--forecast-total)}.fw-month-detail dl>.fw-month-detail__target{border-left:3px dashed var(--forecast-target)}.fw-month-detail dt{color:var(--muted);font-size:11px}.fw-month-detail dd{color:var(--text);text-overflow:ellipsis;margin:0;font-family:Fira Code,Consolas,monospace;font-size:12px;overflow:hidden}.fw-month-detail>p{color:var(--muted);grid-column:1/-1;align-self:center;font-size:12px}.fw-chart-data{margin:0 15px 14px}.fw-chart-data[open] summary{margin-bottom:8px}.fw-chart-data__scroll,.fw-preview-scroll{border:1px solid var(--border-soft);outline-offset:2px;border-radius:8px;max-width:100%;overflow:auto}.fw-chart-data table,.fw-preview-scroll table{border-collapse:separate;border-spacing:0;width:100%;min-width:720px;font-size:12px}.fw-chart-data caption,.fw-preview-scroll caption,.fw-table caption{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.fw-chart-data th,.fw-chart-data td,.fw-preview-scroll th,.fw-preview-scroll td{border-bottom:1px solid var(--border-soft);color:var(--text-soft);text-align:right;padding:9px 11px}.fw-chart-data th:first-child,.fw-chart-data td:first-child,.fw-preview-scroll th:first-child,.fw-preview-scroll td:first-child{text-align:left}.fw-chart-data thead th,.fw-preview-scroll thead th{color:var(--muted);background:var(--surface-soft)}.fw-chart-data tr:last-child>*,.fw-preview-scroll tbody tr:last-child>*{border-bottom:0}.fw-chart-data tr.is-selected>*{color:var(--text);background:#2dd4bf12}.fw-grid-stack{gap:12px;min-width:0;display:grid}.fw-count{border:1px solid var(--border);min-height:28px;color:var(--muted);background:var(--surface-soft);white-space:nowrap;border-radius:14px;align-items:center;padding:0 9px;font-size:11px;font-weight:700;display:inline-flex}.fw-grid-tools{border-bottom:1px solid var(--border-soft);background:var(--surface-raised);justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex}.fw-search{border:1px solid var(--border);min-width:220px;max-width:360px;height:44px;color:var(--muted);background:var(--surface);border-radius:7px;flex:1;align-items:center;gap:8px;padding:0 11px;display:flex}.fw-search:focus-within{border-color:var(--accent);box-shadow:0 0 0 2px #2dd4bf1c}.fw-search input{width:100%;min-width:0;height:42px;color:var(--text);background:0 0;border:0;outline:0;font-size:13px}.fw-search input::placeholder{color:var(--muted)}.fw-actual-note{min-width:0;color:var(--muted);align-items:flex-start;gap:7px;font-size:11px;line-height:1.45;display:flex}.fw-actual-note svg{color:var(--blue);flex:none;margin-top:1px}.fw-table-scroll{overscroll-behavior:contain;scrollbar-gutter:stable;outline-offset:-3px;max-width:100%;max-height:min(68dvh,720px);overflow:auto}.fw-table-scroll:focus-visible,.fw-chart-data__scroll:focus-visible,.fw-preview-scroll:focus-visible{outline:2px solid var(--accent)}.fw-table{border-collapse:separate;border-spacing:0;width:max-content;min-width:3500px;color:var(--text-soft);font-size:12px}.fw-table th,.fw-table td{border-right:1px solid var(--border-soft);border-bottom:1px solid var(--border-soft);vertical-align:top;min-width:118px;height:58px;padding:7px 8px}.fw-table thead th{z-index:20;vertical-align:middle;height:52px;color:var(--muted);background:var(--surface-raised);letter-spacing:.02em;text-align:left;font-size:11px;font-weight:700;position:sticky;top:0}.fw-table tbody tr:nth-child(2n)>td,.fw-table tbody tr:nth-child(2n)>th{background-color:#94a3b806}.fw-table tbody tr:hover>td,.fw-table tbody tr:hover>th{background-color:var(--surface-hover)}.fw-table tbody tr.is-orphaned>td,.fw-table tbody tr.is-orphaned>th{box-shadow:inset 0 2px #fbbf2485}.fw-table .fw-sticky{background:var(--forecast-frozen-body);position:sticky}.fw-table tbody tr>.fw-sticky{background:var(--forecast-frozen-body)}.fw-table tbody tr:nth-child(2n)>.fw-sticky{background:var(--forecast-frozen-body-alt)}.fw-table tbody tr:hover>.fw-sticky{background:var(--forecast-frozen-body-hover)}.fw-table thead .fw-sticky{z-index:30;background:var(--forecast-frozen-header)}.fw-col--project{width:230px;max-width:230px;left:0;min-width:230px!important}.fw-col--centre{width:148px;max-width:148px;left:230px;min-width:148px!important}.fw-col--line{width:190px;max-width:190px;left:378px;box-shadow:5px 0 8px #0000001f;min-width:190px!important}.fw-table tbody .fw-col--project{z-index:13}.fw-table tbody .fw-col--centre{z-index:12}.fw-table tbody .fw-col--line{z-index:11}.fw-table thead .fw-col--project{z-index:33}.fw-table thead .fw-col--centre{z-index:32}.fw-table thead .fw-col--line{z-index:31}.fw-table tbody .fw-col--project{color:var(--text);display:table-cell}.fw-col--project>span,.fw-col--project>strong,.fw-col--project>small,.fw-col--line>strong{overflow-wrap:anywhere;display:block}.fw-col--project>span{color:var(--muted);font-family:Fira Code,Consolas,monospace;font-size:10px}.fw-col--project>strong{margin-top:3px;font-size:12px;line-height:1.35}.fw-col--project>small{color:var(--muted);margin-top:4px;font-size:10px;font-weight:500;line-height:1.35}.fw-col--line>strong{color:var(--text);font-size:11px;line-height:1.35}.fw-missing-data{border:1px dashed var(--warning);min-height:21px;color:var(--warning);background:var(--forecast-frozen-body);border-radius:10px;align-items:center;margin-top:5px;padding:2px 6px;font-size:9px;font-weight:700;display:inline-flex}.fw-project-detail{width:210px;max-width:210px;min-width:210px!important}.fw-project-detail>span{overflow-wrap:anywhere;color:var(--muted);margin-bottom:3px;font-size:10px;line-height:1.35;display:block}.fw-project-detail strong{color:var(--text-soft)}.fw-number-cell{font-variant-numeric:tabular-nums;text-align:right!important}.fw-month-heading{width:112px;min-width:112px!important}.fw-th-helper{color:var(--faint);margin-top:3px;font-size:9px;font-weight:500;display:block}.fw-readonly-value{color:var(--text);white-space:nowrap;font-family:Fira Code,Consolas,monospace;font-size:11px;padding-top:17px!important}.fw-auto-button{border:1px dashed var(--warning);min-height:44px;color:var(--warning);cursor:pointer;background:#fbbf240f;border-radius:6px;align-items:center;gap:5px;margin-top:7px;padding:0 8px;font-size:10px;font-weight:700;display:inline-flex}.fw-auto-button:disabled{opacity:.48;cursor:not-allowed}.fw-editor{gap:3px;min-width:104px;display:grid}.fw-editor--text{min-width:165px}.fw-editor__input-wrap{position:relative}.fw-cell-input,.fw-text-input{border:1px solid var(--border);width:100%;min-height:44px;color:var(--text);background:var(--surface-raised);border-radius:6px;outline:0;padding:0 8px;font-family:Fira Code,Consolas,monospace;font-size:12px}.fw-cell-input{text-align:right}.fw-editor__input-wrap .fw-cell-input{padding-right:23px}.fw-text-input{text-align:left;min-width:165px;font-family:inherit}.fw-cell-input::placeholder,.fw-text-input::placeholder{color:var(--faint);opacity:1}.fw-cell-input:focus,.fw-text-input:focus{border-color:var(--accent);box-shadow:0 0 0 2px #2dd4bf21}.fw-cell-input:disabled,.fw-text-input:disabled{opacity:.62;cursor:not-allowed}.fw-editor.has-error .fw-cell-input,.fw-editor.has-error .fw-text-input,.fw-allocation-dialog [aria-invalid=true]{border-color:var(--danger);box-shadow:0 0 0 1px var(--danger)}.fw-editor__suffix{color:var(--muted);pointer-events:none;font-size:11px;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.fw-editor__status{max-width:190px;color:var(--muted);text-align:right;white-space:normal;justify-content:flex-end;align-items:flex-start;gap:4px;font-size:9px;line-height:1.3;display:inline-flex}.fw-editor__status svg{flex:none}.fw-editor__status--saving{color:var(--blue)}.fw-editor__status--saved{color:var(--good)}.fw-editor__status--error{color:var(--danger)}.fw-empty{min-height:180px;color:var(--muted);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:7px;padding:24px;display:flex}.fw-empty strong{color:var(--text)}.fw-empty span{font-size:12px}.fw-pagination{border-top:1px solid var(--border-soft);justify-content:flex-end;align-items:center;gap:10px;min-height:58px;padding:7px 12px;display:flex}.fw-pagination button{border:1px solid var(--border);min-height:44px;color:var(--text-soft);background:var(--surface-soft);cursor:pointer;border-radius:7px;align-items:center;gap:5px;padding:0 11px;font-size:11px;font-weight:700;display:inline-flex}.fw-pagination button:disabled{opacity:.4;cursor:not-allowed}.fw-pagination span{color:var(--muted);font-size:11px}.fw-allocation-dialog{overscroll-behavior:contain;border:1px solid var(--border);width:min(1120px,100vw - 32px);max-height:min(920px,100dvh - 32px);color:var(--text);background:var(--surface);border-radius:14px;padding:0;overflow:auto;box-shadow:0 30px 90px #0000008c}.fw-allocation-dialog::backdrop{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#00040dc7}.fw-dialog__header{z-index:5;border-bottom:1px solid var(--border);background:color-mix(in srgb, var(--surface) 94%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);justify-content:space-between;align-items:flex-start;gap:18px;padding:17px 18px;display:flex;position:sticky;top:0}.fw-dialog__header>div{gap:4px;min-width:0;display:grid}.fw-dialog__header h2{letter-spacing:-.02em;font-size:19px}.fw-dialog__header p{color:var(--muted);overflow-wrap:anywhere;font-size:12px}.fw-dialog__header .fw-dialog__warning{color:var(--warning);margin-top:3px;font-weight:700}.fw-error-summary{color:var(--danger);background:#fb718512;border:1px solid #fb71856b;border-radius:8px;gap:9px;margin:14px 18px 0;padding:10px 11px;font-size:12px;display:flex}.fw-error-summary>svg{flex:none}.fw-error-summary strong{color:var(--text)}.fw-error-summary p{margin-top:3px;line-height:1.4}.fw-allocation-dialog form{gap:16px;padding:16px 18px 18px;display:grid}.fw-allocation-dialog fieldset{border:0;gap:14px;min-width:0;margin:0;padding:0;display:grid}.fw-allocation-dialog legend{color:var(--text);margin-bottom:9px;font-size:13px;font-weight:700}.fw-allocation-fields{grid-template-columns:minmax(180px,1fr) minmax(180px,1fr) minmax(180px,1fr);gap:10px;display:grid}.fw-allocation-dialog label{min-width:0;color:var(--muted);gap:5px;font-size:11px;font-weight:700;display:grid}.fw-allocation-dialog input,.fw-allocation-dialog select{border:1px solid var(--border);width:100%;min-height:44px;color:var(--text);background:var(--surface-raised);border-radius:7px;outline:0;padding:0 10px}.fw-allocation-dialog input:focus,.fw-allocation-dialog select:focus{border-color:var(--accent);box-shadow:0 0 0 2px #2dd4bf21}.fw-allocation-dialog label>small{color:var(--faint);font-size:10px;font-weight:500;line-height:1.35}.fw-allocation-dialog input.fw-calculated-total{color:var(--accent);background:var(--surface-soft);cursor:default;border-style:dashed}.fw-task-builder{border:1px solid var(--border-soft);background:var(--surface-raised);border-radius:9px;gap:8px;padding:12px;display:grid}.fw-task-builder__heading{justify-content:space-between;align-items:center;gap:12px;min-height:44px;display:flex}.fw-task-builder__heading>div{gap:3px;display:grid}.fw-task-builder__heading strong{font-size:12px}.fw-task-builder__heading span{color:var(--muted);font-size:11px}.fw-task-row{border-top:1px solid var(--border-soft);grid-template-columns:minmax(160px,1.15fr) minmax(120px,.7fr) minmax(150px,1fr) minmax(150px,1fr) 44px;align-items:end;gap:8px;padding-top:9px;display:grid}.fw-remove-task{border:1px solid var(--border);width:44px;height:44px;color:var(--danger);background:var(--surface-soft);cursor:pointer;border-radius:7px;justify-content:center;align-items:center;display:inline-flex}.fw-field-error{color:var(--danger);font-size:11px}.fw-allocation-preview{gap:9px;min-width:0;display:grid}.fw-allocation-preview>div:first-child{gap:3px;display:grid}.fw-allocation-preview h3{font-size:13px}.fw-allocation-preview p{color:var(--muted);font-size:11px;line-height:1.45}.fw-preview-scroll table{width:max-content;min-width:100%}.fw-preview-scroll tfoot th,.fw-preview-scroll tfoot td{border-top:2px solid var(--border);color:var(--text);font-weight:700}.fw-preview-empty{border:1px dashed var(--border);border-radius:8px;justify-content:center;align-items:center;min-height:60px;display:flex}.fw-dialog__actions{border-top:1px solid var(--border);background:color-mix(in srgb, var(--surface) 94%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);justify-content:flex-end;gap:8px;margin:0 -18px -18px;padding:12px 18px;display:flex;position:sticky;bottom:-18px}@media (width<=1180px){.fw-chart-panel .fw-panel__header{flex-direction:column;align-items:flex-start}.fw-chart-legend{justify-content:flex-start}}@media (width<=767px){.forecast-workspace{gap:9px}.fw-toolbar{grid-template-columns:minmax(0,1fr);align-items:stretch;padding:10px}.fw-cost-centre,.fw-refresh-status{grid-area:auto/1}.fw-cost-centre select,.fw-search input,.fw-cell-input,.fw-text-input,.fw-allocation-dialog input,.fw-allocation-dialog select{font-size:16px}.fw-load-warning,.fw-conflict,.fw-source-summary,.fw-grid-tools,.fw-task-builder__heading{flex-direction:column;align-items:stretch}.fw-load-warning button,.fw-conflict button,.fw-source-summary details{width:100%}.fw-source-summary summary{justify-content:center;width:100%}.fw-source-summary dl{width:100%;box-shadow:none;margin-top:7px;position:static}.fw-panel__header{flex-direction:column;align-items:flex-start;gap:9px;padding:12px}.fw-chart-legend{grid-template-columns:repeat(2,minmax(0,1fr));width:100%;display:grid}.fw-chart-interaction{margin:6px 4px 0}.fw-chart-canvas{height:360px}.fw-month-detail{grid-template-columns:1fr;margin:0 10px 10px}.fw-month-detail dl{grid-template-columns:repeat(2,minmax(0,1fr))}.fw-chart-data{margin:0 10px 11px}.fw-grid-tools{padding:9px 10px}.fw-search{width:100%;min-width:0;max-width:none}.fw-col--project{width:190px;max-width:190px;min-width:190px!important}.fw-col--centre{width:132px;max-width:132px;min-width:132px!important;position:static!important}.fw-col--line{width:170px;max-width:170px;box-shadow:none;min-width:170px!important;position:static!important}.fw-table{min-width:3220px}.fw-pagination{justify-content:space-between}.fw-allocation-dialog{width:calc(100vw - 16px);max-height:calc(100dvh - 16px)}.fw-dialog__header,.fw-allocation-dialog form{padding-left:12px;padding-right:12px}.fw-allocation-fields,.fw-task-row{grid-template-columns:minmax(0,1fr)}.fw-remove-task{width:100%}.fw-dialog__actions{margin-left:-12px;margin-right:-12px;padding-left:12px;padding-right:12px;bottom:-18px}.fw-dialog__actions .button{flex:1}}@media (prefers-reduced-motion:reduce){.forecast-workspace *,.forecast-workspace :before,.forecast-workspace :after,.fw-allocation-dialog,.fw-allocation-dialog::backdrop{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.net-revenue-targets-panel{grid-column:1/-1;min-width:0}.nr-targets{font-variant-numeric:tabular-nums;gap:12px;min-width:0;padding:14px 16px 16px;display:grid}.nr-targets__intro{grid-template-columns:minmax(0,1fr) minmax(260px,420px);align-items:end;gap:16px;min-width:0;display:grid}.nr-targets__intro>p{max-width:88ch;color:var(--muted);font-size:12px;line-height:1.55}.nr-targets__selector{min-width:0;color:var(--muted);gap:5px;font-size:11px;font-weight:700;display:grid}.nr-targets__selector select{border:1px solid var(--border);width:100%;min-height:44px;color:var(--text);background:var(--surface-raised);border-radius:7px;outline:0;padding:0 36px 0 11px;font-size:12px}.nr-targets__selector select:focus-visible{border-color:var(--accent);outline:2px solid color-mix(in srgb, var(--accent) 36%, transparent);outline-offset:1px}.nr-targets__save-bar{align-items:center;gap:8px;display:flex}.nr-targets__save,.nr-targets__discard{border:1px solid var(--border);min-height:38px;color:var(--text-soft);background:var(--surface-raised);cursor:pointer;border-radius:7px;justify-content:center;align-items:center;gap:6px;padding:0 12px;font-size:11px;font-weight:800;display:inline-flex}.nr-targets__save{border-color:color-mix(in srgb, var(--accent) 55%, var(--border));color:var(--surface-raised);background:var(--accent)}.nr-targets__save:hover:not(:disabled),.nr-targets__discard:hover:not(:disabled){filter:brightness(1.05)}.nr-targets__save:focus-visible,.nr-targets__discard:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 36%, transparent);outline-offset:2px}.nr-targets__save:disabled,.nr-targets__discard:disabled{opacity:.55;cursor:not-allowed}.nr-targets__feedback{min-height:28px;color:var(--muted);align-items:center;gap:7px;font-size:11px;display:flex}.nr-targets__feedback>svg{color:var(--accent);flex:none}.nr-targets__feedback.is-error,.nr-targets__feedback.is-error>svg{color:var(--danger)}.nr-targets__feedback button{border:1px solid var(--border);min-height:32px;color:var(--text-soft);background:var(--surface-raised);cursor:pointer;border-radius:6px;align-items:center;gap:5px;margin-left:4px;padding:0 9px;font-size:11px;font-weight:700;display:inline-flex}.nr-targets__conflict{border:1px solid color-mix(in srgb, var(--warning) 46%, var(--border));color:var(--text-soft);background:color-mix(in srgb, var(--warning) 9%, var(--surface));border-radius:8px;align-items:flex-start;gap:8px;padding:10px 11px;font-size:12px;line-height:1.5;display:flex}.nr-targets__conflict>svg{color:var(--warning);flex:none}.nr-targets__scroll-hint{color:var(--faint);font-size:11px}.nr-targets__table-scroll{overscroll-behavior-inline:contain;border:1px solid var(--border);scrollbar-gutter:stable;border-radius:8px;min-width:0;max-width:100%;overflow-x:auto}.nr-targets__table-scroll:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.nr-targets__table{border-spacing:0;border-collapse:separate;table-layout:fixed;background:var(--surface-raised);width:max-content;min-width:100%}.nr-targets__table caption{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.nr-targets__table th,.nr-targets__table td{border-right:1px solid var(--border-soft);border-bottom:1px solid var(--border-soft);vertical-align:top;min-width:126px;padding:8px}.nr-targets__table th:last-child,.nr-targets__table td:last-child{border-right:0}.nr-targets__table tbody tr:last-child th,.nr-targets__table tbody tr:last-child td{border-bottom:0}.nr-targets__table thead th{color:var(--text-soft);background:var(--surface-soft);letter-spacing:.02em;text-align:right;text-transform:uppercase;white-space:nowrap;padding:9px 8px;font-size:10px;font-weight:800}.nr-targets__table .nr-targets__year-column{z-index:2;width:112px;min-width:112px;color:var(--text);background:var(--surface);text-align:left;position:sticky;left:0}.nr-targets__table thead .nr-targets__year-column{z-index:3;background:var(--surface-soft)}.nr-targets__table tbody th{padding-top:22px;font-family:Fira Code,Consolas,monospace;font-size:13px}.nr-target-editor{gap:4px;min-width:110px;display:grid}.nr-target-editor__input-wrap{position:relative}.nr-target-editor__input-wrap>span{z-index:1;color:var(--faint);pointer-events:none;font-family:Fira Code,Consolas,monospace;font-size:11px;position:absolute;top:50%;left:9px;transform:translateY(-50%)}.nr-target-editor input{border:1px solid var(--border);width:100%;min-height:44px;color:var(--text);background:var(--surface);text-align:right;border-radius:5px;outline:0;padding:0 8px 0 21px;font-family:Fira Code,Consolas,monospace;font-size:11px}.nr-target-editor input::placeholder{color:var(--faint);text-align:right;font-family:inherit}.nr-target-editor input:hover:not(:disabled){border-color:color-mix(in srgb, var(--accent) 40%, var(--border))}.nr-target-editor input:focus-visible{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 20%, transparent)}.nr-target-editor input:disabled{opacity:.72;cursor:wait}.nr-target-editor--dirty input{border-color:color-mix(in srgb, var(--accent) 65%, var(--border));background:color-mix(in srgb, var(--accent) 5%, var(--surface))}.nr-target-editor--error input{border-color:var(--danger)}.nr-target-editor__status{max-width:160px;color:var(--muted);align-items:flex-start;gap:4px;font-size:9px;line-height:1.35;display:flex}.nr-target-editor__status>svg{flex:none;margin-top:1px}.nr-target-editor--saved .nr-target-editor__status,.nr-target-editor--saving .nr-target-editor__status{color:var(--accent)}.nr-target-editor--error .nr-target-editor__status,.nr-target-editor--conflict .nr-target-editor__status{color:var(--danger)}.nr-targets__coverage,.nr-targets__total{color:var(--text-soft);white-space:nowrap;font-size:11px;min-width:150px!important;padding-top:17px!important}.nr-targets__coverage strong,.nr-targets__coverage span{display:block}.nr-targets__coverage span,.nr-targets__total span{color:var(--muted);margin-top:4px;font-size:10px}.nr-targets__total strong{font-family:Fira Code,Consolas,monospace;font-size:12px}.nr-targets__empty{border:1px dashed var(--border);color:var(--muted);text-align:center;border-radius:8px;padding:20px;font-size:12px}@media (width<=760px){.nr-targets{padding-left:12px;padding-right:12px}.nr-targets__intro{grid-template-columns:minmax(0,1fr)}}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#020617;--surface:#0b1120;--surface-raised:#0e1628;--surface-soft:#111b2e;--surface-hover:#162238;--border:#203049;--border-soft:#18253a;--text:#f1f5f9;--text-soft:#cbd5e1;--muted:#8291a8;--faint:#8b9bb2;--accent:#2dd4bf;--accent-strong:#14b8a6;--blue:#60a5fa;--warning:#fbbf24;--danger:#fb7185;--good:#2dd4bf;--booking-series-1:#5eead4;--booking-series-2:#93c5fd;--booking-series-3:#fbbf24;--booking-series-4:#f0abfc;--booking-series-5:#fb7185;--booking-series-6:#bef264;--booking-series-other:#cbd5e1;--booking-forecast:#fff;--booking-line-halo:#020617;--booking-marker-text:#020617;--booking-pattern-ink:#0206179e;--booking-zero-line:#94a3b8;--booking-cursor:#94a3b817;--sidebar-width:228px;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-family:Fira Sans,Segoe UI,Arial,sans-serif}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f4f7fb;--surface:#fff;--surface-raised:#f8fafc;--surface-soft:#f1f5f9;--surface-hover:#e7edf5;--border:#cbd5e1;--border-soft:#e2e8f0;--text:#0f172a;--text-soft:#334155;--muted:#5d6d83;--faint:#5f6f85;--accent:#14b8a6;--accent-strong:#0f766e;--blue:#2563eb;--warning:#b45309;--danger:#be123c;--good:#0f8a7e;--booking-series-1:#0f766e;--booking-series-2:#1d4ed8;--booking-series-3:#a16207;--booking-series-4:#86198f;--booking-series-5:#be123c;--booking-series-6:#3f6212;--booking-series-other:#475569;--booking-forecast:#111827;--booking-line-halo:#fff;--booking-marker-text:#fff;--booking-pattern-ink:#ffffffb8;--booking-zero-line:#64748b;--booking-cursor:#0f766e0f}*{box-sizing:border-box}html{background:var(--bg);min-width:320px}body{background:radial-gradient(circle at 88% -10%, #2dd4bf13, transparent 25rem), var(--bg);min-width:320px;min-height:100dvh;margin:0}:root[data-theme=light] body{background:radial-gradient(circle at 88% -10%, #14b8a61a, transparent 28rem), var(--bg)}body.modal-open{overflow:hidden}button,input,select{font:inherit}button,select,label.button{touch-action:manipulation}button{color:inherit}button:focus-visible,input:focus-visible,select:focus-visible,label.button:focus-within{outline-offset:2px;outline:2px solid #f8fafc}:root[data-theme=light] button:focus-visible,:root[data-theme=light] input:focus-visible,:root[data-theme=light] select:focus-visible,:root[data-theme=light] label.button:focus-within{outline-color:#0f766e}h1,h2,h3,p{margin:0}.skip-link{z-index:3000;color:#020617;background:#f8fafc;border-radius:7px;padding:10px 14px;transition:transform .16s;position:fixed;top:8px;left:8px;transform:translateY(-150%)}.skip-link:focus{transform:translateY(0)}.visually-hidden{clip:rect(0, 0, 0, 0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}.app-shell{min-height:100dvh}.sidebar{z-index:100;width:var(--sidebar-width);border-right:1px solid var(--border-soft);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#060c18f5;flex-direction:column;display:flex;position:fixed;inset:0 auto 0 0}.brand{border-bottom:1px solid var(--border-soft);align-items:center;gap:9px;min-height:78px;padding:0 14px;display:flex}.wsp-logo-frame{background:#fffffff5;border:1px solid #ff372f47;border-radius:9px;flex:none;justify-content:center;align-items:center;width:44px;height:34px;padding:5px;display:inline-flex;box-shadow:inset 0 1px #fff3}.wsp-logo-frame img{object-fit:contain;width:100%;height:100%;display:block}.wsp-logo-frame--sidebar{width:94px;height:46px;box-shadow:none;background:0 0;border:0;border-radius:0;padding:0}.wsp-logo-frame--loading{width:140px;height:76px;box-shadow:none;background:0 0;border:0;border-radius:0;padding:0}.brand>span:nth-child(2){flex-direction:column;min-width:0;display:flex}.brand strong{letter-spacing:-.01em;font-size:13px}.brand small{color:var(--muted);margin-top:1px;font-size:12px}.sidebar-close{margin-left:auto;display:none!important}.sidebar nav{flex-direction:column;gap:4px;padding:22px 12px;display:flex}.nav-label{color:var(--faint);letter-spacing:.12em;text-transform:uppercase;padding:0 10px 7px;font-size:12px;font-weight:700}.sidebar nav button{min-height:44px;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:11px;padding:0 11px;transition:color .18s,background .18s,border-color .18s;display:flex}.sidebar nav button:hover{color:var(--text-soft);background:#1e293b73}.sidebar nav button.is-active{color:#e6fffb;background:#2dd4bf17;border-color:#2dd4bf29}.sidebar nav button.is-active svg{color:var(--accent)}.sidebar nav button span{text-align:left;flex:1;font-size:13px;font-weight:600}.sidebar nav button small{color:#bfdbfe;text-align:center;background:#60a5fa24;border-radius:10px;min-width:20px;padding:2px 6px;font-size:12px}.sidebar__footer{border-top:1px solid var(--border-soft);color:var(--faint);flex-direction:column;gap:7px;margin-top:auto;padding:16px 18px 20px;font-size:12px;line-height:1.4;display:flex}.source-indicator{color:var(--muted);align-items:center;gap:7px;font-size:12px;font-weight:600;display:flex}.source-indicator i,.last-update i{background:var(--accent);border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 3px #2dd4bf1a}.main{min-width:0;min-height:100dvh;margin-left:var(--sidebar-width)}.topbar{border-bottom:1px solid var(--border-soft);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#020617c2;align-items:center;gap:16px;min-height:78px;padding:14px 24px;display:flex}.menu-button{display:none!important}.topbar-mobile-brand{flex:0 0 58px;align-items:center;width:58px;display:none}.topbar-mobile-brand img{width:100%;height:auto;display:block}.topbar__title{flex-direction:column;gap:2px;display:flex}.eyebrow{color:var(--muted);letter-spacing:.11em;text-transform:uppercase;font-size:12px;font-weight:700}.topbar h1{letter-spacing:-.035em;font-family:Fira Code,Consolas,monospace;font-size:19px;font-weight:600}.topbar__actions{align-items:center;gap:16px;margin-left:auto;display:flex}.last-update{color:var(--muted);align-items:center;gap:8px;font-size:12px;display:flex}.button{cursor:pointer;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;gap:8px;min-height:44px;padding:0 15px;font-size:12px;font-weight:700;text-decoration:none;transition:background .18s,border-color .18s,color .18s,transform .1s;display:inline-flex}.button:active:not(:disabled){transform:translateY(1px)}.button--primary{color:#03231f;background:var(--accent);border-color:#2dd4bf}.button--primary:hover{background:#5eead4;border-color:#5eead4}.button--secondary{border-color:var(--border);color:var(--text-soft);background:var(--surface-soft)}.theme-toggle{border-color:var(--border);min-width:108px;color:var(--text-soft);background:var(--surface)}.theme-toggle:hover{color:var(--text);background:var(--surface-hover);border-color:#4d647f}.button--secondary:hover:not(:disabled){color:var(--text);background:var(--surface-hover);border-color:#3b516e}.button:disabled,.button.is-disabled{opacity:.45;cursor:not-allowed}.icon-button{border:1px solid var(--border);width:44px;height:44px;color:var(--muted);background:var(--surface-soft);cursor:pointer;border-radius:8px;flex:none;justify-content:center;align-items:center;transition:color .18s,background .18s,border-color .18s;display:inline-flex}.icon-button:hover{color:var(--text);background:var(--surface-hover);border-color:#3b516e}.icon-button--small{width:44px;height:44px}.filters{z-index:30;border-bottom:1px solid var(--border-soft);background:#0b112099;align-items:flex-end;gap:10px;padding:12px 24px;display:flex;position:relative}.project-search{flex:.65 240px;min-width:180px;max-width:340px;position:relative}.search-field{border:1px solid var(--border);width:100%;height:44px;color:var(--muted);background:var(--surface);border-radius:7px;align-items:center;gap:8px;padding:0 11px;display:flex}.search-field:focus-within,.combobox-wrap:focus-within{border-color:#64748b;box-shadow:0 0 0 2px #94a3b81f}.search-field input,.combobox-wrap input{width:100%;min-width:0;color:var(--text-soft);background:0 0;border:0;outline:0;font-size:12px}.search-field input::placeholder,.combobox-wrap input::placeholder{color:var(--faint)}.search-results,.combobox-list{z-index:100;border:1px solid var(--border);width:100%;max-height:min(360px,55vh);color:var(--text-soft);background:var(--surface-raised);border-radius:9px;margin:0;padding:5px;list-style:none;position:absolute;top:calc(100% + 6px);left:0;overflow-y:auto;box-shadow:0 18px 45px #00000061}.search-results li,.combobox-list li{cursor:pointer;border-radius:6px;align-items:center;gap:9px;min-height:44px;padding:7px 9px;display:flex}.search-results li.is-active,.search-results li:hover,.combobox-list li.is-active,.combobox-list li:hover{color:var(--text);background:var(--surface-hover)}.search-results li{grid-template-columns:minmax(0,1fr) 16px;grid-template-areas:"project arrow""cost-centre arrow";align-items:start;min-height:68px;display:grid}.search-results li>span{flex-direction:column;gap:3px;min-width:0;display:flex}.search-results li>span:first-child{grid-area:project}.search-results li>span:nth-child(2){text-align:left;grid-area:cost-centre;align-items:flex-start}.search-results li>svg{grid-area:arrow;align-self:center}.search-results strong,.search-results small{overflow-wrap:anywhere;white-space:normal;min-width:0}.search-results strong{font-size:12px}.search-results small{color:var(--muted);font-size:12px}.filter-grid{flex:2.35 620px;grid-template-columns:minmax(150px,1.5fr) repeat(3,minmax(96px,1fr));gap:7px;display:grid}.filter-select{flex-direction:column;gap:4px;min-width:0;display:flex;position:relative}.filter-select>label{color:var(--faint);text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;padding-left:2px;font-size:12px;font-weight:700;overflow:hidden}.combobox-wrap{border:1px solid var(--border);background:var(--surface);border-radius:7px;align-items:center;height:44px;display:flex;position:relative}.combobox-wrap input{height:100%;padding:0 45px 0 9px}.combobox-wrap:hover{border-color:#3b516e}.combobox-clear{width:44px;height:44px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;display:inline-flex;position:absolute;right:0}.combobox-clear:hover{color:var(--text);background:var(--surface-hover)}.combobox-chevron{color:var(--faint);pointer-events:none;position:absolute;right:9px}.combobox-list{min-width:190px;top:calc(100% + 5px)}.combobox-list li{justify-content:space-between;font-size:12px}.combobox-list li span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.search-results .combobox-empty,.combobox-list .combobox-empty{min-height:44px;color:var(--muted);cursor:default;font-size:12px}.clear-filters{color:#fda4af;cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;min-width:max-content;min-height:44px;padding:0 10px;font-size:12px;font-weight:700;display:flex}.clear-filters:hover{color:#fecdd3}.content{max-width:1680px;margin:0 auto;padding:18px 24px 32px}.kpi-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin-bottom:10px;display:grid}.scope-refresh-alert{min-height:44px;color:var(--text-soft);background:#fbbf2412;border:1px solid #fbbf2447;border-radius:8px;align-items:center;gap:10px;margin-bottom:10px;padding:9px 12px;font-size:12px;line-height:1.45;display:flex}.scope-refresh-alert svg{color:var(--warning);flex:none}.scope-refresh-alert strong{color:var(--text)}:root[data-theme=light] .scope-refresh-alert{background:#b4530912}.kpi{border:1px solid var(--border-soft);background:linear-gradient(135deg, #ffffff05, transparent 50%), var(--surface);border-radius:10px;flex-direction:column;justify-content:space-between;min-width:0;min-height:94px;padding:11px 12px;display:flex;position:relative;overflow:hidden;box-shadow:inset 0 1px #ffffff05}.kpi:before{content:"";background:#475569;width:2px;position:absolute;inset:0 auto 0 0}.kpi--good:before{background:var(--good)}.kpi--warning:before{background:var(--warning)}.kpi--danger:before{background:var(--danger)}.kpi__top{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.kpi__label{color:var(--muted);letter-spacing:.02em;text-transform:uppercase;font-size:12px;font-weight:700}.icon-box{border:1px solid var(--border-soft);width:30px;height:30px;color:var(--muted);background:#1e293b59;border-radius:8px;justify-content:center;align-items:center;display:flex}.kpi--good .icon-box{color:var(--good)}.kpi--warning .icon-box{color:var(--warning)}.kpi--danger .icon-box{color:var(--danger)}.kpi>strong{letter-spacing:-.045em;text-overflow:ellipsis;white-space:nowrap;margin-top:8px;font-family:Fira Code,Consolas,monospace;font-size:clamp(19px,1.8vw,25px);font-weight:600;overflow:hidden}.kpi__detail{color:var(--muted);overflow-wrap:anywhere;white-space:normal;margin-top:4px;font-size:clamp(12px,.9vw,14px);font-weight:500;line-height:1.35}.dashboard-grid{grid-template-columns:minmax(0,1.45fr) minmax(360px,.9fr);gap:10px;display:grid}.dashboard-aside{align-self:start;gap:10px;min-width:0;display:grid}.panel{border:1px solid var(--border-soft);background:linear-gradient(155deg, #ffffff03, transparent 32%), var(--surface);border-radius:10px;min-width:0;overflow:hidden}.panel--full{grid-column:1/-1}.panel__header{border-bottom:1px solid var(--border-soft);justify-content:space-between;align-items:center;gap:12px;min-height:61px;padding:13px 15px;display:flex}.panel__header>div:first-child{flex-direction:column;gap:3px;display:flex}.panel h2{letter-spacing:-.01em;font-size:13px;font-weight:700}.panel-count{border:1px solid var(--border);color:var(--muted);text-transform:uppercase;background:#1e293b59;border-radius:12px;padding:4px 8px;font-size:12px;font-weight:700}.chart{width:100%}.chart[tabindex]:focus-visible,.chart-data-disclosure summary:focus-visible{outline-offset:-3px;outline:2px solid #f8fafc}:root[data-theme=light] .chart[tabindex]:focus-visible,:root[data-theme=light] .chart-data-disclosure summary:focus-visible{outline-color:#0f766e}.chart--primary{height:310px;padding:0 9px 9px 0}.chart--sector{height:260px;padding:7px 9px 8px 0}.chart--detail{height:280px;margin-top:8px}.recharts-text{font-family:Fira Sans,Segoe UI,sans-serif;font-size:12px}.chart-tooltip{border:1px solid var(--border);width:min(380px,100vw - 28px);max-height:min(520px,100vh - 28px);color:var(--text-soft);background:var(--surface-raised);border-radius:8px;flex-direction:column;gap:8px;padding:11px 12px;font-size:12px;line-height:1.4;display:flex;overflow-y:auto;box-shadow:0 10px 30px #00000059}.chart-tooltip__title,.chart-keyboard-detail__content>.chart-tooltip__title{color:var(--text);font-weight:700}.chart-tooltip__values{gap:5px;margin:0;display:grid}.chart-tooltip__values>div{border-top:1px solid var(--border-soft);grid-template-columns:minmax(0,1.45fr) minmax(100px,.8fr);align-items:start;gap:12px;padding-top:5px;display:grid}.chart-tooltip__values dt{color:var(--muted);font-weight:600}.chart-tooltip__values dd{color:var(--text);text-align:right;overflow-wrap:anywhere;margin:0;font-family:Fira Code,Consolas,monospace;font-weight:600}.chart-tooltip small,.chart-keyboard-detail__content small{border-top:1px solid var(--border-soft);color:var(--muted);padding-top:7px;font-size:12px;line-height:1.45}.week-bar-label{pointer-events:none;fill:#f8fafc;letter-spacing:.1px;font-family:Fira Sans,Segoe UI,sans-serif;font-size:12px;font-weight:700}.legend{max-width:min(720px,68vw);color:var(--muted);flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px 12px;font-size:12px;display:flex}.legend span{align-items:center;gap:5px;display:flex}.legend__swatch{border:1px solid #0000;border-radius:2px;flex:none;width:12px;height:10px}.legend__swatch--teal{border-color:var(--accent-strong);background:var(--accent-strong)}.legend__line{border-top:2px solid var(--blue);background:0 0;flex:none;width:18px;height:0}.legend__line--budget-step{background:linear-gradient(var(--blue), var(--blue)) 0 0 / 55% 2px no-repeat, linear-gradient(var(--blue), var(--blue)) 55% 0 / 2px 8px no-repeat, linear-gradient(var(--blue), var(--blue)) 100% 100% / 45% 2px no-repeat;border:0;height:8px}.health-overview{align-items:center;gap:6px;height:250px;padding:12px 18px;display:flex}.health-chart{width:52%;height:180px;position:relative}.health-chart__center{flex-direction:column;align-items:center;display:flex;position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%)}.health-chart__center strong{font-family:Fira Code,monospace;font-size:25px;line-height:1}.health-chart__center span{color:var(--muted);text-transform:uppercase;margin-top:3px;font-size:12px}.health-list{flex-direction:column;flex:1;gap:10px;display:flex}.health-list>div{justify-content:space-between;align-items:center;gap:10px;display:flex}.health-list span{color:var(--muted);align-items:center;gap:7px;font-size:12px;display:flex}.health-list i{border-radius:50%;width:7px;height:7px}.health-list strong{font-family:Fira Code,monospace;font-size:12px}.office-list{flex-direction:column;padding:7px 9px 9px;display:flex}.office-row{border:0;border-bottom:1px solid var(--border-soft);text-align:left;cursor:pointer;background:0 0;border-radius:6px;grid-template-columns:minmax(88px,1fr) minmax(70px,1fr) 65px 18px;align-items:center;gap:10px;min-height:47px;padding:5px 7px;transition:background .18s;display:grid}.office-row:last-child{border-bottom-color:#0000}.office-row:hover{background:var(--surface-soft)}.office-row__name,.office-row__value{flex-direction:column;gap:2px;min-width:0;display:flex}.office-row__name strong,.office-row__value strong{text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.office-row__name small,.office-row__value small{color:var(--faint);font-size:12px}.office-row__bar{background:#1e293b;border-radius:5px;height:5px;overflow:hidden}.office-row__bar i{border-radius:inherit;background:var(--good);height:100%;display:block}.office-row__bar i.is-watch{background:var(--warning)}.office-row__bar i.is-critical{background:var(--danger)}.office-row>svg{color:var(--faint)}.table-scroll{width:100%;overflow-x:auto}.data-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:12px}.data-table th{height:44px;color:var(--faint);letter-spacing:.06em;text-align:left;text-transform:uppercase;white-space:nowrap;background:#111b2e73;padding:0 10px;font-size:12px;font-weight:700}.data-table th button{width:100%;min-height:44px;color:inherit;font-size:inherit;font-weight:inherit;letter-spacing:inherit;text-align:inherit;text-transform:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:0;display:flex}.data-table th.is-numeric,.data-table th.is-numeric button{text-align:right}.data-table th.is-numeric button{justify-content:flex-end}.data-table th[aria-sort=ascending] button,.data-table th[aria-sort=descending] button{color:var(--text-soft)}.sort-indicator{color:var(--faint);text-align:center;flex:0 0 16px;font-size:14px;line-height:1}.data-table th[aria-sort=ascending] .sort-indicator,.data-table th[aria-sort=descending] .sort-indicator{color:var(--accent)}.data-table td{border-top:1px solid var(--border-soft);min-height:54px;color:var(--text-soft);vertical-align:middle;padding:9px 10px}.data-table tbody tr{transition:background .16s}.data-table tbody tr:hover{background:#1e293b38}.project-table{min-width:1040px}.project-table th:first-child{width:23%}.project-table th:nth-child(2){width:14%}.project-table th:nth-child(3){width:12%}.project-table th:nth-child(4){width:20%}.project-table th:nth-child(5),.project-table th:nth-child(6){text-align:right;width:9%}.project-table th:nth-child(7){width:11%}.project-table td:nth-child(5),.project-table td:nth-child(6){text-align:right}.project-link{max-width:300px;min-height:44px;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;flex-direction:column;justify-content:center;gap:3px;padding:0;display:flex}.project-link:hover strong{color:var(--accent)}.project-link strong{text-overflow:ellipsis;white-space:nowrap;font-size:12px;transition:color .16s;overflow:hidden}.project-link span,.cell-secondary{color:var(--faint);text-overflow:ellipsis;white-space:nowrap;font-size:12px;display:block;overflow:hidden}.cell-primary{margin-bottom:3px;font-size:12px;font-weight:600;display:block}.health{white-space:nowrap;border:1px solid;border-radius:12px;align-items:center;gap:6px;width:max-content;min-height:23px;padding:0 8px;font-size:12px;font-weight:700;display:inline-flex}.health__dot{border-radius:50%;width:5px;height:5px}.health--healthy{color:#99f6e4;background:#2dd4bf12;border-color:#2dd4bf38}.health--healthy .health__dot{background:var(--good)}.health--watch{color:#fde68a;background:#fbbf2412;border-color:#fbbf243d}.health--watch .health__dot{background:var(--warning)}.health--critical{color:#fecdd3;background:#fb718512;border-color:#fb71853d}.health--critical .health__dot{background:var(--danger)}.health--opportunity{color:#bfdbfe;background:#60a5fa12;border-color:#60a5fa3d}.health--opportunity .health__dot{background:var(--blue)}.health--unclassified{color:#cbd5e1;background:#94a3b814;border-color:#94a3b84d}.health--unclassified .health__dot{background:#94a3b8}.future-flag{white-space:nowrap;border:1px solid;border-radius:9px;flex-direction:column;gap:3px;width:max-content;max-width:150px;padding:5px 8px;font-family:Inter,sans-serif;display:inline-flex}.future-flag__label{align-items:center;gap:6px;font-size:12px;font-weight:800;display:inline-flex}.future-flag__dot{background:currentColor;border-radius:50%;width:6px;height:6px}.future-flag__detail{color:currentColor;opacity:.82;font-family:Fira Code,Consolas,monospace;font-size:10px}.future-flag--inline{border-radius:12px;flex-direction:row;align-items:center;max-width:none;min-height:23px;padding:0 8px}.future-flag--green{color:#99f6e4;background:#2dd4bf14;border-color:#2dd4bf47}.future-flag--amber{color:#fde68a;background:#fbbf2414;border-color:#fbbf244d}.future-flag--red{color:#fecdd3;background:#fb718514;border-color:#fb71854d}.future-flag--no-data{color:#cbd5e1;background:#94a3b814;border-color:#94a3b84d}.progress-cell{flex-direction:column;gap:6px;min-width:135px;display:flex}.progress-cell__values{justify-content:space-between;align-items:center;gap:8px;display:flex}.progress-cell__values strong{font-family:Fira Code,monospace;font-size:12px}.progress-cell__values span{color:var(--faint);font-size:12px}.progress{background:#1e293b;border-radius:4px;height:4px;overflow:hidden}.progress span{border-radius:inherit;background:var(--good);height:100%;display:block}.progress--watch span{background:var(--warning)}.progress--critical span{background:var(--danger)}.progress--opportunity span{background:var(--blue)}.number{white-space:nowrap;font-family:Fira Code,Consolas,monospace;font-size:12px}.number--good{color:#5eead4!important}.number--warning{color:#fcd34d!important}.number--bad{color:#fda4af!important}.wip-label{white-space:normal;margin-top:3px;font-family:Fira Sans,Segoe UI,sans-serif;font-size:12px;font-weight:700;color:currentColor!important}.empty-state{min-height:220px;color:var(--faint);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:7px;padding:30px;display:flex}.empty-state strong{color:var(--text-soft);font-size:13px}.empty-state span{font-size:12px}.empty-state--compact{min-height:110px}.empty-state--chart{min-height:250px}.project-register{min-height:calc(100dvh - 190px)}.opportunity-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:12px;display:grid}.opportunity-card{border:1px solid var(--border-soft);background:var(--surface-raised);text-align:left;cursor:pointer;border-radius:9px;flex-direction:column;justify-content:space-between;gap:14px;min-height:185px;padding:14px;transition:border-color .18s,background .18s,transform .12s;display:flex}.opportunity-card:hover{background:var(--surface-hover);border-color:#334c6b}.opportunity-card:active{transform:translateY(1px)}.opportunity-card__top{color:var(--faint);justify-content:space-between;align-items:center;display:flex}.opportunity-card>span:nth-child(2){flex-direction:column;gap:4px;display:flex}.opportunity-card>span:nth-child(2) strong{font-size:13px}.opportunity-card>span:nth-child(2) small{color:var(--muted);font-size:12px}.opportunity-card__meta{border-top:1px solid var(--border-soft);grid-template-columns:1fr 1fr;gap:10px;padding-top:12px;display:grid}.opportunity-card__meta>span{flex-direction:column;gap:3px;min-width:0;display:flex}.opportunity-card__meta small{color:var(--faint);text-transform:uppercase;font-size:12px}.opportunity-card__meta strong{color:var(--text-soft);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.sources-layout{grid-template-columns:minmax(0,1fr);gap:10px;display:grid}.source-current{grid-template-columns:minmax(250px,.72fr) minmax(0,2.28fr);align-self:start;display:grid}.source-current>.panel__header,.source-current>.data-quality,.source-current>.callout,.source-current>.button{grid-column:1/-1}.source-summary{border-right:1px solid var(--border-soft);align-items:flex-start;gap:13px;padding:18px 16px;display:flex}.source-summary__icon{width:44px;height:44px;color:var(--accent);background:#2dd4bf12;border:1px solid #2dd4bf38;border-radius:10px;flex:none;justify-content:center;align-items:center;display:flex}.source-summary>div{flex-direction:column;align-items:flex-start;gap:7px;min-width:0;display:flex}.source-summary h3{overflow-wrap:anywhere;font-size:14px}.source-summary p{color:var(--muted);font-size:12px}.source-stats{background:var(--border-soft);grid-template-columns:repeat(5,minmax(0,1fr));align-content:stretch;gap:1px;min-width:0;margin:0;padding:0;display:grid}.source-stats>div{background:var(--surface);flex-direction:column;justify-content:center;align-items:flex-start;gap:5px;min-width:0;min-height:60px;padding:10px 13px;display:flex}.source-stats>.source-stat--scope{grid-column:1/-1;min-height:52px}.source-stats dt{color:var(--muted);font-size:12px}.source-stats dd{overflow-wrap:anywhere;max-width:100%;color:var(--text-soft);margin:0;font-family:Fira Code,monospace;font-size:12px}.data-quality{border:1px solid var(--border-soft);background:var(--surface-soft);border-radius:8px;margin:0 16px 16px;padding:12px}.data-quality--warning{background:#fbbf2412;border-color:#fbbf2452}.data-quality__header{justify-content:space-between;align-items:center;gap:12px;display:flex}.data-quality__header h3{margin-top:2px;font-size:15px}.data-quality__status{color:var(--text-soft);background:var(--surface-raised);border-radius:999px;padding:4px 8px;font-size:12px;font-weight:700}.data-quality--warning .data-quality__status{color:#fde68a;background:#fbbf241f}.data-quality>p{color:var(--muted);margin-top:8px;font-size:12px;line-height:1.5}.data-quality__counts{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;margin:12px 0 0;display:grid}.data-quality__counts>div{border:1px solid var(--border-soft);background:var(--surface-raised);border-radius:6px;padding:9px}.data-quality__counts dt{color:var(--muted);font-size:12px}.data-quality__counts dd{color:var(--text);margin:4px 0 0;font-family:Fira Code,monospace;font-size:14px;font-weight:700}.data-quality details{border-top:1px solid var(--border-soft);margin-top:10px}.data-quality summary{min-height:44px;color:var(--text-soft);cursor:pointer;align-items:center;font-size:12px;font-weight:700;display:flex}.data-quality summary:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.data-quality__issues{gap:8px;margin:0;padding:0;list-style:none;display:grid}.data-quality__issues+.data-quality__issues{margin-top:8px}.data-quality__issues li{background:var(--surface-raised);border-radius:6px;gap:3px;padding:9px;display:grid}.data-quality__issues strong,.data-quality__issues span,.data-quality__issues small{font-size:12px;line-height:1.45}.data-quality__issues span,.data-quality__issues small{color:var(--muted)}.data-quality__sample-evidence{grid-template-columns:repeat(auto-fit,minmax(112px,1fr));gap:6px;margin:7px 0 0;display:grid}.data-quality__sample-evidence>div{border:1px solid var(--border-soft);border-radius:5px;min-width:0;padding:6px}.data-quality__sample-evidence dt{color:var(--muted);font-size:12px}.data-quality__sample-evidence dd{overflow-wrap:anywhere;color:var(--text-soft);margin:2px 0 0;font-family:Fira Code,monospace;font-size:12px}.source-current>.button{width:calc(100% - 32px);margin:0 16px 16px}.connection-list{flex-direction:column;padding:6px 14px 12px;display:flex}.connection-card{border-bottom:1px solid var(--border-soft);grid-template-columns:40px 1fr;gap:12px;padding:14px 0;display:grid}.connection-card:last-child{border-bottom:0}.connection-card__icon{border:1px solid var(--border);width:38px;height:38px;color:var(--muted);background:var(--surface-soft);border-radius:9px;justify-content:center;align-items:center;display:flex}.connection-card__icon--powerbi{color:var(--warning);background:#fbbf2412;border-color:#fbbf2433}.connection-card__title{justify-content:space-between;align-items:center;gap:10px;display:flex}.connection-card__title strong{font-size:12px}.connection-card p{max-width:75ch;color:var(--muted);margin-top:5px;font-size:12px;line-height:1.55}.ready-tag,.setup-tag{white-space:nowrap;border:1px solid;border-radius:10px;padding:3px 7px;font-size:12px;font-weight:700}.ready-tag{color:#99f6e4;background:#2dd4bf12;border-color:#2dd4bf38}.setup-tag{color:#fde68a;background:#fbbf2412;border-color:#fbbf2438}.source-guide{grid-column:1/-1}.recommendation{gap:12px;padding:17px 16px 13px;display:flex}.recommendation>span{color:var(--accent)}.recommendation h3{font-size:14px}.recommendation p{max-width:85ch;color:var(--muted);margin-top:4px;font-size:12px;line-height:1.55}.setup-steps{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:0;padding:0 16px 16px;list-style:none;display:grid}.setup-steps li{border:1px solid var(--border-soft);background:var(--surface-raised);border-radius:8px;gap:9px;min-height:115px;padding:12px;display:flex}.setup-steps li>span{color:#bfdbfe;background:#60a5fa12;border:1px solid #60a5fa38;border-radius:50%;flex:none;justify-content:center;align-items:center;width:22px;height:22px;font-family:Fira Code,monospace;font-size:12px;display:flex}.setup-steps strong{font-size:12px;line-height:1.35}.setup-steps p{color:var(--muted);margin-top:5px;font-size:12px;line-height:1.5}.callout{color:#bfdbfe;background:#60a5fa0d;border:1px solid #60a5fa2e;border-radius:7px;gap:9px;margin:0 16px 16px;padding:10px 12px;display:flex}.callout svg{flex:none}.callout p{color:#abc4e8;font-size:12px;line-height:1.5}.callout--warning{color:#fde68a;background:#fbbf2414;border-color:#fbbf2452}.callout--warning p{color:#fde68a}:root[data-theme=light] .callout--warning{color:#92400e;background:#fffbeb;border-color:#f3cc78}:root[data-theme=light] .callout--warning p{color:#78350f}.detail-overlay,.modal-overlay{z-index:1000;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#00040dc7;justify-content:center;align-items:center;padding:clamp(14px,3vw,34px);animation:.18s both fade-in;display:flex;position:fixed;inset:0}.detail-panel{overscroll-behavior:contain;border:1px solid var(--border);background:#07101f;border-radius:14px;width:min(1600px,100%);max-height:min(94dvh,1040px);animation:.22s both modal-in;overflow-y:auto;box-shadow:0 28px 80px #0000007a}.detail-panel__header{z-index:5;border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#07101ff0;justify-content:space-between;align-items:flex-start;gap:20px;min-height:108px;padding:20px 22px;display:flex;position:sticky;top:0}.detail-panel__heading{flex-direction:column;gap:7px;min-width:0;display:flex}.detail-panel__heading h2{overflow-wrap:anywhere;letter-spacing:-.025em;font-size:20px}.detail-panel__tags{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.detail-panel__tags>span:not(.health){border:1px solid var(--border);min-height:23px;color:var(--muted);background:var(--surface-soft);border-radius:12px;align-items:center;padding:0 8px;font-size:12px;font-weight:700;display:inline-flex}.detail-panel__content{flex-direction:column;gap:10px;padding:14px 18px 30px;display:flex}.financial-position-strip{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-top:12px;display:grid}.financial-position-strip>div{border:1px solid var(--border-soft);background:var(--surface-soft);border-radius:7px;flex-direction:column;gap:5px;min-width:0;padding:10px;display:flex}.financial-position-strip span{color:var(--muted);text-transform:uppercase;font-size:12px;font-weight:700;line-height:1.35}.financial-position-strip strong{text-overflow:ellipsis;white-space:nowrap;font-family:Fira Code,monospace;font-size:12px;overflow:hidden}.detail-chart-legend{color:var(--muted);flex-wrap:wrap;align-items:center;gap:14px;margin-top:12px;font-size:12px;display:flex}.detail-chart-legend span{align-items:center;gap:6px;display:inline-flex}.chart-method{color:var(--muted);margin-top:8px;font-size:12px;line-height:1.55}.chart-method--panel{padding:0 18px 14px}.chart-keyboard-detail{border:1px solid var(--border);border-left:3px solid var(--accent);color:var(--text-soft);background:var(--surface-soft);border-radius:8px;margin:0 14px 10px;padding:10px 12px}.chart-keyboard-detail__label{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;margin-bottom:6px;font-size:12px;font-weight:700;display:block}.chart-keyboard-detail__content{flex-direction:column;gap:8px;font-size:12px;line-height:1.45;display:flex}.chart-keyboard-detail__content .chart-tooltip__values{grid-template-columns:repeat(2,minmax(0,1fr));gap:5px 14px}.chart-keyboard-detail__content .chart-tooltip__values>div{grid-template-columns:minmax(0,1.4fr) minmax(100px,.8fr)}.chart-data-disclosure{border:1px solid var(--border-soft);background:var(--surface-soft);border-radius:8px;margin:0 14px 12px}.chart-data-disclosure summary{min-height:44px;color:var(--text-soft);cursor:pointer;align-items:center;padding:8px 12px;font-size:12px;font-weight:700;list-style-position:inside;display:flex}.chart-data-disclosure summary:before{width:18px;color:var(--accent);content:"+";flex:0 0 18px;margin-right:5px;font-family:Fira Code,Consolas,monospace;font-size:16px;line-height:1}.chart-data-disclosure[open] summary:before{content:"−"}.chart-data-disclosure summary:hover{color:var(--text);background:var(--surface-hover)}.chart-data-scroll{border-top:1px solid var(--border-soft);max-height:360px;overflow:auto}.chart-data-table{border-collapse:collapse;width:max-content;min-width:100%;color:var(--text-soft);font-size:12px}.chart-data-table caption{color:var(--text);text-align:left;padding:10px 12px;font-weight:700}.chart-data-table th,.chart-data-table td{border-top:1px solid var(--border-soft);text-align:left;vertical-align:top;white-space:normal;min-width:120px;padding:8px 10px}.chart-data-table th{z-index:1;max-width:190px;color:var(--muted);background:var(--surface-raised);font-weight:700;position:sticky;top:0}.chart-data-table td{font-family:Fira Code,Consolas,monospace}.chart-data-table th:first-child,.chart-data-table td:first-child{min-width:130px}.chart-data-table tbody tr:hover{background:var(--surface-hover)}.detail-load-state{border:1px solid var(--border);min-height:72px;color:var(--text-muted);background:var(--surface-soft);border-radius:8px;justify-content:center;align-items:center;gap:10px;font-size:13px;display:flex}.detail-panel__content>.error-banner{margin:0}.detail-kpis{grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;display:grid}.detail-kpis>div{border:1px solid var(--border-soft);background:var(--surface);border-radius:8px;flex-direction:column;gap:7px;min-width:0;padding:12px;display:flex}.detail-kpis span{color:var(--muted);text-transform:uppercase;font-size:12px;font-weight:700}.detail-kpis strong{text-overflow:ellipsis;white-space:nowrap;font-family:Fira Code,monospace;font-size:14px;overflow:hidden}.detail-kpis .metric-status{color:currentColor;text-transform:none;font-size:12px;font-weight:700;line-height:1.35}.number--neutral{color:var(--text-soft)!important}.detail-section{border:1px solid var(--border-soft);background:var(--surface);border-radius:8px;padding:14px}.detail-section__header{justify-content:space-between;align-items:center;gap:12px;display:flex}.detail-section__header>div{flex-direction:column;gap:3px;display:flex}.detail-section__header h3{font-size:12px}.detail-section__header>span{color:var(--muted);font-family:Fira Code,monospace;font-size:12px}.detail-section__header--ownership{align-items:flex-start}.email-team-button{white-space:nowrap;border-color:var(--border);min-width:132px;min-height:44px;color:var(--text-soft);background:var(--surface-soft);flex:none}.email-team-button:hover:not(:disabled){border-color:var(--accent);color:var(--text);background:var(--surface-hover)}.detail-progress{background:#1e293b;border-radius:5px;height:8px;margin-top:12px;overflow:hidden}.detail-progress span{border-radius:inherit;background:var(--good);height:100%;display:block}.detail-progress--watch span{background:var(--warning)}.detail-progress--critical span{background:var(--danger)}.detail-progress--opportunity span{background:var(--blue)}.detail-columns{grid-template-columns:1fr 1fr;gap:10px;display:grid}.project-facts{margin:8px 0 0}.project-facts>div{border-top:1px solid var(--border-soft);justify-content:space-between;align-items:center;gap:12px;min-height:34px;display:flex}.project-facts dt{color:var(--muted);font-size:12px}.project-facts dd{overflow-wrap:anywhere;max-width:60%;color:var(--text-soft);text-align:right;margin:0;font-size:12px;font-weight:600}.detail-section>.table-scroll{width:calc(100% + 28px);margin:9px -14px -14px}.detail-section .data-table{width:100%;min-width:680px}.people-header-actions{align-items:flex-end;gap:5px!important}.scope-toggle{border:1px solid var(--border);background:var(--surface-soft);border-radius:8px;flex-direction:row;gap:0;padding:2px;display:inline-flex}.scope-toggle button{min-height:44px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:0 12px;font-size:12px;font-weight:700}.scope-toggle button[aria-pressed=true]{color:var(--text);background:var(--surface-hover);box-shadow:inset 0 -2px 0 var(--accent), inset 0 0 0 1px var(--border-soft);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}.people-scope-meta,.people-header-actions>span:last-child{color:var(--muted);font-family:Fira Code,monospace;font-size:12px}.people-scope-meta{white-space:normal;max-width:470px;line-height:1.45}.people-quality-warning{border:1px solid color-mix(in srgb, var(--warning) 38%, transparent);color:var(--warning);background:color-mix(in srgb, var(--warning) 8%, transparent);border-radius:7px;align-items:flex-start;gap:8px;margin-top:10px;padding:9px 10px;font-size:12px;line-height:1.45;display:flex}.people-quality-warning svg{flex:none;margin-top:1px}.detail-section .team-table{min-width:820px}.team-table th:first-child{width:28%}.team-table th:nth-child(2){width:36%}.team-table th:nth-child(3),.team-table th:nth-child(4){width:18%}.team-person{align-items:center;gap:9px;min-width:0;display:flex}.avatar{color:#bfdbfe;background:#60a5fa12;border:1px solid #60a5fa33;border-radius:50%;flex:0 0 30px;justify-content:center;align-items:center;width:30px;height:30px;font-family:Fira Code,monospace;font-size:12px;display:flex}.team-person__identity{flex-direction:column;gap:3px;min-width:0;display:flex}.team-person__identity strong{text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.team-person__identity small{overflow-wrap:anywhere;color:var(--faint);font-size:12px}.home-cost-centre-conflict{min-width:0;color:var(--warning);flex-direction:column;gap:3px;display:flex}.home-cost-centre-conflict strong{align-items:center;gap:5px;font-size:12px;display:inline-flex}.home-cost-centre-conflict small{overflow-wrap:anywhere;color:var(--muted);font-size:12px;line-height:1.4}.modal-overlay{justify-content:center;align-items:center;padding:18px}.refresh-modal{border:1px solid var(--border);background:#091222;border-radius:12px;width:min(680px,100%);max-height:calc(100dvh - 36px);animation:.22s both modal-in;overflow-y:auto;box-shadow:0 30px 80px #0000007a}.refresh-modal>header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-start;gap:18px;padding:18px 19px;display:flex}.refresh-modal>header>div{flex-direction:column;gap:5px;display:flex}.refresh-modal h2{font-size:17px}.refresh-modal>header p{color:var(--muted);font-size:12px}.refresh-options{flex-direction:column;padding:7px 16px;display:flex}.refresh-option{border-bottom:1px solid var(--border-soft);grid-template-columns:42px minmax(0,1fr) max-content;align-items:center;gap:12px;padding:12px 0;display:grid}.refresh-option:last-child{border-bottom:0}.refresh-option h3{font-size:12px}.refresh-option p{color:var(--muted);margin-top:4px;font-size:12px;line-height:1.45}.refresh-progress{border:1px solid var(--border);background:var(--surface-soft);border-radius:9px;flex-direction:column;gap:11px;margin:2px 16px 14px;padding:14px;display:flex}.refresh-progress__heading{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.refresh-progress__heading>span{flex-direction:column;gap:3px;display:flex}.refresh-progress__heading strong{font-size:12px}.refresh-progress__heading>strong{color:var(--accent);font-variant-numeric:tabular-nums}.refresh-progress__heading small,.refresh-progress__meta{color:var(--muted);font-size:12px;line-height:1.45}.refresh-progress__track{background:var(--border);border-radius:999px;height:8px;overflow:hidden}.refresh-progress__track>span{border-radius:inherit;background:linear-gradient(90deg, var(--accent), var(--blue));height:100%;transition:width .3s;display:block}.refresh-progress__meta{font-variant-numeric:tabular-nums;flex-wrap:wrap;justify-content:space-between;gap:6px 16px;display:flex}.refresh-modal>footer{border-top:1px solid var(--border);min-height:44px;color:var(--muted);background:#111b2e80;align-items:center;gap:8px;padding:0 18px;font-size:12px;display:flex}.refresh-modal>footer svg{color:var(--accent)}.error-banner{color:#fecdd3;background:#fb718512;border:1px solid #fb71853d;border-radius:7px;align-items:flex-start;gap:10px;margin:13px 16px 0;padding:10px 12px;display:flex}.error-banner>span{flex-direction:column;gap:3px;font-size:12px;line-height:1.4;display:flex}.error-banner strong{font-size:12px}.toast{z-index:2000;color:#ccfbf1;background:#081b1cf5;border:1px solid #2dd4bf47;border-radius:9px;grid-template-columns:20px 1fr 32px;align-items:center;gap:8px;max-width:min(430px,100vw - 36px);min-height:48px;padding:7px 8px 7px 13px;font-size:12px;animation:.22s both toast-in;display:grid;position:fixed;bottom:18px;right:18px;box-shadow:0 18px 45px #00000061}.toast>svg{color:var(--accent)}.toast button{width:44px;height:44px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;display:flex}.toast button:hover{color:var(--text);background:#ffffff0d}.loading-screen,.fatal-error{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:12px;min-height:100dvh;padding:24px;display:flex}.loading-screen strong{color:var(--text);letter-spacing:.01em;font-size:15px}.loading-screen>span:last-child{color:var(--muted);font-size:12px}.fatal-error{color:var(--danger)}.fatal-error h1{color:var(--text);font-size:20px}.fatal-error p{max-width:60ch;color:var(--muted);font-size:12px}.spin{animation:.9s linear infinite spin}:root[data-theme=light] .sidebar{background:#f8fafcf5;box-shadow:8px 0 30px #0f172a06}:root[data-theme=light] .sidebar nav button:hover{color:#1e293b;background:#eef3f8}:root[data-theme=light] .sidebar nav button.is-active{color:#115e59;background:#e8f7f5;border-color:#0f766e2e}:root[data-theme=light] .sidebar nav button small{color:#1d4ed8;background:#dbeafe}:root[data-theme=light] .topbar{background:#ffffffd1}:root[data-theme=light] .filters{background:#f1f5f9d1}:root[data-theme=light] .icon-box{background:#f1f5f9}:root[data-theme=light] .kpi,:root[data-theme=light] .panel{box-shadow:0 1px 2px #0f172a06}:root[data-theme=light] .recharts-cartesian-grid line{stroke:#e2e8f0}:root[data-theme=light] .recharts-cartesian-axis-tick-value{fill:#64748b}:root[data-theme=light] .chart-tooltip{background:#fffffffa;border-color:#cbd5e1;box-shadow:0 10px 30px #0f172a24}:root[data-theme=light] .office-row__bar,:root[data-theme=light] .progress,:root[data-theme=light] .detail-progress{background:#e2e8f0}:root[data-theme=light] .office-row:hover,:root[data-theme=light] .data-table tbody tr:hover{background:#f8fafc}:root[data-theme=light] .data-table th{color:#5d6d83;background:#f1f5f9}:root[data-theme=light] .health--healthy{color:#0f766e;background:#f0fdfa;border-color:#99dcd3}:root[data-theme=light] .health--watch{color:#92400e;background:#fffbeb;border-color:#f3cc78}:root[data-theme=light] .health--critical{color:#9f1239;background:#fff1f2;border-color:#f6a8b7}:root[data-theme=light] .health--opportunity{color:#1d4ed8;background:#eff6ff;border-color:#a9c9f8}:root[data-theme=light] .health--unclassified{color:#475569;background:#f8fafc;border-color:#cbd5e1}:root[data-theme=light] .future-flag--green{color:#0f766e;background:#f0fdfa;border-color:#72cfc3}:root[data-theme=light] .future-flag--amber{color:#92400e;background:#fffbeb;border-color:#e5b953}:root[data-theme=light] .future-flag--red{color:#9f1239;background:#fff1f2;border-color:#ef91a5}:root[data-theme=light] .future-flag--no-data{color:#334155;background:#f8fafc;border-color:#94a3b8}:root[data-theme=light] .number--good{color:#0f766e!important}:root[data-theme=light] .number--warning{color:#92400e!important}:root[data-theme=light] .number--bad{color:#be123c!important}:root[data-theme=light] .ready-tag{color:#0f766e;background:#f0fdfa;border-color:#99dcd3}:root[data-theme=light] .setup-tag{color:#92400e;background:#fffbeb;border-color:#f3cc78}:root[data-theme=light] .setup-steps li{background:#f8fafc}:root[data-theme=light] .setup-steps li>span,:root[data-theme=light] .callout{color:#1d4ed8;background:#eff6ff;border-color:#bfdbfe}:root[data-theme=light] .callout p{color:#315a91}:root[data-theme=light] .data-quality--warning{background:#fffbeb;border-color:#f3cc78}:root[data-theme=light] .data-quality--warning .data-quality__status{color:#78350f;background:#fef3c7}:root[data-theme=light] .detail-panel,:root[data-theme=light] .refresh-modal{background:#f4f7fb}:root[data-theme=light] .detail-panel__header{background:#fffffff2}:root[data-theme=light] .refresh-modal>footer{background:#f1f5f9}:root[data-theme=light] .error-banner{color:#9f1239;background:#fff1f2;border-color:#f6a8b7}:root[data-theme=light] .source-summary__icon{color:#0f766e}:root[data-theme=light] .connection-card__icon--powerbi{color:#a16207}.sidebar,.topbar,.filters,.panel,.kpi,.detail-panel,.refresh-modal{transition:color .18s,background-color .18s,border-color .18s}.mobile-scrim{display:none}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fade-in{0%{opacity:0}}@keyframes slide-in{0%{opacity:.6;transform:translate(24px)}}@keyframes modal-in{0%{opacity:0;transform:translateY(10px)}}@keyframes toast-in{0%{opacity:0;transform:translateY(10px)}}@media (width<=1240px){.last-update{display:none}.filter-grid{grid-template-columns:minmax(140px,1.45fr) repeat(3,minmax(96px,1fr))}.filters{flex-wrap:wrap;align-items:center}.kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.opportunity-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=1023px){.sidebar{visibility:hidden;transition:transform .22s,visibility .22s;transform:translate(-100%)}.sidebar.is-open{visibility:visible;transform:translate(0)}.sidebar-close,.menu-button{display:inline-flex!important}.kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.topbar-mobile-brand{display:inline-flex}.mobile-scrim{z-index:90;visibility:hidden;opacity:0;background:#00040da6;transition:opacity .2s,visibility .2s;display:block;position:fixed;inset:0}.mobile-scrim.is-open{visibility:visible;opacity:1}.main{margin-left:0}.filters{flex-wrap:wrap}.project-search{flex:280px;max-width:none}.filter-grid{flex:100%}.dashboard-grid{grid-template-columns:minmax(0,1fr)}.panel--full{grid-column:auto}.sources-layout,.source-current{grid-template-columns:minmax(0,1fr)}.source-summary{border-right:0;border-bottom:1px solid var(--border-soft)}.source-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.source-guide{grid-column:auto}.setup-steps{grid-template-columns:1fr 1fr}}@media (width<=767px){.topbar{min-height:70px;padding:10px 14px}.topbar h1{font-size:16px}.topbar__actions .button{width:44px;min-width:44px;padding:0;font-size:0}.topbar__actions .theme-toggle span{display:none}.filters{align-items:stretch;padding:10px 14px}.project-search{flex-basis:100%;min-width:0}.search-field{min-height:44px}.filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.filter-grid>.filter-select:first-child{grid-column:span 2}.combobox-wrap{height:44px}.search-field input,.combobox-wrap input{font-size:16px}.clear-filters{min-height:44px}.content{padding:12px 14px 24px}.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.kpi{min-height:100px}.dashboard-grid{gap:9px}.panel__header{min-height:58px}.panel--wide .panel__header{flex-direction:column;align-items:flex-start}.legend{flex-wrap:wrap;justify-content:flex-start;gap:6px 10px;max-width:100%}.chart--primary,.chart--detail{height:300px}.chart-keyboard-detail,.chart-data-disclosure{margin-left:8px;margin-right:8px}.chart-keyboard-detail__content .chart-tooltip__values{grid-template-columns:1fr}.health-overview{flex-direction:column;height:auto;padding-bottom:20px}.health-chart{width:190px}.health-list{width:100%}.office-row{grid-template-columns:minmax(80px,1fr) 70px 18px}.office-row__bar{display:none}.opportunity-grid,.sources-layout{grid-template-columns:1fr}.source-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.source-stats>.source-stat--scope{grid-column:1/-1}.setup-steps{grid-template-columns:1fr}.setup-steps li{min-height:auto}.detail-overlay{padding:0}.detail-panel{border-radius:0;width:100%;max-height:100dvh}.detail-panel__header{min-height:100px;padding:16px 15px}.detail-panel__heading h2{font-size:17px}.detail-panel__content{padding:10px 10px 24px}.detail-kpis,.financial-position-strip{grid-template-columns:1fr 1fr}.detail-columns{grid-template-columns:1fr}.detail-section__header--people{flex-direction:column;align-items:flex-start}.people-header-actions{align-items:flex-start;width:100%}.scope-toggle{width:100%}.scope-toggle button{flex:1}.refresh-option{grid-template-columns:40px 1fr}.refresh-option .button{grid-column:1/-1;min-height:44px}}@media (width<=420px){.source-stats{grid-template-columns:minmax(0,1fr)}.source-stats>.source-stat--scope{grid-column:auto}.topbar__title{display:none}.filter-grid{grid-template-columns:1fr}.filter-grid>.filter-select:first-child{grid-column:auto}.kpi-grid{grid-template-columns:1fr}.kpi{min-height:102px}.detail-kpis,.financial-position-strip{grid-template-columns:1fr}.detail-section__header--ownership{flex-direction:column}.email-team-button{width:100%}.chart-tooltip__values>div,.chart-keyboard-detail__content .chart-tooltip__values>div{grid-template-columns:1fr;gap:3px}.chart-tooltip__values dd{text-align:left}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.labour-view-controls{z-index:24;border-bottom:1px solid var(--border-soft);background:color-mix(in srgb, var(--surface) 82%, transparent);grid-template-columns:minmax(520px,1.25fr) minmax(330px,1fr);align-items:end;gap:14px;padding:14px 24px;display:grid;position:relative}.labour-view-controls--project{z-index:1;border:1px solid var(--border);background:var(--surface-raised);border-radius:10px;margin:0 0 18px;padding:14px}.labour-scope-control,.labour-organisation-select{min-width:0}.filter-label{color:var(--faint);letter-spacing:.04em;text-transform:uppercase;margin:0 0 4px 2px;font-size:12px;font-weight:700;display:block}.labour-scope-row{flex-wrap:wrap;align-items:center;gap:6px 10px;min-width:0;display:flex}.scope-toggle--labour{flex:0 auto;width:max-content;max-width:100%;min-height:44px}.scope-toggle--labour button{white-space:normal;min-height:44px;padding:7px 12px;line-height:1.25}.labour-organisation-select .filter-select>label{letter-spacing:.04em;text-transform:uppercase}.labour-organisation-select.is-disabled .combobox-wrap{opacity:.72;border-style:dashed}.labour-organisation-select.is-disabled input{cursor:not-allowed}.field-error{color:var(--danger);margin-top:4px;font-size:12px;display:block}.filter-switch{border:1px solid var(--border);min-height:54px;color:var(--text-soft);background:var(--surface);cursor:pointer;border-radius:8px;align-items:center;gap:11px;padding:7px 10px;display:flex}.filter-switch input{opacity:0;width:1px;height:1px;position:absolute}.filter-switch__track{border:1px solid var(--border);background:var(--surface-soft);border-radius:999px;flex:none;width:42px;height:24px;padding:2px;transition:background .16s,border-color .16s}.filter-switch__track>span{background:var(--muted);border-radius:50%;width:18px;height:18px;transition:transform .16s,background .16s;display:block}.filter-switch input:checked+.filter-switch__track{border-color:var(--accent-strong);background:color-mix(in srgb, var(--accent) 32%, var(--surface))}.filter-switch input:checked+.filter-switch__track>span{background:var(--accent);transform:translate(18px)}.filter-switch input:focus-visible+.filter-switch__track{outline:2px solid var(--accent-strong);outline-offset:2px}.filter-switch>span:last-child{flex-direction:column;gap:2px;min-width:0;display:flex}.filter-switch strong{font-size:12px;line-height:1.35}.filter-switch small{color:var(--muted);font-size:12px;line-height:1.35}.labour-filter-loading{min-height:44px;color:var(--muted);white-space:nowrap;align-items:center;gap:6px;font-size:12px;display:inline-flex}.project-filter-truth,.people-scope-truth{border:1px solid color-mix(in srgb, var(--blue) 32%, var(--border));color:var(--text-soft);background:color-mix(in srgb, var(--blue) 8%, var(--surface));border-radius:8px;align-items:flex-start;gap:9px;padding:10px 12px;font-size:12px;line-height:1.5;display:flex}.project-filter-truth{margin-bottom:14px}.project-filter-truth svg{color:var(--blue);flex:none}.full-project-totals{border:1px dashed var(--border);color:var(--muted);background:var(--surface-soft);border-radius:8px;flex-wrap:wrap;align-items:center;gap:10px 22px;margin:-3px 0 16px;padding:11px 13px;font-size:12px;display:flex}.full-project-totals>span:first-child{flex-direction:column;display:flex}.full-project-totals strong{color:var(--text-soft)}.people-scope-truth{border-color:var(--border);background:var(--surface-soft);margin:10px 0 12px}.work-order-table-scroll{overscroll-behavior:contain;scrollbar-gutter:stable;border:1px solid var(--border-soft);border-radius:8px;max-height:min(64dvh,720px);overflow:auto}.work-order-table-scroll:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.work-order-table-scroll .work-order-table th{z-index:2;background:var(--surface-raised);position:sticky;top:0}.work-order-table{min-width:1320px}.work-order-table th:nth-child(2),.work-order-table td:nth-child(2){width:290px;min-width:290px}.work-order-table th:nth-child(3),.work-order-table td:nth-child(3){width:210px;min-width:210px}.work-order-table th.is-numeric,.work-order-table th.is-numeric button,.work-order-table td.number{text-align:center}.work-order-table th.is-numeric button{justify-content:center}.work-order-table td.number{font-size:14px;font-weight:600}.task-row--excluded>td{opacity:.68;background:color-mix(in srgb, var(--surface-soft) 72%, transparent)}.task-row--excluded:hover>td,.task-row--excluded:focus-within>td{opacity:1}.exclusion-badge,.booking-evidence,.selected-org-full,.saving-label{color:var(--muted);white-space:normal;margin-top:5px;font-size:12px;line-height:1.35;display:block}.exclusion-badge{border:1px solid color-mix(in srgb, var(--warning) 40%, var(--border));width:fit-content;color:var(--warning);background:color-mix(in srgb, var(--warning) 8%, var(--surface));border-radius:999px;padding:3px 7px;font-weight:700}.task-audit-cell{vertical-align:top}.task-select{border:1px solid var(--border);width:100%;min-height:44px;color:var(--text-soft);background:var(--surface);cursor:pointer;border-radius:7px;padding:7px 32px 7px 9px}.task-select:disabled{opacity:.55;cursor:wait}.selected-org-full{color:var(--text-soft);overflow-wrap:anywhere}.audit-badges{flex-wrap:wrap;gap:5px;margin-top:7px;display:flex}.source-badge,.review-badge{border:1px solid var(--border);min-height:24px;color:var(--muted);background:var(--surface-soft);border-radius:999px;align-items:center;gap:4px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1.2;display:inline-flex}.source-badge--manual{border-color:color-mix(in srgb, var(--accent) 38%, var(--border));color:var(--accent-strong)}.source-badge--unavailable{color:var(--muted);border-style:dashed}.review-badge{border-color:color-mix(in srgb, var(--warning) 42%, var(--border));color:var(--warning)}.text-action{min-height:36px;color:var(--blue);text-align:left;cursor:pointer;background:0 0;border:0;margin-top:5px;padding:4px 2px;font-size:12px;font-weight:700}.text-action:hover:not(:disabled){text-decoration:underline}.text-action:disabled{opacity:.5;cursor:wait}.saving-label{align-items:center;gap:5px;display:inline-flex}.error-banner--compact{margin:10px 0}@media (width<=1240px){.labour-view-controls{grid-template-columns:minmax(0,1fr)}}@media (width<=760px){.labour-view-controls,.labour-view-controls--project{grid-template-columns:minmax(0,1fr);padding:12px 14px}.scope-toggle--labour{flex-direction:column;align-items:stretch;width:100%}.scope-toggle--labour button{width:100%}.full-project-totals{flex-direction:column;align-items:flex-start;gap:7px}}@media (prefers-reduced-motion:reduce){.filter-switch__track,.filter-switch__track>span{transition:none}}.dashboard-filter-impact{border-bottom:1px solid var(--border-soft);color:var(--muted);background:var(--surface-soft);align-items:center;gap:8px;padding:8px 24px;font-size:12px;line-height:1.4;display:flex}.dashboard-filter-impact svg{color:var(--blue);flex:none}.labour-view-controls[aria-disabled=true] .labour-scope-control,.labour-view-controls[aria-disabled=true] .labour-organisation-select,.filter-switch.is-disabled{opacity:.62}.scope-toggle button:disabled,.filter-switch.is-disabled{cursor:not-allowed}.panel--booking-chart,.panel--booking-detail,.panel--booking-chart .panel__header>div:first-child{min-width:0}.panel--booking-chart .booking-data-button{align-self:center}.booking-chart-shell{min-width:0;padding:14px 16px 16px;overflow:hidden}.booking-data-button{border-color:var(--border);min-width:max-content;min-height:44px;color:var(--text-soft);background:var(--surface-raised);cursor:pointer;flex:none;justify-content:center;align-items:center;gap:7px;padding:0 12px;display:inline-flex}.booking-data-button:hover{color:var(--text);border-color:color-mix(in srgb, var(--accent) 46%, var(--border));background:var(--surface-hover)}.booking-chart-notice{border:1px solid color-mix(in srgb, var(--warning) 42%, var(--border));min-width:0;color:var(--text-soft);background:color-mix(in srgb, var(--warning) 8%, var(--surface));overflow-wrap:anywhere;border-radius:8px;align-items:flex-start;gap:8px;margin-bottom:10px;padding:9px 10px;font-size:12px;line-height:1.45;display:flex}.booking-chart-notice--forecast{border-color:color-mix(in srgb, var(--blue) 38%, var(--border));background:color-mix(in srgb, var(--blue) 7%, var(--surface))}.booking-chart-notice svg{color:var(--warning);flex:none}.booking-chart-notice--forecast svg{color:var(--blue)}.booking-chart-legend{grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:6px;min-width:0;margin-bottom:8px;display:grid}.booking-chart-legend>span{border:1px solid var(--border-soft);min-width:0;color:var(--text-soft);background:color-mix(in srgb, var(--surface-soft) 72%, transparent);border-radius:7px;align-items:center;gap:8px;padding:7px 8px;display:flex}.booking-chart-legend>span>span{flex-direction:column;gap:1px;min-width:0;display:flex}.booking-chart-legend strong,.booking-chart-legend small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.booking-chart-legend strong{color:var(--text);font-size:13px;line-height:1.3}.booking-chart-legend small{color:var(--muted);font-size:12px;line-height:1.3}.booking-series-mark{border:1px solid color-mix(in srgb, currentColor 28%, transparent);width:24px;height:24px;color:var(--booking-marker-text);text-shadow:0 1px 2px #00000057;border-radius:5px;flex:0 0 24px;justify-content:center;align-items:center;font-family:Fira Code,Consolas,monospace;font-size:11px;font-style:normal;font-weight:700;line-height:1;display:inline-flex}.booking-series-mark--0{background:var(--booking-series-1)}.booking-series-mark--1{background:repeating-linear-gradient(135deg, transparent 0 3px, var(--booking-pattern-ink) 3px 4px), var(--booking-series-2)}.booking-series-mark--2{background:repeating-linear-gradient(45deg, transparent 0 4px, var(--booking-pattern-ink) 4px 5px), repeating-linear-gradient(135deg, transparent 0 4px, var(--booking-pattern-ink) 4px 5px), var(--booking-series-3)}.booking-series-mark--3{background:radial-gradient(circle, var(--booking-pattern-ink) 1.2px, transparent 1.4px) 0 0 / 6px 6px, var(--booking-series-4)}.booking-series-mark--4{background:repeating-linear-gradient(90deg, transparent 0 4px, var(--booking-pattern-ink) 4px 5px), var(--booking-series-5)}.booking-series-mark--5{background:repeating-linear-gradient(0deg, transparent 0 4px, var(--booking-pattern-ink) 4px 5px), var(--booking-series-6)}.booking-series-mark--6{background:repeating-linear-gradient(135deg, transparent 0 5px, var(--booking-pattern-ink) 5px 7px), var(--booking-series-other)}.booking-chart-legend__forecast>i{flex:0 0 28px;width:28px;height:20px;position:relative}.booking-chart-legend__forecast>i:before,.booking-chart-legend__forecast>i:after{content:"";background:var(--booking-forecast);position:absolute}.booking-chart-legend__forecast>i:before{width:17px;height:3px;box-shadow:11px 9px 0 var(--booking-forecast);inset:4px auto auto 0}.booking-chart-legend__forecast>i:after{width:3px;height:12px;inset:4px auto auto 15px}.booking-chart{border:1px solid #0000;border-radius:8px;width:100%;min-width:0;height:390px}.booking-chart:focus-visible{border-color:var(--accent);outline:2px solid var(--accent);outline-offset:-3px}.booking-chart .recharts-bar-rectangle{cursor:pointer}.booking-pattern-line{fill:none;stroke:var(--booking-pattern-ink);stroke-width:1.15px}.booking-pattern-line--wide{stroke-width:1.8px}.booking-pattern-dot{fill:var(--booking-pattern-ink)}.booking-line-direct-label{fill:var(--booking-forecast);stroke:var(--booking-line-halo);stroke-width:4px;paint-order:stroke fill;pointer-events:none;font-family:Fira Sans,Segoe UI,sans-serif;font-size:12px;font-weight:700}.booking-week-detail{min-width:0;padding:12px 14px 14px}.booking-week-detail__empty{min-height:88px;color:var(--muted);align-items:center;gap:8px;font-size:12px;line-height:1.45;display:flex}.booking-week-detail__empty svg{color:var(--blue);flex:none}.booking-point-detail{min-width:0;color:var(--text-soft);flex-direction:column;gap:9px;font-size:13px;line-height:1.4;display:flex}.booking-point-detail__title{color:var(--text);font-weight:700}.booking-point-detail__summary{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:0;display:grid}.booking-point-detail__summary>div{border:1px solid var(--border-soft);background:var(--surface-soft);border-radius:6px;flex-direction:column;gap:2px;min-width:0;padding:7px 8px;display:flex}.booking-point-detail__summary dt{color:var(--muted);text-align:center;font-size:13px;font-weight:700}.booking-point-detail__summary dd{color:var(--text);text-align:center;text-overflow:ellipsis;white-space:nowrap;margin:0;font-family:Fira Code,Consolas,monospace;font-size:13px;font-weight:700;overflow:hidden}.booking-point-detail__segments{flex-direction:column;gap:6px;min-width:0;display:flex}.booking-point-detail__segments>strong{color:var(--text);font-size:13px}.booking-point-detail__segments ul{gap:0;margin:0;padding:0;list-style:none;display:grid}.booking-point-detail__segments li{border-top:1px solid var(--border-soft);grid-template-columns:24px minmax(120px,1fr) auto auto auto;align-items:center;gap:6px;min-width:0;min-height:40px;padding:5px 0;font-size:13px;display:grid}.booking-point-detail__destination,.booking-point-detail__cost,.booking-point-detail__share,.booking-point-detail__hours{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.booking-point-detail__destination{color:var(--text)}.booking-point-detail__cost{color:var(--text);font-family:Fira Code,Consolas,monospace}.booking-point-detail__share{color:var(--text-soft);font-weight:600}.booking-point-detail__hours,.booking-point-detail__empty{color:var(--muted);font-size:13px}.booking-point-detail__facts{display:none}.booking-chart-method{border-top:1px solid var(--border-soft);color:var(--muted);overflow-wrap:anywhere;margin-top:10px;padding-top:10px;font-size:12px;line-height:1.55}.booking-data-dialog{border:1px solid var(--border);width:min(1180px,100vw - 32px);max-width:none;max-height:calc(100dvh - 32px);color:var(--text);background:var(--surface);border-radius:14px;margin:auto;padding:0;overflow:hidden;box-shadow:0 28px 90px #00000085}.booking-data-dialog::backdrop{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#00040dc7}.booking-data-dialog__surface{flex-direction:column;width:100%;max-height:calc(100dvh - 34px);display:flex;overflow:hidden}.booking-data-dialog__surface>header{border-bottom:1px solid var(--border);background:var(--surface-raised);flex:none;justify-content:space-between;align-items:flex-start;gap:16px;min-width:0;padding:17px 18px;display:flex}.booking-data-dialog__surface>header>div{min-width:0}.booking-data-dialog__surface h3{overflow-wrap:anywhere;margin:3px 0 4px;font-size:18px;line-height:1.3}.booking-data-dialog__surface header p{max-width:75ch;color:var(--muted);font-size:13px;line-height:1.45}.booking-data-dialog__body{overscroll-behavior:contain;flex-direction:column;flex:auto;gap:18px;min-width:0;padding:16px 18px 18px;display:flex;overflow-y:auto}.booking-data-dialog__body section{min-width:0}.booking-data-dialog__section-title{justify-content:space-between;align-items:baseline;gap:12px;min-width:0;margin-bottom:7px;display:flex}.booking-data-dialog__section-title h4{margin:0;font-size:14px}.booking-data-dialog__section-title span{color:var(--muted);text-align:right;overflow-wrap:anywhere;font-size:12px}.booking-data-table-scroll{overscroll-behavior:contain;border:1px solid var(--border);scrollbar-gutter:stable;border-radius:8px;width:100%;max-width:100%;max-height:330px;overflow:auto}.booking-data-table-scroll:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.booking-data-table{border-collapse:collapse;width:max-content;min-width:100%;color:var(--text-soft);background:var(--surface);font-size:12px;line-height:1.4}.booking-data-table caption{max-width:min(100vw,100%);color:var(--text-soft);background:var(--surface-soft);text-align:left;caption-side:top;white-space:normal;padding:9px 10px;font-weight:600}.booking-data-table th,.booking-data-table td{border-top:1px solid var(--border-soft);text-align:left;vertical-align:top;white-space:normal;overflow-wrap:anywhere;min-width:128px;max-width:260px;padding:8px 10px}.booking-data-table th{z-index:1;color:var(--text);background:var(--surface-raised);font-weight:700;position:sticky;top:0}.booking-data-table tbody th{color:var(--text-soft);background:var(--surface);font-family:Fira Code,Consolas,monospace;font-weight:500;position:static}.booking-data-table tbody tr:hover th,.booking-data-table tbody tr:hover td{background:var(--surface-hover)}.booking-data-table--detail th:nth-child(3),.booking-data-table--detail td:nth-child(3),.booking-data-table--detail th:nth-child(4),.booking-data-table--detail td:nth-child(4){min-width:210px}.booking-data-dialog__body>footer{border:1px solid var(--border-soft);color:var(--muted);background:var(--surface-soft);overflow-wrap:anywhere;border-radius:8px;flex-wrap:wrap;gap:5px 18px;padding:10px 11px;font-size:12px;line-height:1.45;display:flex}@media (width<=760px){.booking-chart-shell{padding:12px 10px 14px}.panel--booking-chart .booking-data-button{align-self:flex-start}.booking-chart{height:360px}.booking-data-dialog{border-radius:10px;width:calc(100vw - 16px);max-height:calc(100dvh - 16px)}.booking-data-dialog__surface{max-height:calc(100dvh - 18px)}.booking-data-dialog__surface>header,.booking-data-dialog__body{padding-left:12px;padding-right:12px}.booking-data-dialog__section-title{flex-direction:column;align-items:flex-start;gap:3px}.booking-data-dialog__section-title span{text-align:left}}@media (width<=420px){.booking-chart-legend,.booking-point-detail__summary{grid-template-columns:minmax(0,1fr)}.booking-chart{height:340px}}@media (prefers-reduced-motion:reduce){.booking-data-dialog,.booking-data-dialog::backdrop{animation:none}}.auth-screen{background:radial-gradient(circle at 50% 0%, #2dd4bf1f, transparent 34rem), var(--bg);place-items:center;min-height:100dvh;padding:24px;display:grid}.auth-card{border:1px solid var(--border);width:min(100%,500px);color:var(--text);background:var(--surface);text-align:center;border-radius:16px;flex-direction:column;align-items:center;gap:14px;padding:clamp(28px,6vw,48px);display:flex;box-shadow:0 24px 70px #0000004d}.auth-card__logo{width:112px;margin-bottom:8px}.auth-card__icon{color:var(--accent)}.auth-card h1{max-width:22ch;font-family:Fira Code,Consolas,monospace;font-size:clamp(21px,4vw,27px);line-height:1.25}.auth-card p{max-width:54ch;color:var(--text-soft);font-size:14px;line-height:1.6}.auth-card__action{margin-top:8px}.auth-card__error{color:var(--danger)!important}.account-menu{border-left:1px solid var(--border-soft);align-items:center;gap:8px;padding-left:12px;display:flex;position:relative}.account-menu__identity{text-align:right;flex-direction:column;min-width:0;max-width:190px;line-height:1.25;display:flex}.account-menu__identity strong{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.account-menu__identity small{color:var(--muted);font-size:10px}.account-menu__logout{border-color:var(--border);min-width:max-content;color:var(--text-soft);background:var(--surface-soft)}.account-menu__error{z-index:20;border:1px solid color-mix(in srgb, var(--danger) 50%, var(--border));width:min(320px,100vw - 32px);color:var(--danger);background:var(--surface-raised);border-radius:7px;padding:9px 11px;font-size:11px;line-height:1.45;position:absolute;top:calc(100% + 8px);right:0}.permission-boundary{min-width:0}.permission-notice{border:1px solid var(--border);color:var(--text-soft);background:var(--surface-soft);border-radius:7px;align-items:flex-start;gap:8px;margin:0 0 12px;padding:9px 11px;font-size:12px;line-height:1.45;display:flex}.permission-notice svg{color:var(--blue);flex:none;margin-top:1px}.permission-boundary--readonly .fw-cell-input:disabled,.permission-boundary--readonly .fw-text-input:disabled,.permission-boundary--readonly .nr-target-editor input:disabled{opacity:.7;cursor:not-allowed}@media (width<=1180px){.last-update{display:none}.account-menu{padding-left:8px}}@media (width<=900px){.account-menu__identity{display:none}}@media (width<=760px){.account-menu{border-left:0;gap:0;padding-left:0}.topbar__actions .account-menu__logout span{display:none}}
