/* ============================================================================
 * PULSE — GALERIA · assets/galeria.css
 * ----------------------------------------------------------------------------
 * Estilo do bloco acf/pulse-galeria. Carrega SÓ quando o bloco está na página
 * (pulse_galeria_enqueue_assets), depois do sections.css — consome os TOKENS
 * do tema (--line/--line-2/--bg2/--ink/--head/--accent/--soft-r/--ease), por
 * isso cores globais e tema claro/escuro aplicam-se sozinhos, sem regras
 * duplicadas aqui (o contrato da Vitrine/Card com Modal).
 *
 * PROGRESSIVE ENHANCEMENT: sem JS (e no editor, .pulse-galeria--editor), o
 * viewport é um scroller nativo com scroll-snap — as imagens passam à mão e
 * nada fica escondido; setas e pontos só aparecem com .is-ready (é o
 * galeria.js que a põe depois de montar a pista). Com JS, o viewport fecha
 * (overflow hidden) e a pista anda por translateX — manual (arrasto/setas)
 * e/ou automático, conforme o data-attr do render.
 *
 * "Movimento reduzido": as transições da pista morrem (os saltos são
 * instantâneos) — o auto-avanço já nem arranca (decisão do JS).
 * ========================================================================== */

.pulse-galeria {
	position: relative;
	width: 100%;
}

/* ---- Viewport + pista ------------------------------------------------------
   Base (sem JS): scroller nativo com snap. O touch-action pan-y é para o modo
   JS (o arrasto horizontal é nosso; o vertical fica para a página — a lição
   do carrossel das Colunas), mas é inofensivo no scroller nativo. */
.pulse-galeria__viewport {
	overflow-x: auto;
	overflow-y: hidden;
	scroll-snap-type: x mandatory;
	border-radius: var(--soft-r, 18px);
	touch-action: pan-y;
}

.pulse-galeria__track {
	display: flex;
}

.pulse-galeria__slide {
	position: relative;
	flex: 0 0 100%;
	min-width: 0;
	margin: 0;
	scroll-snap-align: start;
	aspect-ratio: 16 / 9;
	overflow: hidden;
}

/* Proporções — classe do render (bloco OU global, já resolvido lá). */
.pulse-galeria--ratio-4-3 .pulse-galeria__slide {
	aspect-ratio: 4 / 3;
}

.pulse-galeria--ratio-1-1 .pulse-galeria__slide {
	aspect-ratio: 1 / 1;
}

/* 'Original': sem caixa — cada imagem traz a altura dela; a pista alinha ao
   topo para as mais baixas não esticarem. */
.pulse-galeria--ratio-auto .pulse-galeria__slide {
	aspect-ratio: auto;
}

.pulse-galeria--ratio-auto .pulse-galeria__track {
	align-items: flex-start;
}

.pulse-galeria__img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	display: block;
	/* O arrasto é nosso — sem fantasma nativo da imagem (o dragstart já é
	   cancelado no JS; isto corta o resto do caminho). */
	user-select: none;
	-webkit-user-drag: none;
}

/* "Conter" e "Imagem inteira (toda visível)" no deslize/fundir são o mesmo
   gesto: contain — a foto inteira, letterbox pintado pelo fundo do slide
   (--pgal-bg). A diferença entre os dois só existe na travessia, onde a caixa
   é o círculo da marca (geometria no PHP/JS, não aqui). */
.pulse-galeria--fit-contain .pulse-galeria__img,
.pulse-galeria--fit-inteira .pulse-galeria__img {
	object-fit: contain;
}

.pulse-galeria--ratio-auto .pulse-galeria__img {
	height: auto;
	object-fit: unset;
}

/* Legenda do attachment: faixa sobre o fundo da imagem — escura de propósito
   nos DOIS temas (está por cima de foto, não do fundo da página). */
.pulse-galeria__legenda {
	position: absolute;
	inset: auto 0 0 0;
	padding: .55rem .9rem;
	font-size: .85rem;
	line-height: 1.35;
	color: #fff;
	background: linear-gradient(transparent, rgba(4, 4, 26, .72));
}

.pulse-galeria--ratio-auto .pulse-galeria__slide .pulse-galeria__legenda {
	position: static;
	color: var(--ink, rgba(255, 255, 255, .8));
	background: none;
	padding-inline: 0;
}

