:root{
  --text-xs:clamp(.75rem,.7rem + .25vw,.875rem);
  --text-sm:clamp(.875rem,.8rem + .35vw,1rem);
  --text-base:clamp(1rem,.95rem + .25vw,1.125rem);
  --text-lg:clamp(1.125rem,1rem + .75vw,1.5rem);
  --text-xl:clamp(1.5rem,1.2rem + 1.25vw,2.25rem);
  --s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:20px;--s6:24px;--s8:32px;
  --bg:#f8f6f3; --surface:#ffffff; --ink:#373435; --muted:#6b6763; --faint:#9a958f;
  --line:#e4dfd8; --navy:#373435; --navy-2:#2e2c2d; --orange:#f79c26; --orange-ink:#a35400; --orange-tint:#fdebd3;
  --cash:#f79c26; --cash-bg:#fdebd3; --warn:#a35400; --warn-bg:#fbefe4; --neg:#a3312a;
  --sea:#f79c26; --radius:14px;
  --font:'General Sans',ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{font-family:var(--font);background:var(--bg);color:var(--ink);font-size:var(--text-base);line-height:1.45;
  font-variant-numeric:tabular-nums;padding-bottom:calc(var(--s8) + env(safe-area-inset-bottom))}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
ul{list-style:none}

.top{position:sticky;top:0;z-index:5;background:var(--navy);color:#f4f1ea;
  padding:calc(var(--s4) + env(safe-area-inset-top)) var(--s4) var(--s3)}
.top-row{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--s3);max-width:720px;margin:0 auto}
.eyebrow{font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--orange);font-weight:600;margin-top:2px}
.logo{display:block;height:26px;width:auto;margin-bottom:10px}
h1{font-size:var(--text-lg);font-weight:600;letter-spacing:-.01em}
.stamp{font-size:var(--text-xs);color:#c9c5c0;text-align:right;line-height:1.3}
.stamp b{display:block;color:#fff;font-weight:600}
.seg{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;background:var(--navy-2);border-radius:10px;padding:4px;
  margin:var(--s3) auto 0;max-width:720px}
.seg button{padding:10px 0;border-radius:7px;font-size:var(--text-sm);font-weight:500;color:#e4dfd8;transition:background .15s,color .15s}
.seg button[aria-selected="true"]{background:var(--orange);color:var(--navy-2);font-weight:600}
.seg button:focus-visible{outline:2px solid var(--orange);outline-offset:2px}

main{max-width:720px;margin:0 auto;padding:var(--s4);display:flex;flex-direction:column;gap:var(--s4)}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:var(--s4)}
.card-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--s3);margin-bottom:var(--s3)}
h2{font-size:var(--text-base);font-weight:600}
.sec-h{margin:0 0 var(--s3) 2px}
.pill{font-size:var(--text-xs);color:var(--muted);background:var(--bg);border-radius:999px;padding:2px 10px;white-space:nowrap}
.num-strong{font-weight:600;white-space:nowrap}

.cash{border:1px solid #b9dcc8;background:linear-gradient(180deg,var(--cash-bg),var(--surface) 70%)}
.cash .card-head{margin-bottom:var(--s1)}
.big{font-size:var(--text-xl);font-weight:700;color:var(--cash);letter-spacing:-.02em;margin-bottom:var(--s3)}

.rows li{display:grid;grid-template-columns:1fr auto;gap:2px var(--s3);padding:var(--s3) 0;border-top:1px solid var(--line)}
.rows li:first-child{border-top:0;padding-top:var(--s1)}
.r-main{font-weight:500;min-width:0;overflow-wrap:anywhere}
.r-amt{font-weight:600;text-align:right;white-space:nowrap}
.r-sub{grid-column:1/-1;font-size:var(--text-xs);color:var(--muted);display:flex;flex-wrap:wrap;gap:4px 10px}
.tag{font-size:var(--text-xs);font-weight:600;color:var(--orange-ink);background:var(--orange-tint);border-radius:5px;padding:0 6px}
.neg{color:var(--neg)}
.due{color:var(--warn)}
.empty{color:var(--muted);font-size:var(--text-sm);padding:var(--s2) 0}

.mix li{display:flex;justify-content:space-between;padding:10px 0;border-top:1px solid var(--line);font-size:var(--text-sm)}
.mix li:first-child{border-top:0;padding-top:0}
.mix .m-l{display:flex;align-items:center;gap:var(--s2)}
.mix .m-n{color:var(--faint);font-size:var(--text-xs)}
.dot{width:10px;height:10px;border-radius:3px;flex:none}

.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s2)}
.stat{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:var(--s3)}
.stat .v{font-size:var(--text-lg);font-weight:700;line-height:1.1}
.stat .l{font-size:var(--text-xs);color:var(--muted);margin-top:2px}
.stat .x{font-size:var(--text-xs);color:var(--faint)}

