/* =====================================================================
   DERKIAM ADVOCACIA — Theme stylesheet
   Clone estrutural 1:1 de template-solucao.php (Samartino, "3.1 Página -
   Solução: Projetos de Prevenção e Combate a Incêndio") — mesma mecânica
   visual (blur, glassmorphism, gradientes, sombras), só trocando a paleta
   (laranja → navy #001540) e a fonte (Liszt FY → Sora).
   ===================================================================== */

/* ---------------------------------------------------------------------
   1. Fonte — Sora (arquivo local, sem dependência do Google Fonts)
   --------------------------------------------------------------------- */
@font-face {
  font-family: "Sora";
  src: url('../fonts/Sora-VariableFont_wght.woff2') format('woff2-variations'), url('../fonts/Sora-VariableFont_wght.woff2') format('woff2');
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

/* ---------------------------------------------------------------------
   2. Design tokens
   --------------------------------------------------------------------- */
:root {
  /* Paleta mandatória — Derkiam Advocacia (navy + branco + cinza) */
  --navy: #001540;
  --navy-black: #001540;
  --navy-graphite: #082058;
  --navy-graphite-2: #061A49;
  --white: #FFFFFF;
  --gray: #EAEAEA;

  --navy-hover: oklch(from var(--navy) calc(l + 0.08) c h);
  --navy-active: oklch(from var(--navy) calc(l - 0.05) c h);
  --navy-tint-12: oklch(from var(--navy) l c h / 0.12);
  --navy-tint-20: oklch(from var(--navy) l c h / 0.20);

  --bg-canvas: var(--navy-black);
  --bg-surface-1: var(--navy-graphite);
  --bg-surface-2: var(--navy-graphite-2);
  --bg-light: var(--gray);
  --bg-light-alt: var(--white);

  --surface-card-dark: var(--navy-graphite);
  --surface-card-light: var(--white);

  --text-on-dark-primary: var(--white);
  --text-on-dark-secondary: var(--white);
  --text-on-dark-muted: oklch(from var(--white) l c h / 0.44);

  --text-on-light-primary: var(--navy-black);
  --text-on-light-secondary: oklch(from var(--navy-black) l c h / 0.64);
  --text-on-light-muted: oklch(from var(--navy-black) l c h / 0.44);

  --accent: var(--navy);
  --accent-hover: var(--navy-hover);
  --accent-active: var(--navy-active);
  --accent-contrast: var(--white);

  --border-on-dark: oklch(from var(--white) l c h / 0.14);
  --border-on-dark-strong: oklch(from var(--white) l c h / 0.28);
  --border-on-light: oklch(from var(--navy-black) l c h / 0.12);

  --focus-ring: var(--navy);

  --status-danger: #B3261E;
  --status-warning: #F2B300;
  --status-success: #2E9E5B;
  --status-info: #EAEAEA;

  /* Tipografia — Sora (Google Fonts) no lugar da Liszt FY */
  --font-display: "Sora", "Helvetica Neue", Arial, sans-serif;
  --font-body: "Sora", "Helvetica Neue", Arial, sans-serif;

  --weight-thin: 100;
  --weight-light: 300;
  --weight-book: 400;
  --weight-regular: 500;
  --weight-bold: 700;      /* também usado onde a hierarquia pede "Semibold/600" — a Liszt FY não tem instância 600 */
  --weight-black: 900;     /* reservado à logotipo/wordmark da marca, não usado em headings de conteúdo */

  /* Hierarquia tipográfica do conteúdo — tamanho "desktop" é o teto do clamp().
     H1: 40–44px · H2: 30–36px · H3: 24–28px, peso Bold em todos (só título/botão/eyebrow/link levam 600+). */
  --size-h1: clamp(2rem, 1.5rem + 2vw, 2.75rem);        /* 44px desktop — título principal, 1 por página */
  --size-h2: clamp(1.5rem, 1.15rem + 1.4vw, 2.25rem);   /* 36px desktop — título de seção */
  --size-h3: clamp(1.25rem, 1.05rem + 0.8vw, 1.75rem);  /* 28px desktop — subtítulo / título de card */

  --text-body-lg: 1.125rem; /* 18px — Lead: parágrafo de destaque abaixo de H1/H2 */
  --text-body-md: 1rem;     /* 16px — Body: parágrafo padrão */
  --text-body-sm: 0.875rem; /* 14px — Small: datas, autor, legendas */
  --text-caption: 0.75rem;  /* 12px — Micro: rodapé/legal */
  --text-eyebrow: 0.8125rem; /* 13px — Eyebrow: rótulo acima de um H2 */

  --leading-tight: 1.05;
  --leading-snug: 1.2;
  --leading-normal: 1.5;
  --leading-relaxed: 1.7;

  --tracking-tight: -0.02em;
  --tracking-normal: 0;
  --tracking-wide: 0.08em;
  --tracking-wider: 0.14em;

  /* Espaçamento (base 4px) */
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.5rem;
  --space-6: 2rem;
  --space-7: 3rem;
  --space-8: 4rem;
  --space-9: 6rem;
  --space-10: 8rem;

  --radius-sm: 4px;
  --radius-md: 8px;
  --radius-lg: 12px;
  --radius-xl: 20px;
  --radius-pill: 999px;

  --shadow-sm: 0 2px 8px rgba(2, 3, 5, 0.28);
  --shadow-md: 0 8px 24px rgba(2, 3, 5, 0.36);
  --shadow-lg: 0 16px 48px rgba(2, 3, 5, 0.48);
  --shadow-glow-accent: 0 0 0 1px oklch(from var(--navy) l c h / 0.4), 0 8px 24px oklch(from var(--navy) l c h / 0.28);

  --border-width-sm: 1px;
  --border-width-md: 1.5px;

  --container-max: 1280px;
  --container-pad: clamp(1.25rem, 4vw, 4rem);

  /* Altura do .site-header (fixed) + espaço acima dele + folga — usado para
     compensar o padding-top do que vier logo abaixo, já que o header saiu
     do fluxo normal do documento para poder flutuar sobre o Hero. */
  --header-clearance: 100px;
}

/* ---------------------------------------------------------------------
   3. Reset & base
   --------------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
html {
  scroll-behavior: smooth;
  /* Mata o overflow horizontal criado pelos elementos full-bleed (width:100vw
     inclui a largura da barra de rolagem vertical). Sem isso, a página ganha
     uma barra de rolagem horizontal e o conteúdo pode deslizar lateralmente,
     desalinhando-se de qualquer camada position:fixed (como a grade de debug).
     "hidden" é fallback para navegadores antigos; "clip" (preferido) impede
     até rolagem programática. */
  overflow-x: hidden;
  overflow-x: clip;
}
body {
  margin: 0;
  background: var(--bg-canvas);
  color: var(--text-on-dark-primary);
  font-family: var(--font-body);
  font-weight: var(--weight-book);
  line-height: var(--leading-normal);
  -webkit-font-smoothing: antialiased;
}
img, svg { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
ul, ol { margin: 0; padding: 0; list-style: none; }
button, input, select, textarea { font-family: inherit; }
h1, h2, h3, h4, p, figure { margin: 0; overflow-wrap: break-word; }

.container {
  max-width: var(--container-max);
  margin: 0 auto;
  padding-left: var(--container-pad);
  padding-right: var(--container-pad);
}

.skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 100;
  background: var(--accent);
  color: var(--white);
  padding: var(--space-3) var(--space-5);
  border-radius: var(--radius-sm);
}
.skip-link:focus { left: var(--space-4); top: var(--space-4); }

:focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 2px;
}

/* Eyebrow (rótulo técnico) */
.eyebrow {
  display: inline-flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  max-width: 100%;
  color: var(--accent);
  font-weight: var(--weight-bold);
  font-size: var(--text-eyebrow);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  margin-bottom: var(--space-3);
}
.eyebrow__symbol { height: 16px; width: auto; flex-shrink: 0; }
.eyebrow span { min-width: 0; }

h1, .h1 { font-family: var(--font-display); font-size: var(--size-h1); font-weight: var(--weight-bold); color: var(--text-on-dark-primary); letter-spacing: var(--tracking-tight); line-height: var(--leading-tight); }
h2, .h2 { font-family: var(--font-display); font-size: var(--size-h2); font-weight: var(--weight-bold); color: var(--text-on-dark-primary); letter-spacing: var(--tracking-tight); line-height: var(--leading-tight); }
h3, .h3 { font-family: var(--font-display); font-size: var(--size-h3); font-weight: var(--weight-bold); color: var(--text-on-dark-primary); line-height: var(--leading-snug); }

.text-lg { font-size: var(--text-body-lg); }
.text-secondary { color: var(--text-on-dark-secondary); }
.text-muted { color: var(--text-on-dark-muted); }

/* ---------------------------------------------------------------------
   4. Botões
   --------------------------------------------------------------------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  font-family: var(--font-display);
  font-weight: var(--weight-bold);
  font-size: var(--text-body-md);
  border-radius: 14px;
  padding: 0.55rem 1.5rem;
  border: var(--border-width-sm) solid transparent;
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.28s ease, transform 0.28s ease, color 0.28s ease, border-color 0.28s ease;
}
.btn:active { transform: scale(0.98); }
.btn svg { flex-shrink: 0; }

.btn-primary { background: var(--accent); color: var(--accent-contrast); border-color: oklch(from var(--white) l c h / 0.5); }
.btn-primary:hover { background: oklch(0.3 0.13 258); color: var(--accent-contrast); }
.btn-primary:active { background: var(--accent-active); }

.btn-secondary {
  position: relative;
  z-index: 0;
  background: transparent;
  color: var(--text-on-dark-primary);
  border: var(--border-width-md) solid var(--border-on-dark-strong);
}
/* Fundo + borda (não o texto) somem da esquerda pra direita no hover: o
   texto vem sempre branco sólido via color (nunca depende de mask); o
   efeito de sumiço fica isolado num ::before atrás (z-index -1), que é o
   único elemento com mask-image — evita o bug de mask-image no próprio
   botão esmaecer o texto junto com o fundo. */
.btn-secondary:hover { border-color: transparent; color: var(--white); }
.btn-secondary::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0;
  border-radius: 14px;
  background: oklch(from var(--accent) l c h / 0.35);
  border: var(--border-width-md) solid var(--accent);
  opacity: 0;
  mask-image: linear-gradient(90deg, #000 0%, rgba(0,0,0,0.7) 35%, rgba(0,0,0,0.3) 65%, transparent 100%);
  -webkit-mask-image: linear-gradient(90deg, #000 0%, rgba(0,0,0,0.7) 35%, rgba(0,0,0,0.3) 65%, transparent 100%);
  transition: opacity 0.28s ease;
  pointer-events: none;
}
.btn-secondary:hover::before { opacity: 1; }

.btn-light { background: var(--white); color: var(--navy-black); border-color: var(--border-on-light); }
.btn-light:hover { background: var(--gray); color: var(--navy-black); }

.btn-dark { background: var(--navy-black); color: var(--white); border-color: oklch(from var(--white) l c h / 0.5); }
.btn-dark:hover { background: oklch(0.3 0.13 258); color: var(--white); }

.btn-sm { padding: 0.5rem 1rem; font-size: var(--text-body-sm); }

/* ---------------------------------------------------------------------
   5. Cards, badges
   --------------------------------------------------------------------- */
.card {
  background: var(--surface-card-dark);
  border: 1px solid var(--border-on-dark);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  transition: box-shadow 0.2s ease, transform 0.2s ease;
}
.icon-tile {
  width: 44px;
  height: 44px;
  border-radius: var(--radius-md);
  background: var(--navy-tint-12);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--accent);
  flex-shrink: 0;
}
.icon-tile--lg { width: 56px; height: 56px; }

.badge {
  display: inline-flex;
  align-items: center;
  padding: 0.25rem 0.75rem;
  border-radius: var(--radius-pill);
  font-weight: var(--weight-bold);
  font-size: var(--text-caption);
  text-transform: uppercase;
  letter-spacing: var(--tracking-wide);
  background: var(--navy-tint-20);
  color: var(--navy);
  border: 1px solid oklch(from var(--navy) l c h / 0.35);
}

/* Placeholder de imagem (sem fotografia real disponível) */
.placeholder-image {
  aspect-ratio: 16/9;
  width: 100%;
  border-radius: var(--radius-lg);
  background: repeating-linear-gradient(135deg, var(--bg-surface-1) 0 14px, var(--bg-surface-2) 14px 28px);
  border: 1px solid var(--border-on-dark);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--text-on-dark-muted);
  font-size: var(--text-body-sm);
  text-align: center;
  padding: var(--space-4);
}
.placeholder-image--4-3 { aspect-ratio: 4/3; }

