  .win-dock{position:fixed;bottom:14px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:8px;
    background:color-mix(in srgb,var(--card) 92%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
    border:1px solid var(--line-2);border-radius:14px;box-shadow:var(--shadow-hover);padding:7px 10px;z-index:400;
    max-width:calc(100vw - 24px);overflow-x:auto}
  .wd-label{font-size:9.5px;font-weight:800;letter-spacing:.7px;text-transform:uppercase;color:var(--muted);padding:0 4px;flex-shrink:0}
  .wd-tab{display:flex;align-items:center;gap:7px;background:var(--bg);border:1px solid var(--line);border-radius:9px;
    padding:7px 11px;font-size:12px;font-weight:700;color:var(--ink-2);white-space:nowrap;transition:.14s}
  .wd-tab.minned{opacity:.55}
  .wd-tab:hover{border-color:var(--blue);color:var(--blue)}
  .wd-tab svg{width:14px;height:14px}
  /* dialer becomes a non-blocking, draggable widget */
  .ph-back{background:transparent !important;backdrop-filter:none !important;-webkit-backdrop-filter:none !important;pointer-events:none !important}
  .ph{pointer-events:auto;box-shadow:0 30px 80px -20px rgba(15,23,42,.55),0 0 0 1px var(--line-2)}
  .ph-top{cursor:grab;user-select:none}.ph-top:active{cursor:grabbing}

  /* ==========================================================================
     OPERATIONS CONSOLE — redesign layer
     Written for someone who has this open from 09:00 to 19:00. Three rules:
     (1) colour is signal, never decoration; (2) data is monospaced and
     tabular so columns scan vertically; (3) nothing moves unless the user
     did something — no drifting, lifting or rotating furniture.
     ========================================================================== */

  /* ---- type scale ------------------------------------------------------- */
  body{font-size:13.5px;line-height:1.5}
  h1,h2,h3{letter-spacing:-.02em;font-weight:700}
  /* Numerals, identifiers and anything an agent reads out loud or compares
     down a column. Tabular figures keep the digits in vertical register. */
  .mini .mv,.hero-stats b,.kpi .val,td .mono,.cl-c.cl-mut,.sla,.count,
  .d-leg .pc,.d-leg .ct,.tbl-foot,.badge.b-id{
    font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-.01em}

  /* ---- surfaces --------------------------------------------------------- */
  .card{border-radius:var(--radius);border-color:var(--line-2);box-shadow:var(--shadow);
    transition:border-color .14s ease,box-shadow .14s ease}
  .card.pad{padding:18px}
  .sec-h h3{font-size:13.5px;font-weight:700;letter-spacing:-.01em}

  /* ---- stat tiles ------------------------------------------------------- */
  /* Was: a coloured icon chip, a 3px accent bar, a lift-and-rotate on hover.
     Now the number is the tile. The label sits above it, quiet and uppercase;
     the footnote below carries provenance ("live", "awaiting data"). */
  .pg-stats{gap:12px;margin-bottom:16px}
  .mini{padding:14px 15px;gap:6px;overflow:visible}
  .mini::before{display:none}
  .mini:hover{transform:none;box-shadow:var(--shadow);border-color:var(--line-2)}
  .mini .mic{position:absolute;top:13px;right:13px;width:26px;height:26px;border-radius:7px;opacity:.85}
  .mini:hover .mic{transform:none}
  .mini .mic svg{width:14px;height:14px}
  .mini .ml{font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding-right:30px}
  .mini .mv{font-size:26px;font-weight:600;letter-spacing:-.03em;color:var(--ink)}
  .mini .mf{font-size:10.5px;font-weight:600;color:var(--muted)}
  .mini .mf b{color:var(--muted);font-weight:700}

  /* ---- tables: the screen agents actually live in ----------------------- */
  table{font-size:13px}
  /* Sticky header — long result sets stop losing their column names. */
  thead th{position:sticky;top:0;z-index:5;background:var(--card);
    font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
    color:var(--muted);padding:10px 12px;border-bottom:1px solid var(--line-2);white-space:nowrap}
  tbody td{padding:11px 12px;border-bottom:1px solid var(--line);vertical-align:middle}
  /* Rows sit on the card surface in both themes. Declared explicitly: leaving
     this to inheritance left dark-mode rows painted white under pale text. */
  tbody tr{background:transparent;transition:background .1s ease}
  tbody tr:hover{background:color-mix(in srgb,var(--blue) 7%,transparent)}
  tbody td{color:var(--ink-2)}
  tbody td:first-of-type,tbody td .tu-name{color:var(--ink)}
  tbody tr:last-child td{border-bottom:none}
  th.sortable:hover{color:var(--ink)}
  .sar{opacity:.35}
  /* Identifiers read as data, not prose. */
  tbody td:first-child .tu-sub,tbody td .tu-sub{font-family:var(--mono);font-size:10.5px;letter-spacing:-.01em}

  /* ---- controls --------------------------------------------------------- */
  .toolbar{gap:8px;margin-bottom:14px}
  .fchip{border-radius:8px;padding:6.5px 12px;font-size:12px;font-weight:600;
    border-color:var(--line-2);transition:background .12s,border-color .12s,color .12s}
  .fchip:hover{border-color:var(--ink-2);color:var(--ink)}
  .fchip.on{background:var(--ink);border-color:var(--ink);color:var(--card)}
  .btn-add{border-radius:8px;padding:8px 14px;font-size:12.5px;font-weight:700;
    background:var(--blue);box-shadow:none;transition:background .12s}
  .btn-add:hover{background:var(--blue-d)}
  .tsearch input{font-size:12.5px}
  /* Every interactive thing must be reachable and visibly focused — agents
     work this panel from the keyboard between calls. */
  a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,
  textarea:focus-visible,[tabindex]:focus-visible{outline:none;box-shadow:var(--ring);border-radius:7px}

  /* ---- badges: the one place colour is allowed to shout ----------------- */
  .badge{font-size:10.5px;font-weight:700;padding:3px 8px;border-radius:6px;
    letter-spacing:.01em;line-height:1.5;border:1px solid transparent}
  .b-green{background:var(--green-soft);color:var(--green);border-color:color-mix(in srgb,var(--green) 22%,transparent)}
  .b-blue{background:var(--blue-soft);color:var(--blue);border-color:color-mix(in srgb,var(--blue) 22%,transparent)}
  .b-orange{background:var(--orange-soft);color:var(--orange);border-color:color-mix(in srgb,var(--orange) 24%,transparent)}
  .b-red{background:var(--red-soft);color:var(--red);border-color:color-mix(in srgb,var(--red) 24%,transparent)}
  .b-purple{background:var(--purple-soft);color:var(--purple);border-color:color-mix(in srgb,var(--purple) 22%,transparent)}
  .b-gray{background:color-mix(in srgb,var(--ink) 6%,transparent);color:var(--ink-2);border-color:var(--line-2)}
  body.dark .b-gray{background:color-mix(in srgb,#fff 7%,transparent);color:var(--ink-2)}

  /* ---- sidebar ---------------------------------------------------------- */
  .sidebar{background:var(--nav);border-right:1px solid rgba(255,255,255,.06)}
  .nav-cap{font-size:9.5px;letter-spacing:.12em;color:var(--nav-txt-dim);padding:15px 12px 6px}
  .nav-i{border-radius:7px;padding:8px 11px;font-size:12.5px;font-weight:500;
    transition:background .12s,color .12s}
  .nav-i:hover{background:rgba(255,255,255,.055);color:#fff}
  /* The active item is the single loudest thing in the sidebar: a solid bar
     plus a rail, so it is unmistakable at a glance across 46 destinations. */
  .nav-i.active{background:rgba(255,255,255,.09);color:#fff;font-weight:600;position:relative}
  .nav-i.active::before{content:"";position:absolute;left:-11px;top:50%;transform:translateY(-50%);
    width:3px;height:17px;border-radius:0 3px 3px 0;background:var(--blue)}
  body.dark .nav-i.active::before{background:#7aa2ff}
  .nav-i svg{opacity:.75}.nav-i.active svg{opacity:1}

  /* ---- topbar ----------------------------------------------------------- */
  .topbar{height:58px;background:var(--card);border-bottom:1px solid var(--line-2);
    backdrop-filter:none;-webkit-backdrop-filter:none}
  .pg-h b{font-size:15.5px;font-weight:700;letter-spacing:-.02em}
  .pg-h span{font-size:12px;color:var(--muted)}
  .conn-badge{font-family:var(--mono);font-size:10px;font-weight:500;letter-spacing:0}

  /* ---- hero ------------------------------------------------------------- */
  /* The hero was a glowing gradient panel selling the product. This is the
     tool, not the pitch: a plain header band that gives back vertical space. */
  .hero{background:var(--card);border:1px solid var(--line-2);border-radius:var(--radius);
    padding:22px 24px;box-shadow:var(--shadow);color:var(--ink)}
  .hero-glow,.hero-grid{display:none}
  .hero h2{font-size:20px;font-weight:700;color:var(--ink);letter-spacing:-.02em}
  .hero p{font-size:12.5px;color:var(--muted);max-width:none}
  .hero-badge{background:color-mix(in srgb,var(--green) 10%,transparent);color:var(--green);
    border:1px solid color-mix(in srgb,var(--green) 25%,transparent);
    font-size:10.5px;font-weight:700;letter-spacing:.02em}
  .hero-badge i{background:var(--green)}
  .hero-stats b{font-size:20px;font-weight:600;color:var(--ink);letter-spacing:-.03em}
  .hero-stats small{font-size:10px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
  .hero-btn{background:var(--ink);color:var(--card);border:none;font-size:12px;font-weight:600;border-radius:8px}
  .hero-btn.ghost{background:transparent;color:var(--ink-2);border:1px solid var(--line-2)}
  .hero-btn:hover{opacity:.88}

  /* ---- KPI cards -------------------------------------------------------- */
  .kpi{border-radius:var(--radius)}
  .kpi:hover{transform:none;box-shadow:var(--shadow)}
  .kpi .lbl{font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
  .kpi .val{font-size:25px;font-weight:600;letter-spacing:-.03em}
  .kpi .foot{font-size:10.5px;color:var(--muted);font-weight:600}
  .kpi .ic{border-radius:8px}

  /* ---- empty + not-configured states ------------------------------------ */
  .empty-state,.empty-tbl{color:var(--muted)}
  .empty-state small{font-size:12.5px;line-height:1.6}
  .empty-tbl b{font-size:13.5px;font-weight:700;color:var(--ink-2)}

  /* ---- modals / forms --------------------------------------------------- */
  .modal,.mod{border-radius:var(--radius)}
  .fld label,.f-lab{font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
  input,select,textarea{font-family:inherit;font-size:13px;border-radius:8px}
  input:focus,select:focus,textarea:focus{border-color:var(--blue)}

  /* ---- narrow screens --------------------------------------------------- */
  /* The topbar tool row is a fixed 501px of icons; below ~700px it pushed the
     whole page sideways (270px of horizontal scroll on a phone). Drop the
     secondary tools and keep what an agent needs on a handset: presence,
     the dialer, notifications and their profile. */
  @media (max-width:760px){
    .tb-tools{min-width:0;gap:4px}
    #winBtn,#themeBtn,#calBtn,#chatBtn,.support{display:none}
    .prof .prof-meta{display:none}
    .topbar{padding:0 12px}
    .pg-stats{grid-template-columns:repeat(2,1fr)}
  }
  @media (max-width:420px){
    .pg-stats{grid-template-columns:1fr}
  }
  /* Nothing should ever scroll the page sideways; wide tables scroll in place.
     `clip`, not `hidden`: `overflow-x:hidden` turns html/body into scroll
     containers, which silently breaks `position:sticky` — it detached the
     sidebar and the table headers, which then scrolled away with the page.
     `clip` prevents the sideways scroll without creating a scroll container. */
  html,body{max-width:100%;overflow-x:clip}

  /* ---- motion ----------------------------------------------------------- */
  /* One quiet entrance, then the interface holds still. Anything that keeps
     moving becomes noise by the third hour of a shift. */
  .rise{animation-duration:.24s}
  @media (prefers-reduced-motion:reduce){
    *,*::before,*::after{animation-duration:.001ms !important;transition-duration:.001ms !important}
  }

  /* ---- agent assist ------------------------------------------------------ */
  /* Read while on a call: the answer must be scannable in a couple of seconds,
     and a price warning must be impossible to miss. */
  .asst-ask textarea,.asst-row input{width:100%;font-family:inherit;font-size:13px;
    border:1px solid var(--line-2);border-radius:8px;padding:9px 11px;background:var(--card);color:var(--ink);resize:vertical}
  .asst-row{display:flex;gap:8px;margin-top:8px}
  .asst-row input{flex:1}
  .asst-row .btn-add{margin-left:0;flex-shrink:0}
  .asst-answer{font-size:13.5px;line-height:1.65;color:var(--ink);margin-top:12px;white-space:normal}
  .asst-cite{font-family:var(--mono);font-size:11px;background:var(--blue-soft);color:var(--blue);
    border:1px solid color-mix(in srgb,var(--blue) 22%,transparent);border-radius:5px;padding:1px 5px;white-space:nowrap}
  .asst-foot{margin-top:10px;font-size:10.5px;color:var(--muted);font-family:var(--mono)}
  .asst-warn{display:flex;gap:8px;align-items:flex-start;background:var(--red-soft);color:var(--red);
    border:1px solid color-mix(in srgb,var(--red) 30%,transparent);border-radius:8px;padding:9px 11px;
    font-size:12.5px;font-weight:600;margin-bottom:10px}
  .asst-warn svg{width:16px;height:16px;flex-shrink:0;margin-top:1px}
  .asst-thinking{display:flex;gap:5px;align-items:center;color:var(--muted);font-size:12.5px;margin-top:12px}
  .asst-thinking i{width:5px;height:5px;border-radius:50%;background:var(--muted);animation:asstDot 1.1s infinite}
  .asst-thinking i:nth-child(2){animation-delay:.15s}.asst-thinking i:nth-child(3){animation-delay:.3s}
  @keyframes asstDot{0%,60%,100%{opacity:.25}30%{opacity:1}}
  .kb-item{border-bottom:1px solid var(--line);padding:10px 0}
  .kb-item:last-child{border-bottom:none}
  .kb-h{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:3px}
  .kb-h b{font-size:12.5px}
  .kb-item small{color:var(--ink-2);font-size:12px;line-height:1.55;display:block}
  .kb-x{font-size:11px;color:var(--red);font-weight:700;flex-shrink:0}
