/* =====================================================================================
   Módulo a01_a02 da página do Episódio 3.0: ato 01 (#especime) e ato 02 (#biolab).
   Só seletores com o prefixo do módulo (.ep3-a01-, .ep3-a02-) ou o id das próprias seções.
   Caminhos relativos a temas/biolab/css/. Contrato: temas/biolab/CONTRATO.md.
   ===================================================================================== */

/* =====================================================================================
   ATO 01 · O Espécime de Teste
   ===================================================================================== */
#especime .ep3-a01-grade { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; }
#especime .ep3-a01-fala-col { display: flex; flex-direction: column; gap: 20px; min-width: 0; }
#especime .ep3-a01-passos-col, #especime .ep3-a01-notas-col, #especime .ep3-a01-foto-col { min-width: 0; }
@media (min-width: 1024px) {
  #especime .ep3-a01-grade { grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 28px; align-items: stretch; }
  #especime .ep3-a01-fala-col { grid-column: 1 / 7; grid-row: 1; }
  #especime .ep3-a01-foto-col { grid-column: 7 / 13; grid-row: 1; }
  #especime .ep3-a01-passos-col { grid-column: 1 / -1; grid-row: 2; }
  #especime .ep3-a01-notas-col { grid-column: 1 / -1; grid-row: 3; }
}

/* ---------------------------------------------------------------- fala do Varnhagen */
#especime .ep3-a01-fala { padding: 18px 24px 18px 18px; }
#especime .ep3-a01-fala .ep3-npc-arte {
  min-width: 92px; min-height: 112px; position: relative;
  background: radial-gradient(50% 22% at 50% 92%, rgba(94, 214, 168, .28), transparent 70%);
}
#especime .ep3-a01-fala .ep3-npc-fala { font-size: 1.02rem; color: var(--ep3-tinta); }

/* ---------------------------------------------------------------- a ampola da vacina */
#especime .ep3-a01-vac {
  position: relative; flex: 1 1 auto; display: none; align-items: flex-end; justify-content: center; gap: 34px;
  min-height: 190px; padding: 14px 24px 20px; margin: 0;
}
@media (min-width: 1024px) { #especime .ep3-a01-vac { display: flex; } }
/* a prateleira de aço onde ficam a ampola e a etiqueta */
#especime .ep3-a01-vac::before {
  content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 22px; border-radius: 2px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, .16), rgba(255, 255, 255, 0) 2px, rgba(0, 0, 0, 0) 60%, rgba(0, 0, 0, .55)),
    url('../../assets/biolab-materiais/chapa-destaque-aco.webp') 0 40% / 256px auto repeat,
    #1a2121;
  box-shadow: 0 10px 24px rgba(0, 0, 0, .55), inset 0 -1px 0 rgba(0, 0, 0, .7);
}
/* a luz verde da ampola na prateleira e na parede */
#especime .ep3-a01-vac::after {
  content: ''; position: absolute; left: 50%; bottom: 8px; width: 360px; height: 220px; transform: translateX(-62%);
  background: radial-gradient(50% 50% at 50% 100%, rgba(94, 214, 168, .22), transparent 70%);
  pointer-events: none; z-index: 0;
}
#especime .ep3-a01-vac-suporte { position: relative; z-index: 1; display: grid; justify-items: center; margin-bottom: 14px; }
#especime .ep3-a01-amp { position: relative; display: block; width: 60px; height: 150px; }
#especime .ep3-a01-amp-tampa {
  position: absolute; left: -4px; right: -4px; top: 0; height: 28px; border-radius: 5px 5px 2px 2px; z-index: 2;
  background:
    repeating-linear-gradient(90deg, rgba(0, 0, 0, .28) 0 1px, transparent 1px 6px),
    linear-gradient(90deg, #1c2323, #8b9695 26%, #c7d0cf 34%, #4a5453 58%, #252d2d 82%, #121717);
  box-shadow: 0 3px 6px rgba(0, 0, 0, .6), inset 0 1px 0 rgba(255, 255, 255, .3);
}
#especime .ep3-a01-amp-tampa::after {
  content: ''; position: absolute; left: 50%; top: -7px; width: 22px; height: 9px; margin-left: -11px; border-radius: 3px 3px 0 0;
  background: linear-gradient(90deg, #262e2e, #a7b1b0 40%, #3a4343);
}
#especime .ep3-a01-amp-vidro {
  position: absolute; left: 3px; right: 3px; top: 25px; bottom: 0; overflow: hidden; z-index: 1;
  border-radius: 4px 4px 27px 27px;
  background: linear-gradient(90deg, rgba(220, 255, 240, .16), rgba(220, 255, 240, .03) 28%, rgba(220, 255, 240, .02) 70%, rgba(220, 255, 240, .14));
  box-shadow: inset 0 0 0 1px rgba(200, 255, 235, .32), inset 0 0 14px rgba(111, 240, 180, .18), 0 0 34px rgba(94, 214, 168, .28);
}
#especime .ep3-a01-amp-liq {
  position: absolute; left: 0; right: 0; bottom: 0; height: 74%; overflow: hidden;
  background:
    radial-gradient(60% 30% at 50% 100%, rgba(190, 255, 220, .35), transparent 70%),
    linear-gradient(180deg, #8ff5c4 0, #3fd08f 5%, #1aa26a 48%, #0b5f3d 100%);
  box-shadow: inset 0 2px 0 rgba(230, 255, 245, .75), inset 0 10px 16px rgba(255, 255, 255, .14);
}
#especime .ep3-a01-amp-bolhas { position: absolute; inset: 0; }
#especime .ep3-a01-amp-bolhas i {
  position: absolute; bottom: -8px; left: calc(16% + var(--b) * 15%);
  width: calc(3px + var(--b) * .6px); height: calc(3px + var(--b) * .6px); border-radius: 50%;
  border: 1px solid rgba(225, 255, 240, .7);
  background: radial-gradient(circle at 35% 30%, rgba(255, 255, 255, .9) 0 18%, transparent 60%);
  animation: ep3-a01-sobe calc(2.6s + var(--b) * .45s) cubic-bezier(.45, 0, .85, .55) infinite;
  animation-delay: calc(var(--b) * -1.1s);
  animation-play-state: paused;
}
#especime .ep3-a01-vac.is-vivo .ep3-a01-amp-bolhas i { animation-play-state: running; }
@keyframes ep3-a01-sobe {
  0% { transform: translate3d(0, 0, 0); opacity: 0; }
  12% { opacity: 1; }
  55% { transform: translate3d(3px, -45px, 0); }
  100% { transform: translate3d(-2px, -90px, 0); opacity: 0; }
}
#especime .ep3-a01-amp-regua {
  position: absolute; right: 7px; top: 14%; bottom: 16%; width: 12px; --ep3-regua-cor: rgba(220, 255, 240, .5); opacity: .8;
}
#especime .ep3-a01-amp-reflexo {
  position: absolute; left: 8px; top: 6%; bottom: 14%; width: 6px; border-radius: 3px;
  background: linear-gradient(180deg, rgba(255, 255, 255, .55), rgba(255, 255, 255, .08));
}
#especime .ep3-a01-vac-base {
  position: relative; z-index: 3; display: flex; align-items: center; justify-content: space-between;
  width: 96px; height: 26px; margin-top: -22px; padding: 0 9px; border-radius: 3px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, .2), transparent 3px, transparent 70%, rgba(0, 0, 0, .5)),
    url('../../assets/biolab-materiais/chapa-destaque-aco.webp') 30% 0 / 256px auto repeat, #2a3232;
  box-shadow: 0 6px 12px rgba(0, 0, 0, .6);
  --ep3-rebite-tam: 8px;
}
#especime .ep3-a01-vac-etq { position: relative; z-index: 1; margin-bottom: 30px; font-size: 9.5px; }
#especime .ep3-a01-vac-etq .ep3-etiqueta__linha:last-child { color: var(--ep3-papel-tinta); font-weight: 600; }

/* ---------------------------------------------------------------- foto do laboratório
   O recorte tira a borda preta da esquerda (e, com ela, o cursor do mouse que ficou na captura). */
#especime .ep3-a01-foto .ep3-fig-img { aspect-ratio: 1060 / 790 !important; }
#especime .ep3-a01-foto .ep3-fig-img img { object-position: 100% 50%; }

