:root{
  --ink:#2b211c;--muted:#756861;--paper:#f7f3ed;--panel:#fffdfa;--line:#e8dfd5;
  --berry:#9e2947;--berry-dark:#742039;--leaf:#315c49;--leaf-soft:#e1ece6;
  --cream:#f5dfb8;--gold:#d29b48;--danger:#b4233b;--shadow:0 16px 50px rgba(61,40,28,.09);
}
*{box-sizing:border-box}html{font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);background:var(--paper)}body{margin:0;min-height:100vh}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:inherit}
.eyebrow{margin:0 0 6px;color:var(--berry);font-size:11px;font-weight:800;letter-spacing:.13em;text-transform:uppercase}.eyebrow.light{color:#f3d7b0}.muted{color:var(--muted)}.fine-print{margin:16px 0 0;color:var(--muted);font-size:12px}
.brand-lockup{display:flex;align-items:center;gap:11px;font-size:18px}.brand-mark{display:grid;place-items:center;width:38px;height:38px;border-radius:13px;background:var(--berry);color:white;font-family:Georgia,serif;font-weight:800;box-shadow:0 8px 18px rgba(158,41,71,.23)}
.btn{border:0;border-radius:12px;padding:11px 16px;font-weight:750;transition:.2s ease}.btn:hover{transform:translateY(-1px)}.btn.primary{background:var(--berry);color:white;box-shadow:0 8px 18px rgba(158,41,71,.2)}.btn.primary:hover{background:var(--berry-dark)}.btn.secondary{background:white;color:var(--ink);border:1px solid var(--line)}.btn.cream{background:var(--cream);color:#4c3424}.btn.wide{width:100%}.text-btn{border:0;background:none;color:var(--berry);font-weight:750;padding:5px}.button-row{display:flex;gap:9px}
label{display:grid;gap:7px;color:#4f433d;font-size:13px;font-weight:700}input,select,textarea{width:100%;border:1px solid var(--line);border-radius:11px;background:white;color:var(--ink);padding:11px 12px;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--berry);box-shadow:0 0 0 3px rgba(158,41,71,.1)}textarea{min-height:86px;resize:vertical}
.login-layout{min-height:100vh;display:grid;grid-template-columns:1.05fr .95fr}.login-story{padding:58px clamp(32px,7vw,110px);background:linear-gradient(145deg,#2e5948,#173b31);color:white;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}.login-story:after{content:"";position:absolute;width:420px;height:420px;border:80px solid rgba(255,255,255,.04);border-radius:50%;right:-170px;bottom:-150px}.login-story .brand-mark{background:var(--cream);color:var(--berry)}.login-story h1{font-family:Georgia,serif;font-size:clamp(50px,7vw,92px);line-height:.95;letter-spacing:-.055em;margin:14px 0 25px}.login-story p:not(.eyebrow){max-width:520px;color:#dbe8e1;font-size:18px;line-height:1.6}.login-proof{display:flex;gap:10px;flex-wrap:wrap}.login-proof span{border:1px solid rgba(255,255,255,.22);border-radius:999px;padding:8px 13px;font-size:12px;font-weight:750}.login-panel{display:grid;place-items:center;padding:30px}.login-card,.setup-card{width:min(420px,100%);background:var(--panel);padding:38px;border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow)}.login-card h2,.setup-card h1{font-family:Georgia,serif;font-size:34px;margin:6px 0}.login-card label{margin-top:18px}.login-card .btn{margin-top:22px}.form-error{color:var(--danger);font-size:13px;font-weight:650}.setup-link{display:block;text-align:center;margin-top:18px;color:var(--muted);font-size:12px}.setup-page{display:grid;place-items:center;padding:30px;background:radial-gradient(circle at top left,#f1dfc8,transparent 35%),var(--paper)}.setup-card .brand-mark{margin-bottom:22px}.form-stack{display:grid;gap:15px}.notice{border-radius:12px;padding:12px 14px;margin:18px 0;font-size:13px}.notice.success{background:#e5f4e9;color:#245337}.notice.danger{background:#fce7eb;color:#8f2039}
.app-shell{min-height:100vh;display:grid;grid-template-columns:245px 1fr}.sidebar{position:sticky;top:0;height:100vh;background:#fffaf4;border-right:1px solid var(--line);padding:25px 18px;display:flex;flex-direction:column;z-index:20}.sidebar .brand-lockup{padding:0 10px 25px}.main-nav{display:grid;gap:6px}.nav-item{display:flex;align-items:center;gap:12px;border:0;background:transparent;padding:12px 13px;border-radius:12px;color:#6d6058;text-align:left;font-weight:700}.nav-item span{width:22px;text-align:center;font-size:18px}.nav-item:hover{background:#f4ebe3;color:var(--ink)}.nav-item.active{background:var(--leaf);color:white;box-shadow:0 8px 20px rgba(49,92,73,.18)}.sidebar-foot{margin-top:auto;border-top:1px solid var(--line);padding:18px 8px 0}.user-chip{display:flex;align-items:center;gap:10px}.user-chip>span{display:grid;place-items:center;width:34px;height:34px;background:var(--cream);border-radius:50%;font-weight:800}.user-chip div{min-width:0}.user-chip strong,.user-chip small{display:block;overflow:hidden;text-overflow:ellipsis}.user-chip strong{font-size:13px}.user-chip small{color:var(--muted);font-size:10px;margin-top:2px}.sidebar-foot .text-btn{margin-top:12px}
.app-main{min-width:0;padding:0 34px 50px}.topbar{min-height:105px;display:flex;align-items:center;gap:18px}.topbar h1{font-family:Georgia,serif;font-size:30px;margin:0}.period-picker{margin-left:auto;display:flex;align-items:end;gap:8px}.period-picker label{font-size:10px;text-transform:uppercase;letter-spacing:.08em}.period-picker input{padding:9px;width:145px}.menu-btn{display:none;border:1px solid var(--line);background:white;border-radius:10px;padding:9px}.view{display:none;animation:fadeIn .22s ease}.view.active{display:block}@keyframes fadeIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.hero-strip{background:linear-gradient(120deg,var(--berry),#74263d);border-radius:22px;padding:28px 32px;color:white;display:flex;align-items:center;justify-content:space-between;box-shadow:var(--shadow)}.hero-strip h2{font-family:Georgia,serif;font-size:31px;margin:3px 0}.hero-strip p:not(.eyebrow){margin:0;color:#f3dce2}
.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:18px 0}.metric-card{background:var(--panel);border:1px solid var(--line);border-radius:17px;padding:19px;box-shadow:0 8px 25px rgba(70,48,34,.04)}.metric-card span{display:block;color:var(--muted);font-size:12px;font-weight:700}.metric-card strong{display:block;font-family:Georgia,serif;font-size:29px;margin:9px 0 5px}.metric-card small{color:#9a8d85}.metric-card.accent{background:var(--leaf);border-color:var(--leaf);color:white}.metric-card.accent span,.metric-card.accent small{color:#dbe9e2}.compact-metrics{grid-template-columns:repeat(3,1fr)}
.dashboard-grid,.report-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:16px;margin:16px 0}.report-grid{grid-template-columns:repeat(2,1fr)}.panel{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:21px;box-shadow:0 8px 25px rgba(70,48,34,.04)}.panel-head,.section-actions{display:flex;align-items:center;justify-content:space-between;gap:14px}.panel-head h3,.statement-card h3{margin:0;font-family:Georgia,serif;font-size:21px}.section-actions{margin-bottom:16px}.section-actions p{margin:0}.legend{display:flex;gap:12px;color:var(--muted);font-size:11px}.legend span:before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px}.income-dot:before{background:var(--leaf)}.expense-dot:before{background:var(--berry)}
.bar-chart{height:240px;display:flex;align-items:end;gap:14px;padding-top:25px}.chart-month{flex:1;height:100%;display:flex;align-items:end;justify-content:center;gap:4px;position:relative;padding-bottom:28px;border-bottom:1px solid var(--line)}.chart-month span{position:absolute;bottom:5px;font-size:10px;color:var(--muted)}.chart-bar{width:min(22px,34%);border-radius:7px 7px 2px 2px;min-height:2px}.chart-bar.income{background:var(--leaf)}.chart-bar.expense{background:#d78a9e}.ratio-display{text-align:center;padding:18px 0}.ratio-display strong{display:block;font-family:Georgia,serif;font-size:50px;color:var(--berry)}.ratio-display span{color:var(--muted);font-size:12px;font-weight:700}.mini-metrics{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line)}.mini-metrics div{padding:14px 8px}.mini-metrics div:nth-child(odd){border-right:1px solid var(--line)}.mini-metrics div:nth-child(-n+2){border-bottom:1px solid var(--line)}.mini-metrics span,.mini-metrics strong{display:block}.mini-metrics span{font-size:11px;color:var(--muted)}.mini-metrics strong{font-size:16px;margin-top:4px}
.stock-list{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.stock-item{border:1px solid var(--line);border-radius:13px;padding:13px}.stock-item strong,.stock-item span{display:block}.stock-item span{color:var(--danger);font-size:12px;margin-top:5px;font-weight:750}.stock-empty{color:var(--leaf);font-weight:700}
.table-panel{padding:0;overflow:hidden}.table-scroll{overflow:auto}table{width:100%;border-collapse:collapse;min-width:760px}th,td{text-align:left;padding:14px 16px;border-bottom:1px solid var(--line);font-size:13px}th{color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.08em;background:#fbf7f2;position:sticky;top:0}tbody tr:hover{background:#fffcf7}.money{font-weight:800}.money.income{color:var(--leaf)}.money.expense{color:var(--berry)}.badge{display:inline-flex;border-radius:999px;padding:5px 9px;font-size:10px;font-weight:800}.badge.good{background:var(--leaf-soft);color:var(--leaf)}.badge.low{background:#fbe6ea;color:var(--danger)}.icon-btn{border:0;background:transparent;color:var(--berry);font-weight:750}.empty-cell{text-align:center;color:var(--muted);padding:36px}
.statement-list{margin:22px 0 0}.statement-list div{display:flex;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--line)}.statement-list dt{color:var(--muted)}.statement-list dd{font-weight:800}.statement-list .total{font-size:17px;border-bottom:0;border-top:2px solid var(--ink);margin-top:9px}.breakdown-list{display:grid;gap:11px;margin-top:18px}.breakdown-row{display:grid;grid-template-columns:1fr auto;gap:6px;align-items:center}.breakdown-row strong{font-size:13px}.breakdown-track{grid-column:1/-1;height:6px;border-radius:99px;background:#eee5dc;overflow:hidden}.breakdown-fill{height:100%;background:var(--berry);border-radius:99px}.breakdown-row.account .breakdown-fill{background:var(--leaf)}
.toast{position:fixed;right:25px;bottom:25px;background:var(--ink);color:white;border-radius:12px;padding:13px 17px;z-index:100;box-shadow:var(--shadow);max-width:360px;font-size:13px}.toast.error{background:var(--danger)}
dialog{border:0;background:transparent;padding:20px;width:min(680px,100%);max-height:96vh}dialog::backdrop{background:rgba(35,26,22,.45);backdrop-filter:blur(3px)}.dialog-card{background:var(--panel);border-radius:22px;padding:27px;box-shadow:0 30px 100px rgba(0,0,0,.25);position:relative;max-height:90vh;overflow:auto}.dialog-close{position:absolute;right:16px;top:13px;border:0;background:transparent;font-size:27px;color:var(--muted)}.dialog-card h2{font-family:Georgia,serif;margin:3px 0 20px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-grid .full{grid-column:1/-1}.form-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:20px}.sale-line{display:grid;grid-template-columns:1fr 90px 110px 32px;gap:8px;align-items:end;margin:10px 0}.sale-line button{border:0;background:#f7e7ea;color:var(--danger);border-radius:9px;height:42px}.sale-total{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:15px;margin-top:16px;font-size:19px;font-weight:800}
@media(max-width:1100px){.metric-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}.stock-list{grid-template-columns:repeat(2,1fr)}}
@media(max-width:820px){.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;left:-270px;width:245px;transition:.2s ease;box-shadow:var(--shadow)}.sidebar.open{left:0}.app-main{padding:0 16px 35px}.menu-btn{display:block}.topbar{flex-wrap:wrap;padding:18px 0}.period-picker{order:3;width:100%;margin-left:0}.period-picker label{flex:1}.period-picker input{width:100%}.login-layout{grid-template-columns:1fr}.login-story{display:none}.report-grid{grid-template-columns:1fr}.hero-strip{padding:24px;align-items:flex-end}.hero-strip h2{font-size:25px}}
@media(max-width:560px){.metric-grid,.compact-metrics{grid-template-columns:1fr}.stock-list{grid-template-columns:1fr}.period-picker{display:grid;grid-template-columns:1fr 1fr}.period-picker .btn{grid-column:1/-1}.hero-strip{display:block}.hero-strip .btn{margin-top:18px}.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:1}.sale-line{grid-template-columns:1fr 65px}.sale-line .line-price{grid-column:1}.dialog-card{padding:22px 18px}.login-panel{padding:18px}.login-card{padding:27px}}
