/* pecas.css: as peças do "Estúdio noturno": a arte de cada episódio, cartões, faixas da lista, chips, abas,
   o tocador, capítulos, transcrição, links, créditos, onde ouvir e os modais. Depende de: casca.css antes dele. */

/* ================================================================ a arte do episódio
   Desenhada do número e do tema: o fundo leva a cor do tema (e a do segundo tema, se houver), a forma muda
   com o número (anéis, listras, sol ou pontos), o canto de onde ela nasce também (o "giro"), e a onda
   embaixo é sorteada do número pelo estudio.js. */

.arte {
  --foco-x: 100%;
  --foco-y: 100%;
  --angulo: -52deg;
  position: relative;
  isolation: isolate;
  display: block;
  width: 100%;
  aspect-ratio: 1;
  overflow: hidden;
  container-type: inline-size;
  border-radius: var(--raio-pequeno);
  background:
    radial-gradient(120% 95% at 100% 0%, color-mix(in oklab, var(--cor2) 55%, transparent), transparent 62%),
    linear-gradient(158deg, color-mix(in oklab, var(--cor) 58%, #07080c) 0%, #0a0b10 92%);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.07);
  color: #fff;
}

.arte::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  transition: transform var(--medio) cubic-bezier(0.2, 0.7, 0.2, 1);
}

/* o giro: de que canto a forma nasce */
.arte[data-giro="1"] { --foco-x: 0%; --foco-y: 100%; --angulo: 52deg; }
.arte[data-giro="2"] { --foco-x: 100%; --foco-y: 0%; --angulo: -18deg; }

/* forma 0: anéis saindo do canto, como o sinal de uma antena */
.arte[data-forma="0"]::before {
  background: repeating-radial-gradient(circle at var(--foco-x) var(--foco-y), transparent 0 8%, color-mix(in oklab, var(--cor) 80%, transparent) 8% 10.5%);
  -webkit-mask: radial-gradient(circle at var(--foco-x) var(--foco-y), #000 25%, transparent 88%);
  mask: radial-gradient(circle at var(--foco-x) var(--foco-y), #000 25%, transparent 88%);
}

/* forma 1: listras em diagonal, como fita de rolo */
.arte[data-forma="1"]::before {
  background: repeating-linear-gradient(var(--angulo), transparent 0 8%, color-mix(in oklab, var(--cor) 62%, transparent) 8% 11.5%);
  -webkit-mask: radial-gradient(circle at var(--foco-x) var(--foco-y), #000 20%, transparent 95%);
  mask: radial-gradient(circle at var(--foco-x) var(--foco-y), #000 20%, transparent 95%);
}

/* forma 2: um sol nascendo atrás da onda */
.arte[data-forma="2"]::before {
  background:
    radial-gradient(circle at calc(var(--foco-x) * 0.8 + 10%) calc(var(--foco-y) + 10%), var(--cor) 0 33%, color-mix(in oklab, var(--cor) 30%, transparent) 33.5% 45%, transparent 45.5%);
}

/* forma 3: grade de pontos, como a tela de um alto-falante */
.arte[data-forma="3"]::before {
  background: radial-gradient(circle, color-mix(in oklab, var(--cor) 88%, transparent) 0 21%, transparent 25%) 0 0 / 11.111% 11.111%;
  -webkit-mask: radial-gradient(circle at var(--foco-x) var(--foco-y), #000 15%, transparent 80%);
  mask: radial-gradient(circle at var(--foco-x) var(--foco-y), #000 15%, transparent 80%);
}

.arte__numero {
  position: absolute;
  top: 3%;
  left: 7%;
  color: #fff;
  font: 800 44cqi/1 var(--letra-titulo);
  letter-spacing: -0.05em;
  text-shadow: 0 2px 18px rgba(0, 0, 0, 0.35);
}

.arte__onda {
  position: absolute;
  right: 7%;
  bottom: 8%;
  left: 7%;
  height: 24%;
  color: rgba(255, 255, 255, 0.86);
}
.arte__onda svg,
.onda-barra__desenho svg {
  display: block;
  width: 100%;
  height: 100%;
  fill: currentColor;
}

.arte--banner { aspect-ratio: 16 / 9; }
.arte--banner .arte__numero { font-size: 27cqi; }
.arte--banner .arte__onda { height: 22%; left: 42%; }

.arte--mini { width: 56px; border-radius: 9px; }
.arte--pequena { width: 84px; }

.arte--tocador {
  aspect-ratio: 16 / 9;
  border-radius: var(--raio);
}
.arte--tocador .arte__numero { top: 4%; left: 5%; font-size: 30cqi; }
.arte__onda--larga { left: 5%; right: 5%; bottom: 10%; height: 26%; }

/* ================================================================ texto de apoio: a linha de número, data e duração */

.meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0 8px;
  color: var(--texto-fraco);
  font-size: 14px;
}
/* O "·" vai no fim de cada item: quando a linha quebra, ele fica no fim da de cima, nunca no começo da de baixo. */
.meta > *:not(:last-child)::after {
  content: "·";
  margin-left: 8px;
  color: rgba(255, 255, 255, 0.3);
}
.meta > .selo::after { content: none; }
.meta__ep::before { content: "Ep. "; }

.selo {
  padding: 2px 9px;
  border-radius: 999px;
  background: #d6342a;
  color: #fff;
  font: 800 12px/1.5 var(--letra-texto);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

/* ================================================================ cartões de episódio */

.cartoes { display: grid; gap: 12px; }

.cartao {
  position: relative;
  min-width: 0;
  border: 1px solid var(--linha);
  border-radius: 16px;
  background: var(--cartao);
  transition: background-color var(--rapido), border-color var(--rapido);
}
.cartao:hover {
  border-color: color-mix(in oklab, var(--cor) 45%, transparent);
  background: var(--cartao-alto);
}
.cartao:hover .arte::before { transform: scale(1.08); }
.cartao:has(.cartao__titulo:focus-visible) { outline: 3px solid var(--foco); outline-offset: 3px; }

.cartao__corpo { display: grid; gap: 3px; min-width: 0; }

/* Título em lista: uma linha só, no tamanho do resto; o inteiro fica no title. */
.cartao__titulo {
  display: block;
  overflow: hidden;
  color: var(--texto);
  font: 700 16px/1.4 var(--letra-titulo);
  letter-spacing: -0.01em;
  text-decoration: none;
  white-space: nowrap;
  text-overflow: ellipsis;
}
.cartao__titulo:focus-visible { outline: none; }
.cartao__titulo::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
}

.cartao__resumo {
  display: -webkit-box;
  overflow: hidden;
  color: var(--texto-fraco);
  font-size: 14.5px;
  line-height: 1.5;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}

.cartao--deitado {
  display: grid;
  grid-template-columns: 84px minmax(0, 1fr);
  align-items: center;
  gap: 14px;
  padding: 10px 14px 10px 10px;
}

.cartao--em-pe {
  display: grid;
  align-content: start;
  gap: 12px;
  padding: 10px 10px 16px;
  border-radius: var(--raio);
}
.cartao--em-pe .cartao__corpo { padding: 0 6px; }

.cartao--compacto {
  display: grid;
  grid-template-columns: 56px minmax(0, 1fr);
  align-items: center;
  gap: 12px;
  padding: 8px 12px 8px 8px;
  border-radius: 14px;
  background: var(--cartao-alto);
}

/* ================================================================ faixas: a lista de episódios, como num app de áudio */

.faixas { display: grid; gap: 8px; }

.faixa {
  position: relative;
  display: grid;
  grid-template-columns: 56px minmax(0, 1fr);
  grid-template-areas:
    "arte corpo"
    "arte quando"
    "tema tema"
    "atalhos atalhos";
  align-items: center;
  gap: 2px 14px;
  padding: 10px 12px 10px 10px;
  border: 1px solid var(--linha);
  border-radius: 14px;
  background: var(--cartao);
  transition: background-color var(--rapido), border-color var(--rapido);
}
.faixa:hover { border-color: color-mix(in oklab, var(--cor) 45%, transparent); background: var(--cartao-alto); }
.faixa:hover .arte::before { transform: scale(1.1); }
.faixa:has(.faixa__titulo:focus-visible) { outline: 3px solid var(--foco); outline-offset: 3px; }

.faixa .arte { grid-area: arte; align-self: start; }
.faixa__corpo { grid-area: corpo; min-width: 0; }
.faixa__titulo {
  display: block;
  overflow: hidden;
  color: var(--texto);
  font: 700 16px/1.4 var(--letra-titulo);
  text-decoration: none;
  white-space: nowrap;
  text-overflow: ellipsis;
}
.faixa__titulo:focus-visible { outline: none; }
.faixa__titulo::after { content: ""; position: absolute; inset: 0; border-radius: inherit; }
.faixa__resumo {
  display: -webkit-box;
  overflow: hidden;
  color: var(--texto-fraco);
  font-size: 14.5px;
  line-height: 1.45;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}
.faixa__quando { grid-area: quando; }
.faixa__quando,
.faixa__tema {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0 8px;
  min-width: 0;
  color: var(--texto-fraco);
  font-size: 13.5px;
}
.faixa__quando > *:not(:last-child)::after { content: "·"; margin-left: 8px; color: rgba(255, 255, 255, 0.3); }
.faixa__tema { grid-area: tema; display: none; }
.faixa__tema-cor { width: 10px; height: 10px; border-radius: 3px; background: var(--cor); }

.faixa__atalhos {
  position: relative;
  z-index: 1;
  grid-area: atalhos;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding-top: 8px;
}
.faixa:not([data-tem-audio]):not([data-tem-transcricao]) .faixa__atalhos { display: none; }
.faixa:not([data-tem-audio]) .atalho--ouvir,
.faixa:not([data-tem-transcricao]) .atalho--texto { display: none; }

.atalho {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 34px;
  padding: 5px 12px;
  border-radius: 999px;
  background: var(--cartao-alto);
  color: var(--texto);
  font-size: 13.5px;
  font-weight: 700;
  text-decoration: none;
}
.atalho:hover { background: #283043; }
.atalho--ouvir { background: var(--cor); color: var(--tinta-escura); }
.atalho--ouvir:hover { background: color-mix(in oklab, var(--cor) 85%, #fff); }

/* ================================================================ chips de tema e de filtro */

.chip {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 36px;
  padding: 6px 13px;
  border: 1px solid var(--linha);
  border-radius: 999px;
  background: var(--cartao);
  color: var(--texto);
  font: 700 14px/1.2 var(--letra-texto);
  text-decoration: none;
  white-space: nowrap;
  cursor: pointer;
  transition: background-color var(--rapido), border-color var(--rapido), color var(--rapido);
}
.chip:hover { border-color: color-mix(in oklab, var(--cor) 60%, transparent); }
.chip__cor {
  flex: none;
  width: 10px;
  height: 10px;
  border-radius: 3px;
  background: var(--cor);
}
.chip[aria-pressed="true"] { border-color: transparent; background: var(--cor); color: var(--tinta-escura); }
.chip[aria-pressed="true"] .chip__cor { background: var(--tinta-escura); }

.temas-chips { display: flex; flex-wrap: wrap; gap: 8px; }

/* ================================================================ pessoas */

.avatar {
  position: relative;
  display: grid;
  flex: none;
  place-items: center;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: radial-gradient(circle at 32% 25%, #2d3448, #141823);
  color: var(--creme);
  font: 800 24px/1 var(--letra-titulo);
}
/* O anel com as seis cores dos temas: quem fala passa por todos eles. */
.avatar::before {
  content: "";
  position: absolute;
  inset: -4px;
  border-radius: 50%;
  background: conic-gradient(from 200deg, var(--tema-web), var(--tema-ia), var(--tema-automacao), var(--tema-hardware), var(--tema-fundamentos), var(--tema-android), var(--tema-web));
  -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 2.5px));
  mask: radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 2.5px));
}
.avatar--grande { width: 112px; height: 112px; font-size: 48px; }
.avatar--grande::before { inset: -6px; }

.pessoas { display: grid; gap: 14px; }
.pessoa-cartao {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: start;
  gap: 16px;
}
.pessoa-cartao__texto { display: grid; gap: 2px; }
.pessoa-cartao__nome {
  justify-self: start;
  color: var(--texto);
  font: 750 18px/1.3 var(--letra-titulo);
  text-decoration: none;
}
.pessoa-cartao__nome:hover { text-decoration: underline; text-underline-offset: 3px; }
.pessoa-cartao__papel { color: var(--cor); font-size: 14px; font-weight: 700; }
.pessoa-cartao__bio { margin-top: 4px; color: var(--texto-fraco); font-size: 15px; }

/* ================================================================ abas (no telefone; o computador decide em paginas.css) */

.abas {
  display: flex;
  gap: 4px;
  padding: 4px;
  border: 1px solid var(--linha);
  border-radius: 999px;
  background: var(--cartao);
}
.abas__botao {
  flex: 1 1 auto;
  min-width: 0;
  min-height: 40px;
  padding: 8px 6px;
  border: 0;
  border-radius: 999px;
  background: transparent;
  color: var(--texto-fraco);
  font: 700 14px/1.15 var(--letra-texto);
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
  cursor: pointer;
  transition: background-color var(--rapido), color var(--rapido);
}
.abas__botao:hover { color: var(--texto); }
.abas__botao[data-ativa] { background: var(--creme); color: var(--tinta-escura); }

[data-painel]:not([data-ativa]) { display: none; }

.painel {
  padding: 16px;
  border: 1px solid var(--linha);
  border-radius: var(--raio);
  background: var(--cartao);
}
.painel__titulo {
  margin-bottom: 10px;
  color: var(--texto-fraco);
  font: 700 12.5px/1.3 var(--letra-texto);
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
.painel__subtitulo { margin: 4px 0 12px; font-size: 18px; }
.painel__subtitulo:not(:first-child) { margin-top: 26px; }
.painel__nota { margin-bottom: 12px; color: var(--texto-fraco); font-size: 14px; }

/* ================================================================ o tocador */

.botao-tocar {
  display: grid;
  flex: none;
  place-items: center;
  width: 54px;
  height: 54px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: var(--cor);
  color: var(--tinta-escura);
  cursor: pointer;
  box-shadow: 0 10px 28px -10px color-mix(in oklab, var(--cor) 80%, transparent);
  transition: transform var(--rapido), background-color var(--rapido);
}
.botao-tocar .icone { width: 26px; height: 26px; }
.botao-tocar:hover { transform: scale(1.06); background: color-mix(in oklab, var(--cor) 85%, #fff); }
.botao-tocar:active { transform: scale(0.96); }
.botao-tocar--grande { width: 66px; height: 66px; }
.botao-tocar--grande .icone { width: 30px; height: 30px; }

/* Tocando, o botão respira como a luz de "no ar" do estúdio. */
html[data-tocador="tocando"] .botao-tocar { animation: no-ar 2.4s ease-in-out infinite; }
@keyframes no-ar {
  50% { box-shadow: 0 0 0 9px color-mix(in oklab, var(--cor) 20%, transparent), 0 10px 28px -10px color-mix(in oklab, var(--cor) 80%, transparent); }
}

/* A onda do episódio é a própria barra de progresso: a parte tocada acende, o resto fica apagado. */
.onda-barra { position: relative; height: 46px; }
.onda-barra__desenho { position: absolute; inset: 0; }
.onda-barra__desenho svg { position: absolute; inset: 0; }
.onda__base { color: rgba(255, 255, 255, 0.2); }
.onda__cheia {
  color: var(--cor);
  clip-path: inset(0 calc(100% - var(--progresso) * 100%) 0 0);
}

.onda-barra__controle {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  background: transparent;
  cursor: pointer;
  -webkit-appearance: none;
  appearance: none;
}
.onda-barra__controle::-webkit-slider-runnable-track { height: 100%; background: transparent; }
.onda-barra__controle::-webkit-slider-thumb {
  width: 4px;
  height: 46px;
  border-radius: 2px;
  background: var(--creme);
  box-shadow: 0 0 0 3px rgba(11, 13, 19, 0.6);
  -webkit-appearance: none;
  appearance: none;
}
.onda-barra__controle::-moz-range-track { height: 100%; background: transparent; }
.onda-barra__controle::-moz-range-thumb {
  width: 4px;
  height: 46px;
  border: 0;
  border-radius: 2px;
  background: var(--creme);
}
.onda-barra__controle:focus-visible { outline: 3px solid var(--foco); outline-offset: 4px; border-radius: 8px; }

.mini-tocador {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: 14px;
}
.mini-tocador__trilha { display: grid; gap: 4px; min-width: 0; }
.mini-tocador__tempos {
  display: flex;
  justify-content: space-between;
  color: var(--texto-fraco);
  font: 600 13px/1.2 var(--letra-titulo);
  font-variant-numeric: tabular-nums;
}

.tocador { display: grid; gap: 14px; }

/* Na arte do tocador, a onda e os tempos ficam por cima do desenho. */
.tocador__agora {
  position: absolute;
  top: 6%;
  right: 5%;
  display: flex;
  align-items: center;
  gap: 8px;
  max-width: 58%;
  padding: 5px 12px;
  border-radius: 999px;
  background: rgba(8, 9, 14, 0.62);
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
  font-size: 13.5px;
  font-weight: 700;
}
.tocador__agora > span:last-child { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }

.onda-barra--na-arte {
  position: absolute;
  right: 5%;
  bottom: 22%;
  left: 5%;
  height: 25%;
}
.onda-barra--na-arte .onda__base { color: rgba(255, 255, 255, 0.32); }
.onda-barra--na-arte .onda__cheia { color: #fff; }
.onda-barra--na-arte .onda-barra__controle::-webkit-slider-thumb { height: 64px; }

.tocador__tempos {
  position: absolute;
  right: 5%;
  bottom: 6%;
  left: 5%;
  display: flex;
  justify-content: space-between;
  color: #fff;
  font: 650 14px/1.2 var(--letra-titulo);
  font-variant-numeric: tabular-nums;
  text-shadow: 0 1px 8px rgba(0, 0, 0, 0.5);
}

.equalizador {
  flex: none;
  width: 14px;
  height: 12px;
  color: var(--cor);
  background:
    linear-gradient(currentColor 0 0) 0 100% / 3px 45% no-repeat,
    linear-gradient(currentColor 0 0) 50% 100% / 3px 85% no-repeat,
    linear-gradient(currentColor 0 0) 100% 100% / 3px 60% no-repeat;
}
html[data-tocador="tocando"] .equalizador { animation: equalizador 0.9s ease-in-out infinite alternate; }
@keyframes equalizador {
  to { background-size: 3px 90%, 3px 35%, 3px 100%; }
}

.controles {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
}

.botao-redondo {
  position: relative;
  display: grid;
  flex: none;
  place-items: center;
  width: 46px;
  height: 46px;
  padding: 0;
  border: 1px solid var(--linha);
  border-radius: 50%;
  background: var(--cartao-alto);
  color: var(--texto);
  font: 750 14px/1 var(--letra-titulo);
  text-decoration: none;
  cursor: pointer;
  transition: background-color var(--rapido), transform var(--rapido);
}
.botao-redondo:hover { background: #283043; }
.botao-redondo:active { transform: scale(0.94); }
.botao-redondo .icone { width: 30px; height: 30px; }
.botao-redondo > .icone--baixar { width: 22px; height: 22px; }
.botao-redondo__numero {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  padding-top: 2px;
  font-size: 9.5px;
  font-weight: 800;
}
.botao-redondo--largo { width: auto; min-width: 54px; padding: 0 12px; border-radius: 999px; }

.tocador__retomar {
  justify-self: center;
  padding: 4px 12px;
  border-radius: 999px;
  background: color-mix(in oklab, var(--cor) 16%, transparent);
  color: var(--texto);
  font-size: 13.5px;
  font-weight: 700;
}

.tocador__sem-audio {
  padding: 12px 14px;
  border: 1px dashed rgba(255, 255, 255, 0.18);
  border-radius: 14px;
  color: var(--texto-fraco);
  font-size: 14.5px;
}
.tocador__sem-audio a { color: var(--texto); font-weight: 700; }

/* ================================================================ capítulos e transcrição */

.capitulos { display: grid; gap: 2px; }
.capitulo__botao {
  display: grid;
  grid-template-columns: 50px minmax(0, 1fr);
  align-items: center;
  gap: 10px;
  width: 100%;
  min-height: 38px;
  padding: 6px 12px;
  border: 0;
  border-radius: 10px;
  background: transparent;
  color: var(--texto);
  font-size: 15px;
  text-align: left;
  cursor: pointer;
  transition: background-color var(--rapido);
}
.capitulo__botao:hover { background: var(--cartao-alto); }
.capitulo__tempo {
  color: var(--cor);
  font: 700 13.5px/1 var(--letra-titulo);
  font-variant-numeric: tabular-nums;
}
.capitulo__nome { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.capitulo[data-agora] .capitulo__botao {
  background: color-mix(in oklab, var(--cor) 15%, transparent);
  box-shadow: inset 3px 0 0 var(--cor);
}

/* No telefone, capítulos e transcrição são caixas da mesma altura que rolam por dentro: trocar de aba não
   empurra a página, e o player leva a linha que toca pra dentro da caixa. Não podem ter position: o player
   mede a linha pelo offsetTop. */
.capitulos {
  max-height: min(52vh, 380px);
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-color: rgba(255, 255, 255, 0.2) transparent;
  scrollbar-width: thin;
}

.transcricao {
  display: grid;
  align-content: start;
  gap: 2px;
  height: min(52vh, 380px);
  margin-right: -8px;
  padding-right: 8px;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-color: rgba(255, 255, 255, 0.2) transparent;
  scrollbar-width: thin;
}
.fala {
  display: grid;
  grid-template-columns: 58px minmax(0, 1fr);
  align-items: start;
  gap: 10px;
  padding: 10px 8px;
  border-radius: 12px;
  cursor: pointer;
  transition: background-color var(--rapido);
}
.fala:hover { background: rgba(255, 255, 255, 0.04); }
.fala__tempo {
  justify-self: start;
  padding: 3px 8px;
  border: 1px solid var(--linha);
  border-radius: 999px;
  background: transparent;
  color: var(--cor);
  font: 700 13px/1.3 var(--letra-titulo);
  font-variant-numeric: tabular-nums;
  cursor: pointer;
}
.fala__texto { color: #d5d9e4; font-size: 16px; line-height: 1.6; }
.fala[data-agora] { background: color-mix(in oklab, var(--cor) 12%, transparent); }
.fala[data-agora] .fala__tempo { border-color: transparent; background: var(--cor); color: var(--tinta-escura); }
.fala[data-agora] .fala__texto { color: var(--texto); }

/* ================================================================ links citados e créditos */

.links { display: grid; gap: 8px; }
.link-citado {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-areas:
    "tipo icone"
    "titulo icone"
    "fonte icone";
  align-items: center;
  gap: 2px 14px;
  padding: 14px 16px;
  border: 1px solid var(--linha);
  border-radius: 14px;
  background: var(--cartao-alto);
  text-decoration: none;
  transition: border-color var(--rapido), background-color var(--rapido);
}
.link-citado:hover { border-color: color-mix(in oklab, var(--cor) 55%, transparent); background: #232938; }
.link-citado::after {
  content: "";
  grid-area: icone;
  width: 20px;
  height: 20px;
  background: var(--texto-fraco);
  -webkit-mask: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M14 4h6v6M20 4l-9 9M18 14v4.5a1.5 1.5 0 0 1-1.5 1.5h-11A1.5 1.5 0 0 1 4 18.5v-11A1.5 1.5 0 0 1 5.5 6H10'/></svg>") center / contain no-repeat;
  mask: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M14 4h6v6M20 4l-9 9M18 14v4.5a1.5 1.5 0 0 1-1.5 1.5h-11A1.5 1.5 0 0 1 4 18.5v-11A1.5 1.5 0 0 1 5.5 6H10'/></svg>") center / contain no-repeat;
}
.link-citado__tipo {
  grid-area: tipo;
  color: var(--cor);
  font: 700 12px/1.3 var(--letra-texto);
  letter-spacing: 0.1em;
  text-transform: uppercase;
}
.link-citado__titulo { grid-area: titulo; color: var(--texto); font-weight: 700; line-height: 1.4; }
.link-citado__fonte { grid-area: fonte; color: var(--texto-fraco); font-size: 14px; }
.link-citado--curto { grid-template-areas: "titulo icone" "fonte icone"; }

.creditos { display: grid; }
.credito {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  padding: 11px 0;
  border-bottom: 1px dashed var(--linha);
}
.credito__funcao { color: var(--texto-fraco); }
.credito__nome { font-weight: 700; text-align: right; }

/* ================================================================ onde ouvir: três destaques e o "mais opções" */

.onde-ouvir__grade {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}
.onde-ouvir__grade .plataformas { display: contents; }

.plataformas--todas { display: grid; gap: 8px; }

.plataforma {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  min-width: 0;
  min-height: 52px;
  padding: 8px 12px 8px 8px;
  border: 1px solid var(--linha);
  border-radius: 14px;
  background: var(--cartao-alto);
  color: var(--texto);
  font: 700 15px/1.2 var(--letra-texto);
  text-align: left;
  text-decoration: none;
  cursor: pointer;
  transition: background-color var(--rapido), border-color var(--rapido), transform var(--rapido);
}
.plataforma:hover { border-color: rgba(255, 255, 255, 0.22); background: #262c3c; }
.plataforma:active { transform: scale(0.98); }
.plataforma__nome { min-width: 0; line-height: 1.15; overflow-wrap: break-word; }

/* A marca de cada serviço: um círculo com a cor dele e um desenho simples, feito aqui. */
.plataforma__marca {
  position: relative;
  flex: none;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--marca, var(--cartao));
}
.plataforma__marca::before {
  content: "";
  position: absolute;
  inset: 6px;
  background: var(--tinta-escura);
  -webkit-mask: var(--glifo) center / contain no-repeat;
  mask: var(--glifo) center / contain no-repeat;
}
[data-plataforma="spotify"] {
  --marca: #1ed760;
  --glifo: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.3' stroke-linecap='round'><path d='M5.5 9.2c4.3-1.4 9.2-1 13 1.1M6.5 12.8c3.4-1 7.2-.7 10.2.9M7.5 16.2c2.6-.7 5.3-.5 7.6.6'/></svg>");
}
[data-plataforma="apple"] {
  --marca: #c07cff;
  --glifo: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><circle cx='12' cy='10' r='2.7'/><path d='M10.6 14h2.8l-.5 6.2h-1.8z'/><path d='M7.2 15.4a6.3 6.3 0 1 1 9.6 0' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'/></svg>");
}
[data-plataforma="youtube"] {
  --marca: #ff4a4a;
  --glifo: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M9 6.8v10.4l8.4-5.2z'/></svg>");
}
[data-plataforma="deezer"] {
  --marca: #ffa63d;
  --glifo: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><rect x='3.5' y='14' width='3.2' height='5' rx='.9'/><rect x='8.2' y='10.5' width='3.2' height='8.5' rx='.9'/><rect x='12.9' y='7.5' width='3.2' height='11.5' rx='.9'/><rect x='17.6' y='4.5' width='3.2' height='14.5' rx='.9'/></svg>");
}
[data-plataforma="amazon"] {
  --marca: #3fd2dc;
  --glifo: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.3' stroke-linecap='round' stroke-linejoin='round'><path d='M4.5 11.5c4.5 3.4 10.5 3.4 15 0'/><path d='M16.3 10.4l3.2 1.1-.9 3.2'/></svg>");
}
.plataforma--mais .plataforma__marca { --marca: transparent; box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.28); }
.plataforma--mais .plataforma__marca::before {
  inset: 8px;
  background: var(--texto);
  --glifo: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round'><path d='M12 5v14M5 12h14'/></svg>");
}

/* ================================================================ antes e depois deste episódio */

.vizinhos { display: grid; gap: 8px; }
.vizinho {
  display: grid;
  grid-template-columns: 56px minmax(0, 1fr);
  align-items: center;
  gap: 12px;
  padding: 8px 12px 8px 8px;
  border: 1px solid var(--linha);
  border-radius: 14px;
  background: var(--cartao-alto);
  text-decoration: none;
  transition: border-color var(--rapido);
}
.vizinho:hover { border-color: color-mix(in oklab, var(--cor) 55%, transparent); }
.vizinho:hover .arte::before { transform: scale(1.1); }
.vizinho__texto { display: grid; gap: 2px; min-width: 0; }
.vizinho__direcao { color: var(--texto-fraco); font-size: 13px; font-weight: 700; }
.vizinho__titulo {
  overflow: hidden;
  color: var(--texto);
  font: 700 16px/1.4 var(--letra-titulo);
  white-space: nowrap;
  text-overflow: ellipsis;
}

/* ================================================================ dentro dos modais (o casco é do ../comum/modal.css) */

.modal { border: 1px solid rgba(255, 255, 255, 0.1); }
.modal-titulo { font-family: var(--letra-titulo); }

.onde-ouvir-modal { display: grid; gap: 16px; }
.onde-ouvir-modal__texto { color: var(--texto-fraco); font-size: 15px; }

.feed-caixa {
  display: grid;
  gap: 8px;
  padding: 14px;
  border: 1px dashed rgba(255, 255, 255, 0.18);
  border-radius: 14px;
}
.feed-caixa__rotulo { color: var(--texto-fraco); font-size: 13px; font-weight: 700; }
.feed-caixa__endereco { overflow-wrap: anywhere; color: var(--texto); font-size: 14px; }

.compartilhar { display: grid; gap: 14px; }
.compartilhar__minuto {
  display: flex;
  align-items: center;
  gap: 10px;
  font-weight: 700;
  cursor: pointer;
}
.compartilhar__minuto input { width: 20px; height: 20px; margin: 0; accent-color: var(--creme); }
.compartilhar__endereco {
  width: 100%;
  min-height: 46px;
  padding: 10px 12px;
  border: 1px solid var(--linha);
  border-radius: 12px;
  background: var(--fundo);
  color: var(--texto);
  font: 14px/1.4 ui-monospace, Consolas, monospace;
}
.compartilhar__botoes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.compartilhar__botao {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 48px;
  padding: 10px 14px;
  border: 1px solid var(--linha);
  border-radius: 999px;
  background: var(--cartao-alto);
  color: var(--texto);
  font: 700 15px/1.2 var(--letra-texto);
  text-align: center;
  text-decoration: none;
  cursor: pointer;
}
.compartilhar__botao:hover { background: #283043; }
.compartilhar__botao--zap { border-color: transparent; background: #25d366; color: #052a14; }
.compartilhar__botao--zap:hover { background: #3ee07a; }

/* ================================================================ computador */

@media (min-width: 900px) {
  .faixa {
    grid-template-columns: 56px minmax(0, 1fr) 176px 196px 84px;
    grid-template-areas: "arte corpo tema quando atalhos";
    gap: 0 18px;
    padding: 8px 14px 8px 8px;
  }
  .faixa .arte { align-self: center; }
  .faixa__resumo { -webkit-line-clamp: 1; }
  .faixa__tema { display: flex; flex-wrap: nowrap; }
  .faixa__tema > span:last-child { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .faixa__quando { flex-wrap: nowrap; white-space: nowrap; }
  .faixa__atalhos { flex-wrap: nowrap; justify-content: flex-end; padding-top: 0; }

  /* No computador os atalhos viram botões redondos; o nome fica pra quem ouve a página e no title. */
  .atalho { justify-content: center; width: 38px; height: 38px; min-height: 0; padding: 0; }
  .atalho::before { width: 18px; height: 18px; }
  .atalho__nome {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
  }
  .faixa:not([data-tem-audio]):not([data-tem-transcricao]) .faixa__atalhos { display: flex; }

  .capitulos { max-height: none; overflow: visible; }
}