/* ---------------------------------------------------------------------
   7. Seções gerais
   --------------------------------------------------------------------- */
.section { padding-top: 100px; padding-bottom: 100px; }
.section--sm { padding-top: var(--space-6); padding-bottom: var(--space-6); }
.section--bg-canvas { background: var(--bg-canvas); }
.section--bg-surface-1 { background: var(--bg-surface-1); }
.section--bg-surface-2 { background: var(--bg-surface-2); }
.section--bg-light { background: var(--bg-light); }

/* Linha divisória sutil entre seções consecutivas da Home — aplicada no
   elemento <section> raiz (não só .section), para cobrir também Hero,
   marquee, faixa CTA e "Samartino em números", que têm padding próprio. */
main > section + section {
  border-top: 1px solid var(--border-on-dark-strong);
}

/* ---- Faixa marquee (loop infinito) — categorias BPC/LOAS, logo abaixo do Hero ---- */
.marquee-strip {
  position: relative;
  overflow: hidden;
  background: #001540;
  border-top: 1px solid rgba(255, 255, 255, 0.12);
  border-bottom: 1px solid rgba(255, 255, 255, 0.12);
  padding: 18px 0;
}
.marquee-strip::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to right,
    #001540 0%,
    rgba(0, 21, 64, 0.7) 8%,
    rgba(0, 21, 64, 0.3) 16%,
    transparent 28%,
    transparent 72%,
    rgba(0, 21, 64, 0.3) 84%,
    rgba(0, 21, 64, 0.7) 92%,
    #001540 100%);
  pointer-events: none;
  z-index: 2;
}
.marquee-strip__viewport {
  position: relative;
  max-width: 1800px;
  margin: 0 auto;
  overflow: hidden;
  -webkit-mask-image: linear-gradient(to right,
    transparent 0%,
    rgba(0, 0, 0, 0.3) 8%,
    rgba(0, 0, 0, 0.7) 16%,
    #000 28%,
    #000 72%,
    rgba(0, 0, 0, 0.7) 84%,
    rgba(0, 0, 0, 0.3) 92%,
    transparent 100%);
  mask-image: linear-gradient(to right,
    transparent 0%,
    rgba(0, 0, 0, 0.3) 8%,
    rgba(0, 0, 0, 0.7) 16%,
    #000 28%,
    #000 72%,
    rgba(0, 0, 0, 0.7) 84%,
    rgba(0, 0, 0, 0.3) 92%,
    transparent 100%);
}
.marquee-strip__track {
  display: flex;
  width: max-content;
  animation: marquee-scroll 40s linear infinite;
}
.marquee-strip__group {
  display: flex;
  align-items: center;
  flex-shrink: 0;
}
.marquee-strip__item {
  font-size: var(--text-body-sm);
  font-weight: var(--weight-bold);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color: #ffffff;
  white-space: nowrap;
  padding: 0 var(--space-4);
}
.marquee-strip__dot { color: rgba(255, 255, 255, 0.4); font-size: 0.75rem; }
@keyframes marquee-scroll {
  from { transform: translateX(0); }
  to { transform: translateX(-25%); }
}
@media (prefers-reduced-motion: reduce) {
  .marquee-strip__track { animation: none; }
}

/* Página Soluções — grid de cards: mesmo tratamento de fundo (textura +
   vinheta radial) das outras seções escuras do site. */
.section-solucoes-lista {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  background: var(--bg-light);
}
.section-solucoes-lista::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  background-image: url('../images/textura-clara.webp');
  background-repeat: repeat;
  background-size: 900px auto;
  opacity: 0.5;
  pointer-events: none;
}
.section-solucoes-lista::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 3;
  background: linear-gradient(180deg, rgba(0, 0, 0, 0.45) 0%, transparent 30%, transparent 70%, rgba(0, 0, 0, 0.45) 100%),
    linear-gradient(90deg, rgba(0, 0, 0, 0.32) 0%, transparent 20%, transparent 80%, rgba(0, 0, 0, 0.32) 100%);
  pointer-events: none;
}
.section-solucoes-lista > .container { position: relative; z-index: 4; }
.section-solucoes-lista .solucoes-header__title { color: var(--text-on-light-primary); }
.section-solucoes-lista .solucoes-header__text { color: var(--text-on-light-secondary); }
.section-solucoes-lista .eyebrow { color: var(--accent); }
.solucoes-lista__cta { display: flex; justify-content: center; margin-top: var(--space-7); }

/* Variante clara — usada na alternância de cores da Landing Page do
   Derkiam: fundo cinza claro sólido, sem textura/vinheta escura. */
.section-solucoes-lista--light { background: var(--bg-light); }
.section-solucoes-lista--light::after,
.section-solucoes-lista--light::before { display: none; }
.section-divider-fade {
  height: 2px;
  max-width: 640px;
  margin: 0 0 var(--space-6);
  background: linear-gradient(90deg, var(--accent) 0%, oklch(from var(--accent) l c h / 0) 100%);
}

/* Cabeçalho da seção "Nossos serviços" (título + setas do carrossel) */
.solucoes-header { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-5); margin-bottom: var(--space-6); }

/* CTA global (banner laranja) — textura diagonal sutil (mesmo padrão dos
   placeholders de foto do site) para não parecer um retângulo solto entre
   as seções escuras acima/abaixo. */
/* Faixa CTA — fundo laranja com listras+vinheta; texto (eyebrow+título) à
   esquerda e botão escuro à direita, numa linha só. */
.cta-global {
  position: relative;
  background: radial-gradient(ellipse at center, oklch(from var(--accent) calc(l + 0.06) c h) 0%, var(--accent) 55%, oklch(from var(--accent) calc(l - 0.1) c h) 100%);
  padding: 48px 0;
  overflow: hidden;
}
.cta-global::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse at center, transparent 25%, rgba(2, 3, 5, 0.4) 100%),
    repeating-linear-gradient(135deg, rgba(2, 3, 5, 0.08) 0 14px, transparent 14px 28px);
  mask-image: radial-gradient(ellipse at center, transparent 15%, #000 85%);
  -webkit-mask-image: radial-gradient(ellipse at center, transparent 15%, #000 85%);
  pointer-events: none;
}
.cta-global__inner {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-7);
}
.cta-global__text { display: flex; flex-direction: column; }
.cta-global__eyebrow {
  display: block;
  font-size: 12px;
  font-weight: var(--weight-bold);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color: rgba(2, 3, 5, 0.65);
  margin-bottom: var(--space-2);
}
.cta-global__title {
  font-size: 26px;
  font-weight: var(--weight-bold);
  color: var(--white);
  line-height: var(--leading-snug);
  margin: 0;
  max-width: 640px;
}
.cta-global__btn {
  flex-shrink: 0;
  padding: 12px 28px;
  font-size: var(--text-body-md);
  box-shadow: 0 8px 24px rgba(2, 3, 5, 0.35);
  transition: background 0.28s ease, transform 0.28s ease, box-shadow 0.2s ease;
}
.cta-global__btn:hover { box-shadow: var(--shadow-glow-accent); transform: translateY(-2px); }
.cta-global__btn-icon { display: inline-flex; transition: transform 0.28s ease; }
.cta-global__btn:hover .cta-global__btn-icon { transform: translateX(4px); }
@media (max-width: 720px) {
  .cta-global__inner { flex-direction: column; align-items: center; text-align: center; gap: var(--space-5); }
  .cta-global__title { white-space: normal; }
  .cta-global__btn { align-self: stretch; justify-content: center; }
}

/* Variante clara — usada na alternância de cores da Landing Page do
   Derkiam: fundo cinza claro sólido em vez do gradiente navy, texto/botão
   navy para manter contraste. */
.cta-global--light {
  background: var(--bg-light);
}
.cta-global--light::before {
  background:
    linear-gradient(180deg, rgba(0, 0, 0, 0.35) 0%, transparent 40%, transparent 60%, rgba(0, 0, 0, 0.35) 100%),
    linear-gradient(90deg, rgba(0, 0, 0, 0.25) 0%, transparent 20%, transparent 80%, rgba(0, 0, 0, 0.25) 100%);
  mask-image: none;
  -webkit-mask-image: none;
}
.cta-global--light .cta-global__eyebrow { color: var(--text-on-light-secondary); }
.cta-global--light .cta-global__title { color: var(--text-on-light-primary); }
.cta-global--light .cta-global__btn { background: var(--accent); color: var(--white); box-shadow: var(--shadow-card); }
.cta-global--light .cta-global__btn:hover { background: oklch(from var(--accent) calc(l - 0.08) c h); }

/* Hero da Landing Page — sem header fixo sobreposto (LP de página única,
   sem menu), padding simétrico igual às demais seções. */
.solucoes-hero { position: relative; overflow: hidden; isolation: isolate; background: var(--navy-black); padding: 100px 0; }
.solucao-etapas,
.solucao-diferenciais,
.qs-section,
.cta-global {
  border-top: 1px solid rgba(255, 255, 255, 0.18);
}
.section-solucoes-lista,
.solucao-diferenciais--light,
.cta-global--light {
  border-top: 1px solid rgba(0, 21, 64, 0.18);
}
.solucoes-hero__bg {
  position: absolute;
  inset: 0;
  z-index: 1;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 60%;
}
.solucoes-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  background:
    radial-gradient(ellipse at center,
      transparent 45%,
      rgba(0, 21, 64, 0.55) 100%
    ),
    linear-gradient(90deg,
      rgba(0, 21, 64, 0.95) 0%,
      rgba(0, 21, 64, 0.88) 25%,
      rgba(0, 21, 64, 0.65) 45%,
      rgba(0, 21, 64, 0.3) 65%,
      transparent 85%
    ),
    linear-gradient(0deg, rgba(0, 21, 64, 0.6) 0%, transparent 35%);
  pointer-events: none;
}
/* Escurecimento do lado esquerdo (onde fica o texto) — a foto de fundo
   atual é naturalmente clara, então precisa de mais navy aqui do que em
   fotos mais escuras para o texto branco continuar legível. */
.solucoes-hero--dark-left::before {
  background:
    linear-gradient(90deg, rgba(0, 21, 64, 0.81) 0%, rgba(0, 21, 64, 0.62) 35%, rgba(0, 21, 64, 0.29) 60%, transparent 83%),
    linear-gradient(0deg, rgba(0, 21, 64, 0.33) 0%, transparent 30%);
}
/* Variante sem foto de fundo — usada enquanto não há fotografia real do
   advogado: fundo navy sólido, sem overlay. */
.solucoes-hero--no-bg { background: var(--navy-black); }
.solucoes-hero--no-bg::before { display: none; }

.solucoes-hero__content { position: relative; z-index: 3; }
.solucoes-hero__content .eyebrow { font-size: 15px; letter-spacing: 0.12em; }
/* Eyebrow com nome de serviço mais longo: fonte menor e ícone alinhado ao
   topo da primeira linha (align-items:center do .eyebrow base centraliza em
   relação à altura toda do bloco, o que descentraliza o ícone quando o
   texto quebra em 2+ linhas). */
.solucoes-hero__content .solucao-hero__eyebrow { align-items: flex-start; font-size: 12px; max-width: 620px; color: var(--white); }
.solucao-hero__eyebrow svg { margin-top: 0.2em; flex-shrink: 0; }
.solucao-hero__eyebrow span { min-width: 0; }
.solucoes-hero__title { font-size: 38px; line-height: 1.2; margin: 0 0 var(--space-4); max-width: 620px; }
.solucoes-hero__title-accent { color: var(--white); }
.solucoes-hero__text { font-size: var(--text-body-md); color: var(--text-on-dark-secondary); max-width: 560px; margin: 0 0 var(--space-6); }

.solucoes-hero__btn,
.solucoes-hero__btn:hover {
  position: relative;
  z-index: 0;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding-left: 0.4rem;
  background: transparent;
  border-radius: 14px;
  border-color: transparent;
}
.solucoes-hero__btn::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0;
  border-radius: 14px;
  background: var(--accent);
  border: 1px solid oklch(from var(--white) l c h / 0.5);
  transition: background 0.28s ease;
}
.solucoes-hero__btn:hover::before {
  background: oklch(0.3 0.13 258);
}
.solucoes-hero__btn-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  flex-shrink: 0;
}

/* Conteúdo completo dentro do card "Sobre o serviço" — reusa
   a cor/leading do corpo padrão da página, só formata parágrafos e listas
   que o editor do WordPress possa gerar. */
