.tv,.wait{height:100vh}body{font:20px Segoe UI,Arial,sans-serif}.wait{font:32px Segoe UI,Arial,sans-serif}
:root{color-scheme:dark;--navy:#122f69;--paper:#f7f4ef;--ink:#172b4d}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}body{background:#17149b;color:var(--ink);font:clamp(16px,1.4vw,28px) system-ui,Segoe UI,sans-serif}.tv{width:100vw;height:100dvh;padding:4.25vh 3.35vw;display:grid;grid-template-columns:minmax(0,1fr) clamp(280px,var(--side-width,29vw),40vw);grid-template-rows:minmax(0,1fr) clamp(56px,8.2vh,90px) clamp(56px,8.2vh,90px);grid-template-areas:"main side" "weather side" "news side";gap:clamp(9px,1vw,18px);background:linear-gradient(140deg,#11117b,#3123d8)}.hero,.creative,.weather,.news{position:relative;border-radius:clamp(9px,1vw,18px);overflow:hidden;min-width:0;min-height:0}.hero{grid-area:main;background:#fff;display:grid;place-items:center}.hero-media{width:100%;height:100%;min-width:0;min-height:0;display:grid;place-items:center;background:#fff}.hero-media img,.hero-media video,.hero-media iframe{width:100%;height:100%;min-width:0;min-height:0;display:block;border:0;object-fit:contain;background:var(--paper)}.hero-copy{position:absolute;inset:auto 0 0;padding:clamp(12px,2vw,30px);color:#fff;background:linear-gradient(transparent,rgba(12,35,65,.8));pointer-events:none}.eyebrow{color:#e3d1a5;text-transform:uppercase;font-size:.52em;letter-spacing:.14em;font-weight:700}.hero h1{font:clamp(25px,2.8vw,54px)/1.08 Georgia,serif;margin:.22em 0}.hero p{font-size:.7em;margin:.2em 0 0}.side{grid-area:side;min-width:0;min-height:0}.creative{height:100%;width:100%;background:var(--paper);color:var(--ink);display:grid;grid-template-rows:minmax(0,1fr);padding:0}.creative-media{height:100%;width:100%;min-height:0;display:grid;place-items:center}.creative-media img,.creative-media video{width:100%;height:100%;min-height:0;object-fit:contain;background:var(--paper)}.weather{grid-area:weather;background:#fff;color:var(--navy);display:flex;align-items:center;justify-content:space-between;padding:4px clamp(14px,2.2vw,38px);gap:12px}.weather-title{display:flex;align-items:center;gap:clamp(8px,1.5vw,24px);font-weight:700;letter-spacing:.025em;min-width:0}.weather-icon{font-size:1.3em}.weather-city{font-size:.5em;color:#53647e;font-weight:500}.temperature{font-size:1.45em;font-variant-numeric:tabular-nums;white-space:nowrap}.weather-status{font-size:.48em;color:#566578}.news{grid-area:news;background:#fff;color:var(--navy);display:flex;align-items:center;gap:clamp(12px,2vw,30px);padding:8px clamp(14px,2.2vw,38px)}.news-tag{font-size:.52em;white-space:nowrap;color:#283e7d;letter-spacing:.06em;font-weight:800}.news-text{min-width:0;overflow:hidden;flex:1}.news-text strong{font-size:.72em;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block}.news-text small{font-size:.43em;color:#5b6a80}.clock{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.86em;font-weight:800;color:var(--navy)}.wait{height:100dvh;display:grid;place-content:center;gap:14px;text-align:center;padding:32px;background:var(--paper);color:var(--navy);font:clamp(24px,3vw,48px) Georgia,serif}.wait small{display:block;color:#617174;font:16px system-ui}.creative-placeholder{display:grid;place-items:center;height:100%;color:#566578;text-align:center;padding:15%;font:clamp(18px,1.6vw,30px) Georgia,serif}@media(max-aspect-ratio:1/1){.tv{padding:2vh 2vw;grid-template-columns:minmax(0,1fr) minmax(200px,34vw);grid-template-rows:minmax(0,1fr) 62px 62px}.hero h1{font-size:24px}.creative-label{display:none}}
 .tv-refresh{position:fixed;z-index:50;top:12px;right:12px;min-height:44px;padding:8px 12px;border:1px solid rgba(255,255,255,.42);border-radius:12px;background:rgba(12,28,55,.78);color:#fff;font:600 14px system-ui,sans-serif;opacity:.7;cursor:pointer;backdrop-filter:blur(8px)}.tv-refresh:hover,.tv-refresh:focus-visible{opacity:1;outline:3px solid #e3d1a5}.tv-refresh:disabled{opacity:1}

.tv-audio-enable{position:fixed;z-index:51;top:66px;right:12px;min-height:44px;padding:8px 12px;border:1px solid rgba(255,255,255,.5);border-radius:12px;background:#172f59;color:#fff;font:700 14px system-ui,sans-serif;cursor:pointer;box-shadow:0 3px 14px #0005}.tv-audio-enable:hover,.tv-audio-enable:focus-visible{outline:3px solid #e3d1a5}.tv-audio-enable[hidden]{display:none}

@keyframes gentle-zoom{from{transform:scale(1)}to{transform:scale(1.08)}}.motion-image{animation:gentle-zoom var(--motion-duration,20s) ease-in-out infinite alternate;transform-origin:center}.hero-media,.sim-main-stage{overflow:hidden}.motion-card .hero-copy{background:linear-gradient(transparent,rgba(0,0,0,.85));text-shadow:0 2px 8px #000}.sim-caption{text-shadow:0 2px 6px #000}@media(prefers-reduced-motion:reduce){.motion-image{animation:none}}

.weather{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,2.2fr) auto;overflow:hidden}.weather-title{overflow:hidden;white-space:nowrap;font-size:.7em}.weather-status{font-size:clamp(12px,1vw,20px);line-height:1.25;max-height:2.5em;min-width:0;overflow:hidden}.weather .clock{margin:0;font-variant-numeric:tabular-nums}

.tv{position:relative}.band-logo{position:absolute;z-index:3;left:3.35vw;bottom:4.25vh;width:5vw;height:calc(clamp(56px,8.2vh,90px)*2 + clamp(9px,1vw,18px));background:white;border-radius:10px;display:grid;place-items:center}.band-logo img{width:90%;height:90%;object-fit:contain}.tv.has-band-logo .weather,.tv.has-band-logo .news{padding-left:6vw}

.weather{grid-template-columns:auto auto minmax(0,1fr) auto}.weather-city{display:none}.weather-status{white-space:nowrap;line-height:1;max-height:none;font-size:clamp(12px,1vw,20px)}.weather .clock{font-weight:800;font-size:clamp(24px,2.6vw,46px);min-width:5ch;text-align:right}

/* Reception typography and background match the dashboard. */
body,.tv,.tv button,.wait{font-family:'DM Sans',Arial,Helvetica,system-ui,sans-serif!important}.tv{background:radial-gradient(ellipse at 80% 0%,#1b2b4d 0,transparent 65%),#0b1020}.hero h1{font-family:Arial,Helvetica,system-ui,sans-serif;font-size:clamp(20px,2.2vw,40px);line-height:1.15}.creative-placeholder,.wait{font-family:Arial,Helvetica,system-ui,sans-serif}.hero-copy{padding:clamp(12px,1.5vw,24px)}.news{display:grid;grid-template-columns:auto minmax(0,1fr) minmax(70px,7vw);gap:14px;align-items:center}.news-text{text-align:center}.news-text strong{font-size:clamp(13px,1.2vw,23px);line-height:1.25}.news>#news-source{font-size:clamp(9px,.65vw,13px);line-height:1.2;text-align:right;color:#53647e;overflow-wrap:anywhere;max-height:2.4em;overflow:hidden}.news-tag{font-size:clamp(10px,.8vw,16px)}.temperature{font-size:clamp(20px,2vw,38px);font-weight:700}

/* Forecast and headline share the same reading hierarchy. */
.weather #weather-status{font-family:Arial,Helvetica,system-ui,sans-serif;font-size:clamp(13px,1.2vw,23px);font-weight:700;color:#122f69;line-height:1.25;white-space:nowrap}

.news-text{text-align:left}.weather-row{grid-area:weather;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;min-height:0}.weather-row .weather{grid-area:auto;grid-template-columns:auto auto minmax(0,1fr)}.weather-row>.clock{background:#fff;border-radius:12px;padding:0 18px;display:grid;place-items:center;font-size:clamp(24px,2.6vw,46px);font-weight:800;min-width:5ch}.weather-row[hidden]{display:none}

/* Keep video subtitles unobstructed; editorial copy remains available for image cards. */
.hero-copy[hidden]{display:none}

/* TV OFF */
.tv-suspended{background:#101828;color:#e8edf5}
/* QR Code opcional */
.tv-qr{position:fixed;right:1.2vw;bottom:15vh;z-index:40;display:flex;align-items:center;gap:.8vw;background:rgba(255,255,255,.94);color:#14213d;border-radius:1vw;padding:.7vw .9vw;box-shadow:0 .4vw 1.6vw rgba(0,0,0,.25)}
.tv-qr-code{width:8.5vw;height:8.5vw}.tv-qr-code svg{width:100%;height:100%;display:block}
.tv-qr-label{max-width:12vw;font-weight:700;font-size:1.25vw;line-height:1.2}
/* Chamada de pacientes */
.tv-call{position:fixed;left:50%;top:44%;z-index:90;min-width:46vw;max-width:80vw;padding:2.6vw 4vw;border-radius:2vw;background:var(--navy,#172F59);color:#fff;text-align:center;box-shadow:0 2vw 6vw rgba(0,0,0,.45);border:.35vw solid var(--gold,#B68B49);opacity:0;pointer-events:none;transform:translate(-50%,-50%) scale(.92);transition:opacity .35s,transform .35s}
.tv-call.is-visible{opacity:1;transform:translate(-50%,-50%) scale(1)}
.tv-call-eyebrow{display:block;letter-spacing:.3em;font-size:1.5vw;font-weight:700;color:var(--gold,#B68B49)}
.tv-call-name{display:block;font-size:6vw;line-height:1.1;margin:.6vw 0;font-family:Arial,Helvetica,sans-serif;font-weight:800}
.tv-call-room{display:block;font-size:3vw;font-weight:700}
/* Botões do player somem após 10 s sem uso (TV limpa para os pacientes) e nunca aparecem no monitor do portal */
body.tv-idle .tv-refresh,body.tv-idle .program-menu-trigger,body.tv-idle .tv-audio-enable{opacity:0!important;pointer-events:none;transition:opacity .4s}
body.tv-monitor .tv-refresh,body.tv-monitor .program-menu-trigger{display:none!important}
/* Faixa do clima (04/11/2026): rótulo + cidade em uma linha, temperatura grande à esquerda e previsão ao lado */
.tv.tv-fixed .weather{display:grid!important;grid-template-columns:auto minmax(0,1fr)!important;grid-template-rows:auto auto!important;grid-template-areas:"title title" "temp status"!important;align-content:center!important;justify-content:stretch!important;column-gap:.55em!important;row-gap:.35em!important;text-align:left!important}
.tv.tv-fixed .weather-title{grid-area:title!important;display:flex!important;align-items:center!important;gap:.4em!important;margin:0!important;min-width:0!important;overflow:hidden!important;text-transform:uppercase;letter-spacing:.06em;line-height:1.15!important}
.tv.tv-fixed .weather-title .weather-icon{font-size:1.15em;line-height:1}
.tv.tv-fixed .weather-label{font-weight:700;opacity:.78;flex:none}
.tv.tv-fixed .weather-title small.weather-city{display:block!important;flex:0 1 auto;min-width:0;font-size:1em!important;font-weight:800;opacity:1!important;white-space:nowrap!important;overflow:hidden;text-overflow:ellipsis;line-height:1.15!important}
.tv.tv-fixed .weather-title small.weather-city:not(:empty)::before{content:"·";margin-right:.4em;opacity:.6}
.tv.tv-fixed .temperature{grid-area:temp!important;align-self:center!important;line-height:1!important;letter-spacing:-.02em}
.tv.tv-fixed .temperature:empty{display:none!important}
.tv.tv-fixed #weather-status{grid-area:status!important;display:flex!important;flex-direction:column!important;align-items:flex-start!important;justify-content:center!important;text-align:left!important;width:auto!important;flex:none!important;gap:.12em!important;min-width:0!important;overflow:hidden!important}
.tv.tv-fixed .temperature:empty+#weather-status{grid-column:1/-1!important}
.tv.tv-fixed #weather-status .weather-credit{font-size:.62em;font-weight:500;opacity:.75;color:inherit;text-decoration:none;margin-top:.15em}
.tv.tv-fixed .weather-title{justify-content:flex-start!important;letter-spacing:.03em}
.tv.tv-fixed .weather-label{display:none}
.tv.tv-fixed #weather-status .forecast-value{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap!important}
.tv.tv-fixed .weather{column-gap:.45em!important}
.tv.tv-fixed .weather-title small.weather-city:not(:empty)::before{content:none}
.tv-qr{bottom:19vh}
/* Sem logo: nome da clínica centralizado na área branca da faixa */
.band-logo .band-logo-name{display:flex;align-items:center;justify-content:center;height:100%;padding:0 6%;text-align:center;font-weight:800;line-height:1.15;color:var(--navy,#172F59);font-size:clamp(14px,1.6vw,34px);overflow:hidden;text-wrap:balance}

/* Fora do horário de funcionamento */
.tv-sleep{background:#05070d;color:#7d8aa3;font-size:8vw;font-weight:800}
.tv-sleep small{font-size:1.6vw;font-weight:500}
.tv.tv-fixed .weather{padding:0 .4em!important}
.tv.tv-fixed .weather-title,.tv.tv-fixed .temperature,.tv.tv-fixed #weather-status{justify-self:start!important}
/* TV em pé (retrato): coluna esquerda com logo, relógio, clima e notícias empilhados */
.tv.tv-portrait .screen-footer{background:var(--band-background,#087FA9);background:linear-gradient(180deg,var(--band-background,#087fa9),var(--band-background2,var(--band-background,#087fa9)))}
.tv.tv-portrait .weather-row{display:block!important}
.tv.tv-portrait .weather-row>#clock{border-left:0!important;border-bottom:1px solid rgba(255,255,255,.25)!important;margin:0!important;padding:0!important;display:flex!important;flex-direction:column;align-items:center;justify-content:center}
.tv.tv-portrait .weather{grid-template-columns:1fr!important;grid-template-areas:"title" "temp" "status"!important;align-content:center!important;justify-items:center!important;text-align:center!important;padding:0 6%!important;border-bottom:1px solid rgba(255,255,255,.25)}
.tv.tv-portrait .weather-title,.tv.tv-portrait .temperature,.tv.tv-portrait #weather-status{justify-self:center!important;align-items:center!important;text-align:center!important}
.tv.tv-portrait .temperature:empty+#weather-status{grid-column:1!important}
.tv.tv-portrait .news{display:flex!important;flex-direction:column!important;justify-content:center!important;padding:6% 8%!important;gap:.6em}
.tv.tv-portrait .news-text strong{-webkit-line-clamp:7!important}
.tv.tv-portrait #news-source{position:static!important;max-width:none!important;text-align:left!important}
.tv.tv-portrait .tv-qr{right:1.5vh;bottom:1.5vh}
.tv.tv-portrait .tv-call{min-width:80%}
.tv.tv-portrait .band-logo .band-logo-name{font-size:2.4vmax}

/* Painel de senhas (área principal) */
.tv-queue{position:absolute;inset:0;display:grid;grid-template-columns:58% 42%;background:linear-gradient(135deg,var(--navy,#172F59),#0d1c38);color:#fff;font-family:Arial,Helvetica,sans-serif;overflow:hidden}
.tv-queue.is-tall{grid-template-columns:1fr;grid-template-rows:58% 42%}
.tvq-now{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:4em;gap:1.2em;border-right:.5em solid var(--gold,#B68B49)}
.tv-queue.is-tall .tvq-now{border-right:0;border-bottom:.5em solid var(--gold,#B68B49)}
.tvq-eyebrow{display:block;font-size:4.2em;font-weight:700;letter-spacing:.3em;color:var(--gold,#B68B49)}
.tvq-code{display:block;font-size:26em;line-height:.95;font-weight:800;letter-spacing:.02em}
.tvq-code.is-name{font-size:15em;line-height:1.05;word-break:break-word}
.tvq-code.is-idle{opacity:.5}
.tvq-name{display:block;font-size:10em;font-weight:700;line-height:1.05}
.tvq-room{display:block;font-size:7em;font-weight:700;color:#e8edf7}
.tvq-now.is-new{animation:tvq-pulse 1s ease-in-out 5}
@keyframes tvq-pulse{0%,100%{background:transparent}50%{background:rgba(255,255,255,.14)}}
.tvq-list{display:flex;flex-direction:column;justify-content:center;gap:2.4em;padding:4em 5em;background:rgba(0,0,0,.18)}
.tvq-row{display:flex;flex-direction:column;gap:.4em;padding:2.2em 3em;border-radius:2em;background:rgba(255,255,255,.08)}
.tvq-row strong{font-size:9.5em;line-height:1;font-weight:800}
.tvq-row span{font-size:5em;opacity:.9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tvq-row.is-empty{opacity:.35}

/* Pop-ups sobre a tela principal (QR Code e Aviso): nunca sobre a lateral 9:16 */
.hero>.tv-qr{position:absolute!important;right:2.5%;bottom:5%;top:auto;left:auto;z-index:6}
.tv.tv-portrait .hero>.tv-qr{right:2.5%;bottom:5%}
.tv-pop{opacity:0;visibility:hidden;transform:translateY(12px);transition:opacity .5s,transform .5s,visibility .5s}
.tv-pop.is-on{opacity:1;visibility:visible;transform:none}
.hero>.tv-notice{position:absolute;left:50%;bottom:6%;z-index:6;max-width:80%;display:flex;align-items:center;gap:1vw;padding:1.1vw 1.6vw;border-radius:1vw;background:rgba(11,46,52,.94);color:#fff;border-left:.45vw solid var(--gold,#D8B877);box-shadow:0 .6vw 2vw rgba(0,0,0,.35);font-family:Arial,Helvetica,sans-serif;transform:translate(-50%,12px)}
.hero>.tv-notice.is-on{transform:translate(-50%,0)}
.tv-notice-tag{font-size:1.05vw;font-weight:800;letter-spacing:.2em;color:var(--gold,#D8B877)}
.hero>.tv-notice strong{font-size:1.9vw;line-height:1.25}
.tv.tv-portrait .hero>.tv-notice strong{font-size:2.6vw}
/* Pop-ups no alto da tela principal (sobre a foto), para não cobrir o título e o texto dos cards. */
.hero>.tv-qr{top:4%!important;bottom:auto!important;right:2.5%!important}
.hero>.tv-notice{top:5%;bottom:auto}
.tv.tv-portrait .hero>.tv-qr{top:5%!important;bottom:auto!important}
/* Trava final: o nome da cidade (ex.: BE/ES) fica sempre centralizado na faixa do clima, em qualquer layout. */
html body .tv .weather .weather-title,html body .tv.tv-fixed .weather .weather-title{grid-column:1/-1!important;justify-self:center!important;justify-content:center!important;align-items:center!important;margin:0 auto!important;max-width:100%!important;text-align:center!important}
/* Trava final do bloco de clima: cidade em cima e "temperatura + previsão" juntos, centralizados entre as bordas da faixa. */
html body .tv:not(.tv-portrait) .weather,html body .tv.tv-fixed:not(.tv-portrait) .weather{grid-template-columns:max-content max-content!important;justify-content:center!important;justify-items:start!important;text-align:left!important}
html body .tv:not(.tv-portrait) .weather .temperature{justify-self:end!important}
html body .tv:not(.tv-portrait) .weather #weather-status{justify-self:start!important;max-width:100%}

/* Botão de som na TV: grande e no centro, para apertar OK no controle. */
.tv-audio-enable.is-big{top:50%!important;left:50%!important;right:auto!important;transform:translate(-50%,-50%);font-size:clamp(18px,2.4vw,40px)!important;padding:.7em 1.2em!important;border-radius:16px!important;background:#172f59f2!important;border:3px solid #e3d1a5!important;z-index:60!important}

.yt-error{position:absolute;left:5%;right:5%;bottom:8%;z-index:4;padding:.8em 1em;border-radius:12px;background:#000c;color:#fff;font:700 clamp(14px,1.6vw,26px) system-ui,sans-serif;text-align:center}

.media-error{position:absolute;left:4%;right:4%;top:4%;z-index:6;padding:.5em .8em;border-radius:10px;background:#000c;color:#fff;font:700 clamp(12px,1.2vw,20px) system-ui,sans-serif;text-align:center}

.tv-app-update{position:fixed;left:12px;top:12px;z-index:70;max-width:46%;padding:8px 12px;border-radius:10px;background:#172f59e6;border:1px solid #e3d1a5;color:#fff;font:700 clamp(11px,1vw,16px) system-ui,sans-serif}
