@import "https://fonts.googleapis.com/css2?family=Volkhov:ital,wght@0,400;0,700;1,400;1,700&family=Roboto:wght@300;400;500;700&family=Clicker+Script&display=swap";:root{--hvv-blue:#3bafda;--hvv-blue-deep:#2792bb;--hvv-blue-soft:#8ed1e8;--hvv-blue-tint:#eaf6fb;--hvv-mint:#c0e8e8;--hvv-mint-light:#e0f2f2;--hvv-mint-pale:#f3fafa;--hvv-cream:#fbf7ee;--hvv-sand:#f0e8d6;--hvv-amber:#d9a443;--hvv-ink:#2a2f5a;--hvv-ink-muted:#555;--hvv-gray:#999;--hvv-gray-light:#bababa;--hvv-line:#e4e4e3;--hvv-surface:#fff;--hvv-surface-alt:#f8f8f8;--hvv-surface-dim:#e8e8e8;--hvv-success:#4a8c5a;--hvv-success-bg:#e6f1e9;--hvv-danger:#c44545;--hvv-danger-bg:#fbecec;--hvv-warning:#d9a443;--hvv-warning-bg:#fbf3e0;--hvv-info:var(--hvv-blue);--hvv-info-bg:var(--hvv-blue-tint);--fg-1:#333;--fg-2:var(--hvv-ink-muted);--fg-3:var(--hvv-gray);--fg-muted:var(--hvv-gray-light);--fg-on-blue:#fff;--bg-page:#fff;--bg-surface:#fff;--bg-surface-alt:var(--hvv-surface-alt);--bg-brand:var(--hvv-blue);--bg-brand-soft:var(--hvv-blue-tint);--border-subtle:var(--hvv-line);--border-strong:#ccc;--border-brand:var(--hvv-blue);--focus-ring:0 0 0 3px #3bafda47;--font-display:"Volkhov", Georgia, "Times New Roman", serif;--font-body:"Roboto", system-ui, -apple-system, "Segoe UI", sans-serif;--font-script:"Clicker Script", "Brush Script MT", cursive;--font-mono:ui-monospace, "SF Mono", Consolas, monospace;--text-xs:12px;--text-sm:14px;--text-base:16px;--text-md:18px;--text-lg:22px;--text-xl:28px;--text-2xl:34px;--text-3xl:42px;--text-4xl:54px;--text-5xl:72px;--lh-tight:1.2;--lh-snug:1.4;--lh-normal:1.7;--lh-loose:1.85;--tracking-tight:-.01em;--tracking-normal:0;--tracking-wide:.04em;--tracking-caps:.08em;--space-0:0;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--space-20:80px;--space-24:96px;--radius-sm:2px;--radius-md:4px;--radius-lg:6px;--radius-xl:10px;--radius-pill:9999px;--shadow-xs:0 1px 2px #0000000a;--shadow-sm:0 2px 6px #0000000f;--shadow-md:0 8px 18px #00000014;--shadow-lg:0 18px 36px #0000001a;--shadow-glow:0 8px 24px #3bafda38;--content-max:1140px;--reading-max:680px}*,:before,:after{box-sizing:border-box}body{font-family:var(--font-body);font-size:var(--text-base);line-height:var(--lh-normal);color:var(--fg-2);background:var(--bg-page);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);color:var(--fg-1);text-wrap:balance;margin:0 0 18px;font-weight:400;line-height:1.5em}h1{font-size:var(--text-4xl);font-weight:700}h2{font-size:var(--text-3xl);font-weight:700}h3{font-size:var(--text-2xl)}h4{font-size:var(--text-xl)}h5{font-size:var(--text-lg)}h6{font-size:var(--text-base);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--fg-2);font-weight:700}p{text-wrap:pretty;margin:0 0 16px}a{color:var(--hvv-blue);text-decoration:none;transition:opacity .15s,color .15s}a:hover{color:var(--hvv-blue-deep);opacity:.9}small{font-size:var(--text-sm);color:var(--fg-3)}code,pre,kbd,samp{font-family:var(--font-mono);font-size:.92em}code{background:var(--hvv-blue-tint);color:var(--hvv-blue-deep);border-radius:var(--radius-sm);padding:.15em .4em}hr{border:0;border-top:1px solid var(--border-subtle);margin:32px 0}::selection{background:var(--hvv-blue);color:#fff}:focus-visible{box-shadow:var(--focus-ring);border-radius:var(--radius-md);outline:none}#root{flex-direction:column;min-height:100vh;display:flex}.eyebrow{font-family:var(--font-body);font-size:var(--text-sm);text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--hvv-blue);margin:0 0 12px;font-weight:700}.lede{font-size:var(--text-lg);line-height:var(--lh-snug);color:var(--fg-2);font-weight:300}.script-accent{font-family:var(--font-script);color:var(--hvv-blue);font-size:1.4em;font-weight:400;line-height:1}.scripture{font-family:var(--font-display);font-style:italic;font-weight:400;font-size:var(--text-lg);color:var(--fg-3);border-left:3px solid var(--hvv-blue);max-width:var(--reading-max);margin:30px 0;padding:4px 0 4px 30px;line-height:1.7}.scripture cite{font-style:normal;font-weight:700;font-size:var(--text-sm);color:var(--fg-3);margin-top:8px;display:block}.auth-page{background:var(--hvv-mint-pale);justify-content:center;align-items:center;min-height:100svh;padding:24px;display:flex}.auth-card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-xl);width:100%;max-width:400px;box-shadow:var(--shadow-md);padding:40px}.auth-lang-switcher{justify-content:flex-end;margin-bottom:16px;display:flex}.auth-brand{border-bottom:1px solid var(--border-subtle);align-items:center;gap:12px;margin-bottom:28px;padding-bottom:20px;display:flex}.auth-brand img{width:40px;height:40px}.auth-brand-text{flex-direction:column;line-height:1.2;display:flex}.auth-brand-name{font-family:var(--font-display);color:var(--fg-1);font-size:16px;font-weight:700}.auth-brand-sub{font-family:var(--font-display);color:var(--hvv-blue);font-size:13px;font-style:italic}.auth-title{font-family:var(--font-display);color:var(--fg-1);margin:0 0 4px;font-size:24px;font-weight:700}.auth-subtitle{font-family:var(--font-display);color:var(--fg-2);margin:0 0 24px;font-size:18px;font-weight:400}.auth-description{color:var(--fg-2);margin:-16px 0 24px;font-size:15px}.auth-form{flex-direction:column;gap:16px;display:flex}.form-group input{border:1px solid var(--border-subtle);border-radius:var(--radius-lg);font-size:16px;font-family:var(--font-body);background:var(--bg-surface);color:var(--fg-1);outline:none;padding:10px 14px;transition:border-color .15s,box-shadow .15s}.form-group input:focus{border-color:var(--hvv-blue);box-shadow:var(--focus-ring)}.form-group input:disabled{opacity:.6;cursor:not-allowed}.totp-input{text-align:center;letter-spacing:.4em;font-variant-numeric:tabular-nums;font-size:24px!important}.auth-error{background:var(--hvv-danger-bg);border-radius:var(--radius-lg);color:var(--hvv-danger);font-size:14px;font-family:var(--font-body);border:1px solid #c4454559;padding:10px 14px}.auth-button{background:var(--hvv-blue);color:var(--fg-on-blue);border-radius:var(--radius-lg);font-size:15px;font-weight:500;font-family:var(--font-body);cursor:pointer;border:none;padding:11px 20px;transition:background .15s,transform .1s}.auth-button:disabled{opacity:.5;cursor:not-allowed}.auth-button:not(:disabled):hover{background:var(--hvv-blue-deep)}.auth-button:not(:disabled):active{transform:scale(.98)}.auth-button--secondary{border:1px solid var(--border-subtle);color:var(--fg-1);background:0 0}.auth-button--secondary:not(:disabled):hover{background:var(--bg-surface-alt)}.auth-link-button{color:var(--hvv-blue);font-size:14px;font-family:var(--font-body);cursor:pointer;text-align:center;background:0 0;border:none;padding:4px 0;text-decoration:underline;transition:color .15s}.auth-link-button:disabled{opacity:.5;cursor:not-allowed}.auth-link-button:not(:disabled):hover{color:var(--hvv-blue-deep)}.app-shell{background:var(--bg-page);grid-template-columns:240px 1fr;min-height:100vh;display:grid}.app-sidebar{background:var(--bg-surface);border-right:1px solid var(--border-subtle);flex-direction:column;height:100vh;padding:20px 0;display:flex;position:sticky;top:0;overflow-y:auto}.app-sidebar .brand{border-bottom:1px solid var(--border-subtle);align-items:center;gap:10px;margin-bottom:8px;padding:0 16px 18px;display:flex}.app-sidebar .brand img{flex-shrink:0;width:32px;height:32px}.brand-text{flex-direction:column;flex:1;min-width:0;line-height:1.15;display:flex}.brand-name{font-family:var(--font-display);color:var(--fg-1);white-space:nowrap;margin:0;font-size:14px;font-weight:700}.brand-sub{font-family:var(--font-display);color:var(--hvv-blue);margin-top:2px;font-size:12px;font-style:italic}.nav-section{font-family:var(--font-body);text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--fg-3);padding:14px 12px 4px;font-size:11px;font-weight:700}.nav-link{border-radius:var(--radius-md);font-family:var(--font-body);color:var(--fg-2);cursor:pointer;text-align:left;box-sizing:border-box;background:0 0;border:none;align-items:center;gap:10px;width:calc(100% - 16px);margin:0 8px;padding:9px 14px;font-size:14px;text-decoration:none;transition:background .15s,color .15s;display:flex}.nav-link:hover{background:var(--hvv-surface-alt);color:var(--fg-1)}.nav-link.active{background:var(--hvv-blue-tint);color:var(--hvv-blue-deep);font-weight:500}.nav-icon{flex-shrink:0;width:18px;height:18px}.sidebar-footer{border-top:1px solid var(--border-subtle);margin-top:auto;padding-top:8px}.app-main{min-width:0;padding:28px 36px}.page-header{border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:flex-end;margin-bottom:24px;padding-bottom:16px;display:flex}.page-header h1,.page-header h2{font-family:var(--font-display);color:var(--fg-1);margin:0;font-size:28px;font-weight:700}.page-header .subtitle{font-family:var(--font-display);color:var(--hvv-blue);margin-top:2px;font-size:14px;font-style:italic}.tile{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:18px 20px}.tile.accent{border-top:3px solid var(--hvv-blue)}.tile-label{font-family:var(--font-body);text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--hvv-blue);margin-bottom:6px;font-size:11px;font-weight:700}.tile-value{font-family:var(--font-display);color:var(--fg-1);font-variant-numeric:tabular-nums;font-size:26px;font-weight:700}.tile-delta{color:var(--fg-3);margin-top:4px;font-size:12px}.filter-bar{background:var(--hvv-blue-tint);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);font-family:var(--font-body);flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;padding:12px 16px;font-size:13px;display:flex}.filter-bar input,.filter-bar select{font:inherit;border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:var(--bg-surface);color:var(--fg-1);padding:6px 10px}.admin-section{width:100%;padding:0}.admin-section h2{font-family:var(--font-display);color:var(--fg-1);margin-bottom:20px;font-size:1.6rem}.admin-filter{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:20px;display:flex}.admin-filter label{color:var(--fg-2);font-size:.9rem;font-weight:600}.admin-filter select,.admin-filter input{border:1px solid var(--border-strong);border-radius:var(--radius-md);font-size:.9rem;font-family:var(--font-body);color:var(--fg-1);background:var(--bg-surface);padding:6px 10px}.admin-filter select:focus,.admin-filter input:focus{border-color:var(--hvv-blue);box-shadow:var(--focus-ring);outline:none}.admin-form{background:var(--bg-surface-alt);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);margin-bottom:24px;padding:16px 20px}.admin-form h3{font-family:var(--font-display);color:var(--fg-1);margin:0 0 12px;font-size:14px;font-weight:700}.admin-form-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.admin-form-row input,.admin-form-row select{border:1px solid var(--border-strong);border-radius:var(--radius-md);font-size:.9rem;font-family:var(--font-body);min-width:120px;color:var(--fg-1);background:var(--bg-surface);flex:1;padding:7px 10px}.admin-form-row input:focus,.admin-form-row select:focus{border-color:var(--hvv-blue);box-shadow:var(--focus-ring);outline:none}.admin-form-row button{background:var(--hvv-blue);color:var(--fg-on-blue);border-radius:var(--radius-md);cursor:pointer;font-size:.9rem;font-family:var(--font-body);white-space:nowrap;border:none;padding:7px 16px;transition:background .15s}.admin-form-row button:hover:not(:disabled){background:var(--hvv-blue-deep)}.admin-form-row button:disabled{opacity:.6;cursor:not-allowed}.admin-form-error{color:var(--hvv-danger);margin-bottom:8px;font-size:.85rem}.admin-table{border-collapse:collapse;width:100%;font-family:var(--font-body);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);font-size:.9rem;overflow:hidden}.admin-table th{background:var(--bg-surface-alt);text-align:left;border-bottom:1px solid var(--border-subtle);text-transform:uppercase;letter-spacing:.06em;color:var(--fg-3);padding:10px 12px;font-size:11px;font-weight:700}.admin-table td{border-bottom:1px solid var(--border-subtle);vertical-align:middle;color:var(--fg-2);padding:11px 12px}.admin-table tr:last-child td{border-bottom:none}.admin-table tr:hover td{background:var(--hvv-blue-tint)}.admin-table tr.row-inactive td{color:var(--fg-3);font-style:italic}.admin-table td input,.admin-table td select{border:1px solid var(--border-strong);border-radius:var(--radius-md);font-size:.9rem;font-family:var(--font-body);box-sizing:border-box;width:100%;color:var(--fg-1);background:var(--bg-surface);padding:5px 8px}.admin-table td button{border-radius:var(--radius-md);cursor:pointer;font-size:.85rem;font-family:var(--font-body);background:var(--hvv-surface-dim);color:var(--fg-2);border:none;margin-right:6px;padding:5px 10px;transition:background .15s}.admin-table td button:first-child{background:var(--hvv-success);color:#fff}.admin-table td button:hover{opacity:.85}.admin-empty{color:var(--fg-3);text-align:center;border:1px dashed var(--border-subtle);border-radius:var(--radius-lg);padding:20px;font-style:italic}.admin-empty--rich{background:var(--hvv-blue-tint);border:1px dashed #3bafda73;flex-direction:column;align-items:center;gap:10px;padding:28px 20px;font-style:normal;display:flex}.admin-empty--rich .empty-icon{width:36px;height:36px;color:var(--hvv-blue);opacity:.85}.admin-empty--rich .empty-title{font-family:var(--font-display);color:var(--fg-1);margin:0;font-size:15px;font-weight:700}.admin-empty--rich .empty-sub{color:var(--fg-2);margin:0;font-size:13px}.admin-empty--rich .btn-primary{margin-top:4px}.admin-loading{color:var(--fg-3);padding:24px;font-style:italic}.admin-error{color:var(--hvv-danger);background:var(--hvv-danger-bg);border-radius:var(--radius-md);border:1px solid #c445454d;margin:16px 0;padding:16px;font-size:.9rem}.admin-fy-form{align-items:center;gap:10px;margin-bottom:16px;display:flex}.admin-fy-form input{border:1px solid var(--border-strong);border-radius:var(--radius-md);font-size:.9rem;font-family:var(--font-body);width:100px;color:var(--fg-1);padding:7px 10px}.admin-fy-form button{background:var(--hvv-blue);color:var(--fg-on-blue);border-radius:var(--radius-md);cursor:pointer;font-size:.9rem;font-family:var(--font-body);border:none;padding:7px 14px;transition:background .15s}.admin-fy-form button:hover:not(:disabled){background:var(--hvv-blue-deep)}.dashboard-balances{margin:16px 0}.dashboard-balances h3{font-family:var(--font-display);color:var(--fg-2);margin-bottom:12px;font-size:1rem}.balance-grid{flex-wrap:wrap;gap:12px;display:flex}.balance-card-mini{background:var(--hvv-blue-tint);border-radius:var(--radius-lg);border:1px solid #3bafda40;min-width:150px;padding:12px 16px}.balance-card-name{color:var(--fg-3);margin-bottom:4px;font-size:.8rem}.balance-card-amount{font-family:var(--font-display);color:var(--hvv-ink);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:1.25rem;font-weight:700}.balance-card-amount.negative{color:var(--hvv-danger)}.ym-status{border-radius:var(--radius-pill);text-transform:uppercase;letter-spacing:.04em;padding:3px 10px;font-size:11px;font-weight:600;line-height:1.45;display:inline-block}.ym-status--open{background:var(--hvv-success-bg);color:var(--hvv-success)}.ym-status--closed{background:var(--hvv-surface-dim);color:var(--fg-3)}.ym-close-btn{background:var(--hvv-danger);color:#fff;border-radius:var(--radius-md);cursor:pointer;font-size:.85rem;font-weight:600;font-family:var(--font-body);border:none;padding:6px 12px;transition:background .15s}.ym-close-btn:hover:not(:disabled){background:#a33535}.ym-close-btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--hvv-blue);color:var(--fg-on-blue);border-radius:var(--radius-md);cursor:pointer;font-size:.875rem;font-weight:500;font-family:var(--font-body);border:none;padding:8px 16px;transition:background .15s,transform .1s}.btn-primary:hover:not(:disabled){background:var(--hvv-blue-deep)}.btn-primary:active:not(:disabled){transform:scale(.98)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-secondary{background:var(--hvv-surface-dim);color:var(--fg-2);border:1px solid var(--border-subtle);border-radius:var(--radius-md);cursor:pointer;font-size:.85rem;font-family:var(--font-body);padding:6px 12px;transition:background .15s}.btn-secondary:hover:not(:disabled){background:var(--hvv-line)}.btn-secondary:disabled{opacity:.6;cursor:not-allowed}.btn-link{color:var(--hvv-blue);cursor:pointer;font-size:.9rem;font-family:var(--font-body);background:0 0;border:none;padding:0;text-decoration:underline;transition:color .15s}.btn-link:hover:not(:disabled){color:var(--hvv-blue-deep)}.btn-link:disabled{opacity:.6;cursor:not-allowed}.ym-export-banner{background:var(--hvv-success-bg);border-radius:var(--radius-lg);border:1px solid #4a8c5a4d;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:20px;padding:12px 16px;display:flex}.ym-dismiss{margin-left:auto}.ym-dialog-overlay{z-index:1000;background:#2a2f5a73;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.ym-dialog{background:var(--bg-surface);border-radius:var(--radius-xl);width:90%;max-width:640px;max-height:80vh;box-shadow:var(--shadow-lg);padding:28px 32px;overflow-y:auto}.ym-dialog h3{font-family:var(--font-display);color:var(--fg-1);margin:0 0 16px;font-size:1.3rem}.ym-dialog h4{font-family:var(--font-display);color:var(--fg-1);margin:16px 0 8px;font-size:1rem}.ym-dialog-warning{background:var(--hvv-warning-bg);border-radius:var(--radius-md);color:#5c3c00;border:1px solid #d9a44366;margin-bottom:16px;padding:12px 16px;font-size:.9rem}.ym-dialog-warning ul{margin:8px 0 0 16px;padding:0}.ym-dialog-warning li{margin-bottom:4px}.ym-balances{margin-bottom:16px}.ym-dialog-actions{justify-content:flex-end;gap:10px;margin-top:20px;display:flex}.budget-dashboard .bd-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:24px;display:flex}.budget-dashboard .bd-header h2{margin:0}.bd-org-banners{flex-wrap:wrap;gap:16px;margin-bottom:28px;display:flex}.bd-org-card{background:var(--hvv-blue-tint);border-radius:var(--radius-xl);border:1px solid #3bafda40;flex:1;min-width:220px;padding:16px 20px}.bd-org-card.bd-verrekening{background:var(--hvv-warning-bg);border-color:#d9a44359}.bd-org-name{font-family:var(--font-display);color:var(--hvv-ink);margin-bottom:12px;font-size:1rem;font-weight:700}.bd-verrekening .bd-org-name{color:#5c3c00}.bd-org-stats{flex-wrap:wrap;gap:16px;display:flex}.bd-stat{flex-direction:column;gap:2px;display:flex}.bd-stat-label{color:var(--fg-3);text-transform:uppercase;letter-spacing:.04em;font-size:.75rem}.bd-stat-value{font-family:var(--font-display);color:var(--fg-1);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:1.1rem;font-weight:700}.bd-verrekening-value{font-size:1.4rem}.bd-expense{color:var(--hvv-danger)}.bd-income{color:var(--hvv-success)}.bd-org-section{margin-bottom:32px}.bd-org-heading{font-family:var(--font-display);color:var(--hvv-ink);border-bottom:2px solid #3bafda4d;margin-bottom:16px;padding-bottom:6px;font-size:1.15rem;font-weight:700}.bd-group-section{margin-bottom:20px}.bd-group-heading{font-family:var(--font-body);color:var(--fg-2);margin-bottom:8px;padding-left:4px;font-size:.95rem;font-weight:600}.bd-table{margin-bottom:8px}.bd-num{text-align:right;font-variant-numeric:tabular-nums}.bd-util{font-weight:600}.bd-util.util-warning{color:var(--hvv-warning)}.bd-util.util-danger{color:var(--hvv-danger)}.bd-row-util-danger td{background-color:var(--hvv-danger-bg)}.bd-row-util-warning td{background-color:var(--hvv-warning-bg)}.tile-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;margin-bottom:24px;display:grid}.app-topbar{display:none}.menu-btn{cursor:pointer;color:var(--fg-1);border-radius:var(--radius-md);background:0 0;border:none;flex-shrink:0;padding:6px;line-height:0}.menu-btn:hover{background:var(--hvv-surface-alt)}.app-sidebar .sidebar-close{cursor:pointer;color:var(--fg-2);border-radius:var(--radius-md);background:0 0;border:none;margin-left:auto;padding:6px;line-height:0;display:none}.app-sidebar .sidebar-close:hover{background:var(--hvv-surface-alt)}.sidebar-scrim{display:none}.txn-list{flex-direction:column;gap:8px;display:none}.txn-card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:12px 14px}.txn-row{justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:4px;display:flex}.txn-desc{font-family:var(--font-body);color:var(--fg-1);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:14px;overflow:hidden}.txn-amount{font-family:var(--font-display);font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0;font-size:14px;font-weight:700}.txn-amount.pos{color:var(--hvv-success)}.txn-amount.neg{color:var(--hvv-danger)}.txn-meta{font-family:var(--font-body);color:var(--fg-3);gap:8px;font-size:12px;display:flex}.filter-btn{background:var(--hvv-surface-dim);color:var(--fg-2);border:1px solid var(--border-subtle);border-radius:var(--radius-md);cursor:pointer;font-size:.875rem;font-family:var(--font-body);padding:7px 14px;transition:background .15s,color .15s}.filter-btn.active{background:var(--hvv-blue-tint);color:var(--hvv-blue-deep);border-color:#3bafda66;font-weight:500}.admin-success{color:var(--hvv-success);background:var(--hvv-success-bg);border-radius:var(--radius-md);border:1px solid #4a8c5a4d;margin-bottom:16px;padding:12px 16px;font-size:.9rem}.form-hint{font-family:var(--font-body);color:var(--fg-3);margin:0 0 16px;font-size:.875rem}.form-row{flex-wrap:wrap;gap:12px;margin-bottom:12px;display:flex}.form-row>label{min-width:160px;font-family:var(--font-body);color:var(--fg-1);flex-direction:column;flex:1;gap:4px;font-size:.875rem;font-weight:500;display:flex}.form-row input,.form-row select{border:1px solid var(--border-strong);border-radius:var(--radius-md);font-size:.875rem;font-family:var(--font-body);color:var(--fg-1);background:var(--bg-surface);padding:7px 10px}.form-row input:focus,.form-row select:focus{border-color:var(--hvv-blue);box-shadow:var(--focus-ring);outline:none}.form-actions{align-items:center;gap:10px;margin-top:4px;display:flex}.admin-form>label{font-family:var(--font-body);color:var(--fg-1);flex-direction:column;gap:4px;margin-bottom:12px;font-size:.875rem;font-weight:500;display:flex}.admin-form>label>input,.admin-form>label>select,.admin-form>label>textarea{border:1px solid var(--border-strong);border-radius:var(--radius-md);font-size:.875rem;font-family:var(--font-body);color:var(--fg-1);background:var(--bg-surface);padding:7px 10px}.admin-form>label>input:focus,.admin-form>label>select:focus,.admin-form>label>textarea:focus{border-color:var(--hvv-blue);box-shadow:var(--focus-ring);outline:none}.lang-switcher{appearance:none;border:1px solid var(--border-subtle);border-radius:var(--radius-md);background-color:var(--bg-surface);color:var(--fg-1);font-family:var(--font-body);cursor:pointer;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%233bafda' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");background-position:right 8px center;background-repeat:no-repeat;background-size:12px 12px;padding:6px 28px 6px 10px;font-size:13px;transition:border-color .15s,background-color .15s}.lang-switcher:hover{border-color:var(--hvv-blue);background-color:var(--hvv-blue-tint)}.lang-switcher:focus{border-color:var(--hvv-blue);box-shadow:var(--focus-ring);outline:none}.nav-lang-switcher{justify-content:stretch;padding:8px 16px 12px;display:flex}.nav-lang-switcher .lang-switcher{width:100%}@media (width>=768px) and (width<=1023px){.nav-lang-switcher{padding:8px 4px 12px}.nav-lang-switcher .lang-switcher{text-align:center;background-image:none;padding:6px 4px;font-size:11px}.app-shell{grid-template-columns:72px 1fr}.app-main{padding:20px 24px}.brand-text{display:none}.app-sidebar .brand{justify-content:center;padding:0 0 18px}.nav-section{display:none}.nav-link{justify-content:center;gap:0;width:calc(100% - 8px);margin:0 4px;padding:10px}.nav-link span:not(.nav-icon){display:none}.tile-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=767px){.app-shell{grid-template-rows:auto 1fr;grid-template-columns:1fr}.app-topbar{background:var(--bg-surface);border-bottom:1px solid var(--border-subtle);z-index:200;grid-area:1/1;align-items:center;gap:12px;height:52px;padding:0 16px;display:flex;position:sticky;top:0}.app-topbar img{width:28px;height:28px}.app-topbar .brand-name{font-family:var(--font-display);color:var(--fg-1);font-size:14px;font-weight:700}.app-sidebar{z-index:300;width:240px;height:100%;box-shadow:var(--shadow-lg);transition:transform .25s;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%)}.app-shell.is-open .app-sidebar{transform:translate(0)}.app-sidebar .sidebar-close{justify-content:center;align-items:center;display:flex}.app-sidebar .brand{align-items:center}.sidebar-scrim{z-index:250;background:#2a2f5a66;display:none;position:fixed;inset:0}.app-shell.is-open .sidebar-scrim{display:block}.app-main{grid-area:2/1;padding:16px}.page-header{flex-direction:column;align-items:flex-start;gap:8px}.tile-grid{grid-template-columns:repeat(2,1fr);gap:10px}.tile-value{font-size:20px}.filter-bar{flex-direction:column;align-items:stretch}.transactions-table{display:none}.txn-list{display:flex}}@media (width<=420px){.tile-grid{grid-template-columns:1fr}}.transactions-page{padding:0}.transactions-header{justify-content:space-between;align-items:center;margin-bottom:1.5rem;display:flex}.transactions-header h2{margin:0}.transactions-filters{flex-wrap:wrap;gap:.75rem;margin-bottom:1.5rem}.transaction-form{background:var(--bg-surface-alt);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);margin-bottom:1.5rem;padding:1.5rem}.transaction-form h3{font-family:var(--font-display);color:var(--fg-1);margin:0 0 1rem;font-size:1rem;font-weight:700}.transaction-form-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem;margin-bottom:1rem;display:grid}.form-group{flex-direction:column;gap:.375rem;display:flex}.form-group--wide{grid-column:1/-1}.form-group label{color:var(--fg-1);font-size:.875rem;font-weight:500;font-family:var(--font-body)}.form-group input,.form-group select{border:1px solid var(--border-strong);border-radius:var(--radius-lg);font-size:.875rem;font-family:var(--font-body);background:var(--bg-surface);color:var(--fg-1);padding:.5rem .75rem}.form-group input:focus,.form-group select:focus{border-color:var(--hvv-blue);box-shadow:var(--focus-ring);outline:none}.direction-toggle{border:1px solid var(--border-strong);border-radius:var(--radius-md);display:flex;overflow:hidden}.direction-btn{background:var(--bg-surface);cursor:pointer;font-size:.875rem;font-weight:500;font-family:var(--font-body);color:var(--fg-2);border:none;flex:1;padding:.5rem;transition:background .15s,color .15s}.direction-btn:hover{background:var(--bg-surface-alt)}.direction-btn.active.expense{background:var(--hvv-danger-bg);color:var(--hvv-danger)}.direction-btn.active.income{background:var(--hvv-success-bg);color:var(--hvv-success)}.form-actions{align-items:center;gap:.75rem;display:flex}.btn-danger{background:var(--hvv-danger-bg);color:var(--hvv-danger);border-radius:var(--radius-md);cursor:pointer;font-size:.8125rem;font-family:var(--font-body);border:1px solid #c445454d;padding:.25rem .5rem;transition:background .15s}.btn-danger:hover{background:#c4454533}.transactions-list{overflow-x:auto}.transactions-table{width:100%}.tx-locked{opacity:.7;background:var(--bg-surface-alt)}.tx-locked-badge{border-radius:var(--radius-pill);text-transform:uppercase;letter-spacing:.04em;background:var(--hvv-blue-tint);color:var(--hvv-blue-deep);border:1px solid #3bafda40;padding:3px 10px;font-size:11px;line-height:1.45;display:inline-block}.tx-amount{white-space:nowrap;font-variant-numeric:tabular-nums;font-weight:600}.tx-amount--expense{color:var(--hvv-danger)}.tx-amount--income{color:var(--hvv-success)}.account-balances{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem;margin-bottom:1.5rem;display:grid}.balance-card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:1rem}.balance-card h4{font-family:var(--font-display);color:var(--fg-3);margin:0 0 .5rem;font-size:.875rem;font-weight:500}.balance-card .balance-amount{font-family:var(--font-display);color:var(--fg-1);font-variant-numeric:tabular-nums;font-size:1.5rem;font-weight:700}.balance-card .balance-amount.negative{color:var(--hvv-danger)}@media (width<=640px){.transaction-form-grid{grid-template-columns:1fr}.transactions-table th:nth-child(3),.transactions-table td:nth-child(3){display:none}}
