/* Operations page styles (datamap.js), shared by index.html and mobile.html so the phone app shows the same page.
   Uses the theme tokens each page defines (--glass-*, --w*, --text*, --open, --clear, --warn, --turquoise...). */
.queue-progress{ height:8px; border-radius:99px; background:var(--accent-tint, rgba(61,126,255,.18)); overflow:hidden; margin:6px 0 3px; }
.queue-progress i{ display:block; height:100%; background:var(--turquoise, #22b8cf); border-radius:99px; transition:width .6s ease; }
.queue-progress-text{ font-size:12px; font-variant-numeric:tabular-nums; }
.queue-progress-text b{ font-size:13px; color:var(--text); }
.queue-progress.is-moving i{ background-image:linear-gradient(45deg, rgba(255,255,255,.28) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.28) 50%, rgba(255,255,255,.28) 75%, transparent 75%); background-size:16px 16px; animation:queue-stripes .8s linear infinite; }
.queue-progress.is-waiting{ position:relative; }
.queue-progress.is-waiting i{ position:absolute; left:0; width:30%; animation:queue-slide 1.4s ease-in-out infinite; }
@keyframes queue-stripes{ to{ background-position:16px 0; } }
@keyframes queue-slide{ 0%{ left:-30%; } 100%{ left:100%; } }
@media (prefers-reduced-motion: reduce){ .queue-progress.is-moving i, .queue-progress.is-waiting i{ animation:none; } .queue-progress.is-waiting i{ left:35%; } }
.queue-report{ margin:6px 0 4px; padding:8px 10px; border-radius:8px; border:1px solid var(--border, rgba(207,227,255,.22)); color:var(--text); font-size:12px; }
.queue-report-summary{ font-weight:600; margin-bottom:4px; }
.queue-report ul{ margin:0 0 6px 18px; padding:0; }
.queue-report li{ margin:2px 0; }

/* ---- Operations (the Data Map tab; see datamap.js). Same glass look as the rest of the portal; colour = status:
   CLEAR green, OPEN and needs-a-person red, late amber, running turquoise. */
.dm{ max-width:1180px; margin:0 auto; padding:8px 16px 40px; display:flex; flex-direction:column; gap:36px; color:var(--text); }
.ops{ --ops-clear-ink:#3DBE80; --ops-open-ink:#FF6B70; --ops-warn-ink:#F0A83A; --ops-run:var(--turquoise); }
:root[data-theme="light"] .ops{ --ops-clear-ink:#1E7A4E; --ops-open-ink:#C8323A; --ops-warn-ink:#8F5807; }
.dm h2{ margin:0; font-size:22px; }
.dm h3{ margin:0; font-size:17px; display:flex; align-items:center; gap:8px; }
.dm h4{ margin:0 0 6px; font-size:14px; }
.dm h5{ margin:0; font-size:13px; }
.dm p{ margin:0; }
.dm-sec{ scroll-margin-top:72px; }
.dm-sec:focus{ outline:none; }
.ops-phone-back{ display:flex; align-items:center; gap:6px; width:max-content; min-height:44px; margin:4px auto 0 12px; padding:0 12px 0 6px; border-radius:12px; color:var(--turquoise); font-size:14px; font-weight:600; text-decoration:none; }
.ops-phone-back[hidden]{ display:none; }
.ops-phone-back:hover, .ops-phone-back:focus-visible{ background:var(--w50); }
.ops-phone-back:focus-visible{ outline:2px solid var(--turquoise); outline-offset:2px; }
.dm-head{ display:flex; flex-wrap:wrap; gap:12px; justify-content:space-between; align-items:flex-end; }
.dm-sub{ color:var(--text-muted); font-size:13px; margin-top:4px !important; max-width:70ch; }
.dm-tools{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.dm-lbl{ font-size:12px; color:var(--text-muted); }
.dm select, .dm-btn{
  font:inherit; font-size:13px; color:var(--text); background:var(--glass-bg); border:1px solid var(--glass-border);
  border-radius:8px; padding:6px 12px; cursor:pointer; min-height:34px;
}
.dm select{ max-width:260px; }
.dm-btn:hover{ border-color:var(--accent); }
.dm-btn:disabled{ opacity:.55; cursor:progress; }
.dm-btn.on, .dm-btn[aria-pressed="true"]{ border-color:var(--turquoise); color:var(--turquoise); }
.dm select:focus-visible, .dm-btn:focus-visible, .dm-guide summary:focus-visible, .ops-system > summary:focus-visible, .ops-rq-g > summary:focus-visible,
.ops-cell:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }
.dm-count{ font-size:12px; font-weight:600; padding:1px 9px; border-radius:99px; border:1px solid var(--glass-border); color:var(--text-muted); font-variant-numeric:tabular-nums; }
.dm-empty, .dm-empty-cell{ color:var(--text-muted); font-size:13px; }
.dm-note{ color:var(--text-muted); font-size:12.5px; }
.dm-dot, .dm-check i{ display:inline-block; width:9px; height:9px; border-radius:50%; flex:none; background:#94a3b8; }
.dm-dot.connected, .dm-check.ok i{ background:#34d399; }
.dm-dot.partial, .dm-check.warn i{ background:#fbbf24; }
.dm-dot.none, .dm-check.bad i{ background:#f87171; }
.dm-dot.unknown, .dm-check.info i{ background:#94a3b8; }
.dm-nopol{ font-style:normal; font-size:11px; font-weight:600; color:var(--ops-warn-ink); white-space:nowrap; }
/* the global ticket-status legend in the header means nothing on this tab */
body:has(#tabDataMap.active) .header-center .legend{ visibility:hidden; }

.ops-sec-h{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:6px 16px; margin-bottom:4px; }
.ops-legend{ display:flex; flex-wrap:wrap; gap:4px 14px; font-size:12px; color:var(--text-muted); }
.ops-legend span{ display:inline-flex; align-items:center; gap:6px; }
.ops-sw{ display:inline-block; width:8px; height:8px; border-radius:50%; flex:none; background:var(--text-muted); }
.ops-sw.is-clear{ background:var(--clear); } .ops-sw.is-open{ background:var(--open); }
.ops-sw.is-run{ background:var(--ops-run); box-shadow:0 0 0 3px color-mix(in srgb, var(--ops-run) 30%, transparent); }
.ops-sw.is-late{ background:var(--warn); margin-right:6px; }
.ops-skel{ height:156px; border-radius:14px; background:linear-gradient(90deg, var(--w40), var(--w80), var(--w40)); background-size:200% 100%; animation:ops-skel 1.4s ease-in-out infinite; margin-top:14px; }
@keyframes ops-skel{ to{ background-position:-200% 0; } }

/* a) operations board: one row per client, one box per 811 */
.ops-board{ display:flex; flex-direction:column; margin-top:14px; border-top:1px solid var(--glass-border); }
.ops-row{ display:grid; grid-template-columns:180px minmax(0,1fr); gap:16px; align-items:center; padding:12px 0; border-bottom:1px solid var(--glass-border); }
.ops-client{ display:flex; flex-direction:column; gap:2px; min-width:0; }
.ops-client b{ font-size:14px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ops-client small{ font-size:12px; color:var(--text-muted); letter-spacing:.04em; }
.ops-cells{ display:grid; grid-template-columns:repeat(auto-fill, minmax(280px, 1fr)); gap:10px; }
.ops-cell{
  font:inherit; color:var(--text); text-align:left; display:flex; flex-direction:column; gap:8px;
  padding:12px 14px; border-radius:12px; border:1px solid var(--glass-border); background:var(--glass-bg);
  box-shadow:0 2px 10px rgba(3,9,20,.12); transition:border-color .18s ease-out, transform .18s ease-out, box-shadow .18s ease-out;
}
.ops-cell.is-running{ border-color:var(--ops-run); animation:ops-pulse 2.4s cubic-bezier(.16,1,.3,1) infinite; }
@keyframes ops-pulse{
  0%{ box-shadow:0 2px 10px rgba(3,9,20,.12), 0 0 0 0 color-mix(in srgb, var(--ops-run) 45%, transparent); }
  70%{ box-shadow:0 2px 10px rgba(3,9,20,.12), 0 0 0 8px color-mix(in srgb, var(--ops-run) 0%, transparent); }
  100%{ box-shadow:0 2px 10px rgba(3,9,20,.12), 0 0 0 0 transparent; }
}
.ops-cell-h{ display:flex; align-items:baseline; justify-content:space-between; gap:10px; }
.ops-state{ font-size:13px; font-weight:700; letter-spacing:.06em; }
.ops-chk{ font-size:12px; color:var(--text-muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ops-chk.is-run{ color:var(--ops-run); font-weight:600; }
.ops-chk.is-bad{ color:var(--ops-open-ink); font-weight:600; }
.ops-chk.is-late{ color:var(--ops-warn-ink); font-weight:600; }
.ops-nums{ display:flex; gap:18px; }
.ops-n{ display:flex; flex-direction:column; font-size:11.5px; color:var(--text-muted); line-height:1.25; }
.ops-n b{ font-size:22px; font-weight:650; color:var(--text); font-variant-numeric:tabular-nums; line-height:1.15; }
.ops-n.is-clear b{ color:var(--ops-clear-ink); } .ops-n.is-open b{ color:var(--ops-open-ink); }
.ops-split{ display:block; height:4px; border-radius:99px; background:color-mix(in srgb, var(--open) 55%, transparent); overflow:hidden; }
.ops-split i{ display:block; height:100%; background:var(--clear); border-radius:99px; transition:width .4s cubic-bezier(.16,1,.3,1); }
.ops-badges{ display:flex; flex-wrap:wrap; gap:5px; }
.ops-badge{ font-size:11.5px; font-weight:600; padding:1px 8px; border-radius:99px; border:1px solid; }
.ops-badge.is-bad{ color:var(--ops-open-ink); border-color:color-mix(in srgb, var(--open) 60%, transparent); background:var(--danger-tint); }
.ops-robot{ display:flex; flex-direction:column; gap:4px; padding-top:8px; border-top:1px solid var(--border); font-size:11.5px; color:var(--text-muted); }
.ops-robot b{ color:var(--text); font-weight:600; font-variant-numeric:tabular-nums; }
.ops-robot-h{ display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.ops-robot-dot{ width:7px; height:7px; border-radius:50%; background:var(--text-muted); flex:none; }
.ops-robot-dot.is-on{ background:var(--ops-run); animation:opsRobotPulse 1.2s ease-in-out infinite; }
@keyframes opsRobotPulse{ 50%{ opacity:.35; } }
@media (prefers-reduced-motion: reduce){ .ops-robot-dot.is-on{ animation:none; } }
.ops-robot-next{ display:flex; align-items:baseline; gap:6px; flex-wrap:wrap; }
.ops-robot-bar{ display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:8px; }
.ops-robot-bar .queue-progress{ margin:0; }
.ops-robot-next > span:first-child{ text-transform:uppercase; letter-spacing:.05em; font-size:10.5px; padding-top:1px; }
button.ops-badge{ font:inherit; font-size:11.5px; font-weight:600; cursor:pointer; }
button.ops-badge:hover{ filter:brightness(1.15); }
.ops-badges{ position:relative; }
.ops-cell:has(.ops-alert-pop){ position:relative; z-index:5; }
.ops-alert-pop{ position:absolute; z-index:40; top:calc(100% + 6px); left:0; width:min(340px, calc(100vw - 48px)); max-height:min(360px, 60vh); overflow-y:auto;
  padding:10px; border-radius:12px; background:var(--glass-bg); backdrop-filter:var(--glass-blur); -webkit-backdrop-filter:var(--glass-blur);
  border:1px solid var(--glass-border); box-shadow:var(--glass-shadow); display:flex; flex-direction:column; gap:10px; font-size:12.5px; }
.ops-alert-pop-h{ display:flex; align-items:center; justify-content:space-between; gap:8px; }
.ops-alert-pop-x{ background:none; border:none; color:var(--text-muted); font-size:18px; line-height:1; cursor:pointer; padding:0 4px; }
.ops-alert-group{ display:flex; flex-direction:column; gap:2px; }
.ops-alert-proj{ font-size:11px; font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:var(--text-muted); padding:0 6px 2px; }
.ops-alert-ticket{ font:inherit; text-align:left; display:flex; flex-direction:column; gap:1px; padding:6px; border-radius:8px; border:none; background:none; color:var(--text); cursor:pointer; }
.ops-alert-ticket:hover, .ops-alert-ticket:focus-visible{ background:var(--surface-2); }
.ops-alert-ticket b{ font-family:'IBM Plex Mono', monospace; font-weight:600; font-size:12.5px; }
.ops-alert-ticket span{ font-size:11px; color:var(--text-muted); }
.ops-badge.is-warn{ color:var(--ops-warn-ink); border-color:color-mix(in srgb, var(--warn) 60%, transparent); }

/* b) needs you */
.ops-needs{ margin-top:12px; }
.ops-clear-line{ display:flex; align-items:center; gap:8px; font-size:13px; color:var(--text-muted); margin-top:12px !important; }
.dm-attn{ background:var(--danger-tint); border:1px solid color-mix(in srgb, var(--open) 55%, transparent); border-radius:12px; padding:12px 14px; margin-top:12px; display:grid; gap:8px; }
.dm-attn-h{ display:flex; align-items:center; gap:8px; color:var(--ops-open-ink); font-size:14px; }
.dm-attn-clear{ margin-left:auto; }
.dm-attn-h .dm-count{ border-color:color-mix(in srgb, var(--open) 60%, transparent); color:var(--ops-open-ink); }
.dm-attn-item{ background:var(--w40); border-radius:8px; padding:8px 10px; font-size:13px; }
.dm-attn-why{ margin-top:3px; color:var(--text); }
.dm-live-top{ display:flex; justify-content:space-between; align-items:flex-start; gap:6px 10px; flex-wrap:wrap; }
.dm-acts{ display:flex; flex-wrap:wrap; gap:6px; align-items:center; }
.dm-mini{ font-size:12px; padding:3px 10px; min-height:30px; }
.dm-go{ border-color:var(--turquoise); color:var(--turquoise); font-weight:600; }
.dm-callsave{ display:grid; gap:6px; margin-top:8px; }
.dm-callsave textarea{ width:100%; font:13px/1.4 'IBM Plex Mono', monospace; background:var(--surface); color:var(--text); border:1px solid var(--glass-border); border-radius:8px; padding:6px 8px; }

/* c) agent queue */
.ops-stats{ display:flex; flex-wrap:wrap; gap:4px 14px; font-size:12.5px; color:var(--text-muted); }
.ops-stat b{ color:var(--text); font-variant-numeric:tabular-nums; }
.ops-stat.is-zero b{ color:var(--text-muted); font-weight:500; }
.ops-stat.st-running:not(.is-zero) b{ color:var(--ops-run); } .ops-stat.st-needs_you:not(.is-zero) b, .ops-stat.st-failed:not(.is-zero) b{ color:var(--ops-open-ink); }
.ops-stat.st-done:not(.is-zero) b{ color:var(--ops-clear-ink); }
.ops-start{ display:flex; flex-wrap:wrap; align-items:center; gap:6px 8px; margin:10px 0 12px; }
.ops-start select{ min-height:30px; padding:3px 10px; font-size:12.5px; }
.ops-start-after{ margin:14px 0 0; }
/* check responses for chosen projects */
/* check responses: a four-level cascade, client -> 811 -> project -> job code */
.ops{ --ops-go-bg:var(--turquoise); --ops-go-ink:#04211F; }
:root[data-theme="light"] .ops{ --ops-go-bg:#0A7A82; --ops-go-ink:#FFFFFF; }
.ops-pick{ margin:14px 0 6px; padding:16px 18px 0; border:1px solid var(--glass-border); border-radius:14px; background:var(--w20); display:grid; gap:14px; }
.ops-pick-h{ display:flex; flex-wrap:wrap; align-items:flex-end; justify-content:space-between; gap:10px 16px; }
.ops-pick-h h4{ margin:0 !important; font-size:16px; }
.ops-pick-q{ font:inherit; font-size:14px; color:var(--text); background:var(--glass-bg); border:1px solid var(--glass-border); border-radius:10px; padding:8px 14px; min-height:44px; width:min(340px, 100%); }
.ops-pick-q::placeholder{ color:var(--text-muted); opacity:.85; }
.ops-pick-q:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }
.ops-tr, .ops-tr ul{ list-style:none; margin:0; padding:0; }
.ops-tr{ --ind:30px; border-top:1px solid var(--glass-border); }
.ops-tr > .ops-tr-i{ border-bottom:1px solid var(--glass-border); padding:4px 0; }
.ops-tr-i{ outline:none; }
.ops-tr-i.lv1{ --lv-n:1; } .ops-tr-i.lv2{ --lv-n:2; } .ops-tr-i.lv3{ --lv-n:3; } .ops-tr-i.lv4{ --lv-n:4; }
.ops-tr-row{
  display:grid; grid-template-columns:24px 44px minmax(0, 1fr) auto; align-items:center; column-gap:4px;
  min-height:48px; padding:4px 14px 4px calc(6px + (var(--lv-n) - 1) * var(--ind)); border-radius:10px; cursor:pointer;
  transition:background-color .16s ease-out;
}
.lv1 > .ops-tr-row{ min-height:60px; }
.lv2 > .ops-tr-row{ min-height:52px; }
.ops-tr-row:hover{ background:var(--w60); }
.ops-tr-i[aria-checked="true"] > .ops-tr-row{ background:color-mix(in srgb, var(--turquoise) 10%, transparent); }
.ops-tr-i[aria-checked="true"] > .ops-tr-row:hover{ background:color-mix(in srgb, var(--turquoise) 16%, transparent); }
.ops-tr-i:focus-visible > .ops-tr-row{ outline:2px solid var(--accent); outline-offset:-2px; }
.ops-tr-i[aria-disabled="true"] > .ops-tr-row{ cursor:default; }
.ops-tr-i[aria-disabled="true"] > .ops-tr-row:hover{ background:none; }
.ops-tr-tw{ display:grid; place-items:center; color:var(--text-muted); }
.ops-tr-chev{ width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:1.9; stroke-linecap:round; stroke-linejoin:round; transition:transform .24s cubic-bezier(.16,1,.3,1); }
.ops-tr-i[aria-expanded="true"] > .ops-tr-row .ops-tr-tw{ color:var(--text); }
.ops-tr-i[aria-expanded="true"] > .ops-tr-row .ops-tr-chev{ transform:rotate(90deg); }
.ops-tr-ck{ justify-self:center; width:22px; height:22px; border-radius:6px; border:1.5px solid color-mix(in srgb, var(--text-muted) 75%, transparent); display:grid; place-items:center; transition:background-color .16s ease-out, border-color .16s ease-out; }
.ops-tr-ck svg{ width:16px; height:16px; fill:none; stroke:var(--ops-go-ink); stroke-width:2.3; stroke-linecap:round; stroke-linejoin:round; }
.ops-tr-tick{ stroke-dasharray:14; stroke-dashoffset:14; transition:stroke-dashoffset .22s cubic-bezier(.16,1,.3,1); }
.ops-tr-dash{ opacity:0; }
.ops-tr-row:hover .ops-tr-ck{ border-color:var(--ops-go-bg); }
.ops-tr-i[aria-checked="true"] > .ops-tr-row .ops-tr-ck, .ops-tr-i[aria-checked="mixed"] > .ops-tr-row .ops-tr-ck{ background:var(--ops-go-bg); border-color:var(--ops-go-bg); }
.ops-tr-i[aria-checked="true"] > .ops-tr-row .ops-tr-tick{ stroke-dashoffset:0; }
.ops-tr-i[aria-checked="mixed"] > .ops-tr-row .ops-tr-dash{ opacity:1; }
.ops-tr-ck.is-off{ border-style:dashed; opacity:.45; }
.ops-tr-lbl{ display:flex; flex-wrap:wrap; align-items:baseline; gap:2px 12px; min-width:0; }
.ops-tr-lbl b{ min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ops-tr-client{ font-size:17px; font-weight:650; }
.lv2 > .ops-tr-row .ops-tr-lbl b{ font-size:15px; font-weight:600; }
.ops-tr-name{ font-size:14.5px; font-weight:550; }
.ops-tr-code{ font:500 13.5px/1.3 'IBM Plex Mono', ui-monospace, monospace; overflow-wrap:anywhere; }
.ops-tr-chip{ align-self:center; font-size:12.5px; font-weight:700; letter-spacing:.06em; padding:2px 8px; border-radius:6px; border:1px solid var(--glass-border); background:var(--w40); }
.ops-tr-meta{ font-size:13px; color:var(--text-muted); font-variant-numeric:tabular-nums; }
.ops-tr-meta:empty{ display:none; }
.ops-tr-meta.is-on{ color:var(--ops-go-bg); font-weight:600; }
.ops-tr-i.is-off > .ops-tr-row b, .ops-tr-i[aria-disabled="true"] .ops-tr-name{ color:var(--text-muted); }
.ops-tr-n{ font-size:13px; color:var(--text-muted); white-space:nowrap; font-variant-numeric:tabular-nums; }
.ops-tr-n b{ font-size:15px; font-weight:650; color:var(--text); }
.lv1 > .ops-tr-row .ops-tr-n b{ font-size:17px; }
.ops-tr-n.is-none{ opacity:.8; }
.ops-tr-g{ position:relative; }
.ops-tr-g::before{ content:''; position:absolute; top:0; bottom:12px; left:calc(6px + (var(--lv) - 1) * var(--ind) + 11.5px); width:1px; background:var(--glass-border); }
.lv1 > .ops-tr-g{ padding-bottom:6px; }
.ops-tr-nocode{ display:flex; align-items:center; min-height:36px; padding:2px 14px 6px calc(6px + 3 * var(--ind) + 72px); font-size:12.5px; color:var(--text-muted); }
/* the cascade: each child drops in from the upper left, one after another */
.ops-tr-g.is-in > li{ animation:ops-tr-in .44s cubic-bezier(.16,1,.3,1) backwards; animation-delay:calc(var(--i) * 50ms); }
@keyframes ops-tr-in{ from{ opacity:0; transform:translate(-14px, -8px); } }
.ops-tr-g.is-out{ animation:ops-tr-out .16s cubic-bezier(.4,0,1,1) forwards; }
@keyframes ops-tr-out{ to{ opacity:0; transform:translateY(-6px); } }
@media (prefers-reduced-motion: reduce){
  .ops-tr-g.is-in > li, .ops-tr-g.is-out{ animation:none; }
  .ops-tr-chev, .ops-tr-tick{ transition:none; }
}
.ops-pick-foot{
  position:sticky; bottom:0; z-index:2; display:flex; flex-wrap:wrap; align-items:center; gap:8px 14px;
  margin:0 -18px; padding:12px 18px 14px; border-top:1px solid var(--glass-border); border-radius:0 0 14px 14px;
  background:color-mix(in srgb, var(--menu-bg) 90%, transparent); -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px);
  box-shadow:0 -10px 24px -16px rgba(3,9,20,.55);
}
.ops-pick-go{
  font:inherit; font-size:15px; font-weight:650; min-height:48px; padding:10px 22px; border:0; border-radius:10px; cursor:pointer;
  background:var(--ops-go-bg); color:var(--ops-go-ink); box-shadow:0 6px 18px -8px color-mix(in srgb, var(--ops-go-bg) 80%, transparent);
  transition:transform .16s ease-out, box-shadow .16s ease-out, background-color .16s ease-out;
}
.ops-pick-go:hover:not(:disabled){ transform:translateY(-1px); box-shadow:0 10px 22px -8px color-mix(in srgb, var(--ops-go-bg) 85%, transparent); }
.ops-pick-go:focus-visible{ outline:2px solid var(--accent); outline-offset:3px; }
.ops-pick-go-x{ font-weight:500; }
.ops-pick-go:disabled{ cursor:not-allowed; background:var(--w60); color:var(--text-muted); box-shadow:none; }
.ops-pick-go[aria-busy="true"]{ cursor:progress; }
.ops-pick-count{ font-size:13px; color:var(--text-muted); min-width:0; }
.ops-pick-clear{ margin-left:auto; }
.ops-pick-clear[hidden]{ display:none; }
.ops-pick-msg{ flex-basis:100%; }
.ops-pick-msg:empty{ display:none; }
.ops-pick-msg.is-ok{ color:var(--ops-clear-ink); } .ops-pick-msg.is-bad{ color:var(--ops-open-ink); }
.ops-jobs{ display:flex; flex-direction:column; border-top:1px solid var(--glass-border); }
.ops-job{ font-size:13px; color:var(--text-muted); padding:8px 2px; border-bottom:1px solid var(--glass-border); }
.ops-job.st-running, .ops-job.st-queued{ color:var(--text); }
.ops-job-t{ display:flex; align-items:baseline; gap:8px; min-width:0; }
.ops-job-r{ margin:2px 0 0 16px; }
.ops-job .queue-progress, .ops-job .queue-progress-text{ margin-left:16px; }
.ops-job .queue-progress{ max-width:520px; }
.ops-dot{ width:8px; height:8px; border-radius:50%; flex:none; background:var(--text-muted); transform:translateY(-1px); }
.st-running .ops-dot{ background:var(--ops-run); } .st-done .ops-dot{ background:var(--clear); }
.st-failed .ops-dot, .st-needs_you .ops-dot{ background:var(--open); }
.dm-st{ font-weight:600; }
.st-running .dm-st, .dm-st.st-running{ color:var(--ops-run); } .st-needs_you .dm-st, .dm-st.st-needs_you, .st-failed .dm-st, .dm-st.st-failed{ color:var(--ops-open-ink); }
.st-done .dm-st, .dm-st.st-done{ color:var(--ops-clear-ink); }

/* e) ticket flow: one compact funnel per client; the line between two stages flows while the earlier stage holds work */
.ops-flows{ display:flex; flex-direction:column; margin-top:12px; border-top:1px solid var(--glass-border); }
.ops-flow-row{ display:grid; grid-template-columns:180px minmax(0,1fr); gap:16px; align-items:center; padding:10px 0; border-bottom:1px solid var(--glass-border); }
.ops-flow-name{ font-size:14px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ops-flow{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(6, minmax(0,1fr)); max-width:720px; }
.ops-stage{ position:relative; display:flex; flex-direction:column; align-items:center; gap:2px; text-align:center; }
.ops-stage b{ position:relative; z-index:1; min-width:44px; padding:2px 8px; border-radius:99px; background:var(--surface); border:1px solid var(--glass-border); font-size:14px; font-weight:650; font-variant-numeric:tabular-nums; }
.ops-stage span{ font-size:11.5px; color:var(--text-muted); }
.ops-stage .ops-ft{ font-size:10.5px; font-weight:600; color:var(--warn); font-variant-numeric:tabular-nums; white-space:nowrap; }
.ops-rep.is-stopped .ops-rep-why{ margin:8px 0 0; font-size:13px; color:var(--text-muted); }
.ops-stage.is-zero b{ color:var(--text-muted); font-weight:500; }
.ops-stage.is-clear:not(.is-zero) b{ color:var(--ops-clear-ink); border-color:color-mix(in srgb, var(--clear) 60%, transparent); }
.ops-stage.is-open:not(.is-zero) b{ color:var(--ops-open-ink); border-color:color-mix(in srgb, var(--open) 60%, transparent); }
.ops-stage + .ops-stage::before{
  content:""; position:absolute; top:13px; right:50%; width:100%; height:2px; border-radius:2px; background:var(--glass-border);
}
.ops-stage.is-fed::before{
  background:linear-gradient(90deg, var(--glass-border) 0 30%, color-mix(in srgb, var(--turquoise) 70%, transparent) 50%, var(--glass-border) 70% 100%);
  background-size:200% 100%; animation:ops-flow 2.8s linear infinite;
}
@keyframes ops-flow{ from{ background-position:100% 0; } to{ background-position:-100% 0; } }

/* e2) called history (Eduardo 10/27): tickets and feet called per day / week / month, one client at a time */
.oh-wrap{ margin-top:18px; }
.oh{ border:1px solid var(--glass-border); border-radius:14px; padding:14px 16px 10px; background:color-mix(in srgb, var(--surface) 60%, transparent); }
.oh-head{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:8px 14px; }
.oh-head h4{ margin:0; font-size:15px; }
.oh-ctrls{ display:flex; flex-wrap:wrap; gap:8px; }
.oh-seg{ display:inline-flex; padding:2px; border-radius:9px; border:1px solid var(--glass-border); background:var(--surface); }
.oh-seg button, .oh-chips button{ border:0; background:none; color:var(--text-muted); font:inherit; font-size:12.5px; font-weight:650; cursor:pointer; }
.oh-seg button{ height:28px; padding:0 12px; border-radius:7px; }
.oh-seg button[aria-checked="true"]{ background:var(--accent); color:#fff; }
.oh-chips{ display:flex; flex-wrap:wrap; gap:6px; margin:12px 0 4px; }
.oh-chips button{ height:28px; padding:0 12px; border-radius:99px; border:1px solid var(--glass-border); }
.oh-chips button[aria-checked="true"]{ color:var(--text); border-color:var(--accent); background:color-mix(in srgb, var(--accent) 16%, transparent); }
.oh-seg button:focus-visible, .oh-chips button:focus-visible, .oh-b:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }
.oh-dates{ display:flex; flex-wrap:wrap; align-items:center; gap:8px 12px; margin:6px 0 2px; }
.oh-pick{ position:relative; }
.oh-pick-btn{ display:inline-flex; align-items:center; gap:7px; height:32px; padding:0 12px; border-radius:9px; border:1px solid var(--glass-border); background:var(--surface); color:var(--text-muted); font:inherit; font-size:12.5px; font-weight:650; cursor:pointer; }
.oh-pick-btn:hover{ color:var(--text); }
.oh-pick-btn.is-on{ color:var(--text); border-color:var(--accent); background:color-mix(in srgb, var(--accent) 16%, var(--surface)); }
.oh-pick-btn svg{ width:15px; height:15px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; }
.oh-cal{ position:absolute; z-index:6; top:calc(100% + 6px); left:0; width:272px; max-width:calc(100vw - 32px); padding:12px; border-radius:14px; border:1px solid var(--glass-border); background:var(--surface); box-shadow:0 18px 40px -14px rgba(0,0,0,.6); }
.oh-cal-head{ display:flex; align-items:center; justify-content:space-between; }
.oh-cal-head b{ font-size:13.5px; color:var(--text); }
.oh-cal-head button{ display:grid; place-items:center; width:30px; height:30px; border-radius:8px; border:0; background:none; color:var(--text-muted); cursor:pointer; }
.oh-cal-head button:hover:not(:disabled){ background:color-mix(in srgb, var(--text) 8%, transparent); color:var(--text); }
.oh-cal-head button:disabled{ opacity:.3; cursor:default; }
.oh-cal-head svg{ width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.oh-cal-hint{ margin:2px 0 8px; font-size:11.5px; color:var(--text-muted); text-align:center; }
.oh-cal-grid{ display:grid; grid-template-columns:repeat(7, 1fr); gap:2px 0; }
.oh-cal-grid small{ padding-bottom:4px; font-size:10.5px; font-weight:650; color:var(--text-muted); text-align:center; }
.oh-cal-grid button{ position:relative; height:34px; border:0; background:none; color:var(--text); font:inherit; font-size:12.5px; font-variant-numeric:tabular-nums; cursor:pointer; border-radius:8px; }
.oh-cal-grid button:hover:not(:disabled){ background:color-mix(in srgb, var(--text) 9%, transparent); }
.oh-cal-grid button:disabled{ color:var(--text-muted); opacity:.35; cursor:default; }
.oh-cal-grid button.is-in{ border-radius:0; background:color-mix(in srgb, var(--accent) 18%, transparent); }
.oh-cal-grid button.is-end{ background:var(--accent); color:#fff; font-weight:700; }
.oh-cal-grid button.is-today:not(.is-end){ box-shadow:inset 0 0 0 1.5px color-mix(in srgb, var(--accent) 70%, transparent); }
.oh-cal-grid button.is-bs:not(.is-end){ color:var(--warn); font-weight:700; }
.oh-cal-grid button.is-busy::after, .oh-cal-foot i{ content:''; position:absolute; left:50%; bottom:4px; width:4px; height:4px; margin-left:-2px; border-radius:50%; background:var(--accent); }
.oh-cal-grid button.is-end::after{ background:#fff; }
.oh-cal-grid button:focus-visible, .oh-cal button:focus-visible, .oh-pick-btn:focus-visible{ outline:2px solid var(--accent); outline-offset:1px; }
.oh-cal-foot{ display:flex; align-items:center; gap:6px; margin-top:10px; padding-top:10px; border-top:1px solid var(--glass-border); }
.oh-cal-foot span{ position:relative; flex:1; padding-left:10px; font-size:11px; color:var(--text-muted); }
.oh-cal-foot i{ left:0; top:50%; bottom:auto; margin:-2px 0 0; }
.oh-cal-foot button{ height:28px; padding:0 12px; border-radius:8px; border:1px solid var(--glass-border); background:none; color:var(--text-muted); font:inherit; font-size:12px; font-weight:650; cursor:pointer; }
.oh-cal-foot button.is-main{ border-color:var(--accent); background:var(--accent); color:#fff; }
.oh-kpis{ display:grid; grid-template-columns:repeat(4, minmax(0, 1fr)); gap:8px; margin:10px 0 14px; }
.oh-kpi{ display:flex; flex-direction:column; gap:2px; padding:9px 12px; border-radius:10px; border:1px solid var(--glass-border); background:var(--surface); min-width:0; }
.oh-kpi small{ font-size:11px; color:var(--text-muted); text-transform:uppercase; letter-spacing:.5px; }
.oh-kpi b{ font-size:18px; font-weight:750; font-variant-numeric:tabular-nums; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.oh-kpi span{ font-size:12px; color:var(--text-muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.oh-kpi.is-main b{ font-size:22px; }
.oh-chart{ position:relative; overflow-x:auto; overflow-y:visible; padding-top:6px; scrollbar-width:thin; }
.oh-plot{ display:grid; grid-template-columns:repeat(var(--bars), minmax(22px, 1fr)); align-items:end; gap:2px; height:200px; min-width:min(100%, calc(var(--bars) * 24px)); padding:22px 0 20px; border-bottom:1px solid var(--glass-border);
  background:linear-gradient(to top, color-mix(in srgb, var(--text-muted) 14%, transparent) 1px, transparent 1px) 0 20px / 100% 25% repeat-y; }
.oh-chart.is-days .oh-plot{ grid-template-columns:repeat(var(--bars), minmax(12px, 1fr)); min-width:calc(var(--bars) * 14px); }
.oh-b{ position:relative; height:100%; display:flex; flex-direction:column; justify-content:flex-end; align-items:center; padding:0; border:0; background:none; cursor:pointer; color:inherit; font:inherit; }
.oh{ --oh-s0:var(--accent); --oh-s1:color-mix(in srgb, var(--accent) 42%, var(--surface)); --oh-s2:color-mix(in srgb, var(--accent) 65%, var(--text)); --oh-s3:color-mix(in srgb, var(--accent) 22%, var(--surface)); }   /* one tone per 811 state */
.oh-bars{ display:flex; align-items:flex-end; justify-content:center; gap:2px; width:100%; height:100%; }
.oh-b i{ display:block; width:min(100%, 34px); height:var(--h, var(--v)); min-height:2px; border-radius:4px 4px 0 0; background:var(--c, var(--accent)); transition:height .35s cubic-bezier(.2,.9,.3,1), filter .12s; }
.oh-plot.is-multi .oh-bars{ gap:4px; }
.oh-plot.is-multi .oh-bars i{ position:relative; flex:1 1 0; width:auto; min-width:0; max-width:28px; }
.oh-bars i em{ left:50%; bottom:calc(100% + 3px); transform:translateX(-50%); font-size:10.5px; }   /* the state column's own number */
.oh-plot.is-multi:not(.is-tight) .oh-tot, .oh-plot.is-tight .oh-bars i em{ display:none; }
.oh-plot.is-small .oh-bars{ gap:3px; } .oh-plot.is-small .oh-bars i em{ font-size:9px; letter-spacing:-.2px; }
.oh-b.is-zero i{ background:color-mix(in srgb, var(--text-muted) 35%, transparent); }
.oh-b.is-open i{ background:repeating-linear-gradient(135deg, var(--c, var(--accent)) 0 5px, color-mix(in srgb, var(--c, var(--accent)) 55%, transparent) 5px 9px); }
.oh-b:hover i, .oh-b.is-hot i{ filter:brightness(1.25); }
.oh-b.is-before i{ background:color-mix(in srgb, var(--text-muted) 55%, transparent); }   /* called before BoreSpot */
.oh-start{ position:absolute; z-index:2; left:0; top:-22px; bottom:0; width:0; border-left:2px dashed var(--warn); pointer-events:none; }   /* just left of the first BoreSpot bar (left set by fit()) */
.oh-start small{ position:absolute; top:0; left:5px; padding:2px 6px; border-radius:6px; background:var(--surface); border:1px solid color-mix(in srgb, var(--warn) 50%, transparent); font-size:10.5px; font-weight:700; color:var(--warn); white-space:nowrap; }
.oh-start.is-left small{ left:auto; right:5px; }   /* over the bars before the start (usually short); after the line when there is no room */
.oh-key{ display:inline-flex; align-items:center; gap:5px; } .oh-key i{ width:10px; height:10px; border-radius:2px; background:color-mix(in srgb, var(--text-muted) 55%, transparent); }
.oh-key.is-line i{ width:0; height:12px; border-radius:0; background:none; border-left:2px dashed var(--warn); }
.oh-start.is-nolabel small{ display:none; }
.oh-key.is-state{ font-weight:700; color:var(--text); } .oh-key.is-state i{ background:var(--c); }
.oh-pdf{ display:inline-flex; align-items:center; gap:6px; height:32px; padding:0 12px; border-radius:9px; border:1px solid var(--glass-border); background:var(--surface); color:var(--text); font:inherit; font-size:12.5px; font-weight:650; cursor:pointer; }
.oh-pdf:hover:not(:disabled){ border-color:var(--accent); }
.oh-pdf:disabled{ opacity:.5; cursor:default; }
.oh-pdf svg{ width:15px; height:15px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.oh-pdf:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }
.oh-b em{ position:absolute; bottom:calc(var(--v) + 3px); font-style:normal; font-size:11px; font-weight:700; color:var(--text); font-variant-numeric:tabular-nums; white-space:nowrap; pointer-events:none; }
.oh-b span{ position:absolute; top:calc(100% + 4px); font-size:10.5px; color:var(--text-muted); white-space:nowrap; pointer-events:none; }
.oh-plot.is-many .oh-b:first-child span{ left:0; } .oh-plot.is-many .oh-b:last-child span{ right:0; }   /* many narrow bars: edge labels stay inside the chart */
.oh-tip{ position:absolute; z-index:3; display:flex; flex-direction:column; gap:2px; min-width:150px; padding:8px 10px; border-radius:9px; border:1px solid var(--glass-border); background:var(--surface); box-shadow:0 10px 28px -10px rgba(0,0,0,.55); font-size:12px; color:var(--text-muted); pointer-events:none; }
.oh-tip[hidden]{ display:none; }
.oh-tip b{ color:var(--text); font-size:12.5px; } .oh-tip b small{ color:var(--warn); font-weight:600; }
.oh-tip .oh-tip-big{ color:var(--text); font-size:14px; font-weight:700; font-variant-numeric:tabular-nums; }
.oh-note{ margin:8px 0 0; font-size:11.5px; color:var(--text-muted); }
@media (prefers-reduced-motion: reduce){ .oh-b i{ transition:none; } }
@media (max-width:760px){ .oh{ padding:12px 10px 8px; } .oh-kpis{ grid-template-columns:repeat(2, minmax(0, 1fr)); } .oh-kpi b, .oh-kpi.is-main b{ font-size:16px; } }

/* f) staff requests, grouped by stage */
.ops-rq-g{ margin-top:14px; }
.ops-rq-g > h4, .ops-rq-g > summary{ display:flex; align-items:center; gap:8px; font-size:13.5px; font-weight:600; margin:0 0 6px; }
.ops-rq-g > summary{ cursor:pointer; }
.ops-rqs{ list-style:none; margin:0; padding:0; border-top:1px solid var(--glass-border); }
.ops-rq{ display:grid; grid-template-columns:minmax(120px,1fr) minmax(120px,1.4fr) minmax(0,1.2fr) minmax(170px,1.3fr) minmax(0,1fr) auto; gap:4px 14px; align-items:center; padding:8px 4px; border-bottom:1px solid var(--glass-border); font-size:13px; }
.ops-rq.is-late{ background:color-mix(in srgb, var(--warn) 9%, transparent); }
.ops-rq-who small{ color:var(--text-muted); }
.ops-rq-what{ font-weight:600; overflow-wrap:anywhere; }
.ops-rq-chips{ display:flex; flex-wrap:wrap; gap:4px; }
.dm-rq-n{ font-size:11.5px; padding:1px 8px; border-radius:99px; border:1px solid var(--glass-border); white-space:nowrap; }
.dm-rq-n.n-draft{ border-color:var(--warn); } .dm-rq-n.n-approved{ border-color:var(--turquoise); }
.dm-rq-n.n-called{ border-color:var(--clear); } .dm-rq-n.n-rejected{ color:var(--text-muted); }
.ops-rq-age{ font-size:12.5px; color:var(--text-muted); display:flex; align-items:center; }
.ops-rq.is-late .ops-rq-age{ color:var(--ops-warn-ink); font-weight:600; }
.ops-rq-job{ font-size:12.5px; color:var(--text-muted); }
.ops-rq-act{ justify-self:end; }
.ops-rq-none{ padding:4px 0; }
.ops-foot{ margin-top:12px !important; }

/* g) system details (owner only, folded) */
.ops-system{ border-top:1px solid var(--glass-border); padding-top:14px; }
.ops-system > summary{ cursor:pointer; display:flex; flex-wrap:wrap; align-items:baseline; gap:4px 12px; list-style:none; }
.ops-system > summary::-webkit-details-marker{ display:none; }
.ops-system > summary::before{ content:""; width:7px; height:7px; border-right:2px solid var(--text-muted); border-bottom:2px solid var(--text-muted); transform:rotate(-45deg); transition:transform .18s ease-out; align-self:center; }
.ops-system[open] > summary::before{ transform:rotate(45deg); }
.ops-system-t{ font-size:17px; font-weight:600; }
.ops-sys{ margin-top:24px; }
.ops-h5{ margin:0 0 6px !important; font-size:13px; }
@media (prefers-reduced-motion: reduce){
  .ops-cell, .ops-split i, .ops-system > summary::before{ transition:none; }
  .ops-cell.is-running{ animation:none; box-shadow:0 0 0 2px color-mix(in srgb, var(--ops-run) 45%, transparent); }
  .ops-stage.is-fed::before{ animation:none; background:color-mix(in srgb, var(--turquoise) 55%, transparent); }
  .ops-skel{ animation:none; }
}
@media (max-width:760px){
  .dm{ gap:30px; }
  .ops-row, .ops-flow-row{ grid-template-columns:1fr; gap:8px; }
  .ops-cells{ grid-template-columns:1fr; }
  .ops-reps{ grid-template-columns:1fr; }
  .ops-rq{ grid-template-columns:1fr auto; }
  .ops-rq-who, .ops-rq-what, .ops-rq-chips, .ops-rq-age, .ops-rq-job{ grid-column:1; }
  .ops-rq-act{ grid-column:2; grid-row:1 / span 2; align-self:start; }
  .ops-rq-chips:empty, .ops-rq-job:empty{ display:none; }
  .ops-stage span{ font-size:10.5px; }
  .ops-stage b{ min-width:0; padding:2px 6px; font-size:13px; }
  .ops-rep-h .dm-note{ margin-left:0; }
  .ops-pick{ padding:14px 12px 0; }
  .ops-pick-q{ width:100%; }
  .ops-tr{ --ind:14px; }
  .ops-tr-row{ grid-template-columns:20px 40px minmax(0, 1fr) auto; padding-right:8px; padding-left:calc(2px + (var(--lv-n) - 1) * var(--ind)); }
  .ops-tr-g::before{ left:calc(2px + (var(--lv) - 1) * var(--ind) + 9.5px); }
  .ops-tr-lbl{ flex-direction:column; align-items:flex-start; gap:1px; }
  .ops-tr-lbl b{ max-width:100%; }
  .lv2 > .ops-tr-row .ops-tr-lbl{ flex-direction:row; align-items:baseline; flex-wrap:wrap; gap:2px 8px; }
  .ops-tr-nocode{ padding-left:calc(2px + 3 * var(--ind) + 60px); }
  .ops-pick-foot{ margin:0 -12px; padding:10px 12px 12px; }
  .ops-pick-go{ flex:1 1 100%; line-height:1.25; }
  .ops-pick-go-x{ display:block; font-size:13.5px; }
  .ops-pick-go-dot{ display:none; }
  .ops-tr-code{ font-size:12.5px; }
  .ops-pick-clear{ margin-left:0; }
}

.dm-scroll{ overflow-x:auto; }
.dm-table{ border-collapse:collapse; width:100%; min-width:560px; font-size:13px; }
.dm-table th{ text-align:left; font-size:12px; font-weight:600; color:var(--text-muted); padding:8px 10px; border-bottom:1px solid var(--glass-border); }
.dm-table td{ padding:9px 10px; border-bottom:1px solid var(--glass-border); vertical-align:middle; }
.dm-table tr:last-child td{ border-bottom:0; }
.dm-table small{ color:var(--text-muted); }
.dm-name{ font-weight:600; white-space:nowrap; }
.dm-na{ color:var(--text-muted); }
.dm-num{ font-variant-numeric:tabular-nums; text-align:right; }
.dm-cell{ display:flex; align-items:center; gap:2px; font-size:11px; color:var(--text-muted); }
.dm-cell .dm-dot{ margin:0 3px 0 6px; } .dm-cell .dm-dot:first-child{ margin-left:0; }
.dm-legend-line{ font-size:12px; color:var(--text-muted); margin-top:10px !important; display:flex; flex-wrap:wrap; align-items:center; gap:4px 6px; }
.dm-legend-line .dm-dot{ margin-left:8px; }
.dm-meter{ display:flex; align-items:center; gap:8px; min-width:120px; }
.dm-meter i{ display:block; height:8px; border-radius:2px; background:var(--turquoise); }
.dm-two{ display:grid; grid-template-columns:repeat(auto-fit, minmax(280px, 1fr)); gap:20px; margin:8px 0 16px; }
.dm-key{ list-style:none; margin:10px 0 0; padding:0; display:grid; grid-template-columns:repeat(auto-fit, minmax(280px, 1fr)); gap:8px 20px; font-size:13px; }
.dm-key li{ display:flex; align-items:flex-start; gap:10px; }
.dm-key span{ max-width:68ch; }
.dm-card{ background:var(--glass-bg); border:1px solid var(--glass-border); border-radius:12px; padding:12px 14px; min-width:0; }
.dm-checks{ display:flex; flex-direction:column; gap:8px; }
.dm-check{ display:flex; gap:10px; align-items:flex-start; font-size:13px; }
.dm-check i{ margin-top:5px; }
.dm-check b{ display:block; }
.dm-check span{ color:var(--text-muted); }
.dm-guide{ margin-top:24px; background:var(--glass-bg); border:1px solid var(--glass-border); border-radius:12px; padding:12px 16px; }
.dm-guide summary{ cursor:pointer; font-size:13px; color:var(--accent); }
.dm-guide ul{ margin:8px 0 0; padding-left:18px; display:flex; flex-direction:column; gap:6px; font-size:13px; max-width:68ch; }
/* onboarding pipeline board */
.dm-board .dm-stg{ text-align:center; font-size:11px; padding:8px 4px; white-space:nowrap; }
.dm-board td.dm-st, .dm-legend-line .dm-st{ text-align:center; font-weight:400; }
.dm-st i{ display:inline-block; width:14px; height:14px; border-radius:50%; border:2px solid var(--glass-border); vertical-align:middle; }
.dm-st.done i{ background:#34d399; border-color:#34d399; }
.dm-st.now i{ border-color:#fbbf24; background:rgba(251,191,36,.25); box-shadow:0 0 0 3px rgba(251,191,36,.18); }
.dm-legend-line .dm-st{ display:inline-block; margin-left:8px; }
.dm-legend-line .dm-st i{ width:11px; height:11px; }
.dm-board small{ color:var(--text-muted); }
/* tables by group */
.dm-groups{ display:grid; grid-template-columns:repeat(auto-fit, minmax(270px, 1fr)); gap:14px; }
.dm-chiplist{ display:flex; flex-direction:column; gap:5px; margin-top:10px; }
.dm-tchip{ display:flex; justify-content:space-between; gap:10px; font-size:12.5px; padding:5px 9px; background:var(--w60); border-radius:6px; min-width:0; }
.dm-tchip span:first-child{ overflow-wrap:anywhere; }
.dm-tchip span:last-child{ color:var(--text-muted); white-space:nowrap; font-variant-numeric:tabular-nums; }

/* Agents at work (2026-10-17): the NC811 robot gets its own row above the running agent jobs */
.ops-agent-robot{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin:4px 0 12px;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:var(--surface)}
.ops-robot-label{font-size:12px;font-weight:600;color:var(--text-muted);white-space:nowrap}
.ops-agent-robot .ops-robot{flex:1;min-width:240px;margin:0;border-top:0;padding-top:0}
.ops-atlas-sec{padding-top:6px}
@keyframes opsRowIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* Client checks (2026-10-20): one card per client, last check per 811 + last Sheet/Scribble sync, live from ops_jobs */
.ops-ck-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:12px;margin-top:14px}
.ops-ck{display:flex;flex-direction:column;gap:12px;min-width:0;padding:14px 16px;border-radius:14px;border:1px solid var(--glass-border);background:var(--glass-bg);box-shadow:0 2px 10px rgba(3,9,20,.12)}
.ops-ck.is-running{border-color:var(--ops-run);animation:ops-pulse 2.4s cubic-bezier(.16,1,.3,1) infinite}
.ops-ck-h{display:flex;align-items:baseline;justify-content:space-between;gap:10px;min-width:0}
.ops-ck-h b{font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ops-ck-sum{font-size:12px;font-weight:600;white-space:nowrap}
.ops-ck-sum.is-ok{color:var(--ops-clear-ink)} .ops-ck-sum.is-late{color:var(--ops-warn-ink)} .ops-ck-sum.is-bad{color:var(--ops-open-ink)} .ops-ck-sum.is-run{color:var(--ops-run)}
.ops-ck-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.ops-ck-sync{padding-top:10px;border-top:1px solid var(--glass-border)}
.ops-ck-item{display:grid;grid-template-columns:44px minmax(0,1fr);gap:10px;align-items:start}
.ops-ck-tag{font-size:11px;font-weight:700;letter-spacing:.05em;text-align:center;padding:3px 0;border-radius:6px;background:var(--w60);color:var(--text)}
.ops-ck-body{display:flex;flex-direction:column;gap:2px;min-width:0}
.ops-ck-body .queue-progress{margin:4px 0 2px}
.ops-ck-line{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--text)}
.ops-ck-meta{font-size:12px;color:var(--text-muted);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.ops-ck-dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex:none;background:var(--text-muted)}
.ops-ck-dot.is-ok{background:var(--clear)} .ops-ck-dot.is-late{background:var(--warn)} .ops-ck-dot.is-bad{background:var(--open)}
.ops-ck-dot.is-run{background:var(--ops-run);box-shadow:0 0 0 3px color-mix(in srgb,var(--ops-run) 30%,transparent);animation:ops-ck-blink 1.6s ease-in-out infinite}
.ops-legend .ops-ck-dot{margin-right:6px;vertical-align:1px}
@keyframes ops-ck-blink{50%{opacity:.45}}
@media (prefers-reduced-motion:reduce){.ops-ck.is-running,.ops-ck-dot.is-run{animation:none}}
/* Report button (bottom right of each client card) + the client report dialog (datamap.js openReport) */
.ops-ck-f{display:flex;justify-content:flex-end;margin-top:auto}
.ops-ck-rep{min-height:34px;padding:4px 14px;font-weight:600;color:var(--turquoise);border-color:color-mix(in srgb,var(--turquoise) 55%,transparent)}
.ops-rp{width:min(1040px,calc(100vw - 32px));max-height:calc(100vh - 48px);padding:0;border:1px solid var(--glass-border);border-radius:16px;background:var(--surface);color:var(--text);box-shadow:0 24px 64px rgba(3,9,20,.45);overflow:hidden}
.ops-rp[open]{display:flex;flex-direction:column}
.ops-rp::backdrop{background:rgba(3,9,20,.55)}
.ops-rp h2{margin:0;font-size:19px}
.ops-rp h3{margin:0 0 10px;font-size:15px;display:flex;align-items:center;gap:8px}
.ops-rp p{margin:0}
.ops-rp-h{display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;align-items:flex-start;padding:14px 18px;border-bottom:1px solid var(--glass-border)}
.ops-rp-h .dm-note{font-size:12px;color:var(--text-muted);margin-top:2px}
.ops-rp-acts{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.ops-rp-acts .ops-alert-pop-x{font-size:24px;min-width:40px;min-height:40px}
.ops-rp-body{overflow:auto;padding:14px 18px 22px;display:flex;flex-direction:column;gap:18px;overscroll-behavior:contain}
.ops-rp-kpis{display:flex;flex-wrap:wrap;gap:8px}
.ops-rp-k{display:flex;flex-direction:column;min-width:110px;padding:8px 12px;border-radius:10px;border:1px solid var(--glass-border);background:var(--glass-bg);font-size:12px;color:var(--text-muted)}
.ops-rp-k b{font-size:20px;color:var(--text);font-variant-numeric:tabular-nums}
.ops-rp-k.is-clear b{color:var(--ops-clear-ink)} .ops-rp-k.is-open b{color:var(--ops-open-ink)} .ops-rp-k.is-warn b{color:var(--ops-warn-ink)}
.ops-rp-sec{padding:12px 14px;border-radius:12px;border:1px solid var(--glass-border);background:var(--glass-bg);min-width:0}
.ops-rp-sec.is-bad{border-color:color-mix(in srgb,var(--open) 55%,transparent)}
.ops-rp-sec.is-warn{border-color:color-mix(in srgb,var(--warn) 55%,transparent)}
.ops-rp-state{display:flex;flex-direction:column;gap:6px;padding:10px 0;border-top:1px solid var(--glass-border)}
.ops-rp-state:first-of-type{border-top:0;padding-top:0}
.ops-rp-sh{display:flex;gap:10px;align-items:baseline;font-size:13px;flex-wrap:wrap}
.ops-rp-sh .ops-ck-tag{min-width:40px}
.ops-rp .is-clear{color:var(--ops-clear-ink)} .ops-rp .is-open{color:var(--ops-open-ink)}
.ops-rp-bar{margin:2px 0 0;max-width:420px}
.ops-rp-bar i{background:var(--clear)}
.ops-rp-sub{display:block;font-size:11.5px;color:var(--text-muted);font-weight:400}
.ops-rp-scroll{overflow-x:auto;max-width:100%}
.ops-rp-t{width:100%;border-collapse:collapse;font-size:12.5px;font-variant-numeric:tabular-nums}
.ops-rp-t th,.ops-rp-t td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--glass-border);vertical-align:top}
.ops-rp-t thead th{font-size:11px;font-weight:600;letter-spacing:.03em;color:var(--text-muted);white-space:nowrap}
.ops-rp-t tbody th{font-weight:600}
.ops-rp-t tr.is-seen{opacity:.5}
.ops-rp-cmp{max-width:620px}
.ops-rp-chrow th,.ops-rp-chrow td{border-bottom:0}
.ops-rp-d{font-weight:700} .ops-rp-d.is-good{color:var(--ops-clear-ink)} .ops-rp-d.is-bad{color:var(--ops-open-ink)}
.ops-rp-chg{font-size:12.5px;display:flex;flex-wrap:wrap;gap:4px 6px;align-items:center}
.ops-rp-chg.is-clear b{color:var(--ops-clear-ink)} .ops-rp-chg.is-open b{color:var(--ops-open-ink)}
.ops-rp-res{font-size:12.5px;color:var(--text);line-height:1.45}
.ops-rp-res b{margin-right:6px}
.ops-rp-tk{font:inherit;font-weight:600;font-variant-numeric:tabular-nums;color:var(--turquoise);background:none;border:0;padding:2px 0;cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.ops-rp-tk:hover,.ops-rp-tk:focus-visible{color:var(--text)}
.ops-rp-tk:focus-visible,.ops-ck-rep:focus-visible{outline:2px solid var(--turquoise);outline-offset:2px}
.ops-rp-pill{display:inline-block;font-size:11px;font-weight:700;padding:1px 8px;border-radius:99px;border:1px solid var(--glass-border);white-space:nowrap}
.ops-rp-pill.is-clear{color:var(--ops-clear-ink);border-color:color-mix(in srgb,var(--clear) 55%,transparent)}
.ops-rp-pill.is-open{color:var(--ops-open-ink);border-color:color-mix(in srgb,var(--open) 55%,transparent)}
.ops-rp-pill.is-warn{color:var(--ops-warn-ink);border-color:color-mix(in srgb,var(--warn) 55%,transparent)}
.ops-rp-more{margin-top:6px} .ops-rp-more summary{cursor:pointer;font-size:12.5px;color:var(--turquoise);min-height:32px;display:flex;align-items:center}
.ops-rp-com{display:block;min-width:220px;max-width:62ch;overflow-wrap:anywhere;line-height:1.4}
details.ops-rp-com summary{cursor:pointer;list-style:none} details.ops-rp-com summary::-webkit-details-marker{display:none}
.ops-rp-mo{color:var(--turquoise);font-weight:600;white-space:nowrap}
details.ops-rp-com[open] .ops-rp-mo{display:none}
.ops-rp-flow{display:flex;flex-wrap:wrap;gap:8px 18px;font-size:13px;margin-bottom:8px}
.ops-rp-flow b{font-size:16px;margin-right:4px}
.ops-rp-sync{margin:0 0 8px 18px;padding:0;font-size:12.5px}
.ops-rp .dm-acts{margin-top:6px}
.ops-rp .dm-acts .dm-note{font-size:12px;color:var(--text-muted)}
@media (max-width:700px){
  .ops-rp{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border-radius:0;border:0}
  .ops-rp-h{padding:12px 16px;padding-top:max(12px,env(safe-area-inset-top))}
  .ops-rp-body{padding:12px 16px 28px;padding-bottom:max(28px,env(safe-area-inset-bottom))}
  .ops-rp-k{min-width:calc(50% - 4px);flex:1 1 calc(50% - 4px)}
}
@media print{
  body *{visibility:hidden}
  .ops-rp,.ops-rp *{visibility:visible}
  .ops-rp{position:absolute;inset:0;width:100%;max-height:none;border:0;box-shadow:none;overflow:visible;background:#fff;color:#000}
  .ops-rp-body{overflow:visible}
  .ops-rp-acts,.ops-rp .dm-acts,.ops-rp-t td:last-child button{display:none}
}
