:root{
  --bg:#f6f9fc; --card:#ffffff; --line:#e3eaf2; --text:#27364b; --muted:#74859b;
  --blue:#3f83c9; --blue-l:#e8f2fc; --mint:#2e9e7d; --mint-l:#e4f6ef; --lav:#7a68c9; --lav-l:#efebfb;
  --peach:#d98a2b; --peach-l:#fdf1e1; --rose:#d4586a; --rose-l:#fcebee; --sky:#2f9bb5; --sky-l:#e2f4f8;
  --surface:#ffffff; --surface2:#f1f6fb; --track:#eef2f7; --chip:#f4f8fc; --faint:#fafcfe; --toast:#27364b; --on-accent:#ffffff;
  --radius:14px; --shadow:0 1px 3px rgba(40,70,110,.07);
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{font-family:Calibri,Carlito,"Segoe UI",Arial,sans-serif;font-size:16px;color:var(--text);background:var(--bg);display:flex}
button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}
.side{width:236px;background:var(--surface);border-right:1px solid var(--line);padding:18px 12px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;flex-shrink:0}
.brand{display:flex;gap:10px;align-items:center;padding:4px 8px 18px}
.brand .logo{width:38px;height:38px;border-radius:11px;background:var(--blue-l);color:var(--blue);display:grid;place-items:center;font-weight:700;font-size:20px}
.brand b{display:block;font-size:17px}.brand small{color:var(--muted)}
nav a{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:10px;color:var(--text);text-decoration:none;margin-bottom:2px}
nav a:hover{background:var(--surface2)}
nav a.on{background:var(--blue-l);color:var(--blue);font-weight:700}
nav a .step{margin-left:auto;font-size:11px;color:var(--muted);background:var(--surface2);border-radius:8px;padding:1px 7px}
.side-foot{margin-top:auto;padding:8px}
main{flex:1;min-width:0;padding:0 26px 90px}
.top{display:flex;align-items:center;gap:14px;padding:20px 0 14px}
.top h1{font-size:25px;margin:0;font-weight:700}
.today{margin-left:auto;color:var(--muted)}
.burger{display:none;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:6px 11px;font-size:18px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow);margin-bottom:18px}
.card h2{font-size:17px;margin:0 0 12px}
.muted{color:var(--muted)}
.qa{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.qa button{border:1px solid transparent;border-radius:var(--radius);padding:16px 8px;cursor:pointer;font-weight:700;display:flex;flex-direction:column;gap:6px;align-items:center;transition:transform .08s}
.qa button:hover{transform:translateY(-2px)}
.qa .ic{font-size:22px;line-height:1}
.q-blue{background:var(--blue-l);color:var(--blue)}.q-mint{background:var(--mint-l);color:var(--mint)}
.q-lav{background:var(--lav-l);color:var(--lav)}.q-rose{background:var(--rose-l);color:var(--rose)}
.q-peach{background:var(--peach-l);color:var(--peach)}.q-sky{background:var(--sky-l);color:var(--sky)}
.tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}
.tile{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow)}
.tile small{color:var(--muted);display:block;margin-bottom:4px}
.tile b{font-size:24px}
.tile i{display:block;font-style:normal;color:var(--muted);font-size:13px;margin-top:2px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
table{width:100%;border-collapse:collapse}
th{text-align:left;font-size:13px;color:var(--muted);font-weight:600;padding:8px 10px;border-bottom:1px solid var(--line);background:var(--faint)}
td{padding:9px 10px;border-bottom:1px solid #eff3f8;vertical-align:top}
tr.click{cursor:pointer}tr.click:hover td{background:#f7fbff}
.badge{display:inline-block;border-radius:999px;padding:2px 10px;font-size:13px;background:var(--track);color:var(--muted)}
.b-ok{background:var(--mint-l);color:var(--mint)}.b-bad{background:var(--rose-l);color:var(--rose)}
.b-create{background:var(--mint-l);color:var(--mint)}.b-update{background:var(--blue-l);color:var(--blue)}
.b-archive,.b-delete{background:var(--rose-l);color:var(--rose)}.b-setting_change{background:var(--lav-l);color:var(--lav)}
.b-db_init{background:var(--sky-l);color:var(--sky)}
.btn{border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:7px 14px;cursor:pointer}
.btn:hover{background:var(--chip)}
.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:700}
.btn.primary:hover{background:#3575b6}
.btn.small{padding:3px 10px;font-size:14px}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:end;margin-bottom:12px}
label{display:flex;flex-direction:column;gap:4px;font-size:14px;color:var(--muted)}
input,select,textarea{border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:var(--surface);color:var(--text);min-width:150px}
input:focus,select:focus{outline:2px solid #cfe3f7;border-color:var(--blue)}
.swatch{display:inline-block;min-width:18px;height:18px;line-height:18px;text-align:center;font-size:12px;border-radius:6px;border:1px solid var(--line);vertical-align:middle}
.diff{background:var(--faint);border:1px solid var(--line);border-radius:10px;padding:10px 14px;margin:4px 0;font-size:14px}
.diff .old{color:var(--rose);text-decoration:line-through}.diff .new{color:var(--mint);font-weight:700}
.hash{font-family:Consolas,monospace;font-size:12px;color:var(--muted);word-break:break-all}
.tabs{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap}
.tabs button{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:6px 14px;cursor:pointer}
.tabs button.on{background:var(--blue-l);border-color:#c8def4;color:var(--blue);font-weight:700}
.soon{text-align:center;padding:46px 10px}
.soon .big{font-size:42px}
.fab{position:fixed;right:22px;bottom:22px;width:56px;height:56px;border-radius:50%;border:0;background:var(--blue);color:#fff;font-size:30px;box-shadow:0 6px 18px rgba(63,131,201,.4);cursor:pointer;display:none}
.modal-bg{position:fixed;inset:0;background:rgba(40,60,90,.28);display:none;align-items:center;justify-content:center;z-index:30;padding:14px}
.modal-bg.open{display:flex}
.modal{background:var(--surface);border-radius:18px;padding:22px;width:min(520px,100%);max-height:90vh;overflow:auto;box-shadow:0 18px 50px rgba(30,50,80,.25)}
.modal h3{margin:0 0 6px;font-size:20px}
.modal .fields{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:14px 0}
.modal .fields input,.modal .fields select{min-width:0;background:var(--surface)}
.toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%);background:var(--toast);color:#fff;border-radius:12px;padding:10px 18px;z-index:40}
@media(max-width:900px){
  .side{position:fixed;left:-260px;z-index:25;transition:left .2s;box-shadow:0 0 30px rgba(0,0,0,.15)}
  .side.open{left:0}
  .burger{display:block}
  main{padding:0 14px 90px}
  .qa{grid-template-columns:repeat(3,1fr)}
  .tiles{grid-template-columns:1fr 1fr}
  .grid2{grid-template-columns:1fr}
  .fab{display:block}
  .today{display:none}
  .top h1{font-size:21px}
}

/* ---- Step 5: dashboard charts */
.chart svg{width:100%;height:auto;display:block}
.chart text{font-family:Calibri,Carlito,"Segoe UI",Arial,sans-serif;fill:var(--muted);font-size:11px}
.legend{display:flex;gap:14px;flex-wrap:wrap;margin:0 0 6px;font-size:14px;color:var(--muted)}
.legend i{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.hb{display:grid;grid-template-columns:130px 1fr 80px;gap:8px;align-items:center;margin:7px 0;font-size:14px}
.hb .tr{background:var(--track);border-radius:7px;height:12px}.hb .tr b{display:block;height:12px;border-radius:7px}
.hb span:last-child{text-align:right}
.donut{display:flex;gap:18px;align-items:center;flex-wrap:wrap}.donut svg{width:170px;height:170px;flex-shrink:0}
.donut .lg div{margin:5px 0;font-size:14px}.donut .lg i{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:6px}
.kindrow{display:grid;grid-template-columns:110px 1fr 110px;gap:10px;align-items:center;margin:9px 0}
.kindrow .tr{background:var(--track);border-radius:8px;height:14px}.kindrow .tr b{display:block;height:14px;border-radius:8px}
.chips span{display:inline-block;background:var(--chip);border:1px solid var(--line);border-radius:999px;padding:1px 10px;margin:2px 4px 2px 0;font-size:13px}
.periodbar{display:flex;align-items:center;gap:10px;margin:0 0 14px}
.periodbar select{min-width:170px}
@media(max-width:900px){.hb{grid-template-columns:100px 1fr 70px}.kindrow{grid-template-columns:90px 1fr 90px}}

.modal.wide{width:min(860px,100%)}
@media(max-width:900px){.modal .tiles{grid-template-columns:1fr 1fr!important}}
a.btn{display:inline-block;text-decoration:none;color:inherit}a.btn.primary{color:#fff}

.navhead{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:12px 14px 4px}
tr.sel{background:var(--blue-l)}
.kindrow{grid-template-columns:1fr auto}

.card.compact{padding:12px 14px}.compact table{font-size:14px}.compact th{padding:4px 8px;font-size:12px}.compact td{padding:4px 8px;line-height:1.25}
.compact tr.tot td{font-weight:700;border-top:2px solid var(--line)}
.btn.tiny{padding:2px 8px;font-size:12px;border-radius:7px;margin-left:4px}.btn.small{padding:4px 10px;font-size:13px}

.pendbox{border:1px solid var(--line);border-radius:10px;max-height:240px;overflow:auto;margin-top:6px;background:var(--surface)}
.pg .ph{display:flex;justify-content:space-between;gap:8px;padding:7px 10px;background:var(--bg);cursor:pointer;border-top:1px solid var(--line)}.pg:first-child .ph{border-top:0}
.pi{display:grid;grid-template-columns:82px 1fr auto 90px;gap:8px;padding:5px 10px 5px 22px;cursor:pointer;font-size:14px;border-top:1px solid #eef2f7;align-items:center}.pi>b{text-align:right}
.pi:hover,.ph:hover{background:#eef5fd}.pi.sel,.ph.sel{background:var(--blue-l);outline:2px solid var(--blue);outline-offset:-2px}

/* ---- Phase 2: dark theme */
:root[data-theme=dark]{
  --bg:#0f1621; --card:#17212e; --line:#2a3a4f; --text:#e3eaf4; --muted:#93a4ba;
  --blue:#6aa8e8; --blue-l:#1d2f45; --mint:#4ec3a0; --mint-l:#173329; --lav:#a396e6; --lav-l:#27223f;
  --peach:#e8a550; --peach-l:#3a2c17; --rose:#ec7b8c; --rose-l:#3d1f26; --sky:#58bcd4; --sky-l:#16323a;
  --surface:#17212e; --surface2:#1f2c3d; --track:#26364a; --chip:#1f2c3d; --faint:#1b2635; --toast:#33465f; --on-accent:#0f1621;
  --shadow:0 1px 3px rgba(0,0,0,.4);
}
:root[data-theme=dark] body{color-scheme:dark}
:root[data-theme=dark] .btn.primary{color:var(--on-accent)}
:root[data-theme=dark] a{color:var(--blue)}
.themebtn{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:6px 11px;cursor:pointer;font-size:16px;line-height:1}

/* ---- Phase 2: mobile bottom navigation */
.bnav{display:none}
@media(max-width:900px){
  .bnav{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;z-index:20;background:var(--surface);border-top:1px solid var(--line);padding:4px 4px calc(4px + env(safe-area-inset-bottom))}
  .bnav a{display:flex;flex-direction:column;align-items:center;gap:1px;padding:6px 2px;color:var(--muted);text-decoration:none;font-size:11px;border-radius:10px;min-height:48px;justify-content:center}
  .bnav a .bi{font-size:19px;line-height:1}
  .bnav a.on{color:var(--blue);font-weight:700;background:var(--blue-l)}
  .fab{bottom:78px}
  main{padding-bottom:140px}
  .periodbar{flex-wrap:wrap}
}
.customrange{display:inline-flex;gap:6px;align-items:center;flex-wrap:wrap}
.customrange input{min-width:0}

.printonly{display:none}
@media print{
  .side,.top,.bnav,.noprint,.fab,.toast,#chainBadge{display:none!important}
  body,main,#view{background:#fff!important;color:#000!important;margin:0!important;padding:0!important;display:block!important}
  .card{box-shadow:none!important;border:0!important;padding:0!important}
  .printonly{display:block}
  table{width:100%;font-size:11px} tr{page-break-inside:avoid} thead{display:table-header-group}
  @page{margin:14mm}
}