/* ---- Modo JS (.is-ready) ---------------------------------------------------
   O viewport fecha e a pista anda por transform. A transição só existe com
   .is-anim (o JS tira-a para o salto invisível do loop e durante o arrasto —
   a mesma separação keyframe/inline do sections.js). */
.pulse-galeria.is-ready .pulse-galeria__viewport {
	overflow-x: hidden;
	scroll-snap-type: none;
}

.pulse-galeria.is-ready .pulse-galeria__track {
	will-change: transform;
}

.pulse-galeria.is-ready .pulse-galeria__track.is-anim {
	transition: transform .45s var(--ease, ease);
}

/* Arrasto: mão aberta/fechada e sem seleção de texto pelo caminho. */
.pulse-galeria.is-ready .pulse-galeria__viewport {
	cursor: grab;
}

.pulse-galeria.is-ready.is-dragging .pulse-galeria__viewport {
	cursor: grabbing;
	user-select: none;
	-webkit-user-select: none;
}

/* ---- Setas (o desenho das setas do carrossel das Colunas/Vitrine) ---------
   Escondidas até .is-ready: sem JS não fazem nada — não se mostram mortas. */
.pulse-galeria__seta {
	display: none;
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	width: 2.6rem;
	height: 2.6rem;
	place-items: center;
	border: 1px solid var(--line-2, rgba(255, 255, 255, .3));
	border-radius: 999px;
	background: var(--bg2, rgba(10, 10, 40, .9));
	color: var(--ink, rgba(255, 255, 255, .8));
	cursor: pointer;
	z-index: 2;
	transition: border-color .2s var(--ease, ease), color .2s var(--ease, ease);
}

.pulse-galeria.is-ready .pulse-galeria__seta {
	display: grid;
}

