:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--hue-neutral:88;--hue-accent:142;--hue-danger:25;--hue-warning:65;--hue-info:250;--hue-purple:300;--bg:oklch(97.4% .012 var(--hue-neutral));--surface:oklch(99.5% .008 var(--hue-neutral));--surface2:oklch(96.1% .015 var(--hue-neutral));--surface3:oklch(92.8% .019 var(--hue-neutral));--fg:oklch(24% .024 var(--hue-neutral));--fg-secondary:oklch(43% .022 var(--hue-neutral));--muted:oklch(57% .018 var(--hue-neutral));--border:oklch(88.5% .018 var(--hue-neutral));--border-subtle:oklch(92.5% .014 var(--hue-neutral));--accent:oklch(46% .092 var(--hue-accent));--accent-bright:oklch(39% .1 var(--hue-accent));--accent-dim:oklch(46% .092 var(--hue-accent) / .11);--accent-glow:oklch(46% .092 var(--hue-accent) / .16);--danger:oklch(52% .2 var(--hue-danger));--danger-dim:oklch(52% .2 var(--hue-danger) / .1);--danger-glow:oklch(52% .2 var(--hue-danger) / .18);--warning:oklch(60% .14 var(--hue-warning));--warning-dim:oklch(60% .14 var(--hue-warning) / .12);--warning-glow:oklch(60% .14 var(--hue-warning) / .18);--info:oklch(50% .16 var(--hue-info));--info-dim:oklch(50% .16 var(--hue-info) / .1);--purple:oklch(52% .18 var(--hue-purple));--purple-dim:oklch(52% .18 var(--hue-purple) / .1);--on-accent:#fff;--tier-danger-strong:color-mix(in srgb, var(--danger) 100%, var(--fg));--tier-danger:color-mix(in srgb, var(--danger) 70%, var(--surface));--tier-warning-strong:color-mix(in srgb, var(--warning) 100%, var(--fg));--tier-warning:color-mix(in srgb, var(--warning) 75%, var(--surface));--tier-accent:var(--accent);--tier-accent-strong:color-mix(in srgb, var(--accent) 100%, var(--fg));--tick-line:#1616161f;--tick-line-filled:#ffffffd9;--surface-floating:#ffffffeb;--scrim:oklch(25% .01 var(--hue-neutral) / .4);--scrim-strong:oklch(25% .01 var(--hue-neutral) / .55);--media-overlay-bg:#0000008c;--media-overlay-bg-strong:#000000d1;--media-overlay-fg:#fff;--media-overlay-control:#ffffff26;--shadow-color:oklch(32% .035 var(--hue-neutral));--shadow-sm:0 1px 2px color-mix(in srgb, var(--shadow-color) 5%, transparent);--shadow-md:0 8px 24px color-mix(in srgb, var(--shadow-color) 8%, transparent), 0 2px 6px color-mix(in srgb, var(--shadow-color) 4%, transparent);--shadow-lg:0 18px 48px color-mix(in srgb, var(--shadow-color) 12%, transparent), 0 5px 12px color-mix(in srgb, var(--shadow-color) 5%, transparent);--shadow-soft:0 10px 32px color-mix(in srgb, var(--shadow-color) 6%, transparent), 0 1px 3px color-mix(in srgb, var(--shadow-color) 3%, transparent);--shadow-card-hover:0 14px 36px color-mix(in srgb, var(--shadow-color) 12%, transparent), 0 4px 10px color-mix(in srgb, var(--shadow-color) 6%, transparent);--shadow-glow-accent:0 0 24px oklch(52% .145 var(--hue-accent) / .2);--shadow-glow-danger:0 0 24px oklch(52% .2 var(--hue-danger) / .18);--shadow-hero:0 20px 44px oklch(38% .1 var(--hue-accent) / .22);--gradient-accent:linear-gradient(145deg, oklch(48% .1 var(--hue-accent)), oklch(39% .095 var(--hue-accent)));--gradient-surface:linear-gradient(180deg, var(--surface), var(--bg));--gradient-hero:linear-gradient(135deg, var(--surface2), var(--bg));--gradient-card:linear-gradient(180deg, var(--surface), oklch(98% .01 var(--hue-neutral)));--gradient-hero-banner:linear-gradient(145deg, oklch(50% .13 var(--hue-accent)) 0%, oklch(44% .115 var(--hue-accent)) 48%, oklch(38% .09 var(--hue-accent)) 100%);--hero-banner-fg:#fff;--font-display:"Avenir Next", "PingFang SC", "Noto Sans SC", sans-serif;--font-body:"PingFang SC", "Noto Sans SC", "Microsoft YaHei", sans-serif;--font-mono:"SF Mono", ui-monospace, "Menlo", monospace;--text-xs:11px;--text-sm:12px;--text-base:14px;--text-control:13px;--text-md:15px;--text-lg:17px;--text-xl:20px;--text-2xl:24px;--text-display:28px;--control-radius:12px;--control-height:44px;--control-ring:color-mix(in srgb, var(--accent) 24%, transparent);--control-hover:color-mix(in srgb, var(--accent) 8%, var(--surface));--control-primary-hover:color-mix(in srgb, var(--accent) 88%, var(--fg));--control-shadow:0 1px 2px color-mix(in srgb, var(--shadow-color) 10%, transparent);--radius-xs:8px;--radius-sm:10px;--radius-md:16px;--radius-lg:20px;--radius-xl:28px;--radius:var(--radius-lg);--gap:16px;--pad:20px;--safe-bottom:env(safe-area-inset-bottom,0px);--app-max-width:430px;--text-secondary:var(--fg-secondary)}@supports (color:lab(0% 0 0)){:root{--on-accent:lab(100% 0 0);--tick-line:lab(7.22637% -.0000149012 0/.12);--tick-line-filled:lab(100% 0 0/.85);--surface-floating:lab(100% 0 0/.92);--media-overlay-bg:lab(0% 0 0/.55);--media-overlay-bg-strong:lab(0% 0 0/.82);--media-overlay-fg:lab(100% 0 0);--media-overlay-control:lab(100% 0 0/.15);--hero-banner-fg:lab(100% 0 0)}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:oklch(15% .016 var(--hue-neutral));--surface:oklch(20.5% .02 var(--hue-neutral));--surface2:oklch(25% .022 var(--hue-neutral));--surface3:oklch(30% .024 var(--hue-neutral));--fg:#f5f5f5;--fg-secondary:oklch(88% .005 var(--hue-neutral));--muted:oklch(60% .01 var(--hue-neutral));--border:oklch(32% .008 var(--hue-neutral));--border-subtle:oklch(28% .006 var(--hue-neutral));--accent:oklch(72% .11 var(--hue-accent));--accent-bright:oklch(80% .12 var(--hue-accent));--accent-dim:oklch(72% .11 var(--hue-accent) / .13);--accent-glow:oklch(72% .11 var(--hue-accent) / .22);--danger:oklch(65% .22 var(--hue-danger));--danger-dim:oklch(65% .22 var(--hue-danger) / .12);--danger-glow:oklch(65% .22 var(--hue-danger) / .25);--warning:oklch(78% .15 var(--hue-warning));--warning-dim:oklch(78% .15 var(--hue-warning) / .12);--warning-glow:oklch(78% .15 var(--hue-warning) / .25);--info:oklch(68% .15 var(--hue-info));--info-dim:oklch(68% .15 var(--hue-info) / .12);--purple:oklch(72% .16 var(--hue-purple));--purple-dim:oklch(72% .16 var(--hue-purple) / .12);--on-accent:oklch(14% .008 var(--hue-neutral));--tick-line:#ffffff1f;--surface-floating:oklch(16% .01 var(--hue-neutral) / .92);--scrim:#0009;--scrim-strong:#000000b8;--shadow-color:#000;--shadow-glow-accent:0 0 24px oklch(72% .19 var(--hue-accent) / .2);--shadow-glow-danger:0 0 24px oklch(65% .22 var(--hue-danger) / .18);--shadow-soft:0 8px 28px #0006, 0 2px 6px #0000004d;--shadow-card-hover:0 14px 36px #00000080, 0 4px 10px #00000059;--shadow-hero:0 12px 32px oklch(52% .16 var(--hue-accent) / .3);--gradient-accent:linear-gradient(135deg, oklch(72% .19 var(--hue-accent)), oklch(65% .15 var(--hue-accent)));--gradient-surface:linear-gradient(180deg, oklch(22% .01 var(--hue-neutral)), oklch(18% .008 var(--hue-neutral)));--gradient-hero:linear-gradient(135deg, oklch(20% .015 var(--hue-neutral)), #0b0d12);--gradient-card:linear-gradient(180deg, oklch(24% .012 var(--hue-neutral)), oklch(20% .01 var(--hue-neutral)));--gradient-hero-banner:linear-gradient(145deg, oklch(46% .12 var(--hue-accent)) 0%, oklch(40% .1 var(--hue-accent)) 52%, oklch(34% .075 var(--hue-accent)) 100%);--hero-banner-fg:#fff}@supports (color:lab(0% 0 0)){:root[data-theme=dark]{--fg:lab(96.52% -.0000298023 .0000119209);--tick-line:lab(100% 0 0/.12);--scrim:lab(0% 0 0/.6);--scrim-strong:lab(0% 0 0/.72);--shadow-color:lab(0% 0 0);--shadow-soft:0 8px 28px lab(0% 0 0/.4), 0 2px 6px lab(0% 0 0/.3);--shadow-card-hover:0 14px 36px lab(0% 0 0/.5), 0 4px 10px lab(0% 0 0/.35);--gradient-hero:linear-gradient(135deg, oklch(20% .015 var(--hue-neutral)), lab(3.67543% -.212148 -2.43837));--hero-banner-fg:lab(100% 0 0)}}@media (min-width:768px){:root{--app-max-width:720px}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);height:100%;color:var(--fg);font:14px/1.5 var(--font-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .3s,color .3s;overflow-x:hidden}button,input,select{font:inherit}:root,[data-theme=dark]{--on-media:#fff;--media-shadow:#000;--media-surface:oklch(18% .02 var(--hue-neutral))}@supports (color:lab(0% 0 0)){:root,[data-theme=dark]{--on-media:lab(100% 0 0);--media-shadow:lab(0% 0 0)}}
.app{max-width:430px;height:100dvh;padding-bottom:calc(72px + var(--safe-bottom));flex-direction:column;margin:0 auto;display:flex;overflow:hidden}.scroll-area{scrollbar-gutter:stable;-webkit-overflow-scrolling:touch;min-height:0;padding:var(--pad);padding-top:calc(16px + env(safe-area-inset-top,20px));gap:var(--gap);flex-direction:column;flex:1;display:flex;overflow:clip auto}.app-hero{border-radius:var(--radius-xl);background:var(--gradient-hero-banner);color:var(--hero-banner-fg);box-shadow:var(--shadow-hero);flex-direction:column;gap:10px;margin-bottom:4px;padding:22px 20px 18px;display:flex;position:relative;overflow:hidden}.app-hero:after{content:"";background:radial-gradient(circle, color-mix(in srgb, var(--on-media) 14%, transparent), transparent 65%);pointer-events:none;width:60%;height:160%;position:absolute;top:-40%;right:-20%}.app-hero-main{z-index:1;justify-content:space-between;align-items:center;gap:12px;min-width:0;display:flex;position:relative}.app-hero h1{font:700 26px/1.15 var(--font-display);letter-spacing:-.03em;min-width:0;color:var(--hero-banner-fg)}.app-hero-badge{border:1px solid color-mix(in srgb, var(--on-media) 25%, transparent);background:color-mix(in srgb, var(--on-media) 18%, transparent);color:var(--hero-banner-fg);font:500 10px/1.2 var(--font-mono);font-variant-numeric:tabular-nums;white-space:nowrap;-webkit-backdrop-filter:blur(8px);border-radius:999px;flex-shrink:0;padding:6px 12px}.app-hero span,.app-hero p{display:none}.app-hero .app-hero-badge{display:inline-block}.app-hero strong,.app-hero-meta{display:none}.app-hero .sync-status{color:var(--hero-banner-fg);z-index:1;padding-left:2px;position:relative}.app-hero .sync-status-dot{background:color-mix(in srgb, var(--on-media) 85%, transparent)}.app-hero .sync-status-synced .sync-status-dot{background:color-mix(in srgb, var(--on-media) 95%, transparent);box-shadow:0 0 6px color-mix(in srgb, var(--on-media) 50%, transparent)}.app-hero .sync-status-loading .sync-status-dot,.app-hero .sync-status-offline .sync-status-dot,.app-hero .sync-status-pending .sync-status-dot,.app-hero .sync-status-error .sync-status-dot{background:color-mix(in srgb, var(--on-media) 85%, transparent)}.module-screen{gap:var(--gap);min-width:0;display:none}.module-screen.active{display:grid}.quick-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.quick-actions button{border:1px solid var(--border);border-radius:var(--radius);background:radial-gradient(circle at 100% 0%, var(--accent-dim), transparent 50%), var(--gradient-card);min-width:0;color:var(--fg);text-align:left;cursor:pointer;box-shadow:var(--shadow-sm);padding:16px;transition:transform .2s cubic-bezier(.16,1,.3,1),box-shadow .2s}.quick-actions button:hover{box-shadow:var(--shadow-md)}.quick-actions.cash-flow button{background:radial-gradient(circle at 100% 0%, var(--warning-dim), transparent 50%), var(--gradient-card)}.quick-actions span,.quick-actions strong{display:block}.quick-actions span{color:var(--muted);letter-spacing:.02em;margin-bottom:6px;font-size:11px}.quick-actions strong{font:700 14px/1.25 var(--font-display);letter-spacing:-.01em}.quick-actions button:active{transform:scale(.97)}.header{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.header h1{font:700 26px/1.2 var(--font-display);letter-spacing:-.03em}.header-actions{align-items:center;gap:8px;display:flex}
.card{background:var(--gradient-card);border:1px solid var(--border);border-radius:var(--radius);min-width:0;max-width:100%;box-shadow:var(--shadow-soft);padding:20px;transition:box-shadow .25s cubic-bezier(.16,1,.3,1),transform .25s cubic-bezier(.16,1,.3,1);position:relative}.module-section{gap:var(--gap);border:1px solid var(--border);border-radius:var(--radius);background:var(--gradient-card);min-width:0;box-shadow:var(--shadow-soft);padding:16px;display:grid;overflow:hidden}.hero-card{background:var(--gradient-hero-banner);color:var(--hero-banner-fg);border-radius:var(--radius-xl);box-shadow:var(--shadow-hero);border-color:#0000;overflow:hidden}.hero-card .card-title,.hero-card .cash-snapshot-period,.hero-card .cash-surplus-label{color:color-mix(in srgb, var(--on-media) 75%, transparent)}.hero-card .net-worth,.hero-card .cash-surplus-value,.hero-card .cash-surplus-value.positive,.hero-card .cash-surplus-value.negative{color:var(--hero-banner-fg)}.hero-card .net-worth .unit,.hero-card .cash-surplus-value .unit{color:color-mix(in srgb, var(--on-media) 70%, transparent)}.hero-card .change-row .change-item,.hero-card .cash-balance-row .change-item{color:color-mix(in srgb, var(--on-media) 92%, transparent)}.hero-card .change-item.positive .arrow,.hero-card .change-item.negative .arrow{color:var(--hero-banner-fg)}.hero-card .amount-visibility-btn{border-color:color-mix(in srgb, var(--on-media) 30%, transparent);color:color-mix(in srgb, var(--on-media) 90%, transparent)}.hero-card .amount-visibility-btn:hover{background:color-mix(in srgb, var(--on-media) 15%, transparent);border-color:color-mix(in srgb, var(--on-media) 50%, transparent);color:var(--hero-banner-fg)}.hero-card .analysis-grid,.hero-card .cash-analysis-grid{background:color-mix(in srgb, var(--on-media) 12%, transparent);border-color:color-mix(in srgb, var(--on-media) 16%, transparent)}.hero-card .analysis-item span,.hero-card .analysis-item small{color:color-mix(in srgb, var(--on-media) 70%, transparent)}.hero-card .analysis-item strong.positive,.hero-card .analysis-item strong.negative{color:var(--hero-banner-fg)}.hero-card .analysis-item,.hero-card .cash-analysis-grid .analysis-item{background:color-mix(in srgb, var(--on-media) 14%, transparent);border-color:color-mix(in srgb, var(--on-media) 18%, transparent)}.hero-card .contribution-list{border-color:color-mix(in srgb, var(--on-media) 16%, transparent)}.hero-card .contribution-item span{color:color-mix(in srgb, var(--on-media) 78%, transparent)}.hero-card .contribution-item strong.positive,.hero-card .contribution-item strong.negative{color:var(--hero-banner-fg)}.hero-card .alignment-banner{background:color-mix(in srgb, var(--on-media) 16%, transparent);color:color-mix(in srgb, var(--on-media) 85%, transparent);border-color:color-mix(in srgb, var(--on-media) 22%, transparent)}.hero-card .alignment-banner strong,.hero-card .alignment-banner span{color:var(--hero-banner-fg)}.hero-card .alignment-banner.warning{background:color-mix(in srgb, var(--on-media) 20%, transparent)}.module-section>*{min-width:0;max-width:100%}.module-header{justify-content:space-between;align-items:flex-start;gap:14px;padding:4px 2px 2px;display:flex}.module-header span,.module-header p{color:var(--muted);font-size:11px;display:block}.module-header span{font:700 11px/1 var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:4px}.module-header.cash-flow span{color:var(--warning)}.module-header.targets span{color:var(--purple)}.module-header h2{font:700 22px/1.15 var(--font-display);letter-spacing:-.03em;margin-bottom:4px}.module-header p{line-height:1.45}.module-header .import-btn{background:var(--bg);flex-shrink:0;margin-top:2px}.card-title{font:600 12px/1.2 var(--font-body);color:var(--muted);letter-spacing:.02em;margin-bottom:12px}.card-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:4px;display:flex}.card-head .card-title{margin-bottom:0}.list-caption{font:600 12px/1.2 var(--font-body);color:var(--muted);letter-spacing:.01em;margin:18px 0 8px;padding:0 16px;display:block}.list-caption:first-child{margin-top:0}.list-group-body{background:var(--gradient-card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-soft);display:block;overflow:hidden}.list-row{border:none;border-bottom:1px solid var(--border-subtle);width:100%;min-height:52px;color:var(--fg);font:500 15px/1.3 var(--font-body);text-align:left;cursor:pointer;background:0 0;align-items:center;gap:12px;padding:12px 16px;transition:background .15s;display:flex}.list-row:last-child{border-bottom:none}.list-row:active{background:var(--surface2)}.list-icon{background:var(--accent);width:32px;height:32px;color:var(--on-accent);border-radius:9px;flex-shrink:0;place-items:center;font-size:16px;display:grid}.list-icon svg{width:18px;height:18px}.list-icon.info{background:var(--info)}.list-icon.warning{background:var(--warning);color:var(--media-surface)}.list-icon.danger{background:var(--danger)}.list-icon.purple{background:var(--purple)}.list-icon.muted{background:var(--surface3);color:var(--fg-secondary)}.list-label{flex:1;min-width:0}.list-sub{color:var(--muted);margin-top:2px;font-size:12px;font-weight:400;display:block}.list-value{max-width:50%;color:var(--muted);text-align:right;white-space:nowrap;text-overflow:ellipsis;flex-shrink:0;font-size:14px;overflow:hidden}.list-chevron{width:8px;height:14px;color:var(--muted);opacity:.6;flex-shrink:0}.list-chevron:after{content:"";border-top:2px solid;border-right:2px solid;width:8px;height:8px;margin-top:3px;display:block;transform:rotate(45deg)}.list-row[disabled],.list-row.is-static{cursor:default}.list-row[disabled]{opacity:.45}.list-row.danger{color:var(--danger)}.list-row.danger .list-icon{background:var(--danger-dim);color:var(--danger)}.amount-visibility-btn{border:1px solid var(--border);width:32px;height:32px;color:var(--muted);cursor:pointer;background:0 0;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;transition:color .2s,border-color .2s,background .2s;display:inline-flex}.amount-visibility-btn:hover{color:var(--fg);border-color:color-mix(in oklch, var(--border) 70%, var(--fg));background:var(--surface2)}.amount-visibility-btn[aria-pressed=true]{color:var(--accent);border-color:color-mix(in oklch, var(--accent) 45%, var(--border));background:var(--accent-dim)}.inline-add-btn,.edit-mode-btn{border:1px solid var(--border);min-height:44px;color:var(--muted);font:600 11px/1 var(--font-body);cursor:pointer;background:0 0;border-radius:999px;flex-shrink:0;padding:6px 12px;transition:color .2s,border-color .2s,background .2s,box-shadow .2s}.inline-add-btn{color:var(--fg)}.net-worth{font:700 36px/1.05 var(--font-mono);letter-spacing:-.03em;font-variant-numeric:tabular-nums;margin-bottom:12px}.net-worth .unit{color:var(--muted);font-size:16px;font-weight:500;font-family:var(--font-body);margin-left:4px}.change-row{gap:16px;font-size:12px;display:flex}.change-item{align-items:center;gap:4px;display:flex}.change-item.positive{color:var(--accent)}.change-item.negative{color:var(--danger)}.change-item .arrow{font-size:11px}.tab-row{background:var(--surface2);border-radius:var(--radius-md);z-index:3;border:0;gap:4px;margin-bottom:12px;padding:4px;display:flex;position:relative}.tab-btn{min-height:44px;color:var(--fg-secondary);font:550 12px/1 var(--font-body);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:none;flex:1;padding:8px 4px;transition:color .18s,background .18s,box-shadow .18s}.tab-btn.active{background:var(--surface);color:var(--accent-bright);box-shadow:var(--shadow-sm), inset 0 -2px 0 var(--accent);font-weight:700}.range-row{z-index:3;gap:4px;margin-bottom:12px;display:flex;position:relative}.range-btn{min-height:36px;color:var(--fg-secondary);font:550 12px/1 var(--font-body);cursor:pointer;background:0 0;border:0;border-radius:999px;padding:6px 13px;transition:color .18s,background .18s}.range-btn.active{background:var(--accent-dim);color:var(--accent-bright);box-shadow:none;font-weight:700}.tab-btn:focus-visible,.range-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.chart-container{height:200px;position:relative}.chart-container canvas,.trend-svg{cursor:crosshair;touch-action:none;width:100%!important;height:100%!important}.trend-svg{display:block;overflow:hidden}.trend-grid-line{stroke:var(--border-subtle);stroke-width:1px}.trend-axis-label{fill:var(--muted);font:11px var(--font-mono)}.trend-axis-label.y-label{text-anchor:end}.trend-axis-label.x-label{text-anchor:middle}.trend-area{pointer-events:none}.trend-line{fill:none;stroke:var(--accent);stroke-width:2.5px;stroke-linejoin:round;stroke-linecap:round;pointer-events:none}.trend-line.liability{stroke:var(--danger)}.trend-line.income{stroke:var(--accent)}.trend-line.expense{stroke:var(--danger)}.trend-line.surplus{stroke:var(--warning)}.trend-chart-wrap{gap:8px;display:grid}.trend-legend{flex-wrap:wrap;gap:12px;display:flex}.trend-legend.cash-flow-legend{align-items:center}.cash-flow-legend-items{flex-wrap:wrap;gap:12px;display:flex}.legend-item{color:var(--muted);align-items:center;gap:6px;font-size:12px;display:inline-flex}.legend-item:before{content:"";background:currentColor;border-radius:999px;width:18px;height:3px}.legend-item.surplus-cap{color:var(--muted)}.legend-item.income:before{background:var(--accent-dim);border:1px solid color-mix(in srgb, var(--accent) 40%, transparent);border-radius:3px;width:10px;height:10px}.legend-item.expense:before{background:var(--danger-dim);border:1px solid color-mix(in srgb, var(--danger) 40%, transparent);border-radius:3px;width:10px;height:10px}.legend-item.surplus-cap:before{background:linear-gradient(180deg, var(--accent) 0 42%, var(--danger) 42% 100%);border-radius:3px;width:10px;height:10px}.cash-flow-chart{height:220px}.cash-flow-baseline{stroke:color-mix(in srgb, var(--fg-secondary) 40%, transparent);stroke-width:1px;pointer-events:none}.cash-flow-bar-group{pointer-events:none;transition:opacity .2s}.cash-flow-income{fill:var(--accent-dim);stroke:color-mix(in srgb, var(--accent) 30%, transparent);stroke-width:1px}.cash-flow-expense{fill:color-mix(in srgb, var(--danger) 65%, transparent);stroke:color-mix(in srgb, var(--danger) 45%, transparent);stroke-width:1px}.cash-flow-surplus-cap{fill:var(--accent);stroke:color-mix(in srgb, var(--accent) 50%, transparent);stroke-width:1px}.cash-flow-deficit-cap{fill:var(--danger);stroke:color-mix(in srgb, var(--danger) 50%, transparent);stroke-width:1px}.cash-flow-bar-group.active .cash-flow-income,.cash-flow-bar-group.active .cash-flow-expense,.cash-flow-bar-group.active .cash-flow-surplus-cap,.cash-flow-bar-group.active .cash-flow-deficit-cap{opacity:1;filter:drop-shadow(0 0 8px color-mix(in srgb, var(--accent) 20%, transparent))}.cash-flow-bar-group:not(.active){opacity:.88}.cash-flow-tooltip{min-width:148px}.cash-flow-tooltip-hero{gap:2px;margin:6px 0 4px;display:grid}.cash-flow-tooltip-hero small{color:var(--muted);font-size:11px}.cash-flow-tooltip-hero strong{font-size:16px}.cash-flow-tooltip-change{color:var(--muted);margin-bottom:6px;font-size:11px;display:block}.cash-flow-tooltip-row{justify-content:space-between;align-items:center;gap:12px;margin-top:4px;display:flex}.cash-flow-tooltip-row span{margin-bottom:0;font-size:11px}.cash-flow-tooltip-row strong{font-size:12px}.cash-flow-tooltip-row.income span{color:var(--accent)}.cash-flow-tooltip-row.expense span{color:var(--danger)}.cash-flow-tooltip-row.surplus span{color:var(--warning)}.legend-item.income{color:var(--accent)}.legend-item.expense{color:var(--danger)}.trend-point{fill:var(--accent);pointer-events:none}.trend-point.liability{fill:var(--danger)}.trend-point-inner{fill:var(--surface2);pointer-events:none}.trend-crosshair{stroke:var(--border);stroke-width:1px;pointer-events:none}.trend-active-point{fill:var(--accent-dim);pointer-events:none}.trend-hit-area{fill:#0000;pointer-events:all}.chart-empty{height:100%;color:var(--muted);place-items:center;font-size:12px;display:grid}.chart-tooltip{border-radius:var(--radius-sm);background:var(--surface-floating);border:1px solid var(--border);min-width:100px;color:var(--fg);box-shadow:var(--shadow-lg);pointer-events:none;z-index:2;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);padding:10px 12px;position:absolute;transform:translate(-50%,calc(-100% - 12px))}.chart-tooltip:after{content:"";background:var(--surface-floating);border-right:1px solid var(--border);border-bottom:1px solid var(--border);width:10px;height:10px;position:absolute;bottom:-5px;left:50%;transform:translate(-50%)rotate(45deg)}.chart-tooltip span,.chart-tooltip strong{white-space:nowrap;display:block}.chart-tooltip span{color:var(--muted);margin-bottom:3px;font-size:11px}.chart-tooltip strong{font:700 12px/1.2 var(--font-mono);font-variant-numeric:tabular-nums}.chart-tooltip small{color:var(--muted);white-space:nowrap;margin-top:4px;font-size:11px;display:block}.chart-tooltip-note{border-top:1px solid var(--border-subtle);max-width:220px;margin-top:6px;padding-top:6px;line-height:1.4;white-space:normal!important;color:var(--fg-secondary)!important}.analysis-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:14px;display:grid}.analysis-item{border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:var(--bg);padding:12px;transition:border-color .2s}.analysis-item:hover{border-color:var(--border)}.analysis-item span,.analysis-item small{color:var(--muted);font-size:11px;display:block}.analysis-item strong{font:700 14px/1 var(--font-mono);font-variant-numeric:tabular-nums;margin:4px 0 2px;display:block}.income-card-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-top:8px;display:flex}.income-card-header span,.income-card-header small{color:var(--muted);font-size:11px;display:block}.income-card-header strong{font:700 28px/1.1 var(--font-mono);font-variant-numeric:tabular-nums;margin-top:4px;display:block}.income-grid{grid-template-columns:repeat(2,1fr);gap:8px;margin-top:14px;display:grid}.income-stat{border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:var(--bg);padding:12px}.income-stat span,.income-stat small{color:var(--muted);font-size:11px;display:block}.income-stat strong{font:700 14px/1 var(--font-mono);font-variant-numeric:tabular-nums;margin:4px 0 3px;display:block}.cash-snapshot-card{overflow:hidden}.cash-snapshot-card>*{position:relative}.cash-snapshot-period,.cash-surplus-label{color:var(--muted);font-size:12px}.cash-snapshot-period{margin-top:2px}.cash-surplus-label{margin-top:14px}.cash-surplus-value{font:700 36px/1.05 var(--font-mono);letter-spacing:-.03em;font-variant-numeric:tabular-nums;margin-top:4px}.cash-surplus-value .unit{color:var(--muted);font:500 16px/1 var(--font-body);margin-left:4px}.cash-balance-row{flex-wrap:wrap;gap:14px;margin-top:12px;font-size:12px;display:flex}.cash-analysis-grid .analysis-item{background:var(--surface2)}.donut-section{align-items:center;gap:14px;min-width:0;display:flex}.net-worth-donuts{flex-direction:column;gap:12px;display:flex}@media (min-width:768px){.net-worth-donuts{flex-direction:row}.net-worth-donuts>.card{flex:1 1 0}}.donut-chart{flex-shrink:0;width:124px;height:124px;display:block}.donut-center-label{fill:var(--muted);font:600 10px var(--font-body);text-anchor:middle}.donut-center-value{fill:var(--fg);font:700 15px var(--font-mono);text-anchor:middle}.donut-legend{flex-direction:column;flex:1;gap:7px;min-width:0;display:flex}.legend-item{align-items:center;gap:7px;display:flex}.legend-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.legend-label{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:12px;overflow:hidden}.legend-value{font:600 12px/1 var(--font-mono);font-variant-numeric:tabular-nums;text-align:right;flex-shrink:0}.legend-item.summary{border-top:1px solid var(--border-subtle);margin-top:4px;padding-top:8px}.table-wrapper{--table-sticky-offset:0px;--table-cat-width:64px;--table-sub-width:112px;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;min-width:0;max-width:100%;margin:0;padding:0;overflow-x:auto}.data-table{border-collapse:separate;border-spacing:0;font-variant-numeric:tabular-nums;width:max-content;min-width:100%;font-size:12px}.data-table th,.data-table td{text-align:right;white-space:nowrap;border-bottom:1px solid var(--border-subtle);padding:9px 6px}.data-table th{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;background:var(--surface);z-index:2;font-size:11px;font-weight:600;position:sticky;top:0}.month-edit-btn{color:inherit;cursor:pointer;font:inherit;background:0 0;border:none;justify-items:end;gap:2px;display:grid}.month-edit-btn span{color:var(--accent);letter-spacing:0;font-size:11px}.table-edit-hint{color:var(--muted);margin:-4px 0 10px;font-size:11px;line-height:1.5}.inline-metric-input{border-radius:var(--radius-xs);width:86px;color:var(--fg);font:12px/1.2 var(--font-mono);font-variant-numeric:tabular-nums;text-align:right;background:0 0;border:1px solid #0000;outline:none;padding:5px 6px;transition:border-color .2s,background .2s,box-shadow .2s}.inline-metric-input:hover{border-color:var(--border);background:var(--surface2)}.inline-metric-input:focus{border-color:var(--accent);background:var(--bg);box-shadow:0 0 0 3px var(--accent-dim)}.data-table th:first-child,.data-table th:nth-child(2){text-align:left;background:var(--surface);position:sticky}.data-table th:first-child{left:var(--table-sticky-offset);width:var(--table-cat-width);min-width:var(--table-cat-width);z-index:5}.data-table th:nth-child(2){left:calc(var(--table-sticky-offset) + var(--table-cat-width));width:var(--table-sub-width);min-width:var(--table-sub-width);z-index:4}.data-table .cat-cell{text-align:left;color:var(--fg);vertical-align:middle;background:var(--surface2);border-right:2px solid var(--border);writing-mode:horizontal-tb;width:var(--table-cat-width);min-width:64px;left:var(--table-sticky-offset);z-index:4;padding:10px 8px 10px 12px;font-size:12px;font-weight:700;position:sticky}.data-table .cat-cell:before{content:"";background:var(--cat-accent);pointer-events:none;border-radius:0 2px 2px 0;width:3px;position:absolute;top:0;bottom:0;left:0}.data-table .cat-cell.asset{--cat-accent:var(--accent)}.data-table .cat-cell.liability{--cat-accent:var(--danger)}.data-table .sub-cell{text-align:left;color:var(--muted);width:var(--table-sub-width);min-width:var(--table-sub-width);max-width:var(--table-sub-width);text-overflow:ellipsis;left:calc(var(--table-sticky-offset) + var(--table-cat-width));z-index:3;background:var(--surface);box-shadow:1px 0 0 var(--border-subtle);padding-left:10px;font-weight:400;position:sticky;overflow:hidden}.data-table .formula-cell{z-index:12;overflow:visible}.data-table .subtotal td{color:var(--accent);border-bottom:2px solid var(--border);font-weight:700}.data-table .subtotal .sub-cell{color:var(--accent);font-weight:600}.data-table .subtotal.liability td,.data-table .subtotal.liability .sub-cell{color:var(--danger)}.data-table .key-net td{color:var(--info);border-top:1.5px solid var(--border);border-bottom:1.5px solid var(--border);font-size:12px;font-weight:700}.data-table .key-net .sub-cell:before{content:"★ ";font-size:11px}.formula-tooltip{cursor:help;-webkit-text-decoration:underline dotted color-mix(in srgb, var(--fg-secondary) 60%, transparent);text-decoration:underline dotted color-mix(in srgb, var(--fg-secondary) 60%, transparent);text-underline-offset:3px;align-items:center;gap:4px;display:inline-flex;position:relative}.formula-floating-tooltip{z-index:1000;border-radius:var(--radius-sm);background:var(--surface-floating);border:1px solid var(--border);max-width:260px;color:var(--fg);box-shadow:var(--shadow-lg);font:500 11px/1.5 var(--font-body);pointer-events:none;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);padding:10px 12px;position:fixed}.split-tooltip{cursor:help;-webkit-text-decoration:underline dotted color-mix(in srgb, var(--fg-secondary) 50%, transparent);text-decoration:underline dotted color-mix(in srgb, var(--fg-secondary) 50%, transparent);text-underline-offset:3px;justify-content:flex-end;display:inline-flex;position:relative}.split-tooltip:after{content:attr(data-tooltip);z-index:20;border-radius:var(--radius-sm);background:var(--surface-floating);border:1px solid var(--border);width:max-content;max-width:260px;color:var(--fg);box-shadow:var(--shadow-lg);font:500 11px/1.5 var(--font-body);white-space:normal;opacity:0;pointer-events:none;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);padding:10px 12px;transition:opacity .2s,transform .2s;position:absolute;bottom:calc(100% + 8px);right:0;transform:translateY(4px)}.split-tooltip:hover:after,.split-tooltip:focus-visible:after{opacity:1;transform:translateY(0)}.data-table .grand-total td{color:var(--fg);background:var(--surface2);border-bottom:none;font-size:12px;font-weight:700}.data-table .grand-total .sub-cell{background:var(--surface2)}.data-table .income-row td{color:var(--accent);border-top:1px solid var(--border-subtle);font-weight:600}.data-table .income-row.passive td{color:var(--warning)}.data-table .income-row.windfall td{color:var(--purple)}.data-table .expense-row td{color:var(--warning);border-top:1px solid var(--border-subtle);font-weight:600}.data-table .expense-row.surplus td{color:var(--fg)}.data-table .expense-row.savings td{color:var(--info)}.data-table .subtotal td:first-child,.data-table .key-net td:first-child,.data-table .grand-total td:first-child{left:var(--table-sticky-offset);z-index:4;background:var(--surface);position:sticky}.data-table .grand-total td:first-child{background:var(--surface2)}.table-scroll-hint{color:var(--muted);text-align:center;opacity:.5;margin-top:8px;font-size:11px}.person-toggle{gap:8px;margin-bottom:14px;display:flex}.person-btn{border:1px solid var(--border);color:var(--muted);font:500 12px/1 var(--font-body);cursor:pointer;background:0 0;border-radius:999px;padding:7px 16px;transition:all .2s}.person-btn.active{background:var(--surface2);color:var(--fg);border-color:var(--border);box-shadow:var(--shadow-sm)}.fab{bottom:calc(84px + var(--safe-bottom));background:var(--gradient-accent);width:50px;height:50px;color:var(--on-accent);cursor:pointer;box-shadow:var(--shadow-lg), var(--shadow-glow-accent);z-index:100;border:none;border-radius:50%;place-items:center;font-size:24px;font-weight:300;line-height:1;transition:transform .2s cubic-bezier(.16,1,.3,1),box-shadow .2s;display:grid;position:fixed;right:18px}.fab:hover{box-shadow:var(--shadow-card-hover), var(--shadow-glow-accent)}.fab:active{transform:scale(.92)}.bottom-nav{background:var(--surface-floating);-webkit-backdrop-filter:blur(24px)saturate(180%);border-top:1px solid var(--border-subtle);width:100%;max-width:430px;padding:6px 12px calc(8px + var(--safe-bottom));z-index:90;gap:4px;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.nav-item{color:var(--muted);font:400 10px/1 var(--font-body);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;flex-direction:column;flex:1;align-items:center;gap:4px;padding:8px 0;transition:color .2s,transform .15s;display:flex}.nav-item.active{color:var(--accent);background:0 0;font-weight:600}.nav-item:active{transform:scale(.95)}.nav-item svg{width:22px;height:22px;transition:transform .2s}.nav-item.active svg{transform:scale(1.05)}.sheet-overlay,.import-overlay,.clear-overlay{background:var(--scrim);z-index:200;opacity:0;pointer-events:none;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);transition:opacity .3s;position:fixed;inset:0}.import-overlay,.clear-overlay{background:var(--scrim-strong);z-index:300}.sheet-overlay.open,.import-overlay.open,.clear-overlay.open{opacity:1;pointer-events:all}.sheet,.import-sheet,.clear-sheet{background:var(--gradient-surface);width:100%;max-width:430px;padding:20px;padding-bottom:calc(20px + var(--safe-bottom));border:1px solid var(--border);border-bottom:none;border-radius:24px 24px 0 0;transition:transform .4s cubic-bezier(.32,.72,0,1);position:fixed;bottom:0;left:50%;overflow-y:auto;transform:translate(-50%)translateY(100%)}.sheet{z-index:201;max-height:80dvh}.import-sheet{z-index:301;max-height:85dvh}.clear-sheet{z-index:301;max-height:70dvh}.sheet-overlay.open .sheet,.import-overlay.open .import-sheet,.clear-overlay.open .clear-sheet{transform:translate(-50%)translateY(0)}.sheet-handle{background:var(--border);border-radius:2px;width:36px;height:4px;margin:0 auto 10px}.sheet-heading{grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;margin-bottom:14px;display:grid}.sheet-heading h3{text-align:center;overflow-wrap:anywhere;min-width:0;margin:0}.sheet-close{width:44px;height:44px;color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:999px;place-items:center;transition:background-color .16s cubic-bezier(.16,1,.3,1),color .16s cubic-bezier(.16,1,.3,1),transform .16s cubic-bezier(.16,1,.3,1);display:inline-grid}.sheet-close:hover{background:var(--surface2);color:var(--fg)}.sheet-close:active{transform:scale(.94)}.sheet-close svg{stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;width:20px;height:20px}.sheet h3,.import-sheet h3,.clear-sheet h3{font:700 18px/1.3 var(--font-display);letter-spacing:-.02em;margin-bottom:18px}.sheet-heading h3{margin-bottom:0}.form-group{margin-bottom:16px}.form-group label{color:var(--muted);margin-bottom:6px;font-size:12px;font-weight:500;display:block}.form-group select,.form-group input,.form-group textarea{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg);width:100%;color:var(--fg);font:14px/1.4 var(--font-body);outline:none;padding:12px 14px;transition:border-color .2s,box-shadow .2s}.form-group select:focus,.form-group input:focus,.form-group textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}.form-group textarea{resize:vertical;min-height:80px}.form-row{grid-template-columns:1fr 1fr;gap:10px;display:grid}.sheet-section-title,.settings-subtitle{color:var(--muted);letter-spacing:.03em;margin:18px 0 12px;font-size:12px;font-weight:600}.passive-goal-form{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);margin-top:14px;padding:14px}.passive-goal-form .settings-subtitle{margin-top:0}.btn-submit,.btn-import-confirm{border-radius:var(--radius-sm);background:var(--gradient-accent);width:100%;min-height:44px;color:var(--on-accent);font:600 15px/1 var(--font-body);cursor:pointer;box-shadow:var(--shadow-glow-accent);border:none;padding:15px;transition:opacity .2s,transform .15s}.btn-submit:active,.btn-import-confirm:active{opacity:.85;transform:scale(.98)}.btn-secondary{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg);width:100%;min-height:44px;color:var(--fg);font:600 12px/1 var(--font-body);cursor:pointer;margin-bottom:12px;padding:12px;transition:all .2s}.btn-secondary.danger{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 30%, transparent);margin-top:10px;margin-bottom:0}.btn-secondary:disabled{opacity:.4;cursor:not-allowed}.btn-submit{margin-top:8px}.btn-import-confirm:disabled{opacity:.35;cursor:not-allowed}.import-btn{border:1px solid var(--border);background:var(--surface);color:var(--muted);font:500 11px/1 var(--font-body);border-radius:var(--radius-xs);cursor:pointer;align-items:center;gap:4px;padding:7px 12px;transition:all .2s;display:inline-flex}.import-btn:active,.sheet-chip:active{transform:scale(.95)}.import-btn.danger{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 30%, transparent)}.import-btn svg{width:14px;height:14px}.import-dropzone{border:2px dashed var(--border);border-radius:var(--radius);text-align:center;cursor:pointer;margin-bottom:18px;padding:32px 20px;transition:all .2s}.import-dropzone.dragover{border-color:var(--accent);background:var(--accent-dim);box-shadow:var(--shadow-glow-accent)}.import-dropzone .icon{opacity:.5;margin-bottom:8px;font-size:32px}.import-dropzone .label{color:var(--muted);font-size:12px;line-height:1.5}.import-dropzone .label strong{color:var(--accent)}.import-dropzone input[type=file]{display:none}.import-file-info{background:var(--bg);border-radius:var(--radius-sm);align-items:center;gap:12px;margin-bottom:18px;padding:14px;display:flex}.import-file-info .file-icon{border-radius:var(--radius-xs);background:color-mix(in srgb, var(--accent) 15%, transparent);flex-shrink:0;place-items:center;width:38px;height:38px;font-size:16px;display:grid}.import-file-info .file-name{white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:12px;font-weight:500;overflow:hidden}.import-file-info .file-size{color:var(--muted);font-size:11px}.sheet-chips{flex-wrap:wrap;gap:8px;margin-bottom:18px;display:flex}.sheet-chip{border:1px solid var(--border);color:var(--muted);font:500 12px/1 var(--font-body);cursor:pointer;background:0 0;border-radius:999px;padding:8px 14px;transition:all .2s}.sheet-chip.selected{background:var(--accent-dim);color:var(--accent);border-color:var(--accent);box-shadow:var(--shadow-glow-accent)}.import-preview{margin-bottom:18px}.import-preview-title{color:var(--muted);margin-bottom:8px;font-size:12px;font-weight:500}.import-preview-table{border-collapse:collapse;font-variant-numeric:tabular-nums;border-radius:var(--radius-xs);width:100%;font-size:11px;overflow:hidden}.import-preview-table th{background:var(--bg);color:var(--muted);text-align:right;letter-spacing:.04em;padding:7px 8px;font-size:11px;font-weight:600}.import-preview-table th:first-child,.import-preview-table td:first-child{text-align:left}.import-preview-table td{text-align:right;border-bottom:1px solid var(--border-subtle);color:var(--fg);padding:6px 8px}.import-preview-table td:first-child{color:var(--muted);font-weight:500}.import-preview-scroll{-webkit-overflow-scrolling:touch;overflow-x:auto}.import-mode-panel{margin-bottom:18px}.clear-options{gap:10px;margin-bottom:18px;display:grid}.clear-option{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);cursor:pointer;align-items:flex-start;gap:12px;padding:14px;transition:border-color .2s;display:flex}.clear-option:hover{border-color:var(--border)}.clear-option input{width:16px;height:16px;accent-color:var(--danger);flex-shrink:0;margin-top:2px}.clear-option span,.clear-option strong,.clear-option small{display:block}.clear-option strong{color:var(--fg);margin-bottom:4px;font-size:12px}.clear-option small{color:var(--muted);font-size:11px;line-height:1.45}.import-mode-options{gap:8px;display:grid}.mode-option{border:1px solid var(--border);background:var(--bg);color:var(--fg);border-radius:var(--radius-sm);text-align:left;cursor:pointer;padding:12px 14px;transition:all .2s}.mode-option.selected{border-color:var(--accent);background:var(--accent-dim);box-shadow:var(--shadow-glow-accent)}.mode-option strong,.mode-option span{display:block}.mode-option strong{margin-bottom:4px;font-size:12px}.mode-option span{color:var(--muted);font-size:11px}.import-summary{grid-template-columns:repeat(2,1fr);gap:8px;margin-top:12px;display:grid}.import-summary span{border-radius:var(--radius-xs);background:var(--bg);color:var(--muted);padding:8px 10px;font-size:11px}.import-status{border-radius:var(--radius-sm);margin-bottom:12px;padding:12px 14px;font-size:12px;display:none}.import-status.success{background:color-mix(in srgb, var(--accent) 8%, transparent);color:var(--accent);border:1px solid color-mix(in srgb, var(--accent) 25%, transparent);display:block}.import-status.error{background:color-mix(in srgb, var(--danger) 8%, transparent);color:var(--danger);border:1px solid color-mix(in srgb, var(--danger) 25%, transparent);display:block}.import-copy{color:var(--muted);margin-bottom:18px;font-size:12px;line-height:1.5}.settings-panel{margin-bottom:8px}.settings-section{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface3);margin-top:14px;padding:16px}.settings-section>div:first-child h3{font:700 15px/1.2 var(--font-display);letter-spacing:-.01em}.settings-section>div:first-child p{color:var(--muted);margin-top:6px;font-size:11px;line-height:1.45}.danger-zone{border-color:color-mix(in srgb, var(--danger) 28%, transparent);background:var(--danger-dim)}.settings-grid{gap:10px;margin-top:14px;display:grid}.settings-action{border:1px solid var(--border);background:var(--bg);color:var(--fg);border-radius:var(--radius-sm);text-align:left;cursor:pointer;padding:14px;transition:all .2s}.settings-action:hover{border-color:var(--border);background:var(--surface2)}.settings-action strong,.settings-action span{display:block}.settings-action strong{margin-bottom:4px;font-size:12px}.settings-action span{color:var(--muted);font-size:11px;line-height:1.4}.settings-action.danger strong{color:var(--danger)}.settings-action:disabled{opacity:.4;cursor:not-allowed}.settings-meta{color:var(--muted);gap:4px;margin-top:14px;font-size:11px;display:grid}.hidden-file-input{display:none}.toast-stack{top:calc(env(safe-area-inset-top,12px) + 12px);z-index:500;pointer-events:none;gap:8px;width:min(390px,100% - 24px);display:grid;position:fixed;left:50%;transform:translate(-50%)}.toast{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);box-shadow:var(--shadow-lg);pointer-events:auto;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;font-size:12px;animation:.32s cubic-bezier(.16,1,.3,1) toast-in;display:flex}.toast-success{border-color:oklch(72% .19 var(--hue-accent) / .35)}.toast-error{border-color:oklch(65% .22 var(--hue-danger) / .35)}@keyframes toast-in{0%{opacity:0;transform:translateY(-16px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@media (prefers-reduced-motion:reduce){.toast{animation:none}}.toast-dismiss{color:var(--muted);cursor:pointer;background:0 0;border:none;font-size:18px;line-height:1}.skeleton{border-radius:var(--radius-sm);background:var(--surface2);position:relative;overflow:hidden}.skeleton:after{content:"";background:linear-gradient(90deg, transparent, color-mix(in srgb, var(--surface3) 70%, transparent), transparent);animation:1.4s ease-in-out infinite skeleton-shimmer;position:absolute;inset:0;transform:translate(-100%)}.skeleton-hero{border-radius:var(--radius-xl);height:88px}.skeleton-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--gradient-card);gap:12px;padding:20px;display:grid}.skeleton-title{width:96px;height:14px}.skeleton-line{height:12px}.skeleton-chart{border-radius:var(--radius-sm);height:160px}.skeleton.w-40{width:40%}.skeleton.w-50{width:50%}.skeleton.w-60{width:60%}.skeleton.w-80{width:80%}@keyframes skeleton-shimmer{to{transform:translate(100%)}}@media (prefers-reduced-motion:reduce){.skeleton:after{animation:none}}.dashboard-loading{justify-content:center;align-items:center;width:100%;min-height:60vh;display:flex}.dashboard-loading-text{color:var(--muted);font-size:14px}.sync-status{color:var(--muted);align-items:center;gap:6px;font-size:11px;display:inline-flex}.sync-status-dot{background:var(--muted);border-radius:50%;width:6px;height:6px}.sync-status-loading .sync-status-dot{background:var(--warning);animation:1.2s ease-in-out infinite sync-pulse}.sync-status-synced .sync-status-dot{background:var(--accent);box-shadow:0 0 6px var(--accent-glow)}.sync-status-offline .sync-status-dot{background:var(--danger)}.sync-status-pending .sync-status-dot{background:var(--warning);animation:1.2s ease-in-out infinite sync-pulse}.sync-status-error .sync-status-dot{background:var(--danger);animation:1.2s ease-in-out infinite sync-pulse}@keyframes sync-pulse{0%,to{opacity:.45}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.sync-status-loading .sync-status-dot,.sync-status-pending .sync-status-dot,.sync-status-error .sync-status-dot{animation:none}}.sheet-overlay-high{z-index:320}.sheet-overlay-high .sheet,.sheet-overlay-high .ui-sheet-half,.sheet-overlay-high .ui-sheet-full{z-index:321}.ui-sheet-half{max-height:50dvh}.ui-sheet-full{max-height:92dvh}.confirm-copy{color:var(--muted);margin-bottom:18px;font-size:12px;line-height:1.5}.confirm-actions{grid-template-columns:1fr 1fr;gap:10px;display:grid}.form-error{color:var(--danger);margin-top:6px;font-size:11px}.fab-menu{right:20px;bottom:calc(88px + var(--safe-bottom));z-index:100;position:fixed}.fab-menu .fab{position:static}.fab-icon{transition:transform .35s cubic-bezier(.34,1.56,.64,1);display:inline-block}.fab-menu.open .fab-icon{transform:rotate(135deg)}.fab-action-sheet{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);min-width:230px;box-shadow:var(--shadow-lg);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);transform-origin:100% 100%;opacity:0;pointer-events:none;transition:transform .3s cubic-bezier(.34,1.56,.64,1),opacity .2s;position:absolute;bottom:calc(100% + 12px);right:0;overflow:hidden;transform:scale(.85)translateY(8px)}.fab-menu.open .fab-action-sheet{opacity:1;pointer-events:auto;transform:scale(1)translateY(0)}.fab-action-item{border:none;border-bottom:1px solid var(--border-subtle);width:100%;color:var(--fg);text-align:left;cursor:pointer;opacity:0;background:0 0;gap:2px;padding:14px 16px;transition:background .15s;display:grid;transform:translate(12px)}.fab-menu.open .fab-action-item{opacity:1;transition:opacity .25s,transform .3s cubic-bezier(.34,1.56,.64,1),background .15s;transition-delay:calc(var(--fab-item-index,0) * 40ms + 50ms);transform:translate(0)}.fab-action-item:last-child{border-bottom:none}.fab-action-item strong{font-size:12px}.fab-action-item span{color:var(--muted);font-size:11px}.fab-action-item:active{background:var(--surface2);transform:scale(.98)}@media (prefers-reduced-motion:reduce){.fab-icon,.fab-action-sheet,.fab-action-item{transition:opacity .15s;transform:none}}.card-head-actions{align-items:center;gap:8px;display:flex}.edit-mode-btn{border:1px solid var(--border);color:var(--muted);font:600 11px/1 var(--font-body);cursor:pointer;background:0 0;border-radius:999px;padding:6px 12px;transition:all .2s}.edit-mode-btn.active{border-color:var(--accent);background:var(--accent-dim);color:var(--accent);box-shadow:var(--shadow-glow-accent)}.table-wrapper-sticky{position:relative}.table-wrapper-sticky .data-table th:first-child,.table-wrapper-sticky .data-table td:first-child{box-shadow:6px 0 12px color-mix(in srgb, var(--shadow-color) 8%, transparent)}.chart-empty{color:var(--muted);text-align:center;place-items:center;gap:10px;padding:32px 12px;display:grid}.auth-gate{min-height:100dvh;padding:24px 16px calc(24px + var(--safe-bottom));background:radial-gradient(circle at 14% 18%, var(--accent-dim), transparent 34%), radial-gradient(circle at 86% 82%, var(--warning-dim), transparent 36%), var(--bg);place-items:center;display:grid;overflow:hidden}.auth-gate-card{border:1px solid var(--border);border-radius:var(--radius-xl);background:var(--surface-floating);width:min(100%,400px);box-shadow:var(--shadow-soft);-webkit-backdrop-filter:blur(18px);gap:0;padding:32px;display:grid}.auth-gate-brand{align-items:center;gap:14px;display:flex}.auth-gate-mark{border:1px solid color-mix(in srgb, var(--accent) 18%, var(--border));border-radius:var(--radius-md);background:var(--accent-dim);width:52px;height:52px;color:var(--accent);flex:0 0 52px;place-items:center;display:grid}.auth-gate-mark svg{stroke:currentColor;stroke-width:2.4px;stroke-linecap:round;stroke-linejoin:round;width:34px;height:34px}.auth-gate-kicker{font:650 var(--text-sm)/1 var(--font-body);letter-spacing:.08em;color:var(--accent);margin-bottom:4px;display:block}.auth-gate-card h1{font:720 var(--text-display)/1.15 var(--font-display);letter-spacing:-.03em}.auth-gate-intro{color:var(--muted);font-size:var(--text-md);text-wrap:balance;margin-top:22px;line-height:1.65}.auth-gate-form{gap:8px;margin-top:28px;display:grid}.auth-gate-label{font-size:var(--text-sm);color:var(--fg-secondary);font-weight:600}.auth-gate-input{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface2);width:100%;min-height:52px;color:var(--fg);font:inherit;padding:13px 15px;transition:border-color .16s cubic-bezier(.16,1,.3,1),background-color .16s cubic-bezier(.16,1,.3,1),box-shadow .16s cubic-bezier(.16,1,.3,1)}.auth-gate-input:focus-visible{border-color:var(--accent);outline:2px solid var(--accent);outline-offset:2px;background:var(--surface);box-shadow:0 0 0 3px var(--accent-dim)}.auth-gate-field-hint{color:var(--muted);font-size:var(--text-xs)}.auth-gate-error{color:var(--danger);font-size:var(--text-sm)}.auth-gate-submit{border-radius:var(--radius-md);background:var(--gradient-accent);min-height:48px;color:var(--on-accent);font:650 var(--text-base)/1 var(--font-body);cursor:pointer;box-shadow:var(--shadow-sm);border:none;margin-top:8px;padding:13px 16px;transition:transform .16s cubic-bezier(.16,1,.3,1),box-shadow .16s cubic-bezier(.16,1,.3,1),filter .16s cubic-bezier(.16,1,.3,1)}.auth-gate-submit:active:not(:disabled){transform:scale(.985)}.auth-gate-submit:disabled{opacity:.6;cursor:not-allowed}.auth-gate-trust{border-top:1px solid var(--border-subtle);color:var(--muted);font-size:var(--text-xs);text-align:center;margin-top:20px;padding-top:18px}@media (hover:hover){.auth-gate-submit:hover:not(:disabled){filter:brightness(1.04);box-shadow:var(--shadow-md)}}@media (max-width:420px){.auth-gate-card{padding:26px 24px}}@media (prefers-reduced-motion:reduce){.auth-gate-input,.auth-gate-submit{transition:none}}@media (min-width:768px){.app,.bottom-nav,.sheet,.import-sheet{max-width:720px}.donut-section{gap:20px}}.tab-btn:active,.range-btn:active,.person-btn:active,.btn-secondary:active,.edit-mode-btn:not(.active):active,.month-edit-btn:active,.goal-mini-btn:active,.goal-round-add:active,.family-tab-btn:not(.active):active,.family-filter-chip:active,.mode-option:active,.clear-option:active,.amount-visibility-btn:active{opacity:.8;transform:scale(.96)}@media (prefers-reduced-motion:reduce){.tab-btn:active,.range-btn:active,.person-btn:active,.btn-secondary:active,.edit-mode-btn:active,.month-edit-btn:active,.goal-mini-btn:active,.goal-round-add:active,.family-tab-btn:active,.family-filter-chip:active,.mode-option:active,.clear-option:active,.amount-visibility-btn:active,.fab:active,.nav-item:active,.btn-submit:active,.list-row:active{transform:scale(.98)}}
.planning-card{overflow:hidden}.planning-card>*{position:relative}.planning-hero{grid-template-columns:repeat(2,1fr);gap:10px;margin-top:14px;display:grid}.planning-hero>div,.planning-metric,.goal-item{border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:var(--bg);transition:border-color .2s}.planning-hero>div:hover,.planning-metric:hover{border-color:var(--border)}.planning-hero>div{padding:16px}.planning-hero span,.planning-metric span,.planning-metric small,.goal-meta,.goal-head span{color:var(--muted);font-size:11px}.planning-hero strong{font:700 20px/1.05 var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-.02em;margin-top:5px;display:block}.planning-grid{grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px;display:grid}.planning-grid-duo{grid-template-columns:repeat(2,1fr)}.planning-goal-source{margin-top:4px;line-height:1.45;display:block}.planning-metric{padding:10px}.planning-metric strong{font:700 14px/1 var(--font-mono);font-variant-numeric:tabular-nums;margin:5px 0 3px;display:block}.planning-metric.positive strong{color:var(--accent)}.planning-metric.negative strong{color:var(--danger)}.goal-list{gap:8px;margin-top:10px;display:grid}.goal-item{padding:10px}.goal-head,.goal-meta{justify-content:space-between;gap:12px;display:flex}.goal-head strong{font:700 12px/1 var(--font-mono);color:var(--accent)}.goal-progress{background:var(--border);border-radius:999px;height:6px;margin:8px 0;overflow:hidden}.goal-progress span{border-radius:inherit;background:var(--accent);height:100%;display:block}.goal-progress.warning span{background:linear-gradient(90deg, var(--warning), var(--danger))}.goal-manager{gap:12px;display:grid}.goal-manager-head{justify-content:space-between;align-items:center;display:flex}.goal-manager-head .card-title{margin-bottom:0}.goal-round-add{border:1px solid var(--border);width:32px;height:32px;color:var(--fg);font:400 20px/1 var(--font-body);cursor:pointer;background:0 0;border-radius:50%}.goal-annual-card{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);padding:14px}.goal-annual-card>span,.goal-list-section h4{color:var(--muted);font:600 12px/1.2 var(--font-body)}.goal-annual-card strong{color:var(--fg);font:600 28px/.95 var(--font-mono);font-variant-numeric:tabular-nums;margin-top:6px;display:block}.goal-annual-meta,.finance-goal-foot,.goal-actions{align-items:center;display:flex}.goal-annual-meta,.finance-goal-foot{justify-content:space-between;gap:12px}.goal-annual-meta small,.finance-goal-card p,.finance-goal-foot span,.goal-empty{color:var(--muted);font-size:12px}.goal-list-section{gap:10px;display:grid}.goal-card-list{gap:12px;display:grid}.finance-goal-card{border-radius:var(--radius);background:var(--gradient-card);box-shadow:var(--shadow-md);border:1px solid var(--border);padding:20px}.finance-goal-card.completed{border:1px solid var(--border);box-shadow:none;opacity:.82;background:0 0}.finance-goal-main{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:10px;display:flex}.finance-goal-main h3{font:700 15px/1.25 var(--font-display);margin-bottom:4px}.finance-goal-main strong{color:var(--accent);font:800 24px/1 var(--font-mono);font-variant-numeric:tabular-nums}.finance-goal-foot{margin-top:8px}.finance-goal-foot span{color:var(--fg);font-variant-numeric:tabular-nums;font-weight:700}.goal-actions{gap:8px}.goal-mini-btn{border:1px solid var(--border);background:var(--surface2);width:36px;height:36px;color:var(--muted);font:700 18px/1 var(--font-body);cursor:pointer;border-radius:8px}.goal-mini-btn.add{background:var(--warning);border-color:var(--warning);color:var(--on-accent)}.goal-check{background:color-mix(in srgb, var(--accent) 55%, transparent);width:38px;height:38px;color:var(--on-accent);font:800 20px/1 var(--font-body);border-radius:50%;place-items:center;display:grid}.goal-empty{border:1px dashed var(--border);border-radius:14px;padding:16px;line-height:1.5}.goal-wisdom-card{border-radius:var(--radius);background:linear-gradient(180deg, color-mix(in srgb, var(--media-shadow) 5%, transparent), color-mix(in srgb, var(--media-shadow) 80%, transparent)), radial-gradient(circle at 70% 20%, color-mix(in srgb, var(--accent) 30%, transparent), transparent 32%), linear-gradient(135deg, var(--media-surface), var(--media-surface));border:1px solid var(--border);align-items:flex-end;min-height:140px;padding:20px;display:flex;overflow:hidden}.goal-wisdom-card span{color:var(--warning);font:800 12px/1.2 var(--font-body)}.goal-wisdom-card p{color:var(--on-media);margin-top:6px;font-size:12px;font-style:italic;line-height:1.55}.goal-sheet{background:var(--gradient-card);border:1px solid var(--border)}.goal-sheet-top{grid-template-columns:32px 1fr 32px;align-items:center;margin-bottom:16px;display:grid}.goal-sheet-top button{width:30px;height:30px;color:var(--fg);font:300 26px/1 var(--font-body);cursor:pointer;background:0 0;border:none}.goal-sheet-top h3{text-align:center;margin:0}.goal-preview-card{border:1px solid var(--border);background:var(--surface);border-radius:12px;grid-template-columns:1fr auto;align-items:center;gap:12px;margin-bottom:20px;padding:16px;display:grid}.goal-preview-card .goal-progress{grid-column:1/-1;margin-bottom:0}.goal-preview-card strong,.goal-preview-card em{display:block}.goal-preview-card strong{font:800 14px/1.2 var(--font-display)}.goal-preview-card em{color:var(--muted);font-size:11px;font-style:normal}.goal-preview-card b{color:var(--warning);font:800 28px/1 var(--font-mono);font-variant-numeric:tabular-nums}.goal-sheet-actions{grid-template-columns:1fr 2fr;gap:12px;margin-top:20px;display:grid}.goal-sheet-actions .btn-secondary,.goal-sheet-actions .btn-submit{height:48px;margin:0}.goal-sheet-actions .btn-submit{background:var(--warning);color:var(--on-accent)}.progress-sheet-copy{color:var(--muted);margin:-4px 0 16px;font-size:12px;line-height:1.5}.goals-overview-card{overflow:hidden}.goal-metric-grid,.large-summary-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px;display:grid}.goal-metric{border:1px solid var(--border);background:var(--bg);border-radius:14px;min-width:0;padding:10px}.goal-metric span,.goal-metric small,.goal-copy{color:var(--muted);font-size:11px;display:block}.goal-metric strong{font:700 14px/1 var(--font-mono);font-variant-numeric:tabular-nums;white-space:nowrap;text-overflow:ellipsis;margin:5px 0 3px;display:block;overflow:hidden}.goal-copy{margin-top:3px;line-height:1.45}.annual-budget-strip{border:1px solid var(--border);background:var(--bg);border-radius:14px;margin:12px 0;padding:12px}.annual-budget-strip>div{color:var(--muted);justify-content:space-between;gap:12px;margin-bottom:8px;font-size:11px;display:flex}.annual-budget-strip strong{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.budget-table .budget-total-row td,.budget-table .budget-row td{color:var(--purple);border-top:1px solid var(--border);font-weight:600}.budget-table .budget-row .sub-cell{color:var(--muted)}.large-summary-grid{margin:12px 0}.large-expense-list{gap:10px;display:grid}.large-expense-item,.empty-state{border:1px solid var(--border);background:var(--bg);border-radius:14px;padding:12px}.empty-state{color:var(--muted);text-align:center;font-size:12px}.large-expense-main{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.large-expense-main h3{font:700 15px/1.25 var(--font-display);margin-top:6px}.large-expense-main p,.large-expense-numbers{color:var(--muted);font-size:11px}.large-expense-numbers{font-family:var(--font-mono);font-variant-numeric:tabular-nums;justify-content:space-between;gap:8px;display:flex}.status-pill{background:var(--accent-dim);color:var(--accent);font:700 11px/1 var(--font-body);border-radius:999px;align-items:center;padding:4px 8px;display:inline-flex}.status-pill.completed{background:color-mix(in srgb, var(--accent) 20%, transparent);color:var(--accent)}.status-pill.inProgress{background:var(--warning-dim);color:var(--warning)}.status-pill.paused{background:var(--danger-dim);color:var(--danger)}.text-btn{color:var(--accent);font:700 12px/1 var(--font-body);cursor:pointer;background:0 0;border:none}.contribution-list{border-top:1px solid var(--border-subtle);gap:0;margin-top:14px;padding-top:14px;display:grid}.contribution-item{color:var(--fg-secondary);border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;gap:12px;padding:9px 0;font-size:13px;display:flex}.contribution-item:last-child{border-bottom:none}.contribution-item strong{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:14px}.positive{color:var(--accent)}.negative{color:var(--danger)}.warning{color:var(--warning)}.donut-section{align-items:center;gap:20px;min-width:0;display:flex}.donut-chart{flex-shrink:0;width:140px;height:140px;display:block}.donut-center-label{fill:var(--muted);font:600 11px var(--font-body);text-anchor:middle}.donut-center-value{fill:var(--fg);font:700 14px var(--font-mono);text-anchor:middle}.donut-legend{flex-direction:column;flex:1;gap:10px;min-width:0;display:flex}.legend-item{align-items:center;gap:8px;display:flex}.legend-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.legend-label{color:var(--muted);flex:1;font-size:12px}.legend-value{font:600 12px/1 var(--font-mono);font-variant-numeric:tabular-nums;text-overflow:ellipsis;min-width:0;overflow:hidden}.table-wrapper{--table-sticky-offset:0px;--table-cat-width:68px;--table-sub-width:104px;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;min-width:0;max-width:100%;margin:0;padding:0;overflow-x:auto}.data-table{border-collapse:separate;border-spacing:0;font-variant-numeric:tabular-nums;width:max-content;min-width:100%;font-size:12px}.data-table th,.data-table td{text-align:right;white-space:nowrap;border-bottom:1px solid var(--border);padding:7px 6px}.data-table th:nth-child(n+3),.data-table td:nth-child(n+3){min-width:76px}.data-table tbody tr:not(.subtotal):not(.grand-total):not(.key-net):hover td{background:color-mix(in srgb, var(--accent) 5%, transparent)}.data-table th{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;background:var(--surface);font-size:11px;font-weight:600;position:sticky;top:0}.month-edit-btn{color:inherit;cursor:pointer;font:inherit;background:0 0;border:none;justify-items:end;gap:2px;display:grid}.month-edit-btn span{color:var(--accent);letter-spacing:0;font-size:11px}.table-edit-hint{color:var(--muted);margin:-4px 0 10px;font-size:11px;line-height:1.5}.inline-metric-input{width:86px;color:var(--fg);font:12px/1.2 var(--font-mono);font-variant-numeric:tabular-nums;text-align:right;background:0 0;border:1px solid #0000;border-radius:8px;outline:none;padding:5px 6px}.inline-metric-input:hover{border-color:var(--border);background:var(--surface2)}.inline-metric-input:focus{border-color:var(--accent);background:var(--bg);box-shadow:0 0 0 2px var(--accent-dim)}.data-table th:first-child,.data-table th:nth-child(2){text-align:left;background:var(--surface);position:sticky}.data-table th:first-child{left:var(--table-sticky-offset);width:var(--table-cat-width);min-width:var(--table-cat-width);z-index:5}.data-table th:nth-child(2){left:calc(var(--table-sticky-offset) + var(--table-cat-width));width:var(--table-sub-width);min-width:var(--table-sub-width);z-index:4}.data-table .cat-cell{text-align:left;color:var(--fg);vertical-align:middle;background:var(--surface2);border-right:2px solid var(--border);writing-mode:horizontal-tb;width:var(--table-cat-width);min-width:var(--table-cat-width);max-width:var(--table-cat-width);white-space:normal;left:var(--table-sticky-offset);z-index:4;padding:8px 6px 8px 11px;font-size:12px;font-weight:700;position:sticky;overflow:hidden}.data-table .cat-cell:before{content:"";background:var(--cat-accent);pointer-events:none;width:3px;position:absolute;top:0;bottom:0;left:0}.data-table .cat-cell.asset{--cat-accent:var(--accent)}.data-table .cat-cell.liability{--cat-accent:var(--danger)}.data-table .cat-cell .cat-name{line-height:1.35;display:block}.data-table .cat-cell .cat-desc{display:none}.data-table .sub-cell{text-align:left;color:var(--muted);width:var(--table-sub-width);min-width:var(--table-sub-width);max-width:var(--table-sub-width);text-overflow:ellipsis;left:calc(var(--table-sticky-offset) + var(--table-cat-width));z-index:3;background:var(--surface);box-shadow:1px 0 0 var(--border);padding-left:10px;font-weight:400;position:sticky;overflow:hidden}.data-table .formula-cell{z-index:12;overflow:visible}.data-table .subtotal td{color:var(--accent);border-bottom:2px solid var(--border);font-weight:700}.data-table .subtotal .sub-cell{color:var(--accent);font-weight:600}.data-table .subtotal.liability td,.data-table .subtotal.liability .sub-cell{color:var(--danger)}.data-table .key-net td{color:var(--info);border-top:1.5px solid var(--border);border-bottom:1.5px solid var(--border);font-size:12px;font-weight:700}.data-table .key-net .sub-cell:before{content:"★ ";font-size:11px}.formula-tooltip{cursor:help;-webkit-text-decoration:underline dotted color-mix(in srgb, var(--fg-secondary) 75%, transparent);text-decoration:underline dotted color-mix(in srgb, var(--fg-secondary) 75%, transparent);text-underline-offset:3px;align-items:center;gap:4px;display:inline-flex;position:relative}.formula-floating-tooltip{z-index:1000;background:var(--surface);border:1px solid var(--border);max-width:260px;color:var(--fg);box-shadow:var(--shadow-lg);font:500 11px/1.5 var(--font-body);pointer-events:none;border-radius:10px;padding:8px 10px;position:fixed}.split-tooltip{cursor:help;-webkit-text-decoration:underline dotted color-mix(in srgb, var(--fg-secondary) 55%, transparent);text-decoration:underline dotted color-mix(in srgb, var(--fg-secondary) 55%, transparent);text-underline-offset:3px;justify-content:flex-end;display:inline-flex;position:relative}.split-tooltip:after{content:attr(data-tooltip);z-index:20;background:var(--surface);border:1px solid var(--border);width:max-content;max-width:260px;color:var(--fg);box-shadow:var(--shadow-lg);font:500 11px/1.5 var(--font-body);white-space:normal;opacity:0;pointer-events:none;border-radius:10px;padding:8px 10px;transition:opacity .15s,transform .15s;position:absolute;bottom:calc(100% + 8px);right:0;transform:translateY(4px)}.split-tooltip:hover:after,.split-tooltip:focus-visible:after{opacity:1;transform:translateY(0)}.data-table .grand-total td{color:var(--fg);background:var(--surface2);border-bottom:none;font-size:12px;font-weight:700}.data-table .grand-total .sub-cell{background:var(--surface2)}.data-table .income-row td{color:var(--accent);border-top:1px solid var(--border);font-weight:600}.data-table .income-row.passive td{color:var(--warning)}.data-table .income-row.windfall td{color:var(--purple)}.data-table .expense-row td{color:var(--warning);border-top:1px solid var(--border);font-weight:600}.data-table .expense-row.surplus td{color:var(--fg)}.data-table .expense-row.savings td{color:var(--info)}.data-table .subtotal td:first-child,.data-table .key-net td:first-child,.data-table .grand-total td:first-child,.data-table .pair-net td:first-child{left:var(--table-sticky-offset);z-index:4;background:var(--surface);position:sticky}.data-table .grand-total td:first-child{background:var(--surface2)}.table-scroll-hint{color:var(--muted);text-align:center;opacity:.6;margin-top:8px;font-size:11px}.person-toggle{border-radius:var(--radius-md);background:var(--surface2);gap:4px;margin-bottom:12px;padding:4px;display:flex}.person-btn{min-height:44px;color:var(--fg-secondary);font:550 12px/1 var(--font-body);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:0;flex:1;padding:6px 14px;transition:color .18s,background .18s,box-shadow .18s}.person-btn.active{background:var(--surface);color:var(--accent-bright);box-shadow:var(--shadow-sm), inset 0 -2px 0 var(--accent);font-weight:700}.person-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.fab{bottom:calc(84px + var(--safe-bottom));background:var(--gradient-accent);width:50px;height:50px;color:var(--on-accent);cursor:pointer;box-shadow:var(--shadow-md), var(--shadow-glow-accent);z-index:100;border:none;border-radius:50%;place-items:center;font-size:24px;font-weight:300;line-height:1;transition:transform .2s cubic-bezier(.16,1,.3,1),box-shadow .2s;display:grid;position:fixed;right:18px}.fab:active{transform:scale(.92)}.bottom-nav{background:var(--surface-floating);-webkit-backdrop-filter:blur(24px);border-top:1px solid var(--border-subtle);width:100%;max-width:430px;padding:8px 12px calc(10px + var(--safe-bottom));z-index:90;gap:4px;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.nav-item{color:var(--muted);font:400 11px/1 var(--font-body);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;flex-direction:column;flex:1;align-items:center;gap:3px;padding:8px 0;transition:color .2s,background .2s,transform .15s;display:flex}.nav-item.active{color:var(--accent);background:var(--accent-dim)}.nav-item:active{transform:scale(.95)}.nav-item svg{width:22px;height:22px;transition:transform .2s}.nav-item.active svg{transform:scale(1.05)}.sheet-overlay,.import-overlay,.clear-overlay{background:var(--scrim);z-index:200;opacity:0;pointer-events:none;transition:opacity .3s;position:fixed;inset:0}.import-overlay,.clear-overlay{background:var(--scrim-strong);z-index:300}.sheet-overlay.open,.import-overlay.open,.clear-overlay.open{opacity:1;pointer-events:all}.sheet,.import-sheet,.clear-sheet{background:var(--surface);width:100%;max-width:430px;padding:20px;padding-bottom:calc(20px + var(--safe-bottom));border-radius:20px 20px 0 0;transition:transform .35s cubic-bezier(.32,.72,0,1);position:fixed;bottom:0;left:50%;overflow-y:auto;transform:translate(-50%)translateY(100%)}.sheet{z-index:201;max-height:80dvh}.import-sheet{z-index:301;max-height:85dvh}.clear-sheet{z-index:301;max-height:70dvh}.sheet-overlay.open .sheet,.import-overlay.open .import-sheet,.clear-overlay.open .clear-sheet{transform:translate(-50%)translateY(0)}.sheet-handle{background:var(--border);border-radius:2px;width:36px;height:4px;margin:0 auto 16px}.sheet h3,.import-sheet h3,.clear-sheet h3{font:600 17px/1.3 var(--font-display);margin-bottom:16px}.form-group{margin-bottom:14px}.form-group label{color:var(--muted);margin-bottom:4px;font-size:12px;font-weight:500;display:block}.form-group select,.form-group input,.form-group textarea{border:1px solid var(--border);background:var(--bg);width:100%;color:var(--fg);font:14px/1.4 var(--font-body);border-radius:10px;outline:none;padding:10px 12px;transition:border-color .2s}.form-group select:focus,.form-group input:focus,.form-group textarea:focus{border-color:var(--accent)}.form-group textarea{resize:vertical;min-height:76px}.form-row{grid-template-columns:1fr 1fr;gap:10px;display:grid}.sheet-section-title,.settings-subtitle{color:var(--muted);letter-spacing:.02em;margin:16px 0 10px;font-size:12px;font-weight:600}.passive-goal-form{border:1px solid var(--border);background:var(--bg);border-radius:14px;margin-top:12px;padding:12px}.passive-goal-form .settings-subtitle{margin-top:0}.btn-submit,.btn-import-confirm{background:var(--accent);width:100%;color:var(--on-accent);font:600 15px/1 var(--font-body);cursor:pointer;border:none;border-radius:12px;padding:14px;transition:opacity .2s}.btn-secondary{border:1px solid var(--border);background:var(--bg);width:100%;color:var(--fg);font:600 12px/1 var(--font-body);cursor:pointer;border-radius:12px;margin-bottom:12px;padding:11px 12px}.btn-secondary.danger{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 35%, transparent);margin-top:10px;margin-bottom:0}.btn-secondary:disabled{opacity:.45;cursor:not-allowed}.btn-submit{margin-top:8px}.btn-submit:active,.btn-import-confirm:active{opacity:.8}.btn-import-confirm:disabled{opacity:.4;cursor:not-allowed}.import-btn{border:1px solid var(--border);background:var(--surface);color:var(--muted);font:500 11px/1 var(--font-body);cursor:pointer;border-radius:8px;align-items:center;gap:4px;padding:6px 10px;transition:all .2s;display:inline-flex}.import-btn:active,.sheet-chip:active{transform:scale(.95)}.import-btn.danger{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 35%, transparent)}.import-btn svg{width:14px;height:14px}.import-dropzone{border:2px dashed var(--border);text-align:center;cursor:pointer;border-radius:14px;margin-bottom:16px;padding:28px 20px;transition:all .2s}.import-dropzone.dragover{border-color:var(--accent);background:var(--accent-dim)}.import-dropzone .icon{opacity:.5;margin-bottom:8px;font-size:32px}.import-dropzone .label{color:var(--muted);font-size:12px;line-height:1.5}.import-dropzone .label strong{color:var(--accent)}.import-dropzone input[type=file]{display:none}.import-file-info{background:var(--bg);border-radius:10px;align-items:center;gap:10px;margin-bottom:16px;padding:12px 14px;display:flex}.import-file-info .file-icon{background:color-mix(in srgb, var(--accent) 15%, transparent);border-radius:8px;flex-shrink:0;place-items:center;width:36px;height:36px;font-size:16px;display:grid}.import-file-info .file-name{white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:12px;font-weight:500;overflow:hidden}.import-file-info .file-size{color:var(--muted);font-size:11px}.sheet-chips{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.sheet-chip{border:1px solid var(--border);color:var(--muted);font:500 12px/1 var(--font-body);cursor:pointer;background:0 0;border-radius:20px;padding:7px 12px;transition:all .2s}.sheet-chip.selected{background:var(--accent-dim);color:var(--accent);border-color:var(--accent)}.import-preview{margin-bottom:16px}.import-preview-title{color:var(--muted);margin-bottom:8px;font-size:12px;font-weight:500}.import-preview-table{border-collapse:collapse;font-variant-numeric:tabular-nums;border-radius:8px;width:100%;font-size:11px;overflow:hidden}.import-preview-table th{background:var(--bg);color:var(--muted);text-align:right;letter-spacing:.03em;padding:6px 8px;font-size:11px;font-weight:600}.import-preview-table th:first-child,.import-preview-table td:first-child{text-align:left}.import-preview-table td{text-align:right;border-bottom:1px solid var(--border);color:var(--fg);padding:5px 8px}.import-preview-table td:first-child{color:var(--muted);font-weight:500}.import-preview-scroll{-webkit-overflow-scrolling:touch;overflow-x:auto}.import-mode-panel{margin-bottom:16px}.clear-options{gap:10px;margin-bottom:16px;display:grid}.clear-option{border:1px solid var(--border);background:var(--bg);cursor:pointer;border-radius:14px;align-items:flex-start;gap:10px;padding:12px;display:flex}.clear-option input{width:16px;height:16px;accent-color:var(--danger);flex-shrink:0;margin-top:2px}.clear-option span,.clear-option strong,.clear-option small{display:block}.clear-option strong{color:var(--fg);margin-bottom:4px;font-size:12px}.clear-option small{color:var(--muted);font-size:11px;line-height:1.45}.import-mode-options{gap:8px;display:grid}.mode-option{border:1px solid var(--border);background:var(--bg);color:var(--fg);text-align:left;cursor:pointer;border-radius:12px;padding:10px 12px}.mode-option.selected{border-color:var(--accent);background:var(--accent-dim)}.mode-option strong,.mode-option span{display:block}.mode-option strong{margin-bottom:4px;font-size:12px}.mode-option span{color:var(--muted);font-size:11px}.import-summary{grid-template-columns:repeat(2,1fr);gap:8px;margin-top:10px;display:grid}.import-summary span{background:var(--bg);color:var(--muted);border-radius:10px;padding:8px 10px;font-size:11px}.import-status{border-radius:10px;margin-bottom:12px;padding:10px 14px;font-size:12px;display:none}.import-status.success{background:color-mix(in srgb, var(--accent) 10%, transparent);color:var(--accent);border:1px solid color-mix(in srgb, var(--accent) 30%, transparent);display:block}.import-status.error{background:color-mix(in srgb, var(--danger) 10%, transparent);color:var(--danger);border:1px solid color-mix(in srgb, var(--danger) 30%, transparent);display:block}.import-copy{color:var(--muted);margin-bottom:16px;font-size:12px;line-height:1.5}.settings-panel{margin-bottom:8px}.settings-form-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--gradient-card);box-shadow:var(--shadow-soft);gap:12px;margin-top:10px;padding:16px;display:grid}.settings-form-head h3{font:700 15px/1.2 var(--font-display);letter-spacing:-.01em}.settings-form-head p{color:var(--muted);margin-top:4px;font-size:12px;line-height:1.45}.list-sub-inline{max-width:40%;color:var(--muted);text-align:right;white-space:nowrap;text-overflow:ellipsis;flex-shrink:0;font-size:12px;overflow:hidden}.list-check{opacity:0;flex-shrink:0;width:20px;height:20px}.list-check.on{opacity:1}.list-check.on:after{content:"";border-right:2.5px solid var(--accent);border-bottom:2.5px solid var(--accent);width:7px;height:12px;margin:2px auto 0;display:block;transform:rotate(45deg)}.danger-caption{color:var(--danger)}.settings-meta{color:var(--muted);gap:4px;margin-top:14px;font-size:11px;display:grid}.hidden-file-input{display:none}@media (min-width:768px){.app,.bottom-nav,.sheet,.import-sheet{max-width:720px}.donut-section{gap:32px}}.toast-stack{top:calc(env(safe-area-inset-top,12px) + 12px);z-index:500;pointer-events:none;gap:8px;width:min(390px,100% - 24px);display:grid;position:fixed;left:50%;transform:translate(-50%)}.toast{border:1px solid var(--border);background:var(--surface);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:var(--shadow-lg);pointer-events:auto;border-radius:12px;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;font-size:12px;display:flex}.toast-success{border-color:color-mix(in srgb, var(--accent) 35%, transparent)}.toast-error{border-color:color-mix(in srgb, var(--danger) 35%, transparent)}.toast-dismiss{color:var(--muted);cursor:pointer;background:0 0;border:none;font-size:18px;line-height:1}.sync-status{color:var(--muted);align-items:center;gap:6px;font-size:11px;display:inline-flex}.sync-status-dot{background:var(--muted);border-radius:50%;width:6px;height:6px}.sync-status-loading .sync-status-dot{background:var(--warning);animation:1.2s ease-in-out infinite sync-pulse}.sync-status-synced .sync-status-dot{background:var(--accent)}.sync-status-offline .sync-status-dot{background:var(--danger)}.sync-status-pending .sync-status-dot{background:var(--warning);animation:1.2s ease-in-out infinite sync-pulse}.sync-status-error .sync-status-dot{background:var(--danger);animation:1.2s ease-in-out infinite sync-pulse}@keyframes sync-pulse{0%,to{opacity:.45}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.sync-status-loading .sync-status-dot,.sync-status-pending .sync-status-dot,.sync-status-error .sync-status-dot{animation:none}}.sheet-overlay-high{z-index:320}.sheet-overlay-high .sheet,.sheet-overlay-high .ui-sheet-half,.sheet-overlay-high .ui-sheet-full{z-index:321}.ui-sheet-half{max-height:50dvh}.ui-sheet-full{max-height:92dvh}.confirm-copy{color:var(--muted);margin-bottom:16px;font-size:12px;line-height:1.5}.confirm-actions{grid-template-columns:1fr 1fr;gap:10px;display:grid}.form-error{color:var(--danger);margin-top:6px;font-size:11px}.fab-menu{right:20px;bottom:calc(80px + var(--safe-bottom));z-index:100;position:fixed}.fab-menu .fab{position:static}.fab-icon{transition:transform .35s cubic-bezier(.34,1.56,.64,1);display:inline-block}.fab-menu.open .fab-icon{transform:rotate(135deg)}.fab-action-sheet{border:1px solid var(--border);background:var(--surface);min-width:220px;box-shadow:var(--shadow-lg);transform-origin:100% 100%;opacity:0;pointer-events:none;border-radius:14px;transition:transform .3s cubic-bezier(.34,1.56,.64,1),opacity .2s;position:absolute;bottom:calc(100% + 10px);right:0;overflow:hidden;transform:scale(.85)translateY(8px)}.fab-menu.open .fab-action-sheet{opacity:1;pointer-events:auto;transform:scale(1)translateY(0)}.fab-action-item{border:none;border-bottom:1px solid var(--border);width:100%;color:var(--fg);text-align:left;cursor:pointer;opacity:0;background:0 0;gap:2px;padding:12px 14px;display:grid;transform:translate(12px)}.fab-menu.open .fab-action-item{opacity:1;transition:opacity .25s,transform .3s cubic-bezier(.34,1.56,.64,1),background .15s;transition-delay:calc(var(--fab-item-index,0) * 40ms + 50ms);transform:translate(0)}.fab-action-item:last-child{border-bottom:none}.fab-action-item strong{font-size:12px}.fab-action-item span{color:var(--muted);font-size:11px}.fab-action-item:active{background:var(--surface2);transform:scale(.98)}.card-head-actions{align-items:center;gap:8px;display:flex}.edit-mode-btn{border:1px solid var(--border);min-height:44px;color:var(--muted);font:600 11px/1 var(--font-body);cursor:pointer;background:0 0;border-radius:999px;padding:6px 12px}.edit-mode-btn.active{border-color:var(--accent);background:var(--accent-dim);color:var(--accent)}.table-wrapper-sticky{position:relative}.table-wrapper-sticky .data-table th:first-child,.table-wrapper-sticky .data-table td:first-child{box-shadow:6px 0 10px color-mix(in srgb, var(--shadow-color) 9%, transparent)}.chart-empty{color:var(--muted);text-align:center;place-items:center;gap:10px;padding:28px 12px;display:grid}.planning-goals{gap:10px;margin-top:12px;display:grid}.planning-goal-row{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);padding:10px}.planning-goal-head{justify-content:space-between;gap:12px;margin-bottom:6px;font-size:12px;display:flex}.planning-goal-row small{color:var(--muted);margin-top:6px;font-size:11px;display:block}.planning-hero strong.positive,.planning-metric.positive strong{color:var(--accent)}.planning-hero strong.negative,.planning-metric.negative strong{color:var(--danger)}.planning-metric.warning strong{color:var(--warning)}.annual-budget-meta,.budget-month-meta{color:var(--muted);justify-content:space-between;gap:8px;margin-top:8px;font-size:11px;display:flex}.budget-card-list{gap:10px;display:grid}.budget-month-card{border:1px solid var(--border);background:var(--bg);border-radius:14px;padding:12px}.budget-month-card.over-budget{border-color:color-mix(in srgb, var(--danger) 35%, transparent)}.budget-month-head{justify-content:space-between;gap:12px;display:flex}.budget-month-head h3{font:700 15px/1.2 var(--font-display)}.budget-month-head p{color:var(--muted);margin-top:4px;font-size:11px}.budget-month-actions{justify-content:flex-end;gap:12px;margin-top:10px;display:flex}.danger-text{color:var(--danger)}.goal-flag-icon{width:18px;height:18px;color:var(--warning)}.goal-manager-head>div{align-items:center;gap:8px;display:flex}.alignment-banner{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);text-align:left;gap:4px;width:100%;margin-top:10px;padding:10px 12px;display:grid}.alignment-banner strong{font-size:12px}.alignment-banner span,.alignment-banner small{color:var(--muted);font-size:11px}.alignment-banner.warning{border-color:color-mix(in srgb, var(--warning) 35%, var(--border));background:color-mix(in srgb, var(--warning) 8%, var(--bg))}.alignment-banner.positive{border-color:color-mix(in srgb, var(--accent) 35%, var(--border))}.budget-alert{cursor:pointer}.alignment-banner.info{border-color:color-mix(in srgb, var(--info) 30%, var(--border));background:color-mix(in srgb, var(--info) 8%, var(--bg))}.planning-params{color:var(--muted);flex-wrap:wrap;gap:6px 10px;margin-top:10px;font-size:11px;display:flex}.planning-paired-hint{color:var(--muted);margin-top:8px;font-size:11px}.planning-paired-hint.warning{color:var(--warning)}.month-delete-btn{color:var(--danger);margin:4px auto 0;font-size:11px;display:block}.reconcile-summary,.reconcile-list{gap:8px;display:grid}.reconcile-row,.reconcile-list-item{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);gap:4px;padding:10px;display:grid}.reconcile-row span,.reconcile-list-metrics span{color:var(--muted);font-size:11px}.reconcile-gap{border-radius:var(--radius-sm);border:1px solid var(--border);padding:12px}.reconcile-gap.warning{border-color:color-mix(in srgb, var(--warning) 35%, var(--border))}.reconcile-list-head{justify-content:space-between;align-items:center;display:flex}.reconcile-list-metrics{flex-wrap:wrap;gap:8px;display:flex}.reconcile-toggle{border-radius:var(--radius-sm);background:var(--surface2);width:100%;color:var(--accent);font:600 12px/1 var(--font-body);cursor:pointer;border:none;margin-top:10px;padding:8px;display:block}.close-step-actions{gap:10px;margin-top:16px;display:flex}.close-progress{color:var(--muted);font-size:var(--text-xs);font-variant-numeric:tabular-nums;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px;margin-bottom:16px;display:grid}.close-progress-track{background:var(--surface3);border-radius:999px;height:4px;overflow:hidden}.close-progress-track i{border-radius:inherit;background:var(--accent);height:100%;transition:width .2s;display:block}.close-step-actions .btn-submit,.close-step-actions .btn-secondary{flex:1}.close-copy-assets{margin:-2px 0 14px}