.solucao-conteudo { max-width: 540px; }
.solucao-conteudo > * + * { margin-top: var(--space-4); }
.solucao-conteudo ul, .solucao-conteudo ol { padding-left: 1.25em; }
.solucao-conteudo ul { list-style: disc; }
.solucao-conteudo ol { list-style: decimal; }
.solucao-conteudo a { color: var(--accent); text-decoration: underline; }

/* Pontos-chave da solução — mesma lista com check-icon usada em
   .diferenciais-list, só alinhada à esquerda (contexto de coluna estreita,
   não de bloco full-width). */
.solucao-pontos-list { display: flex; flex-direction: column; gap: var(--space-2); width: 100%; margin-top: var(--space-2); }
.solucao-pontos-list li {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-2) 0;
}
.solucao-pontos-list li span.icon { color: var(--accent); flex-shrink: 0; display: inline-flex; }
.solucao-pontos-list li span.text { font-size: var(--text-body-md); color: var(--text-on-dark-secondary); line-height: var(--leading-normal); }

/* "Como podemos te ajudar" — etapas do processo do serviço: coluna com a
   lista de itens (ícone + título/texto, separados por linha divisória) e,
   ao lado, um painel com CTA que acompanha o scroll (sticky) enquanto a
   lista rola, parando quando a lista termina. */
.solucao-etapas { position: relative; isolation: isolate; text-align: center; padding-top: 100px; padding-bottom: 100px; background-color: var(--navy-black); }
.solucao-etapas::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -2;
  background-image: url('../images/fundo-como-funciona.webp');
  background-repeat: no-repeat;
  background-position: center;
  background-size: cover;
  opacity: 0.85;
  pointer-events: none;
}
.solucao-etapas::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    linear-gradient(180deg, rgba(0, 0, 0, 0.45) 0%, transparent 30%, transparent 70%, rgba(0, 0, 0, 0.45) 100%),
    linear-gradient(90deg, rgba(0, 0, 0, 0.32) 0%, transparent 20%, transparent 80%, rgba(0, 0, 0, 0.32) 100%),
    rgba(0, 21, 64, 0.86);
  pointer-events: none;
}
.solucao-etapas .solucoes-header { margin-left: auto; margin-right: auto; }
.solucao-etapas .eyebrow { color: #ffffff; }
/* O 4º item (último da esquerda) fica sozinho no topo da coluna direita,
   e o painel "Seu projeto merece..." ocupa as 2 linhas seguintes embaixo
   dele, formando um grid 2x2 equilibrado. */
.solucao-etapas__cols {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-auto-rows: auto;
  gap: var(--space-4) var(--space-6);
  align-items: stretch;
  text-align: left;
}
.solucao-etapas__lista { display: contents; }
.solucao-etapa-item--under-painel { grid-column: 2; grid-row: 1; }
.solucao-etapas__painel { grid-column: 2; grid-row: 2 / 4; }
.solucao-etapa-item {
  position: relative;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  min-width: 0;
  padding: var(--space-5);
  border-radius: var(--radius-lg);
  background: rgba(255, 255, 255, 0.05);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  border: 1px solid rgba(255, 255, 255, 0.14);
  transition: border-color 0.28s ease, background 0.28s ease;
}
.solucao-etapa-item:hover {
  border-color: rgba(0, 61, 173, 0.6);
  background: rgba(0, 61, 173, 0.08);
}
.solucao-etapa-item__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  margin: calc(var(--space-5) * -1) 0 var(--space-3);
  border-radius: 0 0 var(--radius-md) var(--radius-md);
  background: rgba(0, 61, 173, 0.16);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  border: 1px solid rgba(0, 61, 173, 0.4);
  border-top: none;
  color: #ffffff;
  transition: background 0.28s ease, color 0.28s ease;
}
.solucao-etapa-item:hover .solucao-etapa-item__icon { background: rgba(0, 61, 173, 0.28); }
.solucao-etapa-item__body { min-width: 0; max-width: 100%; }
.solucao-etapa-item__body h3 { font-size: var(--text-body-lg); margin: 0 0 var(--space-2); color: #ffffff; }
.solucao-etapa-item__body p { font-size: var(--text-body-sm); color: rgba(255, 255, 255, 0.75); line-height: var(--leading-normal); margin: 0; }
.solucao-etapas__painel {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  min-width: 0;
  gap: var(--space-3);
  padding: var(--space-7) var(--space-6);
  border-radius: var(--radius-lg);
  border: 1px solid rgba(255, 255, 255, 0.14);
  background: rgba(255, 255, 255, 0.05);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  transition: border-color 0.28s ease, background 0.28s ease;
}
.solucao-etapas__painel:hover {
  border-color: rgba(0, 61, 173, 0.6);
  background: rgba(0, 61, 173, 0.08);
}
.solucao-etapas__painel-title {
  font-family: var(--font-display);
  font-weight: var(--weight-bold);
  font-size: clamp(1.75rem, 1.4rem + 1.5vw, 2.25rem);
  line-height: 1.15;
  margin: 0;
}
.solucao-etapas__painel-title-accent { color: #ffffff; font-style: italic; font-weight: var(--weight-regular); }
.solucao-etapas__painel-text { font-size: var(--text-body-sm); color: var(--text-on-dark-secondary); line-height: var(--leading-normal); margin: var(--space-3) 0 var(--space-2); }
.solucao-etapas__cta,
.solucao-etapas__cta:hover {
  position: relative;
  z-index: 0;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding-left: 0.4rem;
  background: transparent;
  border-radius: 14px;
  border-color: transparent;
}
.solucao-etapas__cta::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0;
  border-radius: 14px;
  background: var(--accent);
  border: 1px solid oklch(from var(--white) l c h / 0.5);
  transition: background 0.28s ease;
}
.solucao-etapas__cta:hover::before {
  background: oklch(0.3 0.13 258);
}
.solucao-etapas__cta-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  flex-shrink: 0;
}
@media (max-width: 860px) {
  .solucao-etapas__cols { grid-template-columns: 1fr; }
  .solucao-etapa-item--under-painel,
  .solucao-etapas__painel { grid-column: 1; grid-row: auto; }
}

/* "Nossos diferenciais" da página de Solução — foto de fundo full-bleed
   com overlay escuro (mesmo efeito "apagado" do .solucoes-hero), e os
   cards usam vidro fosco (fundo translúcido + blur + borda de brilho) por
   cima, ecoando a mesma linguagem de vidro já usada nos badges da hero. */
.solucao-diferenciais { position: relative; isolation: isolate; overflow: hidden; text-align: center; padding-top: 100px; padding-bottom: 100px; }
.solucao-diferenciais::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -2;
  background-image: url('../images/fundo-como-funciona.webp');
  background-repeat: no-repeat;
  background-position: center;
  background-size: cover;
  opacity: 0.85;
  pointer-events: none;
}
.solucao-diferenciais::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    linear-gradient(180deg, rgba(0, 0, 0, 0.45) 0%, transparent 30%, transparent 70%, rgba(0, 0, 0, 0.45) 100%),
    linear-gradient(90deg, rgba(0, 0, 0, 0.32) 0%, transparent 20%, transparent 80%, rgba(0, 0, 0, 0.32) 100%),
    rgba(0, 21, 64, 0.86);
  pointer-events: none;
}
.solucao-diferenciais .solucoes-header { margin-left: auto; margin-right: auto; }
.solucao-diferenciais .eyebrow { color: #ffffff; }
.solucao-diferenciais__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--space-5);
  margin-bottom: var(--space-7);
}
.solucao-diferencial-card {
  position: relative;
  padding: var(--space-6) var(--space-5);
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: var(--radius-lg);
  background: rgba(255, 255, 255, 0.05);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  text-align: left;
  transition: border-color 0.28s ease, background 0.28s ease;
}
.solucao-diferencial-card:hover {
  border-color: rgba(0, 61, 173, 0.6);
  background: rgba(0, 61, 173, 0.08);
}
.solucao-diferencial-card__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  margin-bottom: var(--space-4);
  border-radius: var(--radius-md);
  background: rgba(0, 61, 173, 0.16);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  border: 1px solid rgba(0, 61, 173, 0.4);
  color: #ffffff;
  transition: background 0.28s ease;
}
.solucao-diferencial-card:hover .solucao-diferencial-card__icon { background: rgba(0, 61, 173, 0.28); }
.solucao-diferencial-card h3 { font-size: var(--text-body-lg); margin: 0 0 var(--space-2); color: #ffffff; }
.solucao-diferencial-card p { font-size: var(--text-body-sm); color: rgba(255, 255, 255, 0.75); line-height: var(--leading-normal); margin: 0; }
.solucao-diferenciais__cta,
.solucao-diferenciais__cta:hover {
  position: relative;
  z-index: 0;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding-left: 0.4rem;
  background: transparent;
  border-radius: 14px;
  border-color: transparent;
}
.solucao-diferenciais__cta::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0;
  border-radius: 14px;
  background: var(--accent);
  border: 1px solid oklch(from var(--white) l c h / 0.5);
  transition: background 0.28s ease;
}
.solucao-diferenciais__cta:hover::before {
  background: oklch(0.3 0.13 258);
}
.solucao-diferenciais__cta-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  flex-shrink: 0;
}
@media (max-width: 1080px) {
  .solucao-diferenciais__grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
  .solucao-diferenciais__grid { grid-template-columns: 1fr; }
}

/* Variante clara — usada na alternância de cores da Landing Page do
   Derkiam: fundo branco sólido, cards sólidos claros em vez de vidro
   fosco translúcido, texto navy. */
.solucao-diferenciais--light {
  background: var(--bg-light);
}
.solucao-diferenciais--light::before {
  display: block;
  z-index: 0;
  background:
    linear-gradient(180deg, rgba(0, 0, 0, 0.55) 0%, transparent 30%, transparent 70%, rgba(0, 0, 0, 0.55) 100%),
    linear-gradient(90deg, rgba(0, 0, 0, 0.4) 0%, transparent 20%, transparent 80%, rgba(0, 0, 0, 0.4) 100%);
}
.solucao-diferenciais--light::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background-image: url('../images/textura-clara.webp');
  background-repeat: no-repeat;
  background-position: center;
  background-size: cover;
  opacity: 0.4;
  pointer-events: none;
}
.solucao-diferenciais--light > .container { position: relative; z-index: 1; }
.solucao-diferenciais--light .solucoes-header__title { color: var(--text-on-light-primary); }
.solucao-diferenciais--light .solucoes-header__text { color: var(--text-on-light-secondary); }
.solucao-diferenciais--light .eyebrow { color: var(--accent); }
.solucao-diferenciais--light .solucao-diferencial-card {
  border: 1px solid #000000;
  background: oklch(from var(--white) l c h / 0.6);
  box-shadow: var(--shadow-card);
  transition: background 0.28s ease, border-color 0.28s ease;
}
.solucao-diferenciais--light .solucao-diferencial-card:hover {
  background: var(--accent);
  border-color: var(--white);
}
.solucao-diferenciais--light .solucao-diferencial-card h3 { color: var(--text-on-light-primary); transition: color 0.28s ease; }
.solucao-diferenciais--light .solucao-diferencial-card:hover h3 { color: var(--white); }
.solucao-diferenciais--light .solucao-diferencial-card p { color: var(--text-on-light-secondary); transition: color 0.28s ease; }
.solucao-diferenciais--light .solucao-diferencial-card:hover p { color: var(--white); }
.solucao-diferenciais--light .solucao-diferencial-card__icon { background: var(--bg-light); border-color: #000000; color: var(--accent); transition: background 0.28s ease, color 0.28s ease; }
.solucao-diferenciais--light .solucao-diferencial-card:hover .solucao-diferencial-card__icon { background: var(--white); color: var(--accent); }

.qshero-badges { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-bottom: var(--space-6); max-width: 100%; }
.qshero-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  max-width: 100%;
  padding: 8px 14px;
  border-radius: var(--radius-pill);
  border: 1px solid var(--border-on-dark-strong);
  background: oklch(from var(--white) l c h / 0.04);
  color: var(--white);
  font-size: var(--text-body-sm);
  font-weight: var(--weight-bold);
}
.qshero-badge svg { color: var(--white); flex-shrink: 0; }
/* Efeito de vidro no hover: fundo translúcido claro + blur, para
   contrastar com o fundo navy do Hero em vez de "sumir" nele. */
.qshero-badge:hover {
  background: oklch(from var(--white) l c h / 0.14);
  backdrop-filter: blur(14px) saturate(160%);
  -webkit-backdrop-filter: blur(14px) saturate(160%);
  border-color: oklch(from var(--white) l c h / 0.55);
  color: var(--white);
}
/* Badge "vidro" já no estado padrão (não só hover) — para uso sobre foto
   de fundo, onde o blur + fundo translúcido ajuda a legibilidade e dá
   profundidade em vez do fundo quase opaco do .qshero-badge base. */
