:root,[data-theme=light]{--bg:#f6f4ef;--surface:#fff;--surface-2:#f0ede6;--mint:#16a34a;--cyan:#0891b2;--amber:#ca8a04;--coral:#db2777;--coin:#eab308;--text:#1a2433;--muted:#5c6b7f;--border:#d5dbe6;--border-strong:#b8c2d1;--pixel-shadow:#e4e0d8;--grid-line:#94a3b82e;--on-accent:#fff;--income:var(--mint);--expense:var(--coral);--invest:var(--cyan);--warn:var(--amber);--font-ui:"Pixelify Sans", "Press Start 2P", ui-sans-serif, system-ui, sans-serif;--font-display:"Pixelify Sans", "Press Start 2P", ui-sans-serif, system-ui, sans-serif;--font-arcade:"Press Start 2P", ui-monospace, monospace;--font-num:"Space Grotesk", ui-sans-serif, system-ui, sans-serif;--gap:16px;--pad:24px;--content-max:64rem}[data-theme=dark]{--bg:#0b1220;--surface:#152033;--surface-2:#101827;--mint:#22c55e;--cyan:#22d3ee;--amber:#facc15;--coral:#ec4899;--coin:#facc15;--text:#f1f5f9;--muted:#94a3b8;--border:#243247;--border-strong:#3d516e;--pixel-shadow:#050a12;--grid-line:#3b82f624;--on-accent:#0b1220}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font-ui);color:var(--text);background-color:var(--bg);background-image:linear-gradient(var(--grid-line) 1px, transparent 1px), linear-gradient(90deg, var(--grid-line) 1px, transparent 1px);-webkit-font-smoothing:antialiased;background-size:28px 28px;margin:0;font-size:13px;line-height:1.4}button,a{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:none;padding:0}h1,h2,h3{margin:0;font-weight:600}h1{font-family:var(--font-display);letter-spacing:.02em;color:var(--text);font-size:1.45rem;font-weight:600;line-height:1.2}h2{font-family:var(--font-display);letter-spacing:.02em;text-transform:none;color:var(--text);font-size:1.05rem;font-weight:600}p{margin:0}ul{margin:0;padding:0;list-style:none}.pixel-icon{fill:currentColor;width:1rem;height:1rem;image-rendering:pixelated;flex-shrink:0}.pixel-icon--md{width:1.1rem;height:1.1rem}.pixel-icon--sm{width:.75rem;height:.75rem}.app-shell{flex-direction:column;min-height:100%;display:flex}.topbar{background:var(--surface);border-bottom:2px solid var(--border);z-index:20;position:sticky;top:0}.topbar__inner{max-width:var(--content-max);flex-wrap:wrap;align-items:center;gap:16px 24px;margin:0 auto;padding:12px 24px;display:flex}.topbar__brand{align-items:center;gap:12px;display:flex}.topbar__coin{background:var(--coin);width:2rem;height:2rem;color:var(--text);place-items:center;display:grid}.topbar__coin .pixel-icon{transform-origin:50%;animation:1.4s linear infinite pixel-coin-flip}.topbar__name{font-family:var(--font-arcade);color:var(--text);font-size:11px;line-height:1}.topbar__name-accent{color:var(--mint)}.topbar__nav{flex:1;gap:4px;display:flex}.topbar__link{color:var(--muted);border:2px solid #0000;padding:8px 12px;font-size:.85rem;font-weight:500}.topbar__link:hover{color:var(--text);border-color:var(--border)}.topbar__link--active{color:var(--text);border-color:var(--border);background:var(--surface-2);font-weight:600}.topbar__end{flex-wrap:wrap;align-items:center;gap:12px;margin-left:auto;display:flex}.topbar__updated{color:var(--muted);font-size:.85rem}.topbar__theme{border:2px solid var(--border);gap:0;display:flex}.topbar__theme-btn{color:var(--muted);font-family:var(--font-arcade);letter-spacing:.04em;text-transform:uppercase;background:var(--surface);padding:6px 10px;font-size:8px}.topbar__theme-btn:hover{color:var(--text)}.topbar__theme-btn--active{color:var(--on-accent);background:var(--mint)}.main{width:100%;min-width:0;max-width:var(--content-max);padding:var(--pad) 24px;gap:var(--gap);flex-direction:column;margin:0 auto;display:flex}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;display:flex}.page-header__sub{color:var(--muted);font-size:.9rem}.panel--hero{border-color:var(--mint);box-shadow:0 0 0 1px color-mix(in srgb, var(--mint) 40%, transparent), 4px 4px 0 0 var(--pixel-shadow)}.hero{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:20px 28px;display:grid}.hero__player{font-family:var(--font-arcade);letter-spacing:.08em;text-transform:uppercase;color:var(--mint);font-size:8px;line-height:1.6}.hero__title{font-family:var(--font-display);letter-spacing:.02em;color:var(--text);margin-top:6px;font-size:clamp(1.35rem,3vw,1.75rem);font-weight:600;line-height:1.2}.hero__value{font-family:var(--font-num);letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--coin);margin-top:10px;font-size:clamp(1.85rem,4vw,2.6rem);font-weight:700;line-height:1.1}.hero__value--page{font-family:var(--font-display);letter-spacing:.02em;color:var(--text);font-size:clamp(1.25rem,3vw,1.65rem);line-height:1.2}.hero__actions{flex-wrap:wrap;gap:10px;margin-top:16px;display:flex}.hero__stage{flex-direction:column;align-items:flex-end;gap:10px;max-width:220px;display:flex}.hero__bubble{background:var(--surface-2);border:2px solid var(--border-strong);color:var(--text);box-shadow:3px 3px 0 0 var(--pixel-shadow);padding:10px 12px;font-size:.78rem;line-height:1.35;position:relative}.hero__bubble:after{content:"";background:var(--surface-2);border-right:2px solid var(--border-strong);border-bottom:2px solid var(--border-strong);width:10px;height:10px;position:absolute;bottom:-8px;right:28px;transform:rotate(45deg)}.hero__mascots{align-items:flex-end;gap:8px;display:flex}.hero__change{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px;font-size:.9rem;display:flex}.hero__badge{font-family:var(--font-num);font-variant-numeric:tabular-nums;letter-spacing:-.01em;align-items:center;gap:6px;padding:2px 8px;font-weight:600;display:inline-flex}.hero__badge--up{background:color-mix(in srgb, var(--mint) 14%, transparent);color:var(--mint)}.hero__badge--down{background:color-mix(in srgb, var(--coral) 14%, transparent);color:var(--coral)}.hero__side{border-top:2px solid var(--border);flex-wrap:wrap;gap:24px;padding-top:16px;display:flex}@media (width>=640px){.hero__side{border-top:none;border-left:2px solid var(--border);padding-top:0;padding-left:32px}}.hero__side dt{color:var(--muted);font-size:.9rem}.hero__side dd{font-family:var(--font-num);font-variant-numeric:tabular-nums;letter-spacing:-.01em;margin:4px 0 0;font-size:1.15rem;font-weight:600}.hero__side dd.income{color:var(--mint)}.hero__side dd.expense{color:var(--coral)}.hero__side dd.invest{color:var(--cyan)}@media (width<=640px){.hero{grid-template-columns:1fr}.hero__stage{align-items:flex-start;max-width:none}}.panel-label{font-family:var(--font-arcade);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:9px;line-height:1.6}.panel{background:var(--surface);border:2px solid var(--border);box-shadow:4px 4px 0 0 var(--pixel-shadow);flex-direction:column;gap:12px;min-width:0;padding:16px;animation:.28s steps(4,end) both pop-in;display:flex;overflow:hidden}@keyframes pop-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.panel{animation:none}}.panel__body{flex-direction:column;flex:1;gap:14px;min-width:0;min-height:4rem;display:flex;position:relative}.panel__busy{z-index:5;background:color-mix(in srgb, var(--surface) 72%, transparent);letter-spacing:.04em;text-transform:uppercase;color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:.5rem;font-size:.75rem;display:flex;position:absolute;inset:0}.panel__head{justify-content:space-between;align-items:center;gap:8px;display:flex}.kpi-grid{gap:var(--gap);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.kpi-grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}.cashflow{flex-direction:column;flex:1;gap:10px;min-height:0;display:flex}.cashflow__legend{font-family:var(--font-arcade);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px 12px;font-size:7px;display:flex}.cashflow__swatch{width:10px;height:10px;box-shadow:1px 1px 0 0 var(--pixel-shadow)}.cashflow__swatch--in{background:var(--mint)}.cashflow__swatch--out{background:var(--coral)}.cashflow__cols{align-items:flex-end;gap:10px;margin-top:auto;display:flex}.cashflow__col{flex-direction:column;flex:1;align-items:center;gap:8px;min-width:0;display:flex;position:relative}.cashflow__hit{width:100%;color:inherit;cursor:pointer;background:0 0;border:none;flex-direction:column;align-items:center;gap:8px;padding:0;display:flex}.cashflow__col--active .cashflow__bar{filter:brightness(1.08)}.cashflow__col--active .cashflow__label{color:var(--text)}.cashflow__tip{z-index:6;background:var(--surface);border:2px solid var(--border-strong);width:max-content;max-width:11rem;box-shadow:3px 3px 0 0 var(--pixel-shadow);pointer-events:none;flex-direction:column;gap:4px;padding:8px 10px;display:flex;position:absolute;top:0;left:50%;transform:translate(-50%)}.cashflow__col:first-child .cashflow__tip{left:0;transform:none}.cashflow__col:last-child .cashflow__tip{left:auto;right:0;transform:none}.cashflow__tip-month{font-family:var(--font-arcade);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:7px}.cashflow__tip-row{color:var(--muted);justify-content:space-between;gap:10px;font-size:.72rem;display:flex}.cashflow__tip-row strong{font-family:var(--font-num);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-weight:600}.cashflow__tip-row--in strong{color:var(--mint)}.cashflow__tip-row--out strong{color:var(--coral)}.cashflow__bars{justify-content:center;align-items:flex-end;gap:4px;width:100%;height:8.5rem;display:flex}.cashflow__bar{border:1px solid color-mix(in srgb, var(--text) 12%, transparent);max-width:18px;min-height:4px;box-shadow:2px 2px 0 0 var(--pixel-shadow);flex:1}.cashflow__bar--in{background:var(--mint)}.cashflow__bar--out{background:var(--coral)}.cashflow__label{font-family:var(--font-arcade);letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-size:7px}.kpi{background:var(--surface);border:2px solid var(--border);box-shadow:4px 4px 0 0 var(--pixel-shadow);flex-direction:column;gap:8px;padding:16px;display:flex;position:relative}.kpi__icon{border:2px solid var(--border);background:var(--surface-2);width:1.75rem;height:1.75rem;color:var(--muted);box-shadow:2px 2px 0 0 var(--pixel-shadow);place-items:center;display:grid;position:absolute;top:14px;right:14px}.kpi__icon--mint{color:var(--mint);border-color:color-mix(in srgb, var(--mint) 45%, var(--border))}.kpi__icon--coral{color:var(--coral);border-color:color-mix(in srgb, var(--coral) 45%, var(--border))}.kpi__icon--cyan{color:var(--cyan);border-color:color-mix(in srgb, var(--cyan) 45%, var(--border))}.kpi__icon--amber{color:var(--amber);border-color:color-mix(in srgb, var(--amber) 45%, var(--border))}.kpi__label{color:var(--muted);font-family:var(--font-arcade);letter-spacing:.06em;text-transform:uppercase;padding-right:2.25rem;font-size:8px;line-height:1.5}.kpi__value{font-family:var(--font-num);letter-spacing:-.01em;font-variant-numeric:tabular-nums;font-size:1.35rem;font-weight:600;line-height:1.15}.kpi__value--mint{color:var(--mint)}.kpi__value--coral{color:var(--coral)}.kpi__value--cyan{color:var(--cyan)}.kpi__value--amber{color:var(--amber)}.kpi__hint{color:var(--muted);font-size:.72rem}.kpi__forecast{border:1px solid var(--coral);background:color-mix(in srgb, var(--coral) 18%, var(--surface));color:var(--coral);font-size:.58rem;font-family:var(--font-ui);letter-spacing:.08em;text-transform:uppercase;pointer-events:none;border-radius:3px;padding:2px 6px;line-height:1.2;position:absolute;bottom:10px;left:10px}.kpi--forecast{padding-bottom:28px}.forecast-chip{border:1px solid var(--coral);background:color-mix(in srgb, var(--coral) 18%, var(--surface));color:var(--coral);font-size:.65rem;font-family:var(--font-ui);letter-spacing:.08em;text-transform:uppercase;vertical-align:middle;border-radius:3px;margin-left:8px;padding:2px 8px;line-height:1.2;display:inline-block}.dash-grid{gap:var(--gap);grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);display:grid}.row-list{flex-direction:column;gap:0;display:flex}.row-list--scroll{scrollbar-gutter:stable;min-width:0;max-height:28rem;padding-right:12px;overflow:hidden auto}.row-list--scroll.day-feed{max-height:36rem}.day-feed__day{border-bottom:1px solid var(--border);margin-bottom:4px;padding-bottom:4px;list-style:none}.day-feed__day:last-child{border-bottom:none;margin-bottom:0}.day-feed__day--cursor{background:color-mix(in srgb, var(--mint) 6%, transparent);box-shadow:inset 3px 0 0 0 var(--mint);padding-left:10px}.day-feed__head{text-align:left;width:100%;color:inherit;cursor:pointer;background:0 0;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:6px 12px;padding:10px 4px 6px;display:flex}.day-feed__label{font-family:var(--font-arcade);letter-spacing:.06em;text-transform:uppercase;color:var(--text);font-size:9px}.day-feed__date{color:var(--muted);letter-spacing:.04em}.row{border-bottom:1px solid var(--border);grid-template-columns:minmax(0,1fr) max-content;align-items:center;gap:10px;min-width:0;padding:10px 0;display:grid}.row--stack{flex-direction:column;align-items:stretch;gap:6px;display:flex}.row__top{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:12px;min-width:0;display:grid}.row:last-child{border-bottom:none;padding-bottom:0}.row:first-child{padding-top:0}.row__copy{flex:1;min-width:0}.row__headline{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:8px;min-width:0;display:grid}.row__name{-webkit-line-clamp:2;word-break:break-word;cursor:default;-webkit-box-orient:vertical;min-width:0;font-size:.78rem;font-weight:500;line-height:1.25;display:-webkit-box;position:relative;overflow:hidden}.row__name[data-full]:hover:after{content:attr(data-full);z-index:30;background:var(--surface);max-width:min(28rem,70vw);color:var(--text);border:2px solid var(--border);box-shadow:3px 3px 0 0 var(--pixel-shadow);font-family:var(--font-num);white-space:normal;pointer-events:none;padding:6px 8px;font-size:.75rem;font-weight:500;line-height:1.3;position:absolute;bottom:calc(100% + 4px);left:0}.row__title{min-width:0;font-size:.9rem;font-weight:500}.row__meta{color:var(--muted);font-family:var(--font-num);letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;margin-top:3px;font-size:.72rem;overflow:hidden}.row__amount{font-family:var(--font-num);letter-spacing:-.01em;white-space:nowrap;text-align:right;font-variant-numeric:tabular-nums;flex-shrink:0;font-size:.95rem;font-weight:600;line-height:1.2}.tag{border:1px solid var(--border);color:var(--muted);letter-spacing:.06em;text-transform:uppercase;margin-left:8px;padding:2px 6px;font-size:.65rem;display:inline-block}.bars{grid-template-columns:repeat(6,minmax(0,1fr));align-items:end;gap:12px;min-height:160px;padding-top:8px;display:grid}.bars__col{flex-direction:column;align-items:center;gap:8px;min-width:0;display:flex}.bars__stack{align-items:flex-end;gap:4px;width:100%;height:140px;display:flex}.bars__bar{flex:1;min-height:4px}.bars__bar--income{background:var(--mint)}.bars__bar--expense{background:var(--coral)}.bars__label{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;font-size:.7rem}.legend{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;gap:16px;font-size:.72rem;display:flex}.legend i{vertical-align:-1px;width:10px;height:10px;margin-right:6px;display:inline-block}.legend__income i{background:var(--mint)}.legend__expense i{background:var(--coral)}.legend__dash{border-bottom:2px dashed var(--coral);vertical-align:2px;background:0 0!important;height:0!important}.cycle-pref{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.cycle-pref__label{font-family:var(--font-arcade);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:8px}.cycle-pref__select{font:inherit;font-family:var(--font-num);color:var(--text);background:var(--surface);border:2px solid var(--border);box-shadow:2px 2px 0 0 var(--pixel-shadow);min-width:4rem;padding:6px 10px;font-size:.85rem;font-weight:600}.cycle-pref__info{display:inline-flex;position:relative}.cycle-pref__info-btn{width:1.35rem;height:1.35rem;font-family:var(--font-arcade);letter-spacing:0;color:var(--muted);background:var(--surface);border:2px solid var(--border);box-shadow:2px 2px 0 0 var(--pixel-shadow);cursor:help;place-items:center;font-size:8px;display:grid}.cycle-pref__info-btn:hover,.cycle-pref__info-btn:focus-visible{color:var(--text);border-color:var(--border-strong)}.cycle-pref__tip{z-index:8;background:var(--surface);border:2px solid var(--border-strong);width:min(22rem,70vw);box-shadow:3px 3px 0 0 var(--pixel-shadow);color:var(--text);pointer-events:none;padding:10px 12px;font-size:.78rem;line-height:1.45;display:none;position:absolute;top:calc(100% + 6px);left:0}.cycle-pref__info:hover .cycle-pref__tip,.cycle-pref__info:focus-within .cycle-pref__tip{display:block}.cycle-nav{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:8px 0;display:flex}.cycle-nav__range{font-family:var(--font-arcade);letter-spacing:.04em;text-transform:uppercase;color:var(--text);text-align:center;font-size:8px}.month-chips{flex-wrap:wrap;gap:6px;display:flex}.month-chip{border:2px solid var(--border);color:var(--muted);letter-spacing:.06em;text-transform:uppercase;background:var(--surface);box-shadow:2px 2px 0 0 var(--pixel-shadow);padding:6px 10px;font-size:.72rem}.month-chip--active{color:var(--on-accent);background:var(--mint);border-color:var(--mint);font-weight:600}.balance-chart{flex-direction:column;gap:8px;width:100%;min-width:0;display:flex}.balance-chart__frame{width:100%;min-width:0;position:relative}.balance-chart__forecast-badge{z-index:2;border:1px solid var(--coral);background:color-mix(in srgb, var(--coral) 18%, var(--surface));color:var(--coral);font-size:.65rem;font-family:var(--font-ui);letter-spacing:.08em;text-transform:uppercase;pointer-events:none;white-space:nowrap;border-radius:3px;padding:2px 8px;position:absolute;top:6px;transform:translate(-50%)}.balance-chart__today-label--forecast{color:var(--coral)}.balance-chart__svg{aspect-ratio:640/148;width:100%;height:auto;display:block}.balance-chart__line{fill:none;stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.balance-chart__line--actual{stroke:var(--text)}.balance-chart__line--forecast{stroke:var(--muted);stroke-dasharray:6 5}.balance-chart__today{stroke:var(--muted);stroke-width:1px;stroke-dasharray:3 4;opacity:.75}.balance-chart__dot{fill:var(--mint)}.balance-chart__tick{fill:var(--muted);font-size:7px;font-family:var(--font-ui)}.balance-chart__today-label{color:var(--mint);text-transform:uppercase;letter-spacing:.06em;margin-left:auto;font-size:.72rem}.form-grid{border-bottom:1px solid var(--border);grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:4px;padding-bottom:12px;display:grid}.form-grid__full{grid-column:1/-1}.cat-pill{letter-spacing:.04em;text-transform:uppercase;color:var(--text);background:color-mix(in srgb, var(--cat,var(--muted)) 22%, var(--surface-2));border:1px solid color-mix(in srgb, var(--cat,var(--muted)) 55%, var(--border));white-space:nowrap;text-overflow:ellipsis;border-radius:999px;flex-shrink:0;align-items:center;gap:5px;max-width:11rem;margin-left:0;padding:2px 8px 2px 4px;font-size:.62rem;font-weight:600;display:inline-flex;overflow:hidden}.cat-pill--compact{max-width:10rem;margin-left:0;padding:2px 7px 2px 3px;font-size:.58rem}.cat-pill__icon{border:1px solid color-mix(in srgb, var(--cat,var(--muted)) 70%, transparent);width:16px;height:16px;color:var(--cat,var(--mint));background:#12131a;border-radius:2px;flex-shrink:0;justify-content:center;align-items:center;line-height:0;display:inline-flex}.cat-icon-img{object-fit:contain;image-rendering:pixelated;image-rendering:crisp-edges;flex-shrink:0;display:block}.cat-select{position:relative}.cat-select__trigger{border:1px solid var(--border);background:var(--surface-2);width:100%;color:var(--text);text-align:left;align-items:center;gap:10px;padding:8px 10px;display:flex}.cat-select__swatch{border:1px solid color-mix(in srgb, var(--cat,var(--mint)) 65%, var(--border));background:#12131a;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;display:inline-flex;box-shadow:inset 0 0 0 1px #ffffff0a}.cat-select__label{text-transform:none;letter-spacing:0;color:var(--text);flex:1;font-size:.85rem}.cat-select__chev{color:var(--muted);font-size:.75rem}.cat-select__list{z-index:20;background:var(--surface);border:1px solid var(--border);max-height:260px;margin:0;padding:4px;list-style:none;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow:auto;box-shadow:0 8px 24px #00000059}.cat-select__option{width:100%;color:var(--text);text-align:left;align-items:center;gap:10px;padding:8px 10px;display:flex}.cat-select__option:hover,.cat-select__option--active{background:var(--surface-2)}.cat-select__option--child{width:100%;padding-left:28px}.cat-select__option--child .cat-select__swatch{width:32px;height:32px}.cat-select__hint{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;font-size:.65rem}.cat-select__parent-row{align-items:stretch;gap:2px;display:flex}.cat-select__parent-row .cat-select__option{flex:1}.cat-select__expand{width:36px;color:var(--muted);border:1px solid #0000;flex-shrink:0;font-size:.85rem}.cat-select__expand:hover{color:var(--text);border-color:var(--border);background:var(--surface-2)}.cat-select__group{flex-direction:column;display:flex}.year-nav{align-items:center;gap:10px;display:flex}.year-nav--range{flex-wrap:wrap;justify-content:center;gap:16px;margin-bottom:8px}.year-nav__label{font-family:var(--font-num);text-align:center;font-variant-numeric:tabular-nums;min-width:4ch;font-size:1.35rem;font-weight:600}.balance-chart__svg--interactive{touch-action:none;cursor:ew-resize;-webkit-user-select:none;user-select:none}.balance-chart__cursor{stroke:var(--mint);stroke-width:1.5px;opacity:.9}.balance-chart__dot-hit{fill:#0000;stroke:#0000;pointer-events:none}.row-block{border-bottom:1px solid var(--border)}.row-block:last-child{border-bottom:none}.row__rec-tag{font-family:var(--font-arcade);letter-spacing:.06em;text-transform:uppercase;color:var(--cyan);flex-shrink:0;font-size:7px;line-height:1.4}.compose-mode{border:2px solid var(--border);box-shadow:2px 2px 0 0 var(--pixel-shadow);flex-wrap:wrap;align-self:flex-start;display:inline-flex}.compose-mode__btn{font-family:var(--font-arcade);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);background:var(--surface);padding:6px 12px;font-size:7px}.compose-mode__btn--active{color:var(--on-accent);background:var(--mint)}.row-block .row{border-bottom:none;padding-top:14px;padding-bottom:14px}.row-expand{padding:0 0 12px}.row-expand .form-grid{border:1px solid var(--border);background:var(--surface-2);margin:0;padding:12px}.cat-select__check{color:var(--mint);letter-spacing:.06em;text-transform:uppercase;margin-left:auto;font-size:.65rem}.cat-spend{flex-direction:column;flex:1;gap:14px;min-height:0;display:flex}.cat-spend__head{flex-shrink:0;justify-content:space-between;align-items:baseline;gap:12px;display:flex}.cat-spend__total-label{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:.72rem}.cat-spend__total{font-family:var(--font-num);letter-spacing:-.01em;font-variant-numeric:tabular-nums;color:var(--coral);font-size:1.2rem;font-weight:600}.cat-spend__bars{scrollbar-gutter:stable;flex-direction:column;flex:1;gap:8px;min-height:0;max-height:13rem;padding-right:4px;display:flex;overflow:hidden auto}.cat-spend__bar-btn{text-align:left;width:100%;color:inherit;background:0 0;border:2px solid #0000;flex-direction:column;gap:4px;padding:6px 8px;display:flex}.cat-spend__bar-btn:hover{background:var(--surface-2);border-color:var(--border)}.cat-spend__bar-btn--active{background:var(--surface-2);border-color:var(--mint);box-shadow:2px 2px 0 0 var(--pixel-shadow)}.cat-spend__bar-meta{grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:8px;display:grid}.cat-spend__name{color:var(--text);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:6px;min-width:0;font-size:.85rem;display:flex;overflow:hidden}.cat-spend__pct{color:var(--muted);font-family:var(--font-num);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:.7rem}.cat-spend__amt{font-family:var(--font-num);letter-spacing:-.01em;font-variant-numeric:tabular-nums;color:var(--text);white-space:nowrap;font-size:.9rem;font-weight:600}.cat-spend__track{background:var(--surface-2);border:2px solid var(--border);height:10px;display:block;overflow:hidden}.cat-spend__fill{min-width:2px;height:100%;display:block}.form-grid--inline{border-bottom:none;align-items:end;margin-bottom:0;padding-bottom:0}.feed-filters{border-bottom:1px solid var(--border)}.feed-filters__bar{align-items:center;gap:8px;padding:8px 12px;display:flex}.feed-filters__badge{color:var(--mint);margin-left:4px}.feed-filters__panel{gap:8px 10px;padding:0 12px 12px}.feed-modal{z-index:40;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.feed-modal__backdrop{cursor:pointer;background:#00000059;border:0;position:absolute;inset:0}.feed-modal__panel{z-index:1;background:var(--surface);border:2px solid var(--border);width:min(520px,100%);max-height:min(90vh,720px);padding:14px 16px 16px;position:relative;overflow:auto}.feed-modal__title{margin:0 0 12px;font-size:1rem}.card-bill-kids{flex-direction:column;gap:6px;margin:0;padding:4px 0 8px 36px;list-style:none;display:flex}.card-bill-kids__row{border-left:2px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:6px 8px;display:flex}.card-bill-kids__copy{flex-direction:column;gap:2px;min-width:0;display:flex}.card-bill-kids__title{align-items:center;gap:6px;min-width:0;display:flex}.card-bill-kids__title .forecast-chip{flex-shrink:0;margin-left:0}.card-bill-kids__name{text-overflow:ellipsis;white-space:nowrap;font-size:.88rem;overflow:hidden}.card-bill-kids__meta{color:var(--muted);align-items:center;gap:8px;font-size:.72rem;display:flex}.card-bill-kids__right{flex-shrink:0;align-items:center;gap:8px;display:flex}.card-bill-kids__amount{font-family:var(--font-num);font-size:.88rem}.card-bill-kids__empty{color:var(--muted);padding:4px 8px;font-size:.8rem}.form-grid label{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;flex-direction:column;gap:4px;font-size:.72rem;display:flex}.form-grid input,.form-grid select{font-family:var(--font-num);color:var(--text);background:var(--surface-2);border:1px solid var(--border);padding:8px 10px;font-size:.9rem}.btn{border:2px solid var(--border);letter-spacing:.02em;text-transform:none;background:var(--surface);box-shadow:2px 2px 0 0 var(--pixel-shadow);align-self:end;padding:8px 12px;font-size:.8rem;font-weight:500}.btn:hover{border-color:var(--border-strong)}.btn--file{cursor:pointer;align-items:center;display:inline-flex}.bank-icon{object-fit:cover;border-radius:8px;flex-shrink:0;display:block}.bank-icon--empty{background:var(--surface-2);border:1px solid var(--border)}.bank-picker{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;margin-bottom:12px;display:grid}.bank-picker__item{text-align:left;border:1px solid var(--border);background:var(--surface-2);color:var(--text);cursor:pointer;align-items:center;gap:12px;padding:10px 12px;display:flex}.bank-picker__item:hover:not(:disabled){border-color:var(--mint)}.bank-picker__item:disabled{opacity:.5;cursor:wait}.bank-picker__name{font-family:var(--font-display);font-size:.95rem;display:block}.bank-picker__meta{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;font-size:.65rem;display:block}.row__with-icon{align-items:center;gap:10px;min-width:0;display:flex;overflow:hidden}.row__with-icon>div{min-width:0}.account-bals{align-items:stretch;gap:8px;margin-left:auto;display:flex}.account-bal{border:1px solid var(--border);background:var(--surface-2);text-align:right;flex-direction:column;justify-content:center;min-width:7.5rem;padding:6px 10px;display:flex}.account-bal__label{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:.6rem}.account-bal__value{font-family:var(--font-num);letter-spacing:-.01em;font-variant-numeric:tabular-nums;font-size:.95rem;font-weight:600}.account-bal--pos .account-bal__value{color:var(--mint)}.account-bal--neg .account-bal__value{color:var(--coral)}.account-bal--invoice .account-bal__value{color:var(--amber)}.spinner{border:2px solid var(--border);border-top-color:var(--mint);border-radius:50%;flex-shrink:0;width:14px;height:14px;animation:.55s linear infinite spin}.spinner--btn{vertical-align:-2px;width:12px;height:12px;margin-right:.35rem;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.btn--primary{background:var(--mint);border-color:var(--mint);color:var(--on-accent);justify-content:center;align-items:center;font-weight:600;display:inline-flex}.btn--ghost{color:var(--muted)}.btn--ghost:hover{color:var(--text);border-color:var(--border)}.row__actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;max-width:100%;display:flex}.row__actions--below{justify-content:flex-start;padding-left:34px}.btn--sm{box-shadow:1px 1px 0 0 var(--pixel-shadow);padding:4px 8px;font-size:.72rem}@media (width<=960px){.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dash-grid{grid-template-columns:1fr}}@media (width<=720px){.form-grid{grid-template-columns:1fr}.topbar__inner{padding:12px 16px}.topbar__updated{display:none}.main{padding:20px 16px}.kpi-grid{grid-template-columns:1fr}}.toast-host{z-index:80;pointer-events:none;flex-direction:column;gap:10px;width:min(360px,100vw - 32px);display:flex;position:fixed;top:16px;right:16px}.toast{pointer-events:auto;border:1px solid color-mix(in srgb, currentColor 35%, transparent);background:var(--surface);border-radius:4px;grid-template-columns:auto 1fr auto;align-items:start;gap:12px;padding:12px 14px;animation:.16s ease-out toast-in;display:grid;box-shadow:0 8px 24px #00000059}.toast--success{color:var(--mint);background:color-mix(in srgb, var(--mint) 16%, var(--surface))}.toast--error{color:var(--coral);background:color-mix(in srgb, var(--coral) 16%, var(--surface))}.toast--info{color:var(--cyan);background:color-mix(in srgb, var(--cyan) 16%, var(--surface))}.toast--warning{color:var(--amber);background:color-mix(in srgb, var(--amber) 16%, var(--surface))}.toast__icon{width:1.5rem;height:1.5rem;font-family:var(--font-display);border:1.5px solid;border-radius:999px;flex-shrink:0;place-items:center;font-size:1rem;line-height:1;display:grid}.toast--warning .toast__icon{border-radius:3px}.toast__body{min-width:0}.toast__title{letter-spacing:.06em;text-transform:uppercase;color:inherit;font-size:.8rem;display:block}.toast__msg{color:var(--text);margin-top:2px;font-size:.85rem;line-height:1.35}.toast__close{color:var(--muted);padding:0 2px;font-size:1.1rem;line-height:1}.toast__close:hover{color:var(--text)}.toast--leaving{animation:.22s ease-in forwards toast-out}@keyframes toast-in{0%{opacity:0;transform:translate(12px)}to{opacity:1;transform:translate(0)}}@keyframes toast-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(12px)}}@media (width<=720px){.toast-host{width:auto;top:12px;left:12px;right:12px}}.pixel-sprite{object-fit:contain;width:48px;height:48px;image-rendering:pixelated;image-rendering:crisp-edges;flex-shrink:0}.pixel-sprite--lg{width:72px;height:72px}.pixel-sprite--bob{animation:2.2s ease-in-out infinite pixel-bob}.pixel-sprite--bob-delay{animation:2.5s ease-in-out .4s infinite pixel-bob}@keyframes pixel-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes pixel-coin-flip{0%{transform:scaleX(1)}50%{transform:scaleX(.08)}to{transform:scaleX(1)}}@media (prefers-reduced-motion:reduce){.topbar__coin .pixel-icon,.pixel-sprite--bob,.pixel-sprite--bob-delay{animation:none}}.panel__title-row{align-items:center;gap:10px;min-width:0;display:flex}.panel__title-row h2{margin:0}.goals-summary{gap:var(--gap);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.goal-list{flex-direction:column;gap:16px;display:flex}.goal{flex-direction:column;gap:8px;display:flex}.goal__top{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.goal__name{color:var(--text);font-weight:600}.goal__meta{color:var(--muted);letter-spacing:.04em;font-size:.75rem}.goal__amounts{font-family:var(--font-num);letter-spacing:-.01em;font-variant-numeric:tabular-nums;justify-content:space-between;gap:8px;font-size:.95rem;font-weight:600;display:flex}.goal__bar{background:var(--surface-2);border:2px solid var(--border);height:12px;overflow:hidden}.goal__fill{background:var(--mint);height:100%}.goal__fill--cyan{background:var(--cyan)}.goal__fill--amber{background:var(--amber)}.goal+.goal{border-top:1px solid var(--border);padding-top:16px}.goal__quick{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.goal__quick input,.goal__quick select{font-family:var(--font-num);color:var(--text);background:var(--surface-2);border:1px solid var(--border);flex:110px;min-width:0;padding:4px 8px;font-size:.85rem}.goal__quick .btn{align-self:center}.goal__history summary{cursor:pointer}.goal__history ul{flex-direction:column;gap:4px;max-height:200px;margin:8px 0;padding:0;list-style:none;display:flex;overflow-y:auto}.goal__history li{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;display:grid}.goal__history li .num{text-align:right}.goal__actions{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.hold-list{flex-direction:column;display:flex}.hold{border-bottom:1px solid var(--border);grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:12px 0;display:grid}.hold:last-child{border-bottom:none}.hold__name{font-weight:600}.hold__kind{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;font-size:.72rem}.hold__value{font-family:var(--font-num);letter-spacing:-.01em;font-variant-numeric:tabular-nums;color:var(--cyan);white-space:nowrap;font-size:.95rem;font-weight:600}.hold__share{color:var(--muted);font-family:var(--font-num);font-variant-numeric:tabular-nums;letter-spacing:-.01em;text-align:right;min-width:3.5rem;font-size:.75rem}.num{font-family:var(--font-num);font-variant-numeric:tabular-nums;letter-spacing:-.01em}@media (width<=720px){.goals-summary{grid-template-columns:1fr}.hold{grid-template-columns:minmax(0,1fr) auto}.hold__share{grid-area:1/2}}.auth{gap:16px;width:100%;max-width:420px;margin:48px auto;display:grid}.auth__reqs{gap:6px;margin:-4px 0 0;padding:0;list-style:none;display:grid}.auth__req{color:color-mix(in srgb, var(--text) 62%, transparent);align-items:center;gap:8px;margin:0;font-size:.85rem;display:flex}.auth__req:before{content:"";box-sizing:border-box;border:1.5px solid;flex:none;width:8px;height:8px}.auth__req--ok{color:var(--income)}.auth__req--ok:before{background:currentColor;border-color:currentColor}.auth__hint{color:var(--muted);margin:6px 0 0;font-size:.9rem}.auth__label-row{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.auth__link{color:var(--cyan);font:inherit;text-underline-offset:3px;cursor:pointer;background:0 0;border:0;justify-self:center;padding:0;font-size:.8rem;text-decoration:underline}.auth__google{justify-content:center;align-items:center;gap:10px;text-decoration:none;display:inline-flex}.auth__divider{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;align-items:center;gap:12px;margin:0;font-size:.75rem;display:flex}.auth__divider:before,.auth__divider:after{content:"";border-top:1px solid var(--border);flex:1}.form-grid input.auth__otp{font-family:var(--font-display);letter-spacing:.4em;text-align:center;font-size:1.4rem}.tag--on{color:var(--mint);border-color:var(--mint)}.security__off,.security__on,.security__codes{gap:12px;max-width:640px;display:grid}.security__off p,.security__on p,.security__codes p,.security__steps p{margin:0}.security__bullets{color:var(--muted);gap:6px;margin:0;padding-left:18px;font-size:.9rem;display:grid}.security__steps{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:24px;margin:0;padding:0;list-style:none;display:grid}.security__steps>li{align-content:start;gap:10px;display:grid}.security__steps h3{font-family:var(--font-display);margin:0;font-size:.95rem}.security__steps p{color:var(--muted);font-size:.9rem}.security__qr{border:2px solid var(--border-strong);width:200px;max-width:100%;image-rendering:pixelated;background:#fff;padding:8px}.security__qr svg{width:100%;height:auto;display:block}.security__key-label{font-size:.8rem!important}.security__key,.security__code-list code{letter-spacing:.05em;word-break:break-all;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.95rem}.security__key{border:1px dashed var(--border-strong);-webkit-user-select:all;user-select:all;padding:8px 10px}.security__code-list{border:1px dashed var(--border-strong);grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px 24px;margin:0;padding:12px 12px 12px 36px;display:grid}.security__warn{color:var(--amber)}.security__off>.btn{justify-self:start}.page-spinner{pointer-events:none;place-items:center;display:grid;position:fixed;inset:0}.spinner--lg{border-width:4px;width:40px;height:40px}.btn--primary .spinner{border-color:#fff #fff6 #fff6}.security__profile{max-width:420px}.landing{gap:calc(var(--gap) * 1.5);display:grid}.landing__hero{grid-template-columns:minmax(0,1.15fr) minmax(0,420px);align-items:center;gap:40px;padding:24px 0 8px;display:grid}.landing__pitch{align-content:center;gap:16px;display:grid}.landing__title{font-family:var(--font-display);letter-spacing:.01em;color:var(--text);margin:0;font-size:clamp(1.9rem,5vw,3rem);line-height:1.08}.landing__lead{max-width:34rem;color:var(--muted);margin:0;font-size:1.05rem;line-height:1.6}.landing__stage{align-items:flex-end;gap:12px;margin-top:8px;display:flex}.landing__stage .hero__bubble{margin:0 0 28px}.landing__login .auth{max-width:none;margin:0}.landing__section{padding:24px}.landing__h2{font-family:var(--font-display);margin:0 0 16px;font-size:1.15rem}.landing__steps{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin:0;padding:0;list-style:none;display:grid}.landing__step{align-content:start;gap:8px;display:grid}.landing__step h3{font-family:var(--font-display);margin:0;font-size:.95rem}.landing__step p,.landing__list li{color:var(--muted);margin:0;font-size:.92rem;line-height:1.55}.landing__step-icon{background:var(--coin);width:2.25rem;height:2.25rem;color:var(--text);place-items:center;display:grid}.landing__duo{gap:var(--gap);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.landing__list{gap:12px;margin:0;padding:0;list-style:none;display:grid}.landing__list li{padding-left:20px;position:relative}.landing__list li:before{content:"";background:var(--mint);width:8px;height:8px;position:absolute;top:.5em;left:0}.landing__list--not li:before{background:var(--coral)}.landing__cta{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:8px 0 24px;display:flex}.landing__cta-text{font-family:var(--font-display);margin:0;font-size:1.05rem}@media (width<=860px){.landing__hero,.landing__steps,.landing__duo{grid-template-columns:1fr}.landing__hero{gap:24px;padding-top:8px}}
