/* Look and layout carried over from SDC Intelligence v5: cream background, sage accent, white top bar with
   logo, left sidebar with sections, serif page titles, mono figures, KPI cards with a coloured top strip. */
@import url('https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700&family=Instrument+Serif:ital@0;1&family=DM+Mono:wght@400;500&display=swap');

:root {
  --warm6:#D6D0C8; --sage:#5C8B6E; --sage2:#4A7359; --sage3:#3D6048; --sage-lt:#EBF2EE; --sage-lt2:#D4E7DB;
  --amber:#B45309; --amber-lt:#FEF3C7; --rose:#BE123C; --rose-lt:#FFE4E6; --blue:#1D4ED8; --blue-lt:#DBEAFE;
  --violet:#7C3AED; --violet-lt:#EDE9FE;
  --text:#1C1917; --text2:#44403C; --text3:#78716C; --text4:#A8A29E; --border:#E2DDD6; --border2:#D0C9BF;
  --bg:#FAF8F5; --bg2:#F3F0EB; --bg3:#EAE5DC; --card:#FFFFFF; --topbar:#FFFFFF; --sidebar:#F3F0EB;
  --shadow:0 1px 3px rgba(0,0,0,.06),0 1px 2px rgba(0,0,0,.04); --shadow2:0 4px 12px rgba(0,0,0,.08),0 2px 4px rgba(0,0,0,.05);
  --shadow3:0 8px 24px rgba(0,0,0,.10),0 4px 8px rgba(0,0,0,.06);
  --r:8px; --r2:12px; --r3:16px; --sans:'DM Sans',system-ui,sans-serif; --serif:'Instrument Serif',Georgia,serif;
  --mono:'DM Mono','Fira Code',monospace; --sw:210px; --th:56px;
  /* names used by app.js for chart colours */
  --brand:#5C8B6E; --muted:#78716C; --bad:#BE123C;
}
:root[data-theme="dark"] {
  --warm6:#4A4540; --text:#F5F0EB; --text2:#D6CFC8; --text3:#A8A29E; --text4:#78716C; --border:#3A3530; --border2:#4A4540;
  --bg:#1C1917; --bg2:#242120; --bg3:#2E2A27; --card:#242120; --topbar:#1A1714; --sidebar:#1A1714;
  --sage-lt:#1E2B22; --sage-lt2:#253329; --amber-lt:#2A1F0A; --rose-lt:#2A0F18; --blue-lt:#0F1A2E; --violet-lt:#1F1633;
  --amber:#F0A33C; --rose:#F2708A; --blue:#7FA5F5; --sage2:#8FC0A2;
  --shadow:0 1px 3px rgba(0,0,0,.3); --shadow2:0 4px 12px rgba(0,0,0,.4); --shadow3:0 8px 24px rgba(0,0,0,.5);
  --brand:#6FA384; --muted:#A8A29E; --bad:#F2708A;
}
*,*::before,*::after { box-sizing:border-box; margin:0; padding:0; }
html { font-size:14px; -webkit-font-smoothing:antialiased; }
body { font-family:var(--sans); background:var(--bg); color:var(--text); min-height:100vh; overflow-x:hidden; transition:background .2s,color .2s; }
a { color:var(--sage2); text-decoration:none; }
::-webkit-scrollbar { width:5px; height:5px; } ::-webkit-scrollbar-thumb { background:var(--warm6); border-radius:10px; }

/* top bar */
#topbar { position:fixed; top:0; left:0; right:0; height:var(--th); background:var(--topbar); border-bottom:1px solid var(--border);
  display:flex; align-items:center; padding:0 16px; gap:10px; z-index:100; }
