:root,html[data-theme=light]{--bg:#f3f5f2;--surface:#fff;--ink:#121c17;--muted:#6a7a71;--green:#1a5c45;--green-deep:#0f3d2e;--green-soft:#1a5c4514;--danger:#b33b2e;--ok:#1a5c45;--line:#121c1712;--shadow:0 1px 2px #121c170a, 0 8px 24px #121c170d;--radius:14px;--radius-btn:12px;--control-h:36px;--nav-h:64px;--ease:cubic-bezier(.22, 1, .36, 1);--glow-a:#1a5c4512;--glow-b:#c4a5741f;--offline-bg:#fff6e8;--offline-ink:#7a4b12;--offline-border:#c48c3c59;--skeleton-a:#e6ebe7;--skeleton-b:#f2f5f2}html[data-theme=dark]{--bg:#0f1411;--surface:#1a211c;--ink:#e8efe9;--muted:#9aab9f;--green:#3d9a72;--green-deep:#8fd4b0;--green-soft:#3d9a7224;--danger:#e07a6e;--ok:#5cbf90;--line:#e8efe91a;--shadow:0 1px 2px #00000059, 0 10px 28px #00000047;--glow-a:#3d9a721f;--glow-b:#c4a57414;--offline-bg:#2a2114;--offline-ink:#f0c98a;--offline-border:#f0c98a47;--skeleton-a:#243028;--skeleton-b:#2e3a32;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root{color:var(--ink);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-family:Manrope,system-ui,sans-serif;font-weight:500;line-height:1.45}*{box-sizing:border-box}html,body,#root{min-height:100%}body{background:radial-gradient(900px 420px at 0% -5%, var(--glow-a), transparent 55%), radial-gradient(700px 380px at 100% 0%, var(--glow-b), transparent 50%), var(--bg);color:var(--ink);margin:0}h1,h2,.brand,.hero-amount{letter-spacing:-.03em;font-family:Fraunces,Georgia,serif;font-weight:650}h1{margin:0;font-size:1.45rem}h2{margin:0;font-size:.95rem;font-weight:600}p{margin:0}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}.app-shell{max-width:440px;min-height:100dvh;padding:.85rem 1rem calc(var(--nav-h) + 1rem);margin:0 auto}.topbar{animation:fadeDown .45s var(--ease) both;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.brand-link{min-width:0;transition:transform .2s var(--ease);border-radius:12px;outline:none;align-items:center;gap:.65rem;display:flex}.brand-link:active{transform:scale(.97)}.brand-link:focus-visible{box-shadow:0 0 0 3px #1a5c4547}.brand-logo-wrap{transition:transform .35s var(--ease), box-shadow .35s var(--ease);border-radius:11px;flex-shrink:0;display:inline-flex;box-shadow:0 2px 8px #0f3d2e2e}.brand-link:hover .brand-logo-wrap{transform:translateY(-1px)rotate(-3deg);box-shadow:0 4px 14px #0f3d2e38}.brand-logo{border-radius:11px;display:block}.brand-logo .logo-coin{transform-origin:32px 23px;animation:3.2s ease-in-out infinite logoFloat}.brand-logo .logo-arc{stroke-dasharray:48;stroke-dashoffset:48px;animation:logoDraw 1.1s var(--ease) .15s both}@keyframes logoFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-1.5px)}}@keyframes logoDraw{to{stroke-dashoffset:0}}.brand-wrap{flex-direction:column;min-width:0;display:flex}.brand{color:var(--green-deep);margin:0;font-size:1.15rem;line-height:1.1;display:block}.brand-sub{color:var(--muted);margin-top:.15rem;font-size:.75rem;display:block}.pill{letter-spacing:.04em;text-transform:uppercase;color:#7a5310;background:#f0e6d0;border-radius:999px;padding:.3rem .55rem;font-size:.68rem;font-weight:700}.topbar-actions{flex-shrink:0;align-items:center;gap:.45rem;display:flex}.sheet-chip{height:var(--control-h);border-radius:var(--radius-btn);background:var(--green-soft);color:var(--green-deep);transition:background .15s ease, transform .15s var(--ease);align-items:center;gap:.35rem;padding:0 .7rem;font-size:.78rem;font-weight:700;display:inline-flex}.sheet-chip:hover{background:#1a5c4524}.sheet-chip:active{transform:scale(.97)}.quick-actions{animation:fadeUp .4s var(--ease) 50ms both;grid-template-columns:repeat(3,1fr);gap:.45rem;margin-bottom:.85rem;display:grid}.quick-card{border:1px solid var(--line);background:var(--surface);box-shadow:none;color:var(--ink);font:inherit;cursor:pointer;text-align:left;transition:transform .15s var(--ease), border-color .15s ease, background .15s ease;border-radius:12px;flex-direction:column;align-items:flex-start;gap:.3rem;padding:.6rem .55rem;font-size:.74rem;font-weight:700;display:flex}.quick-card:hover{background:var(--green-soft);border-color:#1a5c4547}.quick-card:active{transform:scale(.97)}.quick-ico{background:var(--green-soft);width:1.35rem;height:1.35rem;color:var(--green-deep);border-radius:7px;justify-content:center;align-items:center;font-size:.78rem;line-height:1;display:inline-flex}.quick-label{line-height:1.2}.month-chip-row{grid-template-columns:repeat(2,1fr);gap:.45rem;margin-top:.55rem;display:grid}.month-chip{border:1px solid var(--line);background:var(--surface);min-height:3.6rem;font:inherit;cursor:pointer;text-align:left;box-sizing:border-box;transition:border-color .15s ease, background .15s ease, transform .15s var(--ease);border-radius:12px;flex-direction:column;justify-content:space-between;align-items:flex-start;gap:.25rem;padding:.6rem .7rem;display:flex}.month-chip:active{transform:scale(.98)}.month-chip.is-current{background:var(--green-soft);border-color:#1a5c4566}.month-chip-label{color:var(--muted);letter-spacing:.02em;font-size:.7rem;font-weight:700}.month-chip-val{color:var(--green-deep);text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-family:Fraunces,Georgia,serif;font-size:.92rem;font-weight:650;line-height:1.15;overflow:hidden}.chart-open-month{width:100%;min-height:var(--control-h);border-radius:var(--radius-btn);box-shadow:none;margin-top:.5rem;padding:.4rem .65rem;font-size:.76rem}.month-detail-actions{flex-wrap:nowrap;align-items:stretch;gap:.45rem;margin:.1rem 0 .7rem;display:flex}.month-detail-actions .btn{text-align:center;border-radius:var(--radius-btn);min-width:0;min-height:40px;box-shadow:none;flex:1;margin:0;padding:.45rem .65rem;font-size:.78rem;font-weight:700}.month-detail-actions .btn.primary,.month-detail-actions .btn.ghost{box-shadow:none;margin:0}.confirm-backdrop{z-index:80;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#121c1773;justify-content:center;align-items:flex-end;padding:1rem;animation:.2s both fadeIn;display:flex;position:fixed;inset:0}@media (width>=480px){.confirm-backdrop{align-items:center}}.confirm-dialog{background:var(--surface);border-radius:16px;width:min(100%,340px);padding:1rem 1rem .95rem;box-shadow:0 16px 48px #121c1733}.confirm-dialog h2{color:var(--green-deep);margin:0 0 .3rem;font-family:Fraunces,Georgia,serif;font-size:1.1rem}.confirm-body{color:var(--muted);margin:0 0 .85rem;font-size:.84rem;line-height:1.4}.confirm-actions{align-items:stretch;gap:.45rem;display:flex}.confirm-actions .btn{border-radius:var(--radius-btn);min-height:44px;box-shadow:none;flex:1;margin:0;padding:.55rem .75rem;font-size:.82rem}.confirm-actions .btn.primary,.confirm-actions .btn.ghost{box-shadow:none;margin:0}.btn.primary.danger{background:var(--danger)}.btn.primary.danger:hover:not(:disabled){background:#9a3228}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.login-card{text-align:center;align-items:stretch}.login-card .lock-title,.login-card .lock-sub,.login-card>svg{align-self:center}.login-points{text-align:left;flex-direction:column;gap:.45rem;margin:.35rem 0 1rem;padding:0;list-style:none;display:flex}.login-points li{background:var(--green-soft);color:var(--green-deep);border-radius:10px;padding:.55rem .7rem .55rem 2rem;font-size:.82rem;font-weight:600;line-height:1.35;position:relative}.login-points li:before{content:"";background:var(--green);border-radius:50%;width:.45rem;height:.45rem;position:absolute;top:.85rem;left:.7rem}.login-foot{margin-top:.85rem!important}.welcome-banner{color:#eef7f2;border-radius:var(--radius);box-shadow:var(--shadow);animation:fadeUp .4s var(--ease) both;background:linear-gradient(135deg,#123d2f 0%,#1a5c45 60%,#2d7a5c 100%);margin-bottom:.85rem;padding:1.1rem 1rem 1.15rem}.welcome-kicker{letter-spacing:.06em;text-transform:uppercase;opacity:.75;margin:0;font-size:.7rem;font-weight:700}.welcome-banner h2{color:#fff;margin:.25rem 0 .35rem;font-family:Fraunces,Georgia,serif;font-size:1.25rem}.welcome-banner p{opacity:.88;margin:0;font-size:.84rem;line-height:1.4}.welcome-actions{flex-wrap:wrap;align-items:stretch;gap:.5rem;margin-top:.9rem;display:flex}.welcome-actions .btn{border-radius:var(--radius-btn);flex:1;min-height:40px;margin:0}.welcome-actions .btn.primary{color:var(--green-deep);box-shadow:none;background:#fff}.welcome-actions .btn.primary:hover:not(:disabled){color:var(--green-deep);background:#e8f0eb}.welcome-actions .btn.ghost{color:#fff;background:#ffffff1f;border:1px solid #ffffff40;margin:0}.welcome-actions .btn.ghost:hover:not(:disabled){color:#fff;background:#ffffff38}.lock-toggle{width:var(--control-h);height:var(--control-h);border-radius:var(--radius-btn);background:var(--green-soft);color:var(--green-deep);cursor:pointer;transition:transform .15s var(--ease), background .15s ease;border:0;justify-content:center;align-items:center;display:inline-flex}.lock-toggle:hover{background:#1a5c4524}.lock-toggle:active{transform:scale(.96)}.lock-screen{min-height:100dvh;padding:1.25rem;padding-bottom:calc(1.25rem + env(safe-area-inset-bottom));background:radial-gradient(900px 420px at 0% -5%, #1a5c451a, transparent 55%), radial-gradient(700px 380px at 100% 0%, #c4a57429, transparent 50%), var(--bg);place-items:center;display:grid}.lock-card{background:var(--surface);width:min(360px,100%);box-shadow:var(--shadow);animation:fadeDown .45s var(--ease) both;border-radius:20px;flex-direction:column;align-items:center;gap:.15rem;padding:1.6rem 1.35rem 1.4rem;display:flex}.lock-card.is-shake{animation:.4s lockShake}@keyframes lockShake{0%,to{transform:translate(0)}20%{transform:translate(-7px)}40%{transform:translate(7px)}60%{transform:translate(-5px)}80%{transform:translate(4px)}}.lock-title{color:var(--green-deep);margin:.75rem 0 0;font-size:1.7rem}.lock-sub{color:var(--muted);margin:.15rem 0 1.1rem;font-size:.88rem}.lock-label{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);align-self:stretch;margin-bottom:.35rem;font-size:.72rem;font-weight:700}.lock-input{border:1px solid var(--line);background:var(--bg);color:var(--ink);letter-spacing:.28em;text-align:center;-webkit-text-security:disc;text-security:disc;border-radius:12px;align-self:stretch;padding:.85rem .95rem;font-size:1.15rem;font-weight:650}.lock-skip{margin-top:.35rem;color:var(--muted)!important;background:0 0!important}.lock-input:focus{outline-offset:1px;border-color:#1a5c4559;outline:2px solid #1a5c4547}.lock-error{color:var(--danger);text-align:center;align-self:stretch;min-height:1.2em;margin:.55rem 0 .35rem;font-size:.8rem;font-weight:650}.lock-spacer{min-height:1.2em;margin:.55rem 0 .35rem}.lock-btn{color:#fff;align-self:stretch;width:100%;margin-top:.35rem;text-decoration:none}.main{min-height:40vh}.main-swipe-host{touch-action:pan-y;overflow:hidden}.main-swipe-pane{will-change:transform;backface-visibility:hidden;min-height:40vh}.page{flex-direction:column;gap:.85rem;display:flex}.page-head{margin-bottom:.15rem}.lede,.muted{color:var(--muted);font-size:.85rem}.tip{font-size:.78rem}.center{text-align:center}.error-text{color:var(--danger);font-size:.9rem}.fade-in{animation:fadeUp .4s var(--ease) both}.fade-in>*{animation:fadeUp .45s var(--ease) both}.fade-in>:first-child{animation-delay:20ms}.fade-in>:nth-child(2){animation-delay:70ms}.fade-in>:nth-child(3){animation-delay:.12s}.fade-in>:nth-child(4){animation-delay:.17s}.fade-in>:nth-child(5){animation-delay:.22s}.fade-in>:nth-child(6){animation-delay:.27s}.fade-in>:nth-child(n+7){animation-delay:.3s}@keyframes fadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes fadeDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}.hero-block{color:#f2faf6;box-shadow:var(--shadow);background:linear-gradient(145deg,#0f3d2e 0%,#1a5c45 70%,#2a7358 100%);border-radius:18px;padding:1.15rem 1.2rem 1.25rem;position:relative;overflow:hidden}.hero-block:after{content:"";pointer-events:none;background:radial-gradient(circle,#ffffff24,#0000 70%);border-radius:50%;width:140px;height:140px;animation:4.5s ease-in-out infinite alternate heroGlow;position:absolute;inset:-40% auto auto -20%}@keyframes heroGlow{0%{opacity:.55;transform:translate(0)scale(1)}to{opacity:1;transform:translate(28px,18px)scale(1.15)}}.hero-top{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.35rem;display:flex}.hero-kicker{letter-spacing:.06em;text-transform:uppercase;opacity:.72;margin-bottom:.35rem;font-size:.72rem;font-weight:600}.hero-top .hero-kicker{margin-bottom:0}.refresh-btn{color:#f2faf6eb;letter-spacing:.02em;height:var(--control-h);border-radius:var(--radius-btn);cursor:pointer;transition:background .2s var(--ease), transform .2s var(--ease);background:#ffffff24;border:0;justify-content:center;align-items:center;padding:0 .75rem;font-size:.72rem;font-weight:700;display:inline-flex}.refresh-btn:hover{background:#ffffff38}.refresh-btn:active{transform:scale(.96)}.refresh-btn.is-spinning{animation:.9s ease-in-out infinite softPulse}@keyframes softPulse{0%,to{opacity:1}50%{opacity:.65}}.refresh-btn:disabled{opacity:.65;cursor:wait}.hero-amount{margin:0;font-size:2.1rem;line-height:1.05}.hero-meta{opacity:.78;margin-top:.4rem;font-size:.82rem}.hero-meta span{opacity:1;font-weight:700}.kpi-row{grid-template-columns:repeat(3,1fr);gap:.5rem;display:grid}.kpi{background:var(--surface);border:1px solid var(--line);min-height:72px;box-shadow:var(--shadow);transition:box-shadow .25s var(--ease), transform .25s var(--ease), border-color .25s ease;border-radius:12px;flex-direction:column;gap:.2rem;padding:.7rem .65rem;display:flex}.kpi:hover{border-color:#1a5c4529;transform:translateY(-1px);box-shadow:0 2px 4px #121c170a,0 10px 22px #121c170f}.kpi-label,.kpi-sub{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:.65rem;font-weight:600}.kpi strong{font-size:.88rem;font-weight:700;line-height:1.2}.kpi-ellipsis{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);transition:box-shadow .28s var(--ease), transform .28s var(--ease);padding:.85rem .9rem}.panel:hover{box-shadow:0 2px 4px #121c170a,0 12px 28px #121c1712}.panel-head{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.55rem;display:flex}.segmented{background:var(--bg);border-radius:999px;padding:2px;display:inline-flex}.segmented button{color:var(--muted);cursor:pointer;transition:background .2s var(--ease), color .2s var(--ease);background:0 0;border:0;border-radius:999px;padding:.28rem .6rem;font-size:.72rem;font-weight:650}.segmented button:focus{outline:none}.segmented button:focus-visible{box-shadow:0 0 0 3px #1a5c4538}.segmented button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px #0000000f}.chart-wrap{-webkit-tap-highlight-color:transparent;outline:none;width:100%;min-height:200px}.recharts-rectangle,.recharts-sector{transition:fill .22s var(--ease), fill-opacity .22s var(--ease), opacity .22s var(--ease);cursor:pointer}.chart-wrap:focus,.chart-wrap:focus-visible,.chart-wrap :focus,.chart-wrap :focus-visible,.recharts-wrapper,.recharts-wrapper:focus,.recharts-surface:focus,.chart-wrap svg{outline:none!important}.chart-wrap.pie{min-height:160px}.split-chart{grid-template-columns:.95fr 1.15fr;align-items:center;gap:.35rem;display:grid}.cat-list{flex-direction:column;gap:.2rem;margin:0;padding:0;list-style:none;display:flex}.cat-list li{margin:0;padding:0}.cat-row{width:100%;color:inherit;cursor:pointer;text-align:left;transition:background .2s var(--ease), transform .2s var(--ease), opacity .2s var(--ease);background:0 0;border:0;border-radius:8px;outline:none;grid-template-columns:8px 1fr auto;align-items:center;gap:.4rem;padding:.35rem .25rem;font-size:.78rem;display:grid}.cat-row:hover{background:#1a5c450f}.cat-row:active{transform:scale(.985)}.cat-row:focus-visible{box-shadow:0 0 0 3px #1a5c4538}.cat-row.on{background:var(--green-soft)}.panel-hint{color:var(--muted);font-size:.68rem;font-weight:600}.chart-tip{color:var(--ink);background:#fff;border-radius:10px;min-width:120px;padding:.55rem .7rem;font-size:.75rem;box-shadow:0 8px 28px #0f241c24}.chart-tip-title{margin-bottom:.25rem;font-weight:700}.chart-tip p+p{color:var(--muted);margin-top:.12rem}.chart-tip strong{color:var(--ink)}.chart-insight{min-height:4.75rem;margin-top:.55rem;position:relative}.chart-insight-cat{min-height:4.1rem}.chart-insight-hint,.chart-insight .chart-detail{transition:opacity .22s var(--ease), transform .22s var(--ease);pointer-events:none;margin:0;position:absolute;inset:0}.chart-insight-hint{opacity:1;place-items:center;padding:.55rem .4rem;display:grid;transform:translateY(0)}.chart-insight .chart-detail{background:var(--green-soft);opacity:0;border-radius:12px;padding:.7rem .8rem;transform:translateY(6px)}.chart-insight.has-selection .chart-insight-hint{opacity:0;transform:translateY(-4px)}.chart-insight.has-selection .chart-detail{opacity:1;transform:translateY(0)}.chart-detail strong{margin-bottom:.35rem;font-size:.88rem;display:block}.chart-detail-grid{color:var(--muted);flex-wrap:wrap;align-items:baseline;gap:.45rem 1.25rem;font-size:.72rem;display:flex}.chart-detail-grid span{white-space:nowrap;align-items:baseline;gap:.35rem;min-width:0;display:inline-flex}.chart-detail-grid b{color:var(--ink);font-variant-numeric:tabular-nums;font-size:.82rem;transition:color .2s;display:inline}.month-pick-row{align-items:stretch;gap:.55rem;margin-top:.65rem;display:flex}.month-select{appearance:none;border:1px solid var(--line);background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%216a7a71' d='M1 1l5 5 5-5'/%3E%3C/svg%3E") no-repeat right .75rem center;min-width:0;font:inherit;color:var(--ink);border-radius:12px;flex:1;padding:.7rem 2rem .7rem .85rem;font-weight:600}.month-pick-row .btn{white-space:nowrap;flex-shrink:0}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.month-detail-title{align-items:center;gap:.45rem;min-width:0;display:flex}.month-tabs{grid-template-columns:repeat(3,1fr);gap:.45rem;margin-bottom:.85rem;display:grid}.month-tab{background:var(--green-soft);cursor:pointer;text-align:left;color:inherit;transition:transform .2s var(--ease), background .2s var(--ease), border-color .2s var(--ease), box-shadow .2s var(--ease);border:1px solid #0000;border-radius:12px;flex-direction:column;align-items:flex-start;gap:.15rem;padding:.55rem .5rem;display:flex}.month-tab strong{font-variant-numeric:tabular-nums;font-size:.9rem}.month-tab:hover{transform:translateY(-1px)}.month-tab:active{transform:scale(.98)}.month-tab.on{background:#fff;border-color:#1a5c4547;box-shadow:0 4px 14px #0f3d2e1a}.month-tab:focus{outline:none}.month-tab:focus-visible{box-shadow:0 0 0 3px #1a5c4547}.month-tab-panel{animation:fadeUp .32s var(--ease) both}.back-chip{background:var(--green-soft);color:var(--green-deep);width:var(--control-h);height:var(--control-h);border-radius:var(--radius-btn);cursor:pointer;transition:transform .2s var(--ease);border:0;flex-shrink:0;justify-content:center;align-items:center;font-size:1rem;font-weight:700;display:inline-flex}.back-chip:active{transform:scale(.94)}.refresh-btn.dark{background:var(--green-soft);color:var(--green-deep)}.month-detail-loading{color:var(--muted);align-items:center;gap:.55rem;padding:.75rem 0;font-size:.88rem;display:flex}.month-totals{grid-template-columns:repeat(3,1fr);gap:.5rem;margin-bottom:.75rem;display:grid}.month-totals>div{background:var(--green-soft);border-radius:12px;flex-direction:column;gap:.15rem;padding:.55rem .6rem;display:flex}.month-totals strong{font-size:.92rem}.month-cats{flex-wrap:wrap;gap:.4rem;margin-bottom:.85rem;display:flex}.cat-chip{border-radius:var(--radius-btn);color:var(--muted);pointer-events:none;-webkit-user-select:none;user-select:none;background:#eef3ef;align-items:center;gap:.35rem;padding:.28rem .55rem;font-size:.72rem;display:inline-flex}.cat-chip b{color:var(--ink);font-weight:650}.day-list{flex-direction:column;gap:.65rem;margin:0;padding:0;list-style:none;display:flex}.day-card{background:var(--bg);border:1px solid var(--line);animation:fadeUp .4s var(--ease) both;transition:transform .2s var(--ease), box-shadow .2s var(--ease);border-radius:14px;padding:.75rem .85rem}.day-card:hover{transform:translateY(-1px);box-shadow:0 6px 16px #0f3d2e0f}.day-card-head{justify-content:space-between;align-items:baseline;gap:.5rem;margin-bottom:.45rem;display:flex}.day-card-head strong{font-size:.88rem}.day-cats{flex-direction:column;gap:.28rem;margin:0;padding:0;list-style:none;display:flex}.day-cats li{color:var(--muted);justify-content:space-between;gap:.75rem;font-size:.82rem;display:flex}.day-cats li span:last-child{color:var(--ink);font-weight:650}.day-note{color:var(--muted);margin-top:.45rem;font-size:.78rem}.day-side{margin-top:.4rem;font-size:.8rem;font-weight:650}.day-side .muted{font-weight:500}.dot{border-radius:50%;width:7px;height:7px}.cat-name{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cat-val{font-size:.75rem;font-weight:700}.recent-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.recent-list li{border-bottom:1px solid var(--line);justify-content:space-between;gap:.75rem;padding:.55rem 0;display:flex}.recent-list li:last-child{border-bottom:0;padding-bottom:0}.recent-list li:first-child{padding-top:.15rem}.recent-top{align-items:baseline;gap:.4rem;display:flex}.recent-type{text-transform:capitalize;font-size:.82rem}.recent-list li>strong{white-space:nowrap;flex-shrink:0}.recent-note{color:var(--muted);-webkit-line-clamp:1;-webkit-box-orient:vertical;margin-top:.12rem;font-size:.72rem;display:-webkit-box;overflow:hidden}.pos{color:var(--green);font-size:.85rem}.neg{color:var(--ink);font-size:.85rem}.form{flex-direction:column;gap:.75rem;display:flex}.field{flex-direction:column;gap:.28rem;display:flex}.field-label{color:var(--muted);letter-spacing:.02em;font-size:.72rem;font-weight:650}.field-hint{color:var(--muted);font-size:.68rem}.field input,.field textarea{border:1px solid var(--line);background:var(--surface);width:100%;color:var(--ink);border-radius:11px;outline:none;padding:.7rem .8rem;transition:border-color .15s,box-shadow .15s}.field input:focus,.field textarea:focus{border-color:#1a5c4573;box-shadow:0 0 0 3px #1a5c451f}.field input:disabled,.field textarea:disabled{opacity:.65}.date-field{flex-direction:column;gap:.45rem;display:flex}.date-field-top{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.date-chips{gap:.3rem;display:inline-flex}.date-chip{background:var(--bg);color:var(--muted);cursor:pointer;border:0;border-radius:999px;padding:.28rem .55rem;font-size:.68rem;font-weight:700}.date-chip.on{background:var(--green-soft);color:var(--green-deep)}.date-picker-row{grid-template-columns:40px 1fr 40px;align-items:center;gap:.4rem;display:grid}.date-step{border:1px solid var(--line);background:var(--surface);height:48px;color:var(--ink);cursor:pointer;border-radius:12px;font-size:1.25rem;font-weight:600;line-height:1}.date-step:disabled,.date-chip:disabled{opacity:.5;cursor:not-allowed}.date-picker{border:1px solid var(--line);background:var(--surface);width:100%;min-height:48px;box-shadow:var(--shadow);cursor:pointer;text-align:left;color:inherit;font:inherit;border-radius:12px;align-items:center;padding:0 2.4rem 0 .9rem;display:flex;position:relative}.date-picker:disabled{opacity:.5;cursor:not-allowed}.date-display{pointer-events:none;font-size:.92rem;font-weight:650}.date-picker input[type=date]{opacity:0;pointer-events:none;border:0;width:1px;height:1px;margin:0;padding:0;position:absolute}.date-cal{color:var(--muted);pointer-events:none;display:inline-flex;position:absolute;top:50%;right:.75rem;transform:translateY(-50%)}.saving-overlay{z-index:1000;padding:1.25rem;padding-bottom:calc(1.25rem + env(safe-area-inset-bottom));-webkit-tap-highlight-color:transparent;background:#121c1785;place-items:center;display:grid;position:fixed;inset:0}.saving-card{text-align:center;width:min(300px,100%);animation:savePop .22s var(--ease) both;background:#fff;border-radius:18px;flex-direction:column;align-items:center;gap:.4rem;padding:1.4rem 1.2rem 1.25rem;display:flex;box-shadow:0 20px 48px #121c1747}@keyframes savePop{0%{opacity:0;transform:scale(.94)translateY(8px)}to{opacity:1;transform:none}}.saving-title{color:var(--ink);margin-top:.4rem;font-size:.95rem;font-weight:700}.saving-sub{color:var(--muted);max-width:22ch;font-size:.78rem;line-height:1.35}.load-hint{color:var(--muted);align-self:flex-start;align-items:center;gap:.5rem;margin-bottom:.15rem;font-size:.78rem;font-weight:650;display:inline-flex}.entry-mode{border-radius:12px;flex-direction:column;gap:.15rem;padding:.7rem .85rem;font-size:.78rem;line-height:1.35;display:flex}.entry-mode strong{font-size:.82rem}.entry-mode.loading{background:var(--bg);color:var(--muted);flex-direction:row;align-items:center;gap:.5rem}.entry-mode.edit{color:var(--green-deep);background:#eef6f1;border:1px solid #1a5c4524}.entry-mode.edit span{color:var(--muted)}.entry-mode.fresh{color:#5c4a2a;background:#f7f5f0;border:1px solid #7a53101f}.entry-mode.fresh span{color:var(--muted)}.is-dim{opacity:.55;transition:opacity .2s}.cat-grid{grid-template-columns:1fr 1fr;gap:.6rem;display:grid}.cat-field{flex-direction:column;gap:.28rem;display:flex}.cat-field-top{justify-content:space-between;align-items:center;gap:.35rem;min-height:1.1rem;display:flex}.cat-field input{border:1px solid var(--line);background:var(--surface);width:100%;color:var(--ink);border-radius:11px;outline:none;padding:.7rem .8rem;transition:border-color .15s,box-shadow .15s}.cat-field input:focus{border-color:#1a5c4573;box-shadow:0 0 0 3px #1a5c451f}.cat-field input:disabled{opacity:.65}.cat-field.is-pinned input{background:var(--green-soft);border-color:#1a5c4559}.pin-btn{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:.1rem .15rem;font-size:.95rem;line-height:1}.pin-btn.on{color:var(--green-deep)}.pin-btn:disabled{opacity:.5;cursor:not-allowed}.search-field{margin-bottom:.75rem;display:block}.search-field input{border:1px solid var(--line);background:var(--surface);width:100%;color:var(--ink);border-radius:11px;outline:none;padding:.65rem .8rem}.search-field input:focus{border-color:#1a5c4573;box-shadow:0 0 0 3px #1a5c451f}.note-hints{flex-wrap:wrap;gap:.35rem;margin-top:-.25rem;display:flex}.note-hint{border:1px solid var(--line);background:var(--bg);max-width:100%;color:var(--muted);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;border-radius:999px;padding:.32rem .55rem;font-size:.7rem;font-weight:600;overflow:hidden}.note-hint:active:not(:disabled){color:var(--green-deep);background:var(--green-soft)}.total-bar{background:var(--green-soft);border-radius:12px;justify-content:space-between;align-items:center;padding:.8rem .95rem;font-size:.9rem;display:flex}.total-bar strong{color:var(--green-deep);font-family:Fraunces,Georgia,serif;font-size:1.25rem}.btn{border-radius:var(--radius-btn);cursor:pointer;text-align:center;min-height:48px;transition:transform .15s var(--ease), background .15s ease, border-color .15s ease;border:0;justify-content:center;align-items:center;gap:.35rem;margin:0;padding:.75rem 1rem;font-weight:700;line-height:1.2;display:inline-flex}.btn:active:not(:disabled){transform:scale(.98)}.btn.primary{background:var(--green);color:#fff;box-shadow:0 8px 20px #1a5c4538}.btn.primary:disabled{opacity:.7;cursor:wait}.btn.primary:hover:not(:disabled){background:var(--green-deep)}.btn.ghost{background:var(--surface);border:1px solid var(--line);color:var(--ink);box-shadow:none;margin:0}.empty-state .btn.ghost,.error-text+.btn.ghost{margin-top:.75rem}.btn-loading{align-items:center;gap:.5rem;display:inline-flex}.spinner{border:2px solid #ffffff59;border-top-color:#fff;border-radius:50%;width:14px;height:14px;animation:.7s linear infinite spin}.spinner-lg{border-width:3px;border-color:#1a5c4533;border-top-color:var(--green);width:28px;height:28px}.spinner-ink{border-color:#1a5c4533;border-top-color:var(--green);width:14px;height:14px}@keyframes spin{to{transform:rotate(360deg)}}.status-banner{animation:fadeUp .3s var(--ease);border-radius:11px;padding:.7rem .85rem;font-size:.82rem;font-weight:650}.status-banner.ok{color:var(--ok);background:#e4f2ea}.status-banner.error{color:var(--danger);background:#f8e8e5}.empty-state{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);text-align:center;padding:1.5rem 1.1rem}.bottom-nav{width:min(440px,100%);height:var(--nav-h);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--line);padding:.3rem .4rem calc(.3rem + env(safe-area-inset-bottom));z-index:20;background:#ffffffe0;grid-template-columns:repeat(4,1fr);display:grid;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.nav-item{color:var(--muted);transition:background .22s var(--ease), color .22s var(--ease), transform .22s var(--ease);border-radius:11px;flex-direction:column;justify-content:center;align-items:center;gap:.12rem;font-size:.65rem;font-weight:650;display:flex}.nav-icon{transition:transform .25s var(--ease);line-height:1;display:inline-flex}.nav-icon svg{display:block}.nav-item:active .nav-icon{transform:scale(.9)}.nav-item.active{color:var(--green);background:var(--green-soft)}.nav-item.active .nav-icon{animation:navPop .35s var(--ease)}@keyframes navPop{0%{transform:scale(.85)}60%{transform:scale(1.12)}to{transform:scale(1)}}.budget-stats{grid-template-columns:repeat(3,1fr);gap:.5rem;margin-bottom:.75rem;display:grid}.budget-stats .kpi-label{color:var(--muted);margin-bottom:.15rem;font-size:.68rem;display:block}.budget-stats strong{font-size:.95rem}.budget-bar{background:#121c1714;border-radius:999px;height:8px;overflow:hidden}.budget-bar span{border-radius:inherit;height:100%;transition:width .35s var(--ease);background:linear-gradient(90deg,#1a5c45,#2d7a5c);display:block}.budget-bar.is-over span{background:linear-gradient(90deg,#b33b2e,#d4653a)}.budget-edit{flex-direction:column;gap:.4rem;display:flex}.budget-edit input{border:1px solid var(--line);background:var(--surface);width:100%;min-height:44px;color:var(--ink);border-radius:12px;padding:.65rem .85rem}.text-btn{color:var(--green);cursor:pointer;background:0 0;border:0;padding:.2rem .35rem;font-size:.78rem;font-weight:750}.quick-amounts{flex-direction:column;gap:.35rem;display:flex}.quick-amounts-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.68rem;font-weight:700}.quick-amounts-row{flex-wrap:wrap;gap:.35rem;display:flex}.quick-amt{border:1px solid var(--line);background:var(--surface);color:var(--green-deep);cursor:pointer;border-radius:999px;padding:.4rem .65rem;font-size:.78rem;font-weight:750}.quick-amt:active:not(:disabled){background:var(--green-soft)}.quick-amt:disabled{opacity:.5;cursor:not-allowed}.offline-banner{background:var(--offline-bg);border:1px solid var(--offline-border);color:var(--offline-ink);border-radius:12px;justify-content:space-between;align-items:center;gap:.75rem;margin:0 0 .85rem;padding:.65rem .8rem;font-size:.78rem;font-weight:650;display:flex}.offline-banner-text{flex-direction:column;gap:.15rem;min-width:0;display:flex}.offline-banner-sub{opacity:.85;font-size:.7rem;font-weight:500}.offline-sync-btn{background:var(--green);color:#fff;cursor:pointer;border:0;border-radius:999px;flex-shrink:0;padding:.4rem .75rem;font-size:.72rem;font-weight:750}.offline-sync-btn:disabled{opacity:.55;cursor:not-allowed}html[data-theme=dark] .bottom-nav{border-color:var(--line);background:#1a211ceb}html[data-theme=dark] .panel,html[data-theme=dark] .date-picker,html[data-theme=dark] .date-step,html[data-theme=dark] .confirm-card{background:var(--surface)}html[data-theme=dark] .btn.primary{color:#0f1411}html[data-theme=dark] .budget-bar{background:#e8efe91f}.skeleton{background:linear-gradient(90deg, var(--skeleton-a) 0%, var(--skeleton-b) 45%, var(--skeleton-a) 90%);background-size:200% 100%;border-radius:10px;animation:1.2s ease-in-out infinite shimmer}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.sk-line{height:12px;margin-bottom:.45rem}.sk-sm{width:28%}.sk-md{width:48%}.sk-lg{width:42%;height:22px}.sk-xl{width:62%;height:28px}.hero-skeleton{background:linear-gradient(145deg,#1a4a3a,#256650)!important}.hero-skeleton .skeleton{background:linear-gradient(90deg,#ffffff1f,#ffffff38,#ffffff1f) 0 0/200% 100%}.sk-card{border-radius:12px;height:72px}.sk-panel{border-radius:var(--radius);height:180px}.sk-panel-lg{height:220px}.sk-input{height:44px}.sk-btn{border-radius:12px;height:46px}@media (width>=720px){.app-shell{max-width:520px;padding-top:1.25rem}.cat-grid{grid-template-columns:repeat(4,1fr)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
