/* ── tokens.css ── */
/* ══════════════════════════════════════════
   1. DESIGN TOKENS
   ══════════════════════════════════════════ */
:root{
  /* brand ramp — from arabajam logo */
  --b900:#00303F; --b800:#00465A; --b700:#006784; --b600:#0A7E94; --b500:#1195A8;
  --a600:#12A3A4; --a500:#29BCBD; --a400:#5CCDCE; --a300:#93DFDF; --a100:#DCF4F4;

  /* neutrals */
  --n0:#FFFFFF; --n25:#FBFCFD; --n50:#F5F8F9; --n100:#EDF2F4; --n200:#DFE7EA;
  --n300:#C6D3D8; --n400:#74868E; --n500:#5C6F77; --n600:#4E6068; --n700:#37474E;
  --n800:#222F34; --n900:#141D21;

  /* semantic — light */
  --bg:var(--n50); --surface:var(--n0); --surface2:var(--n25); --surface3:var(--n100);
  --border:var(--n200); --border-strong:var(--n300);
  --text:#1B2A30; --text2:var(--n600); --text3:var(--n500);
  --brand:var(--b700); --brand-ink:var(--b800); --accent:var(--a500);
  --ok:#0F7A4F; --ok-bg:#E6F6EE; --ok-bd:#BFE7D3;
  --warn:#9A5313; --warn-bg:#FEF3E7; --warn-bd:#F6D9BB;
  --danger:#B02A26; --danger-bg:#FDECEB; --danger-bd:#F6C9C7;
  --info:var(--b700); --info-bg:#E7F2F5; --info-bd:#C4DEE5;

  /* spacing 4pt */
  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:20px; --s6:24px; --s7:32px; --s8:40px; --s9:56px;
  /* radii */
  --r-xs:6px; --r-sm:8px; --r:12px; --r-lg:16px; --r-xl:22px; --r-full:999px;
  /* elevation */
  --sh1:0 1px 2px rgba(10,42,54,.06), 0 1px 3px rgba(10,42,54,.05);
  --sh2:0 2px 4px rgba(10,42,54,.05), 0 6px 16px rgba(10,42,54,.07);
  --sh3:0 8px 20px rgba(10,42,54,.10), 0 24px 48px rgba(10,42,54,.10);
  --ring:0 0 0 3px rgba(41,188,189,.42);
  /* type */
  --f11:11px; --f12:12px; --f13:13px; --f14:14px; --f16:16px; --f20:20px; --f26:26px; --f34:34px;
  /* layout */
  --sidew:264px; --topbh:62px;
  --ease:cubic-bezier(.4,.14,.3,1); --dur:.22s;
}
[data-theme="dark"]{
  --bg:#0C1518; --surface:#121F24; --surface2:#16262C; --surface3:#1C3138;
  --border:#22383F; --border-strong:#2E4A53;
  --text:#E6F0F2; --text2:#A8BEC5; --text3:#7E979F;
  --brand:var(--a500); --brand-ink:#CFEFEF; --accent:var(--a400);
  --ok:#4BD394; --ok-bg:#0E2A20; --ok-bd:#1B4735;
  --warn:#F0B366; --warn-bg:#2C2013; --warn-bd:#4A3620;
  --danger:#FF8B85; --danger-bg:#2E1615; --danger-bd:#4E2523;
  --info:var(--a400); --info-bg:#10272E; --info-bd:#1D414B;
  --sh1:0 1px 2px rgba(0,0,0,.4); --sh2:0 4px 14px rgba(0,0,0,.42);
  --sh3:0 16px 40px rgba(0,0,0,.55); --ring:0 0 0 3px rgba(92,205,206,.45);
}

/* ── base.css ── */
/* ══════════════════════════════════════════
   2. BASE
   ══════════════════════════════════════════ */
*,*::before,*::after{box-sizing:border-box}
*{margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{
  font-family:'IBM Plex Sans Arabic',system-ui,'Segoe UI',sans-serif;
  background:var(--bg); color:var(--text); font-size:var(--f14); line-height:1.75;
  direction:rtl; -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
  transition:background var(--dur) var(--ease), color var(--dur) var(--ease);
}
.en{direction:ltr;unicode-bidi:isolate;font-variant-numeric:tabular-nums}
.num{font-variant-numeric:tabular-nums;direction:ltr;unicode-bidi:isolate}
h1,h2,h3,h4{line-height:1.35;font-weight:700;letter-spacing:-.01em}
button,input,select,textarea{font:inherit;color:inherit}
button{background:none;border:0;cursor:pointer}
svg{display:block}
a{color:inherit;text-decoration:none}

/* focus — visible and consistent everywhere */
:focus-visible{outline:none;box-shadow:var(--ring);border-radius:var(--r-xs)}
.skip{position:absolute;right:-9999px;top:var(--s2);z-index:200;background:var(--brand);
  color:#fff;padding:10px 18px;border-radius:var(--r-sm);font-weight:600;font-size:var(--f13)}
.skip:focus{right:var(--s4)}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;
    transition-duration:.01ms!important;scroll-behavior:auto!important}
}
.sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* ── layout.css ── */
/* ══════════════════════════════════════════
   3. LAYOUT SHELL
   ══════════════════════════════════════════ */
.shell{display:grid;grid-template-columns:var(--sidew) minmax(0,1fr);min-height:100vh}

/* ---- sidebar ---- */
.side{
  grid-column:1; background:linear-gradient(168deg,var(--b900) 0%,var(--b800) 42%,var(--b700) 100%);
  color:#E4F3F5; position:sticky; top:0; height:100vh; display:flex; flex-direction:column;
  z-index:40; transition:transform var(--dur) var(--ease);
}
[data-theme="dark"] .side{background:linear-gradient(168deg,#08171C 0%,#0C232B 50%,#0E2F38 100%);
  border-inline-start:1px solid var(--border)}
.brandbar{padding:var(--s5) var(--s5) var(--s4)}
.logo-full{width:172px;height:30px;flex:0 0 auto;
  background:url(../img/logo-full.png) no-repeat center/contain}
.logo-mark{width:36px;height:32px;flex:0 0 36px;display:none;
  background:url(../img/logo-mark.png) no-repeat center/contain}
.brandsub{font-size:10px;color:var(--a300);line-height:1.5;white-space:nowrap;
  padding-inline-start:2px;margin-top:3px}

.navwrap{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;
  padding:var(--s2) var(--s3) var(--s4);
  scrollbar-width:none;-ms-overflow-style:none}
.navwrap::-webkit-scrollbar{width:0;height:0;display:none}
.navlbl{font-size:10px;font-weight:600;letter-spacing:.08em;color:rgba(190,225,230,.62);
  padding:var(--s4) var(--s3) var(--s2);text-transform:uppercase}
.nav{display:flex;flex-direction:column;gap:2px;list-style:none}
.nav :is(button,a){
  width:100%;display:flex;align-items:center;gap:var(--s3);padding:10px var(--s3);
  border-radius:var(--r-sm);color:#BFE0E5;font-size:var(--f13);font-weight:500;
  transition:background .16s var(--ease),color .16s var(--ease);position:relative;text-align:start;
  min-height:44px;
}
.nav :is(button,a):hover{background:rgba(255,255,255,.08);color:#fff}
.nav :is(button,a)[aria-current="page"]{background:rgba(41,188,189,.18);color:#fff;font-weight:600}
.nav :is(button,a)[aria-current="page"]::before{content:'';position:absolute;inset-inline-start:0;top:9px;bottom:9px;
  width:3px;border-radius:0 3px 3px 0;background:var(--a400)}
.nav svg{width:19px;height:19px;flex:0 0 19px;stroke-width:1.9}
.nav .lab{flex:1;white-space:nowrap;overflow:hidden}
.nav .tag{font-size:10px;font-weight:700;padding:1px 7px;border-radius:var(--r-full);
  background:rgba(255,120,110,.2);color:#FFB3AD;white-space:nowrap}

.sidefoot{padding:var(--s3) var(--s4) var(--s4);border-top:1px solid rgba(255,255,255,.12)}
.me{display:flex;align-items:center;gap:var(--s3);padding:var(--s2);border-radius:var(--r-sm);
  transition:background .16s;cursor:pointer;width:100%}
.me:hover{background:rgba(255,255,255,.08)}
.me .av{width:34px;height:34px;border-radius:var(--r-full);flex:0 0 34px;display:grid;place-items:center;
  background:linear-gradient(140deg,var(--a400),var(--a600));color:var(--b900);font-weight:700;font-size:var(--f13)}
.me .info{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;
  gap:1px;text-align:start;line-height:1.4}
.me .nm{display:block;width:100%;font-size:var(--f13);font-weight:600;color:#fff;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.35}
.me .rl{display:block;width:100%;font-size:10.5px;color:var(--a300);line-height:1.35;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.compliance{margin-top:var(--s3);font-size:10px;color:rgba(190,225,230,.6);display:flex;
  align-items:center;gap:6px;padding-inline-start:var(--s2)}

/* ---- main ---- */
.main{grid-column:2;min-width:0;display:flex;flex-direction:column}
.topbar{
  position:sticky;top:0;z-index:30;height:var(--topbh);display:flex;align-items:center;
  gap:var(--s3);padding:0 var(--s6);background:color-mix(in srgb,var(--surface) 88%,transparent);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--border);
}
.burger{display:none;width:40px;height:40px;border-radius:var(--r-sm);align-items:center;
  justify-content:center;color:var(--text2)}
.burger:hover{background:var(--surface3)}
/* Hidden while the sidebar is on screen, where it would be a second logout. */
.tb-logout{display:none;align-items:center}
.search{flex:1;max-width:420px;position:relative}
.search svg{position:absolute;inset-inline-start:12px;top:50%;transform:translateY(-50%);
  width:17px;height:17px;color:var(--text3);pointer-events:none}
.search input{width:100%;height:40px;padding-inline:38px 14px;border:1px solid var(--border);
  border-radius:var(--r-sm);background:var(--surface2);font-size:var(--f13);transition:.16s}
.search input::placeholder{color:var(--text3)}
.search input:focus{border-color:var(--accent);background:var(--surface);box-shadow:var(--ring)}
.search kbd{position:absolute;inset-inline-end:10px;top:50%;transform:translateY(-50%);
  font-size:10px;padding:2px 6px;border:1px solid var(--border);border-radius:4px;
  color:var(--text3);background:var(--surface);font-family:inherit}
.tb-sp{flex:1}
.iconbtn{width:40px;height:40px;border-radius:var(--r-sm);display:grid;place-items:center;
  color:var(--text2);transition:.16s;position:relative;flex:0 0 40px}
.iconbtn:hover{background:var(--surface3);color:var(--text)}
.iconbtn svg{width:19px;height:19px;stroke-width:1.8}
.iconbtn .dot{position:absolute;top:8px;inset-inline-end:9px;width:7px;height:7px;
  border-radius:50%;background:var(--danger);border:1.5px solid var(--surface)}
.env{font-size:10.5px;font-weight:600;padding:4px 10px;border-radius:var(--r-full);
  background:var(--warn-bg);color:var(--warn);border:1px solid var(--warn-bd);white-space:nowrap}

.content{padding:var(--s6);max-width:1480px;width:100%}

/* ── components.css ── */
/* ══════════════════════════════════════════
   4. COMPONENTS
   ══════════════════════════════════════════ */
/* page header */
.phead{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s4);
  flex-wrap:wrap;margin-bottom:var(--s6)}
.crumbs{display:flex;align-items:center;gap:6px;font-size:var(--f12);color:var(--text3);margin-bottom:5px}
.crumbs :is(button,a):hover{color:var(--brand);text-decoration:underline}
.crumbs svg{width:13px;height:13px;opacity:.55}
.phead h1{font-size:var(--f26);color:var(--text);display:flex;align-items:center;gap:var(--s3);flex-wrap:wrap}
.phead .sub{font-size:var(--f13);color:var(--text2);margin-top:3px}
.pactions{display:flex;gap:var(--s2);flex-wrap:wrap}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:40px;
  padding:0 var(--s4);border-radius:var(--r-sm);font-size:var(--f13);font-weight:600;
  background:var(--brand);color:#fff;transition:.16s var(--ease);white-space:nowrap;border:1px solid transparent}
.btn:hover{background:var(--brand-ink);transform:translateY(-1px);box-shadow:var(--sh2)}
.btn:active{transform:translateY(0)}
[data-theme="dark"] .btn{color:var(--b900)}
.btn svg{width:16px;height:16px;stroke-width:2.1}
.btn.ghost{background:var(--surface);color:var(--text);border-color:var(--border-strong)}
.btn.ghost:hover{background:var(--surface3);border-color:var(--brand);color:var(--brand)}
.btn.danger{background:var(--danger);color:#fff}
.btn.danger:hover{background:#8E211E}
.btn.sm{min-height:32px;padding:0 var(--s3);font-size:var(--f12);border-radius:var(--r-xs)}
.btn.sm svg{width:14px;height:14px}
.btn:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}

/* surfaces */
.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);
  box-shadow:var(--sh1);overflow:hidden;margin-bottom:var(--s5)}
.panel>.ph{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);
  padding:var(--s4) var(--s5);border-bottom:1px solid var(--border);flex-wrap:wrap}
.panel>.ph h2{font-size:var(--f14);color:var(--text)}
.panel>.ph .hint{font-size:var(--f12);color:var(--text3);font-weight:400}
.pb{padding:var(--s5)}
.pb.flush{padding:0}

/* grids */
.g{display:grid;gap:var(--s4)}
.g-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.g-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g-21{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}
.g-12{grid-template-columns:minmax(0,1fr) minmax(0,2fr)}
.mb5{margin-bottom:var(--s5)}

/* stat card */
.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);
  padding:var(--s4) var(--s5);box-shadow:var(--sh1);position:relative;overflow:hidden;
  transition:.18s var(--ease)}