/* ---------------------------------------------------------------- os 4 passos (chapas numeradas + cano) */
#especime .ep3-a01-passos .ep3-fichario-trilho { gap: 22px; }
#especime .ep3-a01-passos .ep3-fichario-slide { display: flex; }
#especime .ep3-a01-passo {
  position: relative; flex: 1 1 auto; display: flex; flex-direction: column; gap: 8px; padding: 12px 16px 16px;
  transition: transform .15s ease;
}
#especime .ep3-a01-passo-num { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
#especime .ep3-a01-passo-num .ep3-estencil { font-size: 2.6rem; line-height: .9; letter-spacing: .02em; }
#especime .ep3-a01-passo-led {
  width: 10px; height: 10px; border-radius: 50%; flex: none;
  background: radial-gradient(circle at 35% 30%, #9ff5cf 0 14%, #2c8d66 46%, #0c2a1f 100%);
  box-shadow: 0 0 0 2px #0b1010, 0 0 0 3px rgba(201, 208, 207, .18);
  opacity: .55;
}
#especime .ep3-a01-passo.is-marco .ep3-a01-passo-led { opacity: 1; box-shadow: 0 0 0 2px #0b1010, 0 0 0 3px rgba(201, 208, 207, .18), 0 0 12px #5ed6a8; }
#especime .ep3-a01-passo.is-marco { --ep3-desgaste-opac: .6; }
#especime .ep3-a01-passo.is-marco::before {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(70% 60% at 0% 0%, rgba(94, 214, 168, .14), transparent 70%);
}
#especime .ep3-a01-passo-h3 { font: 700 1.08rem/1.3 var(--ep3-f-texto); color: var(--ep3-tinta); }
#especime .ep3-a01-passo.is-marco .ep3-a01-passo-h3 { color: var(--ep3-menta-clara); }
#especime .ep3-a01-passo-txt { font-size: .92rem; line-height: 1.62; color: var(--ep3-corpo); }
/* o cano fino que liga uma chapa à próxima, na altura do número */
#especime .ep3-a01-passo-cano {
  position: absolute; z-index: -1; top: 16px; left: calc(100% - 4px); width: calc(16px + 22px + 12px); height: 9px;
  border-radius: 4px;
  background:
    linear-gradient(90deg, transparent 0 14px, rgba(0, 0, 0, .55) 14px 16px, transparent 16px calc(100% - 16px), rgba(0, 0, 0, .55) calc(100% - 16px) calc(100% - 14px), transparent 0),
    linear-gradient(180deg, #0d1212, #7f8a89 32%, #b7c1c0 42%, #3a4443 70%, #0b0f0f);
  box-shadow: 0 3px 6px rgba(0, 0, 0, .6);
  overflow: hidden;
}
/* o brilho corre por transform, não por left (desempenho, 15/10: left animado refazia o layout a cada quadro): a faixa tem
   30% do cano, então -100% e 333,333% da própria largura são os -30% e 100% do cano de antes, no mesmo ritmo linear */
#especime .ep3-a01-passo-cano::after {
  content: ''; position: absolute; top: 3px; left: 0; width: 30%; height: 3px; border-radius: 2px; transform: translateX(-100%);
  background: linear-gradient(90deg, transparent, rgba(126, 240, 190, .95), transparent);
  opacity: 0;
}
#especime .ep3-a01-passos.is-vivo .ep3-a01-passo-cano::after { animation: ep3-a01-fluxo 2.4s linear infinite; }
#especime .ep3-fichario-slide:last-child .ep3-a01-passo-cano { display: none; }
@keyframes ep3-a01-fluxo { 0% { transform: translateX(-100%); opacity: 0; } 15% { opacity: 1; } 85% { opacity: 1; } 100% { transform: translateX(333.333%); opacity: 0; } }
@media (hover: hover) and (pointer: fine) { #especime .ep3-a01-passo:hover { transform: translateY(-1px); } }
@media (max-width: 1023px) {
  #especime .ep3-a01-passos .ep3-fichario-trilho { gap: 12px; }
  #especime .ep3-a01-passo-cano { width: calc(16px + 12px + 12px); }
}
@media (max-width: 759px) {
  #especime .ep3-a01-passos { --ep3-fichario-slide: 86%; }
  #especime .ep3-a01-passo { padding: 10px 12px 12px; }
  #especime .ep3-a01-passo-num .ep3-estencil { font-size: 2.2rem; }
}

/* ---------------------------------------------------------------- as duas notas */
#especime .ep3-a01-notas { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; }
@media (min-width: 760px) { #especime .ep3-a01-notas { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; } }
#especime .ep3-a01-nota { display: grid; grid-template-columns: 64px minmax(0, 1fr); gap: 16px; align-items: start; padding: 16px 22px 16px 16px; }
#especime .ep3-a01-nota p { line-height: 1.65; }
#especime .ep3-a01-nota strong { white-space: nowrap; }
#especime .ep3-a01-nota-rot {
  margin-bottom: 6px; font: 800 .66rem/1.3 var(--ep3-f-texto); letter-spacing: .22em; text-transform: uppercase; color: var(--ac-txt);
}
#especime .ep3-a01-nota-selo {
  display: grid; place-items: center; align-content: center; gap: 2px; width: 64px; height: 64px; border-radius: 2px;
  background: radial-gradient(circle at 50% 40%, rgba(255, 255, 255, .05), transparent 70%), rgba(0, 0, 0, .35);
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, .8), 0 1px 0 rgba(255, 255, 255, .05);
}
#especime .ep3-a01-nota-selo .ep3-estencil { font-size: 1.15rem; letter-spacing: .04em; }
#especime .ep3-a01-nota-selo.is-desfazer .ep3-ico { width: 24px; height: 24px; }
/* cadeado em CSS: o reset fica travado enquanto a vacina age */
#especime .ep3-a01-cadeado { position: relative; display: block; width: 24px; height: 19px; margin-top: 10px; border-radius: 3px;
  background: linear-gradient(180deg, #c7d0cf, #7d8786 45%, #3a4343);
  box-shadow: 0 2px 4px rgba(0, 0, 0, .6);
}
#especime .ep3-a01-cadeado::before {
  content: ''; position: absolute; left: 4px; top: -11px; width: 16px; height: 14px; border: 3px solid #9aa4a3; border-bottom: 0;
  border-radius: 9px 9px 0 0;
}
#especime .ep3-a01-cadeado::after {
  content: ''; position: absolute; left: 50%; top: 6px; width: 4px; height: 7px; margin-left: -2px; border-radius: 2px;
  background: #121717;
}
@media (max-width: 759px) {
  #especime .ep3-a01-nota { grid-template-columns: 48px minmax(0, 1fr); gap: 12px; padding: 14px 16px 14px 12px; }
  #especime .ep3-a01-nota-selo { width: 48px; height: 52px; }
  #especime .ep3-a01-nota-selo .ep3-estencil { font-size: 1.1rem; }
}

/* =====================================================================================
   ATO 02 · Biolab Pesadelo
   ===================================================================================== */
#biolab .ep3-no-corpo > * + * { margin-top: 20px; }

/* ---------------------------------------------------------------- nó 1 · a planta como prancha técnica */
#biolab .ep3-a02-porta { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; }
@media (min-width: 1024px) {
  #biolab .ep3-a02-porta { grid-template-columns: minmax(0, 400px) minmax(0, 1fr); gap: 28px; align-items: start; }
  /* a prancha acompanha a leitura das 6 regras (a coluna delas é mais alta) */
  #biolab .ep3-a02-planta { position: sticky; top: calc(var(--ep3-barra-h) + 28px); }
}
#biolab .ep3-a02-planta { margin: 0; max-width: 420px; }
#biolab .ep3-a02-planta-placa {
  --ep3-registro-cor: color-mix(in srgb, var(--ac) 70%, transparent);
  position: relative; padding: 14px 14px 30px 30px; border-radius: 2px; overflow: hidden;
  background-color: #070b0c;
  box-shadow: inset 0 0 0 1px rgba(255, 92, 122, .16), inset 0 0 60px rgba(0, 0, 0, .8), 0 12px 30px rgba(0, 0, 0, .5);
}
#biolab .ep3-a02-planta-grade {
  position: absolute; inset: 0; pointer-events: none;
  background:
    linear-gradient(color-mix(in srgb, var(--ac) 16%, transparent) 1px, transparent 1px) 0 0 / 24px 24px,
    linear-gradient(90deg, color-mix(in srgb, var(--ac) 16%, transparent) 1px, transparent 1px) 0 0 / 24px 24px,
    linear-gradient(color-mix(in srgb, var(--ac) 8%, transparent) 1px, transparent 1px) 0 0 / 6px 6px,
    linear-gradient(90deg, color-mix(in srgb, var(--ac) 8%, transparent) 1px, transparent 1px) 0 0 / 6px 6px;
  opacity: .55;
}
#biolab .ep3-a02-planta-img { position: relative; width: 100%; height: auto; mix-blend-mode: screen; }
#biolab .ep3-a02-planta-regua-h { position: absolute; left: 30px; right: 14px; bottom: 8px; --ep3-regua-cor: color-mix(in srgb, var(--ac) 55%, transparent); }
#biolab .ep3-a02-planta-regua-v { position: absolute; left: 6px; top: 14px; bottom: 30px; width: 14px; --ep3-regua-cor: color-mix(in srgb, var(--ac) 55%, transparent);
  background:
    repeating-linear-gradient(to bottom, var(--ep3-regua-cor) 0 1px, transparent 1px 50px) left / 14px 100% no-repeat,
    repeating-linear-gradient(to bottom, var(--ep3-regua-cor) 0 1px, transparent 1px 10px) left / 7px 100% no-repeat;
}
#biolab .ep3-a02-planta-marca { position: absolute; top: 12px; right: 12px; color: var(--ac-txt); opacity: .8; --ep3-icone-tam: 20px; }
#biolab .ep3-a02-planta figcaption { display: grid; gap: 4px; margin-top: 12px; }
#biolab .ep3-a02-planta-leg { font: 700 1.02rem/1.35 var(--ep3-f-display); color: var(--ep3-tinta); }
#biolab .ep3-a02-planta-sub { font: 500 .66rem/1.5 var(--ep3-f-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--ep3-rotulo); }
@media (max-width: 759px) {
  #biolab .ep3-a02-planta { max-width: 300px; }
  #biolab .ep3-a02-planta-placa { padding: 10px 10px 24px 24px; }
}
#biolab .ep3-a02-regras { gap: 6px; }
#biolab .ep3-a02-regras > li { padding: 12px 18px; grid-template-columns: minmax(120px, 168px) minmax(0, 1fr); }
#biolab .ep3-a02-regras p { font-size: .95rem; line-height: 1.6; }
@media (max-width: 759px) {
  #biolab .ep3-a02-regras > li { grid-template-columns: 1fr; padding: 11px 14px; gap: 2px; }
  #biolab .ep3-a02-regras p { font-size: .92rem; line-height: 1.58; }
}

