@font-face{font-family:'DM Sans';font-style:normal;font-weight:400 700;font-display:swap;src:url('fonts/dmsans.woff2') format('woff2')}
@font-face{font-family:'Lora';font-style:normal;font-weight:400 700;font-display:swap;src:url('fonts/lora.woff2') format('woff2')}
/* Jeannie Money — flat, matte rose & black (palette after Hello, Miz Jeannie; rose #b76e79, true black) */
:root{
  color-scheme:dark;
  --bg:#000;
  --card:rgba(33,27,32,.72);     /* semi-transparent panel (#211B20) */
  --card-strong:rgba(33,27,32,.88);
  --soft:rgba(58,45,52,.45);
  --ink:#F1E7DF;--muted:#bcb0b5;--line:#3a2d34;
  --accent:#b76e79;--accent-ink:#1a0d11;--accent-soft:rgba(183,110,121,.16);--accent-tint:#d9a7ae;
  --ok:#8fbf9c;--warn:#d9ad62;--bad:#e5574f;
  --okbg:rgba(143,191,156,.12);--warnbg:rgba(217,173,98,.12);--badbg:rgba(229,87,79,.13);
  --display:'Lora',Georgia,serif;--ui:'DM Sans',system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
  --r:3px;
}
*{box-sizing:border-box}
html{background:var(--bg)}
body{margin:0;min-height:100vh;background:var(--bg);color:var(--ink);font:15px/1.55 var(--ui)}
::selection{background:var(--accent);color:var(--accent-ink)}
a{color:var(--accent);text-underline-offset:.2em;text-decoration-thickness:1px}
a:hover{color:var(--accent-tint);text-decoration-thickness:2px}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
h1,h2,h3{font-family:var(--display);font-weight:500;color:var(--ink);line-height:1.25}
h1{font-size:1.75rem;margin:.2rem 0 1rem;letter-spacing:-.01em}
h2{font-size:1.2rem;margin:0 0 .6rem}
h3{font-size:1.02rem;margin:0 0 .4rem}

/* Header */
.top{background:var(--bg);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:1.2rem;padding:.75rem 1rem;flex-wrap:wrap}
.brand{font:500 1.3rem/1.2 var(--display);color:var(--ink);text-decoration:none;letter-spacing:-.01em}
.brand:hover{color:var(--accent)}
.nav{display:flex;gap:1rem;flex-wrap:wrap;align-items:center}
.nav a{font-size:.85rem;color:var(--ink);text-decoration:none;padding:.45rem 0;border-bottom:1px solid transparent}
.nav a:hover,.nav a.active{color:var(--accent);border-bottom-color:var(--accent)}
.menu-btn{display:none;margin-left:auto;background:transparent;color:var(--ink);border:1px solid var(--line);border-radius:var(--r);font-size:1.1rem;padding:.25rem .65rem}
.tabbar{display:none}

/* Layout + panels (flat, semi-transparent, no shadow/blur) */
.wrap{max-width:1100px;margin:0 auto;padding:1.4rem 1rem}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:1.15rem;margin-bottom:1rem}
.card.narrow{max-width:420px;margin:4rem auto;background:var(--card-strong)}
.grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
.grid .card{margin:0}
.big{font:500 2.3rem/1.15 var(--display);letter-spacing:-.02em;color:var(--ink)}
.big.neg,.neg{color:var(--bad)}.pos{color:var(--ok)}
.muted{color:var(--muted)}.small{font-size:.85rem}

/* Tables */
table{width:100%;border-collapse:collapse;font-size:.92rem}
th,td{text-align:left;padding:.5rem .55rem;border-bottom:1px solid var(--line);vertical-align:top}
th{color:var(--accent);font-weight:600;font-size:.72rem;text-transform:uppercase;letter-spacing:.14em}
tbody tr:hover td{background:var(--soft)}
td.num,th.num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.table-wrap{overflow-x:auto}

