/* S&N Inspira Core: tokens e componentes. Cores iguais às globais do Elementor. */
:root {
	--sni-bg: #F8F8F6;
	--sni-text: #3D3D3D;
	--sni-gold: #C29D63;
	--sni-gold-hover: #B08A4F;
	--sni-gold-text: #8A6A36; /* dourado para texto pequeno em fundo claro (AA) */
	--sni-ink: #1F1F1F;       /* texto sobre botão dourado (AA) */
	--sni-white: #FFFFFF;
	--sni-line: #E6E1D8;
	--sni-shadow: 0 8px 24px rgba(61, 61, 61, .08);

	--sni-font-titulo: "Barlow Condensed", "Arial Narrow", sans-serif;
	--sni-font-corpo: "Inter", system-ui, sans-serif;

	/* Desktop (> 880px): px do design system. Largura/colunas vêm do Starter Celado (--largurautil, --setecolunas...). */
	--sni-fs-h1: 64px;
	--sni-fs-h2: 44px;
	--sni-fs-h3: 24px;
	--sni-fs-corpo: 18px;
	--sni-fs-pequeno: 15px;
	--sni-fs-chip: 14px;
	--sni-fs-botao: 17px;
	--sni-fs-numero: 72px;

	--sni-esp-1: 4px;
	--sni-esp-2: 8px;
	--sni-esp-3: 12px;
	--sni-esp-4: 16px;
	--sni-esp-5: 24px;
	--sni-esp-6: 32px;
	--sni-esp-7: 48px;
	--sni-esp-8: 64px;
	--sni-esp-9: 96px;
	--sni-secao-y: 96px;

	--sni-radius: 12px;
	--sni-btn-h: 52px;
	--sni-barra-h: 8px;
	--sni-logo-master: 56px;
	--sni-logo-apoio: 36px;
	--sni-texto-max: 680px;
}

/* Tablet (881 a 1200px): títulos um pouco menores, ainda em px. */
@media (max-width: 1200px) {
	:root {
		--sni-fs-h1: 56px;
		--sni-fs-h2: 40px;
		--sni-fs-numero: 64px;
		--sni-secao-y: 80px;
	}
}

/* Celular paisagem (768 a 880px): tudo em vw. Texto com piso para não quebrar o zoom. Base ~820px. */
@media (max-width: 880px) {
	:root {
		--sni-fs-h1: max(32px, 6.8vw);
		--sni-fs-h2: max(26px, 5vw);
		--sni-fs-h3: max(18px, 2.8vw);
		--sni-fs-corpo: max(16px, 2.1vw);
		--sni-fs-pequeno: max(14px, 1.8vw);
		--sni-fs-chip: max(13px, 1.7vw);
		--sni-fs-botao: max(16px, 2.1vw);
		--sni-fs-numero: max(40px, 8.2vw);

		--sni-esp-1: .5vw;
		--sni-esp-2: 1vw;
		--sni-esp-3: 1.5vw;
		--sni-esp-4: 2vw;
		--sni-esp-5: 3vw;
		--sni-esp-6: 3.9vw;
		--sni-esp-7: 5.9vw;
		--sni-esp-8: 7.8vw;
		--sni-esp-9: 11.7vw;
		--sni-secao-y: 10vw;

		--sni-radius: 1.5vw;
		--sni-btn-h: max(48px, 6.3vw);
		--sni-barra-h: 1vw;
		--sni-logo-master: 6.8vw;
		--sni-logo-apoio: 4.4vw;
		--sni-texto-max: 100%;
	}
}

/* Celular retrato (até 767px): tudo em vw. Base 375px. */
@media (max-width: 767px) {
	:root {
		--sni-fs-h1: max(32px, 10.4vw);
		--sni-fs-h2: max(26px, 8vw);
		--sni-fs-h3: max(18px, 5.4vw);
		--sni-fs-corpo: max(16px, 4.3vw);
		--sni-fs-pequeno: max(14px, 3.8vw);
		--sni-fs-chip: max(13px, 3.6vw);
		--sni-fs-botao: max(16px, 4.3vw);
		--sni-fs-numero: max(40px, 12.8vw);

		--sni-esp-1: 1.1vw;
		--sni-esp-2: 2.1vw;
		--sni-esp-3: 3.2vw;
		--sni-esp-4: 4.3vw;
		--sni-esp-5: 6.4vw;
		--sni-esp-6: 8.5vw;
		--sni-esp-7: 12.8vw;
		--sni-esp-8: 17vw;
		--sni-esp-9: 25.6vw;
		--sni-secao-y: 17vw;

		--sni-radius: 3.2vw;
		--sni-btn-h: max(48px, 13.9vw);
		--sni-barra-h: 2.1vw;
		--sni-logo-master: 12vw;
		--sni-logo-apoio: 8.5vw;
	}
}