.legend{font-size:var(--text-xs);color:var(--muted);display:flex;align-items:center;gap:6px;white-space:nowrap}
.sw{display:inline-block;width:10px;height:10px;border-radius:3px}
.sw-cash{background:var(--cash)} .sw-other{background:#c9c5c0}
.bars{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;align-items:end;height:150px}
.bar{display:flex;flex-direction:column;justify-content:flex-end;height:100%;text-align:center}
.bar .stack{display:flex;flex-direction:column-reverse;border-radius:5px 5px 2px 2px;overflow:hidden;min-height:2px}
.bar .seg-c{background:var(--cash)} .bar .seg-o{background:#c9c5c0}
.bar .bl{font-size:var(--text-xs);color:var(--muted);margin-top:4px}
.bar .bv{font-size:11px;color:var(--faint);margin-bottom:2px;white-space:nowrap}
.bar.today .bl{color:var(--ink);font-weight:600}

details summary{list-style:none;display:flex;justify-content:space-between;align-items:center;cursor:pointer}
details summary::-webkit-details-marker{display:none}
details summary::after{content:'+';font-weight:600;color:var(--muted);margin-left:var(--s2)}
details[open] summary::after{content:'–'}
details[open] summary{margin-bottom:var(--s3)}
details summary h2{flex:1}

.foot{font-size:var(--text-xs);color:var(--muted);text-align:center;padding:0 var(--s4)}
@media (min-width:640px){.stats{grid-template-columns:repeat(6,1fr)}}
.sub{font-size:var(--text-xs);color:var(--muted);margin:-6px 0 var(--s3)}
.bar .stack{background:var(--navy)}
.bar.today .stack{background:var(--sea)}
.bars-30{grid-template-columns:repeat(30,minmax(0,1fr));gap:2px;height:110px}
.bars-30 .bar .stack{border-radius:2px 2px 1px 1px}
.axis{display:flex;justify-content:space-between;font-size:11px;color:var(--faint);margin-top:6px}
.sw-fc7{background:var(--sea)} .sw-fc{background:#c9c5c0}
.bar.fcb .stack{background:#c9c5c0} .bar.fcb7 .stack{background:var(--sea)}
.fc-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--s2)}
.fc{background:var(--navy);color:#f4f1ea;border-radius:var(--radius);padding:var(--s4)}
.fc .fl{font-size:var(--text-xs);color:var(--orange);text-transform:uppercase;letter-spacing:.06em;font-weight:500}
.fc .fv{font-size:var(--text-lg);font-weight:700;margin:4px 0 var(--s2);letter-spacing:-.01em}
.fc dl{display:grid;grid-template-columns:auto 1fr;gap:2px 8px;font-size:var(--text-xs)}
.fc dt{color:#c9c5c0} .fc dd{text-align:right;color:#fff}
.fc .fd{font-size:11px;color:#c9c5c0;margin-top:var(--s2)}
.bar{min-width:0}

.top{border-bottom:3px solid var(--orange)}
.brand-foot{display:flex;flex-direction:column;align-items:center;gap:6px;padding:var(--s4) var(--s4) 0;border-top:1px solid var(--line);margin-top:var(--s2)}
.foot-line{font-size:var(--text-sm);font-weight:600;color:var(--ink);letter-spacing:.01em}

.bar .plot{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:flex-end}
.bar .stack{flex:none;width:100%}

.notice{font-size:var(--text-xs);color:var(--orange-ink);background:var(--orange-tint);border-radius:10px;padding:10px 12px;line-height:1.4}
.live-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#5fd38d;margin-right:5px;vertical-align:1px;box-shadow:0 0 0 3px rgba(95,211,141,.2)}

[hidden]{display:none !important}
.loading{max-width:720px;margin:var(--s8) auto;padding:0 var(--s4);text-align:center;color:var(--muted);font-size:var(--text-sm)}
.login{display:flex;justify-content:center;padding:var(--s8) var(--s4)}
.login-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:var(--s6);display:flex;flex-direction:column;gap:6px}
.login-card h2{font-size:var(--text-lg)}
.login-sub{font-size:var(--text-sm);color:var(--muted);margin-bottom:var(--s3)}
.login-card label{font-size:var(--text-xs);font-weight:600;color:var(--muted);margin-top:var(--s2)}
.login-card input{font:inherit;font-size:16px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--ink)}
.login-card input:focus{outline:2px solid var(--orange);outline-offset:1px;border-color:transparent}
.login-card button{margin-top:var(--s3);padding:13px;border-radius:10px;background:var(--orange);color:var(--navy-2);font-weight:700}
.login-card button:disabled{opacity:.6}
.login-err{min-height:1.2em;font-size:var(--text-sm);color:var(--neg)}
.signout{margin:var(--s3) auto 0;font-size:var(--text-xs);color:var(--muted);text-decoration:underline;padding:6px 10px}
#book-sub,#due-sub{margin:0}
section[aria-labelledby="book-h"] .card-head,section[aria-labelledby="due-h"] .card-head{margin-bottom:var(--s1)}
.foot-cta{font-size:var(--text-sm);color:var(--ink);text-align:center;margin:var(--s2) 0 0;max-width:34ch}
.foot-cta a{color:var(--orange-ink);font-weight:700;text-decoration:underline;text-underline-offset:2px}