#tb-brand { display:flex; align-items:center; gap:10px; flex-shrink:0; min-width:0; }
#tb-logo { height:32px; width:auto; border-radius:4px; background:#fff; }
#tb-name { font-family:var(--serif); font-size:16px; color:var(--text); letter-spacing:-.2px; white-space:nowrap; }
#tb-name small { font-family:var(--sans); font-size:10px; color:var(--text4); display:block; letter-spacing:.4px; text-transform:uppercase; margin-top:-1px; }
#tb-space { flex:1; }
#tb-asof { display:flex; align-items:center; background:var(--bg2); border:1px solid var(--border); border-radius:8px; padding:3px; }
#tb-asof span { padding:4px 12px; border-radius:6px; font-size:11px; font-weight:600; background:var(--sage); color:#fff; white-space:nowrap; }
#tb-asof.stale span { background:var(--amber); }
.tb-icon { width:32px; height:32px; border-radius:8px; border:1px solid var(--border); background:var(--bg2); display:flex; align-items:center;
  justify-content:center; font-size:15px; color:var(--text3); cursor:pointer; transition:all .15s; }
.tb-icon:hover { background:var(--bg3); color:var(--text); }
#tb-user { display:flex; align-items:center; gap:8px; }
#tb-av { width:32px; height:32px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:11px; font-weight:700; color:#fff; background:var(--sage); flex-shrink:0; }
#tb-uname { font-size:12px; font-weight:600; color:var(--text); white-space:nowrap; }
#tb-urole { font-size:10px; color:var(--text4); text-transform:uppercase; letter-spacing:.4px; }
#menu-toggle { display:none; width:32px; height:32px; background:none; border:1px solid var(--border); border-radius:8px; align-items:center;
  justify-content:center; font-size:17px; color:var(--text2); cursor:pointer; }
.banner { margin:0 0 14px; background:var(--amber-lt); color:var(--amber); border:1px solid var(--amber); border-radius:var(--r); padding:9px 12px; font-size:12px; font-weight:600; }

/* layout + sidebar */
#layout { display:flex; padding-top:var(--th); min-height:100vh; }
#sidebar { width:var(--sw); background:var(--sidebar); border-right:1px solid var(--border); position:fixed; top:var(--th); bottom:0; left:0;
  overflow-y:auto; padding:10px 8px; z-index:90; transition:transform .25s cubic-bezier(.4,0,.2,1); }
.nav-sec { font-size:9px; font-weight:700; text-transform:uppercase; letter-spacing:.8px; color:var(--text4); padding:14px 8px 4px; margin-top:4px; }
.nav-sec:first-child { margin-top:0; padding-top:4px; }
.nav-item { display:flex; align-items:center; gap:9px; padding:7px 10px; border-radius:var(--r); cursor:pointer; font-size:13px; font-weight:500;
  color:var(--text2); transition:all .12s; margin-bottom:1px; }
.nav-item:hover { background:var(--bg3); color:var(--text); }
.nav-item.on { background:var(--sage-lt); color:var(--sage2); font-weight:600; }
.ni { font-size:14px; width:18px; text-align:center; flex-shrink:0; opacity:.75; } .nav-item.on .ni { opacity:1; }
main#view { flex:1; margin-left:var(--sw); padding:24px; min-width:0; max-width:1180px; display:flex; flex-direction:column; gap:16px; }
nav#tabs { display:none; }

/* page header */
h1 { font-family:var(--serif); font-weight:400; font-size:22px; color:var(--text); letter-spacing:-.3px; }
h1 + p.muted, .ph-sub { font-size:12px; color:var(--text4); margin-top:-12px; }
h2 { font-size:13px; font-weight:700; color:var(--text); margin-bottom:-6px; }
.muted { color:var(--text4); } .center { text-align:center; } .note { font-size:11px; color:var(--text4); }
.good { color:var(--sage2); } .bad { color:var(--rose); } .warn { color:var(--amber); }