.pulse-galeria__seta:hover {
	border-color: var(--accent, #4c56e0);
	color: var(--head, #fff);
}

.pulse-galeria__seta:focus-visible {
	outline: 2px solid var(--accent, #4c56e0);
	outline-offset: 2px;
}

.pulse-galeria__seta svg {
	width: 1.15rem;
	height: 1.15rem;
}

.pulse-galeria__seta--prev {
	left: .6rem;
}

.pulse-galeria__seta--next {
	right: .6rem;
}

/* Telemóvel: alvo um pouco menor, ainda tocável (~38px) — como as Colunas. */
@media (max-width: 480px) {

	.pulse-galeria__seta {
		width: 2.4rem;
		height: 2.4rem;
	}
}

/* ---- Pontos de navegação --------------------------------------------------
   Também só com .is-ready (sem JS não saltam para lado nenhum). */
.pulse-galeria__dots {
	display: none;
	justify-content: center;
	gap: .5rem;
	padding-top: .8rem;
}

.pulse-galeria.is-ready .pulse-galeria__dots {
	display: flex;
}

.pulse-galeria__dot {
	width: .6rem;
	height: .6rem;
	padding: 0;
	border: 1px solid var(--line-2, rgba(255, 255, 255, .3));
	border-radius: 999px;
	background: transparent;
	cursor: pointer;
	transition: background .2s var(--ease, ease), border-color .2s var(--ease, ease);
}

.pulse-galeria__dot:hover {
	border-color: var(--accent, #4c56e0);
}

.pulse-galeria__dot:focus-visible {
	outline: 2px solid var(--accent, #4c56e0);
	outline-offset: 2px;
}

.pulse-galeria__dot.esta-ativa {
	background: var(--accent, #4c56e0);
	border-color: var(--accent, #4c56e0);
}

/* v1.243: ALVO DE TOQUE dos pontos — o botão pinta 10px (o ADN visual fica
   intacto) mas o alvo efetivo era esses mesmos 10px, impossível de acertar
   com o dedo (a casa pede ≥40px nos alvos do telemóvel; as setas têm 44px).
   A zona de clique alarga-se com um ::after ABSOLUTO (não entra no layout —
   nada se move nem muda de aspeto): o hit-test do browser conta os pseudo-
   -elementos como parte do botão. Na lateral só se estende METADE do gap de
   cada lado — dois vizinhos nunca se sobrepõem e cada clique vai para o
   ponto certo. */
.pulse-galeria__dot {
	position: relative;
	/* âncora do ::after; o botão não tem posicionados dentro */
}

.pulse-galeria__dot::after {
	content: "";
	position: absolute;
	inset: -8px -4px;
	/* gap .5rem → 4px de cada lado: alvo 18×26, sem sobreposição */
}

/* Telemóvel/tablet (o "modo mobile" da casa): pontos um nadinha mais
   espaçados (.875rem) para o alvo lateral chegar aos 24px — o mínimo que se
   acerta com o polegar sem roubar cliques ao vizinho (24 = 10px de bola +
   2×7px, exatamente metade do gap de cada lado). É a ÚNICA mudança visível:
   a barra respira um pouco mais; as bolas ficam iguais. */
@media (max-width: 820px) {

	.pulse-galeria__dots {
		gap: .875rem;
	}

	.pulse-galeria__dot::after {
		inset: -8px -7px;
	}
}

/* ---- Movimento reduzido ---------------------------------------------------
   Saltos instantâneos (o auto nem arranca — decisão do JS, avaliada também
   na hora em cada tick). As setas/pontos/arrasto continuam a funcionar. */
@media (prefers-reduced-motion: reduce) {

	.pulse-galeria.is-ready .pulse-galeria__track.is-anim {
		transition: none;
	}
}

/* ---- Transição "fundir" (.pulse-galeria--fundir, classe do render) --------
   O MESMO markup do deslize, outra mecânica: com JS os slides EMPILHAM-SE no
   viewport e a passagem é um cruzar de opacidades no lugar. Tudo scoped a
   .is-ready de propósito: sem JS (e no editor) o modo degrada para o scroller
   nativo com snap — o contrato do progressive enhancement da casa.
   Empilhado (absoluto), o slide já não dá altura ao bloco — a PROPORÇÃO passa
   para o CONTENTOR (viewport); 'Original' (ratio-auto) não tem caixa que
   sirva de altura a filhos absolutos, por isso cai no 16:9 padrão. */
.pulse-galeria--fundir.is-ready .pulse-galeria__viewport {
	position: relative;
	aspect-ratio: 16 / 9;
}

.pulse-galeria--fundir.pulse-galeria--ratio-4-3.is-ready .pulse-galeria__viewport {
	aspect-ratio: 4 / 3;
}

.pulse-galeria--fundir.pulse-galeria--ratio-1-1.is-ready .pulse-galeria__viewport {
	aspect-ratio: 1 / 1;
}

.pulse-galeria--fundir.is-ready .pulse-galeria__slide {
	position: absolute;
	inset: 0;
	aspect-ratio: auto;
	/* a caixa passou a ser o viewport — a do slide só atrapalhava */
	opacity: 0;
	transition: opacity .6s var(--ease, ease);
	pointer-events: none;
	/* os escondidos estão POR CIMA na pilha — não roubam o rato */
}

.pulse-galeria--fundir.is-ready .pulse-galeria__slide.esta-visivel {
	opacity: 1;
	z-index: 1;
	/* a legenda do visível fica acima do que se esvai */
	pointer-events: auto;
}

/* 'Original' dentro do fundido: a caixa é 16:9 (ver acima) — a imagem volta
   a cobrir e a legenda à faixa absoluta, senão herdavam o modo sem-caixa da
   variante ratio-auto do deslize. */
.pulse-galeria--fundir.pulse-galeria--ratio-auto.is-ready .pulse-galeria__img {
	height: 100%;
	object-fit: cover;
}

.pulse-galeria--fundir.pulse-galeria--ratio-auto.is-ready .pulse-galeria__slide .pulse-galeria__legenda {
	position: absolute;
	inset: auto 0 0 0;
	color: #fff;
	background: linear-gradient(transparent, rgba(4, 4, 26, .72));
	padding-inline: .9rem;
}

/* Movimento reduzido no fundido: troca instantânea (sem cruzar pelo caminho). */
@media (prefers-reduced-motion: reduce) {

	.pulse-galeria--fundir.is-ready .pulse-galeria__slide {
		transition: none;
	}
}

/* ---- Transição "travessia" (.pulse-galeria--travessia) --------------------
   A animação "10 · Travessia" do preview-logo-anim.html com a FOTO recortada
   nas metades da marca Pulse (markup SVG do PHP; o JS só troca o href a cada
   volta). O palco é 3:1 = o viewBox 360×120; a máscara nas pontas esbate a
   entrada/saída para não cortarem a direito. O motor é 100% CSS: corre sem
   JS (fica a 1.ª foto em loop) e congela no editor. A duração vem do render
   em --pgt-dur (a "velocidade" da galeria = duração da volta). */
.pulse-galeria__palco {
	position: relative;
	aspect-ratio: 3 / 1;
	overflow: hidden;
}

/* Cor de fundo de cada imagem (--pgal-bg, do render quando escolhida): pinta
   ATRÁS da foto — barras do "Conter" e PNG transparentes. Sem escolha =
   transparent → byte-igual. */
.pulse-galeria__slide {
	background: var(--pgal-bg, transparent);
}

/* Na TRAVESSIA o fundo é DENTRO da marca (atrás de cada imagem recortada — o
   "ícone"), NÃO o palco: cada <rect class="pgt-bg"> vive no mesmo grupo
   recortado que a sua imagem, logo toma a forma da metade e viaja com ela. O
   render só emite os rects quando há cor escolhida. */
.pulse-galeria__logo .pgt-bg {
	fill: var(--pgal-bg, transparent);
}

/* Enquadramento — POSIÇÃO do recorte (--pos-*): para onde a foto encosta ao
   cortar no "Cobrir" (deslize/fundir; o render não emite a classe na travessia
   nem no "Conter"). Sem classe = center (o object-position base). */
.pulse-galeria--pos-topo .pulse-galeria__img {
	object-position: center top;
}

.pulse-galeria--pos-fundo .pulse-galeria__img {
	object-position: center bottom;
}

.pulse-galeria--pos-esq .pulse-galeria__img {
	object-position: left center;
}

.pulse-galeria--pos-dir .pulse-galeria__img {
	object-position: right center;
}

/* v1.250 — FOCO arrastável (gal_foco): a parte da foto que fica à vista no
   recorte do "Cobrir", em percentagens (--pgal-foco, posta inline no root
   pelo render SÓ com foco válido, junto com a classe --foco). (0,3,0) ganha
   às zonas --pos-* (0,2,0) e ao center da base (0,1,0) sem depender da
   ordem — o foco é a escolha mais precisa e a mais recente do editor. Sem
   foco a classe não existe e esta regra nem casa: o valor calculado é o de
   sempre (center ou a zona). O fallback center do var() é só defesa (o
   render nunca emite a classe sem a var). Os clones do loop herdam a var. */
.pulse-galeria.pulse-galeria--foco .pulse-galeria__img {
	object-position: var(--pgal-foco, center);
}

/* Tamanho da animação (--pgt-escala): escala a marca (com a foto) em torno do
   centro do viewBox; as translações da travessia lá dentro escalam juntas (a
   marca entra/sai proporcional) e a máscara das pontas (no .pulse-galeria__logo)
   não escala. Sem classe = escala 1 → sem efeito. */
.pulse-galeria__logo .pgt-escala {
	transform: scale(var(--pgt-escala, 1));
	transform-box: view-box;
	transform-origin: 180px 60px;
}

.pulse-galeria--anim-peq {
	--pgt-escala: 0.72;
}

.pulse-galeria--anim-gra {
	--pgt-escala: 1.28;
}

.pulse-galeria__logo {
	display: block;
	width: 100%;
	height: 100%;
	-webkit-mask-image: linear-gradient(to right, transparent, #000 18%, #000 82%, transparent);
	mask-image: linear-gradient(to right, transparent, #000 18%, #000 82%, transparent);
}

/* Os valores EXATOS da animação 10: fora de cena → logótipo (0) → círculo
   (±50) → marca espelhada (±100) → sai pelo lado oposto. Os px são unidades
   do viewBox — o palco escala e os trajetos escalam com ele. */
@keyframes pgt-top {

	0% {
		transform: translateX(-180px);
	}

	21%,
	29% {
		transform: translateX(0);
	}

	46%,
	54% {
		transform: translateX(50px);
	}

	71%,
	79% {
		transform: translateX(100px);
	}

	100% {
		transform: translateX(280px);
	}
}

@keyframes pgt-bot {

	0% {
		transform: translateX(180px);
	}

	21%,
	29% {
		transform: translateX(0);
	}

	46%,
	54% {
		transform: translateX(-50px);
	}

	71%,
	79% {
		transform: translateX(-100px);
	}

	100% {
		transform: translateX(-280px);
	}
}

/* O círculo cheio só acende na janela da fusão — tapa a costura das metades. */
@keyframes pgt-fill {

	0%,
	45% {
		opacity: 0;
	}

	46%,
	54% {
		opacity: 1;
	}

	55%,
	100% {
		opacity: 0;
	}
}

.pulse-galeria--travessia .pl-top {
	animation: pgt-top var(--pgt-dur, 5000ms) cubic-bezier(.65, .05, .36, 1) infinite;
}

.pulse-galeria--travessia .pl-bot {
	animation: pgt-bot var(--pgt-dur, 5000ms) cubic-bezier(.65, .05, .36, 1) infinite;
}

.pulse-galeria--travessia .pl-fill {
	opacity: 0;
	/* fora da janela da fusão não existe (o keyframe manda no resto) */
	animation: pgt-fill var(--pgt-dur, 5000ms) linear infinite;
}

/* Pausa (hover/foco/modal/página escondida) — o JS põe a classe no svg. */
.pulse-galeria__logo.is-paused .pl-top,
.pulse-galeria__logo.is-paused .pl-bot,
.pulse-galeria__logo.is-paused .pl-fill {
	animation-play-state: paused;
}

/* Reinício limpo (setas/pontos): .is-reset zera a animação; o JS força um
   reflow e tira a classe — a volta recomeça do 0% já com a foto nova. */
.pulse-galeria__logo.is-reset .pl-top,
.pulse-galeria__logo.is-reset .pl-bot,
.pulse-galeria__logo.is-reset .pl-fill {
	animation: none;
}

/* Legenda na travessia: por baixo do palco, em fluxo — a faixa absoluta da
   base assentava no fundo do BLOCO, por cima dos pontos (e sobre um palco
   quase vazio o gradiente escuro não tinha foto que servir). */
.pulse-galeria--travessia .pulse-galeria__legenda {
	position: static;
	color: var(--ink, rgba(255, 255, 255, .8));
	background: none;
	padding-inline: 0;
	text-align: center;
}

/* No editor o JS não monta — congela-se a volta na formação do logótipo
   (sem animação, transform fica a 0 = o keyframe 21–29%): a 1.ª foto
   recortada na marca, quieta. Vem DEPOIS das regras de animação de propósito
   (mesma especificidade — ganha por ordem). */
.pulse-galeria--editor .pl-top,
.pulse-galeria--editor .pl-bot,
.pulse-galeria--editor .pl-fill {
	animation: none;
}

/* Movimento reduzido na travessia: nada atravessa — fica só o círculo cheio,
   estático (o JS troca a foto por intervalo de guarda, ao ritmo da volta). */
@media (prefers-reduced-motion: reduce) {

	.pulse-galeria--travessia .pl-top,
	.pulse-galeria--travessia .pl-bot {
		display: none;
		animation: none;
	}

	.pulse-galeria--travessia .pl-fill {
		opacity: 1;
		animation: none;
	}
}

/* ============================================================================
 * v1.209 — ENCAIXE NO PAINEL DE DETALHE DO CARROSSEL (.pulse-cols__detalhe)
 * ----------------------------------------------------------------------------
 * A Galeria dentro do Detalhe em bloco (__ddef--blocos, que o sections.css põe
 * em coluna flex DENTRO do painel) passa a PREENCHER a altura que sobra — a
 * queixa era a imagem pequena ao centro com um mar de vazio à volta: a caixa
 * de rácio fixo do slide (16:9, 4:3, 1:1) nunca crescia até à altura do
 * painel. A mecânica é flex:1 no bloco e no viewport com a cadeia
 * track→slide→img a height:100% — e o RÁCIO DO SLIDE FICA (nada de
 * aspect-ratio auto) DE PROPÓSITO: no dimensionamento intrínseco o 100% não
 * resolve (pai indefinido → auto) e é o rácio que dá a contribuição NATURAL
 * da galeria — a mesma caixa de sempre, logo a altura Automática do painel
 * (medida no probe do sections.js) não muda; já esticada ou apertada pelo
 * painel, a cadeia fica DEFINIDA, o height:100% ganha ao rácio (altura
 * explícita desativa o aspect-ratio, por spec) e a galeria enche ou encolhe
 * exatamente. Um aspect-ratio auto aqui era a armadilha (provado em
 * headless): a contribuição natural passava a ser a imagem à largura da
 * coluna — um retrato 640×960 inflava o painel para 1758px.
 * object-fit:contain — a imagem INTEIRA, sem corte (a preferência da casa);
 * o letterbox pinta-o o fundo do slide (--pgal-bg), como no 'Conter'.
 * min-height:0 na cadeia flex: sem ele nada encolhe abaixo do conteúdo e o
 * encaixe não fechava quando o teto (global ou de viewport) aperta.
 * O 'fundir' não precisa de regra própria: o rácio dele vive no viewport,
 * que aqui é item flex — a base natural continua a ser a do rácio e o
 * grow com shrink manda no resto.
 * SÓ com o painel por ancestral — ele apenas existe no carrossel, criado
 * pelo JS — e por isso FORA do carrossel a Galeria fica byte-igual. A
 * especificidade (0,4,0) ganha às variantes de rácio e de fit (0,2,0) sem
 * !important.
 * ========================================================================== */
.pulse-cols__detalhe .pulse-cols__ddef--blocos>.pulse-galeria {
	flex: 1 1 auto;
	min-height: 0;
	display: flex;
	flex-direction: column;
}

.pulse-cols__detalhe .pulse-cols__ddef--blocos>.pulse-galeria .pulse-galeria__viewport {
	flex: 1 1 auto;
	min-height: 0;
}

.pulse-cols__detalhe .pulse-cols__ddef--blocos>.pulse-galeria .pulse-galeria__track {
	height: 100%;
}

.pulse-cols__detalhe .pulse-cols__ddef--blocos>.pulse-galeria .pulse-galeria__slide {
	height: 100%;
}

.pulse-cols__detalhe .pulse-cols__ddef--blocos>.pulse-galeria .pulse-galeria__img {
	height: 100%;
	object-fit: contain;
}

/* 'Original' (--ratio-auto) não tem caixa nenhuma — a contribuição natural
   seria a imagem inteira à largura da coluna (o retrato dos 1758px outra
   vez). Dentro do painel cai no 16:9 padrão — o MESMO fallback que o
   'fundir' já usa para esta variante. */
.pulse-cols__detalhe .pulse-cols__ddef--blocos>.pulse-galeria--ratio-auto .pulse-galeria__slide {
	aspect-ratio: 16 / 9;
}

/* v1.294 — TRAVESSIA AO CENTRO DO PAINEL (pedido de 2026-10-20: «quero que as
   imagens da galeria estejam centradas dentro da secção»). A galeria estica até
   à altura do painel (flex:1, acima), mas a travessia não tem viewport elástico:
   o palco tem forma fixa (3:1, o viewBox 360×120) e ficava COLADO AO TOPO — no
   painel «Índice» da Representação (1440px) o círculo ficava a meio na largura
   mas 100px acima do centro, com uma faixa vazia por baixo. Centra-se o palco
   (e a legenda, que vem em fluxo por baixo dele) na altura que sobra. */
.pulse-cols__detalhe .pulse-cols__ddef--blocos>.pulse-galeria--travessia {
	justify-content: center;
}

/* TELEMÓVEL: no painel estreito o palco 3:1 dava um círculo de ~90px (a altura
   é 1/3 da largura) perdido numa caixa vazia. Palco 3:2 (o viewBox fica ao meio,
   com o «meet») e o SVG INTEIRO 1,75× maior → o círculo passa a ~155px num ecrã
   de 390px. Escala-se o <svg> e não as metades: essas animam o próprio
   transform (a travessia) e o <g class="pgt-escala"> só existe com «Tamanho da
   animação» escolhido — que continua a valer, multiplicado por este. Com o SVG
   maior do que o palco, a máscara das pontas dele ficaria FORA do palco (as
   metades entrariam cortadas a direito): o esbatido passa para o palco. Só no
   painel do carrossel (criado pelo JS): fora dele, byte-igual. */
@media (max-width: 640px) {

	.pulse-cols__detalhe .pulse-cols__ddef--blocos>.pulse-galeria--travessia .pulse-galeria__palco {
		aspect-ratio: 3 / 2;
		-webkit-mask-image: linear-gradient(to right, transparent, #000 14%, #000 86%, transparent);
		mask-image: linear-gradient(to right, transparent, #000 14%, #000 86%, transparent);
	}

	.pulse-cols__detalhe .pulse-cols__ddef--blocos>.pulse-galeria--travessia .pulse-galeria__logo {
		transform: scale(1.75);
		-webkit-mask-image: none;
		mask-image: none;
	}
}