/* =====================================================================
   BEL DMIT Portal - interface theme
   Change the brand colours here only. Everything else reads these tokens.
   (The printed report keeps its own styles in /core/report.css.)
   ===================================================================== */
:root{
  /* Brain Excellence Labs logo colours */
  --bel-ink:#383070;        /* BEL indigo (logo) - top bar, headings */
  --bel-ink-2:#2B2559;      /* darker indigo */
  --bel-accent:#E87828;     /* BEL orange (logo) - main buttons, highlights */
  --bel-accent-ink:#FFFFFF; /* text on orange buttons */
  --bel-teal:#4B4396;       /* lighter indigo - links, labels */
  --bel-teal-soft:#EEECF7;
  --bel-ok:#3D7068;  --bel-ok-bg:#EDF4F2;
  --bel-warn:#C07322; --bel-warn-bg:#FBF0E2;
  --bel-bad:#B3423A;  --bel-bad-bg:#FBECEA;
  --bel-text:#241F4D; --bel-muted:#5F5B7A; --bel-line:#E0DEEA;
  --bel-bg:#F6F5FA;   --bel-card:#FFFFFF;
  --radius:10px; --shadow:0 1px 2px rgba(56,48,112,.06),0 4px 16px rgba(56,48,112,.07);
  --font:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  --serif:Spectral,Georgia,serif;
}
*{box-sizing:border-box}
html,body{margin:0}
body.portal{font-family:var(--font);color:var(--bel-text);background:var(--bel-bg);font-size:14.5px;line-height:1.5;-webkit-font-smoothing:antialiased}
a{color:var(--bel-teal)}
:where(body.portal) :is(h1,h2,h3):not(.page *){font-family:var(--serif);font-weight:600;letter-spacing:-.01em;margin:0 0 .35em}
h1{font-size:26px} h2{font-size:20px} h3{font-size:16px}
.muted{color:var(--bel-muted)} .fs-s,.portal .small:not(.page .small){font-size:12.5px}
.hidden{display:none!important}

