: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:#f6f6f0;--surface:#fff;--surface2:#edf3ef;--surface3:#dfe9e4;--fg:#243731;--fg-secondary:#556960;--muted:#5c7066;--border:#dce7e0;--border-subtle:#eaf0eb;--accent:#08765c;--accent-bright:#065c49;--accent-dim:#dff5e9;--accent-glow:#c2ebd9;--danger:#bc413b;--danger-dim:#ffebe7;--danger-glow:oklch(52% .2 var(--hue-danger) / .18);--warning:#a84d1b;--warning-dim:#fff0d9;--warning-glow:oklch(60% .14 var(--hue-warning) / .18);--info:#315fc0;--info-dim:#e8f0ff;--purple:#7750b5;--purple-dim:#f1e9ff;--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:var(--surface);--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 2px 6px color-mix(in srgb, var(--shadow-color) 10%, transparent);--shadow-lg:0 4px 12px color-mix(in srgb, var(--shadow-color) 14%, transparent);--shadow-soft:var(--shadow-sm);--shadow-card-hover:var(--shadow-sm);--shadow-glow-accent:0 0 0 transparent;--shadow-glow-danger:0 0 0 transparent;--shadow-hero:var(--shadow-sm);--gradient-accent:var(--accent);--gradient-surface:var(--surface);--gradient-hero:var(--surface2);--gradient-card:var(--surface);--gradient-hero-banner:var(--surface2);--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:14px;--text-sm:14px;--text-base:16px;--text-control:16px;--text-md:18px;--text-lg:20px;--text-xl:24px;--text-2xl:28px;--text-display:32px;--control-radius:10px;--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:none;--radius-xs:6px;--radius-sm:10px;--radius-md:12px;--radius-lg:16px;--radius-xl:18px;--radius:var(--radius-lg);--gap:16px;--pad:12px;--safe-bottom:env(safe-area-inset-bottom,0px);--bottom-nav-height:78px;--app-max-width:430px;--text-secondary:var(--fg-secondary);--font-number:"Avenir Next", "PingFang SC", sans-serif}@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);--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:#14242a;--surface:#1e3138;--surface2:#293e46;--surface3:#354e55;--fg:#f0f7f4;--fg-secondary:#c0d2cc;--muted:#aec4bd;--border:#38545a;--border-subtle:#2c454d;--accent:#74dab9;--accent-bright:#a3efd3;--accent-dim:#20483e;--accent-glow:#295d4e;--danger:#ff9f9a;--danger-dim:#552f35;--danger-glow:oklch(65% .22 var(--hue-danger) / .25);--warning:#ffc08a;--warning-dim:#503b29;--warning-glow:oklch(78% .15 var(--hue-warning) / .25);--info:#91b8ff;--info-dim:#273d62;--purple:#c6a4ff;--purple-dim:#3e3259;--on-accent:#102f27;--tick-line:#ffffff1f;--surface-floating:var(--surface);--scrim:#0009;--scrim-strong:#000000b8;--shadow-color:#000;--shadow-glow-accent:0 0 0 transparent;--shadow-glow-danger:0 0 0 transparent;--shadow-soft:var(--shadow-sm);--shadow-card-hover:var(--shadow-sm);--shadow-hero:var(--shadow-sm);--gradient-accent:var(--accent);--gradient-surface:var(--surface);--gradient-hero:var(--surface2);--gradient-card:var(--surface);--gradient-hero-banner:var(--surface2);--hero-banner-fg:#fff}@supports (color:lab(0% 0 0)){:root[data-theme=dark]{--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);--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:20px/1.8 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(var(--bottom-nav-height) + var(--safe-bottom));flex-direction:column;margin:0 auto;display:flex;overflow:hidden}.scroll-area{scrollbar-gutter:stable;min-height:0;padding:var(--pad);padding-top:calc(16px + env(safe-area-inset-top,20px));padding-bottom:calc(var(--pad) + 62px);gap:var(--gap);flex-direction:column;flex:1;display:flex;overflow:hidden auto}.scroll-area>*{flex-shrink:0}.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-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 14px/1.2 var(--font-number);font-variant-numeric:tabular-nums;white-space:nowrap;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)}.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);font-size:var(--text-xs);letter-spacing:.02em;margin-bottom:6px}.quick-actions strong{font:700 14px/1.25 var(--font-display);letter-spacing:-.01em}.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: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:var(--text-xs);display:block}.module-header span{font:700 14px/1 var(--font-number);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 14px/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 14px/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{font-size:var(--text-xs);color:var(--muted);margin-top:2px;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)}.table-edit-hint{color:var(--muted);font-size:var(--text-xs);margin:8px 0 10px;line-height:1.45}.inline-add-btn,.edit-mode-btn{border:1px solid var(--border);min-height:44px;color:var(--muted);font:600 14px/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}.inline-add-btn{color:var(--fg)}.net-worth{font:700 36px/1.05 var(--font-number);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{font-size:var(--text-xs);gap:16px;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:var(--text-xs)}.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 14px/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}.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 14px/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:14px var(--font-number)}.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);font-size:var(--text-xs);align-items:center;gap:6px;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}.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:var(--text-xs)}.cash-flow-tooltip-hero strong{font-size:16px}.cash-flow-tooltip-change{color:var(--muted);font-size:var(--text-xs);margin-bottom:6px;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{font-size:var(--text-xs);margin-bottom:0}.cash-flow-tooltip-row strong{font-size:var(--text-xs)}.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);font-size:var(--text-xs);place-items:center;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;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);font-size:var(--text-xs);margin-bottom:3px}.chart-tooltip strong{font:700 14px/1.2 var(--font-number);font-variant-numeric:tabular-nums}.chart-tooltip small{color:var(--muted);font-size:var(--text-xs);white-space:nowrap;margin-top:4px;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:var(--text-xs);display:block}.analysis-item strong{font:700 14px/1 var(--font-number);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:var(--text-xs);display:block}.income-card-header strong{font:700 28px/1.1 var(--font-number);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:var(--text-xs);display:block}.income-stat strong{font:700 14px/1 var(--font-number);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:var(--text-xs)}.cash-snapshot-period{margin-top:2px}.cash-surplus-label{margin-top:14px}.cash-surplus-value{font:700 36px/1.05 var(--font-number);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{font-size:var(--text-xs);flex-wrap:wrap;gap:14px;margin-top: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 14px var(--font-body);text-anchor:middle}.donut-center-value{fill:var(--fg);font:700 15px var(--font-number);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{font-size:var(--text-xs);color:var(--muted);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.legend-value{font:600 14px/1 var(--font-number);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}.person-toggle{gap:8px;margin-bottom:14px;display:flex}.person-btn{border:1px solid var(--border);color:var(--muted);font:500 14px/1 var(--font-body);cursor:pointer;background:0 0;border-radius:999px;padding:7px 16px;transition:background-color .12s,color .12s,border-color .12s}.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);display:grid;position:fixed;right:18px}.fab:hover{box-shadow:var(--shadow-card-hover), var(--shadow-glow-accent)}.bottom-nav{background:var(--surface-floating);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 14px/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}.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-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 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{font-size:var(--text-xs);color:var(--muted);margin-bottom:6px;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}.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}.sheet-section-title,.settings-subtitle{color:var(--muted);font-size:var(--text-xs);letter-spacing:.03em;margin:18px 0 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}.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}.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 14px/1 var(--font-body);cursor:pointer;margin-bottom:12px;padding:12px;transition:background-color .12s,color .12s,border-color .12s}.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-import-confirm:disabled{opacity:.35;cursor:not-allowed}.import-btn{border:1px solid var(--border);background:var(--surface);color:var(--muted);font:500 14px/1 var(--font-body);border-radius:var(--radius-xs);cursor:pointer;align-items:center;gap:4px;padding:7px 12px;transition:background-color .12s,color .12s,border-color .12s;display:inline-flex}.import-btn.danger{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 30%, transparent)}.import-dropzone{border:2px dashed var(--border);border-radius:var(--radius);text-align:center;cursor:pointer;margin-bottom:18px;padding:32px 20px;transition:background-color .12s,color .12s,border-color .12s}.import-dropzone.dragover{border-color:var(--accent);background:var(--accent-dim);box-shadow:var(--shadow-glow-accent)}.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}.sheet-chips{flex-wrap:wrap;gap:8px;margin-bottom:18px;display:flex}.sheet-chip{border:1px solid var(--border);color:var(--muted);font:500 14px/1 var(--font-body);cursor:pointer;background:0 0;border-radius:999px;padding:8px 14px;transition:background-color .12s,color .12s,border-color .12s}.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-table{border-collapse:collapse;width:100%;font-size:var(--text-xs);font-variant-numeric:tabular-nums;border-radius:var(--radius-xs);overflow:hidden}.import-preview-table th{background:var(--bg);color:var(--muted);text-align:right;font-weight:600;font-size:var(--text-xs);letter-spacing:.04em;padding:7px 8px}.import-preview-table td{text-align:right;border-bottom:1px solid var(--border-subtle);color:var(--fg);padding:6px 8px}.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)}.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:background-color .12s,color .12s,border-color .12s}.mode-option.selected{border-color:var(--accent);background:var(--accent-dim);box-shadow:var(--shadow-glow-accent)}.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);font-size:var(--text-xs);padding:8px 10px}.import-status{font-size:var(--text-xs);border-radius:var(--radius-sm);margin-bottom:12px;padding:12px 14px;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{font-size:var(--text-xs);color:var(--muted);margin-bottom:18px;line-height:1.5}.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);font-size:var(--text-xs);margin-top:6px;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:background-color .12s,color .12s,border-color .12s}.settings-action:hover{border-color:var(--border);background:var(--surface2)}.settings-action strong,.settings-action span{display:block}.settings-action strong{font-size:var(--text-xs);margin-bottom:4px}.settings-action span{color:var(--muted);font-size:var(--text-xs);line-height:1.4}.settings-action.danger strong{color:var(--danger)}.settings-action:disabled{opacity:.4;cursor:not-allowed}.toast{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);box-shadow:var(--shadow-lg);font-size:var(--text-xs);pointer-events:auto;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;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}}.skeleton{border-radius:var(--radius-sm);background:var(--surface2);position:relative;overflow:hidden}.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%}.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-synced .sync-status-dot{background:var(--accent);box-shadow:0 0 6px var(--accent-glow)}@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}}.confirm-copy{color:var(--muted);font-size:var(--text-xs);margin-bottom:18px;line-height:1.5}.fab-menu{right:20px;bottom:calc(88px + var(--safe-bottom));z-index:100;position:fixed}.fab-action-sheet{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);min-width:230px;box-shadow:var(--shadow-lg);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-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)}@media (prefers-reduced-motion:reduce){.fab-icon,.fab-action-sheet,.fab-action-item{transition:opacity .15s;transform:none}}.edit-mode-btn{border:1px solid var(--border);color:var(--muted);font:600 14px/1 var(--font-body);cursor:pointer;background:0 0;border-radius:999px;padding:6px 12px;transition:background-color .12s,color .12s,border-color .12s}.edit-mode-btn.active{border-color:var(--accent);background:var(--accent-dim);color:var(--accent);box-shadow:var(--shadow-glow-accent)}.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);width:min(100%,400px);box-shadow:var(--shadow-soft);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)}.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),filter .16s cubic-bezier(.16,1,.3,1)}.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){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}.action-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.discourse-actions form,.discourse-actions label{gap:12px;display:grid}.discourse-actions input,.discourse-actions select,.action-row button,.sync-problem button,.family-empty button{border:1px solid var(--border);border-radius:var(--radius-xs);background:var(--surface);min-height:44px;color:var(--fg);padding:8px 12px}.sync-status{padding:8px var(--pad);flex-wrap:wrap}.sync-problem{color:var(--fg-secondary);flex-basis:100%}.draft-close-choice{z-index:10;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);gap:12px;padding:20px;display:grid;position:absolute;inset:auto 12px 12px}.draft-close-choice button{border-radius:var(--radius-xs);border:1px solid var(--border);background:var(--surface2);min-height:44px;color:var(--fg)}.sync-problem pre{white-space:pre-wrap;overflow-wrap:anywhere;max-height:200px;overflow:auto}.sync-problem button,.family-empty button{min-height:44px;padding:8px 14px}.family-fab-trigger{min-width:104px;min-height:48px;font-size:15px;line-height:1.3}.sync-status>button{border:1px solid var(--border);border-radius:var(--radius-sm);min-width:44px;min-height:44px;color:var(--fg-secondary);background:var(--surface);font:inherit;padding:8px 12px}
.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:var(--text-xs)}.planning-hero strong{font:700 20px/1.05 var(--font-number);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-number);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 14px/1 var(--font-number);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 14px/1.2 var(--font-body)}.goal-annual-card strong{color:var(--fg);font:600 28px/.95 var(--font-number);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:var(--text-xs)}.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-number);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 14px/1.2 var(--font-body)}.goal-wisdom-card p{color:var(--on-media);font-size:var(--text-xs);margin-top:6px;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:var(--text-xs);font-style:normal}.goal-preview-card b{color:var(--warning);font:800 28px/1 var(--font-number);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);font-size:var(--text-xs);margin:-4px 0 16px;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:var(--text-xs);display:block}.goal-metric strong{font:700 14px/1 var(--font-number);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);font-size:var(--text-xs);justify-content:space-between;gap:12px;margin-bottom:8px;display:flex}.annual-budget-strip strong{font-family:var(--font-number);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:var(--text-xs)}.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:var(--text-xs)}.large-expense-numbers{font-family:var(--font-number);font-variant-numeric:tabular-nums;justify-content:space-between;gap:8px;display:flex}.status-pill{background:var(--accent-dim);color:var(--accent);font:700 14px/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 14px/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{font-size:var(--text-xs);color:var(--fg-secondary);border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;gap:12px;padding:9px 0;display:flex}.contribution-item:last-child{border-bottom:none}.contribution-item strong{font-family:var(--font-number);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 14px var(--font-body);text-anchor:middle}.donut-center-value{fill:var(--fg);font:700 14px var(--font-number);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{font-size:var(--text-xs);color:var(--muted);flex:1}.legend-value{font:600 14px/1 var(--font-number);font-variant-numeric:tabular-nums;text-overflow:ellipsis;min-width:0;overflow:hidden}.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 14px/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}.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(var(--bottom-nav-height) + 12px + 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);display:grid;position:fixed;right:18px}.bottom-nav{background:var(--surface-floating);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 14px/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 svg{width:22px;height:22px;transition:transform .2s}.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{font-size:var(--text-xs);color:var(--muted);margin-bottom:4px;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);font-size:var(--text-xs);letter-spacing:.02em;margin:16px 0 10px;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 14px/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 14px/1 var(--font-body);cursor:pointer;border-radius:8px;align-items:center;gap:4px;padding:6px 10px;transition:background-color .12s,color .12s,border-color .12s;display:inline-flex}.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:background-color .12s,color .12s,border-color .12s}.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{font-size:var(--text-xs);color:var(--muted);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{font-size:var(--text-xs);white-space:nowrap;text-overflow:ellipsis;flex:1;font-weight:500;overflow:hidden}.import-file-info .file-size{font-size:var(--text-xs);color:var(--muted)}.sheet-chips{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.sheet-chip{border:1px solid var(--border);color:var(--muted);font:500 14px/1 var(--font-body);cursor:pointer;background:0 0;border-radius:20px;padding:7px 12px;transition:background-color .12s,color .12s,border-color .12s}.sheet-chip.selected{background:var(--accent-dim);color:var(--accent);border-color:var(--accent)}.import-preview{margin-bottom:16px}.import-preview-title{font-size:var(--text-xs);color:var(--muted);margin-bottom:8px;font-weight:500}.import-preview-table{border-collapse:collapse;width:100%;font-size:var(--text-xs);font-variant-numeric:tabular-nums;border-radius:8px;overflow:hidden}.import-preview-table th{background:var(--bg);color:var(--muted);text-align:right;font-weight:600;font-size:var(--text-xs);letter-spacing:.03em;padding:6px 8px}.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{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);font-size:var(--text-xs);margin-bottom:4px}.clear-option small{color:var(--muted);font-size:var(--text-xs);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{font-size:var(--text-xs);margin-bottom:4px}.mode-option span{color:var(--muted);font-size:var(--text-xs)}.import-summary{grid-template-columns:repeat(2,1fr);gap:8px;margin-top:10px;display:grid}.import-summary span{background:var(--bg);color:var(--muted);font-size:var(--text-xs);border-radius:10px;padding:8px 10px}.import-status{font-size:var(--text-xs);border-radius:10px;margin-bottom:12px;padding:10px 14px;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{font-size:var(--text-xs);color:var(--muted);margin-bottom:16px;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);font-size:var(--text-xs);margin-top:4px;line-height:1.45}.list-sub-inline{max-width:40%;color:var(--muted);font-size:var(--text-xs);text-align:right;white-space:nowrap;text-overflow:ellipsis;flex-shrink:0;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);font-size:var(--text-xs);gap:4px;margin-top:14px;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);box-shadow:var(--shadow-lg);font-size:var(--text-xs);pointer-events:auto;border-radius:12px;justify-content:space-between;align-items:center;gap:12px;padding:10px 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);font-size:var(--text-xs);align-items:center;gap:6px;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)}.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)}.sync-status-error .sync-status-dot{background:var(--danger)}@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);font-size:var(--text-xs);margin-bottom:16px;line-height:1.5}.confirm-actions{grid-template-columns:1fr 1fr;gap:10px;display:grid}.form-error{color:var(--danger);font-size:var(--text-xs);margin-top:6px}.fab-menu{right:20px;bottom:calc(var(--bottom-nav-height) + 12px + 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:var(--text-xs)}.fab-action-item span{color:var(--muted);font-size:var(--text-xs)}.fab-action-item:active{background:var(--surface2)}.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 14px/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)}.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{font-size:var(--text-xs);justify-content:space-between;gap:12px;margin-bottom:6px;display:flex}.planning-goal-row small{color:var(--muted);font-size:var(--text-xs);margin-top:6px;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);font-size:var(--text-xs);justify-content:space-between;gap:8px;margin-top:8px;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);font-size:var(--text-xs);margin-top:4px}.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:var(--text-xs)}.alignment-banner span,.alignment-banner small{color:var(--muted);font-size:var(--text-xs)}.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);font-size:var(--text-xs);flex-wrap:wrap;gap:6px 10px;margin-top:10px;display:flex}.planning-paired-hint{color:var(--muted);font-size:var(--text-xs);margin-top:8px}.planning-paired-hint.warning{color:var(--warning)}.month-delete-btn{color:var(--danger);font-size:var(--text-xs);margin:4px auto 0;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:var(--text-xs)}.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 14px/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%;display:block}.close-step-actions .btn-submit,.close-step-actions .btn-secondary{flex:1}.close-copy-assets{margin:-2px 0 14px}
.table-wrapper{--table-sticky-offset:0px;--table-cat-width:68px;--table-sub-width:104px;touch-action:pan-x pan-y pinch-zoom;overscroll-behavior-x:contain;isolation:isolate;min-width:0;max-width:100%;margin:0;padding:0;position:relative;overflow-x:auto}.data-table{border-collapse:separate;border-spacing:0;font-variant-numeric:tabular-nums;width:max-content;min-width:100%;font-size:16px;line-height:1.75}.data-table th,.data-table td{text-align:right;white-space:nowrap;border-bottom:1px solid var(--border);background:var(--surface);padding:10px 8px}.data-table th:nth-child(n+3),.data-table td:nth-child(n+3){min-width:76px}.data-table th{color:var(--fg-secondary);text-transform:uppercase;letter-spacing:.04em;background:var(--surface);font-size:16px;font-weight:600}.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:14px}.table-edit-hint{color:var(--fg-secondary);margin:-4px 0 10px;font-size:14px;line-height:1.5}.inline-metric-input{width:120px;color:var(--fg);font:16px/1.5 var(--font-number);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)}.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:2}.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:2}.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:1;border-left:3px solid var(--cat-accent);padding:8px 6px 8px 11px;font-size:16px;font-weight:700;position:sticky}.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(--fg-secondary);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:1;background:var(--surface);border-right:1px solid var(--border);white-space:normal;overflow-wrap:anywhere;padding-left:10px;font-weight:400;position:sticky;overflow:hidden}.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:16px;font-weight:700}.data-table .key-net .sub-cell:before{content:"★ ";font-size:16px}.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}.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}.data-table .grand-total td{color:var(--fg);background:var(--surface2);border-bottom:none;font-size:16px;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:1;background:var(--surface);position:sticky}.data-table .grand-total td:first-child{background:var(--surface2)}.table-scroll-hint{color:var(--fg-secondary);text-align:center;margin-top:8px;font-size:14px}@media (hover:hover) and (pointer:fine){.data-table tbody tr:hover td:not(.cat-cell){background:var(--surface2)}}@media (max-width:600px){.card.finance-table-card{margin-inline:calc(0px - var(--pad));max-width:none;box-shadow:none;border-inline:0;border-radius:0;padding:16px 0}.finance-table-card .card-head,.finance-table-card .person-toggle,.finance-table-card .table-edit-hint,.finance-table-card .table-scroll-hint,.finance-table-card .empty-state{margin-inline:max(12px, env(safe-area-inset-left,0px)) max(12px, env(safe-area-inset-right,0px))}.finance-table-card .card-head{align-items:flex-start}.finance-table-card .card-head-actions{min-width:0}.finance-table-card .table-wrapper{--table-cat-width:60px;--table-sub-width:96px;margin-inline:max(4px, env(safe-area-inset-left,0px)) max(4px, env(safe-area-inset-right,0px))}.finance-table-card .data-table th,.finance-table-card .data-table td{padding-inline:4px}.finance-table-card .data-table .sub-cell{padding-left:8px}.finance-table-card .data-table .cat-cell{padding-left:6px}.data-table th:first-child,.data-table .cat-cell,.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{position:static}.data-table th:nth-child(2),.data-table .sub-cell{left:0}}.finance-table-card .card-head,.finance-table-card .card-head-actions,.finance-table-card .person-toggle{flex-wrap:wrap}.finance-table-card .card-title{font-size:20px}.finance-table-card .inline-add-btn,.finance-table-card .edit-mode-btn,.finance-table-card .person-btn,.finance-table-card .month-delete-btn{min-height:44px;font-size:16px}.ledger-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 12px;margin:10px 0;display:flex}.ledger-toolbar label{color:var(--fg-secondary);flex-wrap:wrap;align-items:center;gap:6px;font-size:14px;display:flex}.ledger-toolbar select{border:1px solid var(--border);background:var(--surface);max-width:190px;min-height:44px;color:var(--fg);border-radius:8px;padding:6px;font-size:16px}.ledger-history-button,.ledger-detail-button{min-height:44px;color:var(--accent);background:0 0;border:0;padding:6px 0;font-size:16px}.ledger-wrapper{border:1px solid var(--border);background:var(--surface);border-radius:12px}.data-table.ledger-table{table-layout:auto;width:100%;min-width:100%;font:16px/1.5 var(--font-number)}.data-table.ledger-table th,.data-table.ledger-table td{border:0;border-bottom:1px solid var(--border);background:var(--surface);white-space:nowrap;text-align:right;min-width:0;padding:11px 6px}.data-table.ledger-table th{font-family:var(--font-body);letter-spacing:0;text-transform:none;font-weight:500}.data-table.ledger-table th:first-child{z-index:1;text-align:left;width:32%;min-width:94px;position:sticky;left:0}.data-table.ledger-table th:nth-child(2){text-align:right;width:auto;min-width:0;position:static}.data-table.ledger-table thead th{background:var(--surface2);color:var(--fg-secondary)}.data-table.ledger-table thead th:first-child{z-index:2}.data-table.ledger-table .ledger-label{color:var(--fg);white-space:normal;overflow-wrap:anywhere}.ledger-table .ledger-label button{min-height:44px;font:600 16px/1.5 var(--font-body);color:inherit;text-align:left;background:0 0;border:0;align-items:center;gap:3px;padding:0;display:flex}.ledger-table .ledger-label button:disabled{opacity:1;cursor:default}.ledger-label button svg{flex-shrink:0;width:14px;height:14px}.data-table.ledger-table .ledger-group :is(td,th){padding-block:3px;font-weight:600}.data-table.ledger-table .ledger-child :is(td,th){background:var(--bg);color:var(--fg-secondary)}.data-table.ledger-table .ledger-child th{padding-left:14px}.data-table.ledger-table .ledger-subtotal :is(td,th){color:var(--accent);font-weight:600}.data-table.ledger-table .ledger-subtotal.liability :is(td,th){color:var(--danger)}.data-table.ledger-table .ledger-key :is(td,th){color:var(--accent);font-weight:650}.data-table.ledger-table .ledger-total :is(td,th){background:var(--accent-dim);color:var(--accent);border-bottom:0;font-weight:650}.data-table.ledger-table.is-history{width:max-content}.data-table.ledger-table.is-history th:first-child{width:120px;max-width:150px}.data-table.ledger-table.is-history :is(td,th):not(:first-child){min-width:110px}.ledger-table .inline-metric-input{background:var(--surface);border-color:var(--border);width:102px;font:16px/1.5 var(--font-number);padding:5px 2px}.ledger-table .month-edit-btn{justify-content:end;min-width:44px;min-height:44px;margin-left:auto}.ledger-footer{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-top:8px;display:flex}.ledger-footer>span{color:var(--fg-secondary);font-size:14px}@media (max-width:600px){.ledger-toolbar,.ledger-footer{margin-inline:12px}.data-table.ledger-table :is(th,td){padding-inline:4px}.data-table.ledger-table th:first-child{min-width:90px}}.data-table.ledger-table .sub-cell{z-index:1;text-align:left;width:32%;min-width:90px;max-width:160px;color:var(--fg);background:var(--surface);font-weight:400;position:sticky;left:0}.data-table.ledger-table .ledger-section td{text-align:left;font:600 14px/1.5 var(--font-body);color:var(--fg-secondary);background:var(--surface2);padding:6px 8px}.data-table.ledger-table .expense-row.surplus td{color:var(--accent);background:var(--accent-dim);font-weight:650}.data-table.cash-ledger-table .income-row td,.data-table.cash-ledger-table .expense-row td{color:var(--fg);font-weight:400}.data-table.cash-ledger-table .expense-row.surplus td{color:var(--accent);font-weight:650}.data-table.cash-ledger-table .sub-cell[colspan]{white-space:normal;width:auto;max-width:none;font:14px/1.6 var(--font-body)}