.qshero-badge--glass {
  background: oklch(from var(--navy-black) l c h / 0.35);
  backdrop-filter: blur(18px) saturate(180%);
  -webkit-backdrop-filter: blur(18px) saturate(180%);
  border-color: oklch(from var(--white) l c h / 0.45);
  box-shadow: inset 0 1px 0 oklch(from var(--white) l c h / 0.3), 0 4px 16px rgba(0, 21, 64, 0.4);
}
.qshero-badge--glass:hover {
  background: oklch(from var(--navy-black) l c h / 0.45);
  backdrop-filter: blur(14px) saturate(160%);
  -webkit-backdrop-filter: blur(14px) saturate(160%);
  border-color: oklch(from var(--white) l c h / 0.65);
}

.qshero-cta,
.qshero-cta:hover {
  position: relative;
  z-index: 0;
  margin-bottom: var(--space-5);
  background: transparent;
}
/* Mesmo efeito "sumindo para o lado" do CTA da seção "Nossa missão": fundo
   isolado num ::before, para a mask-image não esmaecer o texto/ícone
   junto com o fundo. */
.qshero-cta::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0;
  border-radius: var(--radius-md);
  background: var(--accent);
  border: var(--border-width-md) solid var(--accent);
  /* mask-image em si não é animável — por isso a máscara fica sempre
     presente (200% de largura) e só sua *posição* se move no hover, que
     é uma propriedade que o navegador consegue transicionar de verdade,
     dando o "sumindo para o lado" gradual em vez do corte instantâneo. */
  mask-image: linear-gradient(90deg, #000 0%, #000 50%, transparent 100%);
  -webkit-mask-image: linear-gradient(90deg, #000 0%, #000 50%, transparent 100%);
  mask-size: 200% 100%;
  -webkit-mask-size: 200% 100%;
  mask-repeat: no-repeat;
  -webkit-mask-repeat: no-repeat;
  mask-position: 0% 0;
  -webkit-mask-position: 0% 0;
  transition: opacity 0.28s ease, border-color 0.28s ease, mask-position 0.35s ease, -webkit-mask-position 0.35s ease;
}
.qshero-cta:hover::before {
  border-color: var(--white);
  mask-position: 100% 0;
  -webkit-mask-position: 100% 0;
}
/* "Nossa missão" (Quem Somos) — moldura de foto assimétrica com borda
   deslocada atrás + card flutuante no canto + 3 pilares com ícone, no
   estilo de referência de outro projeto (site-paulo), adaptado às cores
   e conteúdo da Samartino. */
.qs-section { position: relative; overflow: hidden; isolation: isolate; background: var(--bg-surface-1); padding: 100px 0; }
.qs-section:not(.qs-section--light) .eyebrow { color: var(--white); }
.qs-section::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  background-image: url('../images/textura-mesclada.webp');
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  opacity: 0.1;
  pointer-events: none;
}
.qs-section::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  background:
    linear-gradient(180deg, rgba(0, 0, 0, 0.6) 0%, transparent 30%, transparent 70%, rgba(0, 0, 0, 0.6) 100%),
    linear-gradient(90deg, rgba(0, 0, 0, 0.45) 0%, transparent 20%, transparent 80%, rgba(0, 0, 0, 0.45) 100%);
  pointer-events: none;
}
.qs-section__grid {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  align-items: center;
  gap: clamp(40px, 5vw, 80px);
}
.qs-media { position: relative; padding: 0 28px 28px 0; }
.qs-media__frame {
  position: absolute;
  top: 28px;
  left: 28px;
  right: 0;
  bottom: 0;
  background: oklch(from var(--accent) calc(l - 0.025) c h);
  border: 1px solid oklch(from var(--white) l c h / 0.35);
  border-radius: var(--radius-xl);
  pointer-events: none;
}
.qs-media__photo {
  position: relative;
  aspect-ratio: 4 / 5;
  border-radius: var(--radius-xl);
  overflow: hidden;
  box-shadow: var(--shadow-lg);
}
.qs-media__photo .placeholder-image { height: 100%; }
.qs-media__card {
  position: absolute;
  bottom: -4px;
  right: -4px;
  display: flex;
  align-items: center;
  gap: var(--space-3);
  background: var(--surface-card-dark);
  border: 1px solid oklch(from var(--accent) l c h / 0.4);
  border-radius: var(--radius-lg);
  padding: 14px 18px;
  box-shadow: var(--shadow-lg);
  max-width: 280px;
}
.qs-media__card-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  flex-shrink: 0;
  border-radius: 50%;
  background: var(--navy-tint-12);
  border: 1px solid oklch(from var(--accent) l c h / 0.4);
  color: var(--accent);
}
.qs-media__card-text { font-size: var(--text-body-sm); color: var(--text-on-dark-secondary); line-height: var(--leading-snug); }
.qs-media__card-text strong { display: block; color: var(--white); font-weight: var(--weight-bold); }
.qs-content { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-4); min-width: 0; }
.qs-content > * { max-width: 100%; }
.qs-content .eyebrow { margin-bottom: calc(var(--space-4) * -0.6); font-size: 12px; }
.qs-content__title { font-size: 34px; margin: 0 0 var(--space-3); }
.qs-content__title--spaced { margin-top: var(--space-3); }
.qs-content__text { font-size: var(--text-body-md); color: var(--text-on-dark-secondary); line-height: var(--leading-normal); max-width: 540px; margin: 0; }

.qs-destaque {
  margin: var(--space-4) 0 0;
  max-width: 540px;
  padding: var(--space-4) var(--space-5);
  border-left: 2px solid oklch(0.72 0.1 258);
  border-radius: var(--radius-md);
  background: var(--navy-graphite-2);
  font-style: italic;
  font-size: var(--text-body-md);
  color: var(--text-on-dark-secondary);
  line-height: var(--leading-normal);
}

/* Variante clara — usada na alternância de cores da Landing Page do
   Derkiam: fundo branco sólido, texto navy, sem foto/textura de fundo. */
.qs-section--light { background: var(--bg-light); }
.qs-section--light::after { display: none; }
.qs-section--light h2,
.qs-section--light h3 { color: var(--text-on-light-primary); }
.qs-section--light .qs-content__text,
.qs-section--light .solucao-conteudo p,
.qs-section--light .solucao-pontos-list li span.text { color: var(--text-on-light-secondary); }
.qs-section--light .qs-media__frame { border-color: oklch(from var(--accent) l c h / 0.3); }
.qs-section--light .qs-media__card { background: var(--surface-card-light); border-color: var(--border-on-light); }
.qs-section--light .qs-media__card-text { color: var(--text-on-light-secondary); }
.qs-section--light .qs-media__card-text strong { color: var(--text-on-light-primary); }
.qs-section--light .qs-pillars { border-top-color: var(--border-on-light); }
.qs-pillars {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-4);
  width: 100%;
  margin-top: var(--space-3);
  padding-top: var(--space-6);
  border-top: 1px solid oklch(from var(--accent) l c h / 0.25);
}
.qs-pillar { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-3); }
.qs-content__cta,
.qs-content__cta:hover {
  position: relative;
  z-index: 0;
  margin-top: var(--space-6);
  padding: 0.85rem 1.75rem;
  gap: 10px;
  background: transparent;
  border-radius: 14px;
  border-color: transparent;
}
.qs-content__cta::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0;
  border-radius: 14px;
  background: var(--accent);
  border: 1px solid oklch(from var(--white) l c h / 0.5);
  transition: background 0.28s ease;
}
.qs-content__cta:hover::before {
  background: oklch(0.3 0.13 258);
}
.qs-pillar__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: var(--radius-md);
  background: var(--navy-tint-12);
  border: 1px solid oklch(from var(--accent) l c h / 0.35);
  color: var(--accent);
  transition: background 0.28s ease, transform 0.28s ease;
}
.qs-pillar:hover .qs-pillar__icon { background: oklch(from var(--accent) l c h / 0.22); transform: translateY(-3px); }
.qs-pillar__label { font-size: var(--text-body-sm); font-weight: var(--weight-bold); color: var(--white); }
@media (max-width: 860px) {
  .qs-section__grid { grid-template-columns: 1fr; gap: 56px; }
  .qs-media { margin-right: 8px; }
  .qs-media__card { right: 4px; bottom: -12px; padding: 12px 16px; }
  .qs-pillars { grid-template-columns: 1fr; gap: var(--space-5); }
  .qs-pillar { flex-direction: row; align-items: center; }
}

/* Soluções (página) — cabeçalho centralizado + grid de cards */
.solucoes-header { display: flex; flex-direction: column; align-items: center; text-align: center; max-width: 720px; min-width: 0; margin: 0 auto var(--space-7); }
.solucoes-header > * { min-width: 0; max-width: 100%; }
.solucoes-header .eyebrow { margin-bottom: calc(var(--space-4) * -0.6); font-size: 15px; letter-spacing: 0.12em; }
.solucoes-header__title { font-size: 38px; margin: 0 0 var(--space-4); }
.solucoes-header__title-accent { color: var(--accent); }
.solucoes-header__text { font-size: var(--text-body-md); color: var(--text-on-dark-secondary); margin: 0; }

.solucoes-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-5); }
.solucao-grid-card {
  display: flex;
  flex-direction: column;
  background: var(--bg-surface-2);
  border: 1px solid var(--border-on-dark-strong);
  border-radius: var(--radius-lg);
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  box-shadow: var(--shadow-md);
  transition: border-color 0.28s ease, transform 0.28s ease, box-shadow 0.28s ease;
}
.solucao-grid-card:hover { border-color: var(--accent); transform: translateY(-4px); box-shadow: var(--shadow-lg); }
.solucao-grid-card[hidden] { display: none; }
.solucao-grid-card__media { position: relative; aspect-ratio: 16/10; background: var(--bg-surface-2); overflow: hidden; }
.solucao-grid-card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  filter: saturate(0.85) brightness(0.82) contrast(1.02);
  transition: transform 0.6s ease, filter 0.6s ease;
}
.solucao-grid-card:hover .solucao-grid-card__media img { transform: scale(1.05); filter: saturate(0.95) brightness(0.9) contrast(1.02); }
.solucao-grid-card__media::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(2, 3, 5, 0.1) 0%, rgba(2, 3, 5, 0.4) 100%);
  pointer-events: none;
}
.solucao-grid-card__icon {
  position: absolute;
  top: var(--space-3);
  left: var(--space-3);
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: var(--radius-md);
  background: var(--accent);
  color: var(--white);
  box-shadow: var(--shadow-sm);
  transition: background 0.28s ease, color 0.28s ease;
}
.solucao-grid-card:hover .solucao-grid-card__icon { background: var(--white); color: var(--accent); }
.solucao-grid-card__body { padding: var(--space-5); display: flex; flex-direction: column; flex: 1; }
.solucao-grid-card__body h3 { font-size: var(--text-body-lg); margin: 0 0 var(--space-2); }
.solucao-grid-card__body p { font-size: var(--text-body-sm); color: var(--text-on-dark-secondary); line-height: var(--leading-normal); margin: 0 0 var(--space-4); flex: 1; }
.solucao-grid-card__link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: var(--text-body-sm);
  font-weight: var(--weight-bold);
  color: var(--accent);
}
.solucao-grid-card__link svg { transition: transform 0.28s ease; }
.solucao-grid-card:hover .solucao-grid-card__link svg { transform: translateX(4px); }

/* Variante clara — usada na alternância de cores da Landing Page do
   Derkiam: cabeçalho e cards em tom claro em vez de escuro. */
.solucoes-header--light .solucoes-header__title { color: var(--text-on-light-primary); }
.solucoes-header--light .solucoes-header__text { color: var(--text-on-light-secondary); }
.solucao-grid-card--light {
  background: var(--surface-card-light);
  border-color: var(--border-on-light);
  box-shadow: var(--shadow-card);
}
.solucao-grid-card--light .solucao-grid-card__media { background: var(--bg-light); }
.solucao-grid-card--light .solucao-grid-card__body h3 { color: var(--text-on-light-primary); }
.solucao-grid-card--light .solucao-grid-card__body p { color: var(--text-on-light-secondary); }

/* Cards comparativos (2 colunas) — usado em "O que é e para quem é o
   BPC/LOAS": cada card tem um título e uma lista de itens com ícone,
   igual ao padrão "Com/Sem" de referência, adaptado às cores do Derkiam
   (cards sólidos claros em vez de vidro fosco sobre foto). */
