:root{--bg:#f5f7f7;--card:#fff;--text:#14221c;--muted:#68776f;--line:#e4ebe7;--green:#176b4a;--green2:#dff3e9;--red:#b44343;--red2:#fae6e6;--blue:#2e5d87;--shadow:0 12px 35px rgba(23,48,36,.07);--radius:20px}*{box-sizing:border-box}html{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--text)}body{margin:0}button,input,select{font:inherit}.topbar{background:#10271e;color:#fff;padding:28px 20px 24px;box-shadow:0 8px 28px rgba(0,0,0,.09)}.topbar-inner{max-width:1180px;margin:auto;display:flex;justify-content:space-between;align-items:center}.topbar h1{margin:2px 0 0;font-size:29px}.eyebrow{font-size:11px;letter-spacing:.16em;font-weight:800;opacity:.66}.container{max-width:1180px;margin:26px auto 60px;padding:0 18px}.card,.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.card{padding:22px}.card.compact{padding:16px 20px}.month-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.month-nav strong{display:block;font-size:20px;margin-top:3px}.muted{color:var(--muted)}.month-form input{border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:#fff}.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}.kpi{padding:20px;position:relative;overflow:hidden}.kpi:after{content:"";position:absolute;right:-18px;top:-18px;width:70px;height:70px;border-radius:50%;background:rgba(23,107,74,.08)}.kpi span{display:block;color:var(--muted);font-size:13px;margin-bottom:8px}.kpi strong{font-size:25px}.kpi.income strong{color:var(--green)}.kpi.expense strong{color:var(--red)}.kpi.balance strong{color:var(--blue)}.grid.two{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px}.section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;margin-bottom:18px}.section-head h2{font-size:20px;margin:3px 0 0}.stack{display:grid;gap:14px}.stack label,.form-grid label,.inline-form label{font-size:13px;color:var(--muted);font-weight:700}.stack input,.form-grid input,.form-grid select,.inline-form input{width:100%;margin-top:7px;border:1px solid #dbe5df;border-radius:12px;background:#fbfcfc;padding:11px 12px;color:var(--text);outline:none}.stack input:focus,.form-grid input:focus,.form-grid select:focus,.inline-form input:focus{border-color:#82b9a1;box-shadow:0 0 0 3px rgba(23,107,74,.08)}.btn{border:1px solid #d9e3de;background:#fff;color:var(--text);padding:10px 14px;border-radius:12px;font-weight:750;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.btn:hover{filter:brightness(.98)}.btn.primary{background:var(--green);border-color:var(--green);color:#fff}.btn.ghost{background:rgba(255,255,255,.08);color:#fff;border-color:rgba(255,255,255,.18)}.btn.small{padding:7px 10px;font-size:12px}.btn.wide{width:100%}.inline-form{display:flex;align-items:end;gap:10px}.inline-form label{flex:1}.progress-wrap{margin-top:18px}.progress-label{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);margin-bottom:7px}.progress,.mini-progress{height:10px;border-radius:999px;background:#edf2ef;overflow:hidden}.progress span,.mini-progress span{display:block;height:100%;background:var(--green);border-radius:999px}.danger-text{color:var(--red);font-weight:700;font-size:13px}.pad-top{margin-top:18px}.category-bars{display:grid;gap:14px}.cat-label{display:flex;justify-content:space-between;font-size:13px;margin-bottom:6px}.cat-label strong{font-size:12px}.mini-progress{height:7px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}.span-2{grid-column:span 2}.goals{display:grid;gap:12px;margin-top:16px}.goal{border:1px solid var(--line);border-radius:14px;padding:13px}.goal-top{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:8px}.goal-top strong,.goal-top span{display:block}.goal-top span{font-size:12px;color:var(--muted);margin-top:2px}.goal-pct{font-weight:800!important;color:var(--green)!important}.goal-actions{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:10px}.goal-update{display:flex;gap:7px;align-items:center}.goal-update input{max-width:120px;border:1px solid var(--line);border-radius:10px;padding:7px 9px}.link{border:0;background:none;padding:0;cursor:pointer;text-decoration:underline;font-size:12px}.danger{color:var(--red)}.history-chart{height:190px;display:grid;grid-template-columns:repeat(6,1fr);gap:14px;align-items:end;border-bottom:1px solid var(--line);padding:0 12px 12px}.history-col{text-align:center;color:var(--muted);font-size:11px}.bars{height:155px;display:flex;justify-content:center;align-items:flex-end;gap:5px}.bar{width:18px;border-radius:7px 7px 2px 2px}.income-bar{background:var(--green)}.expense-bar{background:#d67878}.legend{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:6px}.dot{width:8px;height:8px;border-radius:50%;display:inline-block}.income-dot{background:var(--green)}.expense-dot{background:#d67878;margin-left:8px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:760px}th{text-align:left;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em;padding:10px;border-bottom:1px solid var(--line)}td{padding:12px 10px;border-bottom:1px solid #eef2f0;font-size:13px}tr:last-child td{border-bottom:0}.num{text-align:right;font-variant-numeric:tabular-nums}.income-text{color:var(--green);font-weight:800}.expense-text{color:var(--red);font-weight:800}.pill{padding:5px 8px;background:#eef4f1;border-radius:999px;font-size:11px}.type{font-size:11px;font-weight:800}.type.income{color:var(--green)}.type.expense{color:var(--red)}.actions{text-align:right}.exports{display:flex;gap:7px}.empty{color:var(--muted);font-size:13px;border:1px dashed var(--line);padding:16px;border-radius:14px;background:#fbfcfc}.flash{border-radius:14px;padding:12px 14px;margin-bottom:16px;font-size:13px;font-weight:700}.flash.success{background:var(--green2);color:#155a40}.flash.error{background:var(--red2);color:#8f3030}.auth-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 10% 10%,#dbeee5,transparent 35%),linear-gradient(145deg,#f6f8f7,#eef4f1)}.auth-card{width:min(430px,100%);background:#fff;border:1px solid var(--line);border-radius:24px;box-shadow:0 18px 60px rgba(24,57,42,.12);padding:32px}.auth-card h1{margin:12px 0 7px}.auth-card p{color:var(--muted);margin:0 0 22px}.brand-mark{width:48px;height:48px;display:grid;place-items:center;border-radius:14px;background:var(--green);color:#fff;font-size:24px;font-weight:900}footer{text-align:center;color:#839087;font-size:11px;padding:24px 0}.goal-create{align-items:end}@media(max-width:850px){.kpis{grid-template-columns:1fr 1fr}.grid.two{grid-template-columns:1fr}.topbar{padding-top:22px}.goal-create{flex-wrap:wrap}.goal-create label{min-width:140px}}@media(max-width:560px){.container{padding:0 11px;margin-top:16px}.card{padding:17px}.kpis{grid-template-columns:1fr 1fr;gap:9px}.kpi{padding:15px}.kpi strong{font-size:19px}.month-nav{align-items:flex-end}.form-grid{grid-template-columns:1fr}.span-2{grid-column:auto}.inline-form{align-items:stretch;flex-direction:column}.history-chart{gap:5px;padding-left:2px;padding-right:2px}.bar{width:13px}.section-head{flex-direction:column}.exports{width:100%}.exports .btn{flex:1}.goal-actions{align-items:flex-start;flex-direction:column}.topbar-inner{align-items:flex-end}.topbar h1{font-size:24px}}