/* ---------------------------------------------------------------- nó 2 · bônus de grupo (medidores divergentes) */
#biolab .ep3-a02-bonus-painel { padding-bottom: 18px; }
#biolab .ep3-a02-bonus { min-width: 620px; table-layout: fixed; }
#biolab .ep3-a02-bonus thead th:first-child { width: 168px; text-align: left; }
#biolab .ep3-a02-bonus thead th.num { text-align: center; font: 700 .9rem/1 var(--ep3-f-display); letter-spacing: 0; color: var(--ep3-tinta); }
#biolab .ep3-a02-bonus th, #biolab .ep3-a02-bonus td { padding: 6px 6px; }
#biolab .ep3-a02-bonus tbody th { vertical-align: middle; white-space: nowrap; font-size: .86rem; }
#biolab .ep3-a02-bonus td { text-align: center; }
#biolab .ep3-a02-bonus tr.is-causado > * { border-bottom: 1px solid var(--ep3-linha-forte); }
#biolab .ep3-a02-bonus .is-teto { background: color-mix(in srgb, var(--ac) 7%, transparent); }
#biolab .ep3-a02-cel { display: flex; flex-direction: column-reverse; align-items: center; gap: 6px; }
#biolab .is-recebido .ep3-a02-cel { flex-direction: column; }
#biolab .ep3-a02-cel b { font: 600 .9rem/1 var(--ep3-f-mono); color: var(--ep3-tinta); white-space: nowrap; }
#biolab .ep3-a02-med { position: relative; display: block; width: 16px; height: 40px; }
#biolab .ep3-a02-med i {
  position: absolute; left: 0; right: 0; height: calc(var(--v) * 100%); border-radius: 1px;
  transition: transform .6s var(--ep3-ease) calc(var(--k) * 50ms);
}
#biolab .is-causado .ep3-a02-med i {
  bottom: 0; transform-origin: 50% 100%;
  background: linear-gradient(0deg, #2f9e75, #7ae6bc); box-shadow: 0 0 10px rgba(94, 214, 168, .35);
}
#biolab .is-recebido .ep3-a02-med i {
  top: 0; transform-origin: 50% 0;
  background: linear-gradient(180deg, #b8324e, #ff8a9e); box-shadow: 0 0 10px rgba(255, 92, 122, .3);
}
html.ep3-js:not(.ep3-estatico) #biolab .ep3-a02-bonus-painel:not(.is-visto) .ep3-a02-med i { transform: scaleY(0); }
#biolab .is-causado .ep3-a02-cel b { color: #b9f3dc; }
#biolab .is-recebido .ep3-a02-cel b { color: #ffc2cc; }

/* EXP em grupo + régua das 14 células */
#biolab .ep3-a02-exp-grade { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; }
@media (min-width: 1024px) {
  #biolab .ep3-a02-exp-grade { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 28px; align-items: center; }
}
#biolab .ep3-a02-exp { display: grid; grid-template-columns: minmax(0, 1fr); gap: 18px; align-content: center; }
#biolab .ep3-a02-raio { display: flex; align-items: center; gap: 10px; }
#biolab .ep3-a02-raio-voce {
  width: 16px; height: 16px; border-radius: 50%; flex: none;
  background: radial-gradient(circle at 40% 35%, #c6f6e2 0 18%, #5ed6a8 45%, #1f7a5a);
  box-shadow: 0 0 0 3px rgba(94, 214, 168, .18), 0 0 14px rgba(94, 214, 168, .55);
}
#biolab .ep3-a02-raio-cel { display: grid; grid-template-columns: repeat(var(--n), minmax(0, 1fr)); gap: 3px; flex: 1 1 auto; max-width: 340px; }
#biolab .ep3-a02-raio-cel i {
  display: block; aspect-ratio: 1; border-radius: 1px;
  border: 1px solid color-mix(in srgb, #5ed6a8 calc(70% - var(--k) * 3%), transparent);
  background: color-mix(in srgb, #5ed6a8 calc(28% - var(--k) * 1.6%), transparent);
}
#biolab .ep3-a02-raio.is-vivo .ep3-a02-raio-cel i { animation: ep3-a02-onda 2.8s ease-in-out infinite; animation-delay: calc(var(--k) * 70ms); }
@keyframes ep3-a02-onda { 0%, 70%, 100% { box-shadow: none; } 10% { box-shadow: 0 0 8px rgba(126, 240, 190, .8), inset 0 0 0 9px rgba(126, 240, 190, .25); } }
#biolab .ep3-a02-raio-n { display: grid; justify-items: start; line-height: 1; flex: none; }
#biolab .ep3-a02-raio-n .ep3-estencil { font-size: 1.6rem; }
#biolab .ep3-a02-raio-n small { font: 700 .58rem/1.2 var(--ep3-f-texto); letter-spacing: .2em; text-transform: uppercase; color: var(--ep3-rotulo); }
#biolab .ep3-a02-foto { margin: 0; }
@media (max-width: 759px) {
  /* a foto do nó 2 é opcional no conteúdo: no celular ela sai para segurar a altura (regra 57) */
  #biolab .ep3-a02-foto--opcional { display: none; }
  #biolab .ep3-a02-foto .ep3-fig-img { aspect-ratio: 16 / 10 !important; }
}

/* ---------------------------------------------------------------- nó 3 · aviso do mapa e índice */
#biolab .ep3-a02-aviso {
  position: relative; display: grid; grid-template-columns: 10px auto minmax(0, 1fr); align-items: center; gap: 4px 16px;
  margin-inline: 0; padding: 14px 20px 14px 0; border-radius: 2px; overflow: hidden;
  background: linear-gradient(90deg, rgba(90, 22, 32, .55), rgba(30, 10, 14, .65) 60%, rgba(12, 20, 20, .7));
  box-shadow: inset 0 0 0 1px rgba(255, 92, 122, .3), 0 10px 30px rgba(0, 0, 0, .4);
}
#biolab .ep3-a02-aviso-faixa {
  align-self: stretch; margin: -14px 0;
  background: repeating-linear-gradient(-45deg, rgba(226, 112, 124, .85) 0 7px, rgba(10, 4, 6, .95) 7px 14px);
  -webkit-mask: url('../../assets/biolab-materiais/mascara-tinta.webp') 0 0 / 120px auto repeat;
          mask: url('../../assets/biolab-materiais/mascara-tinta.webp') 0 0 / 120px auto repeat;
}
#biolab .ep3-a02-aviso-led {
  width: 10px; height: 10px; border-radius: 50%; background: #ff2a2a;
  box-shadow: 0 0 0 2px rgba(0, 0, 0, .6), 0 0 10px #ff2a2a, 0 0 22px rgba(255, 42, 42, .6);
}
#biolab .ep3-a02-aviso.is-vivo .ep3-a02-aviso-led { animation: ep3-a02-led .8s steps(2, jump-none) infinite alternate; }
@keyframes ep3-a02-led { from { opacity: .45; } to { opacity: 1; } }
#biolab .ep3-a02-aviso p { font: 600 1.06rem/1.5 var(--ep3-f-display); color: #ffd1d8; }
#biolab .ep3-a02-aviso footer {
  grid-column: 3; font: 700 .6rem/1.3 var(--ep3-f-texto); letter-spacing: .22em; text-transform: uppercase; color: var(--ep3-rotulo);
}
#biolab .ep3-a02-indice ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }
#biolab .ep3-a02-indice a {
  display: inline-flex; align-items: baseline; gap: 8px; padding: 7px 11px 6px 9px; border-radius: 2px; text-decoration: none;
  border: 1px solid var(--ep3-linha); background: rgba(10, 16, 16, .78);
  transition: border-color .15s, background-color .15s;
}
#biolab .ep3-a02-indice a::before {
  content: ''; width: 7px; height: 7px; align-self: center; background: var(--el); transform: rotate(45deg); flex: none;
  box-shadow: 0 0 8px color-mix(in srgb, var(--el) 60%, transparent);
}
#biolab .ep3-a02-ind-n { font: 600 .68rem/1 var(--ep3-f-mono); color: var(--ep3-rotulo); }
#biolab .ep3-a02-indice b { font: 600 .84rem/1.2 var(--ep3-f-texto); color: var(--ep3-tinta); }
#biolab .ep3-a02-ind-cl { font: 700 .58rem/1.2 var(--ep3-f-texto); letter-spacing: .16em; text-transform: uppercase; color: var(--ep3-rotulo); }
#biolab .ep3-a02-indice a:hover { border-color: color-mix(in srgb, var(--ac) 55%, transparent); background: rgba(40, 12, 18, .7); }
@media (max-width: 1023px) {
  /* no celular o próprio fichário traz os 13 chips: o índice sai */
  #biolab .ep3-a02-indice { display: none; }
}

