/* ============================================================
   BY Administration — design system  (brand: byadministration.dk)
   Inter (UI) + Cardo (display) · navy #081f5c / blue #4a90e2 / slate
   ============================================================ */
:root {
  /* brand */
  --brand-900:#081f5c; --brand-800:#0e2a6e; --brand-700:#213c85; --brand-600:#2a4a9e;
  --brand-500:#4a90e2; --brand-400:#6aa6e8; --brand-50:#e7f1fc; --brand-tint:#E7F6FF;
  /* neutrals (slate) */
  --ink:#0f172a; --ink-2:#475569; --ink-3:#94a3b8;
  --line:#e6eaf1; --line-2:#eff2f7; --canvas:#f6f8fb; --surface:#ffffff; --surface-2:#f9fafb;
  /* semantic */
  --green:#16a34a; --green-bg:#e7f5ee; --amber:#b45309; --amber-bg:#fbf1e3;
  --red:#dc2626; --red-bg:#fdecec; --blue:#2f6fb5; --blue-bg:#eaf2fb;
  /* shape */
  --r-sm:8px; --r:12px; --r-lg:16px; --pill:999px;
  --sh-1:0 1px 2px rgba(16,24,40,.05); --sh-2:0 6px 20px rgba(16,24,40,.08);
  --sh-card:0 1px 2px rgba(16,24,40,.04), 0 1px 3px rgba(16,24,40,.05);
}
* { box-sizing:border-box; }
html,body { height:100%; }
body { margin:0; background:var(--canvas); color:var(--ink);
  font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  font-size:14px; line-height:1.5; -webkit-font-smoothing:antialiased;
  overflow-x:hidden; -webkit-text-size-adjust:100%; }
