/* ChexZone — shared styles (financial-ledger aesthetic) */
@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,600;9..144,700&family=Hanken+Grotesk:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap');

:root{
  --paper:#f4f1ea; --surface:#fff; --surface2:#faf8f3;
  --ink:#17140f; --ink2:#615b51; --ink3:#9a9286;
  --line:#e6e0d4; --line2:#d8d1c2;
  --navy:#1d2b4f; --navy2:#16213d;
  --gold:#c98a23; --green:#127a52; --green-bg:#e4f3ec;
  --red:#b23b2e; --red-bg:#f8e6e3; --amber:#a8741a; --amber-bg:#f6ecd6;
  --font:'Hanken Grotesk',system-ui,sans-serif; --display:'Fraunces',Georgia,serif; --mono:'JetBrains Mono',monospace;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
body{font-family:var(--font);color:var(--ink);
  background:radial-gradient(1200px 600px at 90% -10%,#fff6e6 0%,transparent 55%),var(--paper);min-height:100vh}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
.display{font-family:var(--display)}
.muted{color:var(--ink2)}
.card{background:var(--surface);border:1px solid var(--line);border-radius:16px;
  box-shadow:0 1px 0 rgba(0,0,0,.02),0 10px 30px -22px rgba(29,43,79,.35)}
.input{width:100%;background:var(--surface2);border:1px solid var(--line2);border-radius:10px;
  padding:11px 13px;font-family:var(--mono);font-size:14px;color:var(--ink);outline:none;transition:.15s}
.input:focus{border-color:var(--navy);box-shadow:0 0 0 3px rgba(29,43,79,.12);background:#fff}
select.input{font-family:var(--font)}
.label{font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink2);font-weight:600;margin-bottom:6px;display:block}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;cursor:pointer;
  font-family:var(--font);font-weight:600;border-radius:11px;padding:11px 18px;font-size:14px;transition:.15s}
.btn-pri{background:var(--navy);color:#fff}.btn-pri:hover{background:var(--navy2);transform:translateY(-1px)}
.btn-gold{background:var(--gold);color:#231a07}.btn-gold:hover{filter:brightness(.96);transform:translateY(-1px)}
.btn-ghost{background:transparent;color:var(--ink);border:1px solid var(--line2)}.btn-ghost:hover{background:var(--surface2)}
.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}
.btn-sm{padding:6px 11px;font-size:12px;border-radius:8px}
.chip{font-family:var(--mono);font-size:11px;font-weight:600;padding:4px 9px;border-radius:999px;display:inline-flex;align-items:center;gap:5px;border:1px solid transparent}
.c-green{background:var(--green-bg);color:var(--green);border-color:#bfe3d2}
.c-red{background:var(--red-bg);color:var(--red);border-color:#eecac4}
.c-amber{background:var(--amber-bg);color:var(--amber);border-color:#e8d4a6}
.c-navy{background:#e7ebf4;color:var(--navy);border-color:#cfd7e8}
.c-gray{background:#efeae0;color:var(--ink2);border-color:var(--line2);cursor:pointer}
.spin{width:16px;height:16px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:sp .7s linear infinite;display:inline-block}
@keyframes sp{to{transform:rotate(360deg)}}
.fade{animation:fd .35s ease both}@keyframes fd{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.alert{padding:11px 14px;border-radius:10px;font-size:13px;font-weight:500;margin-bottom:14px;display:none}
.alert.error{background:var(--red-bg);border:1px solid #eecac4;color:var(--red);display:block}
.alert.success{background:var(--green-bg);border:1px solid #bfe3d2;color:var(--green);display:block}
/* layout */
.shell{display:flex;min-height:100vh}
.side{width:240px;background:var(--navy);padding:22px 16px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}
.brand{display:flex;align-items:center;gap:10px;padding:0 6px 22px}
.brand .ic{width:36px;height:36px;border-radius:10px;background:rgba(255,255,255,.08);display:flex;align-items:center;justify-content:center;color:var(--gold);font-size:18px}
.brand b{color:#fff;font-family:var(--display);font-weight:700;font-size:18px;line-height:1;display:block}
.brand small{color:#7e8aa8;font-family:var(--mono);font-size:10px}
.nav{display:flex;flex-direction:column;gap:4px;flex:1}
.nav a{display:flex;align-items:center;gap:11px;padding:10px 13px;border-radius:11px;cursor:pointer;color:#b9c2d8;font-weight:500;font-size:14px;transition:.15s;text-decoration:none}
.nav a:hover{background:rgba(255,255,255,.06);color:#fff}
.nav a.on{background:var(--gold);color:#231a07;font-weight:600}
.main{flex:1;padding:26px 30px;max-width:1120px;margin:0 auto;width:100%}
h2.title{font-family:var(--display);font-size:26px;font-weight:600;margin-bottom:6px;letter-spacing:-.01em}
.grid{display:grid;gap:14px}.g2{grid-template-columns:1fr 1fr}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}
.stat .n{font-family:var(--display);font-weight:600;font-size:30px;line-height:1}
table{width:100%;border-collapse:collapse}
th{font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink3);font-weight:600;text-align:left;padding:10px 14px}
td{padding:13px 14px;border-top:1px solid var(--line);font-size:14px;vertical-align:middle}
tr:hover td{background:var(--surface2)}
.usage{height:8px;border-radius:999px;background:#eae4d8;overflow:hidden}.usage>div{height:100%;background:var(--navy);transition:width .4s}
.page{display:none}.page.on{display:block}
.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:12px 18px;border-radius:12px;font-size:14px;font-weight:500;box-shadow:0 18px 40px -16px rgba(0,0,0,.5);z-index:60;display:none}
.bg-grid{background-image:linear-gradient(rgba(29,43,79,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(29,43,79,.05) 1px,transparent 1px);background-size:32px 32px}
.empty{text-align:center;padding:46px 20px;color:var(--ink2)}
.kv{background:var(--surface2);border:1px solid var(--line);border-radius:10px;padding:9px 12px}
.kv .k{font-family:var(--mono);font-size:10px;color:var(--ink3);margin-bottom:5px}
.ticket{background:linear-gradient(180deg,#fff,#fbf9f4);border:1px solid var(--line2);border-radius:14px;position:relative;overflow:hidden;padding:16px 18px 16px 22px}
.ticket:before{content:"";position:absolute;left:0;top:0;bottom:0;width:6px;background:var(--navy)}
@media(max-width:820px){.side{width:64px;padding:18px 8px}.brand b,.brand small,.nav a span{display:none}.g4,.g3,.g2{grid-template-columns:1fr 1fr}.main{padding:18px}}