/* ---------------------------------------------------------------- nó 3 · os 13 pares */
#biolab .ep3-a02-pares .ep3-fichario-trilho { gap: 20px; }
@media (min-width: 1024px) {
  /* um par por vez (fichário "sempre"): o índice dos treze, logo acima, é o seletor; os chips do fichário saem */
  #biolab .ep3-a02-pares .ep3-fichario-chips { display: none; }
  #biolab .ep3-a02-pares .ep3-fichario-nav { margin-top: -6px; }
  #biolab .ep3-a02-indice a[aria-current="true"] {
    border-color: color-mix(in srgb, var(--ac) 70%, transparent); background: rgba(60, 14, 24, .85);
    box-shadow: inset 0 -2px 0 var(--ac);
  }
}
@media (max-width: 1023px) {
  #biolab .ep3-a02-pares .ep3-fichario-trilho { gap: 12px; }
}
@media (max-width: 759px) {
  /* o fichário sai da linha do tempo para dar a largura toda ao par (2 colunas de ~178 px) */
  #biolab .ep3-a02-pares { margin-left: -28px; }
}
@media (max-width: 559px) { #biolab .ep3-a02-pares { --ep3-fichario-slide: 100%; } }

#biolab .ep3-a02-par {
  position: relative; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start;
  height: 100%; padding: 0 0 14px; overflow: hidden;
  --ep3-cantos-inset: 6px;
  transition: border-color .2s;
}
#biolab .ep3-a02-par:hover { border-color: color-mix(in srgb, var(--ac) 40%, transparent); }
/* o nicho dos tanques: escuro, com a parede de tubos e a luz de cada líquido no chão */
#biolab .ep3-a02-par-chao {
  position: absolute; left: 0; right: 0; top: 0; height: calc(244px + var(--tq-s, 0px)); pointer-events: none; z-index: 0;
  background:
    radial-gradient(22% 13% at 25% 90%, rgba(94, 214, 168, .34), transparent 75%),
    radial-gradient(22% 13% at 75% 90%, rgba(255, 52, 76, .34), transparent 75%),
    radial-gradient(40% 60% at 25% 50%, rgba(94, 214, 168, .10), transparent 70%),
    radial-gradient(40% 60% at 75% 50%, rgba(255, 52, 76, .10), transparent 70%),
    linear-gradient(180deg, rgba(3, 6, 6, .82), rgba(3, 6, 6, .55) 75%, rgba(3, 6, 6, .2)),
    url('../../assets/biolab-materiais/fundo-parede-tubos.webp') 50% 0 / 256px auto repeat;
  -webkit-mask-image: linear-gradient(180deg, #000 82%, transparent);
          mask-image: linear-gradient(180deg, #000 82%, transparent);
}
#biolab .ep3-a02-par-marca {
  position: absolute; z-index: 3; top: 12px; left: 50%; transform: translateX(-50%); margin: 0;
  display: grid; justify-items: center; gap: 3px; text-align: center; pointer-events: none;
}
#biolab .ep3-a02-par-marca .ep3-estencil { font-size: 1.15rem; --ep3-estencil-cor: rgba(232, 240, 238, .62); letter-spacing: .08em; }
#biolab .ep3-a02-par-marca span:not(.ep3-estencil) { font: 700 .52rem/1 var(--ep3-f-texto); letter-spacing: .24em; text-transform: uppercase; color: var(--ep3-rotulo); }
@media (max-width: 559px) { #biolab .ep3-a02-par-marca span:not(.ep3-estencil) { display: none; } }

/* ficha (coluna do par) */
#biolab .ep3-a02-ficha { position: relative; z-index: 1; display: flex; flex-direction: column; min-width: 0; }
#biolab .ep3-a02-ficha--desperto::before {
  content: ''; position: absolute; left: 0; top: calc(244px + var(--tq-s, 0px)); bottom: -14px; width: 1px;
  background: linear-gradient(180deg, rgba(255, 92, 122, .35), rgba(201, 208, 207, .08));
}
#biolab .ep3-a02-ficha-corpo { padding: 6px 16px 0; min-width: 0; }
#biolab .ep3-a02-nome { font: 700 1.05rem/1.25 var(--ep3-f-display); letter-spacing: .01em; color: var(--ep3-menta-clara); text-align: center; text-wrap: balance; }
#biolab .ep3-a02-ficha--desperto .ep3-a02-nome { color: var(--ep3-desperto); }
#biolab .ep3-a02-papel {
  margin-top: 3px; text-align: center; font: 700 .6875rem/1.3 var(--ep3-f-texto); letter-spacing: .16em; text-transform: uppercase; color: var(--ep3-rotulo);
}
#biolab .ep3-a02-stats { margin-top: 12px; padding: 10px 0 0; gap: 7px 12px; border-top: 1px solid rgba(201, 208, 207, .1); }
#biolab .ep3-a02-stats > div { min-width: 0; }
#biolab .ep3-a02-stats dt { font-size: .6875rem; letter-spacing: .08em; }   /* 11 px (eram 9): o rótulo dos números */
#biolab .ep3-a02-stats dd { font-size: .86rem; }
#biolab .ep3-a02-qtd {
  margin-top: 10px; padding: 3px 8px; border-radius: 2px; font: 600 .78rem/1.4 var(--ep3-f-texto);
  color: #b9f3dc; background: rgba(94, 214, 168, .08); box-shadow: inset 2px 0 0 #5ed6a8;
}
#biolab .ep3-a02-ficha--desperto .ep3-a02-qtd { color: #ffc2cc; background: rgba(255, 92, 122, .09); box-shadow: inset 2px 0 0 #ff5c7a; }
#biolab .ep3-a02-linha { margin-top: 8px; font-size: .84rem; line-height: 1.55; color: var(--ep3-corpo); }
#biolab .ep3-a02-linha b { color: var(--ep3-tinta); font-weight: 700; }
#biolab .ep3-a02-ficha .ep3-larga { margin-top: 12px; }
#biolab .ep3-a02-ficha .ep3-drops { gap: 2px; }
#biolab .ep3-a02-ficha .ep3-drop > button { gap: 8px; padding: 1px 8px 1px 2px; min-height: 28px; }
#biolab .ep3-a02-ficha .ep3-drop-nome { font-size: .8rem; }
#biolab .ep3-a02-ficha .ep3-drop-taxa { font-size: .72rem; }
#biolab .ep3-a02-selo { position: absolute; z-index: 4; top: 30px; right: 8px; font-size: 13px; --ep3-carimbo-cor: #ff7088;
  background: rgba(20, 4, 8, .35); }

/* o mini-tanque: fundo | líquido | sprite 1:1 | bolhas | vidro e tampa | eco do sprite | etiqueta */
#biolab .ep3-a02-tq { position: relative; flex: none; width: var(--tq-w); height: var(--tq-h); margin: 8px auto 0; }
#biolab .ep3-a02-tq > img, #biolab .ep3-a02-tq-vidro, #biolab .ep3-a02-tq-bolhas, #biolab .ep3-a02-tq-boia { position: absolute; }
#biolab .ep3-a02-tq-fundo, #biolab .ep3-a02-tq-frente { left: 0; top: 0; width: var(--tq-w); height: var(--tq-h); max-width: none; }
#biolab .ep3-a02-tq--desperto .ep3-a02-tq-fundo, #biolab .ep3-a02-tq--desperto .ep3-a02-tq-frente { transform: scaleX(-1); }
/* cada camada em três fatias da mesma imagem: a tampa e a base 1:1, a faixa lisa do vidro esticada (o vidro ganha
   --tq-s de altura e o sprite fica de pé na plataforma com folga sob a tampa). No fundo (opaco) as fatias se
   sobrepõem 1 px para não abrir fresta com a tela em escala fracionária (125%, 150%); na frente (vidro translúcido)
   elas só encostam: sobreposto, o vidro dobrava e riscava uma linha clara. */
