/*
 * Identidade do Surfing4all: os tokens e os componentes que o site e o site de reserva compartilham
 * (TG-244; a decisão do Owner em 05/11/2026 é que o WordPress é o guia da identidade, sempre).
 *
 * Carregado em TODA página do WordPress (functions.php), DEPOIS de home.css e praca.css nas páginas de
 * venda: assim os componentes vencem o reset de `.s4a-home` (`.s4a-home :is(h1, h2, h3) { margin: 0 }`)
 * como venciam quando viviam naqueles arquivos, e home.css/praca.css ficam só com o layout das páginas
 * de venda (herói, grades, seções em espuma, promessa, chamada final). O site de reserva (/reservar/)
 * recebe este arquivo pela moldura (s4all-moldura.php, TG-179): o que está aqui vale lá sem cópia.
 * Por isso:
 *
 *  - os tokens ficam em :root, não em .s4a-home;
 *  - cada componente tem o seletor do bloco do WordPress (.wp-block-button__link, .wp-block-cover__inner-container…)
 *    E uma classe própria (.s4a-botao__link, .s4a-praca__conteudo…) para a marcação sem blocos.
 *
 * Catálogo e regra de uso: docs/IDENTIDADE-SURFING4ALL.md. O que faltar ao site de reserva nasce AQUI,
 * com nome s4a-*, nunca em apps/reserva.
 */

:root {
	--s4a-azul: #326698;
	--s4a-azul-claro: #2a95d6;
	--s4a-azul-profundo: #1f4466;
	--s4a-espuma: #eef5fb;
	--s4a-areia: #f7f3ec;
	--s4a-texto: #111111;
	--s4a-texto-2: #555555;
	--s4a-raio-g: 32px;
	--s4a-raio-m: 22px;
	--s4a-sombra: 0 1px 2px rgba(17, 40, 70, .06), 0 12px 32px -12px rgba(17, 40, 70, .22);
	--s4a-titulos: var(--wp--preset--font-family--space-grotesk, "Space Grotesk", sans-serif);
	--s4a-corpo: var(--wp--preset--font-family--ibm-plex-sans, "IBM Plex Sans", sans-serif);
	/* Véu sobre foto para o texto branco ler (capas e cartões de foto) */
	--s4a-veu-foto: linear-gradient(180deg, rgba(10, 30, 50, .15) 0%, rgba(10, 30, 50, .05) 35%, rgba(18, 45, 75, .8) 100%);
	--s4a-onda-branca: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 100' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' d='M0,58 C200,96 400,98 600,76 C800,54 980,12 1160,16 C1300,20 1380,44 1440,62 L1440,100 L0,100 Z'/%3E%3C/svg%3E");
	--s4a-onda-espuma: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 80' preserveAspectRatio='none'%3E%3Cpath fill='%23eef5fb' d='M0,48 C240,8 480,0 720,28 C960,56 1200,72 1440,40 L1440,80 L0,80 Z'/%3E%3C/svg%3E");
}

/* Largura do conteúdo */
.s4a-contido { width: min(1160px, 100% - 40px); margin-inline: auto; }

/* Títulos de seção: rótulo pequeno em maiúsculas, título grande, chamada em cinza; cabeça com ação à direita */
.s4a-eyebrow { color: var(--s4a-azul-claro); font-weight: 600; letter-spacing: .08em; text-transform: uppercase; font-size: .8rem; }
.s4a-titulo { font-family: var(--s4a-titulos); font-size: clamp(2rem, 4.2vw, 3.25rem); line-height: 1.05; letter-spacing: -.025em; margin: 12px 0 16px !important; }
.s4a-lead { color: var(--s4a-texto-2); font-size: 1.15rem; max-width: 600px; }
.s4a-secao { padding: clamp(64px, 9vw, 120px) 0; }
.s4a-secao--sem-topo { padding-top: 0; }
.s4a-cabeca { display: flex; justify-content: space-between; align-items: flex-end; gap: 24px; flex-wrap: wrap; margin-bottom: 44px !important; }
.s4a-migalha { font-size: .9rem; opacity: .85; }
.s4a-migalha a:hover { text-decoration: underline; }

/*
 * Botões em pílula: o retorno vem no toque, não no soltar. No WordPress é o bloco Botões com a classe
 * s4a-botao no botão (o link interno é .wp-block-button__link); no site de reserva, um <a> ou <button>
 * com a própria classe s4a-botao, ou .s4a-botao__link dentro de um envoltório.
 */