/* ---------- Visibilidade por status das inscrições ---------- */
body:not(.elementor-editor-active):not(.sni-inscricoes-abertas) .sni-so-abertas,
body:not(.elementor-editor-active):not(.sni-inscricoes-em-breve) .sni-so-em-breve,
body:not(.elementor-editor-active):not(.sni-inscricoes-esgotadas) .sni-so-esgotadas {
	display: none !important;
}

/* ---------- Desfoque na rolagem (.sni-reveal) ---------- */
.sni-js .sni-reveal {
	filter: blur(8px);
	opacity: .3;
	transform: translateY(16px);
	transition: filter .7s ease, opacity .7s ease, transform .7s ease;
}
.sni-js .sni-reveal.is-visible,
.elementor-editor-active .sni-reveal {
	filter: none;
	opacity: 1;
	transform: none;
}
@media (prefers-reduced-motion: reduce) {
	.sni-js .sni-reveal {
		filter: none;
		opacity: 1;
		transform: none;
		transition: none;
	}
}

/* ---------- Botão base (usado pelo [sni_pix]) ---------- */
.sni-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: var(--sni-btn-h);
	padding: var(--sni-esp-3) var(--sni-esp-5);
	border: 0;
	border-radius: 999px;
	background: var(--sni-gold);
	color: var(--sni-ink);
	font: inherit;
	font-size: var(--sni-fs-botao);
	font-weight: 700;
	cursor: pointer;
	transition: background-color .2s ease;
}
.sni-btn:hover { background: var(--sni-gold-hover); }
.sni-btn:focus-visible { outline: 3px solid var(--sni-text); outline-offset: 2px; }
.sni-btn.is-copied { background: var(--sni-text); color: var(--sni-bg); }

/* ---------- Contador de vagas [sni_vagas] ---------- */
.sni-vagas { display: grid; gap: var(--sni-esp-2); max-width: 420px; }
.sni-vagas__texto { font-size: var(--sni-fs-pequeno); font-weight: 700; color: var(--sni-text); }
.sni-vagas__barra {
	height: var(--sni-barra-h);
	border-radius: 999px;
	background: var(--sni-line);
	overflow: hidden;
}
.sni-vagas__barra > span {
	display: block;
	height: 100%;
	background: var(--sni-gold);
	border-radius: inherit;
}

/* ---------- Bloco do Pix [sni_pix] ---------- */
.sni-pix {
	background: var(--sni-white);
	border: 2px solid var(--sni-gold);
	border-radius: var(--sni-radius);
	box-shadow: var(--sni-shadow);
	padding: var(--sni-esp-5);
	text-align: center;
}
.sni-pix__titulo { margin: 0 0 var(--sni-esp-4); font-size: var(--sni-fs-h3); font-weight: 700; color: var(--sni-text); }
.sni-pix__rotulo { margin: 0; font-size: var(--sni-fs-pequeno); color: var(--sni-gold-text); text-transform: uppercase; letter-spacing: .06em; }
.sni-pix__chave {
	margin: var(--sni-esp-1) 0 var(--sni-esp-4);
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	font-size: max(16px, var(--sni-fs-corpo));
	word-break: break-all;
	color: var(--sni-text);
}
.sni-pix__recebedor { margin: var(--sni-esp-4) 0 0; font-size: var(--sni-fs-pequeno); color: var(--sni-text); }
/* Tablet retrato: o cartão fica estreito e a chave (e-mail) quebrava no meio. */
@media (min-width: 881px) and (max-width: 1024px) {
	.sni-pix__chave { font-size: 15px; }
}
@media (max-width: 767px) {
	.sni-pix__copiar { width: 100%; }
}