/* Flash + badges */
.flash{padding:.65rem .95rem;border-radius:var(--r);margin-bottom:.8rem;border:1px solid}
.flash.success{background:var(--okbg);border-color:rgba(143,191,156,.4);color:var(--ok)}
.flash.error{background:var(--badbg);border-color:rgba(229,87,79,.45);color:#f08a83}
.flash.warn{background:var(--warnbg);border-color:rgba(217,173,98,.4);color:var(--warn)}
.badge{display:inline-block;padding:.1rem .5rem;border-radius:var(--r);font-size:.72rem;font-weight:600;letter-spacing:.04em;border:1px solid transparent}
.badge.ok{background:var(--okbg);color:var(--ok);border-color:rgba(143,191,156,.3)}
.badge.warn{background:var(--warnbg);color:var(--warn);border-color:rgba(217,173,98,.3)}
.badge.bad{background:var(--badbg);color:var(--bad);border-color:rgba(229,87,79,.35)}
.badge.info{background:var(--accent-soft);color:var(--accent-tint);border-color:rgba(183,110,121,.4)}
.badge.gray{background:rgba(255,255,255,.04);color:var(--muted);border-color:var(--line)}

/* Forms */
form label{display:block;margin:.55rem 0 .2rem;font-size:.85rem;color:var(--muted)}
input[type=text],input[type=password],input[type=number],input[type=date],input:not([type]),select,textarea{
  width:100%;padding:.5rem .6rem;border:1px solid var(--line);border-radius:var(--r);font:inherit;background:rgba(0,0,0,.55);color:var(--ink)}
input::placeholder,textarea::placeholder{color:#8a7d83}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent)}
select option{background:#140f13;color:var(--ink)}
input[type=checkbox]{margin-right:.3rem;accent-color:var(--accent)}
button,.btn{font:600 .85rem/1.4 var(--ui);padding:.5rem .95rem;border-radius:var(--r);border:1px solid var(--line);background:transparent;cursor:pointer;text-decoration:none;color:var(--ink);display:inline-block}
button:hover,.btn:hover{border-color:var(--accent);color:var(--accent)}
button.primary,.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
button.primary:hover,.btn.primary:hover{background:#c27f89;border-color:#c27f89;color:var(--accent-ink)}
button.danger{color:var(--bad);border-color:rgba(229,87,79,.45)}
button.danger:hover{background:var(--badbg);color:var(--bad);border-color:var(--bad)}
button.link{background:none;border:none;color:var(--accent);padding:.45rem 0;font-weight:500}
button.link:hover{color:var(--accent-tint);text-decoration:underline}
button.sm,.btn.sm{padding:.2rem .55rem;font-size:.78rem}
form.inline{display:inline}
.row{display:flex;gap:.6rem;flex-wrap:wrap;align-items:end}
.row>*{flex:1 1 140px}
.row>.fit{flex:0 0 auto}
.actions{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:.8rem}

/* Misc */
.kv{display:grid;grid-template-columns:1fr auto;gap:.3rem .8rem}
.kv dt{color:var(--muted)}.kv dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}
details summary{cursor:pointer;color:var(--accent)}
code{background:rgba(183,110,121,.12);color:var(--accent-tint);padding:.05rem .35rem;border-radius:var(--r);font-size:.88em}
.bar{height:6px;background:var(--line);border-radius:var(--r);overflow:hidden}
.bar i{display:block;height:100%;background:var(--accent)}
hr{border:none;border-top:1px solid var(--line);margin:1rem 0}

/* ---------- Mobile-first (≤800px): bottom tab bar, safe areas, touch targets ---------- */
@media(max-width:800px){
  :root{--tabbar-h:60px}
  body{padding-bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px))}
  .top{padding:calc(.65rem + env(safe-area-inset-top,0px)) calc(1rem + env(safe-area-inset-right,0px)) .65rem calc(1rem + env(safe-area-inset-left,0px));position:sticky;top:0;z-index:20;background:var(--bg)}
  .brand{font-size:1.15rem}
  /* The full nav becomes a flat sheet above the tab bar, opened from the More tab. */
  .nav{display:none;position:fixed;left:0;right:0;top:0;bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px));z-index:30;background:var(--bg);flex-direction:column;align-items:stretch;gap:0;overflow-y:auto;padding:calc(.5rem + env(safe-area-inset-top,0px)) calc(1rem + env(safe-area-inset-right,0px)) 1rem calc(1rem + env(safe-area-inset-left,0px));border-bottom:1px solid var(--line)}
  .nav.open{display:flex}
  .nav a{font:500 1.05rem/1.3 var(--display);padding:.9rem 0;min-height:44px;border-bottom:1px solid var(--line)}
  .nav a.active{border-bottom-color:var(--line);color:var(--accent)}
  .nav form.inline{display:block;padding-top:.6rem}
  .nav button.link{min-height:44px;font-size:1rem}
  body.nav-open{overflow:hidden}
  /* Bottom tab bar: matte black, 1px top hairline, rose active state. */
  .tabbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:40;height:calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px));padding:0 env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px);background:#000;border-top:1px solid var(--line)}
  .tabbar .tab{flex:1 1 0;min-width:44px;min-height:44px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:6px 2px 4px;margin:0;background:transparent;border:0;border-top:2px solid transparent;border-radius:0;color:var(--muted);text-decoration:none;font:500 .66rem/1 var(--ui);letter-spacing:.02em;cursor:pointer}
  .tabbar .tab svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
  .tabbar .tab:hover{color:var(--ink)}
  .tabbar .tab.active{color:var(--accent);border-top-color:var(--accent)}
  .tabbar .tab:focus-visible{outline-offset:-3px}
  /* Content + panels */
  .wrap{padding:1rem .85rem 1.2rem}
  h1{font-size:1.45rem}
  .card{padding:.95rem}
  .card.narrow{margin:1.6rem auto;max-width:100%}
  .big{font-size:1.9rem}
  .grid{grid-template-columns:1fr}
  /* Touch targets ≥44px and 16px inputs (prevents iOS zoom). */
  input[type=text],input[type=password],input[type=number],input[type=date],input:not([type]),select,textarea{font-size:16px;min-height:44px;padding:.6rem .7rem}
  button,.btn{min-height:44px;padding:.6rem 1rem;font-size:.92rem}
  button.sm,.btn.sm{min-height:36px;padding:.35rem .7rem;font-size:.82rem}
  button.link{min-height:44px}
  .actions{gap:.5rem}
  .row>*{flex:1 1 100%}
  .row>.fit{flex:1 1 100%}
  /* Tables keep horizontal scroll, slightly tighter. */
  .table-wrap{margin:0 -.95rem;padding:0 .95rem}
  th,td{padding:.45rem .45rem}
  table{font-size:.88rem}
  .flash{font-size:.9rem}
}