/* hero */
.hero { background:linear-gradient(135deg,var(--sage3) 0%,var(--sage) 50%,#5A8F70 100%); border-radius:var(--r3); padding:24px; position:relative; overflow:hidden; }
.hero::before { content:''; position:absolute; top:-40px; right:-40px; width:200px; height:200px; border-radius:50%; background:rgba(255,255,255,.06); }
.hero-title { font-size:11px; color:rgba(255,255,255,.6); text-transform:uppercase; letter-spacing:.8px; margin-bottom:8px; }
.hero-val { font-family:var(--serif); font-size:36px; font-weight:700; color:#fff; line-height:1; margin-bottom:6px; }
.hero-sub { font-size:13px; color:rgba(255,255,255,.75); }
.hero-sub .good { color:#C9F2D6; } .hero-sub .bad { color:#FFD0D8; }
.hero-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(110px,1fr)); gap:12px; margin-top:18px; position:relative; z-index:1; }
.hg-lbl { font-size:10px; color:rgba(255,255,255,.55); margin-bottom:3px; } .hg-val { font-size:15px; font-weight:700; font-family:var(--mono); color:rgba(255,255,255,.92); }

/* cards + KPIs */
.card { background:var(--card); border:1px solid var(--border); border-radius:var(--r2); padding:16px; box-shadow:var(--shadow); }
.card-title, .card .label { font-size:13px; font-weight:700; color:var(--text); margin-bottom:12px; }
.kpi-grid, .grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:10px; }
.wide { grid-column:1 / -1; }
.kpi { background:var(--card); border:1px solid var(--border); border-radius:var(--r2); padding:14px; position:relative; overflow:hidden; }
.kpi-acc { position:absolute; top:0; left:0; right:0; height:3px; background:var(--sage); }
.kpi-lbl { font-size:11px; color:var(--text4); margin-bottom:6px; font-weight:500; }
.kpi-val { font-size:20px; font-weight:700; font-family:var(--mono); color:var(--text); line-height:1.1; }
.kpi-sub, .sub { font-size:11px; color:var(--text4); margin-top:4px; }
.bar { height:5px; background:var(--bg3); border-radius:3px; overflow:hidden; margin:4px 0 8px; } .bar > i { display:block; height:100%; background:var(--sage); border-radius:3px; }
.ib { background:var(--sage-lt); border:1px solid var(--sage-lt2); border-radius:var(--r2); padding:14px; font-size:12px; color:var(--text2); }
.ib b { font-family:var(--mono); color:var(--sage2); font-size:15px; }
canvas { width:100%; height:180px; display:block; }

/* lists (leaderboard rows) */
.list { list-style:none; background:var(--card); border:1px solid var(--border); border-radius:var(--r2); padding:4px 14px; box-shadow:var(--shadow); }
.list li { display:flex; align-items:center; gap:10px; padding:9px 0; border-bottom:1px solid var(--border); font-size:12px; }
.list li:last-child { border:none; } .list li.tap { cursor:pointer; } .list li.tap:hover .name { color:var(--sage2); }
.list .main { flex:1; min-width:0; }
.list .name { font-size:13px; font-weight:600; color:var(--text); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.list .meta { font-size:11px; color:var(--text4); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; margin-top:1px; }
.list .num { text-align:right; font-family:var(--mono); font-weight:700; color:var(--text); white-space:nowrap; }
.list .num small { display:block; font-family:var(--sans); font-weight:400; color:var(--text4); font-size:10px; }
.rank { width:24px; height:24px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:11px; font-weight:700; flex-shrink:0; background:var(--bg2); color:var(--text4); }
.rank.r1 { background:#FCD34D; color:#92400E; } .rank.r2 { background:var(--warm6); color:var(--text2); } .rank.r3 { background:#FDBA74; color:#9A3412; }

/* badges */
.tag { display:inline-flex; align-items:center; padding:2px 7px; border-radius:20px; font-size:10px; font-weight:600; white-space:nowrap; background:var(--bg3); color:var(--text3); }
.tag.good { background:var(--sage-lt); color:var(--sage2); } .tag.bad { background:var(--rose-lt); color:var(--rose); } .tag.warn { background:var(--amber-lt); color:var(--amber); }
.tag.Platinum { background:var(--violet-lt); color:var(--violet); } .tag.Gold { background:var(--amber-lt); color:var(--amber); }
.tag.Silver { background:var(--blue-lt); color:var(--blue); } .tag.Bronze { background:var(--sage-lt); color:var(--sage2); }

/* filters, inputs, buttons */
.tools { display:flex; flex-wrap:wrap; gap:8px; align-items:center; background:var(--card); border:1px solid var(--border); border-radius:var(--r2); padding:10px 14px; }
input, select { border:1px solid var(--border); border-radius:var(--r); padding:7px 11px; font-family:var(--sans); font-size:13px; color:var(--text); background:var(--bg); outline:none; transition:border-color .15s; }
input:focus, select:focus { border-color:var(--sage); box-shadow:0 0 0 3px rgba(92,139,110,.12); }
input[type=search] { flex:1; min-width:160px; } input[type=number] { font-family:var(--mono); font-size:14px; width:100%; padding:10px 13px; }
.list select { max-width:46%; }
.btn { padding:8px 16px; border-radius:var(--r); border:none; font-family:var(--sans); font-size:13px; font-weight:600; cursor:pointer; background:var(--sage); color:#fff; }
.btn:hover { background:var(--sage2); }

/* tables */
.tablewrap { overflow-x:auto; border-radius:var(--r); border:1px solid var(--border); background:var(--card); padding:0; box-shadow:none; }
table { width:100%; border-collapse:collapse; }
thead { background:var(--bg2); }
th { padding:9px 12px; font-size:11px; font-weight:600; color:var(--text3); text-align:right; white-space:nowrap; border-bottom:1px solid var(--border); letter-spacing:.2px; }
td { padding:9px 12px; font-size:12px; color:var(--text2); border-bottom:1px solid var(--border); vertical-align:middle; text-align:right; white-space:nowrap; font-family:var(--mono); }
th:first-child, td:first-child { text-align:left; font-family:var(--sans); font-weight:600; color:var(--text); max-width:220px; overflow:hidden; text-overflow:ellipsis; }
td.txt { font-family:var(--sans); text-align:left; }
tr:last-child td { border-bottom:none; } tbody tr:hover td { background:var(--bg2); }

/* login + boot */
#login-screen { min-height:100vh; display:flex; align-items:center; justify-content:center; background:var(--bg); padding:20px;
  background-image:radial-gradient(ellipse at 20% 20%,rgba(92,139,110,.10) 0%,transparent 60%),radial-gradient(ellipse at 80% 80%,rgba(180,83,9,.05) 0%,transparent 60%); }
.lgn-wrap { width:100%; max-width:420px; }
.lgn-brand { text-align:center; margin-bottom:28px; } .lgn-brand img { width:180px; height:auto; display:block; margin:0 auto 12px; border-radius:8px; }
.lgn-brand div { font-size:11px; color:var(--text4); text-transform:uppercase; letter-spacing:.5px; }
.lgn-box { background:var(--card); border:1px solid var(--border); border-radius:var(--r3); padding:28px; box-shadow:var(--shadow2); }
.lgn-title { font-size:18px; font-weight:700; margin-bottom:4px; } .lgn-sub { font-size:13px; color:var(--text3); margin-bottom:20px; }
.lgn-lbl { display:block; font-size:11px; font-weight:600; color:var(--text2); margin-bottom:5px; text-transform:uppercase; letter-spacing:.3px; }
.lgn-inp { width:100%; padding:10px 13px; font-size:14px; }
.lgn-btn { width:100%; padding:11px 20px; background:var(--sage); color:#fff; border:none; border-radius:var(--r); font-family:var(--sans); font-size:14px; font-weight:700; cursor:pointer; margin-top:14px; }
.lgn-btn:hover { background:var(--sage2); box-shadow:0 4px 12px rgba(92,139,110,.3); }
.lgn-msg { font-size:12px; color:var(--text3); margin-top:10px; text-align:center; min-height:16px; }
#boot { position:fixed; inset:0; background:var(--bg); z-index:9999; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:20px; }
#boot img { width:130px; height:auto; border-radius:8px; } #boot div { font-size:12px; color:var(--text4); }

@media (max-width:768px) {
  #menu-toggle { display:flex; }
  #sidebar { transform:translateX(-100%); } #sidebar.open { transform:translateX(0); box-shadow:var(--shadow3); }
  main#view { margin-left:0; padding:16px 16px calc(76px + env(safe-area-inset-bottom)); }
  .kpi-grid, .grid { grid-template-columns:1fr 1fr; }
  #tb-uname, #tb-urole, #tb-name small { display:none; }
  .hero-val { font-size:28px; } .hero { padding:20px; }
  nav#tabs { position:fixed; bottom:0; left:0; right:0; display:flex; background:var(--topbar); border-top:1px solid var(--border);
    padding-bottom:env(safe-area-inset-bottom); z-index:80; }
  nav#tabs a { flex:1; text-align:center; padding:8px 2px 9px; font-size:10px; font-weight:600; color:var(--text4); }
  nav#tabs a span { display:block; font-size:17px; margin-bottom:1px; opacity:.8; }
  nav#tabs a.on { color:var(--sage2); } nav#tabs a.on span { opacity:1; }
  .list select { max-width:50%; }
}
@media (max-width:380px) { #tb-name { display:none; } }

[hidden] { display:none !important; }

/* v5 customer order patterns + admin forms */
.g2 { display:grid; grid-template-columns:1fr 1fr; gap:16px; align-items:start; }
.cal { display:grid; grid-template-columns:repeat(10,1fr); gap:4px; }
.cal-d { aspect-ratio:1; border-radius:4px; background:var(--bg3); display:flex; align-items:center; justify-content:center; font-size:9px; font-weight:700; color:var(--text4); }
.cal-d.on { background:var(--sage); color:#fff; } .cal-d.fut { opacity:.45; }
.cal-key { display:inline-block; width:10px; height:10px; border-radius:2px; background:var(--bg3); vertical-align:middle; } .cal-key.on { background:var(--sage); }
.dow { display:flex; align-items:flex-end; gap:6px; height:110px; }
.dow > div { flex:1; display:flex; flex-direction:column; align-items:center; justify-content:flex-end; gap:3px; height:100%; }
.dow i { display:block; width:100%; min-height:4px; background:var(--bg3); border-radius:4px 4px 0 0; } .dow i.top { background:var(--sage); }
.dow span { font-size:9px; color:var(--text4); } .dow b { font-size:9px; color:var(--text3); min-height:11px; }
.ir { display:flex; justify-content:space-between; align-items:center; gap:10px; padding:6px 0 2px; font-size:12px; }
.ik { color:var(--text3); min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; } .iv { color:var(--text); font-weight:600; text-align:right; white-space:nowrap; font-family:var(--mono); font-size:11px; }
.card .ir + .ir { border-top:1px solid var(--border); }
.form { display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:12px; }
.form label { display:block; font-size:11px; font-weight:600; color:var(--text3); text-transform:uppercase; letter-spacing:.3px; }
.form input, .form select { display:block; width:100%; margin-top:5px; padding:9px 12px; font-size:13px; font-family:var(--sans); text-transform:none; letter-spacing:0; }
.form input[readonly] { background:var(--bg3); color:var(--text3); }
.btn.sm { padding:4px 10px; font-size:11px; } .btn.sec { background:var(--bg2); color:var(--text2); border:1px solid var(--border); } .btn.sec:hover { background:var(--bg3); }
.btn[disabled] { opacity:.45; cursor:not-allowed; }
.lgn-fld { margin-bottom:14px; }
.lgn-err { font-size:12px; color:var(--rose); margin-top:8px; text-align:center; padding:8px; background:var(--rose-lt); border-radius:6px; }
@media (max-width:768px) { .g2 { grid-template-columns:1fr; } }
