/* Monthly Paycheck Planner (by MEVLLC) — calm sage & warm cream */
:root{
  --accent-base:#4E8471;
  --bg:#F6F2EA;--bg-2:#EFE9DD;--surface:#FFFDF9;--surface-2:#F4EFE6;--line:#E5DED0;--line-2:#D9D0BF;
  --ink:#1D2A27;--ink-2:#45524E;--muted:#7A8580;--track:#ECE6DA;
  --accent:var(--accent-base);--accent-ink:#fff;--accent-soft:color-mix(in srgb,var(--accent) 12%,var(--surface));--accent-line:color-mix(in srgb,var(--accent) 30%,var(--line));
  --sun:#E8B65A;--good:#3E8E62;--bad:#C0563F;--warn:#C98A2B;
  --c-pay:#3E9A68;--c-bill:#D49A3A;--c-sub:#7B6FB0;--c-save:#2F8C84;--c-debt:#C0674A;--c-rem:#8C9691;
  --r:18px;--r-sm:12px;--shadow:0 1px 2px rgba(40,35,20,.04),0 6px 24px -10px rgba(40,35,20,.14);
  --serif:"Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,serif;
  --sans:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,"Helvetica Neue",Arial,sans-serif;
  color-scheme:light;
}
[data-theme=dark]{
  --bg:#0F1614;--bg-2:#131C1A;--surface:#17211F;--surface-2:#1D2926;--line:#26332F;--line-2:#31403B;
  --ink:#E6EDE9;--ink-2:#B7C4BE;--muted:#87958F;--track:#25312E;
  --accent:color-mix(in srgb,var(--accent-base) 78%,#fff);--accent-ink:#0F1614;--accent-soft:color-mix(in srgb,var(--accent) 16%,var(--surface));
  --sun:#F0C673;--good:#5DB585;--bad:#E07A62;--c-pay:#59B884;--c-bill:#E2AE55;--c-sub:#9C91D3;--c-save:#4FB3AA;--c-debt:#E08667;--c-rem:#98A39E;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 10px 30px -12px rgba(0,0,0,.6);color-scheme:dark;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:80px}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 var(--sans);-webkit-font-smoothing:antialiased;font-feature-settings:"tnum" 1,"cv11" 1;min-height:100vh}
body.noscroll{overflow:hidden}
a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}
h1,h2,h3{margin:0;font-weight:600;letter-spacing:-.01em}
h1{font-family:var(--serif);font-size:32px;line-height:1.15;font-weight:600}
h2{font-size:16px}h3{font-size:16px}
p{margin:.4em 0}
button,input,select{font:inherit;color:inherit}
.ic{width:20px;height:20px;flex:none}
.muted{color:var(--muted)}.sm{font-size:13px}.center{text-align:center}.neg{color:var(--bad)!important}.pos{color:var(--good)}.ok{color:var(--good)}
.mt{margin-top:22px}.pad{padding:8px 2px}.pad-t{padding-top:28px}
/* layout */
#app{min-height:100vh}
.side{position:fixed;inset:0 auto 0 0;width:248px;padding:22px 16px;display:flex;flex-direction:column;gap:14px;background:var(--bg-2);border-right:1px solid var(--line);z-index:5;overflow-y:auto}
.brand{display:flex;align-items:center;gap:11px;padding:2px 8px}
.brand .logo{width:38px;height:38px;flex:none}
.brand b{display:block;font-family:var(--serif);font-size:16.5px;line-height:1.15;letter-spacing:0;font-weight:600}
.brand span{display:block;font-size:12px;color:var(--muted);margin-top:2px;letter-spacing:.04em}
.navlist{display:flex;flex-direction:column;gap:2px;margin-top:8px}
.nv{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:12px;color:var(--ink-2);font-weight:500;border:0;background:none;cursor:pointer;text-decoration:none!important}
.nv:hover{background:var(--surface-2)}
.nv.on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}
.nv.on .ic{color:var(--accent)}
.side-foot{margin-top:auto;font-size:12px;color:var(--muted);padding:0 10px}
.side-foot a{color:var(--muted)}
.mainwrap{margin-left:248px}
.view{max-width:1180px;margin:0 auto;padding:34px 40px 60px}
.topbar,.tabbar{display:none}
.demobar{display:flex;align-items:center;justify-content:center;gap:8px;padding:9px 16px;background:var(--accent-soft);color:var(--ink-2);font-size:13.5px;border-bottom:1px solid var(--accent-line)}
.demobar .ic{width:16px;height:16px;color:var(--accent)}
/* sync pill */
.syncpill{display:inline-flex;align-items:center;gap:8px;padding:7px 12px;border-radius:999px;border:1px solid var(--line);background:var(--surface);font-size:12.5px;color:var(--ink-2);cursor:pointer;max-width:100%;white-space:nowrap}
.syncpill span{overflow:hidden;text-overflow:ellipsis}.syncpill .s{display:none}
.syncpill i{width:8px;height:8px;border-radius:50%;background:var(--muted);flex:none}
.syncpill.synced i{background:var(--good)}.syncpill.syncing i,.syncpill.pending i{background:var(--warn);animation:pulse 1.2s infinite}
.syncpill.reauth i,.syncpill.error i{background:var(--bad)}.syncpill.reauth{border-color:color-mix(in srgb,var(--bad) 40%,var(--line))}
.syncpill.offline i{background:var(--c-rem)}.syncpill.demo i{background:var(--sun)}.syncpill.local i{background:var(--accent)}
@keyframes pulse{50%{opacity:.35}}
.side .syncpill{align-self:flex-start;margin:0 6px}
/* page head */
.phead{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:22px}
.ph-t{min-width:0}
.sub{color:var(--muted);margin:4px 0 0;font-size:14.5px}
.hint{color:var(--muted);font-size:13.5px;margin:-8px 0 14px}
/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:9px 16px;border-radius:12px;border:1px solid var(--line-2);background:var(--surface);color:var(--ink);font-weight:600;font-size:14.5px;cursor:pointer;white-space:nowrap;text-decoration:none!important;transition:transform .08s,background .15s,box-shadow .15s}
.btn:hover{background:var(--surface-2)}.btn:active{transform:translateY(1px)}
.btn .ic{width:18px;height:18px}
.btn.primary{background:var(--accent);border-color:transparent;color:var(--accent-ink);box-shadow:0 6px 18px -8px color-mix(in srgb,var(--accent) 80%,transparent)}
.btn.primary:hover{background:color-mix(in srgb,var(--accent) 88%,#000)}
.btn.ghost{background:transparent}.btn.ghost:hover{background:var(--surface-2)}
.btn.sm{min-height:34px;padding:6px 12px;font-size:13px;border-radius:10px}
.btn.block{width:100%}.btn.danger{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 35%,var(--line))}
.icon-btn{display:inline-grid;place-items:center;width:36px;height:36px;border-radius:10px;border:0;background:transparent;color:var(--muted);cursor:pointer;flex:none}
.icon-btn:hover{background:var(--surface-2);color:var(--ink)}.icon-btn .ic{width:18px;height:18px}
.row-btns{display:flex;gap:8px;align-items:center}.row-btns.wrap{flex-wrap:wrap}.row-btns.nowrap input{flex:1;min-width:0}
.lnk{font-size:13.5px;font-weight:600}
/* cards */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:20px 22px;box-shadow:var(--shadow);min-width:0}
.ch{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px;min-height:28px}
.ch h2{display:flex;align-items:center;gap:8px}
.grid{display:grid;gap:18px;margin-bottom:18px}
.g2{grid-template-columns:1fr 1fr}.g3{grid-template-columns:repeat(3,1fr)}.g31{grid-template-columns:1.7fr 1fr;align-items:start}.g13{grid-template-columns:1fr 1.7fr;align-items:start}
.stack{display:flex;flex-direction:column;gap:18px;min-width:0}
section.card{margin-bottom:18px}.grid>section.card,.stack>section.card{margin-bottom:0}
.eyebrow{font-size:12.5px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
/* hero */
.hero{display:grid;grid-template-columns:1.25fr 1fr;gap:26px;padding:28px 30px;background:linear-gradient(135deg,var(--accent-soft),var(--surface) 70%);border-color:var(--accent-line)}
.hero-num{font-family:var(--serif);font-size:64px;line-height:1.05;font-weight:600;letter-spacing:-.02em;margin:6px 0 6px;color:var(--ink)}
.hero-num.neg{color:var(--bad)}.hero-num.ok{color:var(--good)}
.bm small{font-size:.45em;color:var(--muted);margin-left:2px;vertical-align:.95em;letter-spacing:0}
.hero-note{color:var(--ink-2);max-width:52ch;margin:0}
.hero-side{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-content:center}
.stat{background:color-mix(in srgb,var(--surface) 80%,transparent);border:1px solid var(--line);border-radius:14px;padding:12px 14px;min-width:0}
.stat small{display:block;color:var(--muted);font-size:12.5px}
.stat b{display:block;font-size:19px;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stat em{font-style:normal;color:var(--muted);font-size:12.5px}
/* KPIs */
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}.kpis.k3{grid-template-columns:repeat(3,1fr)}
.kpi{padding:16px 18px}
.kpi small{display:block;color:var(--muted);font-size:13px;font-weight:500}
.kpi b{display:block;font-size:25px;font-weight:650;letter-spacing:-.01em;margin:2px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi em{font-style:normal;color:var(--muted);font-size:12.5px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi.accent{background:var(--accent-soft);border-color:var(--accent-line)}
.ellip{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* month tabs */
.mtabs{display:flex;align-items:center;gap:10px;margin:-6px 0 18px;min-width:0}
.ysel{display:flex;align-items:center;gap:2px;flex:none}
.ysel.big b{font-size:18px;padding:0 6px}
.ylab{font-weight:700;font-size:14px;padding:0 2px}
.ybtn{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;border:1px solid var(--line);background:var(--surface);cursor:pointer;color:var(--ink-2)}
.ybtn:hover{background:var(--surface-2)}.ybtn .ic{width:16px;height:16px}
.mscroll{position:relative;display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;padding:3px;background:var(--surface-2);border:1px solid var(--line);border-radius:12px;min-width:0}
.mscroll::-webkit-scrollbar{display:none}
.mtab{flex:none;border:0;background:none;padding:6px 12px;border-radius:9px;font-size:13.5px;font-weight:600;color:var(--muted);cursor:pointer;position:relative}
.mtab:hover{color:var(--ink)}.mtab.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.08)}
.mtab.cur::after{content:"";position:absolute;left:50%;bottom:2px;width:4px;height:4px;margin-left:-2px;border-radius:50%;background:var(--accent)}
/* bars */
.bar{height:8px;background:var(--track);border-radius:99px;overflow:hidden}
.bar i{display:block;height:100%;border-radius:99px;transition:width .4s}
.bar.lg{height:12px}
.stackbar{display:flex;height:16px;background:var(--track);border-radius:99px;overflow:hidden}
.stackbar i{display:block;height:100%}.sb-spent{background:var(--accent)}.sb-bills{background:var(--c-bill)}
.legend{display:flex;gap:14px;font-size:12.5px;color:var(--muted);margin-top:12px;flex-wrap:wrap}
.legend span{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.legend i{width:10px;height:10px;border-radius:3px;display:inline-block}
.ch .legend{margin-top:0}
/* budget vs actual */
.bva{display:flex;flex-direction:column;gap:12px}
.bva-l{display:flex;justify-content:space-between;gap:8px;font-size:13.5px;margin-bottom:5px}
.bva-l span{font-weight:550;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bva-l small{color:var(--muted);font-size:12.5px;white-space:nowrap}
.bva-b{position:relative;height:10px}
.bva-b i{position:absolute;left:0;top:0;height:100%;border-radius:99px}
.bva-b .plan{background:var(--track)}.bva-b .act{opacity:.95}
/* donut */
.donut-wrap{display:flex;align-items:center;gap:24px}
.donut{position:relative;flex:none}
.donut svg{display:block}
.donut-c{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
.donut-c small{color:var(--muted);font-size:12px}.donut-c b{font-size:20px}
.dlegend{list-style:none;margin:0;padding:0;flex:1;min-width:0;display:flex;flex-direction:column;gap:7px}
.dlegend li{display:grid;grid-template-columns:10px 1fr auto 38px;align-items:center;gap:9px;font-size:13.5px}
.dlegend i{width:10px;height:10px;border-radius:3px}
.dlegend span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dlegend small{color:var(--muted);text-align:right}
.ring{flex:none}.ring-t{font-size:15px;font-weight:700;fill:var(--ink)}
/* event lists */
.evs{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
.evs.cols{display:grid;grid-template-columns:1fr 1fr;column-gap:18px}
.ev{display:flex;align-items:center;gap:11px;padding:9px 6px;border-radius:12px;min-width:0}
.ev:hover{background:var(--surface-2)}
.ev .dot{width:8px;height:8px;border-radius:50%;flex:none}
.ev-t{flex:1;min-width:0}.ev-t.click{cursor:pointer}
.ev-t b{display:block;font-weight:550;font-size:14.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ev-t small{color:var(--muted);font-size:12.5px}
.ev .amt,.tx .amt{font-weight:650;white-space:nowrap}
.ev.done:not(.pay) .ev-t b{text-decoration:line-through;text-decoration-color:var(--muted);color:var(--muted)}.ev.done:not(.pay) .amt{color:var(--muted)}.ev.pay.done .amt{color:var(--good)}
.ev.late .ev-t small{color:var(--bad)}
.chk{width:26px;height:26px;border-radius:50%;border:2px solid var(--line-2);background:transparent;display:grid;place-items:center;cursor:pointer;flex:none;color:transparent;padding:0;transition:.15s}
.chk .ic{width:14px;height:14px;stroke-width:3}
.chk:hover{border-color:var(--accent);color:var(--accent)}
.ev.done .chk{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
/* empty states */
.empty{text-align:center;padding:26px 12px;color:var(--muted)}
.empty>.ic{width:34px;height:34px;color:var(--accent);opacity:.8;margin-bottom:6px}
.empty h3{color:var(--ink);font-family:var(--serif);font-size:19px;margin-bottom:4px}
.empty p{max-width:40ch;margin:0 auto 14px;font-size:14px}
/* mini rows */
.mini{margin-bottom:14px}.mini:last-child{margin-bottom:0}
.mini-h{display:flex;justify-content:space-between;gap:10px;font-size:14px;margin-bottom:6px}
.mini-h b{font-weight:550;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mini-h small{color:var(--muted)}.mini-h span{white-space:nowrap}
.debt-mini{display:flex;gap:24px;margin-bottom:12px}.debt-mini small{display:block;color:var(--muted);font-size:12.5px}.debt-mini b{font-size:20px}
.glist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px;font-size:14.5px}
.glist li{display:flex;gap:10px;align-items:center}
.gs{width:10px;height:10px;border-radius:50%;display:inline-block;flex:none;border:2px solid var(--muted)}
.gs.progress{border-color:var(--warn);background:color-mix(in srgb,var(--warn) 35%,transparent)}.gs.done{border-color:var(--good);background:var(--good)}
/* transactions */
.txbar{display:flex;flex-direction:column;gap:12px;margin-bottom:8px}
.txbar input[type=search]{width:100%;max-width:360px}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{display:inline-flex;align-items:center;gap:7px;padding:6px 12px;border-radius:999px;border:1px solid var(--line);background:var(--surface);font-size:13px;font-weight:550;cursor:pointer;color:var(--ink-2)}
.chip i{width:8px;height:8px;border-radius:50%;background:var(--tc,var(--muted))}
.chip.on{background:var(--ink);color:var(--surface);border-color:var(--ink)}
.chips.big .chip{padding:9px 14px;font-size:14px}
.chips.big .chip.on{background:color-mix(in srgb,var(--tc) 16%,var(--surface));color:var(--ink);border-color:var(--tc)}
.chips.big .chip:not(.on){opacity:.6}
.dayh{display:flex;justify-content:space-between;padding:14px 6px 6px;font-size:12.5px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--line)}
.txs{list-style:none;margin:0;padding:0}
.tx{display:flex;align-items:center;gap:12px;padding:11px 6px;border-bottom:1px solid var(--line);cursor:pointer;min-width:0}
.tx:last-child{border-bottom:0}.tx:hover{background:var(--surface-2)}
.txdot{width:10px;height:10px;border-radius:50%;flex:none}
.tx-t{flex:1;min-width:0}.tx-t b{display:block;font-weight:550;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tx-t small{color:var(--muted);font-size:12.5px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tag{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;background:color-mix(in srgb,var(--tc) 14%,var(--surface));color:color-mix(in srgb,var(--tc) 75%,var(--ink));white-space:nowrap;flex:none}
.tag i{width:6px;height:6px;border-radius:50%;background:var(--tc)}
/* budget */
.plan-hero{display:grid;grid-template-columns:1.2fr 1fr;gap:24px;align-items:center;padding:26px 30px;background:linear-gradient(135deg,var(--accent-soft),var(--surface) 70%);border-color:var(--accent-line)}
.plan-math{display:grid;gap:10px}
.plan-math div{display:flex;justify-content:space-between;gap:10px;padding:10px 14px;border-radius:12px;background:var(--surface);border:1px solid var(--line)}
.plan-math small{color:var(--muted);font-size:13.5px}
.envs{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px}
.env{border:1px solid var(--line);border-radius:14px;padding:12px 14px;background:var(--surface);min-width:0}
.env-h{display:flex;align-items:center;gap:9px;margin-bottom:10px}
.env-h b{flex:1;min-width:0;font-weight:600;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.env-in{display:flex;align-items:center;gap:2px;border:1px solid var(--line-2);border-radius:9px;padding:0 8px;background:var(--bg);width:104px;flex:none}
.env-in span{color:var(--muted);font-size:13px}
.env-in input{border:0!important;background:transparent!important;padding:6px 0!important;width:100%;text-align:right;font-weight:650;box-shadow:none!important;min-height:0!important}
.env-f{display:flex;justify-content:space-between;font-size:12.5px;margin-top:7px;gap:8px}
/* calendar */
.calh{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.calh h2{font-family:var(--serif);font-size:22px}
.cgrid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}
.cw{text-align:center;font-size:12px;font-weight:700;color:var(--muted);padding:4px 0;text-transform:uppercase;letter-spacing:.06em}
.cd{min-height:92px;border:1px solid var(--line);border-radius:12px;background:var(--surface);padding:6px 7px;display:flex;flex-direction:column;align-items:flex-start;gap:3px;cursor:pointer;text-align:left;min-width:0;overflow:hidden}
.cd.blank{border:0;background:none;cursor:default}
.cd:hover{border-color:var(--accent-line)}
.cd .cn{font-size:13px;font-weight:600;color:var(--ink-2)}
.cd.today{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.cd.today .cn{color:var(--accent);font-weight:800}
.cd.sel{background:var(--accent-soft);border-color:var(--accent)}
.cdots{display:none;gap:3px}
.cdots i{width:7px;height:7px;border-radius:50%}.cdots i.p{opacity:.35}
.cl{display:flex;flex-direction:column;gap:2px;width:100%;min-width:0}
.cl em{font-style:normal;font-size:11px;line-height:1.3;padding:1px 5px;border-radius:5px;background:color-mix(in srgb,var(--ec) 16%,var(--surface));color:color-mix(in srgb,var(--ec) 70%,var(--ink));white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-left:2px solid var(--ec)}
.cl em.more{background:none;border:0;color:var(--muted);padding-left:2px}
.legend.wrap{margin-top:16px}
.manage{margin-top:16px;border-top:1px solid var(--line);padding-top:12px}
.manage summary{cursor:pointer;font-weight:600;font-size:14px;color:var(--ink-2);padding:4px 0}
.mlist{list-style:none;margin:8px 0 0;padding:0}
.mlist li{display:grid;grid-template-columns:8px 1fr auto auto 18px;align-items:center;gap:10px;padding:9px 6px;border-radius:10px;cursor:pointer;font-size:14px}
.mlist li:hover{background:var(--surface-2)}.mlist .dot{width:8px;height:8px;border-radius:50%}
.mlist .ml-n{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mlist small{color:var(--muted)}.mlist .ic{width:15px;height:15px;color:var(--muted)}
/* savings */
.fund{display:flex;flex-direction:column;gap:12px}
.fund-h{display:flex;gap:14px;align-items:center}
.fund-tt{flex:1;min-width:0}.fund-tt h3{font-family:var(--serif);font-size:19px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fund-n b{font-size:24px;font-weight:650}.fund-n span{color:var(--muted);margin-left:6px}
.fund-f{display:flex;justify-content:space-between;font-size:13px;color:var(--muted);gap:8px}
/* debt */
.debt-hero{display:grid;grid-template-columns:1.3fr 1fr;gap:24px;align-items:center;padding:26px 30px;background:linear-gradient(135deg,var(--accent-soft),var(--surface) 70%);border-color:var(--accent-line)}
.debt-hero .hero-num{font-size:46px}
.debt-side{display:grid;grid-template-columns:1fr 1fr;gap:12px}.debt-side .bar{grid-column:1/-1}
.seg{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:16px}
.seg.s3{grid-template-columns:repeat(3,1fr)}.seg.s2{grid-template-columns:1fr 1fr}
.seg button{display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:12px 14px;border-radius:14px;border:1.5px solid var(--line);background:var(--surface);cursor:pointer;text-align:left}
.seg.s3 button,.seg.s2 button{flex-direction:row;align-items:center;gap:8px;justify-content:center}
.seg button small{color:var(--muted);font-size:12.5px;line-height:1.35}
.seg button.on{border-color:var(--accent);background:var(--accent-soft)}
.seg button.on .ic{color:var(--accent)}
.compare{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:14px 0 6px}
.compare div{border:1px solid var(--line);border-radius:14px;padding:12px 14px}
.compare div.on{border-color:var(--accent-line);background:var(--accent-soft)}
.compare small{display:block;color:var(--muted);font-size:12.5px}.compare b{display:block;font-size:22px}.compare em{font-style:normal;font-size:12.5px;color:var(--muted)}
.linewrap .line{display:block;width:100%;height:140px}
.lineax{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);margin-top:6px}
.porder{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.porder li{display:flex;gap:14px;padding:14px;border:1px solid var(--line);border-radius:14px;min-width:0}
.porder li.focus{border-color:var(--accent-line);background:var(--accent-soft)}
.porder li.paid{opacity:.7}
.pn{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--surface-2);font-weight:700;flex:none;font-size:14px}
.focus .pn{background:var(--accent);color:var(--accent-ink)}.paid .pn{background:var(--good);color:#fff}.pn .ic{width:16px;height:16px}
.pd{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
.pd-h{display:flex;justify-content:space-between;gap:10px}.pd-h b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pd-h span{font-weight:650;white-space:nowrap}
.pd small{color:var(--muted);font-size:12.5px}
.pd-a{display:flex;gap:6px;margin-top:4px}
/* goals */
.gcol{display:flex;flex-direction:column;gap:8px}
.gcol .ch h2{gap:10px}.count{font-size:12.5px;font-weight:700;color:var(--muted);background:var(--surface-2);padding:2px 9px;border-radius:99px}
.goal{display:flex;gap:12px;align-items:flex-start;padding:12px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}
.goal.done .goal-t b{color:var(--muted);text-decoration:line-through}
.gstat{width:26px;height:26px;border-radius:50%;border:2px solid var(--line-2);background:transparent;cursor:pointer;flex:none;display:grid;place-items:center;padding:0;color:#fff}
.gstat.progress{border-color:var(--warn);background:conic-gradient(var(--warn) 0 50%,transparent 50% 100%)}
.gstat.done{border-color:var(--good);background:var(--good)}.gstat .ic{width:14px;height:14px;stroke-width:3}
.goal-t{flex:1;min-width:0;cursor:pointer}.goal-t b{display:block;font-weight:550}.goal-t small{color:var(--muted);font-size:12.5px}
/* year */
.cols12{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:8px;height:220px;align-items:end}
.c12{display:flex;flex-direction:column;align-items:center;height:100%;gap:6px;min-width:0}
.c12b{flex:1;width:100%;display:flex;align-items:flex-end;justify-content:center;gap:3px;border-bottom:1px solid var(--line)}
.c12b i{width:38%;max-width:18px;border-radius:5px 5px 0 0;min-height:2px}
.c12b .inc{background:var(--c-pay)}.c12b .sp{background:var(--accent)}
.c12>span{font-size:12px;color:var(--muted)}.c12 em{font-style:normal}
.tablewrap{overflow-x:auto}
.tbl{width:100%;border-collapse:collapse;font-size:14px}
.tbl th,.tbl td{text-align:right;padding:8px 8px;border-bottom:1px solid var(--line);white-space:nowrap}
.tbl th:first-child,.tbl td:first-child{text-align:left}
.tbl th{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.tbl tr.dim td{color:var(--muted)}.tbl tfoot td{font-weight:700;border-bottom:0}
/* settings */
.lbl{font-size:13px;font-weight:600;color:var(--ink-2);margin:14px 0 8px}
.swatches{display:flex;gap:10px;flex-wrap:wrap}
.sw{width:34px;height:34px;border-radius:50%;background:var(--sw);border:3px solid var(--surface);box-shadow:0 0 0 1px var(--line-2);cursor:pointer;position:relative;padding:0}
.sw.on{box-shadow:0 0 0 2px var(--ink)}.sw input{position:absolute;opacity:0;inset:0;cursor:pointer}
.catlist{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:4px}
.catlist li{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;cursor:pointer;font-size:14px;min-width:0}
.catlist li span:not(.txdot){flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.catlist li:hover{background:var(--surface-2)}.catlist .ic{width:15px;height:15px;color:var(--muted)}
.ticks{list-style:none;padding:0;margin:10px 0 16px;display:flex;flex-direction:column;gap:7px;font-size:14px;color:var(--ink-2)}
.ticks li{padding-left:24px;position:relative}
.ticks li::before{content:"";position:absolute;left:2px;top:5px;width:11px;height:6px;border-left:2px solid var(--accent);border-bottom:2px solid var(--accent);transform:rotate(-45deg)}
.gstate{display:flex;flex-direction:column;align-items:flex-start;gap:6px;margin-bottom:14px}
.gstate .syncpill{cursor:default}
/* forms */
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px;min-width:0}
.field>span{font-size:13.5px;font-weight:600;color:var(--ink-2)}
.field>span em{font-style:normal;font-weight:400;color:var(--muted)}
.field small{font-size:12px}
.field.inline{margin-top:4px}
input:not([type=checkbox]):not([type=radio]):not([type=file]),select{width:100%;min-height:44px;padding:10px 12px;border:1px solid var(--line-2);border-radius:12px;background:var(--bg);color:var(--ink);outline:none;transition:border .15s,box-shadow .15s;font-size:16px}
select{appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 18px) 50%,calc(100% - 13px) 50%;background-size:5px 5px;background-repeat:no-repeat;padding-right:34px}
input:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent)}
input[type=date]{min-width:0}
.money-in{position:relative}
.money-in::before{content:attr(data-sym);position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--muted);font-weight:600;pointer-events:none}
.money-in input{padding-left:30px!important}
.money-in:not([data-sym])::before{content:"$"}
.amt-big .money-in input{font-size:30px;font-weight:650;min-height:64px;text-align:center;padding-left:12px!important;font-family:var(--serif)}
.amt-big .money-in::before{font-size:22px;left:18px}
.amt-big{margin-bottom:16px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.check{display:flex;align-items:center;gap:9px;font-size:14px;margin:6px 0 10px;cursor:pointer}
.check input{width:18px;height:18px;accent-color:var(--accent)}
.ferr{color:var(--bad);font-size:13.5px;font-weight:600;margin:4px 0 0}
form .if-savings,form .if-debt{display:none}
form[data-type=savings] .if-savings,form[data-type=debt] .if-debt{display:block}
/* modal */
.modal{position:fixed;inset:0;z-index:50;display:none;align-items:center;justify-content:center;padding:20px}
.modal.open{display:flex}
.m-back{position:absolute;inset:0;background:rgba(15,22,20,.42);backdrop-filter:blur(3px);animation:fade .15s}
.m-card{position:relative;width:100%;max-width:480px;max-height:calc(100vh - 40px);overflow:auto;background:var(--surface);border-radius:22px;border:1px solid var(--line);box-shadow:0 30px 80px -20px rgba(0,0,0,.45);animation:pop .18s ease-out}
.m-h{display:flex;align-items:center;justify-content:space-between;padding:20px 22px 4px}
.m-h h2{font-family:var(--serif);font-size:22px}
.m-b{padding:12px 22px 6px}
.m-f{display:flex;justify-content:space-between;gap:10px;padding:12px 22px 20px;position:sticky;bottom:0;background:var(--surface)}
.m-f .btn.primary{min-width:130px}
.lead{color:var(--ink-2);font-size:15.5px}
.choice-list{display:flex;flex-direction:column;gap:10px;margin:14px 0}
.choice{display:grid;grid-template-columns:auto 1fr;column-gap:12px;row-gap:2px;text-align:left;padding:14px 16px;border-radius:14px;border:1.5px solid var(--line);background:var(--surface);cursor:pointer;align-items:center}
.choice .ic{grid-row:span 2;color:var(--accent);width:24px;height:24px}
.choice b{font-size:15px}.choice span{color:var(--muted);font-size:13.5px;grid-column:2}
.choice:not(:has(.ic)) b,.choice:not(:has(.ic)) span{grid-column:1/-1}
.choice.on{border-color:var(--accent);background:var(--accent-soft)}.choice:hover{border-color:var(--accent-line)}
@keyframes pop{from{transform:translateY(10px) scale(.98);opacity:0}}@keyframes fade{from{opacity:0}}
/* toast */
.toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%,20px);background:var(--ink);color:var(--surface);padding:11px 18px;border-radius:12px;font-size:14px;font-weight:550;opacity:0;pointer-events:none;transition:.25s;z-index:60;max-width:calc(100vw - 32px);box-shadow:0 10px 30px -10px rgba(0,0,0,.4)}
.toast.show{opacity:1;transform:translate(-50%,0)}
/* setup */
body.in-setup .side,body.in-setup .topbar,body.in-setup .tabbar{display:none!important}
body.in-setup .mainwrap{margin-left:0}
.setup{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:30px 16px;background:radial-gradient(1000px 500px at 20% -10%,var(--accent-soft),transparent),var(--bg)}
.su-card{width:100%;max-width:540px;padding:30px 32px}
.su-card h1{font-size:30px;margin-bottom:6px}
.su-ico .logo{width:54px;height:54px;margin-bottom:14px}
.steps{display:flex;align-items:center;gap:6px;margin-bottom:22px}
.steps i{width:28px;height:5px;border-radius:9px;background:var(--track)}.steps i.on{background:var(--accent)}
.steps span{margin-left:8px;font-size:12.5px;color:var(--muted);font-weight:600}
.su-f{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:22px}
.su-f .btn.primary{min-width:140px}
.su-foot{font-size:12.5px;color:var(--muted);margin-top:16px}
.su-foot a{color:var(--muted);text-decoration:underline}
/* drawer */
.drawer{display:none}
/* ---------- responsive ---------- */
@media (max-width:1180px){.g3{grid-template-columns:1fr 1fr}.g31{grid-template-columns:1fr}.view{padding:30px 28px 60px}}
@media (max-width:980px){
  .side{display:none}.mainwrap{margin-left:0}
  .topbar{display:flex;align-items:center;justify-content:space-between;gap:10px;position:sticky;top:0;z-index:20;padding:10px 16px;padding-top:max(10px,env(safe-area-inset-top));background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
  .topbar .brand{padding:0;min-width:0;gap:9px}.topbar .brand .logo{width:32px;height:32px}.topbar .brand b{font-size:15px;white-space:nowrap}.topbar .brand span{font-size:11px}
  .topbar .syncpill{padding:6px 10px;font-size:12px;max-width:40vw;flex:none}
  .tabbar{display:grid;grid-template-columns:repeat(5,1fr);align-items:center;position:fixed;left:0;right:0;bottom:0;z-index:30;padding:6px 8px;padding-bottom:max(8px,env(safe-area-inset-bottom));background:color-mix(in srgb,var(--surface) 94%,transparent);backdrop-filter:blur(12px);border-top:1px solid var(--line)}
  .tabbar .nv{flex-direction:column;gap:2px;padding:6px 2px;font-size:11px;border-radius:10px;justify-content:center}
  .tabbar .nv.on{background:none;box-shadow:none;color:var(--accent)}
  .fab{justify-self:center;width:54px;height:54px;border-radius:18px;border:0;background:var(--accent);color:var(--accent-ink);display:grid;place-items:center;box-shadow:0 10px 24px -8px color-mix(in srgb,var(--accent) 90%,transparent);margin-top:-22px;cursor:pointer}
  .fab .ic{width:26px;height:26px;stroke-width:2.4}
  .drawer{display:block;position:fixed;inset:0;z-index:40;background:rgba(15,22,20,.4);opacity:0;pointer-events:none;transition:opacity .2s}
  body.menu-open .drawer{opacity:1;pointer-events:auto}
  .drawer-c{position:absolute;left:0;right:0;bottom:0;background:var(--surface);border-radius:22px 22px 0 0;padding:18px 16px;padding-bottom:max(22px,calc(env(safe-area-inset-bottom) + 76px));transform:translateY(100%);transition:transform .25s ease}
  body.menu-open .drawer-c{transform:none}
  .drawer-g{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
  .dv{display:flex;flex-direction:column;align-items:center;gap:6px;padding:14px 6px;border-radius:14px;border:1px solid var(--line);color:var(--ink-2);font-size:13px;font-weight:600;text-decoration:none!important}
  .dv.on{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}
  .drawer-f{text-align:center;font-size:12px;color:var(--muted);margin:14px 0 0}.drawer-f a{color:var(--muted)}
  .view{padding:22px 18px 110px}
  .toast{bottom:96px}
  .phead .btn.primary{display:none}
  .hero,.plan-hero,.debt-hero{grid-template-columns:1fr}
  .kpis{grid-template-columns:1fr 1fr}.kpis.k3{grid-template-columns:1fr 1fr 1fr}
}
@media (max-width:760px){
  .g2,.g3,.g13{grid-template-columns:1fr}
  h1{font-size:26px}
  .phead{margin-bottom:16px}
  .card{padding:16px;border-radius:16px}
  .hero,.plan-hero,.debt-hero{padding:20px;gap:16px}
  .hero-num{font-size:52px}.debt-hero .hero-num{font-size:36px}
  .stat b{font-size:17px}
  .kpis{gap:10px}.kpis.k3{grid-template-columns:1fr 1fr}.kpis.k3 .kpi:first-child{grid-column:1/-1}
  .kpi{padding:13px 14px}.kpi b{font-size:20px}
  .evs.cols{grid-template-columns:1fr}
  .donut-wrap{flex-direction:column;align-items:stretch}.donut{align-self:center}
  .cgrid{gap:3px}.cd{min-height:50px;padding:5px;align-items:center;border-radius:9px}
  .cd .cl{display:none}.cdots{display:flex;flex-wrap:wrap;justify-content:center}
  .cw{font-size:11px}
  .tx .tag{display:none}
  .mtabs{gap:6px}.mtab{padding:6px 10px}
  .two{grid-template-columns:1fr 1fr;gap:10px}
  .catlist{grid-template-columns:1fr}
  .seg.s3{grid-template-columns:1fr 1fr 1fr}.seg.s3 button{flex-direction:column;gap:4px;padding:10px 6px;font-size:13px}
  .modal{align-items:flex-end;padding:0}
  .m-card{max-width:none;border-radius:22px 22px 0 0;max-height:92vh;animation:sheet .22s ease-out}
  .m-f{padding-bottom:max(20px,env(safe-area-inset-bottom))}
  .su-card{padding:24px 20px}.su-card h1{font-size:26px}
  .cols12{gap:4px;height:180px}.c12 em{display:none}
  .hero-side{grid-template-columns:1fr 1fr}
}
@media (max-width:480px){.topbar .syncpill .l{display:none}.topbar .syncpill .s{display:inline}}
@keyframes sheet{from{transform:translateY(40px);opacity:.4}}
@media (max-width:380px){.kpis{grid-template-columns:1fr}.kpi b{font-size:22px}.hero-num{font-size:44px}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
@media print{.side,.topbar,.tabbar,.demobar,.btn,.fab{display:none!important}.mainwrap{margin:0}.card{box-shadow:none;break-inside:avoid}}