.s4a-acoes { display: flex; gap: 12px; flex-wrap: wrap; }
/* Caixa alta e espaçamento: no WordPress vêm dos estilos globais do botão (.wp-element-button); fora dele (site de reserva), daqui. */
.s4a-botao .wp-block-button__link, .s4a-botao__link, a.s4a-botao, button.s4a-botao { display: inline-flex; align-items: center; gap: .55em; padding: .95em 1.6em; border: 0; border-radius: 999px; font: 600 1rem/1 var(--s4a-corpo); background: var(--s4a-azul); color: #fff !important; text-decoration: none; cursor: pointer; transition: transform .1s ease-out, background-color .2s; text-transform: uppercase; letter-spacing: .08em; }
.s4a-botao .wp-block-button__link:hover, .s4a-botao__link:hover, a.s4a-botao:hover, button.s4a-botao:hover { background: var(--s4a-azul-profundo); }
.s4a-botao .wp-block-button__link:active, .s4a-botao__link:active, a.s4a-botao:active, button.s4a-botao:active { transform: scale(.97); }
.s4a-botao .wp-block-button__link:focus-visible, .s4a-botao__link:focus-visible, a.s4a-botao:focus-visible, button.s4a-botao:focus-visible { outline: 3px solid var(--s4a-azul-claro); outline-offset: 3px; }
.s4a-botao--claro .wp-block-button__link, .s4a-botao--claro.s4a-botao__link, a.s4a-botao--claro, button.s4a-botao--claro { background: rgba(255, 255, 255, .92); color: var(--s4a-azul-profundo) !important; }
.s4a-botao--claro .wp-block-button__link:hover, .s4a-botao--claro.s4a-botao__link:hover, a.s4a-botao--claro:hover, button.s4a-botao--claro:hover { background: #fff; }
.s4a-botao--fantasma .wp-block-button__link, .s4a-botao--fantasma.s4a-botao__link, a.s4a-botao--fantasma, button.s4a-botao--fantasma { background: transparent; box-shadow: inset 0 0 0 1.5px rgba(255, 255, 255, .7); }
.s4a-botao--fantasma .wp-block-button__link:hover, .s4a-botao--fantasma.s4a-botao__link:hover, a.s4a-botao--fantasma:hover, button.s4a-botao--fantasma:hover { background: rgba(255, 255, 255, .12); }
.s4a-botao--linha .wp-block-button__link, .s4a-botao--linha.s4a-botao__link, a.s4a-botao--linha, button.s4a-botao--linha { background: transparent; color: var(--s4a-azul) !important; box-shadow: inset 0 0 0 1.5px var(--s4a-azul); }
.s4a-botao--linha .wp-block-button__link:hover, .s4a-botao--linha.s4a-botao__link:hover, a.s4a-botao--linha:hover, button.s4a-botao--linha:hover { background: var(--s4a-azul); color: #fff !important; }

/* Selo translúcido sobre foto e chips (níveis, idiomas, equipamento) */
.s4a-selo { display: inline-block; padding: 8px 14px; border-radius: 999px; background: rgba(255, 255, 255, .16); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); font-size: .9rem; font-weight: 500; }
.s4a-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.s4a-chip { padding: 7px 13px; border-radius: 999px; background: rgba(255, 255, 255, .16); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); font-size: .88rem; font-weight: 500; }
/* Chip sobre fundo claro (a ficha do instrutor no site de reserva): azul profundo sobre azul a 10 %, sem desfoque. Duas classes para vencer a regra de transparência reduzida no fim do arquivo. */
.s4a-chip.s4a-chip--escuro { background: rgba(31, 68, 102, .1); color: var(--s4a-azul-profundo); backdrop-filter: none; -webkit-backdrop-filter: none; }

/*
 * Cartão: fundo por cor (areia, espuma, azul) ou foto. No WordPress o cartão de foto é um bloco Capa com
 * a classe s4a-card s4a-card--foto; no mosaico da home (.s4a-bento), home.css diz quantas colunas ocupa.
 */
.s4a-card { border-radius: var(--s4a-raio-m); padding: 28px; overflow: hidden; display: flex; flex-direction: column; justify-content: flex-end; }
.s4a-card h3, .s4a-card .s4a-card__titulo { font-family: var(--s4a-titulos); font-size: 1.45rem; letter-spacing: -.02em; line-height: 1.1; margin: 0 0 6px; }
.s4a-card p { color: var(--s4a-texto-2); }
.s4a-card--foto { position: relative; padding: 0 !important; min-height: 0 !important; align-items: flex-end !important; color: #fff; }
.s4a-card--foto .wp-block-cover__inner-container, .s4a-card--foto .s4a-card__conteudo { position: relative; z-index: 1; width: 100%; padding: 28px; }
.s4a-card--foto .s4a-card__foto { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.s4a-card--foto .s4a-card__veu { position: absolute; inset: 0; background: var(--s4a-veu-foto); pointer-events: none; }
.s4a-card--foto p { color: rgba(255, 255, 255, .88); }
.s4a-card--azul { background: var(--s4a-azul); color: #fff; }
.s4a-card--azul p { color: rgba(255, 255, 255, .85); }
.s4a-card--areia { background: var(--s4a-areia); }
.s4a-card--espuma { background: var(--s4a-espuma); }
.s4a-grande { font: 700 3.4rem/1 var(--s4a-titulos) !important; letter-spacing: -.04em; margin-bottom: auto !important; color: #fff !important; }

/*
 * Cartão de praça: foto de fundo, véu, texto branco embaixo, preço em destaque, o cartão inteiro
 * clicável. No WordPress é um bloco Capa com a classe s4a-praca (patterns/pagina-inicial.php); no site de
 * reserva é um <a class="s4a-praca"> com img, véu e conteúdo (apps/reserva/src/main.ts).
 */
.s4a-praca { position: relative; display: flex; flex-direction: column; justify-content: flex-end; min-height: 460px !important; border-radius: var(--s4a-raio-g); overflow: hidden; align-items: flex-end !important; box-shadow: var(--s4a-sombra); color: #fff; text-decoration: none; transition: transform .35s cubic-bezier(.2, .8, .2, 1); }
.s4a-praca:hover { transform: translateY(-6px); }
.s4a-praca:active { transform: scale(.985); }
.s4a-praca .wp-block-cover__image-background, .s4a-praca .s4a-praca__foto { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .8s cubic-bezier(.2, .8, .2, 1); }
.s4a-praca:hover :is(.wp-block-cover__image-background, .s4a-praca__foto) { transform: scale(1.05); }
.s4a-praca .s4a-praca__veu { position: absolute; inset: 0; background: var(--s4a-veu-foto); pointer-events: none; }
.s4a-praca .wp-block-cover__inner-container, .s4a-praca .s4a-praca__conteudo { position: relative; z-index: 1; width: 100%; padding: 28px; color: #fff; display: flex; flex-direction: column; }
.s4a-praca .s4a-praca__local { font-size: .9rem; opacity: .85; font-weight: 500; }
.s4a-praca .wp-block-heading, .s4a-praca .s4a-praca__titulo { display: block; font: 700 clamp(1.7rem, 2.6vw, 2.3rem)/1.05 var(--s4a-titulos); letter-spacing: -.02em; margin: 4px 0 14px; color: inherit; }
.s4a-praca h3 a::after { content: ""; position: absolute; inset: 0; z-index: 2; }
.s4a-praca h3 a:focus-visible { outline: none; }
.s4a-praca:has(h3 a:focus-visible), a.s4a-praca:focus-visible { outline: 3px solid var(--s4a-azul-claro); outline-offset: 4px; }
.s4a-preco { font-size: .95rem; }
.s4a-preco strong { font: 700 1.5rem/1 var(--s4a-titulos); letter-spacing: -.02em; }

/* Passos numerados ("Como funciona"): o número vem do contador, não do conteúdo */
.s4a-passos { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; counter-reset: s4a-passo; }
.s4a-passo { background: #fff; border-radius: var(--s4a-raio-m); padding: 30px 28px 32px; box-shadow: var(--s4a-sombra); }
.s4a-passo::before { counter-increment: s4a-passo; content: counter(s4a-passo); display: grid; place-items: center; width: 48px; height: 48px; border-radius: 16px 16px 16px 4px; background: var(--s4a-azul); color: #fff; font: 700 1.2rem/1 var(--s4a-titulos); margin-bottom: 22px; }
.s4a-passo h3, .s4a-passo .s4a-passo__titulo { font-family: var(--s4a-titulos); font-size: 1.35rem; letter-spacing: -.015em; margin: 0 0 8px; }
.s4a-passo p { color: var(--s4a-texto-2); }

/* Tipo de aula: cartão de preço, com lista de inclusos e o botão embaixo; --destaque em azul profundo */
.s4a-aula { display: flex; flex-direction: column; border-radius: var(--s4a-raio-g); padding: 32px 28px 28px; background: #fff; box-shadow: var(--s4a-sombra); transition: transform .35s cubic-bezier(.2, .8, .2, 1); }
.s4a-aula > * { margin: 0; }
.s4a-aula:hover { transform: translateY(-4px); }
.s4a-aula--destaque { background: var(--s4a-azul-profundo); color: #fff; }
/* Duas classes: a regra geral da lista (.s4a-aula .wp-block-list li) vem depois e venceria o empate. */
.s4a-aula.s4a-aula--destaque :is(.s4a-aula__desc, .wp-block-list li, .s4a-aula__lista li) { color: rgba(255, 255, 255, .85); }
.s4a-aula__nome { font-family: var(--s4a-titulos); font-size: 1.5rem; letter-spacing: -.02em; }
.s4a-aula__para { align-self: flex-start; margin-top: 10px !important; padding: 5px 11px; border-radius: 999px; background: var(--s4a-espuma); color: var(--s4a-azul-profundo); font-size: .82rem; font-weight: 600; }
.s4a-aula--destaque .s4a-aula__para { background: rgba(255, 255, 255, .14); color: #fff; }
.s4a-aula__desc { color: var(--s4a-texto-2); margin: 16px 0 20px !important; }
.s4a-aula__preco strong { font: 700 2.6rem/1 var(--s4a-titulos); letter-spacing: -.04em; }
.s4a-aula .wp-block-list, .s4a-aula .s4a-aula__lista { list-style: none; padding: 0; margin: 14px 0 26px !important; display: grid; gap: 8px; font-size: .95rem; }
.s4a-aula :is(.wp-block-list, .s4a-aula__lista) li { display: flex; gap: 10px; color: var(--s4a-texto-2); }
.s4a-aula :is(.wp-block-list, .s4a-aula__lista) li::before { content: "✓"; color: var(--s4a-azul-claro); font-weight: 700; }
.s4a-aula .s4a-acoes { margin-top: auto !important; }
.s4a-aula .s4a-botao, .s4a-aula .s4a-botao .wp-block-button__link, .s4a-aula .s4a-botao__link { width: 100%; justify-content: center; }
.s4a-aula--destaque .s4a-botao .wp-block-button__link, .s4a-aula--destaque .s4a-botao__link, .s4a-aula--destaque a.s4a-botao { background: #fff; color: var(--s4a-azul-profundo) !important; }

/* Praia: cartão com foto 4:3 e texto, ou só texto com ícone */
.s4a-praia { border-radius: var(--s4a-raio-m); overflow: hidden; background: #fff; box-shadow: var(--s4a-sombra); }
.s4a-praia .wp-block-image { margin: 0; }
.s4a-praia .wp-block-image img, .s4a-praia .s4a-praia__foto { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block; }
.s4a-praia__texto { padding: 18px 20px 22px; }
.s4a-praia--texto { display: flex; align-items: flex-end; }
.s4a-praia--texto .s4a-praia__texto { padding: 24px; }
.s4a-praia__icone { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 14px 14px 14px 4px; background: var(--s4a-espuma); margin-bottom: 16px !important; font-size: 1.3rem; }
.s4a-praia h3, .s4a-praia .s4a-praia__nome { font-family: var(--s4a-titulos); font-size: 1.2rem; letter-spacing: -.015em; margin: 0 0 6px; }
.s4a-praia p:not(.s4a-praia__icone) { color: var(--s4a-texto-2); font-size: .95rem; line-height: 1.5; }

/* Instrutores: faixa que rola de lado, cartões 3:4 com a foto de fundo e o nome embaixo */
.s4a-instrutores { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(210px, 1fr); gap: 18px; overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: 10px; }
.s4a-instrutores:empty { display: none; }
.s4a-instrutor { scroll-snap-align: start; position: relative; aspect-ratio: 3 / 4; border-radius: var(--s4a-raio-m); overflow: hidden; color: #fff !important; isolation: isolate; background: var(--s4a-azul-profundo); box-shadow: var(--s4a-sombra); text-decoration: none; transition: transform .35s cubic-bezier(.2, .8, .2, 1); display: block; }
.s4a-instrutor:hover { transform: translateY(-4px); }
.s4a-instrutor:active { transform: scale(.985); }
.s4a-instrutor img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; }
.s4a-instrutor::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, transparent 45%, rgba(12, 32, 55, .85)); }
.s4a-instrutor__texto { position: absolute; left: 18px; right: 18px; bottom: 18px; }
.s4a-instrutor h3, .s4a-instrutor .s4a-instrutor__nome { font-family: var(--s4a-titulos); display: block; font-size: 1.2rem; letter-spacing: -.015em; margin: 0; }
.s4a-instrutor span:not(.s4a-instrutor__nome) { font-size: .85rem; opacity: .85; }

/* Entrada suave ao rolar (assets/js/home.js põe as classes); sem JS, tudo aparece */
.s4a-js .s4a-surge { opacity: 0; transform: translateY(18px); transition: opacity .7s ease, transform .7s cubic-bezier(.2, .8, .2, 1); }
.s4a-js .s4a-surge.s4a-visivel { opacity: 1; transform: none; }

@media (max-width: 900px) {
	.s4a-praca { min-height: 380px !important; }
	.s4a-passos { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) {
	.s4a-aula, .s4a-instrutor, .s4a-praca { transition: none; transform: none !important; }
	.s4a-js .s4a-surge { transition: opacity .2s ease !important; transform: none !important; }
}
@media (prefers-reduced-transparency: reduce) {
	.s4a-selo, .s4a-chip { backdrop-filter: none; background: rgba(0, 0, 0, .35); }
}