.compare-cards {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-5);
}
.compare-card {
  padding: var(--space-6) var(--space-5);
  border-radius: var(--radius-lg);
  border: 1px solid var(--accent);
  background: oklch(from var(--white) l c h / 0.6);
  backdrop-filter: blur(10px) saturate(140%);
  -webkit-backdrop-filter: blur(10px) saturate(140%);
  box-shadow: var(--shadow-card);
  transition: background 0.28s ease, border-color 0.28s ease, backdrop-filter 0.28s ease;
}
.compare-card:hover {
  background: var(--accent);
  backdrop-filter: blur(16px) saturate(160%);
  -webkit-backdrop-filter: blur(16px) saturate(160%);
  border-color: var(--white);
}
.compare-card__title { font-size: var(--text-body-lg); margin: 0 0 var(--space-5); color: var(--text-on-light-primary); transition: color 0.28s ease; }
.compare-card:hover .compare-card__title { color: var(--white); }
.compare-card__list { display: flex; flex-direction: column; gap: var(--space-4); }
.compare-card__list li { display: flex; align-items: center; gap: var(--space-3); }
.compare-card__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  flex-shrink: 0;
  border-radius: var(--radius-sm);
  background: var(--bg-light);
  color: var(--accent);
  transition: background 0.28s ease, color 0.28s ease;
}
.compare-card:hover .compare-card__icon { background: var(--white); color: var(--accent); }
.compare-card__list li span.text { font-size: var(--text-body-sm); color: var(--navy-black); line-height: var(--leading-normal); transition: color 0.28s ease; }
.compare-card:hover .compare-card__list li span.text { color: var(--white); }
@media (max-width: 780px) {
  .compare-cards { grid-template-columns: 1fr; }
}

/* Variante clara — usada na alternância de cores da Landing Page do
   Derkiam: vidro fosco neutro em repouso; ao passar o mouse, o vidro
   ganha tom azul (glassmorphism azulado). */
.compare-cards--light .compare-card {
  position: relative;
  overflow: hidden;
  background: oklch(from var(--accent) l c h / 0.06);
  border: 1px solid oklch(from var(--white) l c h / 0.8);
  backdrop-filter: blur(16px) saturate(160%);
  -webkit-backdrop-filter: blur(16px) saturate(160%);
  box-shadow: inset 0 1px 0 oklch(from var(--white) l c h / 0.9), inset 0 0 0 1px oklch(from var(--white) l c h / 0.3), 0 12px 32px oklch(from var(--navy-black) l c h / 0.12);
  transition: background 0.28s ease, border-color 0.28s ease, box-shadow 0.28s ease;
}
.compare-cards--light .compare-card::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, oklch(from var(--white) l c h / 0.65) 0%, transparent 55%);
  pointer-events: none;
}
.compare-cards--light .compare-card:hover {
  background: oklch(from var(--accent) l c h / 0.16);
  border-color: oklch(from var(--accent) l c h / 0.5);
  box-shadow: inset 0 1px 0 oklch(from var(--white) l c h / 0.6), inset 0 0 0 1px oklch(from var(--accent) l c h / 0.25), 0 12px 36px oklch(from var(--accent) l c h / 0.22);
}
.compare-cards--light .compare-card__title { color: var(--text-on-light-primary); }
.compare-cards--light .compare-card__list li span.text { color: var(--text-on-light-secondary); }
.compare-cards--light .compare-card__icon { background: var(--bg-light); color: var(--accent); transition: background 0.28s ease; }
.compare-cards--light .compare-card:hover .compare-card__icon { background: oklch(from var(--accent) l c h / 0.16); }

/* Bloco de CTA que preenche as 2 vagas da última fileira do grid 3x3 —
   foto de fundo + overlay escuro, mesmo peso visual (photo card) dos cards
   de solução vizinhos, em vez de texto "solto" sem contenção. */
.solucao-cta-photo {
  grid-column: span 2;
  position: relative;
  display: flex;
  align-items: center;
  overflow: hidden;
  border-radius: var(--radius-lg);
  border: 1px solid var(--border-on-dark-strong);
  text-decoration: none;
  color: inherit;
  min-height: 260px;
  box-shadow: var(--shadow-md);
  transition: border-color 0.28s ease, transform 0.28s ease, box-shadow 0.28s ease;
}
.solucao-cta-photo:hover { border-color: var(--accent); transform: translateY(-4px); box-shadow: var(--shadow-lg); }
.solucao-cta-photo img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0.18;
  filter: saturate(0.8) contrast(1.05);
  transition: transform 0.6s ease;
}
.solucao-cta-photo:hover img { transform: scale(1.05); }
.solucao-cta-photo::before {
  content: '';
  position: absolute;
  inset: 0;
  background: oklch(from var(--surface-card-dark) l c h / 0.55);
  backdrop-filter: blur(10px) saturate(130%);
  -webkit-backdrop-filter: blur(10px) saturate(130%);
  pointer-events: none;
  z-index: -1;
}
.solucao-cta-photo__content { position: relative; z-index: 1; padding: var(--space-6); max-width: 480px; display: flex; flex-direction: column; align-items: flex-start; }
.solucao-cta-photo__content .eyebrow { margin-bottom: var(--space-2); }
.solucao-cta-photo__title { font-size: 28px; line-height: 1.2; margin: 0 0 var(--space-3); color: var(--white); }
.solucao-cta-photo__title-accent { color: var(--accent); }
.solucao-cta-photo__text { font-size: var(--text-body-md); color: var(--text-on-dark-secondary); margin: 0 0 var(--space-5); }
@media (max-width: 720px) {
  .solucao-cta-photo { grid-column: span 1; min-height: 220px; }
  .solucao-cta-photo__content { max-width: 100%; }
}

/* ---------------------------------------------------------------------
   8. Formulário de contato
   --------------------------------------------------------------------- */
.contact-grid { display: grid; grid-template-columns: 1fr 1.2fr; gap: var(--space-8); }
.contact-info { display: flex; flex-direction: column; gap: var(--space-5); }
.contact-info__item { display: flex; gap: var(--space-4); align-items: flex-start; }
.contact-info__label { font-size: var(--text-caption); color: var(--text-on-dark-muted); text-transform: uppercase; letter-spacing: var(--tracking-wide); }
.contact-info__value { font-size: var(--text-body-md); color: var(--white); font-weight: var(--weight-bold); }

/* Formulário + mapa (Home) — cada coluna com seu próprio eyebrow/título/texto
   (em vez de um cabeçalho único centralizado acima do grid), separadas por
   uma linha vertical fina. */
.contato-mapa-grid { display: grid; grid-template-columns: 1fr auto 1fr; gap: var(--space-8); align-items: stretch; }
.contato-mapa-grid__col { min-width: 0; display: flex; flex-direction: column; }
.contato-mapa-grid__col .eyebrow { margin-bottom: var(--space-3); }
.contato-mapa-grid__title { margin: 0 0 var(--space-4); font-size: var(--size-display-md); }
.contato-mapa-grid__text { font-size: var(--text-body-md); color: var(--text-on-dark-secondary); line-height: var(--leading-normal); margin: 0 0 var(--space-6); max-width: 46ch; }
.contato-mapa-grid__divider { width: 1px; align-self: stretch; background: var(--border-on-dark); }
@media (max-width: 900px) {
  .contato-mapa-grid { grid-template-columns: 1fr; }
  .contato-mapa-grid__divider { display: none; }
}
.mapa-wrapper { border-radius: var(--radius-lg); overflow: hidden; border: 1px solid var(--accent); flex: 1; min-height: 260px; }
.mapa-wrapper iframe { width: 100%; height: 100%; border: 0; display: block; }

/* Variante clara — usada na alternância de cores da Landing Page do
   Derkiam: título/texto em navy, divisor e formulário em tom claro. */
.contato-mapa-grid--light .contato-mapa-grid__title { color: var(--text-on-light-primary); }
.contato-mapa-grid--light .contato-mapa-grid__text { color: var(--text-on-light-secondary); }
.contato-mapa-grid--light .contato-mapa-grid__divider { background: var(--border-on-light); }
.contato-mapa-grid--light .form-card { background: var(--surface-card-light); border-color: var(--border-on-light); box-shadow: var(--shadow-card); }
.contato-mapa-grid--light .field span.label { color: var(--text-on-light-primary); }
.contato-mapa-grid--light .field input,
.contato-mapa-grid--light .field select,
.contato-mapa-grid--light .field textarea {
  border-color: var(--border-on-light);
  background: var(--bg-light);
  color: var(--text-on-light-primary);
}
.contato-mapa-grid--light .field-check { color: var(--text-on-light-secondary); }
.contato-mapa-grid--light .form-success p { color: var(--text-on-light-secondary); }
.contato-mapa-grid--light .select-custom__trigger { border-color: var(--border-on-light); background: var(--bg-light); color: var(--text-on-light-primary); }
.contato-mapa-grid--light .select-custom.has-value .select-custom__trigger { color: var(--text-on-light-primary); }

.form-card { background: var(--surface-card-dark); border: 1px solid var(--border-on-dark); border-radius: var(--radius-lg); padding: var(--space-5); }
.form-contato { display: flex; flex-direction: column; gap: var(--space-4); }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-4); }
.field { display: flex; flex-direction: column; gap: 6px; }
.field span.label { font-size: var(--text-body-sm); font-weight: var(--weight-bold); color: var(--white); }
.field input,
.field select,
.field textarea {
  padding: 0.6rem 0.85rem;
  border-radius: var(--radius-sm);
  border: 1.5px solid var(--border-on-dark-strong);
  background: oklch(from var(--white) l c h / 0.04);
  color: var(--white);
  font-size: var(--text-body-sm);
  outline: none;
  width: 100%;
}
.field select:invalid { color: var(--text-on-dark-muted); }
.field input:focus,
.field select:focus,
.field textarea:focus { border-color: var(--accent); }

/* Autofill do navegador (ex.: telefone/e-mail salvos) pinta o campo com um
   fundo próprio ignorando o `background` acima — a técnica do "box-shadow
   inset" força a cor de fundo real por baixo do fundo que o navegador injeta,
   e a transição do -webkit-text-fill-color evita o "flash" de cor errada. */
.field input:-webkit-autofill,
.field input:-webkit-autofill:hover,
.field input:-webkit-autofill:focus {
  -webkit-text-fill-color: var(--white);
  -webkit-box-shadow: 0 0 0 1000px oklch(from var(--white) l c h / 0.04) inset;
  box-shadow: 0 0 0 1000px oklch(from var(--white) l c h / 0.04) inset;
  transition: background-color 9999s ease-in-out 0s;
}
.contato-mapa-grid--light .field input:-webkit-autofill,
.contato-mapa-grid--light .field input:-webkit-autofill:hover,
.contato-mapa-grid--light .field input:-webkit-autofill:focus {
  -webkit-text-fill-color: var(--text-on-light-primary);
  -webkit-box-shadow: 0 0 0 1000px var(--bg-light) inset;
  box-shadow: 0 0 0 1000px var(--bg-light) inset;
}

/* Dropdown customizado: o <select> nativo continua no DOM (oculto, mas
   funcional) para manter name/required/validação/FormData intactos — só a
   lista visual é substituída, já que o navegador não deixa estilizar as
   <option> de um select nativo (cor de fundo/hover do dropdown é controlado
   pelo SO, não pelo CSS do site). */
.select-custom { position: relative; }
.select-custom__native {
  position: absolute;
  inset: 0;
  opacity: 0;
  pointer-events: none;
}
.select-custom__trigger {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2);
  padding: 0.6rem 0.85rem;
  border-radius: var(--radius-sm);
  border: 1.5px solid var(--border-on-dark-strong);
  background: oklch(from var(--white) l c h / 0.04);
  color: var(--text-on-dark-muted);
  font-size: var(--text-body-sm);
  font-family: inherit;
  cursor: pointer;
  width: 100%;
}
.select-custom__trigger svg { flex-shrink: 0; transition: transform 0.28s ease; }
.select-custom.is-open .select-custom__trigger svg { transform: rotate(180deg); }
.select-custom.has-value .select-custom__trigger { color: var(--white); }
.select-custom.is-open .select-custom__trigger { border-color: var(--accent); }
.select-custom__list {
  position: absolute;
  z-index: 10;
  top: calc(100% + 4px);
  left: 0;
  right: 0;
  margin: 0;
  padding: 4px;
  list-style: none;
  background: var(--white);
  border-radius: var(--radius-sm);
  box-shadow: var(--shadow-lg);
  overflow: hidden;
}
.select-custom__list li {
  padding: 0.65rem 0.85rem;
  color: var(--navy-black);
  font-size: var(--text-body-sm);
  border-bottom: 1px solid oklch(from var(--navy-black) l c h / 0.08);
  cursor: pointer;
  transition: background 0.12s ease, color 0.12s ease;
}
.select-custom__list li:last-child { border-bottom: none; }
.select-custom__list li:hover,
.select-custom__list li.is-active {
  background: var(--accent);
  color: var(--white);
}
.field textarea { resize: vertical; }

