/* Sala ao vivo (dentro do app): escura como um Meet, com o laranja do sabiá. Tudo com prefixo sv- para não
   misturar com o resto do app. A criança nunca é gravada: a gravação junta só a professora e a lousa. */
.salav {
  --fundo: #0F1626; --fundo-2: #172036; --fundo-3: #22304D; --texto: #F3F7FD; --texto-2: #B9C6DC; --texto-3: #8D9BB5;
  --verde: #2FBF6B; --cereja-sv: #C62F35; --azul-sv: #5BA2F5;
  position: fixed; inset: 0; z-index: 30; display: flex; flex-direction: column; background: var(--fundo); color: var(--texto); font: 15px/1.4 var(--f-texto);
  padding: var(--topo-seguro) env(safe-area-inset-right) 0 env(safe-area-inset-left);
}
.salav button:not(.btn) { color: inherit; }
.salav button:disabled { opacity: .55; }

/* sala de espera (sem vídeo nenhum da turma) */
.sv-espera { flex: 1; display: grid; place-items: center; padding: 24px 16px; background: radial-gradient(ellipse at 30% 0%, #1E3A66 0%, var(--fundo) 60%); overflow: auto; }
.sv-espera-caixa { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 28px; align-items: center; width: 100%; max-width: 920px; padding: 28px; border-radius: 28px; background: var(--fundo-2); }
.sv-previa { position: relative; aspect-ratio: 16 / 9; border-radius: 20px; overflow: hidden; background: var(--fundo-3); }
.sv-previa video { width: 100%; height: 100%; object-fit: cover; transform: scaleX(-1); display: block; }
.sv-previa p { position: absolute; inset: 0; display: grid; place-items: center; padding: 16px; text-align: center; color: var(--texto-2); }
.sv-espera h1 { font-size: clamp(28px, 5vw, 38px); }
.sv-espera-txt { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; }
.sv-pre { display: inline-flex; align-items: center; gap: 6px; font-weight: 800; color: var(--azul-sv); }
.sv-pre .ic { width: 20px; height: 20px; }
.sv-status { display: inline-flex; align-items: center; gap: 10px; padding: 12px 18px; border-radius: 999px; background: var(--fundo-3); font-weight: 800; font-size: 17px; }
.sv-status.ok { background: var(--verde); color: #06210F; }
.sv-status .ic { width: 22px; height: 22px; }
.sv-aviso { display: flex; gap: 8px; align-items: flex-start; font-size: 13.5px; color: var(--texto-3); }
.sv-aviso .ic { width: 16px; height: 16px; margin-top: 2px; }
.sv-pontos { display: inline-flex; gap: 4px; }
.sv-pontos i { width: 8px; height: 8px; border-radius: 50%; background: var(--azul-sv); animation: sv-pulsa 1.2s ease-in-out infinite; }
.sv-pontos i:nth-child(2) { animation-delay: .2s; }
.sv-pontos i:nth-child(3) { animation-delay: .4s; }
@media (max-width: 760px) { .sv-espera-caixa { grid-template-columns: minmax(0, 1fr); padding: 18px; } }

/* sala */
.sv-sala { flex: 1; min-height: 0; display: grid; grid-template-rows: auto minmax(0, 1fr) auto; }
.sv-sala.prof { grid-template-columns: minmax(0, 1fr) 320px; }
.sv-sala.prof .sv-topo, .sv-sala.prof .sv-barra { grid-column: 1 / -1; }
.sv-topo { display: flex; align-items: center; gap: 12px; padding: 10px 16px; border-bottom: 1px solid var(--fundo-3); }
.sv-marca { display: inline-flex; align-items: center; gap: 8px; font: 600 18px var(--f-titulo); }
.sv-marca i { width: 12px; height: 12px; border-radius: 50%; background: var(--laranja); }
.sv-vivo { display: inline-flex; align-items: center; gap: 6px; padding: 5px 10px; border-radius: 999px; background: var(--cereja-sv); color: #fff; font-weight: 800; font-size: 12px; letter-spacing: .06em; flex: none; }
.sv-vivo b { width: 8px; height: 8px; border-radius: 50%; background: #fff; animation: sv-pulsa 1.4s infinite; }
.sv-tempo { font-variant-numeric: tabular-nums; font-weight: 800; }
.sv-grav { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 800; color: #FFB4B6; min-width: 0; }
.sv-grav span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sv-grav .ic { width: 16px; height: 16px; animation: sv-pulsa 1.4s infinite; }
.sv-cont { margin-left: auto; display: inline-flex; align-items: center; gap: 6px; color: var(--texto-2); font-weight: 700; flex: none; }
.sv-cont .ic { width: 18px; height: 18px; }
.sv-area { position: relative; min-height: 0; min-width: 0; padding: 12px; display: flex; gap: 12px; }
.sv-grade { position: relative; display: flex; flex-wrap: wrap; align-content: center; justify-content: center; gap: 10px; flex: 1; min-width: 0; min-height: 0; }
.sv-area.com-palco .sv-grade { flex: 0 0 236px; flex-direction: column; flex-wrap: nowrap; justify-content: flex-start; overflow-y: auto; }
.sv-area.com-palco .sv-tile { width: 100% !important; }
.sv-palco { flex: 1; min-width: 0; display: grid; place-items: center; border-radius: 18px; background: #000; overflow: hidden; position: relative; }
.sv-palco video { width: 100%; height: 100%; object-fit: contain; }
.sv-rotulo-palco { position: absolute; left: 12px; top: 12px; z-index: 2; padding: 4px 10px; border-radius: 999px; background: rgba(15, 22, 38, .75); font-weight: 800; font-size: 13px; }
.sv-zoom { position: relative; width: 100%; height: 100%; overflow: hidden; touch-action: pan-x pan-y; }
.sv-zoom.com-zoom { cursor: grab; touch-action: none; }
.sv-zoom-alvo { width: 100%; height: 100%; transform-origin: center center; }
.sv-zoom-ctrl { position: absolute; right: 12px; top: 12px; z-index: 2; display: flex; gap: 6px; }
.sv-zoom-ctrl button { display: grid; place-items: center; min-width: 48px; height: 48px; padding: 0 10px; border: 0; border-radius: 999px; background: rgba(15, 22, 38, .75); font-weight: 800; }
.sv-tile { position: relative; width: var(--tile-w, 320px); aspect-ratio: 16 / 9; border-radius: 16px; overflow: hidden; background: var(--fundo-3); box-shadow: 0 0 0 2px transparent; transition: box-shadow .15s; }
.sv-tile video { width: 100%; height: 100%; object-fit: cover; display: block; }
.sv-tile.eu video.espelho { transform: scaleX(-1); }
.sv-tile.falando { box-shadow: 0 0 0 3px var(--verde); }
.sv-tile.prof { box-shadow: 0 0 0 3px var(--laranja); }
.sv-tile.palavra { box-shadow: 0 0 0 3px var(--sol); }
/* modo destaque, tipo FaceTime (js/grade.js): um quadro grande sozinho na linha dele (as margens completam a linha) e os
   outros em fileiras embaixo, todos no formato do vídeo, sem esticar. Para a criança é sempre assim (o grande é a
   professora, o colega com a palavra ou quem ela tocou); para professora e coordenação, só com alguém tocado ou com a palavra */
.sv-grade.modo-destaque { align-content: center; align-items: flex-start; }
.sv-grade.modo-destaque .sv-tile { width: var(--fila-w, 160px); }
.sv-grade.modo-destaque .sv-tile.destaque { width: var(--destaque-w, 70%); flex: none; margin-inline: calc((100% - var(--destaque-w, 70%)) / 2); }
.sv-grade .sv-tile[role="button"] { cursor: pointer; }
.sv-tile:focus-visible { outline: 3px solid var(--azul-sv, #6CB4FF); outline-offset: 2px; }
/* o quadradinho da própria criança: no canto que ela escolheu (arrasta para mudar), pequeno ou grande (toque troca) */
.sv-grade.com-quadradinho .sv-tile.eu { position: absolute; right: 6px; bottom: 6px; z-index: 3; width: var(--pip-w, 112px); touch-action: none; cursor: grab; box-shadow: 0 0 0 2px rgba(255, 255, 255, .85), 0 10px 26px rgba(0, 0, 0, .5); }
.sv-grade.com-quadradinho[data-canto="be"] .sv-tile.eu, .sv-grade.com-quadradinho[data-canto="ce"] .sv-tile.eu { left: 6px; right: auto; }
.sv-grade.com-quadradinho[data-canto="cd"] .sv-tile.eu, .sv-grade.com-quadradinho[data-canto="ce"] .sv-tile.eu { top: 6px; bottom: auto; }
.sv-grade.com-quadradinho .sv-tile.eu.arrastando { z-index: 5; cursor: grabbing; box-shadow: 0 0 0 3px #fff, 0 16px 34px rgba(0, 0, 0, .6); }
.sv-grade.com-quadradinho .sv-tile.eu .sv-rotulo b { font-size: 12px; }
/* o canto cobriria um colega (celular em pé, turma grande): a criança entra na fileira */
.sv-grade.modo-destaque.eu-na-fileira .sv-tile.eu, .sv-grade.modo-destaque:not(.com-quadradinho) .sv-tile.eu { position: relative; width: var(--fila-w, 160px); }
/* esconder o quadradinho (botão de olho no quadradinho grande) e mostrar de novo (botão "Você" no mesmo canto) */
.sv-esconder-eu { display: none; position: absolute; top: 6px; right: 6px; z-index: 2; place-items: center; width: 44px; height: 44px; border: 0; border-radius: 50%; background: rgba(15, 22, 38, .78); color: #fff; }
.sv-esconder-eu .ic { width: 22px; height: 22px; }
.sv-grade.com-quadradinho[data-tamanho="g"] .sv-tile.eu .sv-esconder-eu { display: grid; }
.sv-grade.eu-escondido .sv-tile.eu { display: none; }
.sv-mostrar-eu { position: absolute; right: 6px; bottom: 6px; z-index: 4; display: inline-flex; align-items: center; gap: 6px; min-height: 44px; padding: 8px 14px; border: 2px solid rgba(255, 255, 255, .85); border-radius: 999px; background: rgba(15, 22, 38, .85); color: #fff; font-weight: 800; }
.sv-grade[data-canto="be"] .sv-mostrar-eu, .sv-grade[data-canto="ce"] .sv-mostrar-eu { left: 6px; right: auto; }
.sv-grade[data-canto="cd"] .sv-mostrar-eu, .sv-grade[data-canto="ce"] .sv-mostrar-eu { top: 6px; bottom: auto; }
.sv-mostrar-eu .ic { width: 20px; height: 20px; }
/* quem foi tocado para ver grande: "Voltar" em cima, no meio */
.sv-voltar-destaque { position: absolute; top: 6px; left: 50%; z-index: 4; transform: translateX(-50%); display: inline-flex; align-items: center; gap: 6px; min-height: 44px; max-width: calc(100% - 12px); padding: 8px 16px; border: 0; border-radius: 999px; background: rgba(15, 22, 38, .85); color: #fff; font-weight: 800; white-space: nowrap; }
.sv-voltar-destaque span { overflow: hidden; text-overflow: ellipsis; }
/* o quadradinho da criança num canto de cima: o "Voltar" vai para o canto do outro lado */
.sv-grade.voltar-do-outro-lado[data-canto="ce"] .sv-voltar-destaque { left: auto; right: 6px; transform: none; }
.sv-grade.voltar-do-outro-lado[data-canto="cd"] .sv-voltar-destaque { left: 6px; transform: none; }
.sv-voltar-destaque .ic { width: 20px; height: 20px; flex: none; }
.sv-sem-camera { position: absolute; inset: 0; display: grid; place-items: center; }
.sv-sem-camera span { display: grid; place-items: center; width: 64px; height: 64px; border-radius: 50%; background: var(--cor, #3A4A6E); font: 600 28px var(--f-titulo); color: #fff; }
.sv-rotulo { position: absolute; left: 8px; bottom: 8px; right: 8px; display: flex; align-items: center; gap: 6px; }
.sv-rotulo b { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; padding: 3px 9px; border-radius: 999px; background: rgba(15, 22, 38, .78); font-size: 13px; }
.sv-mic { display: grid; place-items: center; width: 26px; height: 26px; flex: none; border-radius: 50%; background: rgba(15, 22, 38, .78); }
.sv-mic .ic { width: 15px; height: 15px; }
.sv-mic.off { background: var(--cereja-sv); }
.sv-rotulo em { margin-left: auto; padding: 3px 8px; border-radius: 999px; background: var(--laranja-botao); color: #fff; font-style: normal; font-weight: 800; font-size: 11px; white-space: nowrap; flex: none; }
.sv-mao { position: absolute; top: 8px; right: 8px; display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; background: var(--sol); color: var(--fundo); animation: sv-acena 1s ease-in-out infinite; }
.sv-palavra { position: absolute; top: 8px; left: 8px; padding: 4px 10px; border-radius: 999px; background: var(--sol); color: var(--fundo); font-weight: 800; font-size: 12px; }
/* coordenação acompanhando: todos veem, no topo e no quadrinho dela */
.sv-coord { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: 999px; background: #2A3550; color: #CFE3FF; font-weight: 800; font-size: 12.5px; flex: none; }
.sv-coord .ic, .sv-acompanhando .ic { width: 16px; height: 16px; animation: none; }
.sv-acompanhando { color: #CFE3FF; }
.sv-tile.coord { outline: 2px dashed #6C86B8; outline-offset: -2px; }
.sv-tile.coord .sv-rotulo em { background: #3B5B9A; color: #fff; }
/* internet fraca de alguém da sala */
.sv-sinal { position: absolute; right: 8px; bottom: 44px; display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; background: rgba(214, 59, 64, .92); color: #fff; }
.sv-sinal .ic { width: 18px; height: 18px; }
.sv-voa { position: absolute; left: 50%; bottom: 20%; font-size: 40px; transform: translateX(-50%); animation: sv-voa 2s ease-out forwards; pointer-events: none; }
.sv-esperando-prof { position: absolute; inset: 0; display: grid; place-items: center; text-align: center; pointer-events: none; }
.sv-esperando-prof div { padding: 16px 20px; border-radius: 18px; background: rgba(23, 32, 54, .92); font-weight: 700; }

.sv-barra { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 10px; padding: 12px 16px calc(12px + var(--baixo-seguro)); border-top: 1px solid var(--fundo-3); }
.sv-ctl { display: inline-flex; flex-direction: column; align-items: center; gap: 3px; min-width: 76px; min-height: 60px; padding: 8px 10px; border: 0; border-radius: 16px; background: var(--fundo-3); font-weight: 800; font-size: 12.5px; }
.sv-ctl .ic { width: 26px; height: 26px; }
.sv-ctl.off { background: var(--cereja-sv); }
.sv-ctl.on { background: var(--laranja-botao); }
.sv-ctl.sair { background: transparent; border: 2px solid var(--fundo-3); }
.sv-ctl.encerrar { background: var(--cereja-sv); }
.sv-bandeja { position: absolute; bottom: 92px; left: 50%; transform: translateX(-50%); display: flex; gap: 8px; padding: 10px; border-radius: 18px; background: var(--fundo-2); box-shadow: 0 20px 40px -16px rgba(0, 0, 0, .7); z-index: 5; }
.sv-bandeja button { width: 56px; height: 56px; border: 0; border-radius: 14px; background: var(--fundo-3); font-size: 28px; }

.sv-painel { display: flex; flex-direction: column; gap: 12px; min-height: 0; padding: 12px 14px; border-left: 1px solid var(--fundo-3); overflow-y: auto; }
.sv-painel h2 { font: 600 17px var(--f-titulo); display: flex; align-items: center; gap: 6px; }
.sv-painel h2 .ic { width: 18px; height: 18px; }
.sv-b { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 36px; padding: 8px 12px; border: 0; border-radius: 12px; background: var(--fundo-3); font-weight: 800; font-size: 13px; }
.salav .sv-b.laranja { background: var(--laranja-botao); color: #fff; }
.sv-b .ic { width: 16px; height: 16px; }
.sv-b.icone { min-width: 36px; padding: 8px; background: transparent; border: 1.5px solid var(--fundo-3); color: var(--texto-2); }
.sv-b.perigo { background: var(--cereja-sv); color: #fff; }
.sv-caixa-espera { display: flex; flex-direction: column; gap: 8px; padding: 10px; border-radius: 16px; border: 1.5px solid var(--fundo-3); }
.sv-caixa-espera.tem-gente { border-color: var(--sol); background: rgba(255, 200, 61, .08); }
.sv-n { min-width: 24px; padding: 1px 8px; border-radius: 999px; background: var(--fundo-3); font: 800 12px/1.6 var(--f-texto); text-align: center; }
.sv-caixa-espera.tem-gente .sv-n { background: var(--sol); color: var(--fundo); }
.sv-turma { display: flex; flex-direction: column; gap: 6px; margin: 0; padding: 0; list-style: none; }
.sv-turma li { display: flex; align-items: center; gap: 8px; padding: 8px; border-radius: 12px; background: var(--fundo-2); }
.sv-ini { display: grid; place-items: center; width: 30px; height: 30px; flex: none; border-radius: 50%; background: var(--cor, #3A4A6E); font: 600 14px var(--f-titulo); color: #fff; }
.sv-nome { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 700; }
.sv-estado { display: inline-flex; gap: 4px; color: var(--texto-3); }
.sv-estado .ic { width: 16px; height: 16px; }
.sv-estado .mao { color: var(--sol); }
.sv-vazio { color: var(--texto-3); font-size: 13px; }
.sv-caps { display: flex; flex-direction: column; gap: 4px; margin: 0; padding: 0; list-style: none; font-size: 13.5px; }
.sv-caps li { display: flex; align-items: center; gap: 8px; }
.sv-caps input { flex: 1; min-width: 0; min-height: 32px; padding: 4px 8px; border: 0; border-radius: 8px; background: transparent; color: inherit; font: inherit; }
.sv-caps input:hover, .sv-caps input:focus { background: var(--fundo-2); }
.sv-caps span { min-width: 40px; color: var(--texto-3); font-variant-numeric: tabular-nums; }
.sv-lousa-ferr { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.sv-lousa-ferr .cor { width: 30px; height: 30px; border-radius: 50%; border: 3px solid transparent; }
.sv-lousa-ferr .cor[aria-pressed="true"] { border-color: #fff; }
.sv-lousa { width: 100%; max-height: 100%; aspect-ratio: 16 / 9; background: #fff; border-radius: 12px; touch-action: none; cursor: crosshair; }
.sv-nota { font-size: 12.5px; color: var(--texto-3); }
.sv-roteiro { display: flex; flex-direction: column; gap: 6px; margin: 6px 0 0; padding: 0; list-style: none; }
.sv-roteiro li { display: grid; grid-template-columns: 52px 1fr; gap: 8px; padding: 8px; border-radius: 12px; background: var(--fundo-2); border: 1.5px solid transparent; }
.sv-roteiro li.agora { border-color: var(--laranja); background: #2A2433; }
.sv-roteiro li.feito { opacity: .6; }
.sv-roteiro b { display: block; font-size: 14px; }
.sv-roteiro small { display: block; margin: 2px 0 6px; color: var(--texto-2); font-size: 12.5px; line-height: 1.35; }
.sv-rot-min { color: var(--texto-3); font-weight: 800; font-size: 12.5px; font-variant-numeric: tabular-nums; }
.sv-roteiro li.agora .sv-rot-min { color: var(--laranja); }
@media (max-width: 860px) {
  .sv-sala.prof { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto minmax(0, 1fr) auto auto; }
  .sv-sala.prof .sv-painel { grid-row: 4; max-height: 38vh; border-left: 0; border-top: 1px solid var(--fundo-3); }
  .sv-area.com-palco { flex-direction: column; }
  .sv-area.com-palco .sv-grade { flex: 0 0 auto; flex-direction: row; overflow-x: auto; }
  .sv-area.com-palco .sv-tile { width: 160px !important; flex: none; }
}
@media (max-width: 560px) {
  .sv-topo { gap: 8px; padding: 8px 12px; }
  .sv-grav span, .sv-coord span { display: none; }
  .sv-marca { font-size: 16px; }
  .sv-rotulo em { display: none; }
  .sv-barra { flex-wrap: nowrap; gap: 6px; padding-inline: 8px; }
  .sv-ctl { flex: 1 1 0; min-width: 0; padding: 8px 4px; font-size: 11px; }
  .sv-ctl span { max-width: 100%; white-space: normal; line-height: 1.15; text-align: center; }
}
.sv-faixa { position: fixed; top: calc(12px + var(--topo-seguro)); left: 50%; z-index: 40; display: inline-flex; align-items: center; gap: 10px; padding: 10px 16px; border-radius: 999px; background: var(--sol); color: var(--noite); font-weight: 800; transform: translateX(-50%); }
.sv-som { position: fixed; left: 50%; bottom: 110px; z-index: 35; transform: translateX(-50%); }
.sv-fim { flex: 1; display: grid; place-items: center; padding: 24px 16px; overflow: auto; }
.sv-fim-caixa { width: 100%; max-width: 640px; padding: 26px; border-radius: 28px; background: var(--fundo-2); text-align: center; display: flex; flex-direction: column; align-items: center; gap: 12px; }
.sv-fim-caixa .sabia { width: 130px; height: auto; }
.sv-fim-caixa p { color: var(--texto-2); }
.sv-fim-acoes { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; }
/* fim da aula da criança: a missão fora da tela de hoje */
.sv-missao { display: flex; gap: 12px; align-items: flex-start; width: 100%; padding: 14px 16px; border-radius: 18px; background: rgba(255, 200, 61, .14); text-align: left; }
.sv-missao > .ic { width: 28px; height: 28px; flex: none; color: var(--sol); }
.sv-missao b { display: block; color: var(--sol); font-size: 15px; }
.sv-missao span { display: block; color: var(--texto); font-size: 17px; line-height: 1.4; }

/* sala de ensaio: selo azul no lugar do "AO VIVO" e a lista do treino no topo do painel */
.sv-vivo.ensaio { background: var(--azul-texto); }
.sv-vivo.ensaio b { animation: none; }
.sv-treino-caixa { display: flex; flex-direction: column; gap: 8px; padding: 10px; border-radius: 16px; border: 1.5px solid var(--azul-sv); background: rgba(91, 162, 245, .08); }
.sv-treino { display: flex; flex-direction: column; gap: 4px; margin: 0; padding: 0; list-style: none; font-size: 13.5px; }
.sv-treino li { display: flex; align-items: flex-start; gap: 8px; padding: 4px 2px; color: var(--texto-2); }
.sv-treino li .ic { width: 18px; height: 18px; flex: none; color: var(--texto-3); }
.sv-treino li.feito { color: var(--texto); }
.sv-treino li.feito .ic { color: var(--verde); }
.sv-treino-fim { width: 100%; max-width: 420px; padding: 12px 14px; border-radius: 16px; background: var(--fundo-3); text-align: left; }
@keyframes sv-pulsa { 0%, 100% { opacity: 1; } 50% { opacity: .35; } }
@keyframes sv-acena { 0%, 100% { transform: rotate(-10deg); } 50% { transform: rotate(12deg); } }
@keyframes sv-voa { 0% { transform: translate(-50%, 0) scale(.6); opacity: 0; } 15% { opacity: 1; } 100% { transform: translate(-50%, -160px) scale(1.1); opacity: 0; } }
/* celular estreito: os controles ficam só com o ícone (o nome continua para o leitor de tela); Sair e Encerrar mantêm a palavra */
@media (max-width: 420px) {
  .sv-ctl:not(.encerrar):not(.sair) span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .sv-ctl.encerrar, .sv-ctl.sair { flex-grow: 1.8; }
}