.sni-aviso { padding: 12px; border: 1px dashed #c00; color: #c00; }

/* ==================================================================
 * Visual da home (referência aprovada pela direção: blocos alternados,
 * navegação flutuante, faixas de logos em movimento).
 * Classes aplicadas por ferramentas/montar-home.php.
 * ================================================================== */
html { scroll-padding-top: 110px; }
@media (prefers-reduced-motion: no-preference) {
	html { scroll-behavior: smooth; }
}

/* Parte do título em destaque */
.sni-destaque { color: var(--sni-gold-text); }
/* Cor sólida por baixo dos gradientes: o "lazy load" de fundos do Elementor tira o gradiente até a seção aparecer,
   e o bloco ficaria transparente (texto claro sobre fundo claro). */
.elementor .e-con.sni-escuro { background-color: var(--sni-ink) !important; }
.elementor .e-con.sni-dourado { background-color: var(--sni-gold) !important; }
.sni-escuro .sni-destaque { color: var(--sni-gold); }
.sni-escuro strong { color: var(--sni-bg); }
.sni-rodape a { color: var(--sni-gold); }

/* ---------- Navegação flutuante ---------- */
body:not(.elementor-editor-active) .sni-nav {
	position: fixed !important;
	top: 16px;
	left: 50%;
	transform: translateX(-50%);
	max-width: calc(100% - 24px);
	z-index: 100;
	-webkit-backdrop-filter: blur(14px) saturate(1.4);
	backdrop-filter: blur(14px) saturate(1.4);
	animation: sni-nav-in .7s cubic-bezier(.2, .8, .2, 1) both;
}
body.admin-bar:not(.elementor-editor-active) .sni-nav { top: 48px; }
@media (max-width: 880px) {
	body:not(.elementor-editor-active) .sni-nav { top: 2.4vw; }
}
@keyframes sni-nav-in {
	from { opacity: 0; transform: translate(-50%, -20px); }
}

/* ---------- Hero ---------- */
.sni-hero { overflow: hidden; }
.sni-hero__mascote { position: relative; }
.sni-hero__flutuante { box-shadow: 0 18px 40px -18px rgba(31, 31, 31, .35) !important; }

/* ---------- Faixas de logos rolando ---------- */
.sni-marquees { width: 100%; }
.sni-marquee {
	overflow: hidden;
	-webkit-mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent);
	mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent);
}
.sni-marquee + .sni-marquee { margin-top: var(--sni-esp-5); }
.sni-marquee__trilho {
	display: flex;
	width: max-content;
	animation: sni-marquee 40s linear infinite;
}
.sni-marquee--reverso .sni-marquee__trilho { animation-direction: reverse; animation-duration: 46s; }
.sni-marquee:hover .sni-marquee__trilho { animation-play-state: paused; }
.sni-marquee__grupo {
	display: flex;
	align-items: center;
	gap: var(--sni-esp-8);
	padding-right: var(--sni-esp-8);
}
.sni-marquees .sni-marquee img {
	height: var(--sni-logo-apoio);
	width: auto;
	max-width: none;
}
.sni-marquees .sni-marquee img.sni-marquee__master { height: var(--sni-logo-master); }

/* Arrastável (JS): o JS move o trilho, então a animação do CSS sai */
.sni-marquee--js { cursor: grab; touch-action: pan-y; -webkit-user-select: none; user-select: none; }
.sni-marquee--js.is-arrastando { cursor: grabbing; }
.sni-marquee--js .sni-marquee__trilho { animation: none; will-change: transform; }
.sni-marquee--js img { -webkit-user-drag: none; pointer-events: none; }

/* Celular: logos mais próximos */
@media (max-width: 880px) {
	.sni-marquee__grupo { gap: 6vw; padding-right: 6vw; }
}
@media (max-width: 767px) {
	.sni-marquee__grupo { gap: 9vw; padding-right: 9vw; }
}
.sni-marquees .sni-marquee img[src*="sni-davi"] { height: calc(var(--sni-logo-master) * .55); }
@keyframes sni-marquee { to { transform: translateX(-50%); } }

/* ---------- Caixa de patrocinador inteira clicável ---------- */
/* O link do logo se estende sobre o card todo (sem link dentro de link). */
.elementor .e-con.sni-caixa-link { position: relative; cursor: pointer; transition: transform .35s ease, border-color .35s ease; }
.elementor .e-con.sni-caixa-link > .elementor-widget { position: static; }
.elementor .e-con.sni-caixa-link .elementor-widget-image a::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	border-radius: inherit;
}
.elementor .e-con.sni-caixa-link a:focus-visible { outline: none; }
.elementor .e-con.sni-caixa-link:has(a:focus-visible) { outline: 3px solid var(--sni-gold-text); outline-offset: 3px; }
.elementor .e-con.sni-caixa-link:not(.sni-master):hover { transform: translateY(-4px); border-color: var(--sni-gold); }
@media (prefers-reduced-motion: reduce) {
	.elementor .e-con.sni-caixa-link:hover { transform: none; }
}

