/* Componentes próprios do site (derivados de assets/site/enhancements.css do legado). */

/* --- Texto apenas para leitores de tela --- */
.lv-sr-only {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* --- Skip link visível ao receber foco (WCAG 2.4.1) --- */
.header-skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 10000;
}
.header-skip-link:focus,
.header-skip-link:focus-visible {
  position: fixed !important;
  left: 16px !important;
  top: 16px !important;
  display: inline-block !important;
  padding: 12px 20px;
  background: #000;
  color: #fff !important;
  font-size: 16px;
  text-decoration: underline;
  outline: 3px solid #ffd54d;
  outline-offset: 2px;
}

/* --- Foco visível em links e botões (WCAG 2.4.7) --- */
a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
[tabindex="0"]:focus-visible {
  outline: 3px solid #1a1a1a;
  outline-offset: 2px;
}

/* --- Botão flutuante de WhatsApp (substitui widget de terceiro edna.io) --- */
.lv-wa-fab {
  position: fixed;
  right: 20px;
  bottom: 20px;
  z-index: 9000;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: #000;
  box-shadow: 0 4px 12px rgba(0, 0, 0, .35);
  transition: transform .15s ease;
}
.lv-wa-fab:hover { transform: scale(1.06); }
.lv-wa-fab svg { width: 30px; height: 30px; fill: #fff; }

/* --- Banner de consentimento de cookies (LGPD) --- */
.lv-consent {
  position: fixed;
  left: 16px;
  right: 16px;
  bottom: 16px;
  z-index: 9500;
  max-width: 560px;
  margin: 0 auto;
  padding: 20px 22px;
  background: #111;
  color: #fff;
  border-radius: 10px;
  box-shadow: 0 8px 28px rgba(0, 0, 0, .4);
  font-size: 14px;
  line-height: 1.5;
}
.lv-consent h2 { margin: 0 0 8px; font-size: 15px; color: #fff; }
.lv-consent p { margin: 0 0 14px; color: #ddd; }
.lv-consent a { color: #fff; text-decoration: underline; }
.lv-consent .lv-consent-actions { display: flex; gap: 10px; flex-wrap: wrap; }
.lv-consent button {
  cursor: pointer;
  border: 1px solid #fff;
  border-radius: 6px;
  padding: 10px 18px;
  font-size: 14px;
  background: #fff;
  color: #111;
}
.lv-consent button.lv-consent-reject { background: transparent; color: #fff; }

/* --- Seção institucional da home (SEO/GEO): tipografia herdada do tema
   (h2/h3/p do site.css); aqui só layout, listas e o FAQ em acordeão --- */
.lv-intro {
  max-width: 1200px;
  margin: 0 auto;
  padding: 120px 4vw 104px;
  color: #000;
}
.lv-intro h2,
.lv-intro h3 {
  text-transform: uppercase;
  margin: 0;
}
.lv-intro h2 { margin-bottom: 32px; }
.lv-intro h3 { margin-bottom: 18px; }
.lv-intro p { text-align: justify; margin: 0 0 1em; }
.lv-intro a {
  color: inherit;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: .2em;
}
.lv-intro-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  column-gap: 7vw;
  align-items: start;
}
.lv-intro-detail h3 ~ h3 { margin-top: 48px; }
.lv-intro-detail ul,
.lv-intro-detail ol {
  list-style: none;
  margin: 0 0 1em;
  padding: 0;
  counter-reset: lv-step;
}
.lv-intro-detail li {
  position: relative;
  padding-left: 40px;
  margin-bottom: 12px;
}
.lv-intro-detail ul li::before {
  content: "";
  position: absolute;
  left: 0;
  top: .65em;
  width: 22px;
  height: 1px;
  background: currentColor;
}
.lv-intro-detail ol li { counter-increment: lv-step; }
.lv-intro-detail ol li::before {
  content: counter(lv-step, decimal-leading-zero);
  position: absolute;
  left: 0;
  top: .15em;
  font-size: .75em;
  letter-spacing: .1em;
}

/* FAQ: acordeão fechado, linhas finas como os divisores do site */
.lv-intro-faq { margin-top: 104px; }
.lv-intro-faq h3 { margin-bottom: 8px; }
.lv-faq { border-bottom: 1px solid #000; }
.lv-faq details { border-top: 1px solid #000; }
.lv-faq summary {
  position: relative;
  display: block;
  padding: 22px 48px 22px 0;
  cursor: pointer;
  list-style: none;
  font-weight: 500;
}
.lv-faq summary::-webkit-details-marker { display: none; }
.lv-faq summary::before,
.lv-faq summary::after {
  content: "";
  position: absolute;
  right: 4px;
  top: 50%;
  width: 16px;
  height: 1px;
  background: currentColor;
  transition: transform .3s ease;
}
.lv-faq summary::after { transform: rotate(90deg); }
.lv-faq details[open] summary::after { transform: rotate(0deg); }
.lv-faq summary:focus-visible { outline: 2px solid #000; outline-offset: 4px; }
.lv-faq details p {
  max-width: 820px;
  margin: 0;
  padding: 0 48px 26px 0;
}

@media (max-width: 767px) {
  .lv-intro { padding: 64px 20px 56px; }
  .lv-intro-grid { grid-template-columns: 1fr; }
  .lv-intro-detail { margin-top: 40px; }
  .lv-intro-faq { margin-top: 64px; }
  .lv-intro p { text-align: left; }
}

/* --- Galeria "slideshow" (bloco de Instagram): o layout vem do site.css
   do tema; aqui só o que o bundle do Squarespace fazia via JS inline
   (ver enhancements.js, initGallerySlideshows) --- */
.lv-gallery-ready .sqs-gallery-design-stacked-slide .thumb-image {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.lv-gallery-animate .sqs-gallery-design-stacked-slide {
  transition: opacity .5s ease-out, visibility .5s;
}
.lv-gallery-animate ~ .sqs-gallery-thumbnails .sqs-wrapper {
  transition: left .5s ease-out;
}
/* ============================================================
   Lima Vari — camada de movimento
   Entrada de página, reveal no scroll, micro-interações,
   header dinâmico e seletor de idiomas.
   Tudo desativado com prefers-reduced-motion.
   ============================================================ */

html { scroll-behavior: smooth; }

/* --- entrada da página --- */
@media (prefers-reduced-motion: no-preference) {
  body.lv-motion {
    animation: lv-page-in .6s ease-out both;
  }
  @keyframes lv-page-in {
    from { opacity: 0; }
    to   { opacity: 1; }
  }

  /* --- reveal no scroll --- */
  .lv-reveal {
    opacity: 0;
    transform: translateY(26px);
    transition:
      opacity .75s cubic-bezier(.22, .61, .36, 1),
      transform .75s cubic-bezier(.22, .61, .36, 1);
    transition-delay: var(--lv-delay, 0s);
    will-change: opacity, transform;
  }
  .lv-reveal.lv-in {
    opacity: 1;
    transform: none;
  }
  .lv-reveal-img {
    opacity: 0;
    transform: translateY(18px) scale(1.025);
    transition:
      opacity .9s cubic-bezier(.22, .61, .36, 1),
      transform .9s cubic-bezier(.22, .61, .36, 1);
    transition-delay: var(--lv-delay, 0s);
    will-change: opacity, transform;
  }
  .lv-reveal-img.lv-in {
    opacity: 1;
    transform: none;
  }

  /* --- hover nas imagens de galeria/portfólio --- */
  a .sqs-image-content img,
  a img[class*="thumb-image"],
  .lv-hoverable img {
    transition: transform .6s cubic-bezier(.22, .61, .36, 1), filter .6s ease;
  }
  a:hover .sqs-image-content img,
  a:hover img[class*="thumb-image"],
  .lv-hoverable:hover img {
    transform: scale(1.03);
  }

  /* --- links da navegação: sublinhado animado --- */
  .header-nav-item > a,
  .header-menu-nav-item > a {
    background-image: linear-gradient(currentColor, currentColor);
    background-size: 0% 1px;
    background-repeat: no-repeat;
    background-position: left calc(100% - 2px);
    transition: background-size .35s cubic-bezier(.22, .61, .36, 1);
  }
  .header-nav-item > a:hover,
  .header-nav-item > a:focus-visible,
  .header-nav-item--active > a {
    background-size: 100% 1px;
  }

  /* --- botões ganham leve elevação --- */
  .lv-form button[type="submit"],
  .lv-consent button,
  .sqs-button-element--primary,
  .sqs-block-button-element {
    transition: transform .25s ease, box-shadow .25s ease, background .25s ease;
  }
  .lv-form button[type="submit"]:hover,
  .sqs-button-element--primary:hover,
  .sqs-block-button-element:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 18px rgba(0, 0, 0, .18);
  }

  /* --- header fixo: sombra sutil ao sair do topo, sempre visível --- */
  #header, header.sections, header[data-controller] {
    transition: box-shadow .3s ease;
  }
  body.lv-header-floating #header,
  body.lv-header-floating header[data-controller] {
    box-shadow: 0 2px 18px rgba(0, 0, 0, .10);
  }

  /* --- FAQ da home: abertura suave --- */
  .lv-faq details p { transition: opacity .4s ease, transform .4s ease; }
  .lv-faq details:not([open]) p { opacity: 0; transform: translateY(-6px); }
  .lv-faq details[open] p { opacity: 1; transform: none; }
  .lv-faq summary { transition: letter-spacing .3s ease; }
  .lv-faq details[open] summary { letter-spacing: .02em; }

  /* --- botão de WhatsApp: pulso discreto de entrada --- */
  .lv-wa-fab { animation: lv-fab-in .6s .8s cubic-bezier(.22, .61, .36, 1) both; }
  @keyframes lv-fab-in {
    from { opacity: 0; transform: translateY(16px) scale(.8); }
    to   { opacity: 1; transform: none; }
  }
}

/* --- seletor de idioma: fixo na barra do header (não mais flutuante) --- */
.header-actions-action--lang {
  display: flex;
  align-items: center;
}
.lv-lang-switch {
  display: flex;
  align-items: center;
  gap: 2px;
  padding: 3px;
  background: rgba(0, 0, 0, .05);
  border: 1px solid rgba(0, 0, 0, .18);
  border-radius: 999px;
}
.lv-lang-switch button {
  cursor: pointer;
  border: none;
  background: transparent;
  color: #111 !important;
  font: 600 11px/1 "Helvetica Neue", Arial, sans-serif;
  letter-spacing: .08em;
  padding: 6px 9px;
  border-radius: 999px;
  transition: background .25s ease, color .25s ease;
}
.lv-lang-switch button:hover { background: rgba(0, 0, 0, .08); }
.lv-lang-switch button[aria-pressed="true"] {
  background: #111;
  color: #fff !important;
}
.lv-lang-switch button:focus-visible {
  outline: 2px solid #111;
  outline-offset: 1px;
}
@media (max-width: 640px) {
  .lv-lang-switch button { padding: 5px 7px; font-size: 10px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .lv-reveal, .lv-reveal-img { opacity: 1 !important; transform: none !important; }
}

/* ============================================================
   Site dinâmico (SSR): ajustes sobre o CSS legado da Squarespace
   ============================================================ */
:root {
  --lv-ink: #000;
  --lv-paper: #fff;
  --lv-muted: #6b6b6b;
  --lv-line: #d8d8d8;
  --lv-focus: #ffd54d;
  --lv-error: #b00020;
  --lv-overlay: rgba(0, 0, 0, .92);
}

/* Blocos de grade: imagem ocupa a célula inteira, como o fluid image da Squarespace. */
.fe-block .sqs-block { height: 100%; }
.fe-block .sqs-block-image .sqs-block-content,
.fe-block .fluid-image-component-root,
.fe-block .fluid-image-animation-wrapper,
.fe-block .fluid-image-container,
.fe-block .content-fill,
.fe-block .content-fill > a { display: block; width: 100%; height: 100%; position: relative; }
.fe-block .content-fill img { position: absolute; inset: 0; width: 100%; height: 100%; }
.sqs-html-content p, .sqs-html-content h1, .sqs-html-content h2, .sqs-html-content h3, .sqs-html-content h4 { white-space: pre-wrap; }
.sqs-html-content [style*="justify"] { white-space: normal; }
.fe-block .sqs-block-html, .fe-block .sqs-block-button { display: flex; flex-direction: column; justify-content: center; }

/* Header: menu mobile e pasta do menu desktop controlados por site.js. */
.header-nav-folder-content { display: none; }
.header-nav-item--folder.is-open .header-nav-folder-content,
.header-nav-item--folder:hover .header-nav-folder-content,
.header-nav-item--folder:focus-within .header-nav-folder-content { display: block; opacity: 1; pointer-events: auto; }
.header-nav-item--active > a, .header-nav-item--active .header-nav-folder-title-text { text-decoration: underline; text-underline-offset: .25em; }
.header-menu[hidden] { display: none !important; }
body.lv-menu-open { overflow: hidden; }
body.lv-menu-open .header-menu { display: block; opacity: 1; visibility: visible; pointer-events: auto; position: fixed; inset: 0; z-index: 999; }
.header-menu-nav-folder[data-folder]:not([data-folder="root"]) { display: none; }
.header-menu.lv-subfolder .header-menu-nav-folder[data-folder="root"] > .header-menu-nav-folder-content { display: none; }
.header-menu-nav-folder.is-open { display: block !important; }
.lv-icon svg { width: 22px; height: 22px; fill: currentColor; }
.header-display-mobile { display: none; }
@media (max-width: 767px) {
  .header-display-desktop { display: none; }
  .header-display-mobile { display: flex; align-items: center; justify-content: space-between; width: 100%; }
}

/* Seletor de idioma do SSR: links com a mesma pílula do seletor legado (botões, acima) */
.lv-lang-switch a {
  color: #111 !important;
  text-decoration: none;
  font: 600 11px/1 "Helvetica Neue", Arial, sans-serif;
  letter-spacing: .08em;
  padding: 6px 9px;
  border-radius: 999px;
  transition: background .25s ease, color .25s ease;
}
.lv-lang-switch a:hover { background: rgba(0, 0, 0, .08); }
.lv-lang-switch a.is-active { background: #111; color: #fff !important; }
.lv-lang-switch a:focus-visible { outline: 2px solid #111; outline-offset: 1px; }
@media (max-width: 640px) {
  .lv-lang-switch a { padding: 5px 7px; font-size: 10px; }
}
.header-menu .lv-lang-switch { margin: 1.5em auto 0; width: max-content; }

/* Slideshow de abertura e depoimentos */
.lv-slideshow { position: relative; overflow: hidden; }
.lv-slideshow .lv-slide { position: absolute; inset: 0; opacity: 0; transition: opacity 1s ease; margin: 0; }
.lv-slideshow .lv-slide.is-active { opacity: 1; visibility: visible; }
.lv-slideshow .lv-slide, .lv-slideshow .lv-slide * { visibility: visible; }
.lv-slideshow .gallery-fullscreen-slideshow-item-img, .lv-slideshow .gallery-fullscreen-slideshow-item-src,
.lv-slideshow .gallery-fullscreen-slideshow-item-wrapper { width: 100%; height: 100%; }
.lv-slideshow-bullets { position: absolute; left: 0; right: 0; bottom: 24px; display: flex; justify-content: center; gap: 10px; z-index: 2; }
.lv-bullet { width: 10px; height: 10px; border-radius: 50%; border: 1px solid var(--lv-paper); background: transparent; padding: 0; cursor: pointer; }
.lv-bullet.is-active { background: var(--lv-paper); }
.lv-testimonials { position: relative; min-height: 70vh; display: flex; align-items: center; justify-content: center; color: var(--lv-paper); overflow: hidden; }
.lv-testimonials-bg { position: absolute; inset: 0; }
.lv-testimonials-bg img { width: 100%; height: 100%; }
.lv-testimonials-bg::after { content: ""; position: absolute; inset: 0; background: rgba(0, 0, 0, .45); }
.lv-testimonials ul { position: relative; list-style: none; margin: 0; padding: 0 8vw; width: 100%; max-width: 900px; min-height: 260px; }
.lv-testimonials .lv-slide { position: absolute; inset: 0 8vw; opacity: 0; transition: opacity .8s ease; display: flex; align-items: center; text-align: center; }
.lv-testimonials .lv-slide.is-active { opacity: 1; position: relative; inset: auto; }
.lv-testimonials blockquote { margin: 0 0 1em; font-size: 1.25rem; line-height: 1.5; }
.lv-testimonials-nav { position: absolute; inset: auto 0 24px; display: flex; justify-content: center; gap: 24px; }
.lv-testimonials-nav button { background: none; border: 1px solid var(--lv-paper); color: var(--lv-paper); width: 40px; height: 40px; font-size: 1.4rem; cursor: pointer; }

/* Instagram (contato) */
.lv-insta { position: relative; width: 100%; height: 100%; min-height: 320px; }
.lv-insta-item { position: absolute; inset: 0; opacity: 0; transition: opacity .8s ease; }
.lv-insta-item.is-active { opacity: 1; }
.lv-insta-item img { width: 100%; height: 100%; }

/* Faixa rolante */
.lv-marquee { overflow: hidden; white-space: nowrap; width: 100%; }
.lv-marquee-track { display: inline-flex; gap: 2em; animation: lv-marquee 30s linear infinite; font-size: clamp(2rem, 6vw, 5rem); text-transform: uppercase; }
@keyframes lv-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .lv-marquee-track { animation: none; } .lv-slideshow .lv-slide, .lv-testimonials .lv-slide { transition: none; } }

/* Galeria + lightbox */
.gallery-grid-wrapper { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--lv-gallery-gutter, 61px); padding: 0 var(--sqs-site-gutter, 4vw); }
@media (max-width: 767px) { .gallery-grid-wrapper { grid-template-columns: 1fr; gap: 16px; } }
.gallery-grid-item { margin: 0; }
.gallery-grid-item-wrapper { aspect-ratio: 4 / 3; overflow: hidden; }
.lv-lightbox-open { display: block; width: 100%; height: 100%; padding: 0; border: 0; background: none; cursor: zoom-in; }
.lv-lightbox-open img { width: 100%; height: 100%; }
.lv-lightbox { position: fixed; inset: 0; z-index: 10000; background: var(--lv-overlay); display: flex; align-items: center; justify-content: center; }
.lv-lightbox[hidden] { display: none; }
.lv-lightbox img { max-width: 92vw; max-height: 88vh; object-fit: contain; }
.lv-lightbox button { position: absolute; background: none; border: 0; color: var(--lv-paper); font-size: 2.4rem; cursor: pointer; padding: 12px 18px; }
.lv-lightbox .lv-lb-close { top: 12px; right: 12px; }
.lv-lightbox .lv-lb-prev { left: 8px; top: 50%; transform: translateY(-50%); }
.lv-lightbox .lv-lb-next { right: 8px; top: 50%; transform: translateY(-50%); }

/* Grade de projetos */
.portfolio-grid-overlay .grid-image-inner-wrapper { aspect-ratio: 1 / 1; overflow: hidden; }
.portfolio-grid-overlay .grid-image-inner-wrapper img { width: 100%; height: 100%; }

/* Formulário */
.lv-hp { position: absolute !important; left: -10000px !important; width: 1px; height: 1px; overflow: hidden; }
.lv-form-status:empty { display: none; }
.lv-form-status { color: var(--lv-error); margin: 0 0 1em; }
.lv-textarea { width: 100%; min-height: 110px; resize: vertical; font: inherit; }
.form-item.has-error input, .form-item.has-error textarea { border-color: var(--lv-error) !important; }

/* 404 e imagem larga */
.lv-not-found .content { padding: 18vh var(--sqs-site-gutter, 4vw); text-align: center; }
.lv-image-full img { width: 100%; height: auto; display: block; }

/* Primeira seção começa abaixo do header fixo (o bundle Squarespace fazia isso por JS inline). */
#sections > .page-section:first-child { padding-top: var(--header-height, 89px); }
.header-burger-btn { background: none; border: 0; padding: 0; cursor: pointer; color: inherit; }
.top-bun, .patty, .bottom-bun { height: 1px; }
/* Menu mobile: fundo atrás, itens na frente, header (logo e botão fechar) por cima. */
body.lv-menu-open .header-inner { position: relative; z-index: 1001; }
body.lv-menu-open .header-menu .header-menu-bg { position: absolute; inset: 0; z-index: 0; }
body.lv-menu-open .header-menu .header-menu-nav { position: relative; z-index: 1; height: 100%; overflow-y: auto; padding-top: calc(var(--header-height, 80px) + 2vh); box-sizing: border-box; }
body.lv-menu-open .header-menu-nav-list, body.lv-menu-open .header-menu-nav-folder[data-folder="root"] { height: auto; display: flex; flex-direction: column; align-items: center; }
body.lv-menu-open .header-menu-nav-item a { font-size: 1.6rem; padding: .5em 0; display: inline-block; color: inherit; }
.header-menu-cta { display: flex; flex-direction: column; gap: 12px; align-items: center; margin-top: 2em; }
.lv-slideshow-toggle { width: 28px; height: 28px; margin-right: 8px; border: 1px solid var(--lv-paper); background: rgba(0, 0, 0, .35); color: var(--lv-paper); font-size: 11px; cursor: pointer; padding: 0; }
.lv-slideshow-bullets { align-items: center; }
