
:root{--bg:#f5f6fa;--surface:#fff;--ink:#20242c;--muted:#7b8290;--line:#e7e9f0;--primary:#6257e8;--primary-soft:#eeecff;--green:#16845b;--red:#c94a4a;--orange:#e89a28;--blue:#3569b8;--shadow:0 8px 28px rgba(34,39,60,.06)}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer}.app{display:flex;min-height:100vh}.sidebar{width:245px;background:#171b2a;color:#fff;padding:24px 15px;position:sticky;top:0;height:100vh}.brand{font-size:24px;font-weight:800;padding:0 12px 30px}.brand span{color:#aaa4ff}.nav button{display:block;width:100%;border:0;background:transparent;color:#c8ccda;text-align:left;border-radius:11px;padding:12px 14px;margin:4px 0}.nav button.active,.nav button:hover{background:#302d4c;color:#fff}.side-note{color:#8e94a6;font-size:12px;padding:28px 12px}.main{width:100%;max-width:1500px;margin:auto;padding:30px;min-width:0}.top{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:24px}.top h1{font-size:30px;margin:0 0 5px}.muted{color:var(--muted)}.actions{display:flex;gap:9px;flex-wrap:wrap}.btn{border:0;border-radius:10px;padding:11px 15px;background:var(--primary);color:white;font-weight:750}.btn.secondary{background:white;color:var(--ink);border:1px solid var(--line)}.btn.danger{background:#fff0f0;color:var(--red)}.page{display:none}.page.active{display:block}.grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.two{display:grid;grid-template-columns:1.25fr 1fr;gap:16px}.card{background:var(--surface);border:1px solid var(--line);border-radius:17px;padding:20px;box-shadow:var(--shadow)}.metric{font-size:28px;font-weight:850;margin-top:8px}.metric.green{color:var(--green)}.metric.red{color:var(--red)}.metric.purple{color:var(--primary)}.section{margin-top:20px}.sectionhead{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.section h2{font-size:19px;margin:0}.pill,.tag{display:inline-block;border-radius:20px;padding:5px 9px;font-size:12px;font-weight:750;background:#f0f1f6}.tag.green{background:#e8f7ef;color:var(--green)}.tag.red{background:#fff0f0;color:var(--red)}.tag.purple{background:var(--primary-soft);color:#5147c9}.tag.orange{background:#fff4df;color:#a86a14}.bar{height:10px;border-radius:30px;background:#eceef4;overflow:hidden}.bar>div{height:100%;border-radius:30px;background:var(--primary)}.tablewrap{overflow:auto}.table{border-collapse:collapse;width:100%;font-size:14px}.table th,.table td{text-align:left;padding:13px 8px;border-bottom:1px solid var(--line);white-space:nowrap}.table th{color:var(--muted);font-weight:700}.empty{text-align:center;padding:30px;color:var(--muted)}.form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.field{display:flex;flex-direction:column;gap:6px}.field.full{grid-column:1/-1}.field label{font-size:13px;font-weight:750;color:var(--muted)}.field input,.field select,.field textarea{border:1px solid var(--line);border-radius:10px;padding:11px;background:#fff;color:var(--ink);width:100%}.modal{display:none;position:fixed;inset:0;background:#10121c88;z-index:10;align-items:center;justify-content:center;padding:18px}.modal.open{display:flex}.modalbox{width:100%;max-width:760px;max-height:90vh;overflow:auto;background:#fff;border-radius:18px;padding:24px}.modalhead{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.close{width:32px;height:32px;border:0;border-radius:50%;background:#f0f1f5}.notice{padding:14px;border-radius:12px;background:var(--primary-soft);color:#5147c9;font-size:13px}.chart-layout{display:grid;grid-template-columns:210px 1fr;gap:20px;align-items:center}.donut{width:180px;height:180px;border-radius:50%;margin:auto;position:relative;background:conic-gradient(var(--primary) 0 40%,var(--orange) 40% 65%,var(--blue) 65% 82%,#a5adba 82% 100%)}.donut:after{content:"";position:absolute;inset:43px;background:white;border-radius:50%}.donut-center{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;z-index:1;font-size:24px;font-weight:850}.legend-row{display:flex;align-items:center;gap:8px;margin:10px 0;font-size:13px}.dot{width:10px;height:10px;border-radius:50%;flex:0 0 auto}.monthly{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;align-items:end;height:220px;padding-top:15px}.month{display:flex;flex-direction:column;align-items:center;gap:8px;height:100%;justify-content:end}.month-bars{display:flex;align-items:end;gap:4px;height:170px}.mbar{width:13px;border-radius:5px 5px 0 0;background:var(--primary)}.mbar.expense{background:#f0a3a3}.month small{color:var(--muted)}.summaryline{display:flex;justify-content:space-between;gap:10px;margin:8px 0;font-size:14px}.progress-item{margin:16px 0}.progress-item .row{display:flex;justify-content:space-between;gap:10px;font-size:14px;margin-bottom:7px}.footer{text-align:center;color:var(--muted);font-size:12px;margin-top:35px}.settings-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0}.settings-tabs button{border:1px solid var(--line);background:white;color:var(--ink);border-radius:10px;padding:10px 14px;font-weight:750}.settings-tabs button.active{background:var(--primary-soft);color:#5147c9;border-color:#d8d2ff}.settings-panel{display:none}.settings-panel.active{display:block}.hidden{display:none!important}
@media(max-width:1000px){.grid{grid-template-columns:repeat(2,minmax(0,1fr))}.two{grid-template-columns:1fr}.sidebar{width:215px}.chart-layout{grid-template-columns:1fr}}
@media(max-width:650px){.app{display:block}.sidebar{position:static;width:100%;height:auto;padding:14px}.brand{padding:0 5px 12px}.nav{display:flex;overflow:auto;gap:4px}.nav button{white-space:nowrap;margin:0;padding:9px}.side-note{display:none}.main{padding:16px}.top{flex-direction:column;align-items:flex-start}.top h1{font-size:26px}.grid{grid-template-columns:1fr 1fr;gap:10px}.card{padding:14px}.metric{font-size:21px}.form{grid-template-columns:1fr}.field.full{grid-column:auto}.monthly{gap:5px}.mbar{width:9px}}
.metric{min-width:0;margin-top:8px;font-size:clamp(18px,2vw,28px);letter-spacing:-.03em;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}
#filterType,#filterOrigin{font-size:14px;padding:9px 42px 9px 10px;-webkit-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='m1 1 5 5 5-5' fill='none' stroke='%2320242c' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.8'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 16px center;background-size:12px 8px}
#filterMonth{text-transform:capitalize}
.auth-screen{position:fixed;inset:0;z-index:30;display:flex;align-items:center;justify-content:center;padding:20px;background:#171b2af2}.auth-screen.hidden{display:none}.auth-card{width:min(100%,420px);padding:30px;background:#fff;border-radius:18px;box-shadow:0 20px 60px #0004}.auth-card .brand{padding:0;color:var(--ink)}.auth-card h1{margin:24px 0 4px}.auth-card .field{margin:16px 0}.auth-card .btn{width:100%;margin-top:8px}.auth-error{padding:10px;border-radius:8px;background:#fff0f0;color:var(--red);font-size:13px}

.auth-screen{background:#171b2a}.sync-status{margin-bottom:16px}.sync-status.error{background:#fff0f0;color:#a42e2e}