/* ---------- Patrocinador Master: borda dourada e brilho ---------- */
.elementor .e-con.sni-master {
	position: relative;
	overflow: hidden;
	isolation: isolate;
	border-radius: 24px;
	background-image: radial-gradient(120% 80% at 50% 0%, rgba(194, 157, 99, .2), transparent 60%);
	box-shadow: 0 24px 60px -24px rgba(194, 157, 99, .75);
	transition: transform .35s ease, box-shadow .35s ease;
}
.elementor .e-con.sni-master:hover {
	transform: translateY(-6px);
	box-shadow: 0 34px 70px -24px rgba(194, 157, 99, .9);
}
.elementor .e-con.sni-master::before {
	content: "";
	position: absolute;
	inset: 0;
	padding: 2px;
	border-radius: inherit;
	background: linear-gradient(135deg, var(--sni-gold), var(--sni-white) 25%, var(--sni-gold-text) 50%, var(--sni-gold) 70%, var(--sni-white) 85%, var(--sni-gold));
	background-size: 200% 200%;
	-webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
	-webkit-mask-composite: xor;
	mask-composite: exclude;
	pointer-events: none;
	z-index: 2;
	animation: sni-borda 6s linear infinite;
}
.elementor .e-con.sni-master::after {
	content: "";
	position: absolute;
	top: -20%;
	bottom: -20%;
	left: -75%;
	width: 45%;
	background: linear-gradient(100deg, transparent 20%, rgba(255, 255, 255, .85) 50%, transparent 80%);
	transform: skewX(-18deg);
	pointer-events: none;
	z-index: 3;
	animation: sni-brilho 4.5s ease-in-out infinite;
}
@keyframes sni-brilho {
	0%, 55% { left: -75%; }
	100% { left: 135%; }
}
@keyframes sni-borda { to { background-position: 200% 200%; } }

/* ---------- Listas, FAQ e formulário ---------- */
.sni-lista { margin: 0; padding-left: 1.1em; }
.sni-lista li { margin-bottom: .6em; }
.sni-lista li::marker { color: var(--sni-gold); }

.sni-faq .elementor-accordion .elementor-accordion-item {
	border: 1px solid var(--sni-line) !important;
	border-radius: 16px;
	background: var(--sni-white);
	overflow: hidden;
}
.sni-faq .elementor-accordion .elementor-accordion-item + .elementor-accordion-item { margin-top: 12px; }
.sni-faq .elementor-accordion .elementor-tab-title { padding: 20px 24px; }
.sni-faq .elementor-accordion .elementor-tab-content { border-top: 1px solid var(--sni-line) !important; padding: 16px 24px 20px; }

.sni-form-card .elementor-field-textual,
.sni-form-card .elementor-select-wrapper select {
	background-color: var(--sni-bg) !important;
	border-radius: 12px !important;
	min-height: 48px;
}
.sni-form-card .elementor-field-textual:focus {
	border-color: var(--sni-gold) !important;
	box-shadow: 0 0 0 3px rgba(194, 157, 99, .25);
	outline: none;
}
.sni-form-card .elementor-button { box-shadow: 0 10px 24px -8px rgba(194, 157, 99, .65); }
/* Campos do responsável escondidos pelo JS (caixa "menor de idade" desmarcada) */
.elementor-form .elementor-field-group[hidden] { display: none !important; }
.sni-pix { border-radius: 24px; }

/* Movimento reduzido: tudo parado, logos em grade */
@media (prefers-reduced-motion: reduce) {
	body:not(.elementor-editor-active) .sni-nav { animation: none; }
	.sni-marquee { -webkit-mask-image: none; mask-image: none; }
	.sni-marquee__trilho { animation: none; width: auto; }
	.sni-marquee__grupo { flex-wrap: wrap; justify-content: center; row-gap: var(--sni-esp-4); padding-right: 0; }
	.sni-marquee__grupo[aria-hidden] { display: none; }
	.elementor .e-con.sni-master::before,
	.elementor .e-con.sni-master::after { animation: none; }
	.elementor .e-con.sni-master::after { display: none; }
}