/* ---------- top bar ---------- */
.topbar{background:var(--bel-ink);color:#fff;position:sticky;top:0;z-index:40;border-bottom:3px solid var(--bel-accent)}
.topbar .in{max-width:1240px;margin:0 auto;padding:10px 20px;display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:#fff}
.brand .mark{width:40px;height:40px;border-radius:10px;background:#fff;display:grid;place-items:center;flex:none;padding:3px}
.brand .mark img{width:100%;height:100%;object-fit:contain}
.logo-full{display:block;width:170px;height:auto;margin:0 auto 6px}
.brand b{display:block;font-family:var(--serif);font-size:16px;line-height:1.1}
.brand span{font-size:11px;letter-spacing:.14em;color:#F3B07E;text-transform:uppercase}
.nav{display:flex;gap:4px;flex-wrap:wrap;margin-left:8px}
.nav button{background:none;border:0;color:#D6D3EC;font:inherit;padding:8px 12px;border-radius:8px;cursor:pointer}
.nav button:hover{background:rgba(255,255,255,.08);color:#fff}
.nav button.on{background:rgba(255,255,255,.12);color:#fff}
.topbar .right{margin-left:auto;display:flex;align-items:center;gap:12px;font-size:13px;color:#D6D3EC}
.pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:99px;font-size:12px;font-weight:500;background:rgba(255,255,255,.1);color:#fff}
.dot{width:8px;height:8px;border-radius:50%;background:#8A97A6;display:inline-block}
.dot.ok{background:#4CC38A}.dot.bad{background:#E5675C}.dot.warn{background:var(--bel-accent)}

/* ---------- layout ---------- */
.wrap{max-width:1240px;margin:0 auto;padding:24px 20px 60px}
.card{background:var(--bel-card);border:1px solid var(--bel-line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;margin-bottom:16px}
.card h2{margin-bottom:4px}
.card .hint{color:var(--bel-muted);font-size:13px;margin:0 0 14px}
.grid{display:grid;gap:14px}
.grid.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.grid.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:900px){.grid.g3,.grid.g4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.grid.g2,.grid.g3,.grid.g4{grid-template-columns:1fr}.wrap{padding:16px 16px 48px}}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.spacer{flex:1}

/* ---------- stats ---------- */
.stat{background:var(--bel-card);border:1px solid var(--bel-line);border-radius:var(--radius);padding:16px}
.stat .k{font-size:12px;color:var(--bel-muted);text-transform:uppercase;letter-spacing:.06em}
.stat .v{font-family:var(--serif);font-size:28px;font-weight:600;margin-top:2px}

/* ---------- forms ---------- */
label{display:block;font-size:12.5px;color:var(--bel-muted);font-weight:500;margin-bottom:4px}
input,select,textarea{width:100%;font:inherit;color:var(--bel-text);background:#fff;border:1px solid var(--bel-line);border-radius:8px;padding:9px 11px}
input:focus,select:focus,textarea:focus{outline:2px solid #B7B0E3;outline-offset:-1px;border-color:var(--bel-teal)}
input[type=checkbox]{width:auto}
.check{display:flex;gap:10px;align-items:flex-start;font-size:13.5px;color:var(--bel-text);font-weight:400}
.check input{margin-top:3px}

.btn{font:inherit;font-weight:500;border-radius:8px;padding:9px 16px;cursor:pointer;border:1px solid var(--bel-ink);background:var(--bel-ink);color:#fff;display:inline-flex;align-items:center;gap:8px;text-decoration:none;line-height:1.2}
.btn:hover{filter:brightness(1.12)}
.btn:disabled{opacity:.45;cursor:not-allowed;filter:none}
.btn.accent{background:var(--bel-accent);border-color:var(--bel-accent);color:var(--bel-accent-ink);font-weight:600}
.btn.accent:hover{background:#D4671B;filter:none}
.btn.ghost{background:#fff;color:var(--bel-ink);border-color:var(--bel-line)}
.btn.ghost:hover{background:var(--bel-teal-soft);filter:none}
.btn.danger{background:#fff;color:var(--bel-bad);border-color:#E9C3BF}
.btn.sm{padding:6px 11px;font-size:13px}
.btn.lg{padding:12px 22px;font-size:15.5px}

/* ---------- notices ---------- */
.note{border-radius:8px;padding:11px 14px;font-size:13.5px;border-left:3px solid var(--bel-teal);background:var(--bel-teal-soft);margin:10px 0}
.note.warn{border-color:var(--bel-warn);background:var(--bel-warn-bg)}
.note.bad{border-color:var(--bel-bad);background:var(--bel-bad-bg)}
.note.ok{border-color:var(--bel-ok);background:var(--bel-ok-bg)}

/* ---------- tables ---------- */
.tbl{width:100%;border-collapse:collapse;font-size:13.5px}
.tbl th{text-align:left;font-weight:500;color:var(--bel-muted);font-size:12px;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--bel-line);padding:8px 10px}
.tbl td{border-bottom:1px solid #EEF1F4;padding:10px;vertical-align:middle}
.tbl tr:hover td{background:#FAFBFC}
.tblwrap{overflow-x:auto}
.tag{display:inline-block;font-size:11.5px;font-weight:500;padding:2px 8px;border-radius:99px;background:var(--bel-teal-soft);color:var(--bel-teal)}
.tag.ok{background:var(--bel-ok-bg);color:var(--bel-ok)}
.tag.warn{background:var(--bel-warn-bg);color:var(--bel-warn)}
.tag.bad{background:var(--bel-bad-bg);color:var(--bel-bad)}
.mono{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.02em}

/* ---------- steps ---------- */
.steps{display:flex;gap:6px;margin:0 0 18px;flex-wrap:wrap}
.steps div{flex:1;min-width:120px;padding:10px 12px;border-radius:8px;background:#fff;border:1px solid var(--bel-line);font-size:13px;color:var(--bel-muted)}
.steps div b{display:block;font-size:11px;letter-spacing:.08em;text-transform:uppercase}
.steps div.on{border-color:var(--bel-ink);color:var(--bel-ink);box-shadow:inset 0 -3px 0 var(--bel-accent)}
.steps div.done{color:var(--bel-ok)}

/* ---------- modal ---------- */
.modal{position:fixed;inset:0;background:rgba(15,25,40,.55);display:grid;place-items:center;z-index:80;padding:16px}
.modal .box{background:#fff;border-radius:12px;max-width:560px;width:100%;padding:22px;max-height:90vh;overflow:auto}
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--bel-ink);color:#fff;padding:10px 18px;border-radius:8px;font-size:13.5px;z-index:90;box-shadow:var(--shadow)}

/* ---------- login ---------- */
.login{min-height:100vh;display:grid;place-items:center;padding:16px;background:linear-gradient(160deg,var(--bel-ink) 0%,var(--bel-ink-2) 100%)}
.login .box{background:#fff;border-radius:14px;max-width:420px;width:100%;padding:28px}
.login .brand{color:var(--bel-ink);margin-bottom:18px;flex-direction:column;text-align:center;gap:2px}
.login .brand span{color:var(--bel-muted)}
