:root{--color-primary:#0e5563;--color-primary-900:#08333b;--color-accent:#10b981;--color-on-accent:#07432f;--color-canvas:#f6f4ef;--color-surface:#fff;--color-surface-2:#e8ecea;--color-field:#f1efe9;--color-text:#232a2e;--color-text-muted:#5b6770;--color-border:#dfe3e1;--color-error:#c2453d;--color-brand-sun:#edb22a;--color-on-sun:#232a2e;--font-display:"Plus Jakarta Sans", system-ui, sans-serif;--font-body:"Inter", system-ui, sans-serif;--radius-md:12px;--radius-lg:16px;--shadow-sm:0 1px 2px #10181c0f;--shadow-md:0 8px 28px #10181c1a;--ease-out:cubic-bezier(.23, 1, .32, 1)}:root[data-theme=dark]{--color-primary:#2c8294;--color-primary-900:#6fb4bc;--color-accent:#2bc290;--color-on-accent:#06321f;--color-canvas:#14181a;--color-surface:#1d2327;--color-surface-2:#262d31;--color-field:#272f34;--color-text:#e8ecea;--color-text-muted:#9ba5a3;--color-border:#333c40;--color-error:#e07a72;--color-brand-sun:#f4c04a;--color-on-sun:#232a2e;--shadow-sm:0 1px 2px #0006;--shadow-md:0 8px 28px #00000080}*{box-sizing:border-box}body,.card,.account{transition:background-color .22s var(--ease-out), border-color .22s var(--ease-out), color .22s var(--ease-out)}html,body,#root{height:100%}body{font-family:var(--font-body);background:var(--color-canvas);color:var(--color-text);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;margin:0}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.01em;font-weight:600}h2{margin:0 0 .75rem;font-size:1.05rem}h3{color:var(--color-text-muted);font-size:.9rem;font-family:var(--font-body);margin:.25rem 0 0}label{color:var(--color-text-muted);margin-bottom:.35rem;font-size:.85rem;font-weight:500;display:block}.muted{color:var(--color-text-muted)}.hint{color:var(--color-text-muted);margin-top:.35rem;font-size:.78rem;display:block}.stack{flex-direction:column;gap:.85rem;display:flex}.checkbox{cursor:pointer;align-items:center;gap:.5rem;font-size:.9rem;display:flex}.checkbox input{cursor:pointer;width:1rem;height:1rem}.account__values{flex-direction:column;align-items:flex-end;gap:.15rem;display:flex}.account__upcoming{font-size:.75rem}.amount--neg{color:var(--color-error)}.modal-overlay{z-index:50;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0000008c;justify-content:center;align-items:center;padding:1.5rem;display:flex;position:fixed;inset:0}.modal{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);width:100%;max-width:30rem;padding:1.5rem;box-shadow:0 20px 60px #00000059}.modal__title{margin:0 0 .75rem}.modal__actions{justify-content:flex-end;gap:.6rem;margin-top:1.1rem;display:flex}.btn--danger{background:var(--color-error);color:#fff}.btn--danger:disabled{opacity:.5}.codes{grid-template-columns:repeat(2,1fr);gap:.4rem .75rem;margin:0;padding:0;list-style:none;display:grid}.codes__item{letter-spacing:.04em;text-align:center;background:var(--color-canvas);border-radius:var(--radius-md);border:1px solid #0000;padding:.4rem .5rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.95rem}.codes__item--used{color:var(--color-error);border-color:var(--color-error);text-decoration:line-through}.history__head{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.85rem;display:flex}.history__head h2{margin:0}.select--inline{width:auto;min-width:9rem}.link-btn{font:inherit;color:var(--color-primary);cursor:pointer;background:0 0;border:none;padding:0;font-size:.82rem;font-weight:600}.link-btn--danger{color:var(--color-error)}.row{align-items:stretch;gap:.5rem;margin-top:.5rem;display:flex}.row .input{flex:1}.row .badge{white-space:nowrap;align-self:center}.btn{border-radius:var(--radius-md);background:var(--color-primary);color:#fff;cursor:pointer;transition:transform .16s var(--ease-out), background-color .16s var(--ease-out), opacity .16s var(--ease-out);border:none;justify-content:center;align-items:center;gap:.5rem;padding:.75rem 1.1rem;font-size:1rem;font-weight:600;display:inline-flex}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn--accent{background:var(--color-accent);color:var(--color-on-accent)}.btn--ghost{color:var(--color-primary);background:0 0;padding:.5rem .75rem}.input,.select{width:100%;color:var(--color-text);background:var(--color-field);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:border-color .16s var(--ease-out), box-shadow .16s var(--ease-out), background-color .22s var(--ease-out);padding:.7rem .85rem;font-family:inherit;font-size:1rem}.input:focus,.select:focus{border-color:var(--color-accent);outline:none;box-shadow:0 0 0 3px #10b9812e}.textarea{resize:vertical;field-sizing:content;min-height:4.5rem;max-height:min(45vh,20rem);line-height:1.5;display:block}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:1.25rem}.auth{place-items:center;min-height:100%;padding:1.5rem;display:grid}.auth__card{width:100%;max-width:380px}.auth__title{margin:0;font-size:1.75rem}.auth__subtitle{color:var(--color-text-muted);margin:.25rem 0 1.25rem}.auth__switch{text-align:center;margin:1rem 0 0;font-size:.9rem}.code-input{text-align:center;letter-spacing:.25em;font-variant-numeric:tabular-nums;font-size:1.5rem;font-weight:600}.app{max-width:880px;margin:0 auto;padding:1.25rem}.app__header{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.25rem;display:flex}.app__brand{margin:0;font-size:1.4rem}.app__actions{align-items:center;gap:.5rem;display:flex}.theme-toggle{border-radius:var(--radius-md);background:var(--color-surface);border:1px solid var(--color-border);width:40px;height:40px;color:var(--color-text-muted);cursor:pointer;box-shadow:var(--shadow-sm);transition:transform .16s var(--ease-out), background-color .16s var(--ease-out), color .16s var(--ease-out), border-color .16s var(--ease-out);justify-content:center;align-items:center;padding:0;display:inline-flex}.theme-toggle:active{transform:scale(.94)}.auth__toggle{z-index:10;position:fixed;top:.9rem;right:.9rem}.summary{margin-bottom:1rem}.summary__head{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.summary__head h2{margin:0}.month-nav{align-items:center;gap:.25rem;display:flex}.month-nav__label{text-align:center;min-width:9.5rem;font-size:.92rem;font-weight:600}.month-nav__btn{width:32px;height:32px;color:var(--color-text-muted);cursor:pointer;transition:transform .16s var(--ease-out), color .16s var(--ease-out), background-color .16s var(--ease-out);background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;padding:0;display:inline-flex}.month-nav__btn:hover:not(:disabled){color:var(--color-primary);background:var(--color-field)}.month-nav__btn:active:not(:disabled){transform:scale(.94)}.month-nav__btn:disabled{opacity:.35;cursor:not-allowed}.summary__stats{grid-template-columns:repeat(2,1fr);gap:.75rem;margin-bottom:1.25rem;display:grid}@media (width>=720px){.summary__stats{grid-template-columns:repeat(4,1fr)}}.stat{background:var(--color-canvas);border-radius:var(--radius-md);flex-direction:column;gap:.25rem;padding:.85rem .9rem;display:flex}.stat--balance{grid-column:1/-1}@media (width>=720px){.stat--balance{grid-column:auto}}.stat__label{color:var(--color-text-muted);font-size:.78rem}.stat__value{font-family:var(--font-display);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:1.15rem}.stat__value--in{color:var(--color-accent)}.stat__value--out{color:var(--color-error)}.summary__cats h3{margin:0 0 .75rem}.bars{flex-direction:column;gap:.7rem;margin:0;padding:0;list-style:none;display:flex}.bar__head{justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:.3rem;font-size:.88rem;display:flex}.bar__name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.bar__value{font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--color-text-muted)}.bar__track{background:var(--color-surface-2);border-radius:999px;height:8px;overflow:hidden}.bar__fill{background:var(--color-primary);border-radius:999px;height:100%}.grid{grid-template-columns:1fr;gap:1rem;display:grid}@media (width>=720px){.grid{grid-template-columns:1fr 1fr;align-items:start}}.accounts{flex-direction:column;gap:.5rem;margin:0 0 1rem;padding:0;list-style:none;display:flex}.account{background:var(--color-canvas);border-radius:var(--radius-md);justify-content:space-between;align-items:center;padding:.75rem .9rem;display:flex}.history{margin-top:1rem}.txs{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.tx{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;gap:1rem;padding:.7rem 0;display:flex}.tx:last-child{border-bottom:none}.tx__main{flex-direction:column;gap:.15rem;min-width:0;display:flex}.tx__desc{font-weight:500}.tx__meta{font-size:.8rem}.tx__amount{font-variant-numeric:tabular-nums;white-space:nowrap}.tx__amount--in{color:var(--color-accent)}.tx__right{align-items:center;gap:.5rem;display:flex}.tx__del{width:32px;height:32px;color:var(--color-text-muted);cursor:pointer;transition:transform .16s var(--ease-out), color .16s var(--ease-out), background-color .16s var(--ease-out);background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;padding:0;display:inline-flex}.tx__del:hover{color:var(--color-error);background:var(--color-field)}.tx__del:active{transform:scale(.94)}.cats{flex-direction:column;margin:0 0 1rem;padding:0;list-style:none;display:flex}.cat{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;gap:1rem;padding:.6rem 0;display:flex}.cat:last-child{border-bottom:none}.cat__main{align-items:center;gap:.6rem;min-width:0;display:flex}.cat__actions{align-items:center;gap:.25rem;display:flex}.archived{border-top:1px solid var(--color-border);margin-top:1rem;padding-top:.75rem}.archived .cats{margin-bottom:0}.badge{border-radius:var(--radius-md);background:var(--color-surface-2);color:var(--color-text-muted);padding:.1rem .5rem;font-size:.72rem;font-weight:600}.badge--in{color:var(--color-accent);background:#10b98126}.segmented{background:var(--color-surface-2);border-radius:var(--radius-md);gap:3px;padding:3px;display:flex}.seg{font:600 .95rem var(--font-body);color:var(--color-text-muted);cursor:pointer;transition:background-color .16s var(--ease-out), color .16s var(--ease-out);background:0 0;border:none;border-radius:9px;flex:1;padding:.5rem .75rem}.seg--on{background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-sm)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
