:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f4f4f1;--surface:#fff;--surface-2:#f8f8f6;--border:#e3e2dd;--text:#121211;--text-2:#52514e;--muted:#74736d;--brand-crimson:#700143;--brand-amber:#cfd78c;--accent:var(--brand-crimson);--accent-ink:var(--brand-amber);--accent-soft:#f1f3dc;--series-income:#2a78d6;--series-expense:#eb6834;--grid:#ebeae6;--danger:#c0392b;--danger-soft:#fdecea;--warning:#9a6200;--warning-soft:#fff4dc;--success:#1e7d34;--success-soft:#e7f5ea;--hermes:#6b4fd8;--hermes-soft:#efebfd;--shadow:0 1px 2px #0000000a, 0 4px 16px #0000000a;--radius:12px;--radius-sm:8px;--gutter:16px;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:15px;line-height:1.5}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#111110;--surface:#1a1a19;--surface-2:#222220;--border:#2f2f2c;--text:#f4f4f1;--text-2:#c3c2b7;--muted:#8f8e86;--accent:var(--brand-amber);--accent-ink:var(--brand-crimson);--accent-soft:#2c2e1f;--series-income:#3987e5;--series-expense:#d95926;--grid:#2a2a28;--danger:#e66767;--danger-soft:#3a1f1e;--warning:#e0a53a;--warning-soft:#33280f;--success:#5cc275;--success-soft:#16301c;--hermes:#a695f5;--hermes-soft:#2a2442;--shadow:none}}*,:before,:after{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);margin:0}body{-webkit-font-smoothing:antialiased;overflow-x:hidden}h1,h2,h3{margin:0;font-weight:650;line-height:1.25}h1{font-size:1.35rem}h2{font-size:1.05rem}a{color:var(--accent)}button{font:inherit}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.muted{color:var(--muted)}.money{font-variant-numeric:tabular-nums;white-space:nowrap}.app{min-height:100dvh}.sidebar{display:none}.topbar{z-index:10;padding:10px var(--gutter);background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.content{padding:var(--gutter);padding-bottom:calc(84px + env(safe-area-inset-bottom));max-width:1100px;margin:0 auto}.bottomnav{z-index:10;background:var(--surface);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom);grid-template-columns:repeat(5,1fr);display:grid;position:fixed;inset:auto 0 0}.bottomnav-link{color:var(--muted);flex-direction:column;align-items:center;gap:2px;padding:8px 2px 6px;font-size:.7rem;text-decoration:none;display:flex}.bottomnav-link.active{color:var(--accent)}.bottomnav-icon{position:relative}.dot-badge{background:var(--danger);color:#fff;text-align:center;border-radius:9px;min-width:18px;height:18px;padding:0 5px;font-size:.68rem;font-weight:700;line-height:18px;position:absolute;top:-6px;right:-10px}.brand{letter-spacing:-.01em;align-items:center;gap:10px;font-weight:700;display:flex}.brand-mark{background:var(--accent);width:28px;height:28px;color:var(--accent-ink);border-radius:8px;place-items:center;font-size:.9rem;display:grid}.brand-large{margin-bottom:8px;font-size:1.25rem}@media (width>=900px){.app{grid-template-columns:232px 1fr;display:grid}.topbar,.bottomnav{display:none}.sidebar{border-right:1px solid var(--border);background:var(--surface);flex-direction:column;gap:20px;height:100dvh;padding:20px 14px;display:flex;position:sticky;top:0}.sidebar nav{flex-direction:column;gap:2px;display:flex}.nav-link{border-radius:var(--radius-sm);color:var(--text-2);align-items:center;gap:10px;padding:9px 10px;font-weight:500;text-decoration:none;display:flex}.nav-link:hover{background:var(--surface-2)}.nav-link.active{background:var(--accent-soft);color:var(--accent)}.nav-badge{background:var(--danger);color:#fff;text-align:center;border-radius:11px;min-width:22px;margin-left:auto;padding:0 7px;font-size:.75rem;font-weight:700}.sidebar-footer{justify-content:space-between;align-items:center;margin-top:auto;padding:0 6px;display:flex}.content{padding:28px 32px 48px}}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.page-header .actions{flex-wrap:wrap;gap:8px;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.content>.card+.card{margin-top:12px}.card-title{justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:12px;display:flex}.grid{gap:12px;display:grid}@media (width>=700px){.grid-3{grid-template-columns:repeat(3,1fr)}.grid-2{grid-template-columns:3fr 2fr}}.stats{grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:12px;display:grid}.stat-net{grid-column:1/-1}@media (width>=700px){.stats{grid-template-columns:repeat(3,1fr)}.stat-net{grid-column:auto}}.stat{padding:14px 16px}.stat-label{color:var(--text-2);align-items:center;gap:8px;font-size:.85rem;display:flex}.stat-value{letter-spacing:-.01em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;margin-top:4px;font-size:1.3rem;font-weight:700}.swatch{border-radius:3px;flex:none;width:10px;height:10px}.swatch-income{background:var(--series-income)}.swatch-expense{background:var(--series-expense)}.btn{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);min-height:40px;color:var(--text);cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;gap:6px;padding:0 14px;font-weight:550;text-decoration:none;display:inline-flex}.btn:hover{background:var(--surface-2)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn-primary:hover{background:color-mix(in srgb, var(--accent) 88%, black)}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn-danger:hover{background:color-mix(in srgb, var(--danger) 88%, black)}.btn-ghost{background:0 0;border-color:#0000}.btn-small{min-height:32px;padding:0 10px;font-size:.85rem}.btn-block{width:100%;margin-top:8px}.btn-icon{border-radius:var(--radius-sm);width:40px;height:40px;color:var(--text-2);cursor:pointer;background:0 0;border:0;place-items:center;display:inline-grid}.btn-icon:hover{background:var(--surface-2);color:var(--text)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.field{flex-direction:column;gap:4px;margin-bottom:12px;display:flex}.field label{color:var(--text-2);font-size:.85rem;font-weight:550}input,select,textarea{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);width:100%;min-height:42px;color:var(--text);font:inherit;padding:8px 12px;font-size:16px}textarea{resize:vertical;min-height:72px}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.field-invalid input,.field-invalid select,.field-invalid textarea{border-color:var(--danger)}.field-error,.form-error{color:var(--danger);margin:0;font-size:.85rem}.field-hint{color:var(--muted);margin:0;font-size:.8rem}.form-row{gap:0 12px;display:grid}@media (width>=560px){.form-row{grid-template-columns:1fr 1fr}}.input-code{letter-spacing:.4em;text-align:center;font-variant-numeric:tabular-nums;font-size:1.5rem}.segmented{border-radius:var(--radius-sm);background:var(--surface-2);border:1px solid var(--border);grid-auto-columns:1fr;grid-auto-flow:column;gap:4px;padding:4px;display:grid}.segmented button{min-height:36px;color:var(--text-2);cursor:pointer;background:0 0;border:0;border-radius:6px;font-weight:550}.segmented button[aria-pressed=true]{background:var(--surface);color:var(--text);box-shadow:0 1px 2px #00000014}.check{cursor:pointer;align-items:center;gap:8px;display:inline-flex}.check input{width:20px;height:20px;min-height:0;accent-color:var(--accent)}.banner{border-radius:var(--radius);justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;padding:12px 14px;font-size:.92rem;display:flex}.banner-error{background:var(--danger-soft);color:var(--danger)}.banner-warning{background:var(--warning-soft);color:var(--warning)}.banner-warning a,.banner-warning strong{color:inherit}.banner-success{background:var(--success-soft);color:var(--success)}.badge{letter-spacing:.01em;vertical-align:middle;border-radius:999px;padding:1px 8px;font-size:.72rem;font-weight:650;display:inline-block}.badge-hermes{background:var(--hermes-soft);color:var(--hermes)}.badge-manual{background:var(--surface-2);color:var(--muted);border:1px solid var(--border)}.badge-inactive{background:var(--surface-2);color:var(--muted);border:1px dashed var(--border)}.badge-pending{background:var(--warning-soft);color:var(--warning)}.trx-list{margin:0;padding:0;list-style:none}.trx-item{border-top:1px solid var(--border);grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:12px 0;display:grid}.trx-item:first-child{border-top:0}.trx-icon{border-radius:10px;place-items:center;width:36px;height:36px;font-size:1rem;font-weight:700;display:grid}.trx-icon-income{background:color-mix(in srgb, var(--series-income) 14%, var(--surface));color:var(--series-income)}.trx-icon-expense{background:color-mix(in srgb, var(--series-expense) 14%, var(--surface));color:var(--series-expense)}.trx-icon-transfer{background:var(--surface-2);color:var(--text-2)}.trx-main{min-width:0}.trx-title{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.trx-meta{color:var(--muted);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;font-size:.82rem;display:-webkit-box;overflow:hidden}.trx-side{flex-direction:column;align-items:flex-end;gap:2px;display:flex}.trx-amount{font-weight:650}.trx-amount-income{color:var(--text)}.trx-amount-transfer{color:var(--text-2)}.trx-actions{gap:2px;display:flex}.trx-item-selectable{grid-template-columns:auto auto 1fr auto}.filters-toggle{margin-bottom:12px}.filters-toggle>summary{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer;align-items:center;gap:6px;min-height:36px;padding:0 12px;font-weight:550;list-style:none;display:inline-flex}.filters-toggle>summary::-webkit-details-marker{display:none}.filters-toggle[open]>summary{margin-bottom:8px}.filters-toggle .filters{margin-bottom:0}.filters{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px;display:grid}.filters .field{margin:0}.filters .span-2{grid-column:1/-1}@media (width>=900px){.filters{grid-template-columns:repeat(6,1fr)}.filters .span-2{grid-column:span 2}}.tabs{border-bottom:1px solid var(--border);gap:4px;margin-bottom:12px;display:flex}.tabs button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;padding:8px 12px;font-weight:600}.tabs button[aria-selected=true]{color:var(--text);border-bottom-color:var(--accent)}.pager{justify-content:space-between;align-items:center;gap:8px;margin-top:12px;display:flex}.month-switch{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);align-items:center;gap:4px;padding:2px;display:inline-flex}.month-switch span{text-align:center;min-width:128px;font-weight:600}.cat-bars{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.cat-row-head{justify-content:space-between;gap:8px;font-size:.9rem;display:flex}.cat-row-head .pct{color:var(--muted);font-variant-numeric:tabular-nums}.cat-track{background:var(--surface-2);border-radius:0 4px 4px 0;height:10px;margin-top:4px}.cat-fill{background:var(--series-expense);border-radius:0 4px 4px 0;min-width:2px;height:100%}.chart{width:100%;height:240px}.legend{color:var(--text-2);gap:16px;font-size:.85rem;display:flex}.legend span{align-items:center;gap:6px;display:inline-flex}.chart-tooltip{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);box-shadow:var(--shadow);padding:8px 10px;font-size:.85rem}.chart-tooltip p{align-items:center;gap:6px;margin:0;display:flex}.chart-tooltip .tt-title{margin-bottom:4px;font-weight:650}.md-list{margin:0;padding:0;list-style:none}.md-item{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:8px;padding:10px 0;display:flex}.md-item:first-child{border-top:0}.md-item-inactive .md-name{color:var(--muted)}.md-name{align-items:center;gap:8px;min-width:0;font-weight:550;display:flex}.md-actions{flex:none;gap:4px;display:flex}.inline-form{flex-wrap:wrap;align-items:flex-start;gap:8px;display:flex}.inline-form>input{flex:180px}.inline-form>select{flex:0 150px}.modal-backdrop{z-index:50;background:#0006;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border-radius:16px 16px 0 0;flex-direction:column;width:100%;max-height:100dvh;display:flex}.modal-header,.modal-footer{padding:12px var(--gutter);justify-content:space-between;align-items:center;gap:8px;display:flex}.modal-header{border-bottom:1px solid var(--border)}.modal-footer{border-top:1px solid var(--border);padding-bottom:calc(12px + env(safe-area-inset-bottom));justify-content:flex-end}.modal-body{padding:var(--gutter);overflow-y:auto}@media (width>=640px){.modal-backdrop{align-items:center}.modal{border-radius:16px;max-width:560px;max-height:90dvh}}.empty{text-align:center;color:var(--muted);padding:28px 12px}.empty-title{color:var(--text-2);margin:0 0 4px;font-weight:600}.spinner-wrap{place-items:center;padding:32px;display:grid}.spinner-full{min-height:100dvh}.spinner{border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:28px;height:28px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:3s}}.dup-list{margin:8px 0 0;padding-left:18px}.login-page{min-height:100dvh;padding:var(--gutter);place-items:center;display:grid}.login-card{background:var(--surface);border:1px solid var(--border);width:100%;max-width:380px;box-shadow:var(--shadow);border-radius:16px;padding:28px 24px}.btn[aria-disabled=true]{opacity:.55;pointer-events:none}
