/* ============================================================
   Painel Diretor — dashboard moderno (desktop + celular/tablet)
   Carregado só no modo diretor. Escopo sob .dir-app / body.dir-mode.
   ============================================================ */

/* ────────────────────────────────────────────────────────────
   DESIGN TOKENS (handoff §8 "Flow / Painel Diretor")
   Tema CLARO por padrão; overrides para o modo escuro do app.
   Fontes: Hanken Grotesk (UI) + JetBrains Mono (timers/labels) com
   fallback de sistema (self-host das fontes p/ pixel-perfect — ver README §9).
   ──────────────────────────────────────────────────────────── */
.dir-app {
  /* acento (padrão roxo; trocar via [data-accent=azul|verde]) */
  --accent: #6d3aff;
  --accent-soft: #efeaff;
  --accent-strong: #5527d6;
  --glow: rgba(109, 58, 255, .55);
  --accent-grad: linear-gradient(135deg, var(--accent), var(--accent-strong));

  /* neutros (claro) */
  --bg: #f4f3f8;
  --sidebar: #131221;
  --surface: #ffffff;
  --inset: #fbfbfe;
  --line: #ececf4;
  --line-top: #eceaf3;
  --text: #1a1825;
  --text-2: #4b4960;
  --muted: #6b6880;
  --muted-2: #8b8aa0;
  --faint: #9b98ad;
  --faint-2: #7c7a90;
  /* sidebar text */
  --sb-text: #b9b7cc; --sb-label: #56536c; --sb-sub: #6f6c87;

  /* semânticas */
  --live: #df2540; --live-soft: #fdeaee;
  --red-grad: linear-gradient(160deg, #ee3a52, #bf1d36);
  --red-grad-on: linear-gradient(160deg, #ff5169, #d61f3a);
  --red-shadow: 0 18px 40px -22px rgba(214, 31, 58, .6);
  --ok-dot: #22c074; --ok-text: #1c9d68; --ok-soft: #e4f6ee;
  --blue: #2f6bff; --blue-soft: #e8efff; --blue-text: #1f4fe0;
  --screen: radial-gradient(120% 120% at 50% 0%, #23212f, #0f0e17);

  /* raios / sombras / fontes */
  --r-card: 20px; --r-tile: 14px; --r-ctl: 11px; --r-pill: 8px;
  --sh-card: 0 1px 2px rgba(20,18,40,.04), 0 18px 36px -24px rgba(20,18,40,.18);
  --sh-accent: 0 10px 22px -10px var(--glow);
  --sh-nav: 0 12px 24px -12px var(--glow);
  --font-ui: 'Hanken Grotesk', -apple-system, BlinkMacSystemFont, 'Inter', 'Segoe UI', Roboto, sans-serif;
  --font-mono: 'JetBrains Mono', ui-monospace, 'SFMono-Regular', Menlo, monospace;

  /* Remap das variáveis legadas (--d-*) → novos tokens: retema o painel inteiro
     para o visual claro/roxo do handoff sem reescrever cada regra. */
  --d-bg: var(--bg);
  --d-bg2: var(--inset);
  --d-card: var(--surface);
  --d-card2: var(--inset);
  --d-border: var(--line);
  --d-text: var(--text);
  --d-dim: var(--muted);
  --d-faint: var(--faint);
  --d-accent: var(--accent);
  --d-blue: var(--blue);
  --d-green: var(--ok-text);
  --d-red: var(--live);
  --d-cyan: var(--accent);
  font-family: var(--font-ui);
}

/* Sidebar permanece ESCURA: re-escopo das variáveis p/ texto claro sobre fundo escuro. */
.dir-side {
  --d-bg2: var(--sidebar);
  --d-card: rgba(255,255,255,.05);
  --d-card2: rgba(255,255,255,.05);
  --d-border: rgba(255,255,255,.06);
  --d-text: #ffffff;
  --d-dim: var(--sb-text);
  --d-faint: var(--sb-sub);
}
.dir-app[data-accent='azul']  { --accent:#2f6bff; --accent-soft:#e8efff; --accent-strong:#1f4fe0; --glow:rgba(47,107,255,.55); }
.dir-app[data-accent='verde'] { --accent:#12a96b; --accent-soft:#e2f6ec; --accent-strong:#0c8a57; --glow:rgba(18,169,107,.55); }

/* Overrides para o modo ESCURO do app (mantém o toggle dark/light) */
[data-theme='dark'] .dir-app {
  --bg: #0c0b14;
  --surface: #15131f;
  --inset: #100e1a;
  --line: #221f33;
  --line-top: #221f33;
  --text: #eceaf6;
  --text-2: #c7c4d8;
  --muted: #9b98ad;
  --muted-2: #807d95;
  --faint: #6f6c87;
  --faint-2: #6f6c87;
  --accent-soft: #221a3a;
  --blue-soft: #16224a;
  --ok-soft: #11261c;
  --live-soft: #2a1419;
  --sh-card: 0 1px 2px rgba(0,0,0,.3), 0 18px 36px -24px rgba(0,0,0,.6);
}

@keyframes wv    { 0% { transform: scaleY(.2); } 100% { transform: scaleY(1); } }
@keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(255,255,255,.5); } 70% { box-shadow: 0 0 0 24px rgba(255,255,255,0); } 100% { box-shadow: 0 0 0 0 rgba(255,255,255,0); } }
@keyframes dblink { 0%,100% { opacity: 1; } 50% { opacity: .25; } }

body.dir-mode #topbar { display: none; }
body.dir-mode #dock { display: none; }
body.dir-mode .view-root { padding: 0; overflow: hidden; max-width: none; margin: 0; }

.dir-app {
  --d-bg: #080b14;
  --d-bg2: #0d1320;
  --d-card: #111827;
  --d-card2: #161f33;
  --d-border: #1f2940;
  --d-soft: #1a2336;
  --d-text: #e8edf6;
  --d-dim: #94a2bd;
  --d-faint: #5c6986;
  --d-accent: #7c5cff;
  --d-blue: #3b82f6;
  --d-cyan: #22d3ee;
  --d-green: #22c55e;
  --d-amber: #f59e0b;
  --d-red: #ef4444;
  --d-r: 16px;
  --d-r2: 12px;
  height: 100%;
  background:
    radial-gradient(1200px 600px at 70% -10%, rgba(124,92,255,0.10), transparent 60%),
    radial-gradient(900px 500px at -10% 110%, rgba(59,130,246,0.08), transparent 60%),
    var(--d-bg);
  color: var(--d-text);
  display: grid;
  grid-template-columns: 232px 1fr;
  overflow: hidden;
  font-size: 14px;
}
.dir-app * { box-sizing: border-box; }

/* ── Tema CLARO do Painel Diretor (mantém layout/efeitos; ajusta cores) ── */
[data-theme="light"] .dir-app {
  --d-bg: #eef1f8;
  --d-bg2: #ffffff;
  --d-card: #ffffff;
  --d-card2: #f4f7fc;
  --d-border: #e4e9f3;
  --d-soft: #eef2f9;
  --d-text: #0f1728;
  --d-dim: #54607a;
  --d-faint: #8995ac;
  background:
    radial-gradient(1200px 600px at 70% -10%, rgba(124,92,255,0.08), transparent 60%),
    radial-gradient(900px 500px at -10% 110%, rgba(59,130,246,0.06), transparent 60%),
    var(--d-bg);
}
[data-theme="light"] .dir-topbar { background: rgba(255,255,255,0.72); }
/* botão de tema na topbar do diretor */
[data-theme="light"] .dir-ic#dir-theme, .dir-ic#dir-theme { font-size: 0.95rem; }
/* VU LED do botão de falar no claro: gaps claros + pico escuro */
[data-theme="light"] .dir-app .dtalk-vu { background: #dde4ef; }
[data-theme="light"] .dir-app .dtalk-vu .vseg { background: repeating-linear-gradient(90deg, transparent 0 6px, rgba(255,255,255,0.9) 6px 8px); }
[data-theme="light"] .dir-app .dtalk-vu .vp { background: #0f1728; box-shadow: 0 0 5px rgba(15,23,40,0.5); }
[data-theme="light"] .dir-app .dtalk-vu .vf { background: linear-gradient(90deg, #059669, #16a34a 45%, #d97706 72%, #e11d48 92%); }
/* prévia/monitor no claro */
[data-theme="light"] .dir-app .prev .thumb { background: linear-gradient(135deg, #e7edf6, #dfe6f1); }

/* ── Sidebar ── */
.dir-side { display: flex; flex-direction: column; gap: 0.2rem; padding: 0.9rem 0.7rem; border-right: 1px solid var(--d-border); background: linear-gradient(180deg, rgba(124,92,255,0.05), transparent 30%), var(--d-bg2); overflow-y: auto; }
.dir-brand { display: flex; align-items: center; gap: 0.6rem; padding: 0.4rem 0.4rem 1rem; }
.dir-brand .brand-plate { display: inline-grid; place-items: center; padding: 0.45rem 0.7rem; border-radius: 11px; background: linear-gradient(135deg, #1a2236, #0a0f18); box-shadow: inset 0 0 0 1px rgba(255,255,255,0.06), 0 6px 16px rgba(0,0,0,0.3); }
.dir-brand .brand-logo { height: 30px; width: auto; display: block; }
.dir-brand .brand-tag { font-size: 0.56rem; font-weight: 800; letter-spacing: 0.12em; color: var(--d-accent); background: rgba(124,92,255,0.16); padding: 3px 8px; border-radius: 999px; }
.dir-brand .logo { width: 34px; height: 34px; border-radius: 10px; background: linear-gradient(135deg, var(--d-accent), var(--d-blue)); display: grid; place-items: center; font-weight: 900; color: #fff; box-shadow: 0 6px 18px rgba(124,92,255,0.4); }
.dir-brand .bt { font-weight: 800; letter-spacing: 0.02em; }
.dir-brand .bt small { display: inline-block; margin-left: 6px; font-size: 0.58rem; font-weight: 800; letter-spacing: 0.1em; color: var(--d-accent); background: rgba(124,92,255,0.16); padding: 2px 7px; border-radius: 999px; vertical-align: middle; }
.dir-nav { display: flex; flex-direction: column; gap: 0.15rem; }
.dir-nav button { display: flex; align-items: center; gap: 0.7rem; padding: 0.62rem 0.7rem; border: 1px solid transparent; background: transparent; color: var(--d-dim); border-radius: var(--d-r2); font-weight: 600; font-size: 0.88rem; cursor: pointer; transition: 140ms; text-align: left; width: 100%; }
.dir-nav button .ni { width: 20px; text-align: center; opacity: 0.9; }
.dir-nav button:hover { background: var(--d-card); color: var(--d-text); }
.dir-nav button.active { background: linear-gradient(135deg, rgba(124,92,255,0.22), rgba(59,130,246,0.14)); color: #fff; border-color: rgba(124,92,255,0.4); }
.dir-nav button .tag { margin-left: auto; font-size: 0.6rem; font-weight: 800; background: var(--d-soft); color: var(--d-dim); padding: 1px 7px; border-radius: 999px; }
.dir-nav button.active .tag { background: rgba(124,92,255,0.3); color: #fff; }
.dir-status { margin-top: auto; background: var(--d-card); border: 1px solid var(--d-border); border-radius: var(--d-r2); padding: 0.7rem; }
.dir-status h4 { margin: 0 0 0.5rem; font-size: 0.62rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--d-faint); }
.dir-status .srow { display: flex; align-items: center; gap: 0.5rem; padding: 0.22rem 0; font-size: 0.78rem; }
.dir-status .srow .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--d-green); box-shadow: 0 0 6px var(--d-green); }
.dir-status .srow .lbl { color: var(--d-dim); }
.dir-status .srow .val { margin-left: auto; color: var(--d-faint); font-size: 0.7rem; }
.dir-user { display: flex; align-items: center; gap: 0.6rem; margin-top: 0.6rem; padding: 0.4rem 0.5rem; }
.dir-user .av { width: 32px; height: 32px; border-radius: 9px; background: linear-gradient(135deg, var(--d-blue), var(--d-cyan)); display: grid; place-items: center; font-weight: 800; color: #04121a; }
.dir-user .nm { font-weight: 700; font-size: 0.82rem; }
.dir-user .sb { font-size: 0.66rem; color: var(--d-faint); }

/* ── Body / topbar ── */
.dir-body { display: flex; flex-direction: column; overflow: hidden; }
.dir-topbar { display: flex; align-items: center; gap: 0.7rem; padding: 14px 26px; border-bottom: 1px solid var(--line-top); background: color-mix(in srgb, var(--bg) 85%, transparent); backdrop-filter: blur(10px); }
.dir-topbar .spacer { flex: 1; }
/* título da página */
.dtb-title { min-width: 0; }
.dtb-title h1 { margin: 0; font: 800 19px/1.15 var(--font-ui); letter-spacing: -.02em; color: var(--text); }
.dtb-sub { margin-top: 3px; font: 500 11px/1 var(--font-mono); color: var(--faint); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dtb-sub #dir-dur2 { color: var(--accent); }
/* segmented Studio / Control Room */
.dseg { display: inline-flex; gap: 3px; margin-left: 14px; padding: 3px; background: var(--line); border-radius: 11px; }
.dseg button { border: 0; background: none; cursor: pointer; font: 700 12px/1 var(--font-ui); color: var(--muted); padding: 7px 14px; border-radius: 8px; transition: 140ms; }
.dseg button.active { background: var(--surface); color: var(--accent-strong); box-shadow: 0 2px 8px rgba(20,18,40,.12); }
/* chips e controles à direita */
.dchip { display: inline-flex; align-items: center; gap: 6px; font: 600 13px/1 var(--font-mono); color: var(--text); background: var(--surface); border: 1px solid var(--line-top); padding: 8px 11px; border-radius: 10px; }
.dchip .ok { color: var(--ok-text); }
.dctl { width: 38px; height: 38px; border-radius: 10px; background: var(--surface); border: 1px solid var(--line-top); color: var(--muted); display: grid; place-items: center; cursor: pointer; position: relative; transition: 140ms; }
.dctl:hover { color: var(--text); }
.dctl .badge { position: absolute; top: -5px; right: -5px; min-width: 17px; height: 17px; border-radius: 9px; background: var(--accent); color: #fff; font: 700 10px/1 var(--font-ui); display: grid; place-items: center; border: 2px solid var(--bg); padding: 0 4px; }
.dctl.dir-logout { width: auto; gap: 7px; padding: 0 13px; font: 700 12.5px/1 var(--font-ui); }
.dctl.dir-logout:hover { color: var(--live); border-color: var(--live); }
.dir-stat { display: flex; align-items: center; gap: 0.4rem; font-size: 0.78rem; color: var(--d-dim); background: var(--d-card); border: 1px solid var(--d-border); padding: 0.35rem 0.7rem; border-radius: 999px; }
.dir-stat .ok { color: var(--d-green); }
.dir-clock { font-variant-numeric: tabular-nums; font-weight: 700; color: var(--d-text); }
.dir-ic { width: 34px; height: 34px; border-radius: 9px; background: var(--d-card); border: 1px solid var(--d-border); color: var(--d-dim); display: grid; place-items: center; cursor: pointer; position: relative; }
.dir-ic:hover { color: var(--d-text); }
.dir-ic .badge { position: absolute; top: -4px; right: -4px; background: var(--d-accent); color: #fff; font-size: 0.58rem; font-weight: 800; min-width: 16px; height: 16px; border-radius: 999px; display: grid; place-items: center; padding: 0 4px; }
.dir-logout { margin-left: 0.2rem; height: 34px; border-radius: 9px; border: 1px solid var(--d-border); background: var(--d-card); color: var(--d-dim); padding: 0 0.8rem; font-size: 0.82rem; font-weight: 700; cursor: pointer; transition: 140ms; }
.dir-logout:hover { color: var(--d-red); border-color: var(--d-red); }

/* ── Colunas ── */
.dir-cols { flex: 1; display: grid; grid-template-columns: 1fr 340px; gap: 1rem; padding: 1rem; overflow: hidden; }
.dir-main, .dir-right { overflow-y: auto; display: flex; flex-direction: column; gap: 1rem; padding-right: 2px; }
.dir-main::-webkit-scrollbar, .dir-right::-webkit-scrollbar, .dir-side::-webkit-scrollbar { width: 8px; }
.dir-main::-webkit-scrollbar-thumb, .dir-right::-webkit-scrollbar-thumb, .dir-side::-webkit-scrollbar-thumb { background: var(--d-soft); border-radius: 6px; }

/* ── Cards genéricos ── */
.dcard { background: linear-gradient(180deg, var(--d-card), var(--d-bg2)); border: 1px solid var(--d-border); border-radius: var(--d-r); padding: 1rem; }
.dcard-h { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.8rem; }
.dcard-h h3 { margin: 0; font-size: 0.7rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--d-dim); font-weight: 800; }
.dcard-h .link { margin-left: auto; font-size: 0.72rem; color: var(--d-accent); cursor: pointer; }

/* ── Program bar (topo do main) ── */
.dir-program { display: grid; grid-template-columns: 1fr 280px; gap: 1rem; }
.prog-live { background: linear-gradient(180deg, var(--d-card), var(--d-bg2)); border: 1px solid var(--d-border); border-radius: var(--d-r); padding: 1rem 1.2rem; }
.prog-live .pl-tag { font-size: 0.66rem; letter-spacing: 0.1em; color: var(--d-faint); text-transform: uppercase; display: flex; align-items: center; gap: 0.5rem; }
.live-pill { display: inline-flex; align-items: center; gap: 5px; color: var(--d-red); font-weight: 800; font-size: 0.66rem; }
.live-pill::before { content: ''; width: 7px; height: 7px; border-radius: 50%; background: var(--d-red); box-shadow: 0 0 8px var(--d-red); animation: dpulse 1.3s infinite; }
@keyframes dpulse { 0%,100% { opacity: 1; } 50% { opacity: 0.35; } }
.prog-live h2 { margin: 0.4rem 0 0.2rem; font-size: 1.5rem; letter-spacing: -0.01em; }
.prog-live .pl-sub { color: var(--d-dim); font-size: 0.8rem; display: flex; align-items: baseline; gap: 0.5rem; }
.prog-live .dur { font-variant-numeric: tabular-nums; font-weight: 800; font-size: 1.1rem; color: var(--d-text); }
.prog-vu { display: flex; align-items: flex-end; gap: 3px; height: 64px; margin-top: 0.9rem; }
.prog-vu i { flex: 1; min-width: 2px; background: linear-gradient(180deg, var(--accent), var(--blue)); border-radius: 2px; height: 10%; transition: height 80ms; opacity: 0.9; }

.prog-air { border-radius: var(--d-r); border: 1px solid var(--d-border); padding: 1rem; background: linear-gradient(180deg, rgba(239,68,68,0.06), var(--d-bg2)); display: flex; flex-direction: column; }
.prog-air.on { border-color: rgba(239,68,68,0.6); box-shadow: inset 0 0 30px rgba(239,68,68,0.12); }
.prog-air .pa-top { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; }
/* Botão de travar (latch) do PTT do diretor — só ícone */
.dir-lock { width: 40px; height: 40px; flex-shrink: 0; display: grid; place-items: center;
  border-radius: 50%; border: 1px solid rgba(255,255,255,0.25); background: rgba(0,0,0,0.18); color: #fff; cursor: pointer; transition: 140ms; }
.dir-lock svg { width: 20px; height: 20px; }
.dir-lock:hover { background: rgba(0,0,0,0.32); }
.dir-lock.on { background: #0d9f63; border-color: transparent; box-shadow: 0 0 0 3px rgba(16,185,129,0.35); animation: dpulse 1.4s infinite; }
.prog-air.ptt-big.locked { background: linear-gradient(160deg, #16c98a, #0d9f63); box-shadow: 0 0 0 4px rgba(16,185,129,0.28), 0 18px 46px rgba(16,185,129,0.5); }
.prog-air.ptt-big.locked .pa-state { color: #fff; }
.prog-air .pa-state { font-size: 1.6rem; font-weight: 900; color: var(--d-faint); letter-spacing: 0.02em; }
.prog-air.on .pa-state { color: var(--d-red); }
.pgm-chip { font-size: 0.6rem; font-weight: 800; color: var(--d-accent); background: rgba(124,92,255,0.16); padding: 2px 8px; border-radius: 999px; letter-spacing: 0.06em; }
.prog-air .pa-mic { display: flex; align-items: center; gap: 0.7rem; margin-top: auto; padding-top: 0.8rem; }
.prog-air .pa-mic .mi { width: 44px; height: 44px; border-radius: 12px; background: var(--d-card2); display: grid; place-items: center; font-size: 1.2rem; }
.prog-air.on .pa-mic .mi { background: var(--d-red); color: #fff; box-shadow: 0 0 20px rgba(239,68,68,0.5); }
.prog-air .pa-mic .t { font-weight: 700; }
.prog-air .pa-mic .s { font-size: 0.7rem; color: var(--d-dim); display: flex; align-items: center; gap: 5px; }
.prog-air .pa-mic .s::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: var(--d-faint); }
.prog-air.on .pa-mic .s::before { background: var(--d-green); box-shadow: 0 0 6px var(--d-green); }

/* ── Caixa "PROGRAMA AO VIVO" vira GRANDE BOTÃO PTT vermelho ── */
.prog-air.ptt-big {
  cursor: pointer; user-select: none; -webkit-user-select: none; outline: none;
  background: linear-gradient(160deg, #e23b3b, #b01e1e);
  border: 1px solid rgba(255,255,255,0.16);
  box-shadow: 0 14px 34px rgba(225,40,40,0.40), inset 0 -8px 20px rgba(0,0,0,0.25);
  transition: transform 120ms, box-shadow 160ms, background 160ms;
}
.prog-air.ptt-big .pa-state { color: rgba(255,255,255,0.85); }
.prog-air.ptt-big .pgm-chip { background: rgba(255,255,255,0.22); color: #fff; }
.prog-air.ptt-big .pa-mic .mi { background: rgba(255,255,255,0.18); color: #fff; box-shadow: none; }
.prog-air.ptt-big .pa-mic .t { color: #fff; font-weight: 900; font-size: 1.05rem; letter-spacing: 0.03em; }
.prog-air.ptt-big .pa-mic .s { color: rgba(255,255,255,0.82); }
.prog-air.ptt-big .pa-mic .s::before { background: rgba(255,255,255,0.7); }
.prog-air.ptt-big:hover { box-shadow: 0 16px 42px rgba(225,40,40,0.55); }
.prog-air.ptt-big:active, .prog-air.ptt-big.on {
  transform: scale(0.985);
  background: linear-gradient(160deg, #ff5b5b, #d11e1e);
  box-shadow: 0 0 0 4px rgba(255,80,80,0.28), 0 18px 46px rgba(225,40,40,0.62);
}
.prog-air.ptt-big.on .pa-state, .prog-air.ptt-big.on .pa-mic .s { color: #fff; }
.prog-air.ptt-big.on .pa-mic .s::before { background: #fff; box-shadow: 0 0 8px #fff; }

/* ── Monitor PGM na lateral (compacto) ── */
.pgm-side .pgm-wrap { border-radius: 10px; }
.pgm-side .pgm-bar { background: transparent; padding: 0.55rem 0 0; }
.pgm-side .pgm-bar input { font-size: 0.78rem; }
.dcard-h .link#pgm-expand { cursor: pointer; }

/* ── Modal do Monitor PGM (fundo fosco) ── */
.pgm-modal { position: fixed; inset: 0; z-index: 130; display: grid; place-items: center; padding: 2rem; }
.pgm-modal.hidden { display: none; }
.pgm-modal-bg { position: absolute; inset: 0; background: rgba(3,6,12,0.72); backdrop-filter: blur(10px); }
.pgm-modal-card { position: relative; width: min(1100px, 94vw); max-height: 92vh; display: flex; flex-direction: column; overflow: hidden;
  background: linear-gradient(180deg, var(--d-card), var(--d-bg2)); border: 1px solid var(--d-border); border-radius: 16px;
  box-shadow: 0 30px 90px rgba(0,0,0,0.6); animation: afPop 0.22s cubic-bezier(.2,1.2,.3,1); }
.pgm-modal-h { display: flex; align-items: center; justify-content: space-between; padding: 0.9rem 1.2rem; border-bottom: 1px solid var(--d-border); }
.pgm-modal-h h3 { margin: 0; font-size: 1.02rem; }
.pgm-modal-body { padding: 1rem 1.2rem 1.2rem; overflow: auto; }
.pgm-modal-body .pgm-wrap { border-radius: 12px; }
@keyframes afPop { from { transform: translateY(12px) scale(0.97); opacity: 0; } to { transform: none; opacity: 1; } }

/* ── Botões de Comunicação PTT (premium/fluido) ── */
.chip-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 0.7rem; }
.commchip {
  --c1: #2a3550; --c2: #1b2336;
  position: relative; overflow: hidden; display: flex; align-items: center; gap: 0.75rem;
  background: linear-gradient(135deg, var(--d-card2), var(--d-bg2));
  border: 1px solid var(--d-border); border-radius: 16px; padding: 0.8rem 0.85rem;
  cursor: pointer; user-select: none; text-align: left; width: 100%;
  transition: transform 140ms cubic-bezier(.2,.8,.2,1), box-shadow 160ms, border-color 160ms;
}
.commchip::before { /* brilho superior sutil */
  content: ''; position: absolute; inset: 0; border-radius: inherit; pointer-events: none;
  background: radial-gradient(120% 80% at 0% 0%, rgba(255,255,255,0.06), transparent 60%);
}
.commchip:hover { transform: translateY(-2px); border-color: rgba(124,92,255,0.45); box-shadow: 0 10px 26px rgba(0,0,0,0.35); }
.commchip:active { transform: translateY(0) scale(0.98); }

/* avatar com gradiente por papel */
.commchip .cc-av {
  width: 42px; height: 42px; flex-shrink: 0; border-radius: 13px; display: grid; place-items: center;
  font-size: 1.2rem; color: #fff; background: linear-gradient(135deg, var(--c1), var(--c2));
  box-shadow: inset 0 -6px 12px rgba(0,0,0,0.25), 0 4px 12px rgba(0,0,0,0.3);
}
.commchip .cc-info { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; }
.commchip .cc-name { font-weight: 800; font-size: 0.92rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.commchip .cc-sub { font-size: 0.68rem; color: var(--d-dim); display: flex; align-items: center; gap: 5px; }
.commchip .cc-sub .dot { width: 7px; height: 7px; border-radius: 50%; background: var(--d-green); box-shadow: 0 0 7px var(--d-green); animation: ccpulse 1.8s infinite; }
.commchip.off .cc-sub .dot { background: var(--d-faint); box-shadow: none; animation: none; }
@keyframes ccpulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }
.commchip .cc-act { margin-left: auto; width: 26px; height: 26px; flex-shrink: 0; border-radius: 9px; display: grid; place-items: center; font-size: 0.8rem; color: var(--d-faint); background: rgba(255,255,255,0.03); }

/* cores por papel (avatar) */
.commchip.role-camera { --c1: #3b82f6; --c2: #1e40af; }
.commchip.role-producao { --c1: #f59e0b; --c2: #b45309; }
.commchip.role-direcao { --c1: #ef4444; --c2: #991b1b; }
.commchip.role-audio { --c1: #22d3ee; --c2: #0e7490; }
.commchip.role-custom { --c1: #7c5cff; --c2: #4c1d95; }
.commchip.off { opacity: 0.55; }
.commchip.off .cc-av { filter: grayscale(0.6); }

/* "Falar com TODOS" — destaque */
.commchip.all {
  background: linear-gradient(135deg, var(--d-accent), var(--d-blue)); border: none; color: #fff;
  box-shadow: 0 10px 28px rgba(124,92,255,0.35);
}
.commchip.all .cc-av { background: rgba(255,255,255,0.18); box-shadow: none; }
.commchip.all .cc-sub { color: rgba(255,255,255,0.85); }
.commchip.all .cc-act { color: #fff; background: rgba(255,255,255,0.18); }
.commchip.all:hover { box-shadow: 0 14px 34px rgba(124,92,255,0.5); }

/* selecionado (mira do PTT) — anel animado + check */
.commchip.sel { border-color: transparent; box-shadow: 0 0 0 2px var(--d-accent), 0 10px 26px rgba(124,92,255,0.35); }
.commchip.sel .cc-act { background: var(--d-accent); color: #fff; }
.commchip.sel::after { content: ''; position: absolute; inset: -1px; border-radius: inherit; border: 1.5px solid rgba(124,92,255,0.5); animation: dpulse 1.4s infinite; pointer-events: none; }

/* falando agora — glow ciano */
.commchip.talking { box-shadow: 0 0 0 2px var(--d-cyan), 0 0 24px rgba(34,211,238,0.4); }
.commchip.talking .cc-act { background: rgba(34,211,238,0.2); color: var(--d-cyan); }

/* ── Comunicação agrupada por categoria ── */
.comm-grouped { display: flex; flex-direction: column; gap: 0.85rem; }
.comm-group { display: flex; flex-direction: column; gap: 0.5rem; }
.comm-group-h { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem;
  background: var(--d-card2); border: 1px solid var(--d-border); border-radius: 10px; padding: 0.4rem 0.7rem;
  cursor: pointer; transition: 140ms; width: 100%; text-align: left; }
.comm-group-h:hover { border-color: rgba(124,92,255,0.45); }
.comm-group-h.on { background: linear-gradient(135deg, rgba(124,92,255,0.22), rgba(59,130,246,0.14)); border-color: rgba(124,92,255,0.5); }
.comm-group-h .cg-t { font-size: 0.7rem; font-weight: 800; letter-spacing: 0.06em; text-transform: uppercase; color: var(--d-dim); }
.comm-group-h.on .cg-t { color: #fff; }
.comm-group-h .cg-n { font-size: 0.62rem; font-weight: 800; color: var(--d-accent); background: rgba(124,92,255,0.16); border-radius: 999px; padding: 1px 8px; }

/* ── Alertas rápidos ── */
.alert-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(96px, 1fr)); gap: 0.55rem; }
.dalert { background: var(--d-card2); border: 1px solid var(--d-border); border-radius: var(--d-r2); padding: 0.7rem 0.5rem; text-align: center; cursor: pointer; transition: 120ms; font-size: 0.72rem; font-weight: 700; color: var(--d-text); display: flex; flex-direction: column; align-items: center; gap: 0.35rem; }
.dalert .ai { font-size: 1.1rem; }
.dalert:hover { border-color: var(--d-amber); color: var(--d-amber); }
.dalert.first { background: linear-gradient(135deg, var(--d-accent), var(--d-blue)); border: none; color: #fff; }
.dalert:active { transform: scale(0.96); }

/* ── Câmeras ── */
.cam-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 0.7rem; }
.camcard { background: var(--d-card2); border: 1px solid var(--d-border); border-radius: var(--d-r2); padding: 0.8rem; cursor: pointer; transition: 130ms; position: relative; }
.camcard:hover { border-color: var(--d-faint); }
.camcard.sel { border-color: var(--d-blue); box-shadow: 0 0 0 2px rgba(59,130,246,0.4); }
.camcard.talking { box-shadow: 0 0 0 2px var(--d-cyan); }
.camcard .cc-h { display: flex; align-items: center; justify-content: space-between; }
.camcard .num { font-size: 1.5rem; font-weight: 900; line-height: 1; }
.camcard .bars { color: var(--d-green); font-size: 0.7rem; }
.camcard.off { opacity: 0.5; }
.camcard.off .bars { color: var(--d-faint); }
.camcard .nm { font-size: 0.8rem; font-weight: 700; margin-top: 0.5rem; }
.camcard .sub { font-size: 0.68rem; color: var(--d-faint); }
.camcard .pgmtag { position: absolute; bottom: 8px; right: 8px; font-size: 0.55rem; font-weight: 800; color: var(--d-accent); background: rgba(124,92,255,0.18); padding: 1px 6px; border-radius: 5px; }
.camcard.add { display: grid; place-items: center; color: var(--d-faint); border-style: dashed; }

/* ── PGM monitor ── */
.pgm-wrap { border-radius: var(--d-r2); overflow: hidden; border: 1px solid var(--d-border); background: #000; position: relative; }
.pgm-wrap iframe, .pgm-wrap video { width: 100%; aspect-ratio: 16/9; display: block; border: 0; background: #000; }
.pgm-ph { aspect-ratio: 16/9; display: grid; place-items: center; gap: 0.5rem; background: radial-gradient(circle at 50% 40%, rgba(239,68,68,0.10), #0a0d16); color: var(--d-dim); }
.pgm-ph .micbig { font-size: 2rem; opacity: 0.6; }
.pgm-ph .noair { position: absolute; top: 10px; left: 12px; color: var(--d-red); font-weight: 900; }
.pgm-ph .pgmtag2 { position: absolute; top: 10px; right: 12px; }
.pgm-bar { display: flex; gap: 0.5rem; padding: 0.6rem; background: var(--d-bg2); }
.pgm-bar input { flex: 1; background: var(--d-card); border: 1px solid var(--d-border); color: var(--d-text); border-radius: 8px; padding: 0.5rem 0.7rem; }
.pgm-bar button { background: linear-gradient(135deg, var(--d-accent), var(--d-blue)); border: none; color: #fff; border-radius: 8px; padding: 0 1rem; font-weight: 700; cursor: pointer; }

/* ── Prévias ── */
.prev-row { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 0.7rem; }
.prev { border-radius: var(--d-r2); overflow: hidden; border: 1px solid var(--d-border); background: var(--d-card2); cursor: pointer; transition: 130ms; }
.prev:hover { border-color: var(--d-faint); }
.prev.sel { border-color: var(--d-blue); box-shadow: 0 0 0 2px rgba(59,130,246,0.35); }
.prev .thumb { aspect-ratio: 16/9; background: linear-gradient(135deg, #1a2233, #0e1422); display: grid; place-items: center; color: var(--d-faint); font-size: 1.4rem; position: relative; }
.prev .thumb .lv { position: absolute; top: 6px; left: 6px; width: 7px; height: 7px; border-radius: 50%; background: var(--d-green); box-shadow: 0 0 6px var(--d-green); }
.prev .cap { display: flex; align-items: center; justify-content: space-between; padding: 0.45rem 0.6rem; font-size: 0.74rem; font-weight: 600; }
.prev .cap .bars { color: var(--d-green); font-size: 0.66rem; }

/* ── Right column ── */
.qa-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.6rem; }
.qa { background: var(--d-card2); border: 1px solid var(--d-border); border-radius: var(--d-r2); padding: 0.8rem 0.4rem; text-align: center; cursor: pointer; transition: 120ms; display: flex; flex-direction: column; align-items: center; gap: 0.4rem; }
.qa:hover { border-color: var(--d-faint); transform: translateY(-1px); }
.qa .qi { width: 34px; height: 34px; border-radius: 10px; display: grid; place-items: center; font-size: 1rem; }
.qa .ql { font-size: 0.66rem; font-weight: 700; line-height: 1.2; color: var(--d-dim); }
.qa .qi.red { background: rgba(239,68,68,0.16); color: var(--d-red); }
.qa .qi.blue { background: rgba(59,130,246,0.16); color: var(--d-blue); }
.qa .qi.green { background: rgba(34,197,94,0.16); color: var(--d-green); }
.qa .qi.amber { background: rgba(245,158,11,0.16); color: var(--d-amber); }
.qa .qi.purple { background: rgba(124,92,255,0.18); color: var(--d-accent); }

.agenda .it { display: flex; align-items: center; gap: 0.7rem; padding: 0.55rem 0; border-bottom: 1px solid var(--d-soft); }
.agenda .it:last-child { border-bottom: 0; }
.agenda .it .tm { font-variant-numeric: tabular-nums; font-weight: 800; color: var(--d-text); font-size: 0.82rem; min-width: 44px; }
.agenda .it .ds { flex: 1; font-size: 0.82rem; }
.agenda .it .bd { width: 8px; height: 8px; border-radius: 50%; }
.agenda .it .kind { font-size: 0.58rem; font-weight: 800; padding: 1px 7px; border-radius: 999px; background: var(--d-soft); color: var(--d-dim); }

.events .ev { display: flex; align-items: center; gap: 0.6rem; padding: 0.5rem 0; border-bottom: 1px solid var(--d-soft); font-size: 0.8rem; }
.events .ev:last-child { border-bottom: 0; }
.events .ev .et { font-variant-numeric: tabular-nums; color: var(--d-faint); font-size: 0.72rem; min-width: 52px; }
.events .ev .ei { width: 26px; height: 26px; border-radius: 8px; background: var(--d-soft); display: grid; place-items: center; font-size: 0.8rem; }

/* PTT rápido (right) */
.ptt-quick { display: flex; flex-direction: column; align-items: center; gap: 0.6rem; padding: 0.5rem 0; }
.ptt-orb { width: 130px; height: 130px; border-radius: 50%; border: none; cursor: pointer; background: radial-gradient(circle at 50% 35%, #5b8bff, var(--d-blue)); color: #fff; display: grid; place-items: center; font-size: 2.2rem; box-shadow: 0 10px 30px rgba(59,130,246,0.4); transition: 120ms; user-select: none; }
.ptt-orb:active, .ptt-orb.active { transform: scale(1.04); background: radial-gradient(circle at 50% 35%, #ff6a6a, var(--d-red)); box-shadow: 0 0 0 10px rgba(239,68,68,0.18), 0 10px 40px rgba(239,68,68,0.5); }
.ptt-quick .lab { font-weight: 800; letter-spacing: 0.02em; }
.ptt-quick .sub { font-size: 0.72rem; color: var(--d-dim); }
.ptt-quick .qvu { width: 80%; height: 7px; background: var(--d-soft); border-radius: 999px; overflow: hidden; }
.ptt-quick .qvu i { display: block; height: 100%; width: 0%; background: linear-gradient(90deg, var(--d-green), var(--d-amber), var(--d-red)); }

/* ── Botão de falar do diretor (moderno) + VU ── */
.dir-talk { display: none; flex-direction: column; align-items: center; gap: 0.6rem; }
.dtalk-orb { width: 150px; height: 150px; border-radius: 50%; border: none; cursor: pointer; color: #fff;
  background: radial-gradient(circle at 50% 32%, #8f74ff, var(--d-accent) 55%, #5b8bff);
  box-shadow: 0 14px 38px rgba(124,92,255,0.45), inset 0 -8px 20px rgba(0,0,0,0.25);
  display: grid; place-items: center; transition: 120ms; user-select: none; -webkit-user-select: none; position: relative; }
.dtalk-orb .ic { font-size: 2.6rem; }
.dtalk-orb::after { content: ''; position: absolute; inset: -6px; border-radius: 50%; border: 2px solid rgba(124,92,255,0.35); }
.dtalk-orb:active, .dtalk-orb.active { transform: scale(1.05);
  background: radial-gradient(circle at 50% 32%, #ff7a7a, var(--d-red) 60%, #c81e1e);
  box-shadow: 0 0 0 12px rgba(239,68,68,0.18), 0 14px 44px rgba(239,68,68,0.55); }
.dtalk-orb.active::after { border-color: rgba(239,68,68,0.5); animation: dpulse 1s infinite; }
.dtalk-lab { font-weight: 900; letter-spacing: 0.04em; font-size: 1rem; text-align: center; }
.dtalk-sub { font-size: 0.76rem; color: var(--d-dim); }
.dtalk-vu { width: min(86%, 320px); height: 12px; background: #0a0f08; border: 1px solid var(--d-border); border-radius: 6px; overflow: hidden; position: relative; }
.dtalk-vu .vf { position: absolute; left: 0; top: 0; bottom: 0; width: 0%; background: linear-gradient(90deg, #16a34a, #22c55e 45%, #eab308 72%, #ef4444 92%); transition: width 70ms linear; }
.dtalk-vu .vseg { position: absolute; inset: 0; pointer-events: none; background: repeating-linear-gradient(90deg, transparent 0 6px, rgba(6,8,12,0.92) 6px 8px); }
.dtalk-vu .vp { position: absolute; top: 0; bottom: 0; width: 2px; background: #eafff2; box-shadow: 0 0 6px rgba(255,255,255,0.8); left: 0%; transition: left 110ms linear; }

/* Campo de mensagem do diretor */
.msg-to { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-bottom: 0.6rem; }
.msg-to .mt-chip { background: var(--d-card2); border: 1px solid var(--d-border); color: var(--d-text); border-radius: 999px; padding: 0.3rem 0.7rem; font-size: 0.72rem; font-weight: 700; cursor: pointer; transition: 120ms; }
.msg-to .mt-chip:hover { border-color: var(--d-accent); }
.msg-to .mt-chip.on { background: linear-gradient(135deg, var(--d-accent), var(--d-blue)); border-color: transparent; color: #fff; }
.msg-row { display: flex; gap: 0.5rem; margin-bottom: 0.7rem; }
.msg-row input { flex: 1; background: var(--d-card2); border: 1px solid var(--d-border); color: var(--d-text); border-radius: 10px; padding: 0.6rem 0.8rem; }
.msg-row input:focus { outline: none; border-color: var(--d-accent); }
.msg-row button { background: linear-gradient(135deg, var(--d-accent), var(--d-blue)); border: none; color: #fff; font-weight: 800; border-radius: 10px; padding: 0 1.1rem; cursor: pointer; }

/* ── Páginas secundárias (nav) ── */
.dir-page { display: none; flex-direction: column; gap: 1rem; }
.dir-page.active { display: flex; }
.dir-placeholder { display: grid; place-items: center; min-height: 50vh; color: var(--d-faint); text-align: center; gap: 0.5rem; }
.dir-placeholder .pi { font-size: 2.5rem; opacity: 0.5; }

/* ── Usuários da empresa ── */
.usr-form { display: grid; grid-template-columns: 1.2fr 1.4fr 1fr 0.9fr 1fr auto; gap: 0.5rem; margin-bottom: 0.6rem; }
.usr-form input, .usr-form select { background: var(--d-card2); border: 1px solid var(--d-border); color: var(--d-text); border-radius: 9px; padding: 0.55rem 0.7rem; font-size: 0.85rem; }
.usr-form input:focus, .usr-form select:focus { outline: none; border-color: var(--d-accent); }
.usr-form .btn { white-space: nowrap; }
.usr-err { color: var(--d-red); font-size: 0.8rem; min-height: 1em; margin: 0 0 0.4rem; }
.usr-list { display: flex; flex-direction: column; gap: 0.45rem; }
.usr-item { display: flex; align-items: center; gap: 0.7rem; background: var(--d-card2); border: 1px solid var(--d-border); border-radius: 11px; padding: 0.6rem 0.8rem; }
.usr-item.off { opacity: 0.5; }
.usr-item .ui-av { width: 36px; height: 36px; border-radius: 10px; background: linear-gradient(135deg, var(--d-accent), var(--d-blue)); display: grid; place-items: center; font-weight: 800; color: #fff; }
.usr-item .ui-info { display: flex; flex-direction: column; min-width: 0; flex: 1; }
.usr-item .ui-name { font-weight: 700; }
.usr-item .ui-sub { font-size: 0.74rem; color: var(--d-faint); }
.usr-item .ui-role { font-size: 0.74rem; font-weight: 700; color: var(--d-dim); background: var(--d-soft); border-radius: 999px; padding: 3px 10px; white-space: nowrap; }
.usr-item .ui-acts { display: flex; gap: 0.35rem; }
.usr-item .ui-acts .mini { width: 30px; height: 30px; border-radius: 8px; border: 1px solid var(--d-border); background: var(--d-card); color: var(--d-dim); cursor: pointer; }
.usr-item .ui-acts .mini:hover { color: var(--d-text); }
.usr-item .ui-acts .mini.danger:hover { color: var(--d-red); border-color: var(--d-red); }
@media (max-width: 900px) { .usr-form { grid-template-columns: 1fr 1fr; } }

/* Modal de usuário (novo/editar) */
.umodal { position: fixed; inset: 0; z-index: 120; display: grid; place-items: center; padding: 1rem; }
.umodal.hidden { display: none; }
.umodal-bg { position: absolute; inset: 0; background: rgba(3, 6, 12, 0.7); backdrop-filter: blur(4px); }
.umodal-card { position: relative; width: 460px; max-width: 100%; background: linear-gradient(180deg, var(--d-card), var(--d-bg2)); border: 1px solid var(--d-border); border-radius: 16px; box-shadow: var(--d-r) 0 40px rgba(0,0,0,0.6); box-shadow: 0 30px 80px rgba(0,0,0,0.6); animation: afPop 0.22s cubic-bezier(.2,1.2,.3,1); }
.umodal-h { display: flex; align-items: center; justify-content: space-between; padding: 1rem 1.2rem; border-bottom: 1px solid var(--d-border); }
.umodal-h h3 { margin: 0; font-size: 1.05rem; }
.umodal-x { background: none; border: none; color: var(--d-faint); font-size: 1.1rem; cursor: pointer; }
.umodal-x:hover { color: var(--d-text); }
.umodal-body { padding: 1.1rem 1.2rem; display: flex; flex-direction: column; gap: 0.7rem; }
.uf { display: flex; flex-direction: column; gap: 0.3rem; }
.uf > span { font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--d-faint); font-weight: 700; }
.uf input, .uf select { background: var(--d-card2); border: 1px solid var(--d-border); color: var(--d-text); border-radius: 10px; padding: 0.6rem 0.75rem; font-size: 0.9rem; }
.uf input:focus, .uf select:focus { outline: none; border-color: var(--d-accent); }
.uf input:disabled { opacity: 0.6; }
.uf-row { display: flex; gap: 0.7rem; }
.uf-row .uf { flex: 1; }
.umodal-err { color: var(--d-red); font-size: 0.82rem; min-height: 1em; margin: 0.2rem 0 0; }
.umodal-f { display: flex; justify-content: flex-end; gap: 0.6rem; padding: 0.9rem 1.2rem; border-top: 1px solid var(--d-border); }
@media (max-width: 480px) { .uf-row { flex-direction: column; } }

/* ── Navegação mobile (abas inferiores) ── */
.dir-mobnav { display: none; }

/* ============================================================
   RESPONSIVO — tablet/celular
   ============================================================ */
@media (max-width: 1100px) {
  .dir-cols { grid-template-columns: 1fr; }
  .dir-program { grid-template-columns: 1fr; }
}
/* ── Celular/Tablet: SÓ O ESSENCIAL — falar (programa/PTT + lista de canais) ── */
@media (max-width: 820px) {
  .dir-app { grid-template-columns: 1fr; }
  .dir-side { display: none; }
  .dir-mobnav { display: none; }          /* sem abas: foco total em falar */
  .dir-right { display: none; }           /* ações/próximas/eventos = só desktop */
  .dir-topbar { padding: 0.55rem 0.8rem; }
  .dir-topbar .hide-sm { display: none; }
  .dir-cols { grid-template-columns: 1fr; padding: 0.7rem; gap: 0.8rem; }

  /* essencial no mobile: programa (status) + falar (orbe+VU) + canais + mensagens.
     esconde só o que é de produção/desktop. */
  #sec-cameras, #sec-pgm, #sec-prev { display: none !important; }
  .dir-page:not([data-page="visao"]) { display: none !important; }
  /* ordem: programa (AO VIVO) → botão de falar → canais → mensagens */
  .dir-program { order: 0; }
  .dir-talk { display: flex; order: 1; }
  #sec-comunicacao { order: 2; }
  #sec-alertas { order: 3; }

  /* programa enxuto (só o status AO AR, sem o cartão de mic — o orbe assume) */
  .dir-program { grid-template-columns: 1fr; gap: 0.7rem; }
  .prog-air { display: none; }              /* o orbe .dir-talk substitui */
  .prog-live { padding: 0.8rem 1rem; }
  .prog-live h2 { font-size: 1.15rem; }
  .prog-vu { height: 22px; }

  /* lista de canais (câmeras/produção/direção) grande e tocável */
  #sec-comunicacao .chip-row { grid-template-columns: 1fr 1fr; gap: 0.6rem; }
  .commchip { padding: 0.9rem; }
  .commchip .cc-top { font-size: 0.95rem; }
  #sec-comunicacao .dcard-h .link { display: none; }
}
@media (max-width: 460px) {
  #sec-comunicacao .chip-row { grid-template-columns: 1fr; }
}

/* ============================================================
   Gravação (recording)
   ============================================================ */
.dir-nav button.rec-on { color: var(--d-red); }
.dir-nav button.rec-on .ni { animation: recPulse 1.3s infinite; }
@keyframes recPulse { 0%,100% { opacity: 1; } 50% { opacity: 0.35; } }

.rec-live { display: inline-flex; align-items: center; gap: 0.4rem; color: var(--d-red); font-size: 0.72rem; font-weight: 800; margin-left: 0.5rem; }
.rec-live i { width: 9px; height: 9px; border-radius: 50%; background: var(--d-red); box-shadow: 0 0 8px var(--d-red); animation: recPulse 1.1s infinite; }
.rec-live b { font-variant-numeric: tabular-nums; }

.rec-srcs-h { display: flex; justify-content: space-between; align-items: center; font-size: 0.78rem; color: var(--d-dim); margin-bottom: 0.6rem; }
.rec-allnone a { color: var(--d-accent); cursor: pointer; }
.rec-srcs { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 0.5rem; margin-bottom: 1rem; }
.rec-src { display: flex; align-items: center; gap: 0.55rem; background: var(--d-card2); border: 1px solid var(--d-border); border-radius: 10px; padding: 0.55rem 0.7rem; cursor: pointer; transition: 140ms; }
.rec-src:hover { border-color: var(--d-accent); }
.rec-src input { width: 16px; height: 16px; accent-color: var(--d-accent); flex-shrink: 0; }
.rec-src .rs-ico { font-size: 1rem; }
.rec-src .rs-name { flex: 1; min-width: 0; font-size: 0.84rem; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rec-src .rs-kind { font-size: 0.62rem; font-weight: 800; letter-spacing: 0.04em; color: var(--d-faint); text-transform: uppercase; }
.rec-src.rec-mix { background: linear-gradient(180deg, rgba(124,92,255,0.12), transparent), var(--d-card2); }
.rec-src.rec-dante .rs-kind { color: var(--d-cyan); }

.rec-dest { display: flex; align-items: center; flex-wrap: wrap; gap: 1rem; font-size: 0.84rem; color: var(--d-dim); margin-bottom: 1rem; }
.rec-radio { display: inline-flex; align-items: center; gap: 0.4rem; cursor: pointer; color: var(--d-text); }
.rec-radio input { accent-color: var(--d-accent); }
.rec-cfg.recording { opacity: 0.96; }

.rec-actions { display: flex; align-items: center; gap: 0.9rem; flex-wrap: wrap; }
.rec-hint { font-size: 0.72rem; color: var(--d-faint); }
.btn.rec-start { background: var(--d-red); color: #fff; border: none; font-weight: 800; padding: 0.7rem 1.3rem; border-radius: 11px; box-shadow: 0 10px 26px rgba(239,68,68,0.35); }
.btn.rec-start:hover { filter: brightness(1.08); }
.btn.rec-stop { background: var(--d-card2); color: var(--d-text); border: 1px solid var(--d-border); font-weight: 800; padding: 0.7rem 1.3rem; border-radius: 11px; }

.rec-list { display: flex; flex-direction: column; gap: 0.6rem; }
.rec-empty { color: var(--d-faint); font-size: 0.84rem; padding: 0.4rem 0; }
.rec-item { background: var(--d-card2); border: 1px solid var(--d-border); border-radius: 12px; padding: 0.7rem 0.85rem; }
.rec-item-h { display: flex; align-items: center; gap: 0.6rem; }
.rec-when { font-size: 0.84rem; font-weight: 700; flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rec-meta { font-size: 0.74rem; color: var(--d-dim); white-space: nowrap; }
.rec-meta .rec-rec { color: var(--d-red); }
.rec-del { background: none; border: none; cursor: pointer; font-size: 0.95rem; opacity: 0.7; }
.rec-del:hover { opacity: 1; }
.rec-trks { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-top: 0.6rem; }
.rec-trk { display: inline-flex; align-items: center; gap: 0.35rem; background: var(--d-card); border: 1px solid var(--d-border); color: var(--d-text); border-radius: 8px; padding: 0.4rem 0.6rem; font-size: 0.78rem; font-weight: 600; cursor: pointer; transition: 140ms; }
.rec-trk:hover { border-color: var(--d-accent); color: var(--d-accent); }
.rec-trk small { color: var(--d-faint); font-weight: 500; }

/* ============================================================
   Comunicação PTT — layout do design (cards de câmera + linhas)
   ============================================================ */
.dir-app .talk-all { width: 100%; display: flex; align-items: center; gap: 15px; padding: 16px 18px; border: 0; border-radius: 15px; cursor: pointer; background: var(--accent-grad); box-shadow: 0 14px 30px -16px var(--glow); margin-bottom: 16px; transition: transform .1s; }
.dir-app .talk-all:active { transform: scale(.99); }
.dir-app .talk-all .ta-ico { width: 38px; height: 38px; flex: none; border-radius: 11px; background: rgba(255,255,255,.18); display: grid; place-items: center; color: #fff; }
.dir-app .talk-all .ta-ico svg { width: 20px; height: 20px; }
.dir-app .talk-all .ta-txt { text-align: left; flex: 1; }
.dir-app .talk-all .ta-txt b { display: block; color: #fff; font: 800 15px/1 var(--font-ui); }
.dir-app .talk-all .ta-txt small { display: block; margin-top: 4px; color: rgba(255,255,255,.8); font: 500 10px/1 var(--font-mono); letter-spacing: .08em; text-transform: uppercase; }
.dir-app .talk-all .ta-sl { color: rgba(255,255,255,.85); display: grid; place-items: center; }
.dir-app .talk-all .ta-sl svg { width: 18px; height: 18px; }

.dir-app .comm-group { margin-top: 14px; }
.dir-app .cg2 { width: 100%; display: flex; align-items: center; justify-content: space-between; background: none; border: 0; cursor: pointer; padding: 0 2px 10px; }
.dir-app .cg2-t { font: 600 11px/1 var(--font-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--faint-2); display: flex; align-items: center; gap: 7px; }
.dir-app .cg2-n { font: 600 11px/1 var(--font-mono); color: var(--ok-text); }
.dir-app .cg2.on .cg2-t { color: var(--accent); }

.dir-app .cam-grid2 { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; }
.dir-app .cam-chip { text-align: left; background: var(--surface); border: 1.5px solid var(--line); border-radius: 14px; padding: 12px; cursor: pointer; transition: 140ms; display: block; }
.dir-app .cam-chip:hover { border-color: color-mix(in srgb, var(--accent) 45%, var(--line)); }
.dir-app .cam-chip .cc-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
.dir-app .cam-chip .cc-ico { width: 38px; height: 38px; border-radius: 11px; background: var(--accent-soft); color: var(--accent); display: grid; place-items: center; }
.dir-app .cam-chip .cc-ico svg { width: 19px; height: 19px; }
.dir-app .cam-chip .cc-tag { font: 700 9px/1 var(--font-mono); letter-spacing: .1em; color: var(--muted-2); background: var(--inset); border: 1px solid var(--line); padding: 3px 6px; border-radius: 6px; }
.dir-app .cam-chip .cc-id { font: 700 12.5px/1.2 var(--font-ui); color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dir-app .cam-chip .cc-st { margin-top: 5px; font: 600 11px/1 var(--font-ui); color: var(--muted-2); display: flex; align-items: center; gap: 5px; }
.dir-app .cam-chip .cc-st i { width: 7px; height: 7px; border-radius: 50%; background: var(--muted-2); }
.dir-app .cam-chip:not(.off) .cc-st { color: var(--ok-text); }
.dir-app .cam-chip:not(.off) .cc-st i { background: var(--ok-dot); box-shadow: 0 0 6px var(--ok-dot); }
.dir-app .cam-chip.off { opacity: .85; }
.dir-app .cam-chip.sel { border-color: var(--accent); background: var(--accent-soft); }
.dir-app .cam-chip.sel .cc-ico { background: var(--accent-grad); color: #fff; }
.dir-app .cam-chip.sel .cc-tag { color: var(--accent); border-color: color-mix(in srgb, var(--accent) 35%, transparent); }
.dir-app .cam-chip.talking { box-shadow: 0 0 0 2px var(--ok-dot); }

.dir-app .comm-rows { display: flex; flex-direction: column; gap: 8px; }
.dir-app .comm-row { display: flex; align-items: center; gap: 12px; background: var(--inset); border: 1px solid var(--line); border-radius: 14px; padding: 11px 13px; cursor: pointer; transition: 140ms; }
.dir-app .comm-row:hover { border-color: color-mix(in srgb, var(--accent) 40%, var(--line)); }
.dir-app .comm-row.sel { border-color: var(--accent); background: var(--accent-soft); }
.dir-app .comm-row .cr-ico { width: 38px; height: 38px; flex: none; border-radius: 11px; background: var(--accent-soft); color: var(--accent); display: grid; place-items: center; }
.dir-app .comm-row .cr-ico svg { width: 19px; height: 19px; }
.dir-app .comm-row .cr-info { min-width: 0; }
.dir-app .comm-row .cr-name { display: block; font: 700 13px/1.2 var(--font-ui); color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dir-app .comm-row .cr-st { display: flex; align-items: center; gap: 5px; margin-top: 3px; font: 600 11px/1 var(--font-ui); color: var(--muted-2); }
.dir-app .comm-row .cr-st i { width: 7px; height: 7px; border-radius: 50%; background: var(--muted-2); }
.dir-app .comm-row:not(.off) .cr-st { color: var(--ok-text); }
.dir-app .comm-row:not(.off) .cr-st i { background: var(--ok-dot); box-shadow: 0 0 6px var(--ok-dot); }
.dir-app .comm-row .cr-wave { flex: 1; display: flex; align-items: center; justify-content: center; gap: 2px; height: 22px; opacity: .5; }
.dir-app .comm-row .cr-wave i { width: 2px; background: var(--accent); border-radius: 2px; height: 30%; }
.dir-app .comm-row .cr-wave i:nth-child(2n){height:60%} .dir-app .comm-row .cr-wave i:nth-child(3n){height:85%} .dir-app .comm-row .cr-wave i:nth-child(4n){height:45%}
.dir-app .comm-row .cr-out { width: 40px; height: 40px; flex: none; border-radius: 11px; border: 1px solid var(--line); background: var(--surface); color: var(--accent); display: grid; place-items: center; cursor: pointer; }
.dir-app .comm-row .cr-out svg { width: 18px; height: 18px; }

/* ============================================================
   REMAP AUTORITATIVO (no fim → vence os blocos legados --d-*)
   Faz o painel inteiro usar os tokens novos da §8 em claro E escuro.
   ============================================================ */
.dir-app, [data-theme="light"] .dir-app, [data-theme="dark"] .dir-app {
  --d-bg: var(--bg); --d-bg2: var(--inset); --d-card: var(--surface); --d-card2: var(--inset);
  --d-border: var(--line); --d-soft: var(--inset); --d-text: var(--text); --d-dim: var(--muted);
  --d-faint: var(--faint); --d-accent: var(--accent); --d-blue: var(--blue);
  --d-green: var(--ok-text); --d-red: var(--live); --d-cyan: var(--accent); --d-amber: #d97706;
  background: var(--bg);
}
.dir-app .dir-side, [data-theme="light"] .dir-app .dir-side, [data-theme="dark"] .dir-app .dir-side {
  --d-bg2: var(--sidebar); --d-card: rgba(255,255,255,.05); --d-card2: rgba(255,255,255,.05);
  --d-border: rgba(255,255,255,.06); --d-text: #ffffff; --d-dim: var(--sb-text); --d-faint: var(--sb-sub);
  background: linear-gradient(180deg, rgba(124,92,255,0.06), transparent 30%), var(--sidebar);
}
/* Cards/superfícies no estilo do design (raio + sombra + fundo branco chapado).
   NÃO inclui .prog-air (card STANDBY = vermelho, ver .prog-air.ptt-big acima). */
.dir-app .dcard, .dir-app .prog-live, .dir-app .pgm-side, .dir-app .umodal-card {
  background: var(--surface); border-color: var(--line); border-radius: var(--r-card); box-shadow: var(--sh-card);
}
/* Mantém o card STANDBY vermelho com raio/sombra do design */
.dir-app .prog-air.ptt-big { border-radius: var(--r-card); box-shadow: var(--red-shadow); }

/* ============================================================
   Câmeras — Multiview (estilo do design)
   ============================================================ */
.dir-app .strip { position: relative; }
.dir-app .strip::after { content: ''; position: absolute; inset: 0; pointer-events: none; background: repeating-linear-gradient(135deg, rgba(255,255,255,.05) 0 10px, rgba(255,255,255,.02) 10px 20px); }
.dir-app .mv-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; margin-bottom: 16px; }
.dir-app .mv-title { margin: 0; font: 800 22px/1 var(--font-ui); letter-spacing: -.02em; color: var(--text); }
.dir-app .mv-sub { margin-top: 5px; font: 500 12px/1 var(--font-mono); color: var(--faint); }
.dir-app .mv-tools { display: flex; align-items: center; gap: 8px; }
.dir-app .mv-online { font: 600 12px/1 var(--font-mono); color: var(--ok-text); margin-right: 6px; }
.dir-app .mv-btn { border: 1px solid var(--line); background: var(--surface); color: var(--text); font: 700 12px/1 var(--font-ui); letter-spacing: .04em; padding: 9px 16px; border-radius: 10px; cursor: pointer; }
.dir-app .mv-btn:hover { border-color: var(--accent); color: var(--accent); }
.dir-app .mv-btn.cut { background: var(--red-grad); color: #fff; border: 0; box-shadow: var(--red-shadow); }

.dir-app .mv-main { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: 18px; margin-bottom: 18px; }
.dir-app .mv-col { display: flex; flex-direction: column; }
.dir-app .mv-lab { display: flex; align-items: center; gap: 7px; font: 700 11px/1 var(--font-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--muted); margin-bottom: 9px; }
.dir-app .mv-lab.live { color: var(--live); }
.dir-app .mv-lab.live i { width: 8px; height: 8px; border-radius: 50%; background: var(--live); animation: dblink 1.2s infinite; }
.dir-app .mv-screen { position: relative; aspect-ratio: 16/9; border-radius: 18px; background: var(--screen); overflow: hidden; display: grid; place-items: center; }
.dir-app .mv-screen.pvw { border: 2px solid var(--accent); }
.dir-app .mv-screen .mv-ico { color: rgba(255,255,255,.45); }
.dir-app .mv-screen .mv-ico svg { width: 56px; height: 56px; }
.dir-app .mv-meta { position: absolute; bottom: 14px; left: 0; right: 0; text-align: center; font: 500 11px/1 var(--font-mono); color: rgba(255,255,255,.55); }
.dir-app .mv-badge { position: absolute; top: 14px; left: 14px; display: flex; align-items: center; gap: 6px; font: 700 10px/1 var(--font-mono); letter-spacing: .08em; color: #fff; background: var(--live); padding: 5px 9px; border-radius: 7px; }
.dir-app .mv-badge i { width: 7px; height: 7px; border-radius: 50%; background: #fff; animation: dblink 1.2s infinite; }
.dir-app .mv-screen .mv-tag { position: absolute; top: 14px; right: 14px; font: 700 10px/1 var(--font-mono); color: #fff; background: rgba(255,255,255,.16); padding: 5px 9px; border-radius: 7px; }
.dir-app .mv-timer { position: absolute; bottom: 14px; left: 14px; right: auto; text-align: left; font: 600 12px/1 var(--font-mono); color: #fff; }
.dir-app .mv-cutbtn { margin-top: 14px; width: 100%; border: 0; cursor: pointer; background: var(--accent-grad); color: #fff; font: 700 13.5px/1 var(--font-ui); padding: 14px; border-radius: 12px; box-shadow: var(--sh-accent); }

.dir-app .mv-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; }
.dir-app .mv-cam { border-radius: 14px; overflow: hidden; border: 2px solid var(--line); background: var(--surface); cursor: pointer; transition: 140ms; }
.dir-app .mv-cam:hover { border-color: color-mix(in srgb, var(--accent) 50%, var(--line)); }
.dir-app .mv-cam.pgm { border-color: var(--live); }
.dir-app .mv-cam.pvw { border-color: var(--accent); }
.dir-app .mv-thumb { position: relative; aspect-ratio: 16/9; background: var(--screen); display: grid; place-items: center; }
.dir-app .mv-thumb .mv-ico { color: rgba(255,255,255,.4); }
.dir-app .mv-thumb .mv-ico svg { width: 30px; height: 30px; }
.dir-app .mv-tag2 { position: absolute; top: 9px; left: 9px; font: 700 9px/1 var(--font-mono); color: #fff; background: rgba(255,255,255,.18); padding: 4px 7px; border-radius: 6px; }
.dir-app .mv-cam.pgm .mv-tag2 { background: var(--live); }
.dir-app .mv-cam.pvw .mv-tag2 { background: var(--accent); }
.dir-app .mv-live { position: absolute; bottom: 9px; right: 9px; display: flex; align-items: center; gap: 5px; font: 700 9px/1 var(--font-mono); color: #fff; }
.dir-app .mv-live i { width: 6px; height: 6px; border-radius: 50%; background: var(--ok-dot); box-shadow: 0 0 6px var(--ok-dot); }
.dir-app .mv-cap { display: flex; align-items: center; justify-content: space-between; padding: 10px 12px; }
.dir-app .mv-id { font: 700 12.5px/1.2 var(--font-ui); color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dir-app .mv-go { width: 30px; height: 30px; flex: none; border-radius: 9px; background: var(--accent-soft); color: var(--accent); display: grid; place-items: center; }
.dir-app .mv-go svg { width: 16px; height: 16px; }
.dir-app .mv-cam.off { opacity: .85; }

/* Telas full-width (Câmeras/Multiview, Usuários, etc.) — escondem o rail lateral */
.dir-app:not([data-view="visao"]) .dir-cols { grid-template-columns: 1fr; }
.dir-app:not([data-view="visao"]) .dir-right { display: none; }

/* ============================================================
   Ajustes de fidelidade ao design (feedback do diretor)
   ============================================================ */
/* Proporção AO VIVO : STANDBY ~ 1.55 : 1 (cards de mesma altura) */
.dir-app .dir-program { grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 18px; align-items: stretch; }
.dir-app .prog-live { display: flex; flex-direction: column; padding: 22px 24px; }
.dir-app .prog-live .prog-vu { margin-top: auto; }

/* Título do programa um pouco menor */
.dir-app .prog-live h2 { font: 800 22px/1.15 var(--font-ui); letter-spacing: -.02em; margin: 6px 0 4px; }
.dir-app .prog-live .pl-sub { font: 500 12px/1 var(--font-ui); color: var(--muted); }
.dir-app .prog-live .dur { font: 600 19px/1 var(--font-mono); color: var(--accent); }

/* STANDBY / PTT — botão circular GRANDE e centralizado (igual ao design) */
.dir-app .prog-air.ptt-big { display: flex; flex-direction: column; padding: 20px 22px; }
.dir-app .prog-air.ptt-big .pa-state { font: 800 13px/1 var(--font-ui); letter-spacing: .04em; color: rgba(255,255,255,.92); }
.dir-app .prog-air.ptt-big .pa-mic { flex: 1; flex-direction: column; align-items: center; justify-content: center; gap: 16px; margin: 0; padding: 16px 0; }
.dir-app .prog-air.ptt-big .pa-mic .mi { width: 104px; height: 104px; border-radius: 50%; background: rgba(255,255,255,.16); display: grid; place-items: center; font-size: 2.6rem; box-shadow: none; }
.dir-app .prog-air.ptt-big.on .pa-mic .mi, .dir-app .prog-air.ptt-big.locked .pa-mic .mi { background: #fff; animation: pulse 1.3s ease-out infinite; }
.dir-app .prog-air.ptt-big .pa-mic > span { text-align: center; }
.dir-app .prog-air.ptt-big .pa-mic .t { font: 800 15px/1.1 var(--font-ui); letter-spacing: .02em; color: #fff; }
.dir-app .prog-air.ptt-big .pa-mic .s { justify-content: center; font: 500 10px/1 var(--font-mono); letter-spacing: .08em; text-transform: uppercase; color: rgba(255,255,255,.8); }

/* PTT: cabeçalho com STANDBY + cadeado à esquerda e PGM à direita */
.dir-app .prog-air.ptt-big .pa-top { justify-content: flex-start; gap: 9px; align-items: center; }
.dir-app .prog-air.ptt-big .pa-top .pgm-chip { margin-left: auto; }
.dir-app .prog-air.ptt-big .dir-lock { width: 30px; height: 30px; border-radius: 9px; background: rgba(255,255,255,.16); border: 0; color: #fff; display: grid; place-items: center; cursor: pointer; }
.dir-app .prog-air.ptt-big .dir-lock svg { width: 15px; height: 15px; }
.dir-app .prog-air.ptt-big .dir-lock:hover { background: rgba(255,255,255,.28); }

/* Garante que AO VIVO e STANDBY preencham 100% da célula do grid (sem sobra à direita) */
.dir-app .dir-program > .prog-live,
.dir-app .dir-program > .prog-air,
.dir-app .dir-program > .prog-air.ptt-big {
  width: 100%; min-width: 0; justify-self: stretch; align-self: stretch; box-sizing: border-box;
}
