/* 图谱版：让图形语法随数据而变，而非重复使用进度条。 */
:root{--donut-0:#7caea6;--donut-1:#bc6980;--donut-2:#d4a76d;--donut-3:#8b80b7;--donut-4:#77a4ca;--donut-5:#a7b977;--donut-6:#e38b6b;--donut-7:#5f9e8d}
[data-theme=sea]{--donut-0:#336fac;--donut-1:#f18f73;--donut-2:#53afa2;--donut-3:#e9bd5f;--donut-4:#8e9bd9;--donut-5:#b9cc71;--donut-6:#da7ba2;--donut-7:#6b94b3}
[data-theme=journal]{--donut-0:#637b65;--donut-1:#bf765f;--donut-2:#d3a746;--donut-3:#8b79a3;--donut-4:#779ca3;--donut-5:#b2ad75;--donut-6:#cf8f92;--donut-7:#6b9282}
[data-theme=grid]{--donut-0:#3154d5;--donut-1:#ff784f;--donut-2:#8d80f0;--donut-3:#20a88d;--donut-4:#ffc74d;--donut-5:#6986a9;--donut-6:#ef8fbb;--donut-7:#829c6a}
[data-theme=orbit]{--donut-0:#644583;--donut-1:#e6879a;--donut-2:#bd9d66;--donut-3:#8b91c5;--donut-4:#81aa9e;--donut-5:#c493b3;--donut-6:#dfaa8a;--donut-7:#9fae77}
.budget-statement{padding:20px 18px;background:var(--surface-soft);border:1px solid var(--line);border-radius:16px}
.budget-statement .row{margin-bottom:17px}.budget-statement .row h2{margin:0}
.budget-statement-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--line)}
.budget-statement-grid>div{min-width:0;padding:14px 7px 3px;border-right:1px solid var(--line)}.budget-statement-grid>div:first-child{padding-left:0}.budget-statement-grid>div:last-child{border:0;padding-right:0}
.budget-statement-grid small,.budget-statement-grid strong{display:block}.budget-statement-grid small{color:var(--text-secondary);font-size:11px}.budget-statement-grid strong{font-size:clamp(13px,4vw,19px);font-variant-numeric:tabular-nums;white-space:nowrap;letter-spacing:-.04em}.budget-statement-grid .over strong{color:var(--negative,#c04c45)}
.budget-statement>p{margin:12px 0 0}
.expense-donut{display:grid;grid-template-columns:minmax(140px,45%) minmax(0,1fr);gap:14px;align-items:center;padding:10px 0 4px}.donut-wrap{position:relative;aspect-ratio:1;min-width:0}.donut-wrap svg{display:block;width:100%;height:auto}.donut-track{stroke:var(--line)}.donut-center{position:absolute;inset:27%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.donut-center small{font-size:10px;color:var(--text-secondary)}.donut-center strong{font-size:clamp(12px,3.3vw,18px);letter-spacing:-.05em;white-space:nowrap}.donut-list{display:grid;gap:2px}.donut-list button{display:grid;grid-template-columns:9px minmax(0,1fr) auto;align-items:center;gap:6px;width:100%;padding:6px 2px;border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left;color:var(--text-main);font-size:11px}.donut-list button:hover{background:var(--surface-soft)}.donut-list i{display:block;width:8px;height:8px;border-radius:50%}.donut-list span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.donut-list span small{margin-left:4px;color:var(--text-secondary)}.donut-list b{font-variant-numeric:tabular-nums}
[data-theme=grid] .budget-statement,[data-theme=grid] .calendar-panel,[data-theme=grid] .project-dossier{border-radius:0;box-shadow:4px 4px 0 var(--line)}[data-theme=orbit] .budget-statement,[data-theme=orbit] .calendar-panel,[data-theme=orbit] .project-dossier{border-radius:26px}
.source-actions{display:flex;flex-wrap:wrap;gap:12px}.source-actions button{padding-left:0}
.project-dossiers{display:grid;gap:13px}.project-dossier{background:var(--surface-main);border:1px solid var(--line);border-radius:17px;overflow:hidden;min-width:0}.project-dossier:before{content:"";display:block;height:6px;background:var(--donut-0)}.project-dossier:nth-child(4n+2):before{background:var(--donut-1)}.project-dossier:nth-child(4n+3):before{background:var(--donut-2)}.project-dossier:nth-child(4n+4):before{background:var(--donut-3)}.project-dossier-head{display:flex;justify-content:space-between;gap:10px;padding:17px 18px 10px;align-items:flex-start}.project-dossier-head small{display:block;color:var(--text-secondary);font-size:10px;letter-spacing:.1em}.project-dossier-head button{display:block;padding:0;margin-top:7px;border:0;background:none;text-align:left;color:var(--text-main)}.project-dossier-head h2{margin:0;font-size:22px;line-height:1.2}.project-dossier-head h2 span{font-size:15px;color:var(--accent-main)}.project-state{font-size:11px;white-space:nowrap;background:var(--surface-soft);padding:5px 8px;border-radius:99px}.project-dossier-main{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:10px;margin:0 18px 14px;padding:12px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.project-return{display:grid;align-content:center;gap:2px}.project-return small,.project-return span{color:var(--text-secondary);font-size:10px}.project-return strong{font-size:21px;letter-spacing:-.04em;white-space:nowrap}.project-facts{display:grid;gap:3px}.project-facts span{display:flex;justify-content:space-between;gap:6px;font-size:10px;color:var(--text-secondary)}.project-facts b{color:var(--text-main);white-space:nowrap}.project-dossier-actions{display:flex;flex-wrap:wrap;gap:5px;padding:0 18px 16px}.project-dossier-actions button{flex:1 1 auto;margin:0;min-width:0;white-space:nowrap;font-size:10px;padding:7px 5px}
.unified-tools .tool-card{position:relative;overflow:hidden}.unified-tools .tool-card:before{content:attr(data-value);position:absolute;right:10px;top:10px;font:600 9px Manrope,sans-serif;letter-spacing:.09em;text-transform:uppercase;opacity:.45}.unified-tools .tool-icon{color:var(--accent-main);width:50px;height:50px!important;background:var(--surface-main)!important;border:1px solid var(--line);border-radius:13px}.unified-tools .tool-icon svg{display:block;width:30px;height:30px}.unified-tools .tool-card:nth-child(4n+2) .tool-icon{color:var(--donut-1)}.unified-tools .tool-card:nth-child(4n+3) .tool-icon{color:var(--donut-2)}.unified-tools .tool-card:nth-child(4n+4) .tool-icon{color:var(--donut-3)}[data-theme=grid] .unified-tools .tool-icon{border-radius:0;box-shadow:3px 3px 0 var(--donut-0)}[data-theme=orbit] .unified-tools .tool-icon{border-radius:50%}[data-theme=journal] .unified-tools .tool-icon{border-radius:3px;transform:rotate(-3deg)}
.calendar-panel{padding:18px;background:var(--surface-main);border:1px solid var(--line);border-radius:17px}.calendar-heading{display:flex;justify-content:space-between;align-items:center;gap:12px}.calendar-heading small{font-size:10px;letter-spacing:.12em;color:var(--text-secondary)}.calendar-heading h2{margin:2px 0 0;font-size:23px}.calendar-nav{display:flex;gap:4px}.calendar-nav button{font-size:21px;padding:3px 9px}.calendar-counts{display:flex;gap:18px;margin:14px 0 10px;padding-bottom:12px;border-bottom:1px solid var(--line);font-size:11px;color:var(--text-secondary)}.calendar-counts span{display:flex;align-items:center;gap:5px}.calendar-counts i,.calendar-mark i{display:inline-block;width:7px;height:7px;border-radius:50%}.calendar-counts i.in,.calendar-mark i.in{background:var(--donut-0)}.calendar-counts i.out,.calendar-mark i.out{background:var(--donut-1)}.calendar-panel .income-calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}.calendar-weekday{text-align:center;padding:4px 0 8px;font-size:10px;color:var(--text-secondary)}.calendar-panel .calendar-day{position:relative;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:2px;aspect-ratio:.85;min-width:0;min-height:0;padding:5px 3px;border-radius:7px;background:transparent;border:1px solid transparent;box-shadow:none;text-align:left;color:var(--text-main)}.calendar-panel .calendar-day:nth-child(7n+6),.calendar-panel .calendar-day:nth-child(7n+7){background:var(--surface-soft)}.calendar-panel .calendar-day.has-income{background:color-mix(in srgb,var(--donut-0) 14%,var(--surface-main));border-color:color-mix(in srgb,var(--donut-0) 30%,transparent)}.calendar-panel .calendar-day.has-expense{background:color-mix(in srgb,var(--donut-1) 12%,var(--surface-main));border-color:color-mix(in srgb,var(--donut-1) 26%,transparent)}.calendar-panel .calendar-day.has-income.has-expense{background:linear-gradient(135deg,color-mix(in srgb,var(--donut-0) 18%,var(--surface-main)) 50%,color-mix(in srgb,var(--donut-1) 17%,var(--surface-main)) 50%)}.calendar-panel .calendar-day.selected{outline:2px solid var(--accent-main);outline-offset:-2px}.calendar-panel .calendar-day b{font-size:12px}.calendar-mark{display:flex;gap:2px}.calendar-mark i{width:5px;height:5px}.calendar-panel .calendar-day small{font-size:8px;letter-spacing:-.05em;line-height:1;white-space:nowrap}.calendar-panel .cal-income{color:var(--donut-0)}.calendar-panel .cal-expense{color:var(--donut-1)}.calendar-panel>.muted{display:block;margin-top:10px}
[data-theme=grid] .calendar-panel .calendar-day{border-radius:0}[data-theme=orbit] .calendar-panel .calendar-day{border-radius:15px}[data-theme=journal] .calendar-panel .calendar-day.selected{outline-style:dashed}
.trial-result{padding:0;overflow:hidden;border:1px solid var(--line);border-radius:16px;background:var(--surface-main)}.trial-kicker{display:flex;justify-content:space-between;gap:8px;padding:13px 16px;background:var(--surface-soft);font-size:10px;color:var(--text-secondary);letter-spacing:.04em}.trial-destination{padding:20px 17px 17px}.trial-destination small{display:block;color:var(--text-secondary)}.trial-destination strong{display:block;margin-top:3px;font-size:clamp(30px,8vw,47px);line-height:1.1;letter-spacing:-.05em}.trial-figures{display:grid;grid-template-columns:1fr 1fr;margin:0 17px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.trial-figures>div{padding:13px 6px 13px 0;min-width:0}.trial-figures>div+div{border-left:1px solid var(--line);padding-left:13px}.trial-figures small{display:block;font-size:10px;color:var(--text-secondary)}.trial-figures b{display:block;font-size:16px;white-space:nowrap}.trial-compare{display:flex;align-items:center;gap:10px;padding:13px 17px;font-size:12px;color:var(--accent-main)}.trial-compare.is-later{color:var(--negative,#b84e50)}.trial-compare span{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--surface-soft);font-size:18px}
[data-theme=grid] .trial-result{border-radius:0;box-shadow:4px 4px 0 var(--donut-0)}[data-theme=orbit] .trial-result{border-radius:25px}[data-theme=journal] .trial-result{border-left:5px solid var(--donut-0)}
.retirement-story{padding:20px;background:var(--surface-soft);border:1px solid var(--line);border-radius:17px}.retirement-story-head{display:flex;justify-content:space-between;gap:8px;border-bottom:1px solid var(--line);padding-bottom:12px}.retirement-story-head small{font-size:10px;letter-spacing:.1em;color:var(--text-secondary)}.retirement-story-head strong{font-size:12px}.retirement-story-main{display:grid;grid-template-columns:minmax(0,1fr) 18px minmax(0,1fr);gap:5px;align-items:center;padding:18px 0}.retirement-story-main>div{min-width:0}.retirement-story-main span{display:block;font-size:10px;color:var(--text-secondary)}.retirement-story-main strong{display:block;font-size:clamp(16px,5vw,23px);white-space:nowrap;letter-spacing:-.05em}.retirement-bridge{font-size:24px!important;text-align:center;color:var(--accent-main)!important}.retirement-story-foot{display:flex;flex-wrap:wrap;gap:7px;border-top:1px solid var(--line);padding-top:12px}.retirement-story-foot span{padding:5px 8px;background:var(--surface-main);border-radius:99px;font-size:10px}.retirement-story p{font-size:10px;line-height:1.5;color:var(--text-secondary);margin:12px 0 0}.retirement-story.empty-state{display:grid;grid-template-columns:62px 1fr;gap:15px;align-items:center}.retirement-emblem{font-size:53px;color:var(--donut-0);line-height:1}.empty-state h3{font-size:18px;margin:4px 0}.empty-state button{margin-top:12px}
[data-theme=grid] .retirement-story{border-radius:0;box-shadow:4px 4px 0 var(--donut-2)}[data-theme=orbit] .retirement-story{border-radius:25px}
.horizontal-flow .flow-column-toggle{cursor:pointer}.horizontal-flow .flow-column-toggle rect{fill:var(--surface-soft);stroke:var(--line)}.horizontal-flow .flow-column-toggle.is-off rect{fill:transparent;stroke-dasharray:3 2}.horizontal-flow .flow-column-toggle.is-off text{opacity:.35;text-decoration:line-through}.horizontal-flow .flow-column-toggle text{font-size:8.5px;font-weight:700;fill:var(--text-main);pointer-events:none}.horizontal-flow .flow-column-toggle:focus-visible{outline:none}.horizontal-flow .flow-column-toggle:focus-visible rect{stroke:var(--accent-main);stroke-width:2}.horizontal-flow .flow-column-toggle:not(.is-off):hover rect{fill:var(--surface-main)}
@media(max-width:360px){.expense-donut{grid-template-columns:135px minmax(0,1fr);gap:4px}.donut-list button{font-size:10px}.project-dossier-head h2{font-size:19px}.project-return strong{font-size:17px}.trial-figures b{font-size:14px}.retirement-story{padding:15px}}
@media(prefers-reduced-motion:reduce){.project-dossier,.calendar-day,.flow-column-toggle{transition:none!important}}
.fire-mode-row{display:grid;grid-template-columns:32px minmax(0,1fr);gap:10px;padding:15px 3px;border-top:1px solid var(--line)}.fire-mode-index{font:700 12px Manrope,sans-serif;color:var(--donut-0);padding-top:3px}.fire-mode-body{min-width:0}.fire-mode-body .row{align-items:baseline;gap:8px}.fire-mode-body h2{font-size:16px;margin:0}.fire-mode-body .row strong{font-size:14px;white-space:nowrap}.fire-mode-body p{font-size:11px;color:var(--text-secondary);margin:4px 0 9px;line-height:1.5}.fire-mode-numbers{display:flex;flex-wrap:wrap;gap:5px 17px;color:var(--text-secondary);font-size:11px}.fire-mode-numbers b{color:var(--text-main);font-variant-numeric:tabular-nums}.fire-mode-row[data-mode=standard] .fire-mode-index{color:var(--donut-1)}.fire-mode-row[data-mode=comfort] .fire-mode-index{color:var(--donut-2)}.fire-mode-row[data-mode=part] .fire-mode-index{color:var(--donut-3)}.fire-mode-row[data-mode=natural] .fire-mode-index{color:var(--donut-4)}