.field-check { display: flex; align-items: center; gap: 10px; font-size: var(--text-body-sm); color: var(--text-on-dark-secondary); }
.field-check input { width: 20px; height: 20px; accent-color: var(--accent); flex-shrink: 0; }

.honeypot-field { position: absolute; left: -9999px; top: -9999px; }

.form-recaptcha-note { margin-top: 10px; font-size: 12px; line-height: 1.5; color: var(--text-on-dark-secondary); opacity: 0.7; }
.form-recaptcha-note a { color: inherit; text-decoration: underline; }
.contato-mapa-grid--light .form-recaptcha-note { color: var(--text-on-light-secondary); }

.form-msg { border-radius: var(--radius-sm); padding: var(--space-4); font-size: var(--text-body-sm); margin-bottom: var(--space-5); display: none; }
.form-msg.is-visible { display: block; }
.form-msg--success { background: oklch(from var(--status-success) l c h / 0.15); color: var(--status-success); border: 1px solid oklch(from var(--status-success) l c h / 0.35); }
.form-msg--error { background: oklch(from var(--status-danger) l c h / 0.15); color: var(--status-danger); border: 1px solid oklch(from var(--status-danger) l c h / 0.35); }

.form-success { text-align: center; padding: var(--space-7) 0; }
.form-success h3 { margin: 0 0 var(--space-2); color: var(--text-on-dark-primary, #fff); }
.form-success p { color: var(--text-on-dark-secondary); margin: 0; }
.contato-mapa-grid--light .form-success h3 { color: var(--text-on-light-primary, #111); }

/* ---------------------------------------------------------------------
   9. WhatsApp float (bolha + janela de chat)
   A bolha começa oculta: a janela abre sozinha alguns segundos após o
   carregamento (ver script em component-whatsapp-float.php). Ao fechar a
   janela, ela vira a bolha flutuante de novo — mesmo padrão do site-paulo.
   --------------------------------------------------------------------- */
.whatsapp-float {
  position: fixed;
  right: var(--space-5);
  bottom: var(--space-5);
  z-index: 50;
  width: 56px;
  height: 56px;
  border: none;
  border-radius: 50%;
  background: var(--accent);
  color: var(--white);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: var(--shadow-md);
  cursor: pointer;
  opacity: 0;
  transform: scale(0.8);
  pointer-events: none;
  transition: background 0.28s ease, transform 0.28s ease, box-shadow 0.28s ease, opacity 0.28s ease;
}
.whatsapp-float.is-visible {
  opacity: 1;
  transform: scale(1);
  pointer-events: auto;
}
.whatsapp-float:hover {
  background: var(--accent-hover);
  transform: scale(1) translateY(-3px);
  box-shadow: 0 8px 24px oklch(from var(--accent) l c h / 0.45);
}
.whatsapp-float:active { transform: scale(0.96); }

.whatsapp-widget {
  position: fixed;
  right: var(--space-5);
  bottom: 100px;
  width: 340px;
  max-width: calc(100vw - 32px);
  background:
    linear-gradient(135deg, oklch(from var(--accent) l c h / 0.2) 0%, transparent 75%),
    rgba(20, 20, 22, 0.4);
  backdrop-filter: blur(24px) saturate(160%);
  -webkit-backdrop-filter: blur(24px) saturate(160%);
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  overflow: hidden;
  z-index: 50;
  opacity: 0;
  transform: translateY(16px);
  pointer-events: none;
  transition: opacity 0.2s ease, transform 0.2s ease;
}
.whatsapp-widget.is-visible {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}
.whatsapp-widget__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--space-4) var(--space-5);
  background: var(--accent);
  color: var(--white);
  font-weight: var(--weight-bold);
  font-size: var(--text-body-sm);
}
.whatsapp-widget__brand {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}
.whatsapp-widget__brand img { flex-shrink: 0; }
.whatsapp-widget__close {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  border: none;
  background: rgba(255, 255, 255, 0.2);
  color: var(--white);
  cursor: pointer;
  flex-shrink: 0;
}
.whatsapp-widget__body {
  padding: var(--space-5);
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  background: transparent;
}
.whatsapp-widget__bubble {
  background: rgba(255, 255, 255, 0.18);
  border-radius: var(--radius-md);
  padding: var(--space-3) var(--space-4);
  font-size: var(--text-body-sm);
  color: var(--white);
  line-height: var(--leading-normal);
  box-shadow: 0 1px 2px rgba(2, 3, 5, 0.15);
}
.whatsapp-widget__cta {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  margin-top: var(--space-1);
  padding: 14px var(--space-5);
  background: var(--accent);
  color: var(--white);
  border: 1px solid transparent;
  border-radius: var(--radius-pill);
  text-decoration: none;
  font-weight: var(--weight-bold);
  font-size: var(--text-body-sm);
  align-self: flex-end;
  transition: background 0.28s ease, transform 0.28s ease, box-shadow 0.28s ease, border-color 0.28s ease;
}
.whatsapp-widget__cta:hover {
  background: var(--accent-hover);
  transform: translateY(-3px);
  box-shadow: 0 8px 24px oklch(from var(--accent) l c h / 0.45);
}
.whatsapp-widget__cta:active { transform: scale(0.97); }
@media (max-width: 480px) {
  .whatsapp-widget { right: 12px; bottom: 80px; width: calc(100vw - 24px); max-width: 300px; }
  .whatsapp-widget__header { padding: var(--space-3) var(--space-4); }
  .whatsapp-widget__body { padding: var(--space-4); gap: var(--space-2); }
  .whatsapp-widget__bubble { padding: var(--space-2) var(--space-3); font-size: 13px; }
  .whatsapp-widget__cta { padding: 12px var(--space-4); font-size: 13px; }
}

/* ---------------------------------------------------------------------
   10. Footer
   --------------------------------------------------------------------- */
.site-footer {
  position: relative;
  background: linear-gradient(180deg, var(--accent) 0%, oklch(from var(--accent) calc(l + 0.06) c h) 100%);
  border-top: 1px solid rgba(255, 255, 255, 0.18);
}
.site-footer::before {
  content: "";
  position: absolute;
  top: -1px;
  left: 0;
  right: 0;
  height: 2px;
  background: linear-gradient(90deg,
    oklch(from var(--accent) l c h / 0) 0%,
    var(--accent) 50%,
    oklch(from var(--accent) l c h / 0) 100%
  );
}
/* 12 colunas do grid de referência: marca e contato (conteúdo mais longo)
   com 4 cada, navegação e serviços (listas curtas de links) com 2 cada.
   Gap reduzido (var(--space-5), não var(--space-7)): com repeat(12,1fr) o
   gap se aplica 11 vezes internamente (entre as 12 faixas, mesmo as
   absorvidas dentro de cada span), então um valor grande consome espaço
   demais e desalinha as colunas em relação ao grid de referência. */
/* Padding vertical em longhand, NUNCA shorthand: este elemento também leva a
   classe .container, e um "padding: X 0 Y" zeraria o padding lateral do
   container — era isso que deixava o rodapé 64px mais largo que as demais
   seções em cada lado, vazando da grade de referência. */
.footer-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: var(--space-5); padding-top: var(--space-8); padding-bottom: var(--space-6); }
/* min-width:0 é obrigatório: itens de grid têm min-width:auto por padrão, o
   que impede a faixa de encolher abaixo do conteúdo sem quebra (era isso que
   fazia a coluna de contato estourar o container em vez de quebrar linha). */
.footer-grid > * { min-width: 0; }
/* 4+2+3+3: "Serviços" precisa de 3 colunas para os itens ("Instalação de
   equipamentos", "Prevenção contra incêndio") caberem em 1 linha; "Contato"
   fica com 3, o que faz o endereço quebrar em 2 linhas (intencional). */
.footer-brand { grid-column: span 5; }
.footer-servicos { grid-column: span 3; }
.footer-contato { grid-column: span 4; }
/* footer-brand ocupa 4 das 12 colunas do grid; 87,5% disso = colunas 1, 2, 3
   e metade da 4. height:auto preserva a proporção original da imagem. */
.footer-brand__logo { width: 87.5%; height: auto; margin-bottom: var(--space-4); }
.footer-brand p { color: var(--text-on-dark-secondary); font-size: var(--text-body-sm); line-height: var(--leading-relaxed); max-width: 320px; }
.footer-col-title { color: var(--white); font-weight: var(--weight-bold); font-size: var(--text-body-sm); margin-bottom: var(--space-4); }
.footer-links { display: flex; flex-direction: column; gap: var(--space-3); }
.footer-links a, .footer-links span { color: var(--text-on-dark-secondary); font-size: var(--text-body-sm); }
.footer-links a:hover { color: var(--gray); }
/* align-items:flex-start (não center) para o ícone ficar colado na 1ª linha
   quando o texto quebra em 2+ linhas. min-width:0 + flex:1 no texto é o que
   efetivamente permite a quebra — flex items têm min-width:auto por padrão,
   travando a largura no tamanho da linha inteira sem quebrar, o que causava
   o overflow (era isso que vazava a coluna de contato 64px pra fora do
   container: o endereço não conseguia quebrar linha). */
.footer-contact-item { display: flex; align-items: center; gap: 8px; }
.footer-contact-item svg { flex-shrink: 0; }
.footer-contact-item__text { min-width: 0; flex: 1; overflow-wrap: break-word; word-break: break-word; }
a.footer-contact-item__text:hover { color: var(--gray); }
/* Mesmo cuidado do .footer-grid: padding vertical em longhand para não zerar
   o padding lateral do .container. A linha divisória vira um ::before (filho
   do content box) em vez de border-top no elemento — border atravessaria a
   largura total do container (1280px), vazando 64px além da grade de cada lado. */
.footer-bottom { padding-bottom: var(--space-4); color: var(--white); font-size: var(--text-caption); text-align: center; }
.footer-bottom::before { content: ""; display: block; border-top: 1px solid var(--border-on-dark); margin-bottom: var(--space-4); }
.footer-bottom a { color: var(--white); }
.footer-bottom a:hover { color: var(--text-on-dark-secondary); }
.site-footer__credit { color: var(--white); font-weight: var(--weight-bold); }
.site-footer__credit:hover { opacity: 0.8; }

/* ---------------------------------------------------------------------
   11. Blog (index / single)
   --------------------------------------------------------------------- */
.blog-header { background: var(--navy-black); padding: 80px 0; }

.post-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-5); padding: var(--space-8) 0; }
.post-card { background: var(--surface-card-dark); border: 1px solid var(--border-on-dark); border-radius: var(--radius-lg); overflow: hidden; display: flex; flex-direction: column; transition: box-shadow 0.2s ease, transform 0.2s ease; }
.post-card:hover { box-shadow: var(--shadow-lg); transform: translateY(-2px); }
.post-card__thumb { aspect-ratio: 16/9; overflow: hidden; background: var(--bg-surface-2); }
.post-card__thumb img { width: 100%; height: 100%; object-fit: cover; }
.post-card__body { padding: var(--space-5); display: flex; flex-direction: column; gap: var(--space-2); flex: 1; }
.post-card__meta { font-size: var(--text-body-sm); color: var(--text-on-dark-muted); text-transform: uppercase; letter-spacing: var(--tracking-wide); }
.post-card__title { font-size: var(--size-h3); }
.post-card__title a:hover { color: var(--gray); }
.post-card__excerpt { font-size: var(--text-body-sm); color: var(--text-on-dark-secondary); line-height: var(--leading-normal); }

/* Listagem completa do blog (index.php) — card mais editorial que o
   .post-card da prévia da Home: tag de categoria+data, título maior,
   link "Ler artigo" com seta, elevação mais pronunciada no hover. */
