:root{--bg: #f4f1ea;--surface: #fffdf8;--surface-2: #eef2ea;--nav-hover: #e8efe8;--text: #1a2e1a;--muted: #4a5c4a;--border: #d8dfd0;--primary: #2d6a4f;--primary-hover: #1b4332;--accent: #2d6a4f;--on-primary: #ffffff;--input-bg: #ffffff;--expense: #bc4749;--income: #1d6a8a;--stock: #6a4c93;--error: #9b2226;--success: #2a7a3a;--danger-border: #f0c0ba;--shadow-card: 0 1px 3px rgba(26, 46, 26, .08);--shadow-lift: 0 4px 14px rgba(26, 46, 26, .1);--focus-ring: 0 0 0 3px rgba(45, 106, 79, .35);--text-xs: .8rem;--text-sm: .875rem;--text-md: .9rem;--text-lg: 1.1rem;--text-xl: 1.75rem;font-family:DM Sans,system-ui,sans-serif;line-height:1.5;color:var(--text);background:var(--bg)}*{box-sizing:border-box}body{margin:0;min-height:100vh}a{color:inherit;text-decoration:none}:focus-visible{outline:none;box-shadow:var(--focus-ring)}.app-shell{min-height:100vh;display:flex;flex-direction:column;background:linear-gradient(180deg,var(--nav-hover) 0%,transparent 12rem),var(--bg)}.topbar{display:flex;align-items:center;gap:.75rem;padding:.75rem 1.25rem;background:var(--primary);color:var(--on-primary);position:sticky;top:0;z-index:20}.brand{display:flex;align-items:center;gap:.5rem;font-weight:700;font-size:var(--text-lg);color:var(--on-primary)}.brand:hover{opacity:.92}.brand-mark{display:inline-flex;width:1.35rem;height:1.35rem;flex-shrink:0}.brand-mark svg{width:100%;height:100%}.topbar-actions{margin-left:auto;display:flex;align-items:center;gap:.75rem}.user-email{font-size:var(--text-sm);opacity:.9}.tenant-select,.tenant-badge{font-size:var(--text-sm);padding:.25rem .5rem;border-radius:6px;border:1px solid rgba(255,255,255,.3);background:#ffffff1f;color:var(--on-primary)}.nav-toggle{display:none;margin-left:.25rem;background:transparent;color:var(--on-primary);border:1px solid rgba(255,255,255,.35);border-radius:8px;padding:.35rem .65rem;font:inherit;font-weight:600;cursor:pointer}.nav{display:flex;gap:.25rem;padding:.5rem 1rem;background:var(--surface);border-bottom:1px solid var(--border);overflow-x:auto;position:sticky;top:3.25rem;z-index:15}.nav-link{padding:.5rem .85rem;border-radius:8px;font-size:var(--text-md);color:var(--muted);white-space:nowrap}.nav-link.active,.nav-link:hover{background:var(--nav-hover);color:var(--text)}.nav-group{display:flex;align-items:center;gap:.25rem;margin-left:.25rem;padding-left:.5rem;border-left:1px solid var(--border)}.nav-group-label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:0 .35rem;white-space:nowrap}.main{flex:1;padding:1.5rem;max-width:960px;width:100%;margin:0 auto}.page h1{margin:0 0 .5rem;font-size:var(--text-xl)}.lead{color:var(--muted);margin:0 0 1.5rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1.25rem;box-shadow:var(--shadow-card)}.login-page{min-height:100vh;display:grid;place-items:center;padding:1rem;background:linear-gradient(160deg,var(--nav-hover) 0%,var(--bg) 55%)}.login-card{width:100%;max-width:400px}.login-brand{display:flex;align-items:center;gap:.65rem;margin-bottom:.35rem}.login-brand .brand-mark{width:2rem;height:2rem;color:var(--primary)}.login-card h1{margin:0;font-size:1.65rem}.subtitle{color:var(--muted);margin:0 0 1.25rem}.breadcrumb{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center;font-size:var(--text-sm);color:var(--muted);margin:0 0 .75rem}.breadcrumb a:hover{color:var(--primary);text-decoration:underline}.breadcrumb-sep{opacity:.5}label{display:flex;flex-direction:column;gap:.35rem;font-size:var(--text-sm);font-weight:500;margin-bottom:1rem}input,select,textarea{font:inherit;padding:.6rem .75rem;border:1px solid var(--border);border-radius:8px;background:var(--input-bg)}.btn{font:inherit;cursor:pointer;border:none;border-radius:8px;padding:.6rem 1rem;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:.35rem}.btn-block{width:100%}.btn-primary{background:var(--primary);color:var(--on-primary)}.btn-primary:hover:not(:disabled){background:var(--primary-hover)}.btn-primary:disabled,.btn-secondary:disabled,.btn-ghost:disabled,.btn-small:disabled{opacity:.55;cursor:not-allowed}.btn-ghost{background:transparent;color:var(--on-primary);border:1px solid rgba(255,255,255,.35)}.btn-ghost.on-light{color:var(--text);border-color:var(--border)}.btn-ghost.on-light:hover:not(:disabled){background:var(--nav-hover)}.page-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}.page-header h1{margin:0}.form-actions{display:flex;gap:.75rem;flex-wrap:wrap;margin-top:.5rem}.row-actions{display:flex;flex-wrap:wrap;gap:.35rem}.btn-small{padding:.3rem .55rem;font-size:var(--text-xs);border-radius:6px;border:1px solid var(--border);background:var(--surface);cursor:pointer}.btn-danger{color:var(--error);border-color:var(--danger-border)}.btn-secondary{background:transparent;border:1px solid var(--border);color:inherit;padding:.55rem 1rem;border-radius:8px;cursor:pointer}.btn-secondary:hover:not(:disabled){background:var(--nav-hover)}a.btn{display:inline-flex;align-items:center;text-decoration:none}.form-card{max-width:420px}.fx-hint,.fx-preview{margin:-.35rem 0 .75rem;font-size:var(--text-sm);line-height:1.35}button.linkish{background:none;border:none;padding:0;color:var(--accent);text-decoration:underline;cursor:pointer;font:inherit}.amount-expense{color:var(--expense);font-weight:600}.amount-income{color:var(--income);font-weight:600}.amount-net-positive{color:var(--success);font-weight:700}.amount-net-negative{color:var(--expense);font-weight:700}.action-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:1.5rem}.action-card{padding:1.25rem;border-radius:12px;border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow-card);transition:transform .15s,box-shadow .15s}.action-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lift)}.action-card.expense{border-left:4px solid var(--expense)}.action-card.income{border-left:4px solid var(--income)}.action-card.stock{border-left:4px solid var(--stock)}.action-title{display:block;font-weight:700;margin-bottom:.25rem}.action-desc{font-size:var(--text-sm);color:var(--muted)}.summary-card{margin-top:.5rem}.summary-card h2{margin:0 0 1rem;font-size:var(--text-lg);padding-bottom:.5rem;border-bottom:1px solid var(--border)}.summary-dl{display:grid;gap:.75rem;margin:0}.summary-dl div{display:flex;justify-content:space-between;gap:1rem}.summary-dl dt{color:var(--muted);font-weight:500}.summary-dl dd{margin:0;font-weight:600}.table-wrap{overflow-x:auto;margin-bottom:1.5rem}table{width:100%;border-collapse:collapse;font-size:var(--text-md)}th,td{text-align:left;padding:.65rem .5rem;border-bottom:1px solid var(--border)}th{color:var(--muted);font-weight:600}.error{color:var(--error);margin:0 0 1rem}.success{color:var(--success);margin:0 0 1rem}.notice,.muted{color:var(--muted)}.not-found{text-align:center;padding:3rem 1rem}.not-found h1{margin-bottom:.5rem}code{font-size:.85em;background:var(--surface-2);padding:.15rem .35rem;border-radius:4px}.category-select{display:flex;flex-direction:column;gap:.35rem}.category-select>.linkish{align-self:flex-start;font-size:var(--text-sm)}.category-create{display:flex;gap:.5rem;align-items:center}.category-create input{flex:1}.perm-matrix{display:flex;flex-direction:column;gap:1rem;margin:1rem 0}.perm-group{border:1px solid var(--border);border-radius:6px;padding:.75rem 1rem;margin:0}.perm-group legend{font-weight:600;padding:0 .35rem}.perm-row{display:flex;flex-wrap:wrap;gap:.75rem 1.25rem;align-items:center;margin:.35rem 0}.perm-check{display:inline-flex;align-items:center;gap:.35rem;font-weight:400;margin:.25rem 0}.inline-filter{display:flex;align-items:center;gap:.5rem;margin:0;font-size:var(--text-md)}.inline-filter select{min-width:12rem}@media(max-width:720px){.topbar{flex-wrap:wrap;gap:.5rem}.user-email{display:none}.nav-toggle{display:inline-flex;margin-left:auto}.topbar-actions{margin-left:0}.nav{display:none;flex-direction:column;top:auto;position:static;overflow:visible}.nav.open{display:flex}.nav-group{flex-direction:column;align-items:stretch;margin-left:0;padding-left:0;border-left:none;border-top:1px solid var(--border);padding-top:.35rem}.main{padding:1rem}.page-header .btn-primary{width:100%}}
