.v5-forecast-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}.v5-forecast-kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:15px}.v5-forecast-kpi span{display:block;color:var(--muted);font-size:11.5px}.v5-forecast-kpi strong{display:block;font-size:18px;margin-top:4px}.v5-forecast-kpi small{display:block;color:var(--muted);font-size:10.5px;margin-top:3px}.v5-forecast-control{display:grid;grid-template-columns:minmax(260px,1fr) auto auto;gap:10px;align-items:end}.v5-forecast-control label span,.v5-forecast-percent label span{display:block;color:var(--muted);font-size:10.5px;margin-bottom:5px}.v5-forecast-control select,.v5-forecast-percent input{width:100%;border:1px solid var(--border);background:var(--surface);border-radius:4px;padding:8px 9px;color:var(--ink)}.v5-forecast-coverage{display:grid;grid-template-columns:repeat(12,minmax(62px,1fr));gap:6px;margin:14px 0 2px}.v5-forecast-month{border:1px solid var(--border);border-radius:4px;background:var(--bg);padding:8px 6px;text-align:center}.v5-forecast-month strong{display:block;font-size:10.5px}.v5-forecast-month span{display:block;font-size:9.5px;margin-top:4px;padding:2px 4px;border-radius:999px;background:var(--accent-soft);color:var(--accent)}.v5-forecast-month.actual span{background:var(--good-soft);color:var(--good);font-weight:700}.v5-forecast-tools{display:flex;flex-wrap:wrap;gap:8px;align-items:end;margin-top:14px;padding-top:14px;border-top:1px solid var(--border)}.v5-forecast-percent{display:flex;gap:6px;align-items:end}.v5-forecast-percent label{width:110px}.v5-forecast-grid-wrap{overflow:auto;border:1px solid var(--border);border-radius:5px}.v5-forecast-grid{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;font-size:11px}.v5-forecast-grid th,.v5-forecast-grid td{border-right:1px solid var(--border);border-bottom:1px solid var(--border);padding:0;white-space:nowrap}.v5-forecast-grid th:last-child,.v5-forecast-grid td:last-child{border-right:0}.v5-forecast-grid tbody tr:last-child td,.v5-forecast-grid tbody tr:last-child th{border-bottom:0}.v5-forecast-grid thead th{position:sticky;top:0;z-index:2;background:var(--sunken);color:var(--muted);font-size:9.5px;text-transform:uppercase;letter-spacing:.04em;padding:8px 7px;text-align:right}.v5-forecast-grid thead th:first-child{left:0;z-index:4;text-align:left;min-width:265px}.v5-forecast-grid .forecast-label{position:sticky;left:0;z-index:1;background:var(--surface);min-width:265px;text-align:left;padding:8px 9px}.v5-forecast-grid .forecast-label strong{display:block;font-size:11.5px}.v5-forecast-grid .forecast-label small{display:block;color:var(--muted);font-size:9.5px;margin-top:1px}.v5-forecast-grid td{min-width:108px;text-align:right;background:var(--surface)}.v5-forecast-grid td.actual{background:var(--good-soft)}.v5-forecast-grid td.dirty{background:var(--warn-soft)}.v5-forecast-grid td input{width:100%;border:0;background:transparent;text-align:right;padding:8px 7px;color:var(--ink);font-variant-numeric:tabular-nums;outline:none}.v5-forecast-grid td input:focus{box-shadow:inset 0 0 0 2px var(--accent)}.v5-forecast-grid td .forecast-locked{display:block;padding:8px 7px;font-variant-numeric:tabular-nums}.v5-forecast-grid td small{display:block;padding:0 7px 5px;color:var(--faint);font-size:8.5px;text-transform:capitalize}.v5-forecast-grid .forecast-section th{position:sticky;left:0;z-index:1;background:var(--sunken);padding:7px 9px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em;font-size:9.5px;text-align:left}.v5-forecast-grid .forecast-section td{background:var(--sunken)}.v5-forecast-message{color:var(--muted);font-size:10.5px;margin-top:10px}.v5-forecast-message.error{color:var(--bad)}.v5-forecast-message.good{color:var(--good)}.v5-forecast-empty{padding:24px;color:var(--muted);text-align:center}@media(max-width:1180px){.v5-forecast-coverage{grid-template-columns:repeat(6,1fr)}}@media(max-width:900px){.v5-forecast-summary{grid-template-columns:1fr 1fr}.v5-forecast-control{grid-template-columns:1fr}.v5-forecast-control .v5-btn{width:100%}}@media(max-width:760px){.v5-forecast-summary{grid-template-columns:1fr}.v5-forecast-coverage{grid-template-columns:repeat(3,1fr)}.v5-forecast-percent{width:100%}.v5-forecast-percent label{flex:1}}