@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--green:#123d32;--green2:#1c5b49;--mint:#e6f3ec;--gold:#e7bd63;--bg:#f4f7f5;--surface:#fff;--text:#1e2c27;--muted:#7b8983;--line:#e7ece9;--red:#c64f51;--redbg:#fff0ef;--shadow:0 8px 28px rgba(22,54,42,.045);font-family:'DM Sans',sans-serif;color:var(--text);font-synthesis:none}*{box-sizing:border-box}body{margin:0;background:var(--bg);font-size:14px}button,input,select,textarea{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #a4d5bd;outline-offset:2px}.hidden{display:none!important}.app-shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:248px;background:#fff;border-right:1px solid var(--line);padding:26px 15px 16px;display:flex;flex-direction:column;z-index:10;overflow:auto}.brand,.auth-brand{display:flex;align-items:center;gap:11px;padding:0 11px 29px}.brand-mark{width:40px;height:40px;border-radius:13px;background:var(--green);color:var(--gold);display:grid;place-items:center;font-family:Manrope;font-size:25px;font-weight:800;box-shadow:0 5px 12px #123d3220}.brand strong,.auth-brand strong{display:block;font-family:Manrope;font-size:16px;letter-spacing:-.4px}.brand span,.auth-brand span{display:block;font-size:9px;color:var(--muted);letter-spacing:2px;margin-top:3px}.side-label{padding:15px 12px 8px;color:#a0aaa5;font-size:10px;font-weight:700;letter-spacing:1.5px}.nav-item{border:0;background:transparent;display:flex;align-items:center;gap:13px;width:100%;padding:11px 12px;margin:2px 0;border-radius:10px;text-align:left;color:#697871;font-weight:500;transition:.15s}.nav-item:hover{background:#f4f8f5;color:var(--green)}.nav-item.active{background:var(--mint);color:var(--green);font-weight:700}.nav-icon{width:19px;text-align:center;font-size:18px;color:inherit}.sidebar-bottom{margin-top:auto;padding-top:15px}.user-chip{display:flex;align-items:center;gap:9px;padding:14px 6px 0;border-top:1px solid var(--line);margin-top:13px}.avatar{height:34px;width:34px;border-radius:50%;display:grid;place-items:center;background:#f6ead1;color:#815c18;font-weight:800}.user-info{flex:1;min-width:0}.user-info strong{display:block;font-size:12px;overflow:hidden;text-overflow:ellipsis}.user-info span{display:block;color:var(--muted);font-size:11px;margin-top:3px}.main-area{margin-left:248px;min-height:100vh;display:flex;flex-direction:column}.topbar{height:100px;padding:24px 34px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:rgba(255,255,255,.72)}.eyebrow{font-size:10px;letter-spacing:1.7px;color:#819189;font-weight:700}.topbar h1{font:800 25px Manrope;margin:5px 0 0;letter-spacing:-.8px}.top-actions{display:flex;align-items:center;gap:12px}.date-pill{padding:10px 13px;border:1px solid var(--line);border-radius:10px;background:white;color:#67756f;font-size:12px}.btn{border:1px solid transparent;border-radius:10px;padding:10px 15px;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:700;transition:transform .12s,background .12s}.btn:active{transform:scale(.98)}.btn.primary{background:var(--green);color:white;box-shadow:0 4px 10px #123d3218}.btn.primary:hover{background:var(--green2)}.btn.secondary{background:white;border-color:var(--line);color:#4e6158}.btn.danger{background:var(--redbg);color:var(--red)}.btn.small{font-size:12px;padding:7px 10px}.btn.full{width:100%;padding:13px}.icon-button{border:0;background:transparent;color:#6f7d76;border-radius:9px;padding:8px;font-size:17px}.icon-button:hover{background:#f1f5f2}.mobile-menu{display:none}.page-content{padding:27px 34px 34px;flex:1;max-width:1600px;width:100%;margin:0 auto}.app-footer{display:flex;justify-content:space-between;padding:16px 34px;color:#98a39e;font-size:10px;border-top:1px solid var(--line)}.grid{display:grid;gap:16px}.stats-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.stat-card,.panel,.content-card{background:var(--surface);border:1px solid var(--line);border-radius:15px;box-shadow:var(--shadow)}.stat-card{padding:18px 19px;min-height:137px;position:relative;overflow:hidden}.stat-head{display:flex;align-items:center;justify-content:space-between;color:#7d8b84;font-size:12px}.stat-icon{width:31px;height:31px;border-radius:10px;background:#eef5f0;display:grid;place-items:center;color:var(--green);font-size:16px}.stat-value{font:800 24px Manrope;letter-spacing:-.8px;margin:17px 0 6px;white-space:nowrap}.stat-foot{font-size:11px;color:#96a29c}.positive{color:#26835f!important}.negative{color:var(--red)!important}.dashboard-grid{grid-template-columns:minmax(0,1.55fr) minmax(280px,1fr);margin-top:17px}.panel{padding:20px;min-width:0}.panel-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px}.panel-head h2,.section-heading h2{font:700 15px Manrope;margin:0}.panel-head p{font-size:11px;color:var(--muted);margin:5px 0 0}.chart-wrap{height:230px;display:flex;align-items:end;gap:13px;padding:15px 4px 0;border-bottom:1px solid var(--line)}.chart-month{flex:1;min-width:0;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:end;gap:9px}.bars{height:185px;width:100%;display:flex;justify-content:center;align-items:end;gap:4px}.bar{width:min(22px,40%);border-radius:5px 5px 1px 1px;min-height:3px;background:#b8ddca}.bar.expense{background:#e9c978}.chart-month span{font-size:10px;color:#89958f}.legend{display:flex;gap:16px;font-size:11px;color:#7b8983}.legend i{display:inline-block;width:8px;height:8px;border-radius:3px;margin-right:6px}.legend .income-dot{background:#b8ddca}.legend .expense-dot{background:#e9c978}.quick-links{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.quick-link{border:1px solid var(--line);border-radius:12px;padding:14px;text-align:left;background:white;color:var(--text)}.quick-link:hover{border-color:#b7d6c4;background:#f9fcfa}.quick-link .ql-icon{width:31px;height:31px;display:grid;place-items:center;border-radius:9px;background:var(--mint);color:var(--green);font-size:17px;margin-bottom:10px}.quick-link strong{display:block;font-size:12px}.quick-link span{font-size:10px;color:var(--muted);display:block;margin-top:5px}.table-panel{margin-top:17px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;white-space:nowrap}th{text-align:left;color:#95a19b;font-size:10px;letter-spacing:.6px;font-weight:700;padding:12px 10px;border-bottom:1px solid var(--line)}td{padding:13px 10px;border-bottom:1px solid #f0f3f1;font-size:12px}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#fafcfb}.td-main{font-weight:700;color:#35463e}.td-sub{font-size:10px;color:#9aa49f;margin-top:4px}.amount{font-weight:700;font-variant-numeric:tabular-nums}.badge{display:inline-flex;align-items:center;padding:5px 8px;border-radius:7px;background:#f1f4f2;color:#78857e;font-size:10px;font-weight:700}.badge.income,.badge.paid{background:#eaf6ef;color:#287b55}.badge.expense,.badge.overdue{background:#fff0ee;color:#b94c4c}.badge.planned,.badge.pending{background:#fff6df;color:#946d1b}.row-actions{display:flex;gap:5px}.mini-action{border:1px solid var(--line);background:#fff;border-radius:7px;padding:5px 8px;font-size:11px;color:#697870}.mini-action:hover{background:#f2f7f4}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}.section-heading p{color:var(--muted);font-size:12px;margin:6px 0 0}.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:15px}.field-control,.filters input,.filters select{border:1px solid var(--line);border-radius:9px;padding:10px 11px;background:#fff;color:var(--text);min-width:0}.filters input{flex:1;min-width:150px}.empty{padding:35px 15px;text-align:center;color:#8b9991}.empty .empty-icon{font-size:28px;margin-bottom:10px}.empty strong{display:block;color:#52635a;margin-bottom:5px}.empty p{margin:0;font-size:12px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.form-field{display:flex;flex-direction:column;gap:7px;min-width:0}.form-field.full-span{grid-column:1/-1}.form-field label{font-size:11px;color:#64736b;font-weight:700}.form-field input,.form-field select,.form-field textarea{width:100%;border:1px solid #dfe7e2;border-radius:9px;background:white;padding:11px 12px;color:var(--text)}.form-field textarea{min-height:80px;resize:vertical}.modal-backdrop{position:fixed;inset:0;background:#10261f70;z-index:50;display:grid;place-items:center;padding:18px;backdrop-filter:blur(4px)}.modal{background:#fff;border-radius:17px;width:min(620px,100%);max-height:90vh;overflow:auto;box-shadow:0 24px 80px #081a1433}.modal-head{padding:21px 23px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.modal-head h2{font:800 18px Manrope;margin:0}.modal-body{padding:22px 23px}.modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:22px}.auth-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:24px;background:radial-gradient(ellipse at 50% 10%,#e0efe6 0,transparent 48%),var(--bg)}.auth-brand{padding:0;margin-bottom:24px}.auth-card{width:min(430px,100%);padding:30px;background:white;border:1px solid var(--line);border-radius:20px;box-shadow:0 20px 65px #183e2c0d}.auth-card h1{font:800 26px Manrope;letter-spacing:-.8px;margin:10px 0 8px}.auth-card p{color:var(--muted);font-size:13px;margin:0 0 23px}.auth-card form{display:grid;gap:15px}.auth-card label{display:grid;gap:8px;color:#5e6c64;font-weight:700;font-size:12px}.auth-card input{width:100%;border:1px solid #dfe7e2;border-radius:10px;padding:13px}.auth-foot{text-align:center;font-size:11px;color:#9aa49e;margin-top:18px}.auth-note{max-width:430px;text-align:center;font-size:10px;color:#8b9891;line-height:1.6;margin-top:18px}.toast{position:fixed;top:18px;left:50%;transform:translate(-50%,-150%);background:#173f32;color:white;padding:12px 18px;border-radius:10px;z-index:100;font-size:12px;box-shadow:0 8px 25px #0b251b33;transition:transform .25s;max-width:calc(100% - 28px)}.toast.show{transform:translate(-50%,0)}.toast.error{background:#9e3939}.loading{display:flex;align-items:center;gap:10px;color:#7f8e86;padding:50px;justify-content:center}.spinner{width:18px;height:18px;border:2px solid #dce9e1;border-top-color:var(--green);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.account-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.account-card{padding:18px}.account-card .account-type{font-size:11px;color:var(--muted)}.account-card h3{font:700 15px Manrope;margin:11px 0 5px}.account-card .balance{font:800 22px Manrope;margin:12px 0}.progress{height:6px;background:#edf1ee;border-radius:9px;overflow:hidden;margin:12px 0}.progress span{display:block;height:100%;background:#75b796;border-radius:9px}.notice{padding:14px 16px;border-radius:11px;background:#fff7e5;color:#826522;font-size:12px;line-height:1.6;margin-bottom:16px}.notice strong{display:block;margin-bottom:3px}.summary-row{display:flex;justify-content:space-between;gap:12px;padding:13px 0;border-bottom:1px solid var(--line)}.summary-row:last-child{border-bottom:0}.summary-row span{color:var(--muted)}.summary-row strong{font-variant-numeric:tabular-nums}.report-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.report-card{padding:20px}.report-card h3{font:700 14px Manrope;margin:0 0 7px}.report-card p{font-size:12px;color:var(--muted);line-height:1.6}.settings-row{display:flex;justify-content:space-between;align-items:center;padding:17px 0;border-bottom:1px solid var(--line);gap:20px}.settings-row:last-child{border-bottom:0}.settings-row strong{display:block}.settings-row span{display:block;color:var(--muted);font-size:11px;margin-top:5px}.file-input{display:none}
@media(max-width:1200px){.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.account-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.page-content{padding:23px}.topbar{padding:22px 23px}.dashboard-grid{grid-template-columns:minmax(0,1.3fr) minmax(250px,1fr)}}
@media(max-width:900px){.sidebar{transform:translateX(-102%);transition:transform .22s;box-shadow:12px 0 30px #123d3210}.sidebar.open{transform:translateX(0)}.main-area{margin-left:0}.mobile-menu{display:inline-block;margin-right:7px}.topbar{height:83px;padding:16px 18px;gap:10px}.topbar h1{font-size:21px}.topbar>div:nth-child(2){margin-right:auto}.date-pill{display:none}.page-content{padding:18px}.dashboard-grid{grid-template-columns:1fr}.app-footer{padding:15px 18px}.side-overlay{position:fixed;inset:0;background:#11251d60;z-index:9}}
@media(max-width:560px){.topbar{height:75px;padding:13px 12px}.topbar h1{font-size:18px}.topbar .eyebrow{font-size:8px}.top-actions{gap:5px}.top-actions .btn{padding:10px 11px;font-size:12px}.top-actions .btn span{display:none}.page-content{padding:13px}.stats-grid{gap:9px;grid-template-columns:repeat(2,minmax(0,1fr))}.stat-card{padding:14px;min-height:120px;border-radius:12px}.stat-head{font-size:10px;gap:5px}.stat-icon{width:26px;height:26px}.stat-value{font-size:19px;margin:14px 0 5px}.stat-foot{font-size:9px}.panel{padding:15px;border-radius:13px}.panel-head h2,.section-heading h2{font-size:14px}.chart-wrap{gap:7px}.bars{height:160px;gap:3px}.bar{width:36%}.chart-month span{font-size:9px}.quick-links{gap:8px}.quick-link{padding:12px}.table-panel{margin-top:12px}.section-heading{align-items:flex-start}.section-heading .btn{font-size:11px;padding:9px}.form-grid{grid-template-columns:1fr}.form-field.full-span{grid-column:auto}.modal-backdrop{padding:8px;align-items:end}.modal{border-radius:18px 18px 12px 12px;max-height:92vh}.modal-head{padding:18px}.modal-body{padding:18px}.account-grid,.report-grid{grid-template-columns:1fr}.app-footer{font-size:9px;gap:10px}.app-footer span:last-child{text-align:right}.auth-card{padding:23px}.auth-card h1{font-size:23px}.filters{display:grid;grid-template-columns:1fr 1fr}.filters input{grid-column:1/-1}.filters select{width:100%}}
:root[data-theme="dark"]{--bg:#101915;--surface:#18231d;--text:#e7eee9;--muted:#a0afa6;--line:#2a3930;--mint:#213d30;--shadow:0 8px 28px rgba(0,0,0,.12)}:root[data-theme="dark"] .topbar{background:rgba(24,35,29,.86)}:root[data-theme="dark"] .sidebar,:root[data-theme="dark"] .auth-card,:root[data-theme="dark"] .date-pill,:root[data-theme="dark"] .quick-link,:root[data-theme="dark"] .mini-action,:root[data-theme="dark"] .field-control,:root[data-theme="dark"] .filters input,:root[data-theme="dark"] .filters select,:root[data-theme="dark"] .form-field input,:root[data-theme="dark"] .form-field select,:root[data-theme="dark"] .form-field textarea,:root[data-theme="dark"] .modal{background:#18231d;color:var(--text);border-color:var(--line)}:root[data-theme="dark"] .nav-item:hover,:root[data-theme="dark"] tbody tr:hover{background:#202e26}:root[data-theme="dark"] th,:root[data-theme="dark"] td,:root[data-theme="dark"] .modal-head,:root[data-theme="dark"] .user-chip{border-color:var(--line)}:root[data-theme="dark"] .stat-icon,:root[data-theme="dark"] .quick-link .ql-icon{background:#263d30;color:#a9d7bb}:root[data-theme="dark"] .btn.secondary{background:#202e26;border-color:var(--line);color:#dce7df}:root[data-theme="dark"] .auth-screen{background:radial-gradient(ellipse at 50% 10%,#1c3b2c 0,transparent 48%),var(--bg)}