.article-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-5); padding: 0 0 var(--space-6); }
.article-card {
  display: flex;
  flex-direction: column;
  text-decoration: none;
  background: var(--bg-surface-2);
  border: 1px solid var(--border-on-dark-strong);
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-md);
  transition: box-shadow 0.2s ease, transform 0.2s ease, border-color 0.2s ease;
}
.article-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-lg);
  border-color: var(--navy-tint-20);
}
.article-card__image { aspect-ratio: 16/10; overflow: hidden; background: var(--bg-surface-2); }
.article-card__image img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.3s ease; }
.article-card:hover .article-card__image img { transform: scale(1.05); }
.article-card__body { padding: var(--space-5); display: flex; flex-direction: column; gap: var(--space-2); flex: 1; }
.article-card__tag {
  display: inline-flex;
  align-items: center;
  align-self: flex-start;
  padding: 4px 12px;
  border-radius: var(--radius-pill);
  background: var(--navy-tint-12);
  color: var(--accent);
  font-size: var(--text-caption);
  font-weight: var(--weight-bold);
  text-transform: uppercase;
  letter-spacing: var(--tracking-wide);
  margin-bottom: var(--space-1);
}
.article-card__title { font-size: var(--size-display-sm); line-height: var(--leading-snug); color: var(--text-on-dark-primary); }
.article-card__desc { font-size: var(--text-body-sm); color: var(--text-on-dark-secondary); line-height: var(--leading-normal); flex: 1; }
.article-card__link {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  margin-top: var(--space-2);
  color: var(--accent);
  font-size: var(--text-body-sm);
  font-weight: var(--weight-bold);
}
.article-card__link svg { transition: transform 0.28s ease; }
.article-card:hover .article-card__link svg { transform: translateX(4px); }

.pagination { display: flex; gap: var(--space-2); justify-content: center; padding-bottom: var(--space-8); flex-wrap: wrap; }
.blog-carregar-mais { text-align: center; margin-top: var(--space-7); }
.pagination a, .pagination span { display: inline-flex; align-items: center; justify-content: center; min-width: 40px; height: 40px; border-radius: var(--radius-sm); border: 1px solid var(--border-on-dark); color: var(--text-on-dark-secondary); font-size: var(--text-body-sm); padding: 0 var(--space-3); }
.pagination .current { background: var(--accent); border-color: var(--accent); color: var(--white); }
.pagination a:hover { border-color: var(--accent); color: var(--white); }

.post-nav { display: flex; justify-content: space-between; gap: var(--space-4); padding-top: var(--space-7); margin-top: var(--space-7); border-top: 1px solid var(--border-on-dark); }
.post-nav a { color: var(--text-on-dark-secondary); font-size: var(--text-body-sm); max-width: 45%; }
.post-nav a:hover { color: var(--gray); }

.no-results { padding: var(--space-8) 0; color: var(--text-on-dark-secondary); }

/* ---------------------------------------------------------------------
   11.5 Reveal ao rolar (fade + subida sutil, aplicado via JS)
   A classe .js-reveal só é adicionada pelo JavaScript — sem JS, nada fica
   oculto. Quem prefere movimento reduzido (prefers-reduced-motion) vê tudo
   estático, sem animação.
   --------------------------------------------------------------------- */
.js-reveal { opacity: 0; transform: translateY(32px); transition: opacity 1.4s cubic-bezier(0.16, 1, 0.3, 1), transform 1.4s cubic-bezier(0.16, 1, 0.3, 1); }
.js-reveal.is-visible { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  .js-reveal { opacity: 1 !important; transform: none !important; transition: none !important; }
}
/* Páginas de Solução: a seção "Sobre o serviço" (2ª seção da página) fica
   sempre visível, sem esperar o scroll — o conteúdo é o primeiro contato
   real com o serviço e não deve parecer "vazio" antes da pessoa rolar. */
.qs-section > .container.js-reveal { opacity: 1 !important; transform: none !important; transition: none !important; }

/* ---------------------------------------------------------------------
   11.7 FAQ (accordion nativo <details>/<summary> + card de WhatsApp)
   --------------------------------------------------------------------- */
.component-faq .solucoes-header { margin-left: 0; align-items: flex-start; text-align: left; }
.component-faq__grid { display: grid; grid-template-columns: 1.4fr 1fr; gap: var(--space-8); align-items: start; }
.component-faq__accordion { display: flex; flex-direction: column; gap: var(--space-3); }
.component-faq__item {
  background: var(--bg-surface-2);
  border: 1px solid var(--border-on-dark-strong);
  border-radius: var(--radius-md);
  overflow: hidden;
  transition: border-color 0.28s ease, box-shadow 0.28s ease;
}
.component-faq__item[open] { border-color: var(--accent); box-shadow: 0 0 0 1px oklch(from var(--accent) l c h / 0.3), 0 6px 16px -6px oklch(from var(--accent) l c h / 0.25); }
.component-faq__item:not([open]):hover { border-color: oklch(from var(--accent) l c h / 0.5); }
.component-faq__trigger {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  padding: var(--space-5) var(--space-6);
  cursor: pointer;
  list-style: none;
  font-family: var(--font-display);
  font-size: var(--text-body-md);
  font-weight: var(--weight-bold);
  color: var(--text-on-dark-primary);
}
.component-faq__trigger::-webkit-details-marker { display: none; }
.component-faq__icon { display: inline-flex; color: var(--accent); flex-shrink: 0; transition: transform 0.28s ease; }
.component-faq__item[open] .component-faq__icon { transform: rotate(45deg); }
.component-faq__item[open] .component-faq__trigger { border-bottom: 1px solid var(--border-on-dark-strong); }
.component-faq__panel { padding: var(--space-4) var(--space-6) var(--space-5); font-size: var(--text-body-sm); line-height: var(--leading-normal); color: var(--text-on-dark-secondary); }
.component-faq__card {
  position: sticky;
  top: 100px;
  background: oklch(from var(--white) l c h / 0.05);
  backdrop-filter: blur(10px) saturate(130%);
  -webkit-backdrop-filter: blur(10px) saturate(130%);
  border: 1px solid var(--border-on-dark-strong);
  border-radius: var(--radius-lg);
  padding: var(--space-6);
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-3);
}
.component-faq__card-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: #25D366;
  color: var(--white);
  margin-bottom: var(--space-2);
}
.component-faq__card-title { font-size: var(--text-body-lg); font-family: var(--font-display); font-weight: var(--weight-bold); margin: 0; }
.component-faq__card-text { font-size: var(--text-body-sm); color: var(--text-on-dark-secondary); line-height: var(--leading-normal); margin: 0; }
.component-faq__card-btn { width: 100%; justify-content: center; margin-top: var(--space-3); }
@media (max-width: 860px) {
  .component-faq__grid { grid-template-columns: 1fr; }
  .component-faq__card { position: static; }
}

/* ---------------------------------------------------------------------
   12. Responsivo
   --------------------------------------------------------------------- */
@media (max-width: 900px) {
  /* Hierarquia tipográfica mobile — reduz H1/H2/H3/eyebrow/lead/botão para
     não passar de 2-3 linhas em telas estreitas. Regras mais específicas
     abaixo (por seção) sobrescrevem estes valores base quando necessário. */
  h1, .h1 { font-size: 26px; }
  h2, .h2 { font-size: 24px; }
  h3, .h3 { font-size: 20px; }
  .eyebrow { font-size: 14px; }
  .text-lg { font-size: 17px; }
  .btn { font-size: 15px; }

  /* Respiro vertical das seções — 100px (desktop) é excessivo em telas
     estreitas e infla demais o scroll da LP; reduz para um valor mais
     compacto, mantendo a hierarquia entre seções mas sem espaços vazios
     enormes entre elas no mobile. */
  .section { padding-top: var(--space-8); padding-bottom: var(--space-8); }
  .solucao-etapas,
  .solucao-diferenciais,
  .qs-section { padding-top: var(--space-8); padding-bottom: var(--space-8); }
  .cta-global { padding: var(--space-6) 0; }

  .solucoes-grid { grid-template-columns: repeat(2, 1fr) !important; }
  .cta-global__icon { display: none !important; }

  /* ------ Mobile: títulos e textos centralizados em todas as seções ------ */
  /* Cabeçalhos de seção (eyebrow + h1/h2 direto no container): o eyebrow é
     inline-flex, então vira um bloco de largura própria centralizado por
     margin auto; títulos com max-width inline também centram por margin auto
     (!important vence o estilo inline "margin: 0 0 ..."). */
  .section .container > .eyebrow { display: flex; width: fit-content; margin-left: auto; margin-right: auto; }
  .section .container > h1,
  .section .container > h2 { text-align: center; margin-left: auto !important; margin-right: auto !important; }

  /* Hero: coluna de texto centralizada, botões lado a lado no centro */
  .hero-content { text-align: center; }
  .hero h1, .hero p { margin-left: auto; margin-right: auto; }
  /* Eyebrow: ícone empilhado ACIMA do texto; o texto fica em 1 linha só —
     em maiúsculas + tracking ele mede ~27x o font-size, então o tamanho se
     auto-ajusta à largura útil ((100vw - respiro)/27,5), sem passar dos
     13px padrão. */
  .hero .eyebrow {
    flex-direction: column;
    gap: 6px;
    font-size: min(var(--text-eyebrow), calc((100vw - var(--container-pad) * 2) / 27.5));
    white-space: nowrap;
  }
  /* Título sempre em 2 linhas: a linha mais longa ("Engenharia que
     protege,") mede 11,9x o font-size na Liszt FY Bold; o tamanho se
     auto-ajusta à largura útil da tela ((100vw - respiro)/12,2), limitado
     ao tamanho padrão de H1 em telas maiores. */
  .hero h1 { font-size: min(var(--size-h1), calc((100vw - var(--container-pad) * 2) / 12.2)); }
  .hero-actions { justify-content: center; }

  /* Quem somos + Diferenciais: desfaz o alinhamento à direita do desktop
     e centraliza tudo */
  .diferenciais-content, .sobre-preview-content { text-align: center !important; }
  /* Título travado em 2 linhas: a linha mais longa ("Compromisso e
     Responsabilidade") mede 16,3x o font-size na Liszt FY Bold, então o
     tamanho se auto-ajusta à largura útil da tela ((100vw - respiro)/16,6),
     sem passar do tamanho padrão de H2 em telas maiores. */
  .diferenciais-content h2 { font-size: min(var(--size-h2), calc((100vw - var(--container-pad) * 2) / 16.6)) !important; }
  .diferenciais-content h2, .sobre-preview-content h2, .sobre-preview-content p { margin-left: auto !important; margin-right: auto !important; }
  /* Checkmarks: ícone empilhado ACIMA do texto, tudo centralizado */
  .diferenciais-list li { flex-direction: column; align-items: center; justify-content: center; gap: var(--space-2); }
  .diferenciais-list li span.text { flex: 0 1 auto; text-align: center !important; }

  /* Nossos serviços: cabeçalho empilhado e centralizado (setas embaixo) */
  .solucoes-header { flex-direction: column; align-items: center; text-align: center; gap: var(--space-4); }
  .solucoes-header h2 { margin-left: auto !important; margin-right: auto !important; }

  /* Samartino em números */
  .numeros-section { text-align: center; }

  /* Depoimentos: cabeçalho empilhado e centralizado */
  .depoimentos-header { flex-direction: column; align-items: center; text-align: center; }
  .depoimentos-header__text { max-width: 100%; }

  /* Carrossel de serviços: 1 card por tela (a fórmula desktop divide por 4,
     o que esmagava os cards no mobile). O card ocupa exatamente a largura
     útil do container — mesma zona de trabalho das outras seções. */
  .solucao-card { flex: 0 0 calc(100vw - var(--container-pad) * 2); }

  /* ------ Página de Solução: hero, "sobre o serviço" e etapas no mobile ------ */
  .solucoes-hero { text-align: center; padding-top: 70px; padding-bottom: 70px; }
  /* Foto de fundo mais apagada + vinheta escura nas pontas (topo/base/laterais)
     em vez do gradiente horizontal pensado para o texto alinhado à esquerda
     do desktop — no mobile o texto ocupa a largura toda, então a vinheta
     precisa fechar em volta, não só de um lado. */
  .solucoes-hero__bg { opacity: 0.55; }
  .solucoes-hero::before {
    background:
      radial-gradient(ellipse at center, transparent 30%, rgba(0, 21, 64, 0.75) 100%),
      linear-gradient(180deg, rgba(0, 21, 64, 0.9) 0%, rgba(0, 21, 64, 0.5) 25%, rgba(0, 21, 64, 0.5) 70%, rgba(0, 21, 64, 0.92) 100%);
  }
  .solucoes-hero__content .solucao-hero__eyebrow,
  .solucoes-hero__content .eyebrow { justify-content: center; align-items: center; text-align: left; font-size: 11px; margin-left: auto; margin-right: auto; }
  .solucoes-hero__title { font-size: 24px; line-height: 1.3; max-width: 100%; margin-left: auto; margin-right: auto; }
  .solucoes-hero__text { max-width: 100%; margin-left: auto; margin-right: auto; }
  .qshero-badges { justify-content: center; }
  .solucoes-hero__btn { width: 100%; justify-content: center; }

  /* "Sobre o serviço": foto acima, texto empilhado e centralizado */
  .qs-section__grid { grid-template-columns: 1fr; gap: 40px; }
  .qs-media { padding: 0 20px 20px 0; max-width: 420px; margin: 0 auto; }
  .qs-media__card { max-width: calc(100% - 20px); }
  .qs-content { align-items: center; text-align: center; }
  .qs-content .eyebrow { justify-content: center; }
  .qs-content__text { max-width: 100%; font-size: 16px; }
  .solucao-pontos-list { align-items: center; }
  .solucao-pontos-list li { justify-content: center; padding: 6px 0; }
  .qs-content__cta,
  .qs-content__cta:hover { width: 100%; justify-content: center; margin-top: var(--space-2); }

  /* Cabeçalhos de seção ("Como podemos te ajudar?", "Por que escolher...",
     "Outras soluções...") — mantém 1 linha só, com fonte que encolhe
     conforme a largura da tela em vez de quebrar. */
  .solucoes-header__title {
    white-space: normal;
    line-height: 1.3;
    font-size: 30px;
  }
  .solucoes-header .eyebrow { font-size: 14px; }

  /* Blog preview (última seção antes do contato) — cabeçalho centralizado */
  .section-blog-preview .eyebrow { justify-content: center; margin-left: auto; margin-right: auto; }
  .section-blog-preview h2 { text-align: center; margin-left: auto !important; margin-right: auto !important; }

  /* Contato + mapa (última seção da página) — cabeçalho e texto centralizados */
  .contato-mapa-grid__col { text-align: center; }
  .contato-mapa-grid__col .eyebrow { justify-content: center; margin-left: auto; margin-right: auto; }
  .contato-mapa-grid__title { text-align: center; }
  .contato-mapa-grid__text { text-align: center; max-width: 100%; }

  /* Etapas: cards empilhados, painel e botões ocupando a largura toda */
  .solucao-etapa-item { text-align: center; align-items: center; }
  .solucao-etapas__painel { align-items: center; text-align: center; }
  .solucao-etapas__cta,
  .solucao-diferenciais__cta { width: 100%; justify-content: center; }

  /* "Continue explorando" — botão "Ver todas as soluções" ocupando a largura toda */
  .section-solucoes-lista .btn-secondary { width: 100%; justify-content: center; }

  /* "Entenda o benefício" — CTA abaixo dos compare-cards ocupando a largura
     toda, igual aos demais botões principais da LP no mobile. */
  .solucoes-lista__cta { flex-direction: column; }
  .solucoes-lista__cta .btn { width: 100%; justify-content: center; }

  /* Diferenciais: cards centralizados */
  .solucao-diferencial-card { display: flex; flex-direction: column; align-items: center; text-align: center; }
}
@media (max-width: 860px) {
  .footer-grid { grid-template-columns: 1fr 1fr !important; }
  /* sem este reset, os grid-column: span 4/2 do desktop forçariam colunas
     implícitas extras aqui, quebrando o empilhamento em 2 colunas. */
  .footer-grid > * { grid-column: span 1 !important; }
  .contact-grid, .contato-mapa-grid { grid-template-columns: 1fr !important; }
  .mapa-wrapper { min-height: 300px; }
}
@media (max-width: 640px) {
  .solucoes-grid { grid-template-columns: 1fr !important; }
  .solucao-grid-card__body { align-items: center; text-align: center; }
}
@media (max-width: 560px) {
  .form-row { grid-template-columns: 1fr !important; }
  .post-list { grid-template-columns: 1fr !important; }
  .article-grid { grid-template-columns: 1fr !important; }
  .numeros-grid { grid-template-columns: 1fr !important; }
  .depoimento-slide { flex-basis: 88%; }
  .footer-grid { grid-template-columns: 1fr !important; gap: var(--space-8); text-align: center; }
  .footer-brand { margin: 0 auto; }
  .footer-brand__logo { width: 260px; max-width: 78%; margin-left: auto; margin-right: auto; }
  .footer-brand p { font-size: var(--text-body-md); margin-left: auto; margin-right: auto; }
  .footer-col-title { font-size: 24px; margin-bottom: var(--space-5); }
  .footer-links { align-items: center; gap: var(--space-4); }
  .footer-links a, .footer-links span { font-size: var(--text-body-md); }
  .footer-contact-item { justify-content: center; }
}

