@import "https://fonts.googleapis.com/css2?family=Source+Serif+4:ital,opsz,wght@0,8..60,400;0,8..60,600;1,8..60,400;1,8..60,600&display=swap";:root{--font-serif:"Source Serif 4", Georgia, serif;--color-bg:#f3f2f2;--color-surface:#eae9e9;--color-text:#201e1d;--color-divider:#201e1d29;--color-accent:#0e7a6b;--color-accent-2:#c4531f;--accent-100:#e8f8f6;--accent-200:#c5eee9;--accent-300:#8dddd5;--accent-500:#0e7a6b;--accent-600:#0b6358;--accent-700:#084d44;--accent-800:#053730;--accent2-100:#fdf0eb;--accent2-200:#f9d9cc;--accent2-700:#7e3411;--accent2-800:#59240b;--neutral-100:#f8f4f4;--neutral-200:#eae7e7;--neutral-300:#d7d3d3;--neutral-400:#bab6b6;--neutral-500:#9b9797;--neutral-600:#7d7979;--neutral-700:#605d5d;--neutral-800:#444141;--neutral-900:#2d2b2b;--color-text-mute:#201e1d8c;--color-text-faint:#201e1d61;--color-success:#1e6e38;--color-warn:#8a5500;--color-danger:#a8231c;--space-1:5px;--space-2:10px;--space-3:15px;--space-4:20px;--space-5:25px;--space-6:30px;--space-8:40px;--space-10:60px;--radius-sm:1px;--radius-md:2px;--radius-lg:4px;--radius-xl:8px;--radius-pill:99px;--shadow-sm:0 1px 2px #2d2b2b24;--shadow-md:0 3px 10px #2d2b2b29;--shadow-lg:0 12px 32px #2d2b2b38;--sidebar-w:236px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:15px}body{font-family:var(--font-serif);color:var(--color-text);background:var(--color-bg);min-height:100vh;font-size:15px;line-height:1.55}a{color:inherit;text-decoration:none}button{cursor:pointer;background:0 0;border:none;font-family:inherit}input,select,textarea{font-family:inherit;font-size:inherit}h1{font-size:42px}h2{font-size:32px}h3{font-size:25px}h4{font-size:20px}h5{font-size:16px}h6{letter-spacing:.08em;text-transform:uppercase;font-size:13px}h1,h2,h3,h4,h5,h6{font-family:var(--font-serif);letter-spacing:-.015em;font-weight:600;line-height:1.12}.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}.shell{min-height:100vh;display:flex}.shell-main{margin-left:var(--sidebar-w);flex-direction:column;flex:1;min-width:0;display:flex}.shell-content{flex:1;max-width:1180px;padding:34px 40px 80px}.sidebar{width:var(--sidebar-w);background:var(--color-surface);border-right:1px solid var(--color-divider);flex-direction:column;height:100vh;padding:24px 14px;display:flex;position:fixed;top:0;left:0;overflow-y:auto}.sidebar-logo{padding:0 12px var(--space-6);border-bottom:1px solid var(--color-divider);margin-bottom:var(--space-3)}.sidebar-logo h1{letter-spacing:-.01em;color:var(--color-text);font-size:19px;font-weight:600;line-height:1.2}.sidebar-logo span{letter-spacing:.14em;text-transform:uppercase;color:var(--color-text-mute);margin-top:4px;font-size:10px;font-weight:400;display:block}.nav-item{color:var(--color-text);border-radius:var(--radius-md);cursor:pointer;text-align:left;align-items:center;gap:11px;width:100%;padding:9px 12px;font-size:14.5px;transition:background .12s,color .12s;display:flex}.nav-item:hover{background:color-mix(in srgb, var(--color-text) 6%, transparent)}.nav-item.active{background:var(--color-bg);color:var(--color-accent)}.nav-icon{flex-shrink:0}.sidebar-bottom{border-top:1px solid var(--color-divider);padding-top:var(--space-3);margin-top:auto}.topbar{z-index:10;background:var(--color-bg);border-bottom:1px solid var(--color-divider);justify-content:space-between;align-items:center;gap:var(--space-4);padding:16px 40px;display:flex;position:sticky;top:0}.topbar-label{letter-spacing:.15em;text-transform:uppercase;color:var(--color-text-mute);font-size:11px;font-weight:600}.month-switcher{align-items:center;gap:var(--space-2);display:flex}.month-switcher strong{text-align:center;letter-spacing:-.01em;min-width:132px;font-size:16px;font-weight:600}.btn{font-family:var(--font-serif);padding:var(--space-2) 18px;border-radius:var(--radius-md);white-space:nowrap;cursor:pointer;border:1px solid #0000;justify-content:center;align-items:center;gap:6px;font-size:14px;font-weight:600;line-height:1.2;transition:background .12s,opacity .12s;display:inline-flex}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--color-accent);color:var(--color-bg);border-color:var(--color-accent)}.btn-primary:hover:not(:disabled){background:var(--accent-600);border-color:var(--accent-600)}.btn-accent2{background:var(--color-accent-2);color:var(--color-bg);border-color:var(--color-accent-2)}.btn-accent2:hover:not(:disabled){opacity:.85}.btn-ghost{color:var(--color-accent);padding-inline:var(--space-1);background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){background:color-mix(in srgb, var(--color-accent) 10%, transparent)}.btn-secondary{color:var(--color-text);border-color:var(--color-divider);background:0 0}.btn-secondary:hover:not(:disabled){background:color-mix(in srgb, var(--color-text) 7%, transparent)}.btn-danger{background:var(--color-danger);color:#fff;border-color:var(--color-danger)}.btn-danger:hover:not(:disabled){opacity:.85}.btn-icon{border-radius:var(--radius-md);width:32px;height:32px;color:var(--color-text-mute);background:0 0;border:none;padding:0}.btn-icon:hover{background:color-mix(in srgb, var(--color-text) 7%, transparent);color:var(--color-text)}.input,.select{width:100%;height:36px;font-family:var(--font-serif);color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-divider);border-radius:var(--radius-md);outline:none;padding:6px 10px;font-size:14px;transition:border-color .12s;display:block}.input:hover,.select:hover{border-color:color-mix(in srgb, var(--color-text) 45%, transparent)}.input:focus-visible,.select:focus-visible{border-color:var(--color-accent)}.input::placeholder{color:color-mix(in srgb, var(--color-text) 40%, transparent)}.label{color:color-mix(in srgb, var(--color-text) 70%, transparent);margin-bottom:5px;font-size:12px;display:block}.field{flex-direction:column;gap:2px;display:flex}.card{gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-md);background:var(--color-surface);flex-direction:column;display:flex}.card.elev-sm{box-shadow:var(--shadow-sm)}.card.elev-md{box-shadow:var(--shadow-md)}.progress-track{background:color-mix(in srgb, var(--color-text) 12%, transparent);border-radius:var(--radius-pill);height:8px;overflow:hidden}.progress-fill{border-radius:var(--radius-pill);background:var(--color-accent);height:100%;transition:width .35s}.progress-fill.over{background:var(--color-accent-2)}.progress-fill.warn{background:var(--color-warn)}.progress-fill.pace{background:color-mix(in srgb, var(--color-text) 25%, transparent)}.tag{letter-spacing:.03em;border-radius:var(--radius-md);align-items:center;padding:3px 10px;font-size:11px;font-weight:400;display:inline-flex}.tag-on-track{background:var(--accent-100);color:var(--accent-700)}.tag-watch{color:var(--color-warn);background:#fff3cd}.tag-over{color:var(--color-danger);background:#fde8e8}.tag-received{background:var(--accent-100);color:var(--accent-700)}.tag-pending{background:var(--color-surface);color:var(--color-text-mute);border:1px solid var(--color-divider)}.person-dot{align-items:center;gap:6px;font-size:12px;display:inline-flex}.person-dot:before{content:"";background:currentColor;border-radius:50%;flex-shrink:0;width:8px;height:8px;display:inline-block}.person-accent1{color:var(--color-accent)}.person-accent2{color:var(--color-accent-2)}.table{border-collapse:collapse;width:100%;font-size:14px}.table th{text-align:left;letter-spacing:.08em;text-transform:uppercase;color:color-mix(in srgb, var(--color-text) 60%, transparent);padding:var(--space-2);border-bottom:1px solid var(--color-divider);font-size:11px;font-weight:600}.table td{padding:var(--space-2);border-bottom:1px solid color-mix(in srgb, var(--color-text) 8%, transparent);vertical-align:middle}.table tr:last-child td{border-bottom:none}.table tbody tr:hover td{background:color-mix(in srgb, var(--color-text) 4%, transparent)}.kpi-grid{gap:var(--space-4);grid-template-columns:repeat(3,1fr);display:grid}.kpi-card{flex-direction:column;gap:4px;display:flex}.kpi-label{letter-spacing:.1em;text-transform:uppercase;color:var(--color-accent);font-size:10px;font-weight:600}.kpi-value{letter-spacing:-.02em;font-size:46px;font-weight:600;line-height:1}.kpi-sub{color:var(--color-text-mute);font-size:12px}.section-title{letter-spacing:.12em;text-transform:uppercase;color:var(--color-text-mute);margin-bottom:var(--space-3);font-size:10px;font-weight:600}.grid-2{gap:var(--space-4);grid-template-columns:1fr 1fr;display:grid}.grid-3{gap:var(--space-4);grid-template-columns:repeat(3,1fr);display:grid}.divider{border:none;border-top:1px solid var(--color-divider);margin:var(--space-4) 0}.amt-income{color:var(--color-accent)}.amt-expense{color:var(--color-text)}.amt-positive{color:var(--color-success)}.amt-negative{color:var(--color-danger)}.toast{bottom:var(--space-6);right:var(--space-6);background:var(--color-text);color:var(--color-bg);padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);z-index:1000;font-size:14px;animation:.18s toast-in;position:fixed}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.modal-overlay{background:color-mix(in srgb, var(--neutral-900) 50%, transparent);padding:var(--space-4);z-index:500;place-items:center;display:grid;position:fixed;inset:0}.modal{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:var(--space-4);gap:var(--space-3);flex-direction:column;width:min(440px,100%);max-height:90vh;display:flex;overflow-y:auto}.modal-title{letter-spacing:-.01em;font-size:20px;font-weight:600}.modal-actions{justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-2);display:flex}.empty{text-align:center;color:var(--color-text-mute);padding:60px 0;font-size:14px}.spinner{border:2px solid var(--color-divider);border-top-color:var(--color-accent);border-radius:50%;width:20px;height:20px;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.loading-screen{justify-content:center;align-items:center;gap:var(--space-3);min-height:40vh;color:var(--color-text-mute);font-size:14px;display:flex}.banner{padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);font-size:13px}.banner-info{background:var(--accent-100);color:var(--accent-700)}.banner-muted{background:var(--color-surface);color:var(--color-text-mute);border:1px solid var(--color-divider)}