a.stat:hover,button.stat:hover{box-shadow:var(--sh2);transform:translateY(-2px)}
.stat::after{content:'';position:absolute;top:0;inset-inline-start:0;width:100%;height:3px;
  background:linear-gradient(90deg,var(--a500),var(--b600));opacity:0;transition:.18s}
.stat.hi::after{opacity:1}
.stat .lb{font-size:var(--f12);color:var(--text2);display:flex;align-items:center;gap:6px;margin-bottom:var(--s2)}
.stat .lb svg{width:15px;height:15px;color:var(--text3);stroke-width:1.9}
.stat .vl{font-size:var(--f34);font-weight:700;color:var(--brand-ink);line-height:1.15;
  letter-spacing:-.02em;font-variant-numeric:tabular-nums}
[data-theme="dark"] .stat .vl{color:var(--a300)}
.stat .vl .u{font-size:var(--f13);font-weight:500;color:var(--text3);letter-spacing:0}
.stat .ft{font-size:var(--f12);margin-top:var(--s2);display:flex;align-items:center;gap:5px}
.stat .ft svg{width:13px;height:13px}
.t-ok{color:var(--ok)} .t-warn{color:var(--warn)} .t-bad{color:var(--danger)} .t-mut{color:var(--text3)}

/* progress */
.track{height:7px;background:var(--surface3);border-radius:var(--r-full);overflow:hidden}
.track>i{display:block;height:100%;border-radius:var(--r-full);
  background:linear-gradient(90deg,var(--a600),var(--a400));transition:width .6s var(--ease)}
