/* ============================================================
   Area! Elections - App CSS
   Navy #13265D / Amber #F5C04A, Plus Jakarta Sans.
   ============================================================ */
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
:root{
  --bg:#F5F7FC;
  --white:#FFFFFF;
  --blue:#13265D;
  --blue-d:#0C1A42;
  --blue-l:#EEF2FF;
  --blue-ml:#C7D2FE;
  --amber:#F5C04A;--amber-l:#FFF8E7;
  --green:#16A34A;--green-l:#F0FDF4;
  --red:#DC2626;--red-l:#FEF2F2;
  --orange:#D97706;--orange-l:#FFF7ED;
  --purple:#7C3AED;
  --text:#0F172A;--text2:#475569;--text3:#94A3B8;--border:#E2E8F0;
  --shadow:0 2px 16px rgba(19,38,93,.08);--r:16px;--rs:10px;
}
html,body{min-height:100%;font-family:'Plus Jakarta Sans',sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.55;}
a{color:inherit;text-decoration:none;}
input,select,textarea,button{font-family:inherit;font-size:14px;}

/* ── Shell ─────────────────────────────────────────────────── */
.topnav{background:var(--blue);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 26px;height:56px;position:sticky;top:0;z-index:90;}
.topnav .brand{font-weight:800;font-size:17px;letter-spacing:-.4px;}
.topnav .brand span{color:var(--amber);}
.topnav .brand small{font-weight:600;font-size:10px;opacity:.45;letter-spacing:1px;text-transform:uppercase;margin-left:8px;}
.topnav nav{display:flex;gap:4px;align-items:center;}
.topnav nav a{color:rgba(255,255,255,.6);font-weight:600;font-size:13px;padding:7px 13px;border-radius:99px;transition:.15s;}
.topnav nav a:hover{color:#fff;background:rgba(255,255,255,.08);}
.topnav nav a.active{color:var(--amber);background:rgba(245,192,74,.14);}
.container{max-width:1180px;margin:0 auto;padding:28px 24px 60px;}
.container.narrow{max-width:760px;}

/* ── Auth pages ────────────────────────────────────────────── */
.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:linear-gradient(160deg,#13265D 0%,#0C1A42 100%);}
.auth-card{background:#fff;border-radius:20px;padding:40px 42px;width:100%;max-width:420px;box-shadow:0 24px 60px rgba(0,0,0,.3);}
.auth-logo{font-size:26px;font-weight:900;color:var(--blue);letter-spacing:-.6px;margin-bottom:4px;}
.auth-logo span{color:var(--amber);}
.auth-sub{font-size:13px;color:var(--text2);margin-bottom:26px;}
.field{margin-bottom:16px;}
.field label{display:block;font-size:12px;font-weight:700;margin-bottom:6px;color:var(--text);}
.field input,.field select,.field textarea{width:100%;padding:11px 13px;border:1.5px solid var(--border);border-radius:var(--rs);background:#fff;color:var(--text);}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(19,38,93,.08);}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 22px;border:none;border-radius:99px;font-size:14px;font-weight:700;cursor:pointer;transition:transform .15s,opacity .15s;}
.btn:hover{transform:translateY(-1px);opacity:.93;}
.btn:disabled{opacity:.4;cursor:not-allowed;transform:none;}
.btn-blue{background:var(--blue);color:#fff;}
.btn-amber{background:var(--amber);color:var(--blue-d);}
.btn-outline{background:#fff;color:var(--blue);border:2px solid var(--blue);}
.btn-danger{background:var(--red);color:#fff;}
.btn-block{width:100%;}
.btn-sm{padding:8px 16px;font-size:13px;}
.auth-links{margin-top:16px;font-size:12px;color:var(--text2);text-align:center;}
.auth-links a{color:var(--blue);font-weight:700;}
.flash{border-radius:var(--rs);padding:11px 14px;font-size:13px;font-weight:600;margin-bottom:18px;}
.flash.success{background:var(--green-l);color:#166534;border:1px solid #BBF7D0;}
.flash.error{background:var(--red-l);color:#991B1B;border:1px solid #FECACA;}

/* ── Dashboard ─────────────────────────────────────────────── */
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:22px;flex-wrap:wrap;}
.page-head h1{font-size:22px;font-weight:800;letter-spacing:-.4px;}
.page-head p{font-size:13px;color:var(--text2);margin-top:3px;}
.grid{display:grid;gap:16px;}
.grid-3{grid-template-columns:repeat(3,1fr);}
.grid-2{grid-template-columns:repeat(2,1fr);}
@media(max-width:900px){.grid-3,.grid-2{grid-template-columns:1fr;}}
.card{background:var(--white);border:1px solid var(--border);border-radius:var(--r);padding:20px 22px;box-shadow:var(--shadow);}
.card h3{font-size:11px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:1.2px;margin-bottom:12px;}
.big-num{font-size:44px;font-weight:800;letter-spacing:-2px;line-height:1;}
.big-num small{font-size:15px;color:var(--text3);font-weight:700;letter-spacing:0;}
.sub-note{font-size:12px;color:var(--text2);margin-top:8px;}

/* Readiness ring */
.ready-ring{display:flex;align-items:center;gap:18px;}
.ring-svg{flex-shrink:0;}
.ring-label{font-size:13px;color:var(--text2);line-height:1.6;}
.ring-label b{display:block;font-size:16px;color:var(--text);}
.band-pill{display:inline-block;font-size:10px;font-weight:800;letter-spacing:1px;text-transform:uppercase;padding:4px 10px;border-radius:99px;margin-top:5px;}

/* Component bars */
.comp-row{display:flex;align-items:center;gap:10px;margin-bottom:9px;}
.comp-row:last-child{margin-bottom:0;}
.comp-lbl{font-size:12px;font-weight:600;width:118px;flex-shrink:0;color:var(--text2);}
.comp-track{flex:1;height:6px;background:var(--blue-l);border-radius:99px;overflow:hidden;}
.comp-bar{height:6px;border-radius:99px;background:var(--blue);}
.comp-val{font-size:12px;font-weight:700;width:32px;text-align:right;}

/* Next case hero */
.next-case{background:linear-gradient(140deg,#13265D 0%,#1E3A8A 70%,#312E81 100%);color:#fff;border-radius:var(--r);padding:26px 28px;display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-bottom:22px;}
.next-case .nc-eyebrow{font-size:10px;font-weight:800;letter-spacing:2px;text-transform:uppercase;color:var(--amber);margin-bottom:8px;}
.next-case h2{font-size:20px;font-weight:800;letter-spacing:-.4px;margin-bottom:6px;}
.next-case p{font-size:13px;opacity:.75;max-width:560px;}
.nc-meta{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap;}
.nc-chip{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.18);border-radius:99px;font-size:11px;font-weight:700;padding:4px 12px;}
.nc-chip.amber{background:rgba(245,192,74,.18);border-color:rgba(245,192,74,.4);color:var(--amber);}

.list-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 0;border-bottom:1px solid var(--border);}
.list-row:last-child{border-bottom:none;}
.list-row .lr-title{font-weight:700;font-size:13px;}
.list-row .lr-sub{font-size:12px;color:var(--text3);margin-top:2px;}
.score-chip{font-size:12px;font-weight:800;border-radius:99px;padding:4px 12px;}
.score-hi{background:var(--green-l);color:#166534;}
.score-mid{background:var(--orange-l);color:#9A3412;}
.score-lo{background:var(--red-l);color:#991B1B;}
.tag{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;padding:3px 9px;border-radius:99px;background:var(--blue-l);color:var(--blue);}

/* ── Investigation workspace ───────────────────────────────── */
/* The rail carries five tabs (Companion, RFI, Requests, Notes, Decide).
   At the old clamp(420px,30vw,480px) the fifth tab squeezed the labels
   until they were ellipsis-clipped inside the pill. Scale with the
   viewport rather than picking a number that breaks the next time a tab
   is added: never below 480px, never so wide it starves the evidence
   panels. The tab strip below is also allowed to wrap, so this degrades
   into two rows instead of shredding the labels if a sixth ever lands. */
.ws{display:grid;grid-template-columns:minmax(0,1fr) clamp(480px, 34vw, 560px);gap:18px;align-items:start;}
@media(max-width:1020px){.ws{grid-template-columns:1fr;}}
.ws-head{background:var(--white);border:1px solid var(--border);border-radius:var(--r);padding:16px 20px;margin-bottom:16px;display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;box-shadow:var(--shadow);}
.ws-head .wh-title{font-size:16px;font-weight:800;letter-spacing:-.3px;}
.ws-head .wh-sub{font-size:12px;color:var(--text2);margin-top:2px;}
.wh-badges{display:flex;gap:6px;align-items:center;flex-wrap:wrap;}
.risk-pill{font-size:11px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;padding:5px 12px;border-radius:99px;}
.risk-low{background:var(--green-l);color:#166534;}
.risk-medium{background:var(--orange-l);color:#9A3412;}
.risk-high{background:var(--red-l);color:#991B1B;}

/* SLA countdown */
.sla{display:flex;align-items:center;gap:10px;background:var(--blue-l);border:1.5px solid var(--blue-ml);border-radius:99px;padding:7px 16px;}
.sla .sla-time{font-size:17px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--blue);letter-spacing:.5px;}
.sla .sla-lbl{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--text3);}
.sla.warn{background:var(--orange-l);border-color:#FDBA74;}
.sla.warn .sla-time{color:#C2410C;}
.sla.over{background:var(--red-l);border-color:#FCA5A5;animation:slaPulse 1.2s infinite;}
.sla.over .sla-time{color:var(--red);}
@keyframes slaPulse{0%,100%{box-shadow:0 0 0 0 rgba(220,38,38,.25);}50%{box-shadow:0 0 0 6px rgba(220,38,38,0);}}

/* Evidence tabs */
.ev-tabs{display:flex;gap:4px;flex-wrap:wrap;background:var(--white);border:1px solid var(--border);border-radius:var(--r) var(--r) 0 0;padding:10px 12px 0;border-bottom:none;}
.ev-tab{font-size:12px;font-weight:700;padding:9px 14px;border-radius:9px 9px 0 0;color:var(--text2);cursor:pointer;border:1px solid transparent;border-bottom:none;position:relative;user-select:none;}
.ev-tab:hover{color:var(--blue);background:var(--blue-l);}
.ev-tab.active{color:var(--blue);background:var(--bg);border-color:var(--border);}
.ev-tab .dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--amber);margin-left:6px;vertical-align:middle;}
.ev-tab.seen .dot{display:none;}
.ev-body{background:var(--white);border:1px solid var(--border);border-radius:0 0 var(--r) var(--r);padding:20px 22px;min-height:420px;box-shadow:var(--shadow);}
.ev-panel{display:none;}
.ev-panel.active{display:block;animation:fadeIn .2s;}
@keyframes fadeIn{from{opacity:0;transform:translateY(4px);}to{opacity:1;transform:none;}}

.kv{display:grid;grid-template-columns:190px 1fr;gap:7px 16px;font-size:13px;}
.kv dt{color:var(--text3);font-weight:600;}
.kv dd{font-weight:600;color:var(--text);}
.section-lbl{font-size:11px;font-weight:800;letter-spacing:1.2px;text-transform:uppercase;color:var(--text3);margin:20px 0 10px;}
.section-lbl:first-child{margin-top:0;}

table.tx{width:100%;border-collapse:collapse;font-size:12.5px;}
table.tx th{text-align:left;font-size:10px;font-weight:800;letter-spacing:.8px;text-transform:uppercase;color:var(--text3);padding:8px 10px;border-bottom:1.5px solid var(--border);}
table.tx td{padding:9px 10px;border-bottom:1px solid var(--border);vertical-align:top;}
table.tx tr.flagged{background:var(--amber-l);}
table.tx tr.flagged td:first-child{border-left:3px solid var(--amber);}
.tx-in{color:var(--green);font-weight:800;}
.tx-out{color:var(--red);font-weight:800;}
.mono{font-variant-numeric:tabular-nums;}

.doc-card{border:1px solid var(--border);border-radius:var(--rs);padding:14px 16px;margin-bottom:12px;background:#FDFDFF;}
.doc-card h4{font-size:13px;font-weight:800;margin-bottom:6px;}
.doc-card p{font-size:12.5px;color:var(--text2);white-space:pre-wrap;}
.media-rel{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.6px;padding:2px 8px;border-radius:99px;}
.rel-none{background:var(--blue-l);color:var(--text2);}
.rel-possible{background:var(--orange-l);color:#9A3412;}
.rel-relevant{background:var(--red-l);color:#991B1B;}
.empty-note{color:var(--text3);font-size:13px;padding:24px 0;text-align:center;}

/* Relationship graph */
.graph-box{border:1px solid var(--border);border-radius:var(--rs);background:#FBFCFF;overflow:auto;}
.graph-legend{display:flex;gap:14px;font-size:11px;color:var(--text2);margin-top:10px;flex-wrap:wrap;}
.graph-legend span::before{content:'';display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px;vertical-align:-1px;}
.lg-customer::before{background:#13265D;}
.lg-third::before{background:#D97706;}
.lg-beneficiary::before{background:#DC2626;}
.lg-company::before{background:#7C3AED;}
.lg-ubo::before{background:#0891B2;}

/* Right rail: notes / RFI / decision */
.rail{display:flex;flex-direction:column;gap:16px;position:sticky;top:74px;}
.rail .card{padding:18px 20px;}
.rfi-log{max-height:260px;overflow-y:auto;display:flex;flex-direction:column;gap:8px;margin-bottom:12px;}
.rfi-msg{border-radius:12px;padding:9px 12px;font-size:12.5px;max-width:92%;}
.rfi-msg.analyst{background:var(--blue);color:#fff;align-self:flex-end;border-bottom-right-radius:4px;}
.rfi-msg.persona{background:var(--blue-l);color:var(--text);align-self:flex-start;border-bottom-left-radius:4px;}
.rfi-msg .who{display:block;font-size:9.5px;font-weight:800;letter-spacing:.8px;text-transform:uppercase;opacity:.6;margin-bottom:3px;}
.rfi-row{display:flex;gap:8px;}
/* The persona names are institution-generated ("Relationship Manager",
   "Correspondent Bank Contact"), so a fixed width clipped them. Cap it
   instead and let the input take whatever is left. */
.rfi-row select{flex:0 1 auto;min-width:130px;max-width:190px;padding:9px 8px;border:1.5px solid var(--border);border-radius:var(--rs);font-size:12px;font-weight:600;}
.rfi-row input{flex:1 1 0;min-width:0;padding:9px 12px;border:1.5px solid var(--border);border-radius:var(--rs);font-size:13px;}
.rfi-hint{font-size:11px;color:var(--text3);margin-top:8px;line-height:1.5;}
.typing{font-size:11px;color:var(--text3);font-style:italic;padding:4px 2px;}

#case-notes{width:100%;min-height:150px;padding:12px 13px;border:1.5px solid var(--border);border-radius:var(--rs);font-size:13px;line-height:1.6;resize:vertical;}
#case-notes:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(19,38,93,.08);}
.notes-count{font-size:11px;color:var(--text3);text-align:right;margin-top:5px;}

.decision-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px;}
.dec-btn{border:1.5px solid var(--border);background:#fff;border-radius:var(--rs);padding:12px 8px;font-size:12px;font-weight:700;cursor:pointer;text-align:center;transition:.15s;color:var(--text2);}
.dec-btn small{display:block;font-weight:500;font-size:10.5px;color:var(--text3);margin-top:3px;}
.dec-btn:hover{border-color:var(--blue-ml);}
.dec-btn.sel-close{border-color:var(--green);background:var(--green-l);color:#166534;}
.dec-btn.sel-escalate{border-color:var(--orange);background:var(--orange-l);color:#9A3412;}
.dec-btn.sel-str{border-color:var(--red);background:var(--red-l);color:#991B1B;}

/* ── Evaluation review ─────────────────────────────────────── */
/* ── Feedback page: verdict ────────────────────────────────────
   The old page presented "you were correct" and "your score is capped"
   as two separate, equally loud boxes, so it read as though it were
   arguing with itself. The verdict is really ONE statement with two
   halves: was the call right, and did you have grounds for it. */
.verdict-v2{
  display:flex;gap:24px;align-items:stretch;
  background:var(--white);border:1px solid var(--border);
  border-left:5px solid var(--vt,#94A3B8);
  border-radius:var(--r);padding:20px 24px;margin-bottom:16px;
  box-shadow:var(--shadow);
}
.verdict-v2.v-ok  {--vt:#16A34A;}
.verdict-v2.v-warn{--vt:#D97706;}
.verdict-v2.v-no  {--vt:#DC2626;}
.v-main{flex:1;min-width:0;}
.v-title{
  font-size:19px;font-weight:800;letter-spacing:-.4px;
  color:var(--vt);margin-bottom:3px;
}
.v-decision{font-size:14px;color:var(--text2);line-height:1.6;}
.v-decision b{color:var(--text);}

/* Evidence pips: the single most important fact on the page, made
   glanceable. Filled = a decisive finding they actually held when they
   committed. Empty = one they did not. */
.v-evidence{display:flex;align-items:center;gap:10px;margin-top:12px;flex-wrap:wrap;}
.v-ev-bar{display:flex;gap:4px;}
.v-pip{
  width:22px;height:6px;border-radius:3px;background:#E5E7EB;
  transition:background .2s;
}
.v-pip.on{background:var(--vt);}
.v-ev-txt{font-size:12px;color:var(--text3);}
.v-ev-txt b{color:var(--text2);}
.v-note{
  font-size:12.5px;color:var(--text2);line-height:1.65;
  margin:10px 0 0;padding-top:10px;border-top:1px dashed var(--border);
}
.v-score{
  flex:0 0 auto;display:flex;flex-direction:column;
  align-items:center;justify-content:center;
  padding-left:22px;border-left:1px solid var(--border);min-width:92px;
}
.v-score-num{font-size:38px;font-weight:900;letter-spacing:-2px;color:var(--vc);line-height:1;}
.v-score-lbl{font-size:10px;font-weight:700;letter-spacing:.9px;text-transform:uppercase;color:var(--text3);margin-top:4px;}
@media(max-width:640px){
  .verdict-v2{flex-direction:column;gap:16px;}
  .v-score{padding-left:0;border-left:none;border-top:1px solid var(--border);padding-top:14px;flex-direction:row;gap:10px;}
}

/* ── Feedback page: scores ─────────────────────────────────────
   Seven identical boxes told the analyst every dimension mattered
   equally, which is the one thing we know is false. Decision carries
   0.25 of the weight; efficiency carries 0.10. Show that. */
.sc-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:12px;}
.sc-grid-sm{grid-template-columns:repeat(5,1fr);margin-bottom:22px;}
@media(max-width:880px){.sc-grid-sm{grid-template-columns:repeat(3,1fr);}}
@media(max-width:560px){
  .sc-grid{grid-template-columns:1fr;}
  .sc-grid-sm{grid-template-columns:repeat(2,1fr);}
}
.sc-card{
  background:var(--white);border:1px solid var(--border);
  border-radius:var(--rs);padding:12px 14px;position:relative;
}
.sc-lead{padding:16px 18px;}
.sc-card .sc-v{font-size:22px;font-weight:800;letter-spacing:-.8px;line-height:1;}
.sc-lead .sc-v{font-size:30px;letter-spacing:-1.4px;}
.sc-card .sc-l{
  font-size:10px;font-weight:700;letter-spacing:.7px;text-transform:uppercase;
  color:var(--text3);margin-top:4px;
}
.sc-track{height:4px;background:#EEF1F5;border-radius:2px;overflow:hidden;margin-top:9px;}
.sc-track i{display:block;height:100%;border-radius:2px;}
.sc-na{background:#FAFBFC;}
.sc-flag{
  display:inline-block;margin-top:8px;font-size:10px;font-weight:700;
  letter-spacing:.3px;padding:2px 7px;border-radius:9px;
  background:#FEF3C7;color:#92400E;cursor:help;
}

/* ── Feedback: one consolidated narrative ─────────────────────
   Was three separate cards (reviewer prose / information strategy /
   process notes), which made the analyst read one story three times
   from three angles and assemble it themselves. */
.fb{padding:22px 24px;}
.fb-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:4px;}
.fb-head h3{margin:0;}
.fb-chip{
  font-size:11px;font-weight:700;letter-spacing:.3px;color:var(--text3);
  background:var(--bg);border:1px solid var(--border);
  padding:4px 10px;border-radius:20px;white-space:nowrap;cursor:help;
}
.fb-chip b{font-size:13px;font-weight:800;margin-left:3px;}
.fb-summary{
  font-size:14px;line-height:1.75;color:var(--text);
  margin:10px 0 0;
}

/* The measured spine: the request log and the clock, not opinions.
   A strip rather than a grid, because it reads as one sentence about
   how the case actually unfolded. */
.fb-strip{
  display:flex;flex-wrap:wrap;gap:0;
  border:1px solid var(--border);border-radius:var(--rs);
  margin:18px 0 4px;overflow:hidden;
}
.fb-stat{
  flex:1 1 auto;min-width:110px;padding:11px 14px;
  border-right:1px solid var(--border);
}
.fb-stat:last-child{border-right:none;}
.fb-stat b{display:block;font-size:17px;font-weight:800;letter-spacing:-.5px;color:var(--text);}
.fb-stat span{
  display:block;font-size:9.5px;font-weight:700;letter-spacing:.5px;
  text-transform:uppercase;color:var(--text3);margin-top:2px;line-height:1.35;
}
@media(max-width:600px){
  .fb-stat{flex:1 1 45%;border-bottom:1px solid var(--border);}
}

.fb-process{margin-top:20px;padding-top:18px;border-top:1px solid var(--border);}
.fb-process h4{margin:0 0 2px;font-size:13px;font-weight:800;}
.fb-sub{font-size:12px;color:var(--text3);margin:0 0 12px;line-height:1.55;}
.fb-next{
  margin-top:20px;padding:14px 16px;
  background:var(--bg);border-radius:var(--rs);
}
.fb-next h4{margin:0 0 8px;font-size:12.5px;font-weight:800;color:var(--text2);}
.fb-next ul{margin:0;padding-left:18px;}
.fb-next li{font-size:13px;line-height:1.7;color:var(--text2);margin-bottom:5px;}
.fb-next li:last-child{margin-bottom:0;}

.score-strip{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:20px;}
@media(max-width:800px){.score-strip{grid-template-columns:repeat(2,1fr);}}
.score-cell{background:var(--white);border:1px solid var(--border);border-radius:var(--rs);padding:14px;text-align:center;}
.score-cell .sc-num{font-size:26px;font-weight:800;letter-spacing:-1px;}
.score-cell .sc-lbl{font-size:10px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;color:var(--text3);margin-top:3px;}
.review-sec{margin-bottom:18px;}
.review-sec h4{font-size:12px;font-weight:800;letter-spacing:1px;text-transform:uppercase;margin-bottom:9px;display:flex;align-items:center;gap:7px;}
.review-sec ul{list-style:none;}
.review-sec li{font-size:13px;color:var(--text2);padding:7px 0 7px 20px;position:relative;border-bottom:1px dashed var(--border);line-height:1.55;}
.review-sec li:last-child{border-bottom:none;}
.review-sec li::before{content:'-';position:absolute;left:0;color:var(--text3);}
.review-sec.good h4{color:var(--green);}
.review-sec.bad h4{color:var(--red);}
.review-sec.warn h4{color:var(--orange);}
.review-sec.info h4{color:var(--blue);}
.verdict-banner{border-radius:var(--r);padding:18px 22px;margin-bottom:20px;font-weight:700;font-size:14px;display:flex;gap:12px;align-items:center;}
.verdict-banner.ok{background:var(--green-l);border:1.5px solid #BBF7D0;color:#166534;}
.verdict-banner.no{background:var(--red-l);border:1.5px solid #FECACA;color:#991B1B;}
.verdict-banner .vb-icon{font-size:22px;}

/* Loading overlay */
.overlay{position:fixed;inset:0;background:rgba(12,26,66,.72);display:none;align-items:center;justify-content:center;z-index:200;backdrop-filter:blur(3px);}
.overlay.show{display:flex;}
.overlay .ov-card{background:#fff;border-radius:18px;padding:34px 40px;text-align:center;max-width:340px;}
.overlay .ov-card h3{font-size:16px;font-weight:800;margin:14px 0 6px;color:var(--text);letter-spacing:0;text-transform:none;}
.overlay .ov-card p{font-size:13px;color:var(--text2);}
.spinner{width:34px;height:34px;border:4px solid var(--blue-l);border-top-color:var(--blue);border-radius:50%;margin:0 auto;animation:spin .8s linear infinite;}
@keyframes spin{to{transform:rotate(360deg);}}

/* ── Rail tabs (Companion / RFI / Requests / Notes / Decide) ── */
.rail-tabs{display:flex;flex-wrap:wrap;gap:3px;background:var(--white);border:1.5px solid var(--border);border-radius:22px;padding:4px;box-shadow:var(--shadow);}
/* Two things keep the labels intact.
   1. flex:1 1 auto (not 1 1 0). With a 0 basis every tab is forced to an
      identical width, so the longest label ("Companion") spills while "RFI"
      sits in dead space. Sizing from content lets the short tabs hand their
      surplus to the long ones, and the row still fills the pill.
   2. min-width:max-content. This is the part that actually stops the
      clipping: it forbids a tab shrinking below its own text, so the strip
      wraps to a second row rather than ellipsising every label into
      uselessness. A truncated nav is worse than a two-line one. */
.rail-tabs .rt-btn{-webkit-appearance:none;appearance:none;flex:1 1 auto;min-width:max-content;margin:0;border:none;outline:none;background:transparent;font-family:inherit;font-weight:800;font-size:11px;line-height:1;padding:11px 10px;border-radius:99px;cursor:pointer;color:var(--text2);position:relative;transition:background .15s,color .15s;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;gap:4px;}
.rail-tabs .rt-btn:hover{color:var(--blue);background:var(--blue-l);}
.rail-tabs .rt-btn.active{background:var(--blue);color:#fff;}
.rail-tabs .rt-btn:focus-visible{box-shadow:0 0 0 3px rgba(19,38,93,.18);}
/* The dot is decoration. It must never win space from the label, and its
   pulse must not reflow the row. */
.rt-dot{flex:0 0 auto;display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--amber);margin-left:3px;vertical-align:1px;box-shadow:0 0 0 2px rgba(245,192,74,.3);animation:dotPulse 1.4s infinite;will-change:transform;}
@keyframes dotPulse{0%,100%{transform:scale(1);}50%{transform:scale(1.35);}}
.rail-pane{display:none;}
.rail-pane.active{display:block;}

/* ── Case companion ─────────────────────────────────────────── */
.comp-log{max-height:340px;overflow-y:auto;display:flex;flex-direction:column;gap:11px;margin-bottom:12px;padding-right:2px;}
.comp-msg{border-radius:14px;padding:12px 14px;font-size:12.5px;line-height:1.7;max-width:94%;white-space:pre-wrap;}
.comp-msg.bot{background:linear-gradient(135deg,var(--blue-l),#F2F0FF);border:1px solid var(--blue-ml);color:var(--text);align-self:flex-start;border-bottom-left-radius:4px;}
.comp-msg.me{background:var(--blue);color:#fff;align-self:flex-end;border-bottom-right-radius:4px;}
.comp-input{margin-top:2px;}
.comp-input textarea{-webkit-appearance:none;appearance:none;display:block;width:100%;min-height:84px;padding:11px 13px;margin:0;border:1.5px solid var(--blue-ml);border-radius:var(--rs);font-family:inherit;font-size:13px;line-height:1.6;resize:vertical;background:#FDFDFF;color:var(--text);}
.comp-input textarea:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(19,38,93,.08);}
.comp-btns{display:flex;gap:8px;margin-top:8px;}
.comp-btns .btn{flex:1;}
.link-btn{border:none;background:none;color:var(--blue);font-weight:700;font-size:11px;cursor:pointer;text-decoration:underline;padding:0;}
.link-btn:hover{opacity:.75;}

/* ── Mobile section switcher ────────────────────────────────── */
.mbar{display:none;position:fixed;bottom:0;left:0;right:0;background:var(--blue-d);z-index:120;padding:6px 8px calc(6px + env(safe-area-inset-bottom));gap:4px;box-shadow:0 -6px 24px rgba(12,26,66,.35);}
.mb-btn{flex:1 1 0;min-width:0;border:none;background:transparent;color:rgba(255,255,255,.55);font-family:inherit;font-size:15px;font-weight:700;padding:7px 2px;border-radius:10px;cursor:pointer;position:relative;line-height:1.2;}
.mb-btn span{display:block;font-size:9px;font-weight:700;letter-spacing:.2px;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.mb-btn.active{color:var(--amber);background:rgba(245,192,74,.12);}
.mb-btn .rt-dot{position:absolute;top:4px;right:10px;margin:0;}

/* ── Responsive: general app ────────────────────────────────── */
@media(max-width:720px){
  .container{padding:18px 14px 90px;}
  .topnav{padding:0 16px;}
  .topnav .brand small{display:none;}
  .page-head h1{font-size:19px;}
  .next-case{padding:20px;}
  .auth-card{padding:28px 22px;}
  .kv{grid-template-columns:1fr;gap:2px 0;}
  .kv dt{margin-top:8px;}
  table.tx{display:block;overflow-x:auto;white-space:nowrap;}
  .score-strip{grid-template-columns:repeat(2,1fr);}
  .list-row{flex-wrap:wrap;}
}

/* ── Responsive: investigation workspace ────────────────────── */
@media(max-width:1020px){
  .rail{position:static;}
  body[data-mview] .container{padding-bottom:96px;}
  .mbar{display:flex;}
  /* one section at a time, driven by body[data-mview] */
  body[data-mview="companion"] .ws > div:first-child,
  body[data-mview="rfi"] .ws > div:first-child,
  body[data-mview="requests"] .ws > div:first-child,
  body[data-mview="notes"] .ws > div:first-child,
  body[data-mview="decision"] .ws > div:first-child{display:none;}
  body[data-mview="evidence"] .rail{display:none;}
  body[data-mview] .rail-tabs{display:none;}
  body[data-mview="companion"] .rail-pane,
  body[data-mview="rfi"] .rail-pane,
  body[data-mview="requests"] .rail-pane,
  body[data-mview="notes"] .rail-pane,
  body[data-mview="decision"] .rail-pane{display:none!important;}
  body[data-mview="companion"] .rail-pane[data-pane="companion"],
  body[data-mview="rfi"] .rail-pane[data-pane="rfi"],
  body[data-mview="requests"] .rail-pane[data-pane="requests"],
  body[data-mview="notes"] .rail-pane[data-pane="notes"],
  body[data-mview="decision"] .rail-pane[data-pane="decision"]{display:block!important;}
  .ws-head{padding:12px 14px;}
  .ws-head .wh-title{font-size:14px;}
  .sla{padding:5px 12px;}
  .sla .sla-time{font-size:15px;}
  .comp-log{max-height:46vh;}
  .rfi-log{max-height:40vh;}
  #case-notes{min-height:220px;}
  .ev-tabs{overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none;}
  .ev-tabs::-webkit-scrollbar{display:none;}
  .ev-tab{white-space:nowrap;flex-shrink:0;}
  .ev-body{padding:14px;}
}
@media(min-width:1021px){.mbar{display:none!important;}}

/* Process walkthrough rows */
/* Information strategy panel */
.is-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-bottom:14px;}
@media(max-width:640px){.is-grid{grid-template-columns:repeat(2,1fr);}}
.is-stat{border:1px solid var(--border);border-radius:var(--rs);padding:9px 11px;}
.is-stat .is-v{font-size:15px;font-weight:800;letter-spacing:-.2px;}
.is-stat .is-l{font-size:10px;color:var(--text2);text-transform:uppercase;letter-spacing:.04em;margin-top:2px;line-height:1.35;}
.is-notes{margin:0;padding-left:18px;}
.is-notes li{font-size:12.5px;line-height:1.7;color:var(--text2);margin-bottom:7px;}
.is-notes li:last-child{margin-bottom:0;}

.proc-row{padding:11px 0;border-bottom:1px dashed var(--border);}
.proc-row:last-child{border-bottom:none;}
.proc-lbl{font-size:11px;font-weight:800;letter-spacing:.7px;text-transform:uppercase;color:var(--blue);margin-bottom:4px;}
.proc-val{font-size:13px;color:var(--text2);line-height:1.65;white-space:pre-wrap;}

@media(max-width:520px){
  .topnav{height:auto;min-height:52px;flex-wrap:wrap;padding:8px 12px;gap:4px;}
  .topnav nav{flex-wrap:wrap;}
  .decision-grid{grid-template-columns:1fr;}
  .dec-btn[data-dec="str"]{grid-column:span 1!important;}
}