h1,h2,h3 { margin:0; font-weight:600; letter-spacing:-.01em; }
.hidden { display:none !important; }
.muted { color:var(--ink-2); } .small { font-size:12.5px; }
.row-between { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.btn-row { display:flex; gap:8px; }
a { color:var(--brand-600); }

/* ---------- buttons ---------- */
.btn { display:inline-flex; align-items:center; justify-content:center; gap:7px;
  font:inherit; font-weight:550; border-radius:var(--r-sm); border:1px solid transparent;
  padding:9px 15px; cursor:pointer; transition:.15s ease; white-space:nowrap; }
.btn:focus-visible { outline:2px solid var(--brand-500); outline-offset:2px; }
.btn-primary { background:var(--brand-700); color:#fff; box-shadow:var(--sh-1); }
.btn-primary:hover { background:var(--brand-800); }
.btn-secondary { background:#fff; color:var(--ink); border-color:var(--line); box-shadow:var(--sh-1); }
.btn-secondary:hover { background:var(--surface-2); border-color:#d7deea; }
.btn-ghost { background:transparent; color:var(--ink-2); }
.btn-ghost:hover { background:rgba(255,255,255,.08); color:#fff; }
.btn-danger { background:var(--red); color:#fff; }
.btn-sm { padding:6px 11px; font-size:13px; }
.btn-block { width:100%; padding:11px; }
/* legacy bare classes still emitted by app.js */
button.ghost, button.small, .data-table button, .stmt button, td button {
  font:inherit; cursor:pointer; border-radius:var(--r-sm); border:1px solid var(--line);
  background:#fff; color:var(--ink); padding:6px 11px; font-size:13px; font-weight:550;
  box-shadow:var(--sh-1); transition:.15s; }
button.ghost:hover, button.small:hover, .data-table button:hover, .stmt button:hover, td button:hover {
  background:var(--surface-2); border-color:#d7deea; }
.push-one { background:var(--brand-700) !important; color:#fff !important; border-color:transparent !important; }
.push-one:hover { background:var(--brand-800) !important; }

/* ---------- inputs ---------- */
.input, select.input, input[type=text], input[type=password], input[type=number],
input[type=month], input[type=search], .data-table select, .data-table input, .stmt input, .stmt select {
  font:inherit; color:var(--ink); background:#fff; border:1px solid var(--line);
  border-radius:var(--r-sm); padding:9px 11px; outline:none; transition:.15s; }
.input:focus, input:focus, select:focus { border-color:var(--brand-500); box-shadow:0 0 0 3px rgba(74,144,226,.15); }
.input-sm { padding:7px 10px; font-size:13px; }
select { appearance:none; background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2.5'><path d='M6 9l6 6 6-6'/></svg>"); background-repeat:no-repeat; background-position:right 9px center; padding-right:28px; }
.field { display:flex; flex-direction:column; gap:5px; text-align:left; }
.field > span { font-size:12.5px; font-weight:550; color:var(--ink-2); }
.seg { display:inline-flex; align-items:center; gap:7px; }
.error { color:var(--red); font-size:13px; min-height:16px; }

/* ---------- login ---------- */
.login-screen { min-height:100vh; display:grid; place-items:center;
  background:radial-gradient(1200px 600px at 50% -10%, #eef4fc 0%, var(--canvas) 55%); }
.login-card { background:#fff; padding:34px 32px; border-radius:var(--r-lg); width:340px;
  border:1px solid var(--line); box-shadow:var(--sh-2); display:flex; flex-direction:column; gap:14px; text-align:center; }
.login-logo, .brand-name { font-family:Cardo,serif; }
.login-logo { font-size:26px; font-weight:700; color:var(--brand-900); }
.login-logo span { color:var(--brand-500); }
.login-card p { margin:-6px 0 6px; }

/* ---------- mode banner ---------- */
.mode-banner { text-align:center; padding:7px 16px; font-size:12.5px; font-weight:600; letter-spacing:.02em; }
.mode-banner.test { background:var(--green-bg); color:var(--green); border-bottom:1px solid #cfe9da; }
.mode-banner.prod { background:#fbe8e8; color:var(--red); border-bottom:1px solid #f3cccc; }

/* ---------- shell ---------- */
.shell { display:flex; min-height:calc(100vh - 30px); }
.sidebar { width:248px; flex-shrink:0; background:var(--brand-900); color:#fff;
  display:flex; flex-direction:column; padding:18px 14px; position:sticky; top:0; height:100vh; }
.brand { display:flex; align-items:center; gap:11px; padding:6px 8px 18px; }
.brand-mark { width:40px; height:40px; border-radius:11px; background:#fff;
  display:grid; place-items:center; flex-shrink:0; box-shadow:var(--sh-1); }
.brand-mark svg { width:30px; height:30px; }
.login-mark { width:54px; height:54px; display:block; margin:0 auto 2px; }
.org { font-size:10.5px; color:rgba(255,255,255,.45); line-height:1.5; }
.brand-name { font-size:15px; font-weight:700; line-height:1.15; display:flex; flex-direction:column; }
.brand-name span { font-family:Inter; font-size:11px; font-weight:400; color:rgba(255,255,255,.55); letter-spacing:.01em; }
.nav { display:flex; flex-direction:column; gap:2px; flex:1; }
.nav-group { font-size:10.5px; text-transform:uppercase; letter-spacing:.09em; color:rgba(255,255,255,.4); padding:16px 10px 6px; font-weight:600; }
.nav .tab { display:flex; align-items:center; gap:10px; width:100%; text-align:left;
  background:transparent; border:none; color:rgba(255,255,255,.72); font:inherit; font-weight:500;
  padding:9px 10px; border-radius:9px; cursor:pointer; transition:.15s; }
.nav .tab:hover { background:rgba(255,255,255,.07); color:#fff; }
.nav .tab.active { background:rgba(74,144,226,.22); color:#fff; box-shadow:inset 3px 0 0 var(--brand-500); }
.ic { width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; flex-shrink:0; }
.sidebar-foot { border-top:1px solid rgba(255,255,255,.1); padding-top:14px; display:flex; flex-direction:column; gap:10px; }
.conn-mini { font-size:12px; color:rgba(255,255,255,.7); display:flex; align-items:center; gap:6px; }
.conn-dot { width:8px; height:8px; border-radius:50%; background:rgba(255,255,255,.3); display:inline-block; }
.conn-dot.ok { background:#34d399; box-shadow:0 0 8px #34d399; }
.conn-dot.fail { background:#f87171; box-shadow:0 0 8px #f87171; }

/* ---------- main ---------- */
.main { flex:1; min-width:0; }
.content { padding:30px 34px; max-width:1240px; }
.page-head { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin-bottom:22px; }
.page-head h1 { font-family:Cardo,serif; font-size:27px; font-weight:700; color:var(--brand-900); }
.page-head p { margin:4px 0 0; }
.toolbar { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:16px; }

/* ---------- cards ---------- */
.card { background:var(--surface); border:1px solid var(--line); border-radius:var(--r); box-shadow:var(--sh-card); }
.card-head { padding:14px 18px; border-bottom:1px solid var(--line-2); font-weight:600; font-size:13.5px; color:var(--ink); }
.card-body { padding:16px 18px; }
.card-body canvas { max-height:300px; }

/* ---------- KPI row ---------- */
.kpi-row { display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); gap:14px; margin-bottom:20px; }
.kpi-row > div { background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:15px 17px;
  box-shadow:var(--sh-card); display:flex; flex-direction:column; gap:3px; }
.kpi-row > div span.small { font-size:11.5px; text-transform:uppercase; letter-spacing:.05em; color:var(--ink-3); font-weight:600; }
.kpi-row > div b { font-size:22px; font-weight:700; color:var(--brand-900); font-variant-numeric:tabular-nums; letter-spacing:-.02em; }

/* ---------- charts ---------- */
.charts { display:grid; grid-template-columns:1fr 1fr; gap:18px; }
@media (max-width:980px){ .charts { grid-template-columns:1fr; } }

/* ---------- badges ---------- */
.badge { display:inline-flex; align-items:center; gap:5px; font-size:11.5px; font-weight:600;
  padding:3px 9px; border-radius:var(--pill); background:var(--surface-2); border:1px solid var(--line); color:var(--ink-2); }
.badge.ok { background:var(--green-bg); color:var(--green); border-color:#cfe9da; }
.badge.warn { background:var(--amber-bg); color:var(--amber); border-color:#f0dcc2; }
.badge.inv { background:var(--blue-bg); color:var(--blue); border-color:#cfe0f3; }
.badge.cn { background:#f3eafc; color:#7c3aed; border-color:#e2d2f7; }
.badge.cat { background:var(--brand-50); color:var(--brand-700); border-color:#d4e4f7; }

/* ---------- status cards (connections) ---------- */
.cards { display:flex; gap:16px; flex-wrap:wrap; }
.status-card { display:flex; gap:13px; align-items:center; background:var(--surface);
  border:1px solid var(--line); border-radius:var(--r); padding:18px 22px; min-width:260px; box-shadow:var(--sh-card); }
.status-card .dot { width:11px; height:11px; border-radius:50%; background:var(--ink-3); flex-shrink:0; }
.status-card.ok .dot { background:var(--green); box-shadow:0 0 0 4px var(--green-bg); }
.status-card.fail .dot { background:var(--red); box-shadow:0 0 0 4px var(--red-bg); }
.status-card .sub { color:var(--ink-2); font-size:12.5px; margin-top:2px; }
.status-card strong { color:var(--brand-900); }

/* ---------- tables ---------- */
.table-wrap { overflow-x:auto; border-radius:var(--r); }
.data-table, table.bk, #mapping-table { width:100%; border-collapse:collapse; }
.data-table th, table.bk th { text-align:left; font-size:11px; text-transform:uppercase; letter-spacing:.04em;
  color:var(--ink-3); font-weight:600; padding:11px 14px; border-bottom:1px solid var(--line); background:var(--surface-2); position:sticky; top:0; }
.data-table td, table.bk td { padding:11px 14px; border-bottom:1px solid var(--line-2); vertical-align:middle; }
.data-table tbody tr:hover, table.bk tbody tr:hover { background:var(--surface-2); }
.data-table tr:last-child td, table.bk tr:last-child td { border-bottom:none; }
table.bk { font-size:12.5px; }
table.bk .r, .data-table .r { text-align:right; font-variant-numeric:tabular-nums; }
.data-table select { min-width:190px; } .data-table input[type=number] { width:78px; }
.data-table tr.ready td:first-child { box-shadow:inset 3px 0 0 var(--green); }
.data-table tr.incomplete td:first-child { box-shadow:inset 3px 0 0 var(--amber); }
.note { font-size:11px; color:var(--ink-3); margin-top:2px; }

/* ---------- period picker ---------- */
.month-grid { display:grid; grid-template-columns:repeat(6,1fr); gap:8px; margin:2px 0 20px; max-width:760px; }
.month-grid button { background:#fff; border:1px solid var(--line); color:var(--ink-2); border-radius:var(--r-sm);
  padding:10px; font:inherit; font-size:13px; font-weight:550; text-transform:capitalize; cursor:pointer; transition:.15s; box-shadow:var(--sh-1); }
.month-grid button:hover { border-color:var(--brand-500); color:var(--ink); }
.month-grid button.sel { background:var(--brand-700); color:#fff; border-color:var(--brand-700); }
.month-grid button.future { opacity:.5; }

/* ---------- skeletons ---------- */
.sk { position:relative; overflow:hidden; background:#edf1f6; border-radius:8px; }
.sk::after { content:""; position:absolute; inset:0; transform:translateX(-100%);
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.65),transparent); animation:sk 1.25s infinite; }
@keyframes sk { to { transform:translateX(100%); } }
.sk-line { height:13px; width:78%; }
.sk-kpi { min-height:62px; }
.sk-card { height:132px; border:1px solid var(--line); border-radius:var(--r); margin-bottom:12px; }

/* ---------- sortable headers ---------- */
.data-table th.sortable { cursor:pointer; user-select:none; }
.data-table th.sortable:hover { color:var(--ink-2); }
.data-table th.asc::after { content:" ↑"; color:var(--brand-500); }
.data-table th.desc::after { content:" ↓"; color:var(--brand-500); }
input[type=checkbox] { accent-color:var(--brand-700); width:16px; height:16px; cursor:pointer; }

/* ---------- run results (statements) ---------- */
.run-actions { display:flex; gap:10px; margin-bottom:18px; align-items:center; flex-wrap:wrap; }
.run-actions .spacer { flex:1; }
.checkline { gap:6px; }
.stmt-title { display:flex; align-items:center; gap:11px; }
.stmt { background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:16px 18px; margin-bottom:12px; box-shadow:var(--sh-card); }
.stmt h3 { font-size:15px; display:flex; align-items:center; gap:9px; flex-wrap:wrap; color:var(--brand-900); }
.stmt .grid { display:grid; grid-template-columns:repeat(4,1fr); gap:8px 22px; font-size:13px; margin-top:12px; }
@media (max-width:760px){ .stmt .grid { grid-template-columns:repeat(2,1fr); } }
.stmt .num { color:var(--ink-2); display:flex; flex-direction:column; }
.stmt .num b { color:var(--ink); font-size:15px; font-variant-numeric:tabular-nums; }
.stmt .warn { color:var(--amber); font-size:12.5px; margin-top:8px; background:var(--amber-bg); padding:6px 10px; border-radius:var(--r-sm); }
.bookings { margin:12px 0 0; }
.bookings[open] { overflow-x:auto; -webkit-overflow-scrolling:touch; }
.bookings table.bk { min-width:560px; }
.bookings summary { cursor:pointer; color:var(--brand-600); font-size:13px; font-weight:550; padding:5px 0; }
.expenses { margin-top:12px; border-top:1px solid var(--line-2); padding-top:12px; }
.exp-list { display:flex; flex-direction:column; gap:4px; margin-bottom:10px; }
.exp-row { display:flex; justify-content:space-between; font-size:13px; padding:3px 0; }
.del-exp { background:transparent !important; border:none !important; box-shadow:none !important; color:var(--ink-3) !important; padding:0 4px !important; }
.del-exp:hover { color:var(--red) !important; }
.exp-add { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.exp-add .exp-desc { flex:1; min-width:200px; }
.exp-add input[type=number] { width:150px; }
.exp-vat { display:flex; align-items:center; gap:5px; font-size:12px; color:var(--ink-2); }

/* ---------- manual units (Airbnb CSV) ---------- */
.toolbar .spacer { flex:1; }
.dropzone { border:2px dashed var(--line); border-radius:var(--r); padding:26px 20px; text-align:center;
  display:flex; flex-direction:column; gap:7px; align-items:center; background:var(--surface-2); transition:.15s; }
.dropzone.drag { border-color:var(--brand-500); background:var(--brand-50); }
.warnbox { color:var(--amber); font-size:12.5px; margin:0 0 10px; background:var(--amber-bg);
  padding:8px 12px; border-radius:var(--r-sm); display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.warnbox button { margin-left:auto; }
#man-map-table input[type=text] { min-width:0; }
#man-upload-result b { color:var(--brand-900); }

/* ---------- Overblik: segmented toggle, delta chips, drill-in cards ---------- */
.seg-toggle { display:inline-flex; background:var(--surface-2); border:1px solid var(--line); border-radius:var(--pill); padding:3px; gap:2px; }
.seg-toggle button { border:none; background:transparent; color:var(--ink-2); font:inherit; font-size:12.5px; font-weight:550;
  padding:6px 12px; border-radius:var(--pill); cursor:pointer; transition:.15s; }
.seg-toggle button:hover { color:var(--ink); }
.seg-toggle button.active { background:#fff; color:var(--brand-900); box-shadow:var(--sh-1); }
.kpi-val { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.delta { display:inline-flex; align-items:center; gap:3px; font-size:11.5px; font-weight:700; padding:1px 7px; border-radius:var(--pill); vertical-align:middle; white-space:nowrap; }
.delta.up { background:var(--green-bg); color:var(--green); } .delta.down { background:var(--red-bg); color:var(--red); } .delta.flat { background:var(--surface-2); color:var(--ink-3); }
.drill { position:relative; cursor:pointer; transition:.15s; }
.drill:hover { border-color:var(--brand-500) !important; box-shadow:var(--sh-2); transform:translateY(-1px); }
.drill .arrow { position:absolute; top:12px; right:13px; color:var(--ink-3); font-size:14px; }
.drill:hover .arrow { color:var(--brand-600); }
.sales-head { display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; margin-bottom:14px; }
.sales-head b { font-size:26px; color:var(--brand-900); font-variant-numeric:tabular-nums; letter-spacing:-.02em; }

/* ---------- info tooltips (hover on desktop, tap on mobile) ---------- */
.info, .info-demo { display:inline-flex; align-items:center; justify-content:center; width:16px; height:16px;
  border:1px solid var(--ink-3); color:var(--ink-3); border-radius:50%; font-size:10px; font-weight:700;
  font-style:normal; cursor:help; vertical-align:middle; flex-shrink:0; line-height:1; position:relative; user-select:none; }
.info { margin-left:5px; }
.info:hover, .info:focus, .info.open { background:var(--brand-700); border-color:var(--brand-700); color:#fff; outline:none; }
.info .tip { position:absolute; bottom:calc(100% + 9px); left:50%; transform:translateX(-50%);
  width:max-content; max-width:300px; background:#0f172a; color:#fff; font-weight:400; font-style:normal; font-size:12px;
  line-height:1.55; text-align:left; padding:10px 12px; border-radius:9px; box-shadow:var(--sh-2);
  opacity:0; visibility:hidden; transition:opacity .14s; z-index:200; white-space:normal; letter-spacing:0; }
.info .tip::after { content:""; position:absolute; top:100%; left:50%; transform:translateX(-50%);
  border:6px solid transparent; border-top-color:#0f172a; }
.info:hover .tip, .info:focus .tip, .info.open .tip { opacity:1; visibility:visible; }
.info .tip b { color:#fff; font-weight:700; }
.info .tip .f { display:block; margin-top:5px; color:#cbd5e1; }
.info .tip .src { display:block; margin-top:5px; color:#93a4bd; font-size:11px; }
.info.right .tip { left:auto; right:-4px; transform:none; }
.info.right .tip::after { left:auto; right:8px; transform:none; }
@media (max-width:860px){ .info .tip { position:fixed; left:12px; right:12px; bottom:auto; top:auto; width:auto; max-width:none; transform:none; }
  .info .tip::after { display:none; } }

/* ---------- finance notes + swing markers ---------- */
#fin-notes { display:flex; flex-direction:column; gap:8px; }
.note-row { display:flex; gap:9px; align-items:flex-start; font-size:13px; line-height:1.5; padding:2px 0; }
.note-row .ni { flex-shrink:0; width:20px; height:20px; border-radius:6px; display:grid; place-items:center; font-size:12px; margin-top:1px; }
.note-row.n-up .ni { background:var(--green-bg); color:var(--green); }
.note-row.n-down .ni { background:var(--red-bg); color:var(--red); }
.note-row.n-flag .ni { background:var(--amber-bg); color:var(--amber); }
.note-row.n-info .ni { background:var(--brand-50); color:var(--brand-700); }
.note-row b { color:var(--brand-900); }
.swing { display:inline-flex; align-items:center; gap:3px; font-size:10.5px; font-weight:700; padding:1px 6px; border-radius:var(--pill); margin-left:7px; vertical-align:middle; }
.swing.up { background:var(--green-bg); color:var(--green); } .swing.down { background:var(--red-bg); color:var(--red); }
.swing.biggest { background:var(--brand-700); color:#fff; }

/* ---------- Heavy Finance ---------- */
table.bk tr.tot td { font-weight:700; color:var(--brand-900); border-top:2px solid var(--line); background:var(--surface-2); }
.waterfall { display:flex; flex-direction:column; gap:2px; }
.wf-row { display:flex; justify-content:space-between; align-items:center; padding:7px 10px; border-bottom:1px solid var(--line-2); font-size:13px; }
.wf-row b { font-variant-numeric:tabular-nums; }
.wf-row b.pos { color:var(--green); } .wf-row b.neg { color:var(--red); }
.wf-row.tot { border-top:2px solid var(--brand-900); border-bottom:none; font-weight:700; color:var(--brand-900); margin-top:2px; }

/* ---------- e-conomic sync box + live-preview banner ---------- */
.live-banner { background:var(--brand-50); border:1px solid #cfe0f3; color:var(--brand-800);
  border-radius:var(--r-sm); padding:10px 14px; margin-bottom:14px; font-size:13px; }
.live-banner b { color:var(--brand-900); }
.syncbox { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-top:12px;
  background:var(--green-bg); border:1px solid #cfe9da; border-radius:var(--r-sm); padding:8px 12px; }
.syncbox .spacer { flex:1; }
.syncbox a.ghost { text-decoration:none; }
.synchist { flex-basis:100%; margin-top:6px; }
.synchist summary { cursor:pointer; color:var(--brand-600); font-size:12px; font-weight:550; }
.syncrow { font-size:12px; color:var(--ink-2); padding:3px 0 0; font-variant-numeric:tabular-nums; }

/* ---------- glossary ---------- */
#glossary-search { width:100%; max-width:440px; margin:0 0 14px; }
.chips { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:18px; }
.chip { border:1px solid var(--line); background:#fff; border-radius:var(--pill); padding:5px 13px;
  font:inherit; font-size:12.5px; font-weight:550; color:var(--ink-2); cursor:pointer; transition:.15s; }
.chip:hover { border-color:var(--brand-500); color:var(--ink); }
.chip.active { background:var(--brand-700); color:#fff; border-color:var(--brand-700); }
.chip.ch-g:not(.active) { color:var(--green); border-color:#cfe9da; }
.chip.ch-r:not(.active) { color:var(--red); border-color:#f3cccc; }
.chip.ch-a:not(.active) { color:var(--amber); border-color:#f0dcc2; }
.chip.ch-n:not(.active) { color:var(--brand-700); border-color:#d4e4f7; }
/* category colours: income green, costs red, vat amber, result navy, meta grey */
.gloss-card.cl-g { border-left:3px solid var(--green); }
.gloss-card.cl-r { border-left:3px solid var(--red); }
.gloss-card.cl-a { border-left:3px solid #d97706; }
.gloss-card.cl-n { border-left:3px solid var(--brand-700); }
.gloss-card.cl-s { border-left:3px solid var(--ink-3); }
.badge.cat.b-g { background:var(--green-bg); color:var(--green); border-color:#cfe9da; }
.badge.cat.b-r { background:var(--red-bg); color:var(--red); border-color:#f3cccc; }
.badge.cat.b-a { background:var(--amber-bg); color:var(--amber); border-color:#f0dcc2; }
.badge.cat.b-n { background:var(--blue-bg); color:var(--brand-700); border-color:#cfe0f3; }
.badge.cat.b-s { background:var(--surface-2); color:var(--ink-2); border-color:var(--line); }
.glossary-list { display:grid; grid-template-columns:repeat(auto-fill,minmax(370px,1fr)); gap:14px; }
.gloss-card { background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:15px 17px; box-shadow:var(--sh-card); }
.gloss-head { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:9px; }
.gloss-head strong { font-size:15px; color:var(--brand-900); }
.gloss-def { font-size:13px; color:var(--ink); margin-bottom:10px; }
.gloss-row { display:flex; gap:8px; font-size:12px; padding:4px 0; border-top:1px solid var(--line-2); }
.gloss-row .gl { color:var(--ink-3); min-width:112px; flex-shrink:0; font-weight:550; }
.gloss-row code { background:var(--surface-2); padding:1px 6px; border-radius:5px; font-size:11px; color:var(--brand-700); }

/* ---------- summary (legacy, run-summary uses kpi-row now) ---------- */
.summary { display:flex; gap:28px; flex-wrap:wrap; }

/* ---------- toast ---------- */
.toast { position:fixed; bottom:24px; right:24px; background:#fff; color:var(--ink);
  border:1px solid var(--line); padding:13px 18px; border-radius:var(--r); box-shadow:var(--sh-2);
  opacity:0; transform:translateY(8px); transition:.2s; font-weight:550; font-size:13.5px; z-index:50; }
.toast.show { opacity:1; transform:translateY(0); }
.toast.ok { border-left:3px solid var(--green); } .toast.err { border-left:3px solid var(--red); }

/* ============================================================
   MOBILE — app-like off-canvas drawer + responsive layout
   ============================================================ */
.mobilebar { display:none; }
.iconbtn { display:inline-grid; place-items:center; width:42px; height:42px; flex-shrink:0;
  border:none; background:transparent; color:#fff; border-radius:10px; cursor:pointer; padding:0; }
.iconbtn:active { background:rgba(255,255,255,.15); }
.iconbtn .ic { width:24px; height:24px; }
.nav-backdrop { display:none; }

@media (max-width:860px) {
  /* top app bar */
  .mobilebar { display:flex; align-items:center; gap:10px; position:sticky; top:0; z-index:80;
    background:var(--brand-900); color:#fff; padding:8px 10px;
    padding-top:calc(8px + env(safe-area-inset-top)); box-shadow:var(--sh-1); }
  .mobilebar-brand { display:flex; align-items:center; gap:9px; flex:1; min-width:0; font-family:Cardo,serif; font-weight:700; font-size:16px; }
  .mobilebar-brand svg { width:26px; height:26px; background:#fff; border-radius:8px; padding:3px; flex-shrink:0; }
  .mobilebar-brand span { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

  /* sidebar becomes a slide-in drawer */
  .shell { display:block; min-height:auto; }
  .sidebar { position:fixed; top:0; left:0; height:100dvh; width:84vw; max-width:320px; z-index:110;
    transform:translateX(-100%); transition:transform .25s ease; overflow-y:auto;
    padding-top:calc(18px + env(safe-area-inset-top)); box-shadow:6px 0 30px rgba(0,0,0,.35); }
  .sidebar.open { transform:none; }
  .nav-backdrop { display:block; position:fixed; inset:0; z-index:100; background:rgba(8,16,40,.5);
    opacity:0; pointer-events:none; transition:opacity .25s ease; }
  .nav-backdrop.show { opacity:1; pointer-events:auto; }
  .nav .tab { padding:12px 12px; font-size:15px; }          /* bigger touch targets */
  .nav-group { padding:14px 10px 6px; }

  /* main content full width, tighter padding */
  .main { width:100%; }
  .content { padding:16px 14px calc(28px + env(safe-area-inset-bottom)); max-width:100%; }
  .page-head { flex-direction:column; align-items:stretch; gap:10px; margin-bottom:16px; }
  .page-head h1 { font-size:22px; }
  .page-head .btn-row { flex-wrap:wrap; }

  /* toolbars + forms: comfortable, no zoom-on-focus */
  .toolbar { gap:8px; }
  .toolbar .input, .toolbar select, .toolbar input { flex:1 1 140px; }
  .input, select.input, input[type=text], input[type=password], input[type=number],
  input[type=month], input[type=search], input[type=email], .data-table select, .data-table input,
  .stmt input, .stmt select { font-size:16px; }            /* iOS won't zoom at >=16px */
  .input-sm { padding:9px 11px; }
  .btn { min-height:44px; }
  .btn-sm { min-height:40px; padding:9px 13px; font-size:13.5px; }
  button.ghost, button.small, .data-table button, .stmt button, td button { min-height:38px; }

  /* KPI + cards stack nicely */
  .kpi-row { grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:10px; margin-bottom:16px; }
  .kpi-row > div b { font-size:20px; }
  .charts { grid-template-columns:1fr; gap:14px; }
  .card-body { padding:14px; }
  .card-body canvas { max-height:260px; }

  /* period picker: 3 across on phones */
  .month-grid { grid-template-columns:repeat(3,1fr); max-width:100%; }

  /* dense tables scroll horizontally inside their card instead of breaking layout */
  .table-wrap { -webkit-overflow-scrolling:touch; }
  .data-table th, .data-table td, table.bk th, table.bk td { white-space:nowrap; }
  .data-table select { min-width:150px; }

  /* statement cards: 2-up numbers, wrapping action rows */
  .stmt .grid { grid-template-columns:repeat(2,1fr); gap:8px 16px; }
  .row-between { flex-wrap:wrap; }
  .run-actions, .exp-add { gap:8px; }
  .syncbox { gap:8px; }

  /* login fits small screens */
  .login-card { width:100%; max-width:360px; }
  .login-screen { padding:20px; }

  /* glossary: single column */
  .glossary-list { grid-template-columns:1fr; }
}

@media (max-width:380px) {
  .stmt .grid { grid-template-columns:1fr; }
  .month-grid { grid-template-columns:repeat(2,1fr); }
}
