:root{
  /* Kite Pharma palette (from mockup) */
  --k-green:#0B64A6; --k-green-deep:#0A4E82; --k-green-soft:#EDF3F7; --k-green-line:#CFE0EC;
  --k-cyan:#1CA0D8; --slate:#173040; --slate-2:#1E3D50; --red:#C8102E;
  --ink:#182229; --ink-soft:#4A5760; --ink-mute:#7C8A93; --line:#E2E7EA;
  --bg:#F4F6F8; --surface:#ffffff;
  --ext:#51438A; --ext-soft:#EDEAF4;
  --warn:#B9701F; --warn-soft:#F6ECDF;
  --pos:#2F7D46; --neg:#C50F3C; --neu:#7C8A93;
  --font-sans:"Calibri","Carlito","Segoe UI",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif;
}
*{ box-sizing:border-box; }
html,body{ margin:0; padding:0; background:var(--bg); }
body{ font-family:var(--font-sans); color:var(--ink); -webkit-font-smoothing:antialiased; }
button{ font-family:inherit; cursor:pointer; }
input,select,textarea{ font-family:inherit; }
::-webkit-scrollbar{ width:10px; height:10px; }
::-webkit-scrollbar-thumb{ background:#d7d3ca; border-radius:6px; }
@keyframes fadeUp{ from{ opacity:0; transform:translateY(8px);} to{ opacity:1; transform:none;} }
@keyframes blink{ 0%,60%,100%{opacity:.25;} 30%{opacity:1;} }
@keyframes spin{ to{ transform:rotate(360deg);} }

/* generic hover for interactive rows/buttons that opt in via data-hover */
[data-hover]:hover{ filter:brightness(0.98); }

/* denied (role-gated) affordance */
.gated{ position:relative; opacity:.5; cursor:not-allowed !important; }
.gated::after{ content:"🔒"; font-size:10px; margin-left:5px; }