#biolab .ep3-a02-tq-camada { position: absolute; pointer-events: none; }
#biolab .ep3-a02-tq-fatia { position: absolute; left: 0; width: 100%; overflow: hidden; }
#biolab .ep3-a02-tq-fatia > img { position: absolute; left: 0; top: 0; width: var(--tq-w); height: var(--tq-h0); max-width: none; }
#biolab .ep3-a02-tq-fatia.is-tampa { top: 0; height: calc(var(--tq-c1) + 1px); }
#biolab .ep3-a02-tq-fatia.is-vidro { top: var(--tq-c1); height: calc(var(--tq-c2) - var(--tq-c1) + var(--tq-s)); }
#biolab .ep3-a02-tq-fatia.is-vidro > img { top: var(--tq-mt); height: var(--tq-mh); }
#biolab .ep3-a02-tq-fatia.is-base { top: calc(var(--tq-c2) + var(--tq-s) - 1px); bottom: 0; }
#biolab .ep3-a02-tq-fatia.is-base > img { top: calc(1px - var(--tq-c2)); }
#biolab .ep3-a02-tq-frente > .ep3-a02-tq-fatia.is-tampa { height: var(--tq-c1); }
#biolab .ep3-a02-tq-frente > .ep3-a02-tq-fatia.is-base { top: calc(var(--tq-c2) + var(--tq-s)); }
#biolab .ep3-a02-tq-frente > .ep3-a02-tq-fatia.is-base > img { top: calc(var(--tq-c2) * -1); }
#biolab .ep3-a02-tq-vidro, #biolab .ep3-a02-tq-bolhas {
  left: var(--tq-vx); top: var(--tq-vy); width: var(--tq-vw); height: var(--tq-vh); overflow: hidden; pointer-events: none;
}
#biolab .ep3-a02-tq-caustica {
  position: absolute; inset: -40% -20%; opacity: .5; mix-blend-mode: screen;
  background:
    radial-gradient(18% 9% at 30% 20%, rgba(190, 255, 225, .28), transparent 70%),
    radial-gradient(14% 7% at 70% 45%, rgba(190, 255, 225, .22), transparent 70%),
    radial-gradient(20% 8% at 40% 72%, rgba(190, 255, 225, .2), transparent 70%),
    radial-gradient(12% 6% at 78% 88%, rgba(190, 255, 225, .2), transparent 70%);
}
#biolab .ep3-a02-tq--desperto .ep3-a02-tq-vidro {
  background: linear-gradient(0deg, rgba(255, 50, 70, .38), rgba(255, 50, 70, .08) 55%, transparent 80%);
}
#biolab .ep3-a02-tq--desperto .ep3-a02-tq-caustica { filter: hue-rotate(-150deg) saturate(1.4); opacity: .38; }
#biolab .ep3-a02-tq-boia { left: var(--tq-ex); top: var(--tq-ey); line-height: 0; }
#biolab .ep3-a02-tq-boia img { max-width: none; }
#biolab .ep3-a02-tq-boia--eco { opacity: .74; pointer-events: none; }
#biolab .ep3-a02-tq--desperto .ep3-a02-tq-boia--eco { opacity: .66; }
#biolab .ep3-a02-tq-bolhas i {
  position: absolute; bottom: -8px; left: calc(14% + var(--b) * 16%);
  width: calc(3px + var(--b) * .8px); height: calc(3px + var(--b) * .8px); border-radius: 50%;
  border: 1px solid rgba(225, 255, 240, .62);
  background: radial-gradient(circle at 35% 30%, rgba(255, 255, 255, .85) 0 18%, rgba(180, 255, 220, .12) 45%, transparent 70%);
  animation: ep3-a02-bolha calc(2.8s + var(--b) * .5s) cubic-bezier(.45, 0, .85, .55) infinite;
  animation-delay: calc(var(--b) * -1.3s - .6s);
  animation-play-state: paused;
}
#biolab .ep3-a02-tq--desperto .ep3-a02-tq-bolhas i { border-color: rgba(255, 210, 215, .62); left: calc(10% + var(--b) * 18%); }
#biolab .ep3-a02-tq-bolhas i.is-rajada { display: none; }
#biolab .ep3-a02-par.is-vivo .ep3-a02-tq-bolhas i, #biolab .ep3-a02-par:hover .ep3-a02-tq-bolhas i { animation-play-state: running; }
@keyframes ep3-a02-bolha {
  0% { transform: translate3d(0, 0, 0); opacity: 0; }
  12% { opacity: 1; }
  50% { transform: translate3d(3px, -56px, 0); }
  92% { opacity: .85; }
  100% { transform: translate3d(-2px, -118px, 0); opacity: 0; }
}
/* rajada de 1,2 s ao chegar por "Ver ficha" */
#biolab .ep3-a02-par.is-rajada .ep3-a02-tq-bolhas i.is-rajada {
  display: block; width: calc(4px + var(--b) * .5px); height: calc(4px + var(--b) * .5px); left: calc(6% + var(--b) * 13%);
  animation: ep3-a02-bolha .9s cubic-bezier(.3, 0, .7, .4) both; animation-delay: calc(var(--b) * 45ms);
  animation-play-state: running;
}
#biolab .ep3-a02-par.is-rajada { animation: ep3-a02-acende 1.2s var(--ep3-ease); }
@keyframes ep3-a02-acende {
  0% { box-shadow: inset 0 1px 0 rgba(255, 255, 255, .05), 0 0 0 1px rgba(255, 92, 122, .8), 0 0 40px rgba(255, 92, 122, .35); }
  100% { box-shadow: inset 0 1px 0 rgba(255, 255, 255, .05), inset 0 -1px 0 rgba(0, 0, 0, .5), 0 6px 18px rgba(0, 0, 0, .45); }
}
/* o sprite boia (em px inteiro, para a pixel art não borrar) */
#biolab .ep3-a02-par.is-vivo .ep3-a02-tq-boia { animation: ep3-a02-boia 5.2s infinite; }
#biolab .ep3-a02-par.is-vivo .ep3-a02-tq--desperto .ep3-a02-tq-boia { animation-duration: 4.4s; animation-delay: -1.3s; }
@keyframes ep3-a02-boia {
  0% { transform: translateY(0); animation-timing-function: steps(1, end); }
  20% { transform: translateY(-1px); animation-timing-function: steps(1, end); }
  45% { transform: translateY(-2px); animation-timing-function: steps(1, end); }
  70% { transform: translateY(-1px); animation-timing-function: steps(1, end); }
  100% { transform: translateY(0); }
}
/* etiqueta de papel colada na base do tanque */
#biolab .ep3-a02-tq-etq {
  position: absolute; z-index: 3; left: 50%; bottom: 2px; font-size: 7.5px; padding: 4px 7px 4px 11px; gap: 2px;
  letter-spacing: .06em; white-space: nowrap; max-width: calc(100% + 8px);
  transform: translateX(-50%) rotate(var(--ep3-giro, -1.4deg));
}
#biolab .ep3-a02-tq-etq::before { width: 5px; }
#biolab .ep3-a02-tq-etq .ep3-etiqueta__codigo { letter-spacing: .1em; }
/* integração 15/10: em 360 a etiqueta da Margaretha Desperta (o nome mais longo) passava 1,4 px da borda do par.
   r3: com .06em ainda passava 1 px (medido); .04em deixa 3 px de folga */
@media (max-width: 379px) { #biolab .ep3-a02-tq-etq .ep3-etiqueta__codigo { letter-spacing: .04em; } }
/* a linha do leitor passa uma vez sobre as barras quando o par entra na tela (a do comum, depois a do Desperto) */
#biolab .ep3-a02-tq-etq .ep3-etiqueta__barras { position: relative; }
#biolab .ep3-a02-tq-etq .ep3-etiqueta__barras::after {
  content: ''; position: absolute; top: -3px; bottom: -3px; left: 0; width: 2px; border-radius: 1px; opacity: 0;
  background: #7ef0be; box-shadow: 0 0 4px #5ed6a8, 0 0 10px rgba(94, 214, 168, .75);
}
#biolab .ep3-a02-par.is-lido .ep3-a02-tq-etq .ep3-etiqueta__barras::after { animation: ep3-a02-scan .6s cubic-bezier(.4, 0, .2, 1) 1 both; }
#biolab .ep3-a02-par.is-lido .ep3-a02-tq--desperto .ep3-a02-tq-etq .ep3-etiqueta__barras::after {
  animation-delay: .45s; background: #ff9fb2; box-shadow: 0 0 4px #ff5c7a, 0 0 10px rgba(255, 92, 122, .75);
}
@keyframes ep3-a02-scan { 0% { left: 0; opacity: 0; } 12% { opacity: 1; } 88% { opacity: 1; } 100% { left: calc(100% - 2px); opacity: 0; } }

/* o cano "30 abates" entre o comum e o Desperto */
/* (o tanque cresce --tq-s no meio do vidro: o tubo desce junto com a plataforma, a placa e a haste descem a metade) */
#biolab .ep3-a02-cano { position: absolute; z-index: 2; left: 0; right: 0; top: 8px; height: calc(230px + var(--tq-s, 0px)); pointer-events: none; }
#biolab .ep3-a02-cano-tubo {
  position: absolute; left: calc(25% + 58px); right: calc(25% + 58px); top: calc(176px + var(--tq-s, 0px)); height: 10px; border-radius: 3px; overflow: hidden;
  background:
    linear-gradient(90deg, rgba(0, 0, 0, .6) 0 3px, transparent 3px calc(100% - 3px), rgba(0, 0, 0, .6) calc(100% - 3px)),
    linear-gradient(180deg, #0c1111, #6f7a79 30%, #b3bdbc 42%, #3a4443 70%, #0b0f0f);
  box-shadow: 0 4px 8px rgba(0, 0, 0, .65);
}
/* por transform, como o do 01: a faixa tem 40% do tubo (-100% e 250% da própria largura = os -40% e 100% de antes) */
#biolab .ep3-a02-cano-tubo i {
  position: absolute; top: 3px; left: 0; width: 40%; height: 4px; border-radius: 2px; opacity: 0; transform: translateX(-100%);
  background: linear-gradient(90deg, transparent, rgba(126, 240, 190, .95) 40%, rgba(255, 92, 122, .95) 75%, transparent);
}
#biolab .ep3-a02-par.is-vivo .ep3-a02-cano-tubo i { animation: ep3-a02-fluxo 3.2s linear infinite; }
@keyframes ep3-a02-fluxo { 0% { transform: translateX(-100%); opacity: 0; } 15% { opacity: 1; } 85% { opacity: 1; } 100% { transform: translateX(250%); opacity: 0; } }
#biolab .ep3-a02-cano-haste {
  position: absolute; left: 50%; top: calc(140px + var(--tq-s, 0px) / 2); width: 8px; height: calc(38px + var(--tq-s, 0px) / 2); margin-left: -4px;
  background: linear-gradient(90deg, #0c1111, #8d9897 35%, #3a4443 75%, #0b0f0f);
  box-shadow: 2px 0 4px rgba(0, 0, 0, .5);
}
#biolab .ep3-a02-cano-placa {
  position: absolute; left: 50%; top: calc(86px + var(--tq-s, 0px) / 2); transform: translateX(-50%);
  display: grid; justify-items: center; gap: 2px; min-width: 70px; padding: 8px 10px 7px; border-radius: 3px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, .08), rgba(0, 0, 0, .25)),
    url('../../assets/biolab-materiais/chapa-destaque-aco.webp') 0 0 / 256px auto repeat, #1a2121;
  box-shadow: inset 0 0 0 1px rgba(201, 208, 207, .16), inset 0 1px 0 rgba(255, 255, 255, .12), 0 8px 18px rgba(0, 0, 0, .6);
}
#biolab .ep3-a02-cano-placa .ep3-estencil--vermelho { font-size: 1.75rem; line-height: .9; }
#biolab .ep3-a02-cano-placa .ep3-estencil--estreito { font-size: 1.125rem; letter-spacing: .12em; --ep3-estencil-cor: rgba(232, 240, 238, .78); }

/* ---------------------------------------------------------------- nó 4 · o Desperto */
#biolab .ep3-a02-desp-grade { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; }
@media (min-width: 1024px) {
  #biolab .ep3-a02-desp-grade { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px; align-items: center; }
}
#biolab .ep3-a02-mecs li { padding: 12px 16px; }

