:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--hue-neutral:270;--hue-accent:150;--hue-danger:25;--hue-warning:65;--hue-info:250;--hue-purple:300;--bg:oklch(98.5% .002 var(--hue-neutral));--surface:#fff;--surface2:oklch(97% .003 var(--hue-neutral));--surface3:oklch(94% .004 var(--hue-neutral));--fg:oklch(20% .012 var(--hue-neutral));--fg-secondary:oklch(45% .012 var(--hue-neutral));--muted:oklch(58% .01 var(--hue-neutral));--border:oklch(90% .005 var(--hue-neutral));--border-subtle:oklch(94% .003 var(--hue-neutral));--accent:oklch(52% .145 var(--hue-accent));--accent-bright:oklch(46% .15 var(--hue-accent));--accent-dim:oklch(52% .145 var(--hue-accent) / .1);--accent-glow:oklch(52% .145 var(--hue-accent) / .2);--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;--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(25% .01 var(--hue-neutral));--shadow-sm:0 1px 2px color-mix(in srgb, var(--shadow-color) 6%, transparent), 0 1px 3px color-mix(in srgb, var(--shadow-color) 5%, transparent);--shadow-md:0 4px 14px color-mix(in srgb, var(--shadow-color) 10%, transparent), 0 2px 4px color-mix(in srgb, var(--shadow-color) 5%, transparent);--shadow-lg:0 10px 30px color-mix(in srgb, var(--shadow-color) 12%, transparent), 0 4px 8px color-mix(in srgb, var(--shadow-color) 6%, transparent);--shadow-soft:0 8px 28px color-mix(in srgb, var(--shadow-color) 7%, transparent), 0 2px 6px color-mix(in srgb, var(--shadow-color) 4%, 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 12px 32px oklch(40% .14 var(--hue-accent) / .28);--gradient-accent:linear-gradient(135deg, oklch(52% .145 var(--hue-accent)), oklch(46% .15 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.5% .002 var(--hue-neutral)));--gradient-hero-banner:linear-gradient(135deg, oklch(46% .15 var(--hue-accent)), oklch(40% .14 var(--hue-accent)));--hero-banner-fg:#fff;--font-display:-apple-system, BlinkMacSystemFont, "SF Pro Display", system-ui, sans-serif;--font-body:-apple-system, BlinkMacSystemFont, "SF Pro Text", system-ui, sans-serif;--font-mono:"SF Mono", ui-monospace, "Menlo", monospace;--text-xs:11px;--text-sm:12px;--text-base:14px;--text-md:15px;--text-lg:17px;--text-xl:20px;--text-2xl:24px;--text-display:28px;--radius-xs:8px;--radius-sm:10px;--radius-md:14px;--radius-lg:18px;--radius-xl:24px;--radius:var(--radius-lg);--gap:12px;--pad:18px;--safe-bottom:env(safe-area-inset-bottom,0px);--app-max-width:430px;--text-secondary:var(--fg-secondary)}@supports (color:lab(0% 0 0)){:root{--surface:lab(100% 0 0);--on-accent:lab(100% 0 0);--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(14% .008 var(--hue-neutral));--surface:oklch(22% .01 var(--hue-neutral));--surface2:oklch(28% .012 var(--hue-neutral));--surface3:oklch(32% .014 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% .19 var(--hue-accent));--accent-bright:oklch(78% .2 var(--hue-accent));--accent-dim:oklch(72% .19 var(--hue-accent) / .12);--accent-glow:oklch(72% .19 var(--hue-accent) / .28);--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));--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(135deg, oklch(50% .16 var(--hue-accent)), oklch(42% .15 var(--hue-accent)));--hero-banner-fg:#fff}@supports (color:lab(0% 0 0)){:root[data-theme=dark]{--fg:lab(96.52% -.0000298023 .0000119209);--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}
.app{max-width:430px;min-height:100dvh;padding-bottom:calc(72px + var(--safe-bottom));flex-direction:column;margin:0 auto;display:flex}.scroll-area{-webkit-overflow-scrolling:touch;padding:var(--pad);padding-top:calc(16px + env(safe-area-inset-top,20px));gap:var(--gap);flex-direction:column;flex:1;display:flex;overflow-y: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:"";pointer-events:none;background:radial-gradient(circle,#ffffff24,#0000 65%);background:radial-gradient(circle,lab(100% 0 0/.14),#0000 65%);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{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);background:#ffffff2e;background:lab(100% 0 0/.18);border:1px solid #ffffff40;border:1px solid lab(100% 0 0/.25);border-radius:999px;flex-shrink:0;padding:6px 12px}.app-hero span,.app-hero p,.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:#ffffffd9;background:lab(100% 0 0/.85)}.app-hero .sync-status-synced .sync-status-dot{background:#fffffff2;background:lab(100% 0 0/.95);box-shadow:0 0 6px #ffffff80;box-shadow:0 0 6px lab(100% 0 0/.5)}.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:#ffffffd9;background:lab(100% 0 0/.85)}.module-screen{gap:var(--gap);min-width:0;display:none}.module-screen.active{animation:.28s cubic-bezier(.16,1,.3,1) module-enter;display:grid}@media (prefers-reduced-motion:reduce){.module-screen.active{animation:none}}.module-screen.tab-enter-right.active{animation:.3s cubic-bezier(.16,1,.3,1) tab-enter-right}.module-screen.tab-enter-left.active{animation:.3s cubic-bezier(.16,1,.3,1) tab-enter-left}@keyframes tab-enter-right{0%{opacity:0;transform:translate(40px)scale(.98)}to{opacity:1;transform:translate(0)scale(1)}}@keyframes tab-enter-left{0%{opacity:0;transform:translate(-40px)scale(.98)}to{opacity:1;transform:translate(0)scale(1)}}@keyframes module-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.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:#ffffffbf;color:lab(100% 0 0/.75)}.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:#ffffffb3;color:lab(100% 0 0/.7)}.hero-card .change-row .change-item,.hero-card .cash-balance-row .change-item{color:#ffffffeb;color:lab(100% 0 0/.92)}.hero-card .change-item.positive .arrow,.hero-card .change-item.negative .arrow{color:var(--hero-banner-fg)}.hero-card .amount-visibility-btn{color:#ffffffe6;color:lab(100% 0 0/.9);border-color:#ffffff4d;border-color:lab(100% 0 0/.3)}.hero-card .amount-visibility-btn:hover{color:var(--hero-banner-fg);background:#ffffff26;background:lab(100% 0 0/.15);border-color:#ffffff80;border-color:lab(100% 0 0/.5)}.hero-card .analysis-grid,.hero-card .cash-analysis-grid{background:#ffffff1f;background:lab(100% 0 0/.12);border-color:#ffffff29;border-color:lab(100% 0 0/.16)}.hero-card .analysis-item span,.hero-card .analysis-item small{color:#ffffffb3;color:lab(100% 0 0/.7)}.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:#ffffff24;background:lab(100% 0 0/.14);border-color:#ffffff2e;border-color:lab(100% 0 0/.18)}.hero-card .contribution-list{border-color:#ffffff29;border-color:lab(100% 0 0/.16)}.hero-card .contribution-item span{color:#ffffffc7;color:lab(100% 0 0/.78)}.hero-card .contribution-item strong.positive,.hero-card .contribution-item strong.negative{color:var(--hero-banner-fg)}.hero-card .alignment-banner{color:#ffffffd9;color:lab(100% 0 0/.85);background:#ffffff29;background:lab(100% 0 0/.16);border-color:#ffffff38;border-color:lab(100% 0 0/.22)}.hero-card .alignment-banner strong,.hero-card .alignment-banner span{color:var(--hero-banner-fg)}.hero-card .alignment-banner.warning{background:#fff3;background:lab(100% 0 0/.2)}.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:oklch(20% .01 var(--hue-neutral))}.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);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(--bg);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);z-index:3;gap:2px;margin-bottom:14px;padding:3px;display:flex;position:relative}.tab-btn{color:var(--muted);font:500 11px/1 var(--font-body);border-radius:var(--radius-xs);cursor:pointer;background:0 0;border:none;flex:1;padding:8px 4px;transition:color .2s,background .2s,box-shadow .2s}.tab-btn.active{background:var(--surface2);color:var(--fg);box-shadow:var(--shadow-sm)}.range-row{z-index:3;gap:6px;margin-bottom:14px;display:flex;position:relative}.range-btn{border:1px solid var(--border);color:var(--muted);font:500 11px/1 var(--font-body);cursor:pointer;background:0 0;border-radius:999px;padding:6px 12px;transition:all .2s}.range-btn.active{background:var(--surface2);color:var(--fg);border-color:var(--border);box-shadow:var(--shadow-sm)}.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 #00c47166;border:1px solid lab(69.9573% -61.3571 31.7534/.4);border-radius:3px;width:10px;height:10px}.legend-item.expense:before{background:var(--danger-dim);border:1px solid #f9414466;border:1px solid lab(57.1752% 69.5963 43.0458/.4);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:#6f717866;stroke:lab(47.7439% .0912845 -3.7746/.4);stroke-width:1px;pointer-events:none}.cash-flow-bar-group{pointer-events:none;transition:opacity .2s}.cash-flow-income{fill:var(--accent-dim);stroke:#00c4714d;stroke:lab(69.9573% -61.3571 31.7534/.3);stroke-width:1px}.cash-flow-expense{fill:#f94144a6;fill:lab(57.1752% 69.5963 43.0458/.65);stroke:#f9414473;stroke:lab(57.1752% 69.5963 43.0458/.45);stroke-width:1px}.cash-flow-surplus-cap{fill:var(--accent);stroke:#00c47180;stroke:lab(69.9573% -61.3571 31.7534/.5);stroke-width:1px}.cash-flow-deficit-cap{fill:var(--danger);stroke:#f9414480;stroke:lab(57.1752% 69.5963 43.0458/.5);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 #00c47133);filter:drop-shadow(0 0 8px lab(69.9573% -61.3571 31.7534/.2))}.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;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:#00b4bc;color:lab(66.7266% -49.7646 -20.3395);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;text-underline-offset:3px;align-items:center;gap:4px;-webkit-text-decoration:underline dotted #6f717899;text-decoration:underline dotted #6f717899;-webkit-text-decoration:underline dotted lab(47.7439% .0912845 -3.7746/.6);text-decoration:underline dotted lab(47.7439% .0912845 -3.7746/.6);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;text-underline-offset:3px;justify-content:flex-end;-webkit-text-decoration:underline dotted #6f717880;text-decoration:underline dotted #6f717880;-webkit-text-decoration:underline dotted lab(47.7439% .0912845 -3.7746/.5);text-decoration:underline dotted lab(47.7439% .0912845 -3.7746/.5);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:#00c471;color:lab(69.9573% -61.3571 31.7534);border-top:1px solid var(--border-subtle);font-weight:600}.data-table .income-row.passive td{color:#dea052;color:lab(70.814% 18.3009 49.1648)}.data-table .income-row.windfall td{color:#ae84f2;color:lab(62.9231% 33.3667 -49.8432)}.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:#00b4bc;color:lab(66.7266% -49.7646 -20.3395)}.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 18px}.sheet h3,.import-sheet h3,.clear-sheet h3{font:700 18px/1.3 var(--font-display);letter-spacing:-.02em;margin-bottom:18px}.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%;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%;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:#f941444d;border-color:lab(57.1752% 69.5963 43.0458/.3);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:#f941444d;border-color:lab(57.1752% 69.5963 43.0458/.3)}.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:#4d935126;background:lab(55.0689% -33.6318 27.5919/.15);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{color:var(--accent);background:#00c47114;background:lab(69.9573% -61.3571 31.7534/.08);border:1px solid #00c47140;border:1px solid lab(69.9573% -61.3571 31.7534/.25);display:block}.import-status.error{color:var(--danger);background:#f9414414;background:lab(57.1752% 69.5963 43.0458/.08);border:1px solid #f9414440;border:1px solid lab(57.1752% 69.5963 43.0458/.25);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{background:var(--danger-dim);border-color:#f9414447;border-color:lab(57.1752% 69.5963 43.0458/.28)}.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:var(--gradient-hero);place-items:center;display:grid}.auth-gate-card{gap:14px;width:min(100%,360px);padding:24px;display:grid}.auth-gate-kicker{font:700 11px/1 var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}.auth-gate-card h1{font:700 24px/1.15 var(--font-display);letter-spacing:-.03em}.auth-gate-card p{color:var(--muted);line-height:1.45}.auth-gate-form{gap:10px;margin-top:4px;display:grid}.auth-gate-label{color:var(--fg-secondary);font-size:12px}.auth-gate-input{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);width:100%;color:var(--fg);font:inherit;padding:12px 14px}.auth-gate-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim);outline:none}.auth-gate-error{color:var(--danger);margin:0;font-size:12px}.auth-gate-submit{border-radius:var(--radius-sm);background:var(--gradient-accent);color:var(--fg);font:600 14px/1 var(--font-body);cursor:pointer;border:none;margin-top:4px;padding:12px 16px}.auth-gate-submit:disabled{opacity:.6;cursor:not-allowed}@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)}}
