:root{--bg: #0e1116;--bg-raised: #161b23;--bg-hover: #1d242f;--border: #262e3b;--text: #e6ebf2;--text-dim: #8a94a6;--accent: #4da3ff;--pos: #3ecf8e;--neg: #ff5c7a;--warn: #ffb454;--radius: 10px;font-size:15px}*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text)}#root{min-height:100vh}.app-shell{display:flex;min-height:100vh}.sidebar{width:200px;flex-shrink:0;background:var(--bg-raised);border-right:1px solid var(--border);padding:16px 10px;display:flex;flex-direction:column;gap:4px}.brand{font-weight:700;font-size:1.1rem;padding:8px 12px 18px;letter-spacing:.02em}.nav-link{display:block;padding:9px 12px;border-radius:var(--radius);color:var(--text-dim);text-decoration:none;font-weight:500}.nav-link:hover{background:var(--bg-hover);color:var(--text)}.nav-link.active{background:#4da3ff24;color:var(--accent)}.main{flex:1;min-width:0;padding:24px 28px 60px}.page-title{margin:0 0 20px;font-size:1.45rem}.card{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;margin-bottom:18px}.card-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.card-header h2{margin:0;font-size:1.02rem;font-weight:600}.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:18px;align-items:start}.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px;margin-bottom:18px}.stat{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;display:flex;flex-direction:column;gap:4px}.stat-label{color:var(--text-dim);font-size:.78rem;text-transform:uppercase;letter-spacing:.06em}.stat-value{font-size:1.35rem;font-weight:700;font-variant-numeric:tabular-nums}.stat-sub{color:var(--text-dim);font-size:.82rem}.tone-pos{color:var(--pos)}.tone-neg{color:var(--neg)}.tone-neutral{color:var(--text)}table.data{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}table.data th,table.data td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);vertical-align:middle}table.data th{color:var(--text-dim);font-size:.76rem;text-transform:uppercase;letter-spacing:.05em;font-weight:600}table.data tr:last-child td{border-bottom:none}.empty-row{color:var(--text-dim);text-align:center;padding:22px!important}button,.btn{font:inherit;border-radius:8px;border:1px solid var(--border);background:var(--bg-hover);color:var(--text);padding:7px 13px;cursor:pointer;font-weight:500}button:hover,.btn:hover{border-color:var(--accent)}.btn-primary{background:var(--accent);border-color:var(--accent);color:#06121f;font-weight:600}.btn-danger{color:var(--neg)}.btn-ghost{background:transparent;border-color:transparent}.btn-sm{padding:3px 8px;font-size:.82rem}input,select,textarea{font:inherit;background:var(--bg);border:1px solid var(--border);border-radius:8px;color:var(--text);padding:7px 10px;width:100%}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent)}.field{display:flex;flex-direction:column;gap:5px;margin-bottom:12px}.field-label{font-size:.8rem;color:var(--text-dim);font-weight:600}.field-hint{font-size:.75rem;color:var(--text-dim)}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}.form-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:14px}.error-banner{background:#ff5c7a1f;border:1px solid rgba(255,92,122,.5);color:var(--neg);border-radius:var(--radius);padding:10px 14px;margin-bottom:14px}.chip{display:inline-block;font-size:.72rem;padding:2px 8px;border-radius:999px;border:1px solid var(--border);color:var(--text-dim);margin-right:6px;white-space:nowrap}.chip-income{color:var(--pos);border-color:#3ecf8e66}.chip-bill{color:var(--warn);border-color:#ffb45466}.inactive-row{opacity:.45}.cal-nav{display:flex;align-items:center;gap:14px;margin-bottom:12px}.cal-month-label{font-weight:700;min-width:170px;text-align:center}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.cal-dow{color:var(--text-dim);font-size:.72rem;text-transform:uppercase;text-align:center;padding:4px 0}.cal-day{min-height:74px;background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:6px 7px;cursor:pointer;display:flex;flex-direction:column;gap:3px;text-align:left}.cal-day:hover{border-color:var(--accent)}.cal-day.empty{background:transparent;border-color:transparent;cursor:default}.cal-day .day-num{font-size:.75rem;color:var(--text-dim)}.cal-day.today{border-color:var(--accent)}.cal-day.payday .day-num:after{content:" · P";color:var(--pos);font-weight:700}.cal-day.p1 .day-num:after{content:" · P-1";color:var(--warn);font-weight:700}.day-balance{font-size:.82rem;font-weight:700;font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.health-ok .day-balance{color:var(--pos)}.health-tight .day-balance{color:var(--warn)}.health-low .day-balance,.health-critical .day-balance{color:var(--neg)}.day-events{display:flex;gap:3px;flex-wrap:wrap}.event-dot{width:8px;height:8px;border-radius:50%}.event-dot.income{background:var(--pos)}.event-dot.bill{background:var(--warn)}.event-dot.debt{background:var(--accent)}.legend{display:flex;gap:16px;align-items:center;color:var(--text-dim);font-size:.78rem;margin-top:12px;flex-wrap:wrap}.legend .swatch{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#04080ea8;display:flex;align-items:flex-start;justify-content:center;padding:60px 20px;z-index:50;overflow-y:auto}.modal{background:var(--bg-raised);border:1px solid var(--border);border-radius:12px;width:min(640px,100%)}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-bottom:1px solid var(--border)}.modal-header h3{margin:0;font-size:1rem}.modal-body{padding:16px 18px}.txn-list{list-style:none;margin:0;padding:0}.txn-list li{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-bottom:1px solid var(--border);align-items:center}.txn-list li:last-child{border-bottom:none}.txn-amt{font-variant-numeric:tabular-nums;font-weight:600}.progress-track{height:8px;border-radius:999px;background:var(--bg);overflow:hidden;border:1px solid var(--border)}.progress-fill{height:100%;background:var(--pos);border-radius:inherit}.goal-card .stat-sub{margin-top:6px}.strategy-toggle{display:inline-flex;border:1px solid var(--border);border-radius:9px;overflow:hidden}.strategy-toggle button{border:none;border-radius:0;background:transparent;padding:8px 14px}.strategy-toggle button.active{background:#4da3ff29;color:var(--accent);font-weight:700}.chart-wrap{width:100%;height:320px}.muted{color:var(--text-dim)}@media (max-width: 700px){.app-shell{flex-direction:column}.sidebar{width:100%;flex-direction:row;overflow-x:auto;padding:8px 6px;gap:0;border-right:none;border-bottom:1px solid var(--border)}.brand{display:none}.nav-link{font-size:.82rem;padding:6px 10px;white-space:nowrap}.main{padding:14px 12px 40px}.page-title{font-size:1.2rem;margin-bottom:12px}.grid-2{grid-template-columns:1fr}.stat-row{grid-template-columns:1fr 1fr}.form-grid{grid-template-columns:1fr}.cal-day{min-height:52px;padding:3px 4px}.day-balance{font-size:.7rem}.modal-backdrop{padding:20px 10px}table.data th,table.data td{padding:6px;font-size:.8rem}}