/* ---------------------------------------------------------------- nó 5 · o que cai */
#biolab .ep3-a02-cai-grade { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; }
@media (min-width: 1024px) {
  #biolab .ep3-a02-cai-grade { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 24px; align-items: stretch; }
}
#biolab .ep3-a02-cai th:not(:first-child), #biolab .ep3-a02-cai td { white-space: nowrap; }
#biolab .ep3-a02-cai tbody th { padding-top: 7px; padding-bottom: 7px; }
#biolab .ep3-a02-cai tbody th .ep3-mini { font-size: .86rem; white-space: nowrap; }
/* a tabela cabe na coluna (sem rolagem): só a célula da carta quebra, depois da vírgula */
#biolab .ep3-a02-cai { min-width: 0; width: 100%; }
#biolab .ep3-a02-cai thead th:first-child { width: 46%; }
#biolab .ep3-a02-cai td { vertical-align: middle; font-family: var(--ep3-f-mono); font-size: .84rem; color: var(--ep3-tinta); }
#biolab .ep3-a02-cai td:has(.ep3-a02-cai-carta) { white-space: normal; }
#biolab .ep3-a02-cai-carta { display: inline-grid; justify-items: end; gap: 1px; line-height: 1.3; }
#biolab .ep3-a02-cai-carta > span:first-child { font-family: var(--ep3-f-texto); font-size: .78rem; font-weight: 600; color: var(--ep3-desperto); letter-spacing: .01em; }
#biolab .ep3-a02-cai-taxa { color: var(--ep3-tinta); }
#biolab .ep3-a02-cai tr.is-marcada > * { background: rgba(214, 170, 74, .08); }
#biolab .ep3-a02-cai tr.is-marcada > th { box-shadow: inset 2px 0 0 #d6aa4a; }
#biolab .ep3-a02-semitem { display: inline-flex; align-items: center; gap: 6px; padding: 2px 9px 2px 3px; font-size: .86rem; font-weight: 600; color: var(--ep3-tinta); }
#biolab .ep3-a02-traco { color: var(--ep3-rotulo); }
#biolab .ep3-a02-almas { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
#biolab .ep3-a02-almas > li { display: flex; }
#biolab .ep3-a02-alma {
  width: 100%; display: grid; grid-template-columns: 24px minmax(0, 1fr); align-items: center; gap: 10px; padding: 8px 10px 8px 8px;
  border: 1px dashed var(--ep3-linha); border-radius: 2px; background: rgba(5, 9, 10, .45); cursor: var(--ep3-mao); text-align: left;
  transition: border-color .15s, transform .15s;
}
#biolab .ep3-a02-alma:hover { border-style: solid; border-color: color-mix(in srgb, var(--ac) 60%, transparent); }
#biolab .ep3-a02-alma-papel, #biolab .ep3-a02-alma-barras { display: none; }
#biolab .ep3-a02-alma-txt { display: grid; gap: 1px; min-width: 0; }
#biolab .ep3-a02-alma-txt b { font: 700 .84rem/1.25 var(--ep3-f-texto); color: var(--ep3-menta-clara); }
#biolab .ep3-a02-alma-txt span { font-size: .74rem; line-height: 1.35; color: var(--ep3-rotulo); }
@media (min-width: 1024px) {
  #biolab .ep3-a02-almas { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
  #biolab .ep3-a02-almas > li { display: flex; }
  /* cartões da mesma altura na fileira: papel no alto, nome e classes no meio, barras no pé */
  #biolab .ep3-a02-alma { grid-template-columns: 1fr; grid-template-rows: auto 1fr auto; justify-items: center; text-align: center;
    gap: 8px; padding: 12px 6px 10px; border-style: solid; }
  #biolab .ep3-a02-alma-txt { align-self: start; align-content: start; }
  #biolab .ep3-a02-cai th, #biolab .ep3-a02-cai td { padding-top: 9px; padding-bottom: 9px; }
  #biolab .ep3-a02-alma-ico { display: none; }
  #biolab .ep3-a02-alma-papel {
    display: grid; place-items: center; width: 89px; height: 112px; border-radius: 2px;
    background: url('../../assets/biolab-materiais/papel-etiqueta.webp') 0 0 / 128px auto repeat, var(--ep3-papel);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .35), 0 1px 1px rgba(0, 0, 0, .5), 0 8px 18px rgba(0, 0, 0, .5);
    transform: rotate(-.8deg);
  }
  #biolab .ep3-a02-almas li:nth-child(even) .ep3-a02-alma-papel { transform: rotate(.7deg); }
  #biolab .ep3-a02-alma-col { mix-blend-mode: multiply; }
  #biolab .ep3-a02-alma-barras {
    display: block; padding: 3px 5px 2px; border-radius: 1px; line-height: 0; color: var(--ep3-papel-tinta);
    background: url('../../assets/biolab-materiais/papel-etiqueta.webp') 0 0 / 128px auto repeat, var(--ep3-papel);
  }
  #biolab .ep3-a02-alma:hover { transform: translateY(-1px); }
}
#biolab .ep3-a02-destino {
  display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 6px 18px; align-items: baseline;
  padding: 14px 18px; border-left: 2px solid var(--ac); border-radius: 0 2px 2px 0;
  background: linear-gradient(90deg, color-mix(in srgb, var(--ac) 9%, rgba(12, 20, 20, .9)), rgba(12, 20, 20, .5));
}
#biolab .ep3-a02-destino-rot { font: 800 .64rem/1.3 var(--ep3-f-texto); letter-spacing: .22em; text-transform: uppercase; color: var(--ac-txt); white-space: nowrap; }
#biolab .ep3-a02-destino-txt { line-height: 1.7; color: var(--ep3-corpo); max-width: 80ch; }
#biolab .ep3-a02-destino-txt a { font-weight: 600; }
@media (max-width: 759px) {
  #biolab .ep3-a02-destino { grid-template-columns: 1fr; padding: 12px 14px; }
  /* a tabela "O que cai" cabe na coluna: a taxa da carta quebra em duas linhas */
  #biolab .ep3-a02-cai { min-width: 0; }
  #biolab .ep3-a02-cai th, #biolab .ep3-a02-cai td { padding: 8px 6px; }
  #biolab .ep3-a02-cai th:not(:first-child), #biolab .ep3-a02-cai td { white-space: normal; }
  #biolab .ep3-a02-cai tbody th .ep3-mini, #biolab .ep3-a02-semitem { font-size: .78rem; white-space: normal; }
  #biolab .ep3-a02-cai td { font-size: .76rem; }
  #biolab .ep3-a02-cai-painel, #biolab .ep3-a02-almas-painel { padding: 16px 12px; }
}

/* ---------------------------------------------------------------- celular: o par em 2 colunas de ~178 px */
@media (max-width: 559px) {
  #biolab .ep3-a02-ficha-corpo { padding: 4px 8px 0; }
  #biolab .ep3-a02-nome { font-size: .95rem; }
  #biolab .ep3-a02-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px 8px; }
  #biolab .ep3-a02-stats dd { font-size: .8rem; }
  #biolab .ep3-a02-stats .ep3-el { font-size: .68rem; padding: 1px 5px; }
  #biolab .ep3-a02-qtd { font-size: .72rem; padding: 4px 6px; }
  #biolab .ep3-a02-linha { font-size: .76rem; line-height: 1.5; }
  /* drop em uma fileira: ícone | nome (até 2 linhas) | taxa; a taxa não desce para uma 3ª linha */
  #biolab .ep3-a02-ficha .ep3-drop > button { grid-template-columns: 24px minmax(0, 1fr) auto; gap: 4px; padding: 2px 4px 2px 2px; min-height: 30px; }
  #biolab .ep3-a02-ficha .ep3-drop-nome { font-size: .7rem; line-height: 1.2; letter-spacing: -.005em; }
  #biolab .ep3-a02-ficha .ep3-drop-taxa { font-size: .6875rem; letter-spacing: -.02em; }
  /* rótulo em caixa alta nunca abaixo de 11 px no celular (CONTRATO §11): a taxa era 9,9 px; o dt e a classe (eram
     9 e 9,6) subiram na regra geral; a altura do 02 não muda (conferido a 360, 390 e 559) */
  #biolab .ep3-a02-papel { letter-spacing: .14em; }
  #biolab .ep3-a02-selo { top: 26px; right: 2px; font-size: 11px; }
  #biolab .ep3-a02-tq { margin-top: 4px; }
  #biolab .ep3-a02-cano-tubo { left: calc(25% + 62px); right: calc(25% + 62px); }
  #biolab .ep3-a02-cano-placa { min-width: 0; padding: 6px 7px 5px; top: calc(96px + var(--tq-s, 0px) / 2); }
  #biolab .ep3-a02-cano-placa .ep3-estencil--vermelho { font-size: 1.4rem; }
  #biolab .ep3-a02-par-marca { top: 10px; }
}

