/* ARIC Assessment Platform — mobile-first stylesheet.
   Base styles target small screens; @media (min-width:640px) and
   (min-width:960px) layer on tablet/desktop enhancements. */

:root{
  --navy:#0f2747; --navy2:#1b3a63; --accent:#2f6fed; --line:#e3e8f0;
  --bg:#f5f7fb; --ink:#1c2733; --muted:#6b7886; --ok:#1f9d55; --warn:#d97706; --bad:#dc2626;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font-family:-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--ink);font-size:15px;line-height:1.5}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
img,svg{max-width:100%;height:auto}

/* ---- top bar: wraps into brand/user row + scrollable nav row on phones,
       single 58px row on desktop ---- */
.topbar{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;background:var(--navy);color:#fff;padding:10px 14px}
.brand{flex:1;min-width:0}
.brand a{color:#fff;font-weight:700;letter-spacing:.5px;white-space:nowrap}
.brand span{font-weight:400;opacity:.65;font-size:12px;margin-left:8px;display:none}
.mainnav{display:flex;gap:4px;order:3;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;margin:2px -14px -10px;padding:0 14px;scrollbar-width:none}
.mainnav::-webkit-scrollbar{display:none}
.mainnav a{color:#cdd9ec;font-weight:600;font-size:14px;padding:10px 10px;white-space:nowrap;border-bottom:2px solid transparent}
.mainnav a:hover{color:#fff;text-decoration:none;border-bottom-color:rgba(255,255,255,.4)}
.userbox{display:flex;align-items:center;gap:10px;font-size:13px;min-height:38px}
.uname{opacity:.85;display:none}
.role-chip{background:var(--accent);color:#fff;border-radius:20px;padding:2px 10px;font-size:11px;font-weight:600;white-space:nowrap}
.btn-ghost{display:inline-flex;align-items:center;border:1px solid rgba(255,255,255,.35);color:#fff;padding:6px 12px;border-radius:6px;font-size:13px;min-height:34px;background:transparent;cursor:pointer;font-family:inherit}
.btn-ghost:hover{background:rgba(255,255,255,.12);text-decoration:none}
/* ghost buttons on light surfaces (tables, panels) need dark text */
.container .btn-ghost{color:var(--navy);border-color:#cfd6e0}
.container .btn-ghost:hover{background:#eef2f8}

.container{max-width:1120px;margin:16px auto;padding:0 14px}
.footer{max-width:1120px;margin:32px auto 20px;padding:14px;color:var(--muted);font-size:12px;border-top:1px solid var(--line)}

h1{font-size:21px;margin:0 0 4px}
h2{font-size:17px;margin:24px 0 10px;padding-bottom:6px;border-bottom:1px solid var(--line)}
h3{font-size:15px;margin:16px 0 8px}
.sub{color:var(--muted);margin:0 0 16px}

/* ---- cards & grids: single column first, fan out with available width ---- */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(240px,100%),1fr));gap:12px}
.card{background:#fff;border:1px solid var(--line);border-radius:10px;padding:14px}
.card h3{margin-top:0}
.card .big{font-size:28px;font-weight:700;color:var(--navy)}
.tile{display:block;background:#fff;border:1px solid var(--line);border-radius:10px;padding:16px}
.tile:hover{border-color:var(--accent);text-decoration:none;box-shadow:0 2px 10px rgba(15,39,71,.06)}
.tile .k{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}
.tile .v{font-size:17px;font-weight:700;color:var(--ink);margin-top:4px}

/* ---- tables: horizontal scroll on phones, classic table on wide screens ---- */
table{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--line);border-radius:10px;overflow:hidden}
th,td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--line);font-size:14px;vertical-align:top}
th{background:#eef2f8;color:var(--navy);font-size:12px;text-transform:uppercase;letter-spacing:.4px;white-space:nowrap}
tr:last-child td{border-bottom:none}
tr:hover td{background:#fafbfe}
@media (max-width:759px){
  table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}
}

/* badges */
.badge{display:inline-block;padding:2px 9px;border-radius:20px;font-size:11px;font-weight:600;border:1px solid var(--line);background:#f3f5f9;color:var(--muted)}
.badge.green{background:#e7f6ee;color:var(--ok);border-color:#bce6cf}
.badge.amber{background:#fdf2e2;color:var(--warn);border-color:#f6d9a8}
.badge.red{background:#fdeaea;color:var(--bad);border-color:#f4c2c2}
.badge.blue{background:#e8f0ff;color:var(--accent);border-color:#c2d6ff}
.badge.gray{background:#eef1f5;color:#55606c}
.crit{color:var(--bad);font-weight:700}

/* ---- forms: 16px inputs (no iOS zoom), 44px touch targets ---- */
form .row{margin-bottom:14px}
label{display:block;font-weight:600;font-size:13px;margin-bottom:5px}
label .hint{font-weight:400;color:var(--muted);font-size:12px}
input:not([type]),input[type=text],input[type=number],input[type=date],input[type=email],input[type=password],select,textarea{
  width:100%;padding:10px 12px;border:1px solid #cfd6e0;border-radius:7px;font-size:16px;font-family:inherit;background:#fff;min-height:44px}
textarea{min-height:88px}
input[type=checkbox]{width:auto;min-height:0;transform:scale(1.2);margin-right:8px}
.req{color:var(--bad)}
.btn{display:inline-flex;align-items:center;justify-content:center;background:var(--accent);color:#fff;border:none;padding:10px 18px;border-radius:7px;font-size:15px;font-weight:600;cursor:pointer;min-height:44px}
.btn:hover{background:#2257c9;text-decoration:none}
.btn.secondary{background:#fff;color:var(--navy);border:1px solid #cfd6e0}
.btn.small{padding:6px 12px;font-size:13px;min-height:36px}
.btn.danger{background:var(--bad)}
.actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:8px}

/* layout utilities (replace one-off inline styles) */
.stack{display:flex;flex-direction:column;gap:12px}
.form-row{display:flex;flex-direction:column;gap:10px;margin-bottom:12px}
.form-row label{margin-bottom:0;flex:1;min-width:0}
.form-row .btn{align-self:stretch}
.row-wrap{display:flex;gap:12px;flex-wrap:wrap}
.narrow{max-width:560px}
.inline{display:inline-block}

.panel{background:#fff;border:1px solid var(--line);border-radius:10px;padding:16px;margin-bottom:16px}
.panel.tight{padding:12px 14px}
.kv{display:grid;grid-template-columns:1fr;gap:2px 16px;font-size:14px}
.kv .k{color:var(--muted)}
.kv .k:not(:first-child){margin-top:8px}
.grid2{display:grid;grid-template-columns:1fr;gap:12px;margin-bottom:14px}
.flash{background:#e8f0ff;border:1px solid #c2d6ff;color:#1b3a63;padding:12px 16px;border-radius:8px;margin-bottom:16px;overflow-wrap:anywhere}
.flash.error{background:#fdeaea;border-color:#f4c2c2;color:#a11}
.muted{color:var(--muted)}
.pill-row{display:flex;flex-wrap:wrap;gap:6px}
.toolbar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;margin-bottom:14px;gap:10px}
.score-bar{height:8px;border-radius:6px;background:#eef1f5;overflow:hidden;width:160px;max-width:100%}
.score-bar > i{display:block;height:100%}

/* login picker */
.login-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(260px,100%),1fr));gap:12px;margin-top:16px}
.login-card{border:1px solid var(--line);border-radius:10px;padding:16px;background:#fff;display:flex;flex-direction:column;gap:8px}
.login-card .who{font-weight:700}
.login-card .role{font-size:12px;color:var(--muted)}
.login-card form{margin-top:auto}
.login-card .btn{width:100%}
.breadcrumb{font-size:13px;color:var(--muted);margin-bottom:10px}
.breadcrumb a{color:var(--muted)}

/* heat map (spec §7.6) — deep green → green → yellow → orange → red */
table.heat td, table.heat th{text-align:center}
table.heat th{white-space:normal}  /* 8 columns must fit — headers wrap */
table.heat th.rowhead, table.heat td.rowhead{text-align:left;font-weight:600;background:#f7f9fc}
.heatcell{display:block;border-radius:6px;padding:10px 6px;color:#11321f;font-weight:700;font-size:15px;line-height:1.2;min-width:74px}
.heatcell small{display:block;font-weight:400;font-size:11px;opacity:.8}
.heat-0{background:#1f9d55;color:#fff}
.heat-1{background:#9ed99a}
.heat-2{background:#f4d35e}
.heat-3{background:#f3a64a;color:#3a2400}
.heat-4{background:#dc2626;color:#fff}
.heat-na{background:#eef1f5;color:#97a0ab;font-weight:400}
/* on phones the department × domain matrix becomes stacked department cards,
   each with a 2-up grid of labeled domain chips (desktop matrix unchanged) */
@media (max-width:759px){
  table.heat{display:block;overflow:visible;border:none;background:none;border-radius:0}
  table.heat thead{display:none}
  table.heat tbody{display:block}
  table.heat tr{display:flex;flex-wrap:wrap;gap:10px 8px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px;margin-bottom:10px}
  table.heat tr:hover td{background:none}
  table.heat td{display:block;border:none;padding:0}
  table.heat td.rowhead{flex:1 1 100%;background:none;font-size:15px;font-weight:700;padding:0}
  table.heat td[data-mod]{flex:0 0 calc(50% - 4px);min-width:0;text-align:left}
  table.heat td[data-mod]::before{content:attr(data-mod);display:block;font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.3px;margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  table.heat .heatcell{min-width:0;text-align:center}
}

.legend{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:center;font-size:12px;color:var(--muted);margin:10px 0}
.legend i{display:inline-block;width:16px;height:16px;border-radius:4px;margin-right:5px;vertical-align:-3px}
.grade-big{font-size:36px;font-weight:800;line-height:1}
.score-row{display:flex;gap:10px;flex-wrap:wrap}
.scorepill{border:1px solid var(--line);border-radius:8px;padding:8px 12px;background:#fff;min-width:120px;flex:1 1 120px}
.scorepill .g{font-weight:700;font-size:18px}

/* =========================== ≥640px (tablet) =========================== */
@media (min-width:640px){
  .container{margin:20px auto;padding:0 24px}
  .footer{padding:16px 24px}
  h1{font-size:24px}
  h2{font-size:18px;margin:28px 0 12px}
  .brand span{display:inline}
  .uname{display:inline}
  th,td{padding:10px 14px}
  input:not([type]),input[type=text],input[type=number],input[type=date],input[type=email],input[type=password],select,textarea{
    font-size:14px;min-height:0;padding:8px 10px}
  .btn{font-size:14px;min-height:0;padding:9px 18px}
  .btn.small{padding:5px 12px;min-height:0}
  .form-row{flex-direction:row;flex-wrap:wrap;align-items:flex-end}
  .form-row .btn{align-self:auto}
  .form-row label{flex:1 1 160px}
  .kv{grid-template-columns:220px 1fr;gap:6px 16px}
  .kv .k:not(:first-child){margin-top:0}
  .grid2{grid-template-columns:1fr 1fr}
  .panel{padding:20px}
  .panel.tight{padding:14px 18px}
  .card{padding:16px}
  .card .big{font-size:30px}
  .tile{padding:18px}
  .tile .v{font-size:18px}
  .login-card .btn{width:auto}
  .grade-big{font-size:40px}
  .scorepill{flex:0 1 auto}
}

/* =========================== ≥960px (desktop) ========================== */
@media (min-width:960px){
  .topbar{flex-wrap:nowrap;gap:24px;padding:0 24px;height:58px}
  .mainnav{order:0;width:auto;flex:1;overflow:visible;margin:0;padding:0;gap:18px}
  .mainnav a{padding:0;border-bottom:none}
  .container{margin:24px auto}
}