.track.ok>i{background:linear-gradient(90deg,#0F7A4F,#34B77C)}
.track.warn>i{background:linear-gradient(90deg,#B4741F,#E0A250)}
.track.bad>i{background:linear-gradient(90deg,#A3241F,#D9564F)}

/* pills */
.pill{display:inline-flex;align-items:center;gap:5px;font-size:var(--f11);font-weight:600;
  padding:3px 10px;border-radius:var(--r-full);white-space:nowrap;border:1px solid transparent;line-height:1.7}
.pill::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor;flex:0 0 6px}
.pill.plain::before{display:none}
.k-live{background:var(--danger-bg);color:var(--danger);border-color:var(--danger-bd)}
.k-live::before{animation:pulse 1.6s var(--ease) infinite}
.k-ok{background:var(--ok-bg);color:var(--ok);border-color:var(--ok-bd)}
.k-warn{background:var(--warn-bg);color:var(--warn);border-color:var(--warn-bd)}
.k-info{background:var(--info-bg);color:var(--info);border-color:var(--info-bd)}
.k-mut{background:var(--surface3);color:var(--text3);border-color:var(--border)}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.72)}}

.chip{display:inline-flex;align-items:center;gap:5px;font-size:var(--f11);font-weight:600;
  padding:3px 9px;border-radius:var(--r-xs);background:var(--info-bg);color:var(--info);
  border:1px solid var(--info-bd);white-space:nowrap}

/* tables */
.tw{overflow-x:auto;-webkit-overflow-scrolling:touch}
table{width:100%;border-collapse:collapse;font-size:var(--f13)}
thead th{background:var(--surface2);color:var(--text2);text-align:start;padding:var(--s3) var(--s5);
  font-weight:600;font-size:var(--f12);border-bottom:1px solid var(--border);white-space:nowrap;
  position:sticky;top:0;z-index:1}
tbody td{padding:var(--s3) var(--s5);border-bottom:1px solid var(--border);vertical-align:middle}
tbody tr:last-child td{border-bottom:0}
tr.clk{cursor:pointer;transition:background .14s}
tr.clk:hover td{background:var(--surface2)}
tr.clk:focus-visible{outline:none}
tr.clk:focus-visible td{background:var(--surface2);box-shadow:inset 0 0 0 2px var(--accent)}
td .ttl{font-weight:600;color:var(--text)}
td .sub2{font-size:var(--f11);color:var(--text3);margin-top:1px}
.tnum{font-variant-numeric:tabular-nums;direction:ltr;unicode-bidi:isolate}
.tc{text-align:center}

/* person */
.person{display:flex;align-items:center;gap:var(--s3);min-width:0}
.pav{width:34px;height:34px;border-radius:var(--r-full);flex:0 0 34px;display:grid;place-items:center;
  font-size:var(--f12);font-weight:700;background:var(--info-bg);color:var(--brand);
  border:1px solid var(--info-bd)}
.pav.sign{background:linear-gradient(140deg,var(--a400),var(--a600));color:var(--b900);border-color:transparent}
.pav.empty{background:var(--surface3);color:var(--text3);border-style:dashed}

/* notes */
.note{display:flex;gap:var(--s3);padding:var(--s3) var(--s4);border-radius:var(--r);
  font-size:var(--f12);line-height:1.7;background:var(--info-bg);color:var(--text);
  border:1px solid var(--info-bd);border-inline-start:3px solid var(--info)}
.note svg{width:17px;height:17px;flex:0 0 17px;margin-top:3px;color:var(--info);stroke-width:1.9}
.note b{color:var(--info)}
.note.warn{background:var(--warn-bg);border-color:var(--warn-bd);border-inline-start-color:var(--warn)}
.note.warn svg,.note.warn b{color:var(--warn)}
.note.bad{background:var(--danger-bg);border-color:var(--danger-bd);border-inline-start-color:var(--danger)}
.note.bad svg,.note.bad b{color:var(--danger)}
.note.ok{background:var(--ok-bg);border-color:var(--ok-bd);border-inline-start-color:var(--ok)}
.note.ok svg,.note.ok b{color:var(--ok)}

/* gauge rows */
/* FIXED column tracks — every .row3 is its own grid, so tracks must not be content-sized
   or each row computes a different label width and the bars stop lining up. */
.rows{display:flex;flex-direction:column;gap:var(--s4);font-size:var(--f12)}
.row3{display:grid;grid-template-columns:var(--lblw,178px) minmax(0,1fr) var(--valw,92px);
  align-items:center;gap:var(--s3)}
.row3 .lb{color:var(--text2);line-height:1.45;overflow-wrap:anywhere}
.row3 .vl{font-weight:700;text-align:end;font-variant-numeric:tabular-nums;direction:ltr;
  unicode-bidi:isolate}
.row3 .track{width:100%}

/* room cards */
.rooms{display:grid;grid-template-columns:repeat(auto-fill,minmax(272px,1fr));gap:var(--s4)}
.room{border:1px solid var(--border);border-radius:var(--r);background:var(--surface);
  padding:var(--s4);transition:.18s var(--ease);position:relative}
.room:hover{box-shadow:var(--sh2);border-color:var(--accent);transform:translateY(-2px)}
.room.sign{border-color:var(--a400);background:linear-gradient(160deg,var(--info-bg),var(--surface) 60%)}
.room.alert{border-color:var(--warn-bd)}
.rh{display:flex;align-items:center;justify-content:space-between;gap:var(--s2);margin-bottom:var(--s2)}
.rh .rn{font-size:var(--f14);font-weight:700;color:var(--text)}
.rmeta{display:flex;gap:var(--s4);font-size:var(--f11);color:var(--text3);margin-bottom:var(--s3)}
.rmeta span{display:flex;align-items:center;gap:4px}
.rmeta svg{width:13px;height:13px;stroke-width:2}
.terp{display:flex;align-items:center;gap:var(--s2);padding:var(--s2) 0;
  border-top:1px dashed var(--border);font-size:var(--f12);min-height:44px}
.terp .who{flex:1;min-width:0}
.terp .who b{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.terp .who i{font-style:normal;font-size:var(--f11);color:var(--text3)}
.led{width:9px;height:9px;border-radius:50%;flex:0 0 9px}
.led-on{background:var(--ok);box-shadow:0 0 0 3px var(--ok-bg)}
.led-warn{background:var(--warn);box-shadow:0 0 0 3px var(--warn-bg)}
.led-off{background:var(--n400);box-shadow:0 0 0 3px var(--surface3)}
.led-live{background:var(--danger);box-shadow:0 0 0 3px var(--danger-bg);animation:pulse 1.6s infinite}

/* tabs */
.tabs{display:flex;gap:2px;padding:0 var(--s5);border-bottom:1px solid var(--border);
  overflow-x:auto;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tabs button{padding:var(--s3) var(--s4);font-size:var(--f13);font-weight:600;color:var(--text3);
  border-bottom:2.5px solid transparent;white-space:nowrap;transition:.16s;min-height:46px}
.tabs button:hover{color:var(--text)}
.tabs button[aria-selected="true"]{color:var(--brand);border-bottom-color:var(--accent)}
[data-theme="dark"] .tabs button[aria-selected="true"]{color:var(--a400)}

/* forms */
.form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s4)}
.fld{display:flex;flex-direction:column;gap:6px;min-width:0}
.fld.full{grid-column:1/-1}
.fld label{font-size:var(--f12);font-weight:600;color:var(--text)}
.fld input,.fld select,.fld textarea{width:100%;min-height:42px;padding:9px var(--s3);
  border:1px solid var(--border-strong);border-radius:var(--r-sm);background:var(--surface);
  font-size:var(--f13);transition:.16s}
.fld textarea{min-height:74px;resize:vertical;line-height:1.7}
.fld input:focus,.fld select:focus,.fld textarea:focus{border-color:var(--accent);box-shadow:var(--ring)}
.hlp{font-size:var(--f11);color:var(--text3);line-height:1.6}
.toggles{display:flex;gap:var(--s2);flex-wrap:wrap}
.tg{display:inline-flex;align-items:center;gap:6px;padding:7px var(--s3);border-radius:var(--r-sm);
  border:1px solid var(--border-strong);font-size:var(--f12);font-weight:600;color:var(--text2);
  transition:.16s;min-height:38px}
.tg:hover{border-color:var(--accent);color:var(--brand)}
.tg[aria-pressed="true"]{background:var(--brand);color:#fff;border-color:var(--brand)}
[data-theme="dark"] .tg[aria-pressed="true"]{color:var(--b900)}
.tg[aria-pressed="true"].sg{background:linear-gradient(140deg,var(--a400),var(--a600));
  color:var(--b900);border-color:transparent}
.tg svg{width:14px;height:14px;stroke-width:2.2}

/* modal */
.ovl{position:fixed;inset:0;background:rgba(6,26,33,.6);backdrop-filter:blur(4px);z-index:100;
  display:none;align-items:center;justify-content:center;padding:var(--s4)}
.ovl:not([hidden]){display:flex;animation:fadein .18s var(--ease)}
.modal{background:var(--surface);border-radius:var(--r-lg);width:min(660px,100%);
  max-height:min(88vh,860px);display:flex;flex-direction:column;box-shadow:var(--sh3);
  animation:pop .22s var(--ease);border:1px solid var(--border)}
@keyframes fadein{from{opacity:0}}
@keyframes pop{from{opacity:0;transform:translateY(14px) scale(.98)}}
.mh{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);
  padding:var(--s4) var(--s5);border-bottom:1px solid var(--border)}
.mh h3{font-size:var(--f16)}
.mb{padding:var(--s5);overflow-y:auto;flex:1}
.mf{padding:var(--s4) var(--s5);border-top:1px solid var(--border);display:flex;gap:var(--s2);
  background:var(--surface2);border-radius:0 0 var(--r-lg) var(--r-lg);flex-wrap:wrap}

/* toast */
.toasts{position:fixed;bottom:var(--s5);inset-inline-start:var(--s5);z-index:150;
  display:flex;flex-direction:column;gap:var(--s2);pointer-events:none;max-width:min(380px,90vw)}
.toast{display:flex;align-items:center;gap:var(--s3);background:var(--b800);color:#fff;
  padding:var(--s3) var(--s4);border-radius:var(--r);box-shadow:var(--sh3);font-size:var(--f13);
  animation:slidein .26s var(--ease);border:1px solid rgba(255,255,255,.12)}
[data-theme="dark"] .toast{background:var(--surface3);border-color:var(--border-strong)}
.toast svg{width:17px;height:17px;flex:0 0 17px;color:var(--a400)}
.toast.out{animation:slideout .24s var(--ease) forwards}
@keyframes slidein{from{opacity:0;transform:translateX(30px)}}
@keyframes slideout{to{opacity:0;transform:translateX(30px)}}

/* views */
[hidden]{display:none!important}
.view{display:none}
/* No entrance animation here: `.view.on` is the ROOT element of thirteen
   Livewire screens, so anything that replaces that element replays the fade
   over the whole page. See refinements.css. */
.view.on{display:block}

/* empty state */
.emptystate{text-align:center;padding:var(--s9) var(--s5);color:var(--text3)}
.emptystate svg{width:46px;height:46px;margin:0 auto var(--s3);opacity:.4;stroke-width:1.4}
.emptystate h3{font-size:var(--f14);color:var(--text2);margin-bottom:5px}
.emptystate p{font-size:var(--f12);max-width:340px;margin:0 auto var(--s4)}

/* filter bar */
.fbar{display:flex;gap:var(--s2);align-items:center;flex-wrap:wrap;margin-bottom:var(--s4)}
.seg{display:inline-flex;background:var(--surface3);border-radius:var(--r-sm);padding:3px;gap:2px}
.seg button{padding:6px var(--s3);border-radius:var(--r-xs);font-size:var(--f12);font-weight:600;
  color:var(--text2);transition:.16s;min-height:32px}
.seg button[aria-pressed="true"]{background:var(--surface);color:var(--brand);box-shadow:var(--sh1)}

/* console mock */
.console{background:var(--b900);border-radius:var(--r-lg);padding:var(--s5);color:#DCEFF2;
  border:1px solid var(--b700)}
.cvid{aspect-ratio:16/9;border-radius:var(--r);background:
  repeating-linear-gradient(135deg,#0B2530,#0B2530 12px,#0E2C38 12px,#0E2C38 24px);
  display:grid;place-items:center;position:relative;overflow:hidden;border:1px solid rgba(255,255,255,.1)}
.cvid .lbl{position:absolute;top:var(--s2);inset-inline-start:var(--s2);font-size:10.5px;
  background:rgba(0,0,0,.55);padding:3px 9px;border-radius:var(--r-xs);color:#9FD9DE}
.cvid .ph{text-align:center;color:rgba(190,225,230,.5);font-size:var(--f12)}
.cvid .ph svg{width:34px;height:34px;margin:0 auto 6px;stroke-width:1.5}
.meter{display:flex;align-items:flex-end;gap:2px;height:26px}
.meter i{flex:1;background:var(--a500);border-radius:1px;min-width:3px;transition:height .12s linear}
.meter i.hot{background:var(--warn)}
.meter i.peak{background:var(--danger)}

/* ══════════ ROLE SWITCHER ══════════ */
.roleswitch{display:flex;align-items:center;gap:7px;background:var(--surface2);
  border:1px solid var(--border);border-radius:var(--r-sm);padding:0 var(--s3);height:38px}
.roleswitch svg{width:15px;height:15px;color:var(--text3);flex:0 0 15px}
.roleswitch select{border:0;background:none;font-size:var(--f12);font-weight:600;color:var(--text);
  height:36px;padding-inline-end:var(--s2);cursor:pointer}
.roleswitch select:focus{outline:none}
.roleswitch:focus-within{border-color:var(--accent);box-shadow:var(--ring)}

/* ══════════ ATTENDEE CARDS ══════════ */
.ecard{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);
  padding:var(--s5);box-shadow:var(--sh1);cursor:pointer;transition:.18s var(--ease);
  display:flex;flex-direction:column;gap:var(--s2)}
.ecard:hover,.ecard:focus-visible{box-shadow:var(--sh2);transform:translateY(-3px);border-color:var(--accent)}
.ecard.live{border-color:var(--danger-bd);background:linear-gradient(165deg,var(--danger-bg),var(--surface) 55%)}
.ectop{display:flex;align-items:center;justify-content:space-between;gap:var(--s2)}
.ectime{font-size:var(--f12);color:var(--text3);font-weight:600}
.ecard h3{font-size:var(--f16);color:var(--text)}
.ecdesc{font-size:var(--f12);color:var(--text2);margin:0}
.eclangs{display:flex;flex-wrap:wrap;gap:5px;margin:var(--s2) 0}
.lgchip{font-size:var(--f11);font-weight:600;padding:3px 9px;border-radius:var(--r-xs);
  background:var(--surface3);color:var(--text2);border:1px solid var(--border)}
.lgchip.sign{background:var(--info-bg);color:var(--info);border-color:var(--info-bd);
  display:inline-flex;align-items:center;gap:4px}
.lgchip.sign svg{width:12px;height:12px;stroke-width:2.2;fill:none;stroke:currentColor}
.ecfoot{display:flex;align-items:center;justify-content:space-between;gap:var(--s2);
  padding-top:var(--s3);border-top:1px solid var(--border);font-size:var(--f12);color:var(--text3);margin-top:auto}
.ecfoot span{display:flex;align-items:center;gap:5px}
.ecfoot svg{width:14px;height:14px;stroke-width:2;fill:none;stroke:currentColor}
.ecjoin{color:var(--brand);font-weight:700}

/* ══════════ PLAYER ══════════ */
.player{background:var(--b900);border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--b700)}
.pvid{aspect-ratio:16/9;position:relative;display:grid;place-items:center;
  background:repeating-linear-gradient(135deg,#0B2530,#0B2530 14px,#0E2C38 14px,#0E2C38 28px)}
.plbl{position:absolute;top:var(--s3);inset-inline-start:var(--s3);display:flex;align-items:center;gap:6px;
  font-size:var(--f11);background:rgba(0,0,0,.6);color:#CFE8EB;padding:4px 11px;border-radius:var(--r-full)}
.pph{text-align:center;color:rgba(200,232,236,.75);font-size:var(--f13)}
.pph svg{width:44px;height:44px;margin:0 auto var(--s2);stroke-width:1.5}
.pph small{display:block;color:rgba(200,232,236,.45);font-size:var(--f11);margin-top:3px}
.pip{position:absolute;bottom:var(--s3);inset-inline-end:var(--s3);width:27%;min-width:110px;
  aspect-ratio:16/9;border-radius:var(--r-sm);overflow:hidden;border:2px solid rgba(255,255,255,.28);
  background:#08171C;display:grid;place-items:center}
.piplbl{position:absolute;top:4px;inset-inline-start:6px;font-size:9.5px;color:rgba(200,232,236,.7)}
.pipph svg{width:22px;height:22px;color:rgba(200,232,236,.4);stroke-width:1.6}
.pctrl{display:flex;align-items:center;gap:var(--s3);padding:var(--s3) var(--s4);
  background:rgba(0,0,0,.28);border-top:1px solid rgba(255,255,255,.1)}
.pbtn{width:40px;height:40px;border-radius:var(--r-sm);display:grid;place-items:center;color:#CFE8EB;
  transition:.16s;flex:0 0 40px}
.pbtn:hover{background:rgba(255,255,255,.14)}
.pbtn svg{width:19px;height:19px;stroke-width:1.9;fill:none;stroke:currentColor}
.pvol{display:flex;align-items:center;gap:var(--s2);flex:1;max-width:230px;color:#CFE8EB;font-size:var(--f12)}
.pvol input{flex:1;accent-color:var(--a500);height:5px}

/* room picker */
.roomgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--s2)}
.rmbtn{display:flex;align-items:center;justify-content:space-between;gap:var(--s2);
  padding:var(--s3);border:1.5px solid var(--border);border-radius:var(--r-sm);
  background:var(--surface);font-size:var(--f13);font-weight:600;transition:.16s;min-height:52px}
.rmbtn:hover{border-color:var(--accent);background:var(--surface2)}
.rmbtn.on{border-color:var(--brand);background:var(--info-bg);color:var(--brand)}
.rmbtn.on.sign{border-color:var(--a500);
  background:linear-gradient(140deg,var(--info-bg),var(--surface))}
.rmn{display:flex;align-items:center;gap:6px}
.rmn svg{width:15px;height:15px;stroke-width:2.1;fill:none;stroke:currentColor}
.rmc{font-size:var(--f11);color:var(--text3);font-weight:600}

/* option rows */
.opt{display:flex;align-items:flex-start;gap:var(--s3);padding:var(--s3);border-radius:var(--r-sm);
  border:1px solid var(--border);cursor:pointer;transition:.16s;min-height:52px}
.opt:hover{background:var(--surface2);border-color:var(--accent)}
.opt input{width:19px;height:19px;flex:0 0 19px;margin-top:2px;accent-color:var(--brand);cursor:pointer}
.opt span{display:flex;flex-direction:column;gap:1px;font-size:var(--f13)}
.opt b{font-weight:600}
.opt i{font-style:normal;font-size:var(--f11);color:var(--text3)}

/* file rows */
.fileit{display:flex;align-items:center;gap:var(--s3);padding:var(--s3);border:1px solid var(--border);
  border-radius:var(--r-sm);transition:.16s}
.fileit:hover{background:var(--surface2)}
.fileit>svg{width:20px;height:20px;flex:0 0 20px;color:var(--brand);stroke-width:1.8;fill:none;stroke:currentColor}
.fileit span{flex:1;display:flex;flex-direction:column;font-size:var(--f13);min-width:0}
.fileit i{font-style:normal;font-size:var(--f11);color:var(--text3)}

/* mixer */
.mixgrid{display:flex;flex-direction:column;gap:var(--s4)}
.mx{display:grid;grid-template-columns:96px minmax(0,1fr) 52px;align-items:center;gap:var(--s3)}
.mx .mxn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mx .mxn{font-size:var(--f12);font-weight:600}
.mx input{accent-color:var(--brand);height:5px}
.mx .mxv{font-size:var(--f12);font-weight:700;min-width:46px;text-align:end;
  font-variant-numeric:tabular-nums;direction:ltr;unicode-bidi:isolate}

/* ══════════ ROBUSTNESS ══════════ */
.pane{display:block}
.pane[hidden]{display:none}

/* long-text guards — Arabic names and venue strings overflow narrow cells otherwise */
.person>div{min-width:0}
.person b,.person .ttl{display:block;overflow-wrap:normal;word-break:keep-all}
.terp .who{min-width:0}
.terp .who b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.terp .who i{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fileit span{min-width:0}
.fileit b,.fileit i{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rmn{min-width:0}
.rmn span,.rmbtn .rmn{overflow:hidden;text-overflow:ellipsis}
.ecard h3{overflow-wrap:anywhere}
td .ttl,td .sub2{overflow-wrap:anywhere}
.stat .lb{min-width:0}
.opt span{min-width:0}
.opt b,.opt i{overflow-wrap:anywhere}

/* keep the role select from pushing the topbar around */
.roleswitch select{max-width:132px;text-overflow:ellipsis}

/* ══════════════════════════════════════════
   MODERN FEATURES
   ══════════════════════════════════════════ */

/* ── 1. COMMAND PALETTE (⌘K) ── */
.cmdk{position:fixed;inset:0;background:rgba(6,26,33,.55);backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);z-index:120;display:none;align-items:flex-start;
  justify-content:center;padding:12vh var(--s4) var(--s4)}
.cmdk.on{display:flex;animation:fadein .16s var(--ease)}
.cmdbox{width:min(600px,100%);background:var(--surface);border:1px solid var(--border);
  border-radius:var(--r-lg);box-shadow:var(--sh3);overflow:hidden;animation:pop .2s var(--ease)}
.cmdin{display:flex;align-items:center;gap:var(--s3);padding:var(--s4);border-bottom:1px solid var(--border)}
.cmdin svg{width:19px;height:19px;color:var(--text3);flex:0 0 19px;stroke-width:1.9}
.cmdin input{flex:1;border:0;background:none;font-size:var(--f16);font-weight:500;min-width:0}
.cmdin input:focus{outline:none}
.cmdin kbd{font-size:10px;padding:3px 7px;border:1px solid var(--border);border-radius:5px;
  color:var(--text3);font-family:inherit}
.cmdlist{max-height:52vh;overflow-y:auto;padding:var(--s2)}
.cmdgrp{font-size:10px;font-weight:700;letter-spacing:.07em;color:var(--text3);
  padding:var(--s3) var(--s3) var(--s2)}
.cmdit{display:flex;align-items:center;gap:var(--s3);width:100%;padding:10px var(--s3);
  border-radius:var(--r-sm);font-size:var(--f13);text-align:start;transition:background .12s;min-height:44px}
.cmdit svg{width:17px;height:17px;flex:0 0 17px;color:var(--text3);stroke-width:1.9}
.cmdit .ct{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cmdit .cs{font-size:var(--f11);color:var(--text3);flex:0 0 auto}
.cmdit[aria-selected="true"]{background:var(--info-bg)}
.cmdit[aria-selected="true"] svg,.cmdit[aria-selected="true"] .ct{color:var(--brand)}
.cmdempty{padding:var(--s7) var(--s4);text-align:center;color:var(--text3);font-size:var(--f13)}

/* ── 2. INTERPRETER FATIGUE RING ── */
.ring{position:relative;width:44px;height:44px;flex:0 0 44px}
.ring svg{width:44px;height:44px;transform:rotate(-90deg)}
.ring .bg{stroke:var(--surface3)}
.ring .fg{stroke:var(--ok);transition:stroke-dashoffset .8s var(--ease),stroke .4s}
.ring.warn .fg{stroke:var(--warn)} .ring.bad .fg{stroke:var(--danger)}
.ring .tx{position:absolute;inset:0;display:grid;place-items:center;font-size:10px;
  font-weight:700;font-variant-numeric:tabular-nums;direction:ltr}
.ring.bad .tx{color:var(--danger)} .ring.warn .tx{color:var(--warn)}
.shiftcell{display:flex;align-items:center;gap:var(--s2)}
.shiftcell .meta{font-size:var(--f11);color:var(--text3);line-height:1.4}
.shiftcell .meta b{display:block;font-size:var(--f12);color:var(--text)}

/* ── 3. LIVE VU METERS ── */
.vu{display:flex;align-items:flex-end;gap:2px;height:20px;flex:1;min-width:60px}
.vu i{flex:1;min-width:2px;border-radius:1px;background:var(--a400);
  transition:height .09s linear,background .09s}
.vu i.hot{background:var(--warn)} .vu i.peak{background:var(--danger)}
.vu.silent i{background:var(--border-strong);height:12%!important}
.vurow{display:flex;align-items:center;gap:var(--s2);margin-top:var(--s2);
  padding-top:var(--s2);border-top:1px dashed var(--border)}
.vurow .vlabel{font-size:10px;color:var(--text3);flex:0 0 auto}

/* ── 4. TREND SPARKLINE + DRIFT ── */
.trend{margin-top:var(--s4);padding-top:var(--s4);border-top:1px solid var(--border)}
.trendhd{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);
  margin-bottom:var(--s2);font-size:var(--f12)}
.driftbadge{display:inline-flex;align-items:center;gap:5px;font-size:var(--f11);font-weight:700;
  padding:3px 10px;border-radius:var(--r-full);background:var(--ok-bg);color:var(--ok);
  border:1px solid var(--ok-bd)}
.driftbadge svg{width:12px;height:12px;stroke-width:2.4}
.driftbadge.warn{background:var(--warn-bg);color:var(--warn);border-color:var(--warn-bd)}

/* ── 5. DENSITY ── */
[data-density="compact"]{--s3:9px;--s4:12px;--s5:14px;--s6:18px;--s7:22px;--f14:13px;--f13:12.5px}
[data-density="compact"] tbody td{padding:6px var(--s4)}
[data-density="compact"] thead th{padding:7px var(--s4)}
[data-density="compact"] .stat{padding:var(--s3) var(--s4)}
[data-density="compact"] .stat .vl{font-size:26px}
[data-density="compact"] .panel>.ph{padding:10px var(--s4)}
[data-density="compact"] .terp{min-height:38px;padding:5px 0}

/* ── 6. SHORTCUTS SHEET ── */
.keys{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:var(--s3)}
.keyrow{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);
  padding:9px var(--s3);border:1px solid var(--border);border-radius:var(--r-sm);font-size:var(--f12)}
.keyrow kbd{font-family:inherit;font-size:11px;font-weight:600;padding:3px 9px;
  background:var(--surface3);border:1px solid var(--border-strong);border-radius:5px;
  box-shadow:0 1.5px 0 var(--border-strong);color:var(--text)}

/* ── 7. AMBIENT LIVE GLOW (subtle, only on live view header) ── */
.livedot{position:relative;display:inline-flex;width:9px;height:9px;flex:0 0 9px}
.livedot::before,.livedot::after{content:'';position:absolute;inset:0;border-radius:50%;
  background:var(--danger)}
.livedot::after{animation:ripple 2s var(--ease) infinite}
@keyframes ripple{0%{transform:scale(1);opacity:.7}100%{transform:scale(2.8);opacity:0}}

/* ── 8. SKELETON ── */
.sk{background:linear-gradient(90deg,var(--surface3) 25%,var(--surface2) 50%,var(--surface3) 75%);
  background-size:200% 100%;animation:shim 1.3s linear infinite;border-radius:var(--r-xs)}
@keyframes shim{to{background-position:-200% 0}}

/* ── 9. STAT CARD MICRO-SPARK ── */
.msp{display:flex;align-items:flex-end;gap:2px;height:22px;margin-top:var(--s2)}
.msp i{flex:1;background:var(--a300);border-radius:1.5px;min-width:2px;opacity:.85}
.msp i:last-child{background:var(--a600);opacity:1}

.searchbtn{display:flex;align-items:center;gap:var(--s3);height:40px;padding:0 var(--s3);
  border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface2);
  color:var(--text3);font-size:var(--f13);transition:.16s;flex:1;max-width:420px;text-align:start}
.searchbtn:hover{border-color:var(--accent);background:var(--surface);color:var(--text2)}
.searchbtn svg{width:17px;height:17px;flex:0 0 17px;stroke-width:2}
.searchbtn .sph{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.searchbtn kbd{font-size:10px;padding:2px 7px;border:1px solid var(--border);border-radius:4px;
  font-family:inherit;flex:0 0 auto}
@media (max-width:620px){.searchbtn .sph,.searchbtn kbd{display:none}
  .searchbtn{flex:0 0 40px;max-width:40px;justify-content:center}}

/* ══════════ SCROLLBARS — subtle and consistent ══════════ */
.cmdlist,.mb,.tw,.content{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}
.cmdlist::-webkit-scrollbar,.mb::-webkit-scrollbar,.tw::-webkit-scrollbar{width:9px;height:9px}
.cmdlist::-webkit-scrollbar-track,.mb::-webkit-scrollbar-track,.tw::-webkit-scrollbar-track{background:transparent}
.cmdlist::-webkit-scrollbar-thumb,.mb::-webkit-scrollbar-thumb,.tw::-webkit-scrollbar-thumb{
  background:var(--border-strong);border-radius:var(--r-full);
  border:2.5px solid var(--surface);background-clip:padding-box}
.cmdlist::-webkit-scrollbar-thumb:hover,.mb::-webkit-scrollbar-thumb:hover,
.tw::-webkit-scrollbar-thumb:hover{background:var(--text3);background-clip:padding-box}

/* ══════════ HANDOVER ══════════ */
.hocell{display:flex;align-items:center;gap:var(--s2);min-width:0}
.hoto{display:flex;flex-direction:column;min-width:0;font-size:var(--f11);line-height:1.45}
.hoto b{font-size:var(--f12);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hoto i{font-style:normal;color:var(--text3)}
.hoto .none{color:var(--warn);font-weight:600}
.hobox{display:flex;align-items:center;gap:var(--s4);padding:var(--s4);border-radius:var(--r);
  background:var(--surface2);border:1px solid var(--border);margin-bottom:var(--s4)}
.hoarrow{display:flex;align-items:center;gap:var(--s3);flex:1;min-width:0;justify-content:center}
.hoper{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;min-width:0}
.hoper .pav{width:44px;height:44px;flex:0 0 44px;font-size:var(--f13)}
.hoper b{font-size:var(--f12);font-weight:600}
.hoper i{font-style:normal;font-size:var(--f11);color:var(--text3)}
.hosep{color:var(--text3);flex:0 0 auto}
.hosep svg{width:26px;height:26px;stroke-width:1.6}

/* interpreter table has 7 columns — let it breathe, and scroll rather than crush */
#v-live table{min-width:860px}
@media (max-width:620px){#v-live table{min-width:0}}

/* ══════════ ORDERS ══════════ */
.quotebox{margin-top:var(--s4);padding:var(--s4);border-radius:var(--r);
  background:var(--surface2);border:1px solid var(--border)}
.qrow{display:flex;justify-content:space-between;align-items:center;gap:var(--s3);
  padding:6px 0;font-size:var(--f12)}
.qrow+.qrow{border-top:1px dashed var(--border)}
.qrow .qv{font-weight:600;font-variant-numeric:tabular-nums;direction:ltr;unicode-bidi:isolate}
.qtot{display:flex;justify-content:space-between;align-items:center;gap:var(--s3);
  margin-top:var(--s3);padding-top:var(--s3);border-top:2px solid var(--brand);
  font-size:var(--f16);font-weight:700;color:var(--brand-ink)}
[data-theme="dark"] .qtot{color:var(--a300)}
.qtot .qv{font-size:var(--f20);font-variant-numeric:tabular-nums;direction:ltr;unicode-bidi:isolate}

.timeline{list-style:none;padding:0;margin:0;position:relative}
.timeline::before{content:'';position:absolute;inset-inline-start:8px;top:8px;bottom:12px;
  width:2px;background:var(--border)}
.timeline li{position:relative;padding-inline-start:28px;padding-bottom:var(--s4);font-size:var(--f12)}
.timeline li:last-child{padding-bottom:0}
.timeline li::before{content:'';position:absolute;inset-inline-start:2px;top:5px;width:14px;height:14px;
  border-radius:50%;background:var(--surface);border:2px solid var(--border-strong);z-index:1}
.timeline li.done::before{background:var(--ok);border-color:var(--ok)}
.timeline li.now::before{background:var(--warn);border-color:var(--warn);
  box-shadow:0 0 0 4px var(--warn-bg)}
.timeline li b{display:block;font-weight:600;color:var(--text2)}
.timeline li.done b{color:var(--text)}
.timeline li.now b{color:var(--warn)}
.timeline li i{font-style:normal;font-size:var(--f11);color:var(--text3)}

/* ══════════ DATE RANGE ══════════ */
.daterange{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap;
  background:var(--surface);border:1px solid var(--border);border-radius:var(--r);
  padding:var(--s2) var(--s3);margin-bottom:var(--s4);box-shadow:var(--sh1)}
.daterange>svg{width:17px;height:17px;color:var(--text3);flex:0 0 17px;stroke-width:1.9}
.drseg{display:inline-flex;background:var(--surface3);border-radius:var(--r-sm);padding:3px;gap:2px}
.drseg button{padding:5px var(--s3);border-radius:var(--r-xs);font-size:var(--f12);font-weight:600;
  color:var(--text2);transition:.16s;min-height:30px;white-space:nowrap}
.drseg button[aria-pressed="true"]{background:var(--surface);color:var(--brand);box-shadow:var(--sh1)}
.drlabel{font-size:var(--f12);color:var(--text3);margin-inline-start:auto;white-space:nowrap}
.drlabel b{color:var(--text);font-weight:600}
.cmp{display:inline-flex;align-items:center;gap:4px;font-size:var(--f11);font-weight:700;
  padding:2px 8px;border-radius:var(--r-full)}
.cmp.up{background:var(--ok-bg);color:var(--ok)} .cmp.dn{background:var(--danger-bg);color:var(--danger)}
.cmp svg{width:11px;height:11px;stroke-width:2.6}

/* ══════════ AGEING ══════════ */
.agebar{display:flex;height:26px;border-radius:var(--r-sm);overflow:hidden;
  border:1px solid var(--border);margin:var(--s3) 0}
.agebar i{display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;
  color:#fff;min-width:0;overflow:hidden}
.agelegend{display:flex;flex-wrap:wrap;gap:var(--s3);font-size:var(--f11)}
.agelegend span{display:flex;align-items:center;gap:5px;color:var(--text2)}
.agelegend i{width:10px;height:10px;border-radius:3px;flex:0 0 10px}
.money{font-variant-numeric:tabular-nums;direction:ltr;unicode-bidi:isolate;font-weight:600}
.minibars{display:flex;align-items:flex-end;gap:4px;height:60px;margin-top:var(--s2)}
.minibars i{flex:1;background:var(--a400);border-radius:2px 2px 0 0;min-width:6px;position:relative}
.minibars i.hi{background:var(--brand)}

/* ── utilities: static spacing/flow lifted out of inline styles ── */
.u-m0{margin:0}
.u-mt2{margin-top:var(--s2)}
.u-mt3{margin-top:var(--s3)}
.u-mt4{margin-top:var(--s4)}
.u-mt10{margin-top:10px}
.u-mt22{margin-top:22px}
.u-mt8{margin-top:8px}
.u-mb4{margin-bottom:var(--s4)}
.u-minw0{min-width:0}
.u-col2{display:flex;flex-direction:column;gap:var(--s2)}
.u-col3{display:flex;flex-direction:column;gap:var(--s3)}
.u-row2{display:flex;gap:var(--s2)}
.u-row3{display:flex;gap:var(--s3)}
.u-mxauto{margin:0 auto}
.u-startw{text-align:start}
.tab-badge{margin-inline-start:6px}
.filterfld{margin:0;min-width:220px}
.minselect{min-height:38px;padding:6px 10px}

/* aging buckets (finance) — colour by semantic age; the bar width stays
   data-driven inline, only the palette moves here. */
.agebar i.b-current,.agelegend i.b-current{background:#0F7A4F}
.agebar i.b-30,.agelegend i.b-30{background:#5CCDCE}
.agebar i.b-30{color:#00303F}
.agebar i.b-60,.agelegend i.b-60{background:#B4741F}
.agebar i.b-90_plus,.agelegend i.b-90_plus{background:#A3241F}
.perm-name{font-weight:500}
.u-gap3{gap:var(--s3)}
.u-wrap{display:flex;flex-wrap:wrap;gap:var(--s2) var(--s3)}
.legaltext{white-space:pre-line;max-height:18rem;overflow:auto}
.fileit-on{border-color:var(--brand);background:var(--info-bg)}
.u-mis6{margin-inline-start:6px}
.btn-block{width:100%}
.rows-svc{--lblw:120px;--valw:96px}
.rows-ei{--lblw:110px;--valw:70px;gap:var(--s3)}
.minibar-axis{display:flex;justify-content:space-between;font-size:10px;color:var(--text3);margin-top:5px}
.u-col10{display:flex;flex-direction:column;gap:10px}
.donutwrap{display:flex;align-items:center;gap:var(--s5);flex-wrap:wrap}
.donutlegend{flex:1;min-width:170px;display:flex;flex-direction:column;gap:9px}
.u-mt0{margin-top:0}
.f13{font-size:var(--f13)}
.u-pb0{padding-bottom:0}
.stat .vl.vl-sm{font-size:var(--f26)}
.u-mb3{margin-bottom:var(--s3)}
.u-actionsrow{display:flex;gap:var(--s2);margin-top:var(--s5);flex-wrap:wrap}
.banner-thumb{width:56px;height:36px;object-fit:cover;border-radius:8px;flex:0 0 56px}
.banner-preview{margin-top:8px;max-height:120px;border-radius:10px}
.ellipsis-220{max-width:220px;overflow:hidden;text-overflow:ellipsis}
.u-mt6{margin-top:6px}
.feedlist{display:flex;flex-direction:column;gap:var(--s3);font-size:var(--f12)}
.feedtime{flex:0 0 52px}
.u-colspan{grid-column:1/-1}
.u-mt3{margin-top:var(--s3)}
.filterfld-wide{min-width:240px}
.icon-sprite{position:absolute}

/* Languages: the per-word price edited in its own cell */
.ratecell{display:flex;align-items:center;gap:6px}
.ratecell input{width:96px;text-align:end}
.ratecell small{color:var(--text3);white-space:nowrap}
.mt5{margin-top:var(--s5)}
/* Linguist profile: the CV / certificate list */
.filelist{list-style:none;margin:0 0 var(--s4);padding:0;display:flex;flex-direction:column;gap:var(--s2)}
.filelist li{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);padding:8px 0;border-bottom:1px solid var(--border)}
.filelist li>span{display:flex;flex-direction:column;gap:2px;min-width:0}
.filelist b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* 7 Oct: a name that opens the person's card, and the card's activity lines */
.namebtn{background:none;border:0;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;text-align:start}
.namebtn:hover b,.namebtn:focus-visible b{text-decoration:underline;text-underline-offset:3px}
.kvline{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:7px 0;border-bottom:1px solid var(--border);font-size:var(--f13)}
.kvline:last-child{border-bottom:0}
.copycode{display:inline-flex;align-items:center;gap:8px}
.copycode code{font-size:var(--f16,16px);font-weight:700;letter-spacing:.06em;padding:3px 10px;border-radius:8px;background:var(--surface2,rgba(0,0,0,.05))}
.confqr{width:112px;height:112px;flex:none;background:#fff;padding:4px;border-radius:8px;border:1px solid var(--border)}
.confqr svg{display:block;width:100%;height:100%}
.watch-video{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));background:var(--surface2,rgba(0,0,0,.04));border-radius:12px;padding:10px;min-height:120px}
.watch-video video{width:100%;max-height:60vh;border-radius:10px;background:#000;object-fit:contain}

/* ── responsive.css ── */
/* ══════════════════════════════════════════
   5. RESPONSIVE
   ══════════════════════════════════════════ */
.scrim{position:fixed;inset:0;background:rgba(6,26,33,.55);z-index:35;display:none}
.scrim.on{display:block;animation:fadein .2s var(--ease)}

/* ≤1380 : 3-col stat grids */
@media (max-width:1380px){
  .g-4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .g-21,.g-12{grid-template-columns:minmax(0,1fr)}
}
/* ≤1180 : icon rail */
@media (max-width:1180px) and (min-width:861px){
  :root{--sidew:74px}
  .brandsub,.nav .lab,.nav .tag,.navlbl,.me .info,.compliance span{display:none}
  .logo-full{display:none}
  .logo-mark{display:block;margin:0 auto}
  .brandbar{padding:var(--s5) 0 var(--s4);text-align:center}
  .nav button{justify-content:center;padding:11px 0}
  .nav button::before{inset-inline-start:0;top:6px;bottom:6px}
  .navwrap{padding:var(--s2) var(--s2) var(--s4)}
  .me{justify-content:center;padding:var(--s2) 0}
  .sidefoot{padding:var(--s3) var(--s2)}
  .compliance{justify-content:center;padding:0}
  /* tooltip on rail */
  .nav button{position:relative}
  .nav button::after{content:attr(data-tip);position:absolute;inset-inline-end:calc(100% + 10px);
    top:50%;transform:translateY(-50%);background:var(--b900);color:#fff;font-size:var(--f12);
    padding:5px 11px;border-radius:var(--r-xs);white-space:nowrap;opacity:0;pointer-events:none;
    transition:opacity .15s;box-shadow:var(--sh2);z-index:50}
  .nav button:hover::after,.nav button:focus-visible::after{opacity:1}
}
/* ≤1024 */
@media (max-width:1024px){
  .g-3{grid-template-columns:repeat(2,minmax(0,1fr))}
  .g-2{grid-template-columns:minmax(0,1fr)}
  .content{padding:var(--s5)}
  .topbar{padding:0 var(--s5)}
}
/* ≤860 : drawer */
@media (max-width:860px){
  :root{--sidew:0px;--topbh:58px}
  .shell{grid-template-columns:minmax(0,1fr)}
  /* RTL: drawer is pinned to the RIGHT edge and slides in from the right */
  .side{position:fixed;top:0;bottom:0;right:0;left:auto;width:274px;
    transform:translateX(105%);box-shadow:var(--sh3)}
  .side.open{transform:translateX(0)}
  .main{grid-column:1}
  .burger{display:flex}
  /* Signing out is in the sidebar footer, and here the sidebar is a drawer —
     so the topbar carries it at exactly the widths where the drawer is shut. */
  .tb-logout{display:flex}
  .search{max-width:none}
  .search kbd{display:none}
  .env{display:none}
  .phead h1{font-size:var(--f20)}
  .g-4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .form{grid-template-columns:minmax(0,1fr)}
  .toasts{inset-inline:var(--s4);max-width:none}
}
/* ≤620 : phone */
@media (max-width:620px){
  :root{--s5:16px;--s6:16px}
  .content{padding:var(--s4)}
  .topbar{padding:0 var(--s4);gap:var(--s2)}
  .g-4,.g-3{grid-template-columns:minmax(0,1fr)}
  .rooms{grid-template-columns:minmax(0,1fr)}
  .phead{flex-direction:column;align-items:stretch}
  .pactions{width:100%}
  .pactions .btn{flex:1}
  .stat .vl{font-size:var(--f26)}
  .panel>.ph{padding:var(--s3) var(--s4)}
  .pb{padding:var(--s4)}
  .tabs{padding:0 var(--s3)}
  .mf{flex-direction:column}
  .mf .btn{width:100%}
  .row3{grid-template-columns:minmax(0,1fr) var(--valw,88px);gap:var(--s2) var(--s3)}
  .row3 .track{grid-column:1/-1}
  .mx{grid-template-columns:minmax(0,1fr) 52px}
  .mx input{grid-column:1/-1}

  /* tables → stacked cards */
  .stack thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
  .stack tbody tr{display:block;border:1px solid var(--border);border-radius:var(--r);
    padding:var(--s3);margin-bottom:var(--s3);background:var(--surface)}
  .stack tbody td{display:flex;justify-content:space-between;align-items:center;gap:var(--s3);
    padding:7px 0;border:0;border-bottom:1px dashed var(--border);text-align:end}
  .stack tbody td:last-child{border-bottom:0;padding-bottom:0}
  .stack tbody td::before{content:attr(data-l);font-size:var(--f11);color:var(--text3);
    font-weight:600;text-align:start;flex:0 0 auto}
  .stack tbody td:first-child{padding-top:0}
  .stack tbody td:first-child::before{display:none}
  .stack tbody td:first-child{display:block;text-align:start}
  .stack .btn{width:100%}
}
@media (max-width:860px){
  .roleswitch{padding:0 var(--s2)}
  .roleswitch select{max-width:96px}
}
@media (max-width:620px){
  .roleswitch svg{display:none}
  .pctrl{flex-wrap:wrap}
  .pvol{max-width:none;order:3;width:100%}
  .roomgrid{grid-template-columns:repeat(2,minmax(0,1fr))}

}
@media print{
  .side,.topbar,.pactions,.toasts,.ovl{display:none!important}
  .shell{grid-template-columns:1fr}
  .view{display:block!important}
  .panel{break-inside:avoid;box-shadow:none}
}

/* ── refinements.css ── */
/* ══════════════════════════════════════════════════════════════
   SKIN v2 — «تطوير فخم لنفس الهوية»
   طبقة إعادة تصميم فوق نظام v8. تُحمَّل بعد كل CSS الأساسي.
   المحاور: عمق حقيقي (ظلال طبقية + تدرجات)، هرمية أرقام أقوى،
   لمسة نحاسية (brass) للتمييز، سايدبار أغنى، تنظيف الهيدر.
   ══════════════════════════════════════════════════════════════ */

:root{
  /* لمسة نحاسية هادئة — من روح الخط العربي في الشعار */
  --gold:#C9A96A; --gold-strong:#A98643; --gold-soft:rgba(201,169,106,.16);
  /* ظلال أنعم وأعمق (متعددة الطبقات) */
  --sh1:0 1px 2px rgba(7,42,54,.05), 0 2px 6px rgba(7,42,54,.04);
  --sh2:0 2px 6px rgba(7,42,54,.05), 0 10px 26px rgba(7,42,54,.08);
  --sh3:0 12px 32px rgba(7,42,54,.13), 0 32px 72px rgba(7,42,54,.12);
  --sh-brand:0 6px 18px rgba(0,103,132,.28);
  /* حواف أنعم */
  --r:14px; --r-lg:18px; --r-xl:24px;
  --bg:#F2F6F7;
  --topbh:66px;
}
[data-theme="dark"]{
  --bg:#0A1316; --surface:#101C21; --surface2:#152329; --surface3:#1B2E35;
  --gold:#D6B87C; --gold-strong:#C9A96A; --gold-soft:rgba(214,184,124,.13);
  --sh1:0 1px 2px rgba(0,0,0,.45);
  --sh2:0 4px 14px rgba(0,0,0,.45), 0 12px 32px rgba(0,0,0,.30);
  --sh3:0 18px 48px rgba(0,0,0,.6);
  --sh-brand:0 6px 20px rgba(41,188,189,.22);
}

/* ── خلفية حيّة بدل الرمادي المسطّح ─────────────────────────── */
body{position:relative}
body::before{
  content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:
    radial-gradient(900px 480px at 88% -8%, rgba(18,163,164,.09), transparent 62%),
    radial-gradient(760px 420px at 6% 108%, rgba(201,169,106,.07), transparent 60%),
    var(--bg);
}
[data-theme="dark"] body::before{
  background:
    radial-gradient(900px 480px at 88% -8%, rgba(41,188,189,.07), transparent 62%),
    radial-gradient(760px 420px at 6% 108%, rgba(214,184,124,.05), transparent 60%),
    var(--bg);
}

/* ── إصلاح: إطار الفوكس البرمجي حول عنوان الصفحة ─────────────── */
.phead h1:focus,.phead h1:focus-visible{outline:none;box-shadow:none}

/* ══════════════ السايدبار — أعمق وأغنى ══════════════ */
.side{
  background:
    radial-gradient(420px 260px at 85% -4%, rgba(41,188,189,.14), transparent 64%),
    linear-gradient(170deg,#03222C 0%,#04303D 46%,#065165 100%);
  border-inline-end:1px solid rgba(255,255,255,.05);
  box-shadow:8px 0 32px rgba(3,34,44,.18);
}
[data-theme="dark"] .side{
  background:
    radial-gradient(420px 260px at 85% -4%, rgba(41,188,189,.10), transparent 64%),
    linear-gradient(170deg,#061014 0%,#081C22 50%,#0B2B34 100%);
}
.brandbar{padding:22px 20px 14px;position:relative}
.brandbar::after{
  content:'';position:absolute;inset-inline:20px;bottom:0;height:1px;
  background:linear-gradient(90deg,transparent,rgba(201,169,106,.4),rgba(255,255,255,.14),transparent);
}
.brandsub{color:rgba(201,220,224,.68);letter-spacing:.02em}

.navlbl{color:rgba(201,169,106,.85);letter-spacing:.14em;font-size:9.5px}
.nav :is(button,a){color:#A9CDD3;border-radius:10px;min-height:42px}
.nav :is(button,a):hover{background:rgba(255,255,255,.06);color:#fff;transform:translateX(-2px)}
.nav :is(button,a)[aria-current="page"]{
  background:linear-gradient(270deg,rgba(41,188,189,.22),rgba(41,188,189,.05));
  color:#fff;box-shadow:inset 0 0 0 1px rgba(92,205,206,.22);
}
.nav :is(button,a)[aria-current="page"]::before{
  background:linear-gradient(180deg,var(--gold),var(--a400));
  width:3px;top:8px;bottom:8px;box-shadow:0 0 10px rgba(201,169,106,.55);
}
.nav :is(button,a)[aria-current="page"] svg{color:var(--a300)}
.nav .tag{background:rgba(255,99,88,.22);color:#FFC2BC;box-shadow:0 0 0 1px rgba(255,120,110,.25)}

.sidefoot{border-top:1px solid rgba(255,255,255,.08);
  background:linear-gradient(180deg,transparent,rgba(0,0,0,.16))}
.me{border:1px solid transparent;border-radius:12px}
.me:hover{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.08)}
.me .av{
  background:linear-gradient(140deg,var(--gold) -20%,var(--a400) 55%,var(--a600));
  color:#04222B;box-shadow:0 0 0 2px rgba(255,255,255,.14), 0 3px 10px rgba(0,0,0,.3);
}
.compliance{color:rgba(201,169,106,.66)}

/* ══════════════ الهيدر — أنظف وأهدى ══════════════ */
.topbar{
  height:var(--topbh);
  background:color-mix(in srgb,var(--surface) 78%,transparent);
  backdrop-filter:blur(18px) saturate(1.35);-webkit-backdrop-filter:blur(18px) saturate(1.35);
  border-bottom:0;
}
.topbar::after{
  content:'';position:absolute;inset-inline:0;bottom:0;height:1px;
  background:linear-gradient(90deg,transparent,var(--border) 18%,var(--border) 82%,transparent);
}
.search input{
  border-radius:999px;height:41px;padding-inline:40px 16px;
  background:color-mix(in srgb,var(--surface3) 62%,transparent);
  border-color:transparent;
}
.search input:hover{border-color:var(--border)}
.search input:focus{border-color:var(--accent);background:var(--surface)}
.search kbd{border-radius:999px;padding:2px 8px}
.iconbtn{border-radius:999px}
.env{
  background:var(--gold-soft);color:var(--gold-strong);border-color:transparent;
  box-shadow:inset 0 0 0 1px rgba(201,169,106,.35);letter-spacing:.02em;
}
[data-theme="dark"] .env{color:var(--gold)}

/* ══════════════ منطقة المحتوى ══════════════ */
.content{max-width:1440px;margin-inline:auto;padding:28px 32px 48px}

/* عنوان الصفحة — حضور أقوى */
.phead{margin-bottom:26px}
.phead h1{font-size:30px;font-weight:800;letter-spacing:-.02em;position:relative}
.phead .sub{margin-top:5px}
.crumbs{margin-bottom:7px}

/* ══════════════ الأزرار ══════════════ */
.btn{
  background:linear-gradient(140deg,var(--b600),var(--b700) 60%,var(--b800));
  border-radius:11px;box-shadow:var(--sh-brand);
  min-height:41px;font-weight:700;letter-spacing:.01em;
}
.btn:hover{background:linear-gradient(140deg,var(--b500),var(--b700) 65%,var(--b800));
  transform:translateY(-1px);box-shadow:0 10px 26px rgba(0,103,132,.34)}
[data-theme="dark"] .btn{
  background:linear-gradient(140deg,var(--a400),var(--a500) 60%,var(--a600));
  color:#04222B;box-shadow:0 6px 20px rgba(41,188,189,.25);
}
[data-theme="dark"] .btn:hover{background:linear-gradient(140deg,#7BD8D9,var(--a500) 65%,var(--a600))}
.btn.ghost{background:var(--surface);box-shadow:var(--sh1);border-color:var(--border-strong);border-radius:11px}
.btn.ghost:hover{box-shadow:var(--sh2);background:var(--surface);color:var(--brand);border-color:var(--brand)}
[data-theme="dark"] .btn.ghost{background:var(--surface2);color:var(--text)}
.btn.danger{background:linear-gradient(140deg,#C93732,#A32420);box-shadow:0 6px 18px rgba(176,42,38,.3)}
.btn.sm{border-radius:9px;min-height:32px}

/* ══════════════ الأسطح والكروت ══════════════ */
.panel{
  border-radius:var(--r-lg);
  border-color:color-mix(in srgb,var(--border) 72%,transparent);
  box-shadow:var(--sh1);
  transition:box-shadow .22s var(--ease);
}
.panel:hover{box-shadow:var(--sh2)}
.panel>.ph{
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface2) 55%,transparent),transparent);
  border-bottom-color:color-mix(in srgb,var(--border) 80%,transparent);
  padding:15px 22px;
}
.panel>.ph h2{font-size:14.5px;font-weight:700;display:flex;align-items:center;gap:9px}
.panel>.ph h2::before{
  content:'';width:4px;height:16px;border-radius:99px;flex:0 0 4px;
  background:linear-gradient(180deg,var(--a500),var(--b700));
}
[data-theme="dark"] .panel>.ph h2::before{background:linear-gradient(180deg,var(--a400),var(--a600))}

/* ══════════════ كروت الإحصاء — الهرمية الجديدة ══════════════ */
.stat{
  border-radius:var(--r-lg);padding:20px 22px 18px;
  border-color:color-mix(in srgb,var(--border) 70%,transparent);
  box-shadow:var(--sh1);
  transition:transform .22s var(--ease), box-shadow .22s var(--ease);
}
/* 7 Oct: every card lifted on hover, so every card looked clickable. Only a
   card that goes somewhere (a.stat / button.stat) lifts now. */
a.stat,button.stat{display:block;width:100%;text-align:start;font:inherit;color:inherit;text-decoration:none;cursor:pointer}
a.stat:hover,button.stat:hover{transform:translateY(-3px);box-shadow:var(--sh2)}
a.stat:focus-visible,button.stat:focus-visible{outline:2px solid var(--a400,#3BB5B8);outline-offset:3px}
.stat.on{box-shadow:0 0 0 2px var(--b600) inset, var(--sh2)}
.stat::after{display:none}
.stat .lb{font-size:12px;font-weight:600;color:var(--text2);letter-spacing:.01em}
.stat .vl{
  font-size:38px;font-weight:800;letter-spacing:-.03em;line-height:1.08;
  background:linear-gradient(150deg,var(--b800),var(--b600) 70%);
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;
}
.stat .vl .u{-webkit-text-fill-color:var(--text3);font-size:13px;font-weight:500}
.stat .vl[style*="--ok"]{background:linear-gradient(150deg,#0A5C3C,#18996A);
  -webkit-background-clip:text;background-clip:text}
[data-theme="dark"] .stat .vl{
  background:linear-gradient(150deg,#DFF6F6,var(--a300) 70%);
  -webkit-background-clip:text;background-clip:text;
}

/* الكرت البطل — خلفية علامة كاملة */
.stat.hi{
  background:
    radial-gradient(340px 200px at 88% -12%, rgba(92,205,206,.30), transparent 62%),
    radial-gradient(280px 190px at -6% 112%, rgba(201,169,106,.16), transparent 58%),
    linear-gradient(150deg,#05384A 0%,#00546C 55%,#03718B 100%);
  border-color:rgba(255,255,255,.10);
  box-shadow:0 14px 34px rgba(4,56,74,.34), 0 3px 10px rgba(4,56,74,.22);
}
a.stat.hi:hover,button.stat.hi:hover{box-shadow:0 20px 46px rgba(4,56,74,.42), 0 4px 12px rgba(4,56,74,.24)}
[data-theme="dark"] .stat.hi{
  background:
    radial-gradient(340px 200px at 88% -12%, rgba(92,205,206,.20), transparent 62%),
    radial-gradient(280px 190px at -6% 112%, rgba(214,184,124,.12), transparent 58%),
    linear-gradient(150deg,#0A2A35 0%,#0D3D4D 55%,#0F5568 100%);
  border-color:rgba(92,205,206,.22);
}
.stat.hi .lb{color:#A9D8DE}
.stat.hi .lb svg{color:var(--gold)}
.stat.hi .vl{
  background:linear-gradient(150deg,#FFFFFF,#B5E9EA 80%);
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;
}
.stat.hi .vl .u{-webkit-text-fill-color:#8FC4CC}
.stat.hi .ft{color:#B7E3E8}
.stat.hi .ft.t-ok{color:#7BE3B4}
.stat.hi .msp i{background:linear-gradient(180deg,var(--gold),rgba(201,169,106,.45))!important;opacity:.95}

/* أشرطة السبارك والمسارات */
.msp{height:26px;gap:3px;margin-top:12px}
.msp i{border-radius:3px 3px 0 0}
.track{height:8px;background:color-mix(in srgb,var(--surface3) 80%,transparent);
  box-shadow:inset 0 1px 2px rgba(7,42,54,.08)}
.track>i{background:linear-gradient(90deg,var(--b600),var(--a500));
  box-shadow:0 0 8px rgba(41,188,189,.35)}
.track.ok>i{background:linear-gradient(90deg,#0F7A4F,#2EC584);box-shadow:0 0 8px rgba(46,197,132,.3)}
.track.warn>i{background:linear-gradient(90deg,#B4741F,#EBAE54)}
.track.bad>i{background:linear-gradient(90deg,#A3241F,#E05A52)}

/* ══════════════ الجداول ══════════════ */
thead th{
  font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;
  color:var(--text3);
  background:color-mix(in srgb,var(--surface2) 72%,transparent);
  padding:11px 22px;
}
tbody td{padding:14px 22px}
tr.clk{transition:background .14s var(--ease)}
tr.clk:hover td{background:color-mix(in srgb,var(--a100) 34%,transparent)}
[data-theme="dark"] tr.clk:hover td{background:rgba(41,188,189,.07)}

/* ══════════════ الشرائح والفلاتر ══════════════ */
.seg,.drseg{border-radius:999px;padding:3px;background:color-mix(in srgb,var(--surface3) 80%,transparent);
  box-shadow:inset 0 1px 3px rgba(7,42,54,.07)}
.seg button,.drseg button{border-radius:999px;padding-inline:14px}
.seg button[aria-pressed="true"],.drseg button[aria-pressed="true"]{
  background:var(--surface);color:var(--brand);box-shadow:0 1px 4px rgba(7,42,54,.14);
  font-weight:700;
}
[data-theme="dark"] .seg button[aria-pressed="true"],
[data-theme="dark"] .drseg button[aria-pressed="true"]{background:var(--surface3);color:var(--a300)}

/* الشارات والنقاط الحية */
.chip,.pill{font-weight:600}
.livedot{box-shadow:0 0 0 3px rgba(217,73,66,.18), 0 0 10px rgba(217,73,66,.5)}

/* ══════════════ حركة دخول الشاشات ══════════════ */
/* The entrance fade is gone, and cannot come back here.
 *
 * `.view.on` is the root element of thirteen dashboard screens — orders,
 * order detail, conferences, settings and the rest — so the animation was
 * attached to the very node Livewire owns. Every time that node is replaced
 * the whole page faded from nothing over a third of a second, and when
 * something replaced it repeatedly the content strobed: Alaa filmed the
 * conference screen blanking and returning about three times a second
 * (21 Sep), and Mahmoud reported the same thing on orders a day earlier.
 *
 * Measured from his recording: the browser's own chrome, the sidebar and the
 * topbar were pixel-identical through it, while the content area's contrast
 * collapsed by a quarter and climbed back over ~0.34s — this animation's
 * exact duration.
 *
 * An entrance animation belongs to something that enters once. A screen a
 * framework re-renders is not that, so the page simply appears. */

/* ══════════════ النوافذ والعناصر العائمة ══════════════ */
.modal,.ovl>*{border-radius:var(--r-xl)}
/* The Livewire dialogs wrap .mb/.mf in a <form>; it has to take part in the
   column layout or the body never shrinks and the footer overflows the panel. */
.modal>form{display:flex;flex-direction:column;min-height:0;flex:1}
.modal .mb{min-height:0}
.modal .mf{flex:0 0 auto}
.cmdbox{border-radius:var(--r-lg);box-shadow:var(--sh3)}

/* أعمدة الرسوم الصغيرة */
.minibars i{background:linear-gradient(180deg,var(--a500),var(--b600))!important;
  border-radius:4px 4px 0 0;box-shadow:0 2px 6px rgba(18,163,164,.22)}
.navwrap{padding-bottom:26px}

/* لمسات دقيقة */
::selection{background:rgba(41,188,189,.28)}
.note{border-radius:14px}
.emptystate svg{opacity:.3}

/* جرس الإشعارات (22 أكتوبر) */
.nbell{position:relative}
.nbell-count{position:absolute;top:4px;inset-inline-end:3px;min-width:17px;height:17px;padding:0 4px;
  border-radius:var(--r-full);background:var(--danger);color:#fff;font-size:10px;font-weight:700;
  display:grid;place-items:center;border:1.5px solid var(--surface);line-height:1}
.nbell-pop{position:absolute;top:46px;inset-inline-end:0;width:min(360px,calc(100vw - 32px));max-height:70vh;overflow:auto;
  background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:0 12px 32px rgba(0,0,0,.14);z-index:60}
.nbell-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;border-bottom:1px solid var(--border)}
.nbell-item{display:flex;flex-direction:column;gap:3px;width:100%;text-align:start;padding:11px 14px;border-bottom:1px solid var(--border);color:var(--text2)}
.nbell-item:hover{background:var(--surface3)}
.nbell-item.unread{color:var(--text);background:var(--surface2)}
.nbell-item.unread span{font-weight:600}
.nbell-item small{color:var(--text3,var(--text2));font-size:11px}
.nbell-empty{padding:22px 14px;text-align:center;color:var(--text2)}

/* ── app.css ── */
/* ══════════════════════════════════════════
   6. APPLICATION ADDITIONS
   Everything the real dashboard needs that the static prototype had no
   occasion for: the login screen, pagination, validation errors, Livewire's
   loading state, and a couple of table affordances. Tokens only — no new
   colours, no new type scale.
   ══════════════════════════════════════════ */

/* Always reserve the scrollbar's column, whether or not it is showing.
 *
 * Without this the page width changes by the scrollbar's 15px the moment
 * content stops or starts overflowing — and the sidebar's width is decided by
 * a width media query at 1180px. Between roughly 1181 and 1195 the two chase
 * each other: no scrollbar, so the page is 1190 wide, so the sidebar takes its
 * full 264px, so the content column is narrow, so the content is tall enough
 * to overflow; the scrollbar appears, the page is now 1175, the query flips,
 * the sidebar collapses to 74px, the content column gains 190px, the content
 * fits again, the scrollbar goes — and round it goes, every frame.
 *
 * Mahmoud saw the sidebar shivering and could not land a click on anything,
 * which is what a navigation column jumping between two widths does. Holding
 * the gutter open breaks the loop at its only moving part. */
html{scrollbar-gutter:stable}

/* The prototype was Arabic-only and pinned the body to RTL. The real dashboard
   ships an ar/en switch, so the body follows the document's `dir` attribute. */
body{direction:inherit}

/* The prototype parked the skip link at `right:-9999px`, which is off-screen in
   RTL but 9999px of horizontal overflow in LTR. Hiding it above the viewport
   instead works in both directions. */
.skip{inset-inline-start:var(--s4);inset-inline-end:auto;right:auto;left:auto;top:-100px}
.skip:focus{inset-inline-start:var(--s4);right:auto;top:var(--s2)}

/* The sidebar brand is a link home; the prototype's div was already block. */
.brandbar .logo-full{display:block}

/* ── login ── */
.authwrap{min-height:100vh;display:grid;place-items:center;padding:var(--s6);
  background:linear-gradient(168deg,var(--b900) 0%,var(--b800) 45%,var(--b700) 100%)}
[data-theme="dark"] .authwrap{background:linear-gradient(168deg,#08171C 0%,#0C232B 50%,#0E2F38 100%)}
.authcard{width:min(430px,100%);background:var(--surface);border:1px solid var(--border);
  border-radius:var(--r-lg);box-shadow:var(--sh3);overflow:hidden}
.authhd{padding:var(--s6) var(--s6) var(--s4);text-align:center}
.authhd .logo-full{display:block;margin:0 auto var(--s4)}
.authhd h1{font-size:var(--f20);margin-bottom:4px}
.authhd p{font-size:var(--f12);color:var(--text3)}
.authbd{padding:0 var(--s6) var(--s6);display:flex;flex-direction:column;gap:var(--s4)}
.authbd .btn{width:100%;justify-content:center;min-height:44px}
.authfoot{padding:var(--s4) var(--s6);border-top:1px solid var(--border);background:var(--surface2);
  display:flex;align-items:center;justify-content:space-between;gap:var(--s3);font-size:var(--f12);color:var(--text3)}
.authfoot form{display:flex;gap:var(--s2)}
.authfoot button{padding:6px 12px;border-radius:var(--r-sm);border:1px solid var(--border);
  background:var(--surface);font-size:var(--f12);min-height:34px}
.authfoot button[aria-pressed="true"]{background:var(--brand);color:#fff;border-color:var(--brand)}

/* ── validation ── */
.err{display:block;margin-top:5px;font-size:var(--f12);color:var(--danger);font-weight:500}
.fld input[aria-invalid="true"],.fld select[aria-invalid="true"],.fld textarea[aria-invalid="true"]{
  border-color:var(--danger);box-shadow:0 0 0 3px var(--danger-bg)}

/* ── pagination ── */
.pager{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);
  padding:var(--s3) var(--s5);border-top:1px solid var(--border);font-size:var(--f12);color:var(--text3);flex-wrap:wrap}
.pager .pgbtns{display:flex;gap:var(--s2)}

/* ── Livewire loading ── */
[wire\:loading]{opacity:.55;transition:opacity var(--dur) var(--ease)}
.busy{position:relative}
.busy::after{content:'';position:absolute;inset-inline-end:var(--s4);top:var(--s4);width:14px;height:14px;
  border-radius:50%;border:2px solid var(--border);border-top-color:var(--brand);animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.busy::after{animation:none}}

/* ── touch targets: WCAG 2.2 AA (2.5.8) ── */
.btn,.iconbtn,.tabs button,.seg button,.drseg button,.tg,.nav :is(button,a),.pager button,.rmbtn,.cmdit{
  min-height:44px}
.btn.sm{min-height:36px;padding-inline:12px}
@media (pointer:coarse){.btn.sm,.tabs button,.seg button,.drseg button{min-height:44px}}

/* ── table affordances the prototype faked with onclick ── */
tr.clk[data-href]{cursor:pointer}
.tw table{width:100%}
.pb.tight{padding-top:0}

/* ── custom period range ── */
.drcustom{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap}
.drcustom input{padding:7px 10px;border:1px solid var(--border);border-radius:var(--r-sm);
  background:var(--surface);font-size:var(--f12);min-height:38px}

/* ── report output ── */
.reportout{overflow-x:auto}
.reportout table{min-width:520px}
.kv{display:flex;flex-direction:column;gap:2px;font-size:var(--f12);margin:0}
.kv>div{display:flex;justify-content:space-between;gap:var(--s3);padding:7px 0;border-bottom:1px dashed var(--border)}
.kv>div:last-child{border-bottom:0}
.kv dt{color:var(--text3)}
.kv dd{font-weight:600}

/* activity log details: "label: value · label: value" on one line, wrapping */
td .logkv{white-space:nowrap}
td .logkv-l{color:var(--text3)}

/* floor source page (venue device) */
.floor-state{display:flex;align-items:center;gap:var(--s3);flex-wrap:wrap}
.floor-msg{font-size:var(--f13);color:var(--text2)}
[data-floor-state="live"] .floor-msg{color:var(--text)}

/* remote speaker page (public link) */
.authcard.wide{width:min(560px,100%)}
.floor-preview{border-radius:var(--r);overflow:hidden;background:#000;aspect-ratio:16/9}
.floor-preview video{display:block;width:100%;height:100%;object-fit:cover}
/* a person facing their own laptop expects a mirror; a hall camera does not */
.authcard .floor-preview video{transform:scaleX(-1)}
[data-speaker-card] .u-grow{flex:1;min-width:0}
.speaker-link{display:flex;gap:var(--s2);align-items:center;flex-wrap:wrap}
.speaker-link code{flex:1;min-width:0;font-size:var(--f12);word-break:break-all;direction:ltr;text-align:left;padding:6px 8px;border:1px solid var(--border);border-radius:6px;background:var(--surface2,transparent)}