@media (max-width: 389px) { #biolab .ep3-a02-stats dt { letter-spacing: .03em; } }   /* "DEF / DEFM" cabe a 360 */

/* ---------------------------------------------------------------- sem movimento */
@media (prefers-reduced-motion: reduce) {
  #especime .ep3-a01-amp-bolhas, #biolab .ep3-a02-tq-bolhas { display: none; }
  #especime .ep3-a01-passo-cano::after, #biolab .ep3-a02-cano-tubo i,
  #biolab .ep3-a02-tq-etq .ep3-etiqueta__barras::after { display: none; }
  #biolab .ep3-a02-par.is-vivo .ep3-a02-tq-boia, #biolab .ep3-a02-par.is-rajada,
  #biolab .ep3-a02-raio-cel i, #biolab .ep3-a02-aviso-led { animation: none !important; }
  #biolab .ep3-a02-med i { transition: none; }
}
html.ep3-estatico #especime .ep3-a01-amp-bolhas i, html.ep3-estatico #biolab .ep3-a02-tq-bolhas i { animation-play-state: paused !important; }
/* fora da tela a bolha sai da animação, não só pausa (desempenho, 15/10): pausadas, as bolhas dos 13 pares ficavam
   cada uma numa camada do compositor. Sem JS e com ?estatico=1 segue o quadro parado de cima; com JS a bolha sem
   animação fica abaixo do vidro (bottom -8px, cortada), e o par só acende acima de 15% na tela */
html.ep3-js:not(.ep3-estatico) #especime .ep3-a01-vac:not(.is-vivo) .ep3-a01-amp-bolhas i,
html.ep3-js:not(.ep3-estatico) #biolab .ep3-a02-par:not(.is-vivo):not(.is-rajada):not(:hover) .ep3-a02-tq-bolhas i { animation: none; }

/* =====================================================================================
   Celular: densidade (regra 57, a página não pode virar rolo). Mesmo texto, menos ar:
   entrelinha 1,6, chapas com menos respiro, a planta em 240 px e os medidores mais baixos.
   ===================================================================================== */
@media (max-width: 759px) {
  /* corte 2 da §5: fotos em 16:10 (o corte 1, vão entre nós, e a entrelinha de 1,62 do corpo são do base.css) */
  #especime .ep3-a01-foto .ep3-fig-img { aspect-ratio: 16 / 10 !important; }
  #especime .ep3-a01-foto { padding: 6px; }

  /* fala do Varnhagen: sprite e nome lado a lado, a fala na largura toda */
  #especime .ep3-a01-fala { gap: 12px; padding: 12px 14px 14px 8px; }
  #especime .ep3-a01-fala .ep3-npc-arte { min-width: 58px; min-height: 104px; }
  #especime .ep3-a01-fala .ep3-npc-fala { margin-top: 6px; font-size: .95rem; line-height: 1.58; }

  /* notas: o selo vira um ícone pequeno ao lado do rótulo */
  #especime .ep3-a01-nota { grid-template-columns: minmax(0, 1fr); padding: 12px 14px; }
  #especime .ep3-a01-nota-selo { position: absolute; top: 10px; right: 12px; width: auto; height: auto; padding: 4px 6px;
    grid-auto-flow: column; gap: 4px; }
  #especime .ep3-a01-nota-selo .ep3-estencil { font-size: 1.125rem; }
  #especime .ep3-a01-nota-selo.is-trava { padding: 6px 8px 4px; }
  #especime .ep3-a01-cadeado { transform: scale(.8); margin-top: 8px; }
  #especime .ep3-a01-nota-rot { margin-bottom: 8px; min-height: 22px; display: flex; align-items: center; }
  #especime .ep3-a01-nota p:not(.ep3-a01-nota-rot) { font-size: .94rem; line-height: 1.58; }
  #especime .ep3-a01-passo-txt { font-size: .9rem; line-height: 1.55; }

  /* nó 1: a prancha fica ao lado da legenda (mesma prancha, metade da altura) */
  #biolab .ep3-a02-planta { max-width: none; display: grid; grid-template-columns: 176px minmax(0, 1fr); gap: 14px; align-items: end; }
  #biolab .ep3-a02-planta-placa { padding: 6px 6px 16px 16px; }
  #biolab .ep3-a02-planta-regua-v { left: 3px; top: 6px; bottom: 16px; width: 9px; }
  #biolab .ep3-a02-planta-regua-h { left: 16px; right: 6px; bottom: 4px; }
  #biolab .ep3-a02-planta-marca { top: 6px; right: 6px; --ep3-icone-tam: 14px; }
  #biolab .ep3-a02-planta figcaption { margin: 0 0 4px; gap: 6px; }
  #biolab .ep3-a02-planta-leg { font-size: 1rem; line-height: 1.3; }
  #biolab .ep3-a02-planta-sub { line-height: 1.45; }
  #biolab .ep3-a02-regras > li { padding: 9px 12px 10px; }
  #biolab .ep3-a02-regras p { font-size: .88rem; line-height: 1.52; }
  #biolab .ep3-a02-regras .ep3-regra-rot b { font-size: 1.3rem; }

  /* nó 2: medidores mais baixos */
  #biolab .ep3-a02-med { height: 24px; width: 12px; }
  #biolab .ep3-a02-bonus { min-width: 540px; }
  #biolab .ep3-a02-bonus thead th:first-child { width: 112px; white-space: normal; }
  /* a coluna dos rótulos fica parada enquanto os números correm para o lado */
  #biolab .ep3-a02-bonus th:first-child {
    position: sticky; left: 0; z-index: 1;
    background: linear-gradient(90deg, #0e1616 82%, rgba(14, 22, 22, 0));
  }
  #biolab .ep3-a02-bonus tbody th { white-space: normal; font-size: .8rem; line-height: 1.3; }
  #biolab .ep3-a02-bonus-painel { padding: 14px 12px 12px; }
  #biolab .ep3-a02-exp .ep3-p { font-size: .94rem; }

  /* nó 3 */
  #biolab .ep3-a02-aviso { padding: 10px 14px 10px 0; gap: 2px 12px; }
  #biolab .ep3-a02-aviso p { font-size: .94rem; line-height: 1.45; }

  /* nó 4 */
  #biolab .ep3-a02-mecs li { grid-template-columns: 22px minmax(0, 1fr); gap: 8px; padding: 10px 12px; font-size: .9rem; line-height: 1.52; }
  #biolab .ep3-a02-desp-grade .ep3-fig { padding: 6px; }

  /* nó 5 */
  #biolab .ep3-a02-destino-txt { font-size: .92rem; line-height: 1.6; }
}
@media (max-width: 559px) {
  #biolab .ep3-a02-stats { gap: 4px 8px; margin-top: 8px; padding-top: 8px; }
  #biolab .ep3-a02-ficha .ep3-larga { margin-top: 10px; }
  #biolab .ep3-a02-ficha .ep3-drops { gap: 2px; }
  #biolab .ep3-a02-linha { margin-top: 6px; }
}

/* =====================================================================================
   Ajuste r1: a ficha mais justa (regra 57) e o par em três colunas no desktop largo.
   ===================================================================================== */
/* "Usa" numa linha (corte 3 da §5): o resto abre com um toque (details), e o texto inteiro fica no title */
#biolab .ep3-a02-usa > summary {
  display: block; list-style: none; cursor: var(--ep3-mao); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  text-decoration: underline dotted rgba(201, 208, 207, .28); text-underline-offset: 3px;
}
#biolab .ep3-a02-usa > summary::-webkit-details-marker { display: none; }
#biolab .ep3-a02-usa[open] > summary { white-space: normal; text-decoration: none; }
#biolab .ep3-a02-usa > summary:hover { color: var(--ep3-tinta); }
#biolab .ep3-a02-info > .ep3-a02-linha { margin-top: 6px; }
/* a Larga: fileiras de 26 px, nome numa linha (o cartão do item traz o resto) */
#biolab .ep3-a02-ficha .ep3-drop > button { min-height: 26px; padding-top: 1px; padding-bottom: 1px; }
#biolab .ep3-a02-ficha .ep3-drop-nome { line-height: 1.15; }
#biolab .ep3-a02-stats { gap: 5px 12px; }
#biolab .ep3-a02-stats dd { margin-top: 0; }
@media (max-width: 759px) {
  /* a régua das 14 células é decorativa (o texto diz): sai no celular */
  #biolab .ep3-a02-raio { display: none; }
  #biolab .ep3-a02-exp .ep3-p { margin: 0; }
}
@media (max-width: 559px) {
  #biolab .ep3-a02-ficha .ep3-drop > button { min-height: 26px; }
  #biolab .ep3-a02-info > .ep3-a02-linha { margin-top: 4px; }
  #biolab .ep3-a02-par { padding-bottom: 10px; }
}

/* desktop largo: um par por fileira. Cada ficha: tanque | nome, classe e a Larga (uma linha por item, ~300 px: em
   142 px de coluna todo item quebrava em duas); embaixo, na largura da ficha, os números em quatro colunas e o resto
   (no mapa / nasce, Usa, Revida). O cano "30 abates" tem 104 px: a placa (72) fica com 16 px de folga de cada lado
   (r2, item 7: com 96 eram 12). */
