.planning-workspace{gap:var(--space-5);min-width:0;display:grid}.planning-workspace-tabs{z-index:var(--z-sticky);gap:var(--space-1);width:fit-content;max-width:100%;padding:var(--space-1);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-subtle);scrollbar-width:none;margin:0;display:flex;position:sticky;top:64px;overflow-x:auto}.planning-workspace-tabs::-webkit-scrollbar{display:none}.planning-workspace-tabs button,.planning-segmented button{border-radius:var(--radius-sm);min-height:40px;color:var(--text-secondary);cursor:pointer;font:inherit;font-size:var(--text-sm);white-space:nowrap;transition:background var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out);background:0 0;border:0;padding:8px 14px;font-weight:700}.planning-workspace-tabs button:hover,.planning-segmented button:hover{color:var(--text)}.planning-workspace-tabs button[aria-selected=true],.planning-segmented button[aria-pressed=true]{background:var(--surface);color:var(--text)}.planning-workspace-tabs button:focus-visible,.planning-segmented button:focus-visible,.planning-button:focus-visible,.planning-timeline-item button:focus-visible,.planning-assumptions summary:focus-visible,.forecast-data summary:focus-visible{outline:3px solid color-mix(in srgb, var(--brand-cursor) 75%, transparent);outline-offset:2px}.planning-month-layout,.recurrences-workspace,.forecast-workspace{gap:var(--space-6);display:grid}.planning-answer{border-radius:var(--radius-lg);color:#f4f8f5;background:#27483a;padding:clamp(22px,4vw,36px)}.planning-answer-head,.planning-section-head,.recurrences-head,.forecast-head{justify-content:space-between;align-items:flex-start;gap:var(--space-5);display:flex}.planning-answer h2,.planning-section-head h2{font-size:var(--text-lg);letter-spacing:-.02em;margin:0;font-weight:750}.planning-answer-value{margin-top:var(--space-2);font-variant-numeric:tabular-nums;letter-spacing:-.04em;font-size:clamp(2rem,4vw,2.8rem);font-weight:800;line-height:1.05}.planning-answer-value.negative{color:#ffaaa4}.planning-workspace-status,.recurrence-state{border-radius:var(--radius-pill);min-height:28px;font-size:var(--text-xs);white-space:nowrap;align-items:center;padding:4px 9px;font-weight:750;display:inline-flex}.planning-workspace-status{color:#f4f8f5;border:1px solid #f4f8f53d}.planning-workspace-status.at_risk{color:#ffaaa4;border-color:#ffaaa480}.planning-workspace-status.narrow{color:#f4d28f;border-color:#e6b85c80}.planning-answer-copy{max-width:65ch;margin:var(--space-3) 0 0;color:#c8d7ce;font-size:var(--text-sm)}.planning-answer-copy strong{color:#f4f8f5}.planning-equation{gap:var(--space-3);margin-top:var(--space-8);padding-top:var(--space-5);border-top:1px solid #f4f8f53d;grid-template-columns:repeat(8,minmax(0,1fr));display:grid}.planning-equation-term,.planning-equation-result{align-content:start;gap:4px;min-width:0;display:grid;position:relative}.planning-equation-operator{top:14px;left:calc(var(--space-3) * -1);color:#a9c0b2;font-weight:700;position:absolute}.planning-equation-label{color:#a9c0b2;font-size:.6875rem}.planning-equation strong{color:#f4f8f5;font-size:var(--text-sm);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.planning-equation-result strong{color:var(--brand-cursor)}.planning-answer-foot{justify-content:space-between;gap:var(--space-3);margin-top:var(--space-6);color:#c8d7ce;font-size:var(--text-xs);flex-wrap:wrap;display:flex}.planning-answer-foot strong{color:#f4f8f5}.planning-section-block,.recurrences-workspace,.forecast-workspace{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);min-width:0;padding:clamp(18px,3vw,24px)}.planning-section-head{padding-bottom:var(--space-4);border-bottom:1px solid var(--border)}.planning-section-head p{max-width:65ch;color:var(--text-secondary);font-size:var(--text-sm);margin:4px 0 0}.planning-section-head>span{color:var(--text-secondary);font-size:var(--text-xs);white-space:nowrap}.planning-timeline{margin:0;padding:0;list-style:none;display:grid;position:relative}.planning-timeline:before{content:"";background:var(--border);width:1px;position:absolute;top:31px;bottom:31px;left:74px}.planning-timeline-item>button,.planning-timeline-item>div{border:0;border-bottom:1px solid var(--border);width:100%;min-height:64px;color:var(--text);font:inherit;text-align:left;background:0 0;grid-template-columns:58px 12px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 4px;display:grid;position:relative}.planning-timeline-item:last-child>button,.planning-timeline-item:last-child>div{border-bottom:0}.planning-timeline-item>button{cursor:pointer}.planning-timeline-item>button:hover{background:var(--surface-raised)}.planning-timeline-date{color:var(--text-secondary);font-size:var(--text-xs);font-variant-numeric:tabular-nums}.planning-timeline-dot{z-index:1;border:2px solid var(--surface);background:var(--negative);width:10px;height:10px;box-shadow:0 0 0 1px var(--border-strong);border-radius:50%}.planning-timeline-dot.in{background:var(--positive)}.planning-timeline-item.overdue .planning-timeline-dot{box-shadow:0 0 0 3px var(--negative-soft)}.planning-timeline-copy{min-width:0;display:grid}.planning-timeline-copy strong{font-size:var(--text-md);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.planning-timeline-copy span{color:var(--text-secondary);font-size:var(--text-xs)}.planning-timeline-amount{font-size:var(--text-sm);font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:750}.planning-timeline-amount.in{color:var(--positive)}.planning-timeline-amount.out{color:var(--negative)}.planning-assumptions,.forecast-data{border-top:1px solid var(--border);color:var(--text-secondary);font-size:var(--text-sm)}.planning-assumptions summary,.forecast-data summary{min-height:44px;color:var(--text);cursor:pointer;padding:12px 0;font-weight:700}.planning-assumptions ul{margin:0 0 var(--space-3);padding-left:var(--space-5)}.recurrence-summary{gap:var(--space-6);margin:0;display:flex}.recurrence-summary div{gap:2px;display:grid}.recurrence-summary dt{color:var(--text-secondary);font-size:var(--text-xs)}.recurrence-summary dd{font-variant-numeric:tabular-nums;margin:0;font-weight:750}.recurrence-list{margin:0;padding:0;list-style:none}.recurrence-row{gap:var(--space-4);border-bottom:1px solid var(--border);grid-template-columns:minmax(190px,1.5fr) minmax(120px,.8fr) minmax(140px,1fr) auto;align-items:center;min-height:76px;padding:12px 0;display:grid}.recurrence-row:last-child{border-bottom:0}.recurrence-main{grid-template-columns:10px minmax(0,1fr);align-items:center;gap:10px;min-width:0;display:grid}.recurrence-main>div,.recurrence-schedule,.recurrence-evidence{gap:3px;min-width:0;display:grid}.recurrence-main strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.recurrence-main span:not(.recurrence-state-dot),.recurrence-schedule span,.recurrence-evidence small{color:var(--text-secondary);font-size:var(--text-xs)}.recurrence-schedule strong{font-variant-numeric:tabular-nums}.recurrence-state-dot{background:var(--positive);border-radius:50%;width:9px;height:9px}.recurrence-state-dot.inferred,.recurrence-state-dot.stale{background:var(--warning)}.recurrence-state-dot.cancelled_charged{background:var(--negative)}.recurrence-state-dot.cancelled,.recurrence-state-dot.ignored{background:var(--text-tertiary)}.recurrence-state.inferred,.recurrence-state.stale{background:var(--warning-soft);color:var(--warning)}.recurrence-state.cancelled_charged{background:var(--negative-soft);color:var(--negative)}.recurrence-state.confirmed{background:var(--positive-soft);color:var(--positive)}.recurrence-state.cancelled,.recurrence-state.ignored{background:var(--surface-subtle);color:var(--text-secondary)}.recurrence-actions{justify-content:flex-end;gap:var(--space-2);flex-wrap:wrap;display:flex}.planning-button{border-radius:var(--radius-sm);cursor:pointer;min-height:40px;font:inherit;font-size:var(--text-xs);transition:background var(--duration-fast) var(--ease-out), border-color var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out);border:1px solid #0000;padding:8px 12px;font-weight:750}.planning-button.primary{background:var(--brand);color:var(--on-brand)}.planning-button.primary:hover{background:var(--brand-hover)}.planning-button.secondary{border-color:var(--border-strong);background:var(--surface);color:var(--text)}.planning-button.secondary:hover{background:var(--surface-raised)}.planning-button.quiet{color:var(--text-secondary);background:0 0}.planning-button.quiet:hover{color:var(--text)}.planning-button:disabled{cursor:wait;opacity:.62}.recurrence-error{border-radius:var(--radius-sm);background:var(--negative-soft);color:var(--negative);font-size:var(--text-xs);grid-column:1/-1;padding:9px 11px}.planning-decision-notice{border-radius:var(--radius-sm);background:var(--info-soft);color:var(--info);font-size:var(--text-xs);padding:9px 11px;font-weight:650}.forecast-controls{justify-content:flex-end;gap:var(--space-2);flex-wrap:wrap;display:flex}.planning-segmented{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-subtle);gap:2px;padding:3px;display:flex}.planning-segmented button{min-height:34px;font-size:var(--text-xs);padding:6px 10px}.forecast-metrics{gap:var(--space-8);padding:var(--space-5) 0;flex-wrap:wrap;display:flex}.forecast-metrics>div{gap:2px;min-width:130px;display:grid}.forecast-metrics span,.forecast-metrics small{color:var(--text-secondary);font-size:var(--text-xs)}.forecast-metrics strong{font-size:var(--text-lg);font-variant-numeric:tabular-nums}.forecast-metrics strong.negative{color:var(--negative)}.forecast-figure{margin:0}.forecast-figure svg{width:100%;height:250px;display:block;overflow:visible}.forecast-zero{stroke:var(--negative);stroke-dasharray:5 5;stroke-width:1px;opacity:.55}.forecast-band{fill:var(--brand-soft);opacity:.8}.forecast-line{fill:none;stroke:var(--brand);stroke-linecap:round;stroke-linejoin:round;stroke-width:3px}.forecast-figure figcaption{color:var(--text-secondary);font-size:var(--text-xs);justify-content:space-between;display:flex}.forecast-table-wrap{max-height:360px;overflow:auto}.forecast-data table{border-collapse:collapse;width:100%;font-size:var(--text-sm);font-variant-numeric:tabular-nums}.forecast-data caption{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.forecast-data th,.forecast-data td{border-bottom:1px solid var(--border);text-align:right;padding:9px 10px}.forecast-data th:first-child{text-align:left}.forecast-data thead th{background:var(--surface);color:var(--text-secondary);font-size:var(--text-xs);position:sticky;top:0}.planning-empty{align-items:center;gap:var(--space-4);min-height:120px;padding:var(--space-5);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);display:flex}.planning-empty-mark{border:2px solid var(--brand);border-radius:50%;flex:none;width:12px;height:12px}.planning-empty>div{flex:1}.planning-empty strong{color:var(--text)}.planning-empty p{max-width:65ch;color:var(--text-secondary);font-size:var(--text-sm);margin:3px 0 0}.planning-live-region{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.planning-resource-notice{border-radius:var(--radius-sm);background:var(--info-soft);color:var(--info);font-size:var(--text-xs);padding:9px 11px;font-weight:650}.planning-resource-notice.error{background:var(--negative-soft);color:var(--negative)}.planning-loading{gap:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);align-content:start;min-height:260px;padding:clamp(22px,4vw,36px);display:grid}.planning-loading-line,.planning-loading-block{border-radius:var(--radius-sm);background:var(--surface-subtle);animation:1.2s ease-in-out infinite alternate planning-pulse;display:block}.planning-loading-line{height:18px}.planning-loading-line.wide{width:min(72%,480px)}.planning-loading-line.medium{width:min(44%,280px)}.planning-loading-block{height:150px;margin-top:var(--space-3)}@keyframes planning-pulse{0%{opacity:.55}to{opacity:1}}@media (max-width:920px){.planning-equation{row-gap:var(--space-5);grid-template-columns:repeat(3,minmax(0,1fr))}.planning-equation-operator{display:none}.recurrence-row{grid-template-columns:minmax(0,1fr) minmax(120px,auto)}.recurrence-evidence{grid-column:1}.recurrence-actions{grid-area:1/2/span 2}}@media (max-width:700px){.planning-workspace{gap:var(--space-4)}.planning-workspace-tabs{border-left:0;border-right:0;border-radius:0;width:100%;top:58px}.planning-workspace-tabs button{flex:1;min-height:44px}.planning-answer-head,.planning-section-head,.recurrences-head,.forecast-head{flex-direction:column;align-items:stretch}.planning-workspace-status{align-self:flex-start}.planning-equation{grid-template-columns:1fr;gap:0}.planning-equation-term,.planning-equation-result{border-bottom:1px solid #f4f8f529;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;padding:9px 0}.planning-equation-result{border-bottom:0}.planning-equation strong{overflow:visible}.planning-answer-foot{flex-direction:column}.planning-timeline:before{left:8px}.planning-timeline-item>button,.planning-timeline-item>div{grid-template-columns:12px minmax(0,1fr) auto;gap:10px;padding:12px 0}.planning-timeline-date{grid-area:1/2/auto/-1}.planning-timeline-dot{grid-area:2/1}.planning-timeline-copy{grid-area:2/2}.planning-timeline-amount{grid-area:2/3}.recurrence-summary{justify-content:space-between}.recurrence-row{gap:var(--space-3);padding:var(--space-4) 0;grid-template-columns:1fr}.recurrence-schedule{grid-template-columns:1fr auto}.recurrence-evidence{grid-column:auto}.recurrence-actions{grid-area:auto;justify-content:flex-start}.recurrence-actions .planning-button{min-height:44px}.forecast-controls{justify-content:flex-start}.planning-segmented{flex:1}.planning-segmented button{flex:1;min-height:40px}.forecast-metrics{gap:var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.forecast-metrics>div:first-child{grid-column:1/-1}.forecast-figure svg{height:210px}.planning-empty{flex-wrap:wrap;align-items:flex-start}.planning-empty .planning-button{width:100%;min-height:44px}}@media (prefers-reduced-motion:reduce){.planning-workspace-tabs button,.planning-segmented button,.planning-button{transition:none}.planning-loading-line,.planning-loading-block{animation:none}}
.today-workspace{gap:var(--space-5);min-width:0;display:grid}.today-primary{grid-template-columns:minmax(0,2fr) minmax(300px,1fr);align-items:stretch;gap:18px;display:grid}.today-month{border-radius:var(--radius-lg);color:#f4f8f5;background:#27483a;min-width:0;padding:clamp(22px,3vw,32px)}.today-month-head,.today-section-head{justify-content:space-between;align-items:flex-start;gap:var(--space-4);display:flex}.today-month h2,.today-section-head h2{font-size:var(--text-lg);letter-spacing:-.02em;margin:0}.today-month-value{margin-top:var(--space-2);letter-spacing:-.04em;font-variant-numeric:tabular-nums;font-size:clamp(2rem,4vw,2.8rem);font-weight:800}.today-month-value.negative{color:#ffaaa4}.today-month-status{border-radius:var(--radius-pill);color:#f4f8f5;min-height:28px;font-size:var(--text-xs);white-space:nowrap;border:1px solid #f4f8f540;padding:4px 9px;font-weight:750}.today-month.at_risk .today-month-status{color:#ffaaa4;border-color:#ffaaa480}.today-month.narrow .today-month-status{color:#f4d28f;border-color:#e6b85c80}.today-month-context{max-width:68ch;margin:var(--space-3) 0 0;color:#c8d7ce;font-size:var(--text-sm)}.today-month-context strong{color:#f4f8f5}.today-events{margin:var(--space-6) 0 0;border-top:1px solid #f4f8f538;padding:0;list-style:none;display:grid}.today-events li{gap:var(--space-3);border-bottom:1px solid #f4f8f524;grid-template-columns:72px minmax(0,1fr) auto;align-items:center;min-height:48px;display:grid}.today-events li>span{color:#c8d7ce;font-size:var(--text-xs)}.today-events li>strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.today-events li>b{font-variant-numeric:tabular-nums;white-space:nowrap}.today-events .positive{color:var(--brand-cursor)}.today-events .negative{color:#ffaaa4}.today-events li.empty{color:#c8d7ce;font-size:var(--text-sm);display:flex}.today-planning-link{min-height:44px;margin-top:var(--space-5);border-radius:var(--radius-sm);color:#f4f8f5;cursor:pointer;font:inherit;font-size:var(--text-sm);background:0 0;border:1px solid #f4f8f540;padding:8px 12px;font-weight:750}.today-planning-link:hover{border-color:var(--brand-cursor);color:var(--brand-cursor)}.today-decisions,.today-pulse{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);min-width:0;padding:20px}.today-section-head p{color:var(--text-secondary);font-size:var(--text-xs);margin:3px 0 0}.today-count{border-radius:var(--radius-pill);background:var(--negative-soft);min-width:26px;color:var(--negative);font-size:var(--text-xs);text-align:center;padding:3px 8px;font-weight:750}.today-decision-list{margin:var(--space-2) 0 0;padding:0;list-style:none}.today-decision{border-bottom:1px solid var(--border);grid-template-columns:9px minmax(0,1fr) auto;align-items:start;gap:10px;padding:13px 0;display:grid}.today-decision-marker{background:var(--info);border-radius:50%;width:8px;height:8px;margin-top:7px}.today-decision.critical .today-decision-marker{background:var(--negative)}.today-decision.warning .today-decision-marker{background:var(--warning)}.today-decision-copy{gap:2px;min-width:0;display:grid}.today-decision-copy strong{font-size:var(--text-sm)}.today-decision-copy p{color:var(--text-secondary);font-size:var(--text-xs);margin:0}.today-decision-source{color:var(--text-tertiary);font-size:.65rem;font-weight:700}.today-action,.today-inline-link{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);min-height:40px;color:var(--text);cursor:pointer;font:inherit;font-size:var(--text-xs);white-space:nowrap;padding:7px 10px;font-weight:750}.today-action:hover,.today-inline-link:hover{background:var(--surface-raised)}.today-decision-empty{color:var(--text-secondary);text-align:center;gap:3px;padding:32px 6px;display:grid}.today-decision-empty strong{color:var(--text)}.today-decision-more{margin:var(--space-3) 0 0;color:var(--text-secondary);font-size:var(--text-xs)}.today-pulse dl{margin:var(--space-4) 0 0;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--border);grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;display:grid;overflow:hidden}.today-pulse dl>div{background:var(--surface-raised);padding:13px 14px}.today-pulse dt{color:var(--text-secondary);font-size:var(--text-xs)}.today-pulse dd{font-size:var(--text-lg);font-variant-numeric:tabular-nums;margin:5px 0 0;font-weight:760}.today-pulse .positive{color:var(--positive)}.today-pulse .negative{color:var(--negative)}.today-pulse-empty{color:var(--text-secondary)}.today-health{justify-content:space-between;gap:var(--space-3);color:var(--text-secondary);font-size:var(--text-xs);flex-wrap:wrap;display:flex}.today-partial{border-radius:var(--radius-sm);background:var(--warning-soft);color:var(--warning);font-size:var(--text-xs);padding:10px 12px}.today-unavailable{padding:var(--space-6);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface)}.today-unavailable h2{margin-top:0}.today-loading{gap:var(--space-3);min-height:320px;padding:var(--space-6);border-radius:var(--radius-lg);background:var(--surface);display:grid}.today-loading span{border-radius:var(--radius-sm);background:var(--surface-subtle);width:55%;height:18px;animation:1.2s ease-in-out infinite alternate today-pulse}.today-loading span:nth-child(2){width:35%}.today-loading span.large{width:100%;height:220px}@keyframes today-pulse{0%{opacity:.55}to{opacity:1}}@media (max-width:1000px){.today-primary{grid-template-columns:1fr}}@media (max-width:700px){.today-month-head,.today-section-head{flex-direction:column}.today-month-status{align-self:flex-start}.today-events li{grid-template-columns:62px minmax(0,1fr) auto}.today-decision{grid-template-columns:9px minmax(0,1fr)}.today-decision .today-action{grid-column:2;justify-self:start;min-height:44px}.today-pulse dl{grid-template-columns:repeat(2,minmax(0,1fr))}.today-inline-link{min-height:44px}.today-health{flex-direction:column}}@media (prefers-reduced-motion:reduce){.today-loading span{animation:none}}
