/* ==========================================================================
   OMNETRA CRM v2.0.0 — stylesheet
   Built to the supplied Leads and Monitoring mockups.
   ========================================================================== */
:root{
  --sb:#0E1626; --sb-2:#18223A; --sb-3:#212C48; --sb-line:#1E2942;
  --sb-tx:#94A3B8; --sb-hi:#FFFFFF;
  --red:#EF3E45; --red-2:#D92F36; --red-soft:#FEECED; --red-ring:rgba(239,62,69,.14);
  --bg:#F7F8FA; --card:#FFFFFF; --line:#EAECF0; --line-2:#F3F4F7;
  --ink:#111827; --ink-2:#374151; --mute:#6B7280; --mute-2:#9CA3AF; --mute-3:#C4C9D2;
  --blue:#3B82F6;   --blue-soft:#EAF2FE;
  --green:#10B981;  --green-soft:#E7F8F1;
  --amber:#F59E0B;  --amber-soft:#FEF4E4;
  --violet:#8B5CF6; --violet-soft:#F1ECFE;
  --pink:#EC4899;   --pink-soft:#FDECF4;
  --teal:#14B8A6;   --teal-soft:#E5F8F5;
  --orange:#F97316; --orange-soft:#FEF0E6;
  --indigo:#6366F1; --indigo-soft:#ECEDFE;
  --cyan:#06B6D4;   --cyan-soft:#E3F7FB;
  --grey:#9CA3AF;   --grey-soft:#F1F2F5;
  --r:12px; --r-lg:14px; --r-sm:9px;
  --sh:0 1px 2px rgba(16,24,40,.04),0 1px 3px rgba(16,24,40,.05);
  --sh-lg:0 8px 28px rgba(16,24,40,.10);
  --sbw:196px; --tb:60px;
}
*{box-sizing:border-box;margin:0;padding:0}
body{
  font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  background:var(--bg);color:var(--ink);font-size:13px;line-height:1.45;
  -webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums;
}
.n{font-variant-numeric:tabular-nums}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
a{color:inherit;text-decoration:none}
input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--red);outline-offset:2px;border-radius:5px}
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-thumb{background:#D3D8E0;border-radius:9px;border:2px solid transparent;background-clip:content-box}
::-webkit-scrollbar-track{background:transparent}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.sp{flex:1}

/* ======================= SHELL ======================= */
.app{display:flex;min-height:100vh}
.sb{width:var(--sbw);flex:0 0 var(--sbw);background:var(--sb);position:sticky;top:0;height:100vh;
  display:flex;flex-direction:column;z-index:50}
.sb-top{display:flex;align-items:center;gap:9px;height:var(--tb);padding:0 16px;flex:0 0 var(--tb)}
.sb-top svg.logo,.sb-top img.logo{width:26px;height:26px;flex:0 0 26px}
/* The real mark is a round emblem on a dark plate; the radius keeps its own
   edge from squaring off against the sidebar. */
.sb-top img.logo{border-radius:50%;object-fit:cover}
.sb-top b{font-size:16px;font-weight:700;color:#fff;letter-spacing:-.35px;white-space:nowrap}
.sb-top small{display:block;font-size:8px;color:#5F6E88;letter-spacing:.9px;font-weight:600;margin-top:-1px}
.sb-nav{flex:1;overflow-y:auto;padding:6px 10px 10px}
.sb-nav::-webkit-scrollbar{width:0}
.nv{display:flex;align-items:center;gap:11px;width:100%;padding:9px 11px;border-radius:10px;
  color:var(--sb-tx);font-size:13px;font-weight:500;margin-bottom:2px;transition:.13s;text-align:left}
.nv:hover{background:var(--sb-2);color:#CBD5E1}
.nv.on{background:var(--red);color:#fff;font-weight:600;box-shadow:0 2px 8px rgba(239,62,69,.32)}
.nv svg{flex:0 0 17px;width:17px;height:17px;stroke-width:1.85}
.nv span{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nv .bg{font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:20px;background:var(--red);color:#fff}
.nv.on .bg{background:rgba(255,255,255,.28)}
.nv .ai{font-size:9.5px;font-weight:700;padding:1.5px 7px;border-radius:20px;
  background:linear-gradient(100deg,var(--red),var(--pink));color:#fff;letter-spacing:.3px}
.nv .cv{width:13px;height:13px;flex:0 0 13px;opacity:.55;transition:transform .17s}
.nv[aria-expanded="true"] .cv{transform:rotate(180deg)}
.sub{overflow:hidden;max-height:0;transition:max-height .22s ease}
.sub.open{max-height:420px}
.sub a{display:block;padding:7px 11px 7px 39px;border-radius:9px;font-size:12.5px;color:#7E8CA3;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sub a:hover{background:var(--sb-2);color:#C3CEDF}
.sub a.on{color:#fff;background:var(--sb-3);font-weight:600}
.sb-bot{padding:10px;border-top:1px solid var(--sb-line);flex:0 0 auto}
.up{background:linear-gradient(165deg,#FFF4F4,#FDE9EA);border-radius:12px;padding:14px 12px;text-align:center;
  margin-bottom:10px}
.up .cr{width:26px;height:26px;margin:0 auto 7px;display:grid;place-items:center;border-radius:50%;
  background:var(--red-soft);color:var(--red)}
.up .cr svg{width:15px;height:15px}
.up b{font-size:12px;font-weight:700;color:var(--ink);display:block}
.up p{font-size:10px;color:var(--mute);margin:3px 0 9px;line-height:1.4}
.up a{display:block;background:var(--red);color:#fff;border-radius:8px;padding:7px;font-size:11.5px;font-weight:600}
.up a:hover{background:var(--red-2)}
.lm{display:flex;align-items:center;gap:9px;background:var(--sb-2);border-radius:10px;padding:9px 11px;
  color:var(--sb-tx);font-size:12px;font-weight:500;width:100%}
.lm svg{width:14px;height:14px}
.tg{width:30px;height:17px;border-radius:20px;background:#2C3852;position:relative;flex:0 0 30px;margin-left:auto}
.tg:after{content:'';position:absolute;top:2px;left:2px;width:13px;height:13px;border-radius:50%;background:#8494AD;
  transition:.16s}
.tg.on{background:var(--red)}
.tg.on:after{transform:translateX(13px);background:#fff}
.sb-ver{display:flex;align-items:center;gap:8px;padding:11px 4px 2px}
.sb-ver svg{width:19px;height:19px;flex:0 0 19px}
.sb-ver b{font-size:11.5px;color:#B7C1D1;font-weight:600;display:block;line-height:1.25}
.sb-ver small{font-size:9.5px;color:#5F6E88}
.sb-me{display:flex;align-items:center;gap:9px;padding:10px 4px 2px}
.sb-me .av{width:32px;height:32px;flex:0 0 32px}
.sb-me b{font-size:12px;font-weight:600;color:#E2E8F0;display:block;line-height:1.3}
.sb-me small{font-size:10px;color:#6B7A93}
.sb-me svg{width:13px;height:13px;color:#6B7A93;margin-left:auto}

/* ======================= TOPBAR ======================= */
.mn{flex:1;min-width:0;display:flex;flex-direction:column}
.tb{height:var(--tb);background:var(--card);border-bottom:1px solid var(--line);display:flex;align-items:center;
  gap:14px;padding:0 20px;position:sticky;top:0;z-index:40}
.burger{width:32px;height:32px;border-radius:8px;display:grid;place-items:center;color:var(--ink-2);flex:0 0 32px}
.burger:hover{background:var(--grey-soft)}
.burger svg{width:18px;height:18px;stroke-width:2}
.tb-h b{font-size:17px;font-weight:700;letter-spacing:-.35px;display:block;line-height:1.2}
.tb-h small{font-size:11.5px;color:var(--mute);display:block}
/* campaign / project scope selector — the global control from the mockup */
.scope{display:flex;align-items:center;gap:10px;border:2px solid var(--red);border-radius:11px;
  padding:7px 13px;background:var(--card);min-width:236px;transition:.14s}
.scope:hover{background:#FFFBFB;box-shadow:0 0 0 3px var(--red-ring)}
.scope>svg:first-child{width:17px;height:17px;flex:0 0 17px;color:var(--red);stroke-width:1.9}
.scope .tx{flex:1;min-width:0;text-align:left}
.scope .tx small{display:block;font-size:9.5px;color:var(--mute-2);font-weight:500;line-height:1.2}
.scope .tx b{display:block;font-size:13.5px;font-weight:600;letter-spacing:-.15px;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
.scope .cv{width:15px;height:15px;flex:0 0 15px;color:var(--mute-2);stroke-width:2}
.sch{display:flex;align-items:center;gap:9px;background:#F6F7F9;border:1px solid var(--line);border-radius:10px;
  padding:0 12px;height:38px;flex:1;max-width:400px;min-width:0}
.sch:focus-within{background:#fff;border-color:var(--mute-3);box-shadow:0 0 0 3px rgba(59,130,246,.08)}
.sch svg{width:16px;height:16px;stroke-width:2;color:var(--mute-2);flex:0 0 16px}
.sch input{border:none;outline:none;background:none;flex:1;font-size:13px;min-width:0;width:100%}
.sch kbd{font-size:10px;color:var(--mute-2);background:var(--card);border:1px solid var(--line);border-radius:5px;
  padding:2px 5px;font-family:inherit;font-weight:600;white-space:nowrap}
.ib{width:36px;height:36px;border-radius:9px;display:grid;place-items:center;color:var(--ink-2);position:relative;
  flex:0 0 36px}
.ib:hover{background:var(--grey-soft)}
.ib svg{width:18px;height:18px;stroke-width:1.85}
.bdg{position:absolute;top:0;right:0;min-width:17px;height:17px;padding:0 4px;border-radius:20px;background:var(--red);
  color:#fff;font-size:9.5px;font-weight:700;display:grid;place-items:center;border:2px solid var(--card)}
.bdg.g{background:var(--green)}
.dr{display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:10px;padding:8px 12px;
  font-size:12.5px;font-weight:500;color:var(--ink-2);white-space:nowrap}
.dr:hover{border-color:var(--mute-3)}
.dr svg{width:15px;height:15px;stroke-width:1.9;color:var(--mute-2)}
.usr{display:flex;align-items:center;gap:10px;padding-left:6px}
.usr .tx{text-align:right}
.usr .tx b{font-size:12.5px;font-weight:600;display:block;line-height:1.25;white-space:nowrap}
.usr .tx small{font-size:10.5px;color:var(--mute);white-space:nowrap}
.usr svg{width:14px;height:14px;color:var(--mute-2)}
.av{border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:700;flex-shrink:0;
  width:34px;height:34px;color:#fff;background:linear-gradient(140deg,#4B5A72,#232F45);overflow:hidden}
.av.s{width:26px;height:26px;font-size:9.5px}
.av.m{width:38px;height:38px;font-size:12px}
.av.l{width:46px;height:46px;font-size:14px}

/* ======================= PAGE ======================= */
.pg{padding:22px 24px 34px;flex:1}
.ph{display:flex;align-items:flex-start;gap:16px;margin-bottom:18px;flex-wrap:wrap}
.ph h1{font-size:22px;font-weight:700;letter-spacing:-.55px;line-height:1.2}
.ph p{font-size:13px;color:var(--mute);margin-top:3px;max-width:70ch}
.ph .ac{display:flex;gap:9px;flex-wrap:wrap;align-items:center}
.bt{display:inline-flex;align-items:center;gap:7px;background:var(--red);color:#fff;border-radius:9px;
  padding:9px 15px;font-size:13px;font-weight:600;box-shadow:0 1px 3px rgba(239,62,69,.3);transition:.13s;
  white-space:nowrap}
.bt:hover{background:var(--red-2)}
.bt svg{width:15px;height:15px;stroke-width:2.2}
.bt.o{background:var(--card);color:var(--ink-2);border:1px solid var(--line);box-shadow:none;font-weight:500}
.bt.o:hover{background:#FAFBFC;border-color:var(--mute-3)}
.bt.d{background:var(--sb);box-shadow:none}
.bt.d:hover{background:var(--sb-3)}
.bt.s{padding:7px 12px;font-size:12px}
.bt.xs{padding:5px 10px;font-size:11.5px;border-radius:8px}
.bt.bl{width:100%;justify-content:center}
.lk{font-size:12.5px;font-weight:600;color:var(--red);display:inline-flex;align-items:center;gap:5px}
.lk svg{width:14px;height:14px;stroke-width:2.3}
.lb{font-size:10.5px;font-weight:600;color:var(--mute-2);letter-spacing:.35px}
.h2{font-size:15px;font-weight:700;letter-spacing:-.3px;margin:22px 0 11px}

/* ======================= GRID / CARD ======================= */
.gr{display:grid;gap:14px;margin-bottom:14px}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.g5{grid-template-columns:repeat(5,minmax(0,1fr))}
.g6{grid-template-columns:repeat(6,minmax(0,1fr))}
.g21{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}
.g12{grid-template-columns:minmax(0,1fr) minmax(0,2fr)}
/* Main column + fixed sidebar. `align-items:start` matters: the two columns
   hold unrelated content, so stretching the shorter one to match the taller
   left the AI Copilot card 988px tall around 448px of content — half a screen
   of dead white. The symmetric grids above keep stretching, because there
   equal-height cards in a row are the point. */
.gsd{grid-template-columns:minmax(0,1fr) 336px;align-items:start}
.cd{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);
  display:flex;flex-direction:column;min-width:0}
.cd-h{display:flex;align-items:center;gap:10px;padding:14px 16px;flex:0 0 auto;flex-wrap:wrap}
.cd-h.bd{border-bottom:1px solid var(--line-2)}
.cd-h h3{font-size:14px;font-weight:700;letter-spacing:-.25px}
.cd-h small{font-size:11.5px;color:var(--mute);font-weight:400}
.cd-b{padding:16px;flex:1;min-width:0}
.cd-b.t{padding:4px 16px 12px}
.cd-b.f{padding:0}
.cd-f{padding:13px 16px;border-top:1px solid var(--line-2);flex:0 0 auto}
.lv{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;color:var(--green)}
.lv i{width:6px;height:6px;border-radius:50%;background:var(--green);animation:bl 1.9s infinite}
@keyframes bl{0%,100%{opacity:1}50%{opacity:.25}}
.mi{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:500;color:var(--mute);
  padding:5px 8px;border-radius:8px}
.mi:hover{background:var(--grey-soft);color:var(--ink-2)}
.mi svg{width:13px;height:13px;stroke-width:2.2}
.mi.on{background:var(--red-soft);color:var(--red)}
.seg{display:flex;gap:2px;background:var(--grey-soft);border-radius:9px;padding:3px}
.seg button,.seg a{width:32px;height:28px;border-radius:7px;display:grid;place-items:center;color:var(--mute)}
.seg button.on,.seg a.on{background:var(--red);color:#fff}
.seg svg{width:15px;height:15px;stroke-width:1.9}

/* ======================= KPI ======================= */
.kp{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);
  padding:16px;position:relative}
.kp .ico{width:42px;height:42px;border-radius:11px;display:grid;place-items:center;margin-bottom:12px}
.kp .ico svg{width:20px;height:20px;stroke-width:2}
.kp .lb2{font-size:12px;color:var(--mute);font-weight:500}
.kp .vv{font-size:24px;font-weight:700;letter-spacing:-.85px;line-height:1.2;margin-top:3px}
.kp .dl{display:flex;align-items:center;gap:4px;font-size:11px;font-weight:600;margin-top:6px}
.kp .dl svg{width:11px;height:11px;stroke-width:3}
.kp .dl em{color:var(--mute-2);font-style:normal;font-weight:500}
.kp .nfo{position:absolute;top:14px;right:14px;width:16px;height:16px;border-radius:50%;color:var(--mute-3)}
.kp .nfo:hover{color:var(--mute)}
.kp .nfo svg{width:15px;height:15px}
.up-c{color:var(--green)} .dn-c{color:var(--red)}
/* KPI variant with icon on the left, from the monitoring mockup */
.kp.row{display:flex;align-items:center;gap:13px;padding:15px 16px}
.kp.row .ico{margin:0;flex:0 0 46px;width:46px;height:46px;border-radius:12px}
.kp.row .ico svg{width:22px;height:22px}
.kp.row .vv{font-size:23px;margin-top:1px}
.kp.row .dl{margin-top:3px}

/* ======================= PROJECT CHIP ROW ======================= */
.pjw{display:flex;gap:12px;align-items:stretch;margin-bottom:16px}
.pjs{display:flex;gap:12px;overflow-x:auto;flex:1;padding:2px;scroll-behavior:smooth}
.pjs::-webkit-scrollbar{height:0}
.pj{display:flex;align-items:center;gap:11px;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r);padding:13px 15px;min-width:198px;flex:0 0 auto;transition:.14s;text-align:left}
.pj:hover{border-color:var(--mute-3);box-shadow:var(--sh)}
.pj.on{border:2px solid var(--red);padding:12px 14px;box-shadow:0 0 0 3px var(--red-ring)}
.pj .ico{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;flex:0 0 38px}
.pj .ico svg{width:18px;height:18px;stroke-width:1.95}
.pj b{font-size:13px;font-weight:600;display:block;letter-spacing:-.15px;white-space:nowrap}
.pj small{font-size:11px;color:var(--mute);display:block;margin-top:1px}
.pj small b{display:inline;font-size:11px;font-weight:700;color:var(--ink-2)}
.pjn{width:38px;flex:0 0 38px;border:1px solid var(--line);border-radius:10px;background:var(--card);
  display:grid;place-items:center;color:var(--ink-2)}
.pjn:hover{background:var(--grey-soft)}
.pjn svg{width:16px;height:16px;stroke-width:2.2}

/* ======================= FILTER BAR ======================= */
.fb{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);
  padding:14px 16px;display:flex;gap:14px;align-items:flex-end;flex-wrap:wrap;margin-bottom:14px}
.fi{display:flex;flex-direction:column;gap:5px;min-width:0}
.fi>label{font-size:11px;color:var(--mute);font-weight:500}
.fb .fi>div{flex-wrap:wrap}
.fs{border:1px solid var(--line);border-radius:9px;padding:9px 11px;font-size:13px;font-weight:500;
  color:var(--ink-2);background:var(--card);min-width:148px;appearance:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239CA3AF' stroke-width='2'><path d='M6 9l6 6 6-6'/></svg>");
  background-repeat:no-repeat;background-position:right 9px center;background-size:15px;padding-right:30px}
.fs:hover{border-color:var(--mute-3)}
.fsr{flex:1;min-width:190px}
.fsr .in{display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:9px;padding:0 12px;
  height:38px;background:var(--card)}
.fsr .in:focus-within{border-color:var(--mute-3);box-shadow:0 0 0 3px rgba(59,130,246,.08)}
.fsr .in svg{width:15px;height:15px;color:var(--mute-2);stroke-width:2;flex:0 0 15px}
.fsr .in input{border:none;outline:none;flex:1;font-size:13px;background:none;min-width:0;width:100%}

/* ======================= TABLE ======================= */
.tbar{display:flex;align-items:center;gap:11px;padding:14px 16px;flex-wrap:wrap}
.tbar .cnt{font-size:12.5px;color:var(--mute)}
.tbar .cnt b{color:var(--ink-2);font-weight:600}
.tw{overflow-x:auto}
table{width:100%;border-collapse:collapse}
th{font-size:11px;font-weight:600;color:var(--mute);text-align:left;padding:11px 14px;
  border-top:1px solid var(--line-2);border-bottom:1px solid var(--line-2);white-space:nowrap;background:#FCFCFD}
th.r,td.r{text-align:right} th.c,td.c{text-align:center}
td{padding:13px 14px;border-bottom:1px solid var(--line-2);font-size:13px;vertical-align:middle}
tbody tr:last-child td{border-bottom:none}
tbody tr:hover{background:#FCFCFD}
.cf{display:flex;align-items:center;gap:10px;min-width:0}
.lid{font-size:12.5px;font-weight:600;color:var(--red);white-space:nowrap}
.li b{font-size:13px;font-weight:600;display:block;letter-spacing:-.1px;white-space:nowrap}
.li .ph2{display:flex;align-items:center;gap:5px;font-size:11.5px;color:var(--mute);margin-top:3px;white-space:nowrap}
.li .ph2 svg{width:12px;height:12px;stroke-width:1.9;color:var(--mute-2)}
.li .ph2 a{width:17px;height:17px;border-radius:4px;display:grid;place-items:center}
.li .ph2 a:hover{background:var(--grey-soft)}
.li .ph2 a.wa{color:var(--green)}
.src{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink-2);white-space:nowrap}
.src svg{width:16px;height:16px;flex:0 0 16px}
.pl{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;padding:4px 10px;
  border-radius:7px;white-space:nowrap}
.pl.rd{border-radius:20px}
.pl i{width:6px;height:6px;border-radius:50%}
.pl.o{border:1px solid var(--line);background:var(--card);color:var(--ink-2);font-weight:500}
.pl.ck{cursor:pointer}
.pl.ck:hover{border-color:var(--red);background:var(--red-soft);color:var(--red)}
.agc b{font-size:12.5px;font-weight:600;display:block;line-height:1.3;white-space:nowrap}
.agc small{font-size:10.5px;color:var(--mute-2);white-space:nowrap}
.dt b{font-size:12.5px;font-weight:500;display:block;white-space:nowrap}
.dt small{font-size:11px;color:var(--mute-2);white-space:nowrap}
.dt.hot b{color:var(--red);font-weight:600}
.sc{width:34px;height:34px;position:relative;display:grid;place-items:center;flex:0 0 34px}
.sc svg{position:absolute;inset:0;transform:rotate(-90deg)}
.sc span{font-size:11.5px;font-weight:700}
.acts{display:flex;gap:2px;justify-content:flex-end}
.acts button,.acts a{width:29px;height:29px;border-radius:7px;display:grid;place-items:center;color:var(--mute)}
.acts button:hover,.acts a:hover{background:var(--grey-soft);color:var(--ink-2)}
.acts svg{width:15px;height:15px;stroke-width:1.9}
.acts .cl:hover{background:var(--green-soft);color:var(--green)}
.acts .dl2:hover{background:var(--red-soft);color:var(--red)}
input[type=checkbox]{width:15px;height:15px;accent-color:var(--red);cursor:pointer}
.bar{height:6px;border-radius:20px;background:var(--grey-soft);overflow:hidden;min-width:52px;flex:1;max-width:72px}
.bar i{display:block;height:100%;border-radius:20px}
.brw{display:flex;align-items:center;gap:9px;justify-content:flex-end}
.brw b{font-size:12.5px;font-weight:600}

/* ======================= PAGINATION ======================= */
.pgn{display:flex;align-items:center;justify-content:center;gap:6px;padding:16px;flex-wrap:wrap}
.pgn a,.pgn button{min-width:34px;height:34px;padding:0 9px;border-radius:8px;display:grid;place-items:center;
  font-size:12.5px;font-weight:500;color:var(--ink-2);border:1px solid transparent}
.pgn a:hover,.pgn button:hover{background:var(--grey-soft)}
.pgn a.on{border-color:var(--red);color:var(--red);font-weight:700}
.pgn .el{color:var(--mute-2);pointer-events:none}
.pgn .gt{display:flex;align-items:center;gap:8px;margin-left:10px;font-size:12.5px;color:var(--mute)}
.pgn .gt input{width:52px;height:34px;border:1px solid var(--line);border-radius:8px;text-align:center;
  font-size:12.5px;outline:none}

/* ======================= AGENT MONITOR CARD ======================= */
/* The grid has to sit on whichever element actually holds the seats.
   `.agw` was the grid, but the runtime renders `data-list` rows into the child
   `<div data-list>` — so the grid had exactly one item and every agent card
   stacked in a narrow column down the left, however wide the panel got.
   Making the child the grid (and `.agw` a plain wrapper) puts them in a row;
   leaving `.agw` as a grid as well is wrong, because it then confines the
   child to a single 257px column and the seats shrink instead of spreading. */
.agw{display:block}
.agw > [data-list]{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px}
.ag{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);padding:15px;
  transition:.14s}
.ag:hover{box-shadow:var(--sh-lg);border-color:var(--mute-3)}
.ag-t{display:flex;align-items:flex-start;gap:11px}
.ag-t .tx{flex:1;min-width:0}
.ag-t b{font-size:13.5px;font-weight:700;display:block;letter-spacing:-.2px;white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis}
.ag-t small{font-size:11px;color:var(--mute);display:block}
.st{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:600;white-space:nowrap}
.st i{width:6px;height:6px;border-radius:50%}
.wv{margin:12px 0;height:34px;display:block;width:100%}
.ag-m{display:grid;grid-template-columns:repeat(3,1fr);gap:9px 8px;margin-bottom:13px}
.ag-m>div small{font-size:10px;color:var(--mute-2);display:block;font-weight:500}
.ag-m>div b{font-size:13px;font-weight:700;display:block;margin-top:1px;letter-spacing:-.2px}
.ag-m>div b em{font-style:normal;color:var(--amber);font-size:11px}
.ag-a{display:flex;gap:6px}
.ag-a button{flex:1;height:32px;border-radius:8px;border:1px solid var(--line);display:grid;place-items:center;
  color:var(--mute);transition:.12s}
.ag-a button:hover{background:var(--grey-soft);color:var(--ink-2);border-color:var(--mute-3)}
.ag-a button.hang{background:var(--red);border-color:var(--red);color:#fff}
.ag-a button.hang:hover{background:var(--red-2)}
.ag-a svg{width:15px;height:15px;stroke-width:1.9}
/* Hover label for the icon actions.
   These four buttons were drawn as icon squares — hence the grid centring and
   the 15px svg rule above — but shipped carrying words, which is what made
   four of them wrap and crush the card. The word moves into this tooltip, with
   the note that used to sit in `title` on a second line; `title` itself is
   gone from the markup so the browser's own tooltip cannot cover this one. */
.ag-a button{position:relative}
.ag-a button::after{
  content:attr(data-tip);position:absolute;bottom:calc(100% + 7px);left:50%;transform:translateX(-50%);
  background:var(--ink);color:#fff;font-size:11px;font-weight:600;line-height:1.35;text-align:center;
  white-space:pre-line;width:max-content;max-width:168px;padding:6px 9px;border-radius:7px;
  box-shadow:var(--sh-lg);opacity:0;visibility:hidden;transition:opacity .12s;pointer-events:none;z-index:60}
.ag-a button:hover::after,
.ag-a button:focus-visible::after{opacity:1;visibility:visible}
/* The end buttons would otherwise push their tooltip past the card edge. */
.ag-a button:first-child::after{left:0;transform:none}
.ag-a button:last-child::after{left:auto;right:0;transform:none}

/* ======================= LIVE CONVERSATION ROW ======================= */
.lc{display:flex;align-items:center;gap:11px;padding:12px 0;border-bottom:1px solid var(--line-2)}
.lc:last-child{border-bottom:none}
.lc .tx{flex:1;min-width:0}
.lc .tp{display:flex;align-items:center;gap:8px}
.lc .tp b{font-size:12.5px;font-weight:700;white-space:nowrap}
.lc .tp .tm{margin-left:auto;font-size:12px;font-weight:700;color:var(--red);white-space:nowrap}
.lc .who{font-size:11.5px;color:var(--mute);margin:2px 0 6px;white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis}
.lc .tgs{display:flex;gap:5px;flex-wrap:wrap}
.wvm{height:15px;width:52px;flex:0 0 52px}

/* ======================= TIMELINE / FEED / LIST ======================= */
.kv{display:flex;justify-content:space-between;gap:12px;padding:8px 0;font-size:12.5px;
  border-bottom:1px solid var(--line-2)}
.kv:last-child{border-bottom:none}
.kv .k{color:var(--mute)} .kv .v{font-weight:600;text-align:right;color:var(--ink-2)}
.ac2{display:flex;gap:11px;padding:11px 0;border-bottom:1px solid var(--line-2)}
.ac2:last-child{border-bottom:none}
.ac2 .i{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;flex:0 0 30px}
.ac2 .i svg{width:15px;height:15px;stroke-width:2}
.ac2 .tx{flex:1;min-width:0}
.ac2 b{font-size:12.5px;font-weight:600;display:block}
.ac2 small{font-size:11px;color:var(--mute-2)}
.ac2 p{font-size:11.5px;color:var(--mute);margin-top:1px}
.ac2 p em{font-style:normal;color:var(--ink-2);font-weight:500}
.rk{display:flex;align-items:center;gap:11px;padding:9px 0;border-bottom:1px solid var(--line-2)}
.rk:last-child{border-bottom:none}
.rk .no{width:19px;font-size:12px;font-weight:700;color:var(--mute-2);flex:0 0 19px}
.rk .nm{flex:1;font-size:12.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rk .val{font-size:12.5px;font-weight:700}
.ir{display:flex;gap:11px;padding:10px 0;border-bottom:1px solid var(--line-2);align-items:flex-start}
.ir:last-child{border-bottom:none}
.ir .i{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;flex:0 0 26px}
.ir .i svg{width:13px;height:13px;stroke-width:2}
.ir p{font-size:12.5px;color:var(--ink-2);line-height:1.5}
.stp{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--line-2)}
.stp:last-child{border-bottom:none}
.stp .n2{width:24px;height:24px;border-radius:50%;background:var(--red-soft);color:var(--red);display:grid;
  place-items:center;font-size:11px;font-weight:700;flex:0 0 24px}
.stp.dn .n2{background:var(--green);color:#fff}
.stp .n2 svg{width:13px;height:13px;stroke-width:2.6}
.stp b{font-size:13px;font-weight:600;display:block}
.stp p{font-size:12px;color:var(--mute);margin-top:2px;line-height:1.5}
.stp .go{margin-left:auto;flex:0 0 auto}

/* ======================= FORM ======================= */
.fd{margin-bottom:13px}
.fd>label{font-size:11.5px;font-weight:600;color:var(--ink-2);display:block;margin-bottom:6px}
.fd>label .ai2{color:var(--blue);font-size:10px;font-weight:700;margin-left:6px}
.fd .hp{font-size:11.5px;color:var(--mute-2);margin-top:5px}
.ip{width:100%;border:1px solid var(--line);border-radius:9px;padding:9px 12px;font-size:13px;background:var(--card);
  outline:none}
.ip:focus{border-color:var(--mute-3);box-shadow:0 0 0 3px rgba(59,130,246,.08)}
textarea.ip{resize:vertical;min-height:76px;line-height:1.55}
select.ip{appearance:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239CA3AF' stroke-width='2'><path d='M6 9l6 6 6-6'/></svg>");
  background-repeat:no-repeat;background-position:right 10px center;background-size:16px;padding-right:32px}
.ip.ai3{border-color:#C5D9F8;background:var(--blue-soft)}
.r2{display:grid;grid-template-columns:1fr 1fr;gap:13px}
.r3{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}
.sw{width:38px;height:21px;border-radius:20px;background:var(--grey-soft);border:1px solid var(--line);
  position:relative;flex:0 0 38px;transition:.16s}
.sw:after{content:'';position:absolute;top:2px;left:2px;width:15px;height:15px;border-radius:50%;background:#fff;
  box-shadow:var(--sh);transition:transform .16s}
.sw.on{background:var(--green);border-color:var(--green)}
.sw.on:after{transform:translateX(17px)}
.swr{display:flex;align-items:flex-start;gap:13px;padding:13px 0;border-bottom:1px solid var(--line-2)}
.swr:last-child{border-bottom:none}
.swr .tx{flex:1}
.swr b{font-size:13px;font-weight:600;display:block}
.swr p{font-size:12px;color:var(--mute);margin-top:2px;line-height:1.5}

/* ======================= TABS ======================= */
.tbs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:18px;overflow-x:auto}
.tbs::-webkit-scrollbar{height:0}
.tbs a{padding:11px 15px;font-size:13px;font-weight:600;color:var(--mute);border-bottom:2px solid transparent;
  white-space:nowrap}
.tbs a:hover{color:var(--ink-2)}
.tbs a.on{color:var(--red);border-bottom-color:var(--red)}

/* ======================= NOTICE / EMPTY / TILES ======================= */
.nt{display:flex;gap:12px;border-radius:var(--r);padding:14px 16px;margin-bottom:16px;background:var(--blue-soft);
  border:1px solid #D3E4FD}
.nt svg{width:17px;height:17px;stroke-width:2;color:var(--blue);flex:0 0 17px;margin-top:1px}
.nt b{font-size:13px;font-weight:700;color:#1D4ED8;display:block}
.nt p{font-size:12.5px;color:#2E5AA8;margin-top:3px;line-height:1.55}
.nt.w{background:var(--amber-soft);border-color:#F8E0B8}
.nt.w svg{color:var(--amber)} .nt.w b{color:#92620A} .nt.w p{color:#A97A20}
.nt.g{background:var(--green-soft);border-color:#B9EAD5}
.nt.g svg{color:var(--green)} .nt.g b{color:#06724D} .nt.g p{color:#0A8558}
.nt.r{background:var(--red-soft);border-color:#F9CFD1}
.nt.r svg{color:var(--red)} .nt.r b{color:#B1262C} .nt.r p{color:#C4363C}
.em{text-align:center;padding:44px 22px}
.em svg{width:34px;height:34px;stroke-width:1.6;color:var(--mute-3);margin-bottom:12px}
.em b{font-size:14px;font-weight:700;display:block}
.em p{font-size:12.5px;color:var(--mute);margin:6px auto 16px;max-width:360px;line-height:1.55}
.tl2{display:grid;grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:11px}
.tl2 a,.tl2 button{display:flex;flex-direction:column;align-items:center;gap:9px;padding:17px 10px;
  border:1px solid var(--line);border-radius:var(--r);font-size:12px;font-weight:600;color:var(--ink-2);
  text-align:center;background:var(--card);transition:.13s}
.tl2 a:hover,.tl2 button:hover{border-color:var(--red);background:var(--red-soft);color:var(--red);
  transform:translateY(-1px)}
.tl2 svg{width:20px;height:20px;stroke-width:1.9;color:var(--mute)}
.tl2 a:hover svg,.tl2 button:hover svg{color:var(--red)}
.tl2 small{font-size:10.5px;font-weight:400;color:var(--mute-2);line-height:1.35}
.sc2{display:grid;grid-template-columns:repeat(auto-fill,minmax(238px,1fr));gap:12px}
.sc2>a,.sc2>button{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:15px;
  box-shadow:var(--sh);transition:.14s;text-align:left;display:block}
.sc2>a:hover,.sc2>button:hover{border-color:var(--mute-3);box-shadow:var(--sh-lg);transform:translateY(-1px)}
.sc2 .i{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;margin-bottom:11px}
.sc2 .i svg{width:16px;height:16px;stroke-width:2}
.sc2 b{font-size:13px;font-weight:700;display:block}
.sc2 p{font-size:12px;color:var(--mute);margin-top:4px;line-height:1.5}

/* ======================= CHARTS ======================= */
.ch2{width:100%;display:block;overflow:visible}
.ch2 .gl{stroke:var(--line-2);stroke-width:1}
.ch2 .ax{font-size:10px;fill:var(--mute-2)}
.dnw{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.dn{position:relative;flex:0 0 138px;width:138px;height:138px}
.dn svg{transform:rotate(-90deg);display:block}
.dn .md{position:absolute;inset:0;display:grid;place-content:center;text-align:center;line-height:1.15}
.dn .md b{display:block;font-size:22px;font-weight:700;letter-spacing:-.7px}
.dn .md small{font-size:10.5px;color:var(--mute-2);font-weight:500}
.lg{flex:1;min-width:158px}
.lg .r{display:flex;align-items:center;gap:9px;padding:5px 0;font-size:12.5px}
.lg .r i{width:9px;height:9px;border-radius:3px;flex:0 0 9px}
.lg .r .nm{flex:1;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lg .r .val{font-weight:700} .lg .r .pc{color:var(--mute-2);font-size:11.5px;width:44px;text-align:right}
.lgi{display:flex;align-items:center;justify-content:center;gap:16px;font-size:11px;color:var(--mute);
  margin-top:8px;flex-wrap:wrap}
.lgi span{display:inline-flex;align-items:center;gap:6px}
.lgi i{width:8px;height:8px;border-radius:3px}
.mtx{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:14px;padding-top:14px;
  border-top:1px solid var(--line-2)}
.mtx>div{text-align:center}
.mtx small{font-size:10px;color:var(--mute-2);display:block;font-weight:500}
.mtx b{font-size:15px;font-weight:700;display:block;margin-top:2px;letter-spacing:-.3px}
.mtx .d2{font-size:10.5px;font-weight:600;margin-top:1px}

/* ======================= FLOOR SEATS ======================= */
.flr{display:grid;grid-template-columns:repeat(auto-fill,minmax(136px,1fr));gap:10px}
.se{border:1px solid var(--line);border-radius:11px;padding:11px;position:relative;background:var(--card);
  transition:.13s}
.se:hover{box-shadow:var(--sh-lg);transform:translateY(-1px)}
.se .s2{position:absolute;top:10px;right:10px;width:7px;height:7px;border-radius:50%}
.se b{font-size:12px;font-weight:600;display:block;padding-right:14px;white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis}
.se small{font-size:10.5px;color:var(--mute-2);display:block;margin-top:1px}
.se .d3{font-size:11.5px;margin-top:8px;font-weight:600}
.mt2{display:flex;align-items:center;gap:10px;padding:7px 0}
.mt2 .nm{flex:1;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mt2 .s2{width:7px;height:7px;border-radius:50%;flex:0 0 7px}

/* ======================= LOGIN ======================= */
.lgn{min-height:100vh;display:grid;grid-template-columns:minmax(0,1fr) 460px}
.lgn-a{background:var(--sb);color:#fff;padding:48px 52px;display:flex;flex-direction:column;position:relative;
  overflow:hidden}
.lgn-a:before{content:'';position:absolute;width:560px;height:560px;border-radius:50%;
  background:radial-gradient(circle,rgba(239,62,69,.24),transparent 68%);top:-160px;right:-170px}
.lgn-a:after{content:'';position:absolute;inset:0;opacity:.4;
  background-image:linear-gradient(var(--sb-line) 1px,transparent 1px),
                   linear-gradient(90deg,var(--sb-line) 1px,transparent 1px);background-size:48px 48px}
.lgn-a>*{position:relative;z-index:1}
/* The sign-in photograph.
   Supplied by the client — their own floor, their own branding — so it says
   more than any illustration could. It is a photograph behind text, which is
   the usual way a login screen becomes unreadable, so it carries a scrim: a
   dark wash plus a left-to-right gradient that is nearly opaque under the
   headline and clears toward the right where there is only floor. The panel
   already clips overflow, so `cover` can crop without pushing the layout.

   `object-position` favours the upper-left of the frame, which is where the
   branding and the wall sign are; a centre crop cut them off on wide windows. */
.lgn-photo{position:absolute;inset:0;z-index:0;overflow:hidden}
.lgn-photo img{width:100%;height:100%;object-fit:cover;object-position:28% 34%;display:block}
.lgn-photo:after{content:'';position:absolute;inset:0;
  background:linear-gradient(100deg,rgba(14,22,38,.94) 0%,rgba(14,22,38,.86) 38%,rgba(14,22,38,.62) 68%,rgba(14,22,38,.48) 100%)}

/* The mark above the sign-in form. The dark panel is hidden below 1240px, and
   with it the only Omnetra branding on the page — so on a laptop the sign-in
   screen carried no logo at all. This one sits with the form and stays. */
.lgn-mark{display:flex;align-items:center;gap:10px;margin-bottom:26px}
.lgn-mark img{width:34px;height:34px;border-radius:50%;object-fit:cover;flex:0 0 34px}
.lgn-mark b{font-size:15.5px;font-weight:700;letter-spacing:-.3px;line-height:1.15}
.lgn-mark small{display:block;font-size:8.5px;color:var(--mute-2);letter-spacing:.9px;font-weight:600}
.lgn-a h2{font-size:36px;font-weight:700;letter-spacing:-1.2px;line-height:1.14;margin:auto 0 16px;max-width:15ch}
.lgn-a h2 em{font-style:normal;color:var(--red)}
.lgn-a p{font-size:14px;color:#93A2BA;max-width:46ch;line-height:1.65}
.lgn-s{display:flex;gap:36px;margin-top:38px;padding-top:26px;border-top:1px solid var(--sb-line)}
.lgn-s b{font-size:23px;font-weight:700;display:block;letter-spacing:-.6px}
.lgn-s small{font-size:11px;color:#77869E}
.lgn-f{background:var(--card);padding:48px;display:flex;flex-direction:column;justify-content:center}
.lgn-f h1{font-size:25px;font-weight:700;letter-spacing:-.7px}
.lgn-f .sub{font-size:13px;color:var(--mute);margin:6px 0 26px}
.rdm{border:1px solid var(--line);border-radius:var(--r);padding:13px;margin-top:24px;background:#FBFCFD}
.rdm a{display:flex;align-items:center;gap:11px;padding:9px 10px;border-radius:9px;font-size:12.5px}
.rdm a:hover{background:var(--red-soft);color:var(--red)}
.rdm a b{font-weight:600;flex:1}
.rdm a small{font-size:10.5px;color:var(--mute-2)}
.rdm a:hover small{color:var(--red)}
.rdm a svg{width:14px;height:14px;color:var(--mute-3)}
.rdm a:hover svg{color:var(--red)}

/* ======================= MODAL / TOAST ======================= */
.vl{position:fixed;inset:0;background:rgba(14,22,38,.52);display:none;place-items:center;z-index:90;
  backdrop-filter:blur(2px);padding:20px}
.vl.on{display:grid}
.md2{background:var(--card);border-radius:var(--r-lg);box-shadow:var(--sh-lg);width:min(94vw,440px);
  animation:pop .2s cubic-bezier(.2,.8,.3,1) both;max-height:88vh;display:flex;flex-direction:column}
@keyframes pop{from{opacity:0;transform:scale(.96) translateY(10px)}to{opacity:1;transform:none}}
.md2.w{width:min(94vw,660px)}
.md2-h{display:flex;align-items:center;gap:10px;padding:16px 18px;border-bottom:1px solid var(--line-2)}
.md2-h h3{font-size:15px;font-weight:700;flex:1}
.md2-b{padding:18px;overflow-y:auto}
.md2-f{padding:14px 18px;border-top:1px solid var(--line-2);display:flex;gap:9px;justify-content:flex-end}
.tst{position:fixed;bottom:22px;left:50%;transform:translate(-50%,84px);background:var(--sb);color:#fff;
  padding:11px 19px;border-radius:10px;font-size:13px;font-weight:500;box-shadow:0 10px 30px rgba(16,24,40,.32);
  z-index:99;opacity:0;transition:.25s cubic-bezier(.2,.8,.3,1);pointer-events:none;max-width:90vw}
.tst.on{transform:translate(-50%,0);opacity:1}
.tst.g{background:#06724D} .tst.w{background:#92620A} .tst.r{background:var(--red-2)}

/* ======================= FOOTER ======================= */
.ft{display:flex;align-items:center;justify-content:space-between;padding:15px 24px;border-top:1px solid var(--line);
  background:var(--card);font-size:11.5px;color:var(--mute-2);flex-wrap:wrap;gap:9px}
.ft a:hover{color:var(--red)}

/* ======================= DARK MODE ======================= */
body.dk{--bg:#0B111F;--card:#131C2E;--line:#1F2A40;--line-2:#1A2439;--ink:#E9EDF3;--ink-2:#C3CCDA;
  --mute:#8494AC;--mute-2:#6C7C95;--mute-3:#4A5771;--grey-soft:#1B2439;--red-soft:#2C1A22;
  --blue-soft:#152238;--green-soft:#0F2A22;--amber-soft:#2A2114;--violet-soft:#1F1A33;--pink-soft:#2C1824;
  --teal-soft:#0F2A28;--orange-soft:#2A1D14;--indigo-soft:#1A1B33;--cyan-soft:#0E2530}
body.dk th{background:#101828}
body.dk tbody tr:hover{background:#18223A}
body.dk .up{background:linear-gradient(165deg,#241820,#1D141A)}
body.dk .up b{color:#E9EDF3}
body.dk .fs,body.dk .ip{background:var(--card)}
body.dk .sch{background:#101828}

/* ======================= RESPONSIVE ======================= */
@media (max-width:1500px){
  .g6{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:1240px){
  .gsd,.g21,.g12{grid-template-columns:1fr}
  .agw > [data-list]{grid-template-columns:repeat(2,minmax(0,1fr))}
  .g5,.g4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .scope{min-width:0}
  .scope .tx small{display:none}
  .lgn{grid-template-columns:1fr}
  .lgn-a{display:none}
}
@media (max-width:980px){
  .app{--sbw:64px}
  .sb{width:64px;flex-basis:64px}
  .nv span,.nv .bg,.nv .ai,.nv .cv,.sb-top b,.sub,.up,.lm span,.lm .tg,.sb-ver b,.sb-ver small,
  .sb-me b,.sb-me small,.sb-me svg{display:none}
  .nv{justify-content:center;padding:10px 0}
  .sb-top{justify-content:center;padding:0}
  .lm{justify-content:center;padding:9px 0}
  .sb-ver,.sb-me{justify-content:center;padding:9px 0 2px}
  .tb-h small{display:none}
  .sch kbd{display:none}
}
@media (max-width:760px){
  .g2,.g3,.g4,.g5,.g6{grid-template-columns:1fr}
  .agw > [data-list]{grid-template-columns:1fr}
  .pg{padding:16px 14px 28px}
  .tb{padding:0 10px;gap:6px}
  .scope,.dr,.usr .tx,.usr svg{display:none}
  /* the softphone and app-launcher shortcuts are reachable from the nav, so
     they give up their space first on a narrow screen */
  .tb .ib[href*="softphone"],.tb .ib[data-open="mApps"]{display:none}
  .ib{width:32px;height:32px;flex:0 0 32px}
  .burger{width:28px;flex:0 0 28px}
  .sch{min-width:0;flex:1}
  .tb-h b{font-size:15px}
  .mtx{grid-template-columns:repeat(2,1fr)}
  .ph h1{font-size:19px}
  .r2,.r3{grid-template-columns:1fr}
  .fb{padding:12px;gap:10px}
  .fs{min-width:0;width:100%}
  .fi{flex:1;min-width:132px}
  .pgn .gt{margin-left:0;width:100%;justify-content:center;padding-top:6px}
}
@media print{
  .sb,.tb,.ft,.bt,.fb,.vl,.tst,.pgn{display:none!important}
  .pg{padding:0}
  .cd,.kp,.ag{break-inside:avoid;box-shadow:none}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}


/* ---------------------------------------------------------------------------
   Fix: `.dn` is used for two unrelated things — a completed step in the
   "Start here" list (`.stp.dn`) and the fixed-size donut chart container.
   The donut rule (flex:0 0 138px; width/height:138px) also matched the step
   rows, collapsing their text column so entries overlapped each other.
   Restoring normal row geometry for steps only; the donut is untouched.
   --------------------------------------------------------------------------- */
.stp.dn {
  position: static;
  flex: initial;
  width: auto;
  height: auto;
}


/* ---------------------------------------------------------------------------
   Default icon size — see the note in agent.css. Icons in sheets and modals had
   no scoped rule and rendered at the SVG default size. Weakest possible
   selector, so every `.something svg` rule still wins.
   --------------------------------------------------------------------------- */
:where(svg[viewBox="0 0 24 24"], svg[viewBox="0 0 32 32"], svg[viewBox="0 0 34 34"]) {
  width: 16px;
  height: 16px;
  flex: 0 0 auto;
}


/* ---------------------------------------------------------------------------
   Collapsed sidebar, on demand.

   The same rules the <=980px breakpoint already applies, lifted onto a class so
   the burger button can toggle them on a wide screen. It had no handler before
   and only showed a toast.

   Every selector is written out under .app.sm. Deriving them by prefixing the
   media-query block programmatically got this wrong: only the first selector in
   each comma-separated list picked up the prefix, so `.sub`, `.up` and the nav
   badges were hidden on every page rather than only when collapsed.
   --------------------------------------------------------------------------- */
.app.sm{--sbw:64px}
.app.sm .sb{width:64px;flex-basis:64px}
.app.sm .nv span,
.app.sm .nv .bg,
.app.sm .nv .ai,
.app.sm .nv .cv,
.app.sm .sb-top b,
.app.sm .sub,
.app.sm .up,
.app.sm .lm span,
.app.sm .lm .tg,
.app.sm .sb-ver b,
.app.sm .sb-ver small,
.app.sm .sb-me b,
.app.sm .sb-me small,
.app.sm .sb-me svg{display:none}
.app.sm .nv{justify-content:center;padding:10px 0}
.app.sm .sb-top{justify-content:center;padding:0}
.app.sm .lm{justify-content:center;padding:9px 0}
.app.sm .sb-ver,
.app.sm .sb-me{justify-content:center;padding:9px 0 2px}


/* ----------------------------------------------------------------------
   Fit at 100% browser zoom.

   The console is drawn at fixed pixel sizes for a wide canvas, so on a normal
   laptop it overflowed and had to be viewed at 90% zoom. Scaling the root down
   on narrower viewports makes it fit at 100%, and leaves a large monitor
   rendering at full size.

   `zoom` does not scale viewport units, so a `height:100vh` shell would become
   111% of the screen and produce a scrollbar — the heights below compensate by
   exactly the same factor.

   `.sb` is the sidebar on this console and `.lgn` the sign-in page; `.sidebar`
   and `.rail` below are the other consoles' names and match nothing here. Leaving `.sb` out meant its
   `height:100vh` was scaled by the zoom, so the sidebar stopped ~10% above the
   bottom of the window and showed a band of page behind it. It is sticky, so
   the height has to be the compensated viewport exactly — `min-height` on an
   `auto` height would size it to its content instead.

   `.lgn` was left out for the same reason and showed the same band along the
   bottom of the sign-in page. It keeps `min-height` rather than a fixed height:
   it is a grid that has to be free to grow past the fold on a short window.
   ------------------------------------------------------------------- */
@media (max-width: 1680px) {
  :root { zoom: .9 }
  .app, .shell, .wrap, .sidebar, .rail { min-height: 111.2vh }
  .app, .sidebar, .rail { height: auto }
  .sb { height: calc(100vh / .9) }
  .lgn { min-height: calc(100vh / .9) }
}
@media (max-width: 1400px) {
  :root { zoom: .82 }
  .app, .shell, .wrap, .sidebar, .rail { min-height: 122vh }
  .sb { height: calc(100vh / .82) }
  .lgn { min-height: calc(100vh / .82) }
}