@media (min-width: 1280px) {
  #biolab .ep3-a02-pares .ep3-fichario-trilho { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  #biolab .ep3-a02-pares .ep3-fichario-slide:last-child:nth-child(odd) { grid-column: auto; justify-self: stretch; width: auto; }
  #biolab .ep3-a02-par {
    grid-template-columns: minmax(0, 1fr) 104px minmax(0, 1fr); align-items: stretch; padding: 12px 14px 14px;
  }
  /* o nicho escuro atrás de cada tanque e a luz de cada líquido no chão (só na altura dos tanques) */
  #biolab .ep3-a02-par-chao {
    height: calc(262px + var(--tq-s, 0px)); bottom: auto;
    background:
      radial-gradient(90px 26px at 94px calc(214px + var(--tq-s, 0px)), rgba(94, 214, 168, .34), transparent 75%),
      radial-gradient(90px 26px at calc(50% + 132px) calc(214px + var(--tq-s, 0px)), rgba(255, 52, 76, .34), transparent 75%),
      radial-gradient(120px 140px at 94px calc(110px + var(--tq-s, 0px) / 2), rgba(94, 214, 168, .09), transparent 70%),
      radial-gradient(120px 140px at calc(50% + 132px) calc(110px + var(--tq-s, 0px) / 2), rgba(255, 52, 76, .09), transparent 70%),
      linear-gradient(90deg, transparent 6px, rgba(3, 6, 6, .7) 6px 182px, transparent 182px calc(50% + 44px),
        rgba(3, 6, 6, .7) calc(50% + 44px) calc(50% + 220px), transparent calc(50% + 220px)),
      url('../../assets/biolab-materiais/fundo-parede-tubos.webp') 50% 0 / 256px auto repeat;
    -webkit-mask-image: linear-gradient(180deg, #000 86%, transparent);
            mask-image: linear-gradient(180deg, #000 86%, transparent);
    opacity: .9;
  }
  #biolab .ep3-a02-ficha {
    display: grid; grid-template-columns: 160px minmax(0, 1fr); grid-template-rows: auto auto 1fr auto auto;
    grid-template-areas: "tq nome" "tq papel" "tq larga" "stats stats" "info info";
    column-gap: 16px; align-items: start;
    align-self: start;            /* esticada até a altura da vizinha, a sobra caía na linha da Larga e os números descolavam */
  }
  #biolab .ep3-a02-ficha--desperto::before { display: none; }
  #biolab .ep3-a02-tq { grid-area: tq; margin: 0; }
  #biolab .ep3-a02-ficha-corpo { display: contents; }
  #biolab .ep3-a02-nome { grid-area: nome; text-align: left; font-size: 1.08rem; padding: 4px 96px 0 0; }
  #biolab .ep3-a02-papel { grid-area: papel; text-align: left; }
  #biolab .ep3-a02-ficha .ep3-larga { grid-area: larga; margin-top: 10px; padding-top: 8px; border-top: 1px solid rgba(201, 208, 207, .1); }
  #biolab .ep3-a02-ficha .ep3-drop-nome { font-size: .8rem; }
  /* os números: uma régua de 4 colunas sob o tanque e a Larga */
  #biolab .ep3-a02-stats {
    grid-area: stats; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px 12px; margin-top: 14px; padding-top: 10px;
  }
  #biolab .ep3-a02-stats > div:nth-child(3) { grid-column: auto; }
  #biolab .ep3-a02-stats dd { font-size: .84rem; }
  #biolab .ep3-a02-stats .ep3-el { font-size: .72rem; padding: 2px 6px; letter-spacing: 0; }
  /* no mapa / nasce, e embaixo Usa e Revida na largura da ficha. r2 (item 7): o Usa dividia a linha com o "no mapa"
     e saía cortado com reticências em 23 das 26 fichas; na linha dele, em até 2 linhas, nenhum corta (1280 a 1920) */
  #biolab .ep3-a02-info { grid-area: info; display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 12px; margin-top: 10px; }
  #biolab .ep3-a02-info > .ep3-a02-linha { margin-top: 0; flex: 1 1 100%; min-width: 0; }
  #biolab .ep3-a02-usa:not([open]) > summary {
    white-space: normal; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2;
  }
  #biolab .ep3-a02-qtd { margin-top: 0; font-size: .76rem; line-height: 1.35; }
  #biolab .ep3-a02-linha { font-size: .8rem; line-height: 1.4; }
  #biolab .ep3-a02-selo { top: 6px; right: 0; }
  /* o cano "30 abates" vira a coluna do meio: a placa na altura do meio do vidro, o tubo na linha das plataformas */
  #biolab .ep3-a02-cano { position: relative; top: 0; height: auto; min-height: calc(230px + var(--tq-s, 0px)); }
  /* integração 15/10: à esquerda fica a Larga do comum, não o tanque: com left -14px a ponta do tubo cobria a taxa da
     5ª linha ("20%" da Kathryne) nos 13 pares. A ponta para 6 px antes da Larga; à direita segue até o tanque */
  #biolab .ep3-a02-cano-tubo { left: 6px; right: -14px; top: calc(176px + var(--tq-s, 0px)); }
  #biolab .ep3-a02-cano-haste { top: calc(128px + var(--tq-s, 0px) / 2); height: calc(50px + var(--tq-s, 0px) / 2); }
  #biolab .ep3-a02-cano-placa { top: calc(62px + var(--tq-s, 0px) / 2); min-width: 0; padding: 7px 8px 6px; }
  #biolab .ep3-a02-cano-placa .ep3-estencil--vermelho { font-size: 1.5rem; }
  #biolab .ep3-a02-cano-placa .ep3-estencil--estreito { font-size: 1rem; }
  #biolab .ep3-a02-par-marca { top: 10px; }
  #biolab .ep3-a02-par-marca .ep3-estencil { font-size: 1rem; }
}
@media (max-width: 759px) {
  /* "O que cai": linhas mais baixas e as seis Almas mais justas */
  #biolab .ep3-a02-cai th, #biolab .ep3-a02-cai td { padding: 5px 6px; }
  #biolab .ep3-a02-cai tbody th .ep3-mini, #biolab .ep3-a02-semitem { line-height: 1.2; }
  #biolab .ep3-a02-almas { gap: 6px; }
  #biolab .ep3-a02-alma { gap: 8px; padding: 6px 8px 6px 6px; }
  #biolab .ep3-a02-alma-txt b { font-size: .8rem; }
  #biolab .ep3-a02-alma-txt span { font-size: .7rem; line-height: 1.25; }
  #biolab .ep3-a02-destino { padding: 10px 12px; }
  /* a planta ao lado da legenda, um pouco menor */
  #biolab .ep3-a02-planta { grid-template-columns: 150px minmax(0, 1fr); }
  /* o bônus de grupo: medidores mais baixos */
  #biolab .ep3-a02-bonus th, #biolab .ep3-a02-bonus td { padding-top: 6px; padding-bottom: 6px; }
}
@media (max-width: 559px) {
  /* "O que cai" no celular: a coluna do item mais larga, nomes e taxas em letra menor (linhas de ~34 px) */
  #biolab .ep3-a02-cai thead th:first-child { width: 52%; }
  #biolab .ep3-a02-cai tbody th .ep3-mini, #biolab .ep3-a02-semitem { font-size: .74rem; padding-right: 4px; }
  #biolab .ep3-a02-cai td { font-size: .72rem; }
  #biolab .ep3-a02-cai-carta > span:first-child { font-size: .7rem; }
  #biolab .ep3-a02-cai-painel { padding: 12px 10px; }
  /* o 01: notas e passos mais justos */
  #especime .ep3-a01-nota { padding: 10px 12px; }
  #especime .ep3-a01-nota-rot { margin-bottom: 4px; }
  /* integração 15/10: o selo do canto (absoluto) cobria o fim da 1ª linha do texto ("seus" sob o cadeado, 8 px em 390).
     Um espaçador flutuante do tamanho do selo faz a 1ª linha desviar dele, sem crescer a nota */
  #especime .ep3-a01-nota-selo + div::before { content: ''; float: right; width: 44px; height: 40px; margin-left: 8px; }
  #especime .ep3-a01-nota-selo.is-desfazer + div::before { width: 74px; height: 36px; }
  #especime .ep3-a01-nota p:not(.ep3-a01-nota-rot) { font-size: .9rem; line-height: 1.5; }
  #especime .ep3-a01-notas { gap: 8px; }
  #especime .ep3-a01-fala .ep3-npc-fala { font-size: .92rem; line-height: 1.5; }
  #especime .ep3-a01-passo-txt { font-size: .86rem; line-height: 1.5; }
}
@media (max-width: 559px) {
  /* as seis Almas: só o ícone e o nome (as classes ficam no cartão do item) em três colunas */
  #biolab .ep3-a02-almas { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 5px; }
  #biolab .ep3-a02-alma { grid-template-columns: 1fr; justify-items: center; text-align: center; gap: 3px; padding: 6px 4px; }
  #biolab .ep3-a02-alma-txt { justify-items: center; }
  #biolab .ep3-a02-alma-txt b { font-size: .74rem; line-height: 1.2; }
  #biolab .ep3-a02-alma-txt span { font-size: .64rem; line-height: 1.2; }
}
/* mini-tanque, ajuste r1: o vidro da frente foi regravado com o alfa a 0,35x no miolo (o sprite não lava mais) e o
   líquido de trás do Desperto virou vinho, com o vermelho vindo só da base: aqui a luz do vidro acompanha (só embaixo)
   e o eco por cima do vidro fica mais leve (o sprite já aparece inteiro) */
#biolab .ep3-a02-tq--desperto .ep3-a02-tq-vidro {
  background: linear-gradient(0deg, rgba(255, 50, 70, .36), rgba(255, 50, 70, .07) 35%, transparent 52%);
}
#biolab .ep3-a02-tq-boia--eco { opacity: .32; }
#biolab .ep3-a02-tq--desperto .ep3-a02-tq-boia--eco { opacity: .3; }
/* r2 (item 7 do diretor): o pesadelo quase sumia atrás do vidro; o eco por cima do vidro sobe para ~metade */
#biolab .ep3-a02-tq-boia--eco { opacity: .55; }
#biolab .ep3-a02-tq--desperto .ep3-a02-tq-boia--eco { opacity: .5; }
/* o eco por cima do vidro nunca passa da quina do vidro (nada de cabeça fantasma na tampa) nem da beira da plataforma
   (o pé que pisa nela some atrás da borda, como o sprite de baixo) */
#biolab .ep3-a02-tq-boia--eco { clip-path: inset(max(0px, calc(var(--tq-vy) - var(--tq-ey))) 0 var(--tq-eb, 0px) 0); }
