.planner .intro{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px;margin:8px 0 24px}.planner .intro h1{margin:4px 0 6px;font-size:clamp(1.625rem,3vw,2rem);font-weight:700;letter-spacing:-.02em}.planner .eyebrow{margin:0;font-size:.75rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}.planner .lede{margin:0;max-width:60ch;color:var(--text-secondary)}.planner .card{background:var(--surface-card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:20px}.planner .card__header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.planner .card__header h2{margin:0;font-size:1rem;font-weight:600}.planner .spinner{display:inline-block;flex:none;width:1.1em;height:1.1em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .7s linear infinite}@media(prefers-reduced-motion:reduce){.planner .spinner{animation-duration:2s}}@keyframes spin{to{transform:rotate(360deg)}}.planner .btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 16px;border:1px solid transparent;border-radius:var(--radius-sm);font:inherit;font-size:.875rem;font-weight:600;text-decoration:none;white-space:nowrap;cursor:pointer;transition:background .15s,border-color .15s}.planner .btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--accent-ring)}.planner .btn:disabled{opacity:.6;cursor:default}.planner .btn--primary{background:var(--accent);color:var(--surface-card)}.planner .btn--secondary{background:var(--surface-card);border-color:var(--border);color:var(--text-primary)}.planner .btn--secondary:hover:not(:disabled){background:var(--surface-hover)}.planner .link-button{border:0;background:none;padding:4px 0;font:inherit;font-size:.8125rem;font-weight:600;color:var(--accent);cursor:pointer}.planner .link-button:hover{text-decoration:underline}.planner .link-button--danger{color:var(--danger)}.planner .form-field{display:flex;flex-direction:column;gap:6px;min-width:0}.planner .form-field>span{font-size:.8125rem;font-weight:500;color:var(--text-secondary)}.planner .form-field input,.planner .form-field select,.planner .form-field textarea{width:100%;padding:10px 12px;font:inherit;font-weight:500;color:var(--text-primary);background:var(--surface-input);border:1px solid var(--border);border-radius:var(--radius-sm)}.planner .form-field input:focus-visible,.planner .form-field select:focus-visible,.planner .form-field textarea:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.planner .form-field input[type=number]{font-variant-numeric:tabular-nums}.planner .form-field small{font-size:.75rem;color:var(--text-muted)}.planner .alert{margin:0 0 16px;padding:10px 14px;border-radius:var(--radius-sm);border:1px solid color-mix(in srgb,var(--danger) 35%,transparent);background:color-mix(in srgb,var(--danger) 8%,transparent);color:var(--text-primary);font-size:.875rem}.planner .muted{margin:0;font-size:.875rem;color:var(--text-muted)}.planner .empty{display:flex;flex-direction:column;align-items:flex-start;gap:12px}.planner .empty h2{margin:0;font-size:1.125rem}.planner .empty p{margin:0;max-width:56ch;color:var(--text-secondary)}.planner .data-table{width:100%;border-collapse:collapse;font-size:.875rem;font-variant-numeric:tabular-nums}.planner .data-table th,.planner .data-table td{padding:10px 8px;border-bottom:1px solid var(--border);text-align:left}.planner .data-table th{font-size:.75rem;font-weight:600;color:var(--text-muted)}.planner .data-table .num{text-align:right}.planner .data-table tr:last-child td{border-bottom:0}.planner .table-scroll{position:relative;overflow-x:auto}.planner .type-dot{display:inline-block;width:10px;height:10px;margin-right:8px;border-radius:3px;vertical-align:-1px}.planner .type-dot--investment{background:var(--series-contrib)}.planner .type-dot--savings{background:var(--series-interest)}.planner .type-dot--cash{background:var(--series-cash)}.planner .type-dot--property{background:var(--series-home)}.planner .type-dot--loan{background:var(--series-loan)}.planner .goal-helper{display:flex;flex-direction:column;gap:12px;max-width:520px;margin-bottom:16px;padding:24px}.planner .goal-helper h2{margin:0;font-size:1rem}.planner .goal-helper .goal-helper__row{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px}.planner .goal-form{display:flex;flex-direction:column;gap:18px;max-width:520px;padding:24px}.planner .goal-form .goal-form__buttons{display:flex;align-items:center;gap:10px}.planner .goal-form .goal-form__buttons .link-button{margin-left:auto}.planner .switch{position:relative;display:inline-flex;align-items:center;gap:10px;font-size:.875rem;color:var(--text-secondary);cursor:pointer}.planner .switch input{position:absolute;opacity:0;width:1px;height:1px}.planner .switch .switch__track{position:relative;flex-shrink:0;width:36px;height:20px;border-radius:999px;background:var(--track);transition:background .15s}.planner .switch .switch__track:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--surface-card);box-shadow:var(--shadow-sm);transition:transform .15s}.planner .switch input:checked+.switch__track{background:var(--accent)}.planner .switch input:checked+.switch__track:after{transform:translate(16px)}.planner .switch input:focus-visible+.switch__track{outline:2px solid var(--accent-ring);outline-offset:2px}:root{color-scheme:light;--page-width: 1200px;--gutter: 24px;--radius: 14px;--radius-sm: 10px;--surface-page: #f4f6fa;--surface-card: #ffffff;--surface-raised: #ffffff;--surface-input: #f7f8fb;--surface-hover: #eef1f6;--border: #e2e6ee;--grid: #edf0f5;--track: #dde2eb;--text-primary: #0d1526;--text-secondary: #4a5468;--text-muted: #6e778a;--accent: #1f6b52;--accent-soft: #e3f3ec;--accent-ring: rgb(31 107 82 / 25%);--positive: #157a52;--series-contrib: #2f5bd3;--series-interest: #15a37f;--series-cash: #c07f00;--series-home: #8e44c9;--series-loan: #d1495b;--danger: #b42318;--hero-bg: #0d1b36;--hero-text: #ffffff;--hero-muted: #a7b3cc;--hero-border: rgb(255 255 255 / 12%);--hero-positive: #4ade9f;--hero-series-contrib: #6f95f5;--hero-series-interest: #2fc496;--hero-series-home: #c08af0;--hero-series-loan: #f2899a;--shadow-sm: 0 1px 2px rgb(13 21 38 / 6%), 0 1px 3px rgb(13 21 38 / 4%);--shadow-md: 0 8px 24px rgb(13 21 38 / 12%)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--surface-page: #0a1120;--surface-card: #111a2b;--surface-raised: #182338;--surface-input: #0d1626;--surface-hover: #1a2640;--border: #223049;--grid: #1a2539;--track: #2a3852;--text-primary: #eef2f9;--text-secondary: #b3bdd0;--text-muted: #8590a6;--accent: #3fcf9b;--accent-soft: rgb(63 207 155 / 12%);--accent-ring: rgb(63 207 155 / 30%);--positive: #4ade9f;--series-contrib: #5b86f0;--series-interest: #199e70;--series-cash: #b8811a;--series-home: #a970e0;--series-loan: #e5677a;--danger: #f97066;--hero-bg: #13284f;--hero-border: rgb(255 255 255 / 10%);--shadow-sm: 0 1px 2px rgb(0 0 0 / 30%);--shadow-md: 0 12px 32px rgb(0 0 0 / 45%)}}:root[data-theme=dark]{color-scheme:dark;--surface-page: #0a1120;--surface-card: #111a2b;--surface-raised: #182338;--surface-input: #0d1626;--surface-hover: #1a2640;--border: #223049;--grid: #1a2539;--track: #2a3852;--text-primary: #eef2f9;--text-secondary: #b3bdd0;--text-muted: #8590a6;--accent: #3fcf9b;--accent-soft: rgb(63 207 155 / 12%);--accent-ring: rgb(63 207 155 / 30%);--positive: #4ade9f;--series-contrib: #5b86f0;--series-interest: #199e70;--series-cash: #b8811a;--series-home: #a970e0;--series-loan: #e5677a;--danger: #f97066;--hero-bg: #13284f;--hero-border: rgb(255 255 255 / 10%);--shadow-sm: 0 1px 2px rgb(0 0 0 / 30%);--shadow-md: 0 12px 32px rgb(0 0 0 / 45%)}@media(max-width:560px){:root{--gutter: 16px}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--surface-page);color:var(--text-primary);font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}button,select,input{font-family:inherit}@media(pointer:coarse){input,select,textarea{font-size:max(16px,1em)!important}}input[type=date]{min-width:0;appearance:none}input[type=date]::-webkit-date-and-time-value{text-align:left}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