/* ---------------------------------------------------------------------
   12.5 Landing Page Derkiam — ajustes finos em telas muito estreitas
   (celulares ~480px e abaixo: iPhone SE/mini, Android compactos ~390px).
   Os breakpoints de 900px/860px/780px acima já colapsam os grids para 1
   coluna; aqui só se refina tamanho de fonte, padding e faixas que ainda
   ficam largas/apertadas demais nessa faixa bem estreita.
   --------------------------------------------------------------------- */
@media (max-width: 480px) {
  /* Faixa marquee — item e ponto um pouco menores, para caber mais texto
     visível por vez e não deixar o espaçamento desproporcional numa tela
     estreita (o gradiente de fade das pontas continua funcionando igual,
     independente do tamanho do texto). */
  .marquee-strip { padding: 14px 0; }
  .marquee-strip__item { font-size: 12px; padding: 0 var(--space-3); }

  /* Hero da LP — título/eyebrow/texto reduzidos mais um passo além do
     ajuste de 900px, e os badges de vidro (glassmorphism) não devem
     ocupar mais que a largura útil da tela nem deixar o texto colar na
     borda do pill. */
  .solucoes-hero { padding-top: 56px; padding-bottom: 56px; }
  .solucoes-hero__title { font-size: 19px; }
  .solucoes-hero__text { font-size: 15px; }
  .qshero-badge { font-size: 13px; padding: 7px 12px; }
  .qshero-badges { gap: 8px; }

  /* Cards de comparação ("O que é" / "Quem tem direito") — padding menor
     para sobrar mais espaço de leitura para o texto em telas estreitas. */
  .compare-card { padding: var(--space-5) var(--space-4); text-align: center; }
  .compare-card__title { font-size: 17px; }
  .compare-card__list li { text-align: left; }

  /* Vinheta escura de "Entenda o benefício" e "Por que escolher" fica
     proporcionalmente mais pesada numa tela estreita (o cabeçalho ocupa
     quase toda a largura útil, dentro da faixa mais escura do gradiente),
     prejudicando a leitura — enfraquece só no mobile. */
  .section-solucoes-lista::before {
    background: linear-gradient(180deg, rgba(0, 0, 0, 0.2) 0%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.2) 100%),
      linear-gradient(90deg, rgba(0, 0, 0, 0.12) 0%, transparent 15%, transparent 85%, rgba(0, 0, 0, 0.12) 100%);
  }
  .solucao-diferenciais--light::before {
    background: linear-gradient(180deg, rgba(0, 0, 0, 0.25) 0%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.25) 100%),
      linear-gradient(90deg, rgba(0, 0, 0, 0.15) 0%, transparent 15%, transparent 85%, rgba(0, 0, 0, 0.15) 100%);
  }

  /* Painel "Seu direito merece atenção técnica" — título com clamp já
     encolhe, mas o padding do vidro fica desproporcional numa tela de
     ~360-390px; reduz para o texto não ficar espremido nas bordas. */
  .solucao-etapas__painel { padding: var(--space-5) var(--space-4); }
  .solucao-etapa-item { padding: var(--space-4); }

  /* Cards "Por que escolher" — mesmo ajuste de padding do vidro. */
  .solucao-diferencial-card { padding: var(--space-5) var(--space-4); }

  /* CTA global (banner) — título já quebra normal desde 720px; aqui só
     reduz o tamanho para não sobrar só 1-2 palavras por linha. */
  .cta-global { padding: var(--space-5) 0; }
  .cta-global__title { font-size: 20px; }
  .cta-global__btn { padding: 12px 20px; }

  /* Seção "Sobre Nós" — moldura vazada (.qs-media__frame) e o card
     flutuante (.qs-media__card) recebem um respiro menor para não
     empurrarem a foto para fora da área visível em telas bem estreitas. */
  .qs-media { padding: 0 14px 14px 0; }
  .qs-media__frame { top: 14px; left: 14px; }
  .qs-media__card { padding: 10px 14px; gap: var(--space-2); max-width: calc(100% - 14px); }
  .qs-media__card-text { font-size: 13px; }

  /* Botão flutuante do WhatsApp — encosta menos na borda, para não ficar
     colado na área de gestos do sistema em telas pequenas. */
  .whatsapp-float { right: var(--space-4); bottom: var(--space-4); width: 52px; height: 52px; }
}

/* ---- Botões/ícones que levam para o WhatsApp — verde por padrão, cor
   principal do site ao passar o mouse. Vale para LP e institucional
   (carregado por theme.css, presente em ambas). ---- */
/* Regra geral: borda sempre preta. Hover muda conforme o fundo da seção
   ao redor — fundo azul (a maioria) vira branco no hover; fundo claro
   (.section--alt, .qs-section--light, .solucao-diferenciais--light)
   vira azul no hover. */
.btn--whatsapp {
  background: #1A8A2E !important;
  border-color: rgba(0, 0, 0, 0.5) !important;
}
.btn--whatsapp:hover {
  background: var(--white) !important;
  color: var(--navy-black) !important;
  border-color: rgba(0, 0, 0, 0.5) !important;
}
.section--alt .btn--whatsapp:hover,
.qs-section--light .btn--whatsapp:hover,
.solucao-diferenciais--light .btn--whatsapp:hover {
  background: var(--navy-black) !important;
  color: var(--white) !important;
}
/* Botões da LP (solucoes-hero__btn, qshero-cta, qs-content__cta,
   solucao-etapas__cta, solucao-diferenciais__cta) pintam o fundo real
   num ::before atrás do próprio elemento (z-index:-1), com sua própria
   borda — resultava em 2 bordas concêntricas (elemento + ::before) ao
   tentar colorir os dois. Mais simples: desligar o ::before e pintar
   fundo/borda direto no elemento, como o .qshero-badge--glass já faz. */
.solucoes-hero__btn.btn--whatsapp::before,
.qshero-cta.btn--whatsapp::before,
.qs-content__cta.btn--whatsapp::before,
.solucao-etapas__cta.btn--whatsapp::before,
.solucao-diferenciais__cta.btn--whatsapp::before {
  display: none;
}
.solucoes-hero__btn.btn--whatsapp,
.qshero-cta.btn--whatsapp,
.qs-content__cta.btn--whatsapp,
.solucao-etapas__cta.btn--whatsapp,
.solucao-diferenciais__cta.btn--whatsapp {
  background: #1A8A2E !important;
  border: 1px solid rgba(0, 0, 0, 0.5) !important;
  border-radius: var(--radius-pill) !important;
}
.solucoes-hero__btn.btn--whatsapp:hover,
.qshero-cta.btn--whatsapp:hover,
.qs-content__cta.btn--whatsapp:hover,
.solucao-etapas__cta.btn--whatsapp:hover,
.solucao-diferenciais__cta.btn--whatsapp:hover {
  background: var(--white) !important;
  color: var(--navy-black) !important;
  border-color: rgba(0, 0, 0, 0.5) !important;
}
/* Dentro de seção clara, hover vira azul em vez de branco. */
.solucao-diferenciais--light .solucao-diferenciais__cta.btn--whatsapp:hover,
.qs-section--light .qs-content__cta.btn--whatsapp:hover,
.section--alt .qs-content__cta.btn--whatsapp:hover {
  background: var(--navy-black) !important;
  color: var(--white) !important;
}

/* Widget flutuante do WhatsApp (bolha + card de mensagens) — verde do
   WhatsApp em vez do azul institucional, já que é 100% dedicado ao canal. */
.whatsapp-float {
  background: #1A8A2E;
}
.whatsapp-float:hover {
  background: var(--navy-black);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
}
.whatsapp-widget__header {
  background: #1A8A2E;
}
.whatsapp-widget__cta {
  background: #1A8A2E;
}
.whatsapp-widget__cta:hover {
  background: var(--navy-black);
  border: 1px solid rgba(255, 255, 255, 0.5);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
}

/* Ícone do WhatsApp mais afastado do texto do botão (o gap padrão de 4px
   era pensado para a seta pequena), e sem o efeito de "aproximar ainda
   mais" no hover que a seta tem (translateX empurraria o ícone contra
   o texto, já que aqui ele fica à esquerda, não a seguir a seta). */
.btn--whatsapp {
  gap: 10px !important;
}
.cta-global__btn.btn--whatsapp:hover .cta-global__btn-icon {
  transform: none;
}

/* Esconde o badge flutuante do reCAPTCHA (Google exige manter visível em
   algum lugar do site o aviso "protegido pelo reCAPTCHA" quando o badge é
   ocultado — já está presente em .form-recaptcha-note no form de contato). */
.grecaptcha-badge { visibility: hidden; }
