/* ============================================================================
   VIANNA'S — css/viannas-chrome.css  (capa de integração e107, carregada por
   último em theme.php). Sobrepõe aeolus style.css + default.css.

   Marca: navy #102450 · slate #3B507D · taupe #BAB6A6 · creme #E8E3CE · mist #F0EFEB
============================================================================ */

/* 0. Tokens de marca visíveis para o CSS aeolus/default */
body.vtheme {
  --primary: #102450;
  --primary-dark: #0c1c3c;
  --v-navy: #102450;
  --v-slate: #3B507D;
  --v-taupe: #BAB6A6;
  --v-creme: #E8E3CE;
  --v-mist: #F0EFEB;
}

body.vtheme {
  font-family: var(--font-body, "Sora", system-ui, sans-serif);
  background: var(--v-mist);
  color: var(--v-navy);
}

/* ---------------------------------------------------------------------------
   1. NAVBAR de marca (chrome e107: .navbar-area/.navbar-two)
   - sobre hero navy (layout-home / layout-cpage): transparente, texto creme
   - sticky ao rolar: fundo off-white blur, texto navy
--------------------------------------------------------------------------- */
.v-navbar.navbar-area {
  position: static;
  background: var(--v-navy);
  color: var(--v-creme);
  border-bottom: 1px solid transparent;
  padding: 0;
  z-index: 1030;
}
/* Topo sobre hero navy (home/cpage): fixo e transparente (como a landing) */
body.layout-home .v-navbar.navbar-area,
body.layout-cpage .v-navbar.navbar-area {
  position: fixed;
  inset: 0 0 auto 0;
  width: 100%;
  background: transparent;
}
.v-navbar .navbar {
  min-height: var(--nav-h, 76px);
  padding: 0.55rem 0;
}
.v-navbar .container {
  position: relative;
}
.v-navbar.navbar-area,
.v-navbar .navbar,
.v-navbar .navbar .nav-item .nav-link,
.v-navbar .brand-word {
  transition: color 0.35s var(--ease, ease), background-color 0.4s var(--ease, ease);
}

/* estados de cor */
.v-navbar .brand-word,
.v-navbar .navbar-nav .nav-link,
.v-navbar .navbar-nav a {
  color: var(--v-creme);
}
.v-navbar .navbar-nav .nav-link {
  font-family: var(--font-disp, "League Spartan", Arial, sans-serif);
  font-weight: 600;
  font-size: 0.84rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  padding: 0.45rem 0.55rem;
  text-decoration: none;
}
.v-navbar .navbar-nav .nav-link:hover,
.v-navbar .navbar-nav .nav-link:focus-visible,
.v-navbar .navbar-nav .nav-link.is-active {
  color: #fff;
  text-decoration: underline;
  text-underline-offset: 6px;
  text-decoration-thickness: 2px;
}

/* (topo transparente definido na base do navbar) */


/* ao rolar (.scrolled) — fundo creme translúcido + texto/links navy */
.v-navbar.navbar-area.scrolled,
.v-navbar.navbar-area.sticky {
  background: rgba(240, 239, 235, 0.88);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid rgba(16, 36, 80, 0.16);
  box-shadow: 0 1px 0 rgba(16, 36, 80, 0.04);
  color: var(--v-navy);
}
.v-navbar.navbar-area.scrolled .brand-word,
.v-navbar.navbar-area.scrolled .navbar-nav .nav-link,
.v-navbar.navbar-area.scrolled .navbar-nav a,
.v-navbar.navbar-area.sticky .brand-word,
.v-navbar.navbar-area.sticky .navbar-nav .nav-link,
.v-navbar.navbar-area.sticky .navbar-nav a {
  color: var(--v-navy);
}
.v-navbar.navbar-area.scrolled .navbar-nav .nav-link:hover,
.v-navbar.navbar-area.scrolled .navbar-nav .nav-link:focus-visible,
.v-navbar.navbar-area.scrolled .navbar-nav .nav-link.is-active {
  color: var(--v-navy);
}
/* menu colapsado aberto — fundo navy + texto creme */
.v-navbar.navbar-area.nav-open {
  background: var(--v-navy);
  border-bottom-color: rgba(232, 227, 206, 0.22);
  color: var(--v-creme);
}
.v-navbar.navbar-area.nav-open .brand-word,
.v-navbar.navbar-area.nav-open .navbar-nav .nav-link,
.v-navbar.navbar-area.nav-open .navbar-nav a {
  color: var(--v-creme);
}

/* logo 2×2 + wordmark (mesmas classes da landing) */
.v-brand.navbar-brand {
  display: inline-flex;
  align-items: center;
  gap: 0.7rem;
  text-decoration: none;
  margin: 0;
}
.v-brand .logo-sq {
  display: inline-grid;
  grid-template-columns: repeat(2, 9px);
  grid-template-rows: repeat(2, 9px);
  gap: 2px;
  width: 20px;
  height: 20px;
}
.v-brand .brand-word {
  font-family: var(--font-disp, "League Spartan", Arial, sans-serif);
  font-weight: 800;
  font-size: 1.28rem;
  letter-spacing: 0.24em;
  line-height: 1;
}
.v-brand .sq { display: block; }

/* hambúrguer + espaciador (mobile) — replica da landing */
.navbar-spacer { display: none; }
.v-navbar .navbar-toggler {
  display: none;
  align-items: center;
  justify-content: center;
  width: 46px;
  border: 1px solid currentColor;
  background: transparent;
  color: inherit;
  border-radius: 4px;
  padding: 0.5rem 0.55rem;
  line-height: 0;
  cursor: pointer;
}
.v-navbar .navbar-toggler .toggler-icon { display: inline-flex; flex-direction: column; gap: 4px; }
.v-navbar .navbar-toggler .toggler-icon i {
  display: block;
  width: 20px;
  height: 2px;
  background: currentColor;
  transition: transform 0.3s var(--ease, ease), opacity 0.3s var(--ease, ease);
}
.v-navbar .navbar-toggler[aria-expanded="true"] .toggler-icon i:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.v-navbar .navbar-toggler[aria-expanded="true"] .toggler-icon i:nth-child(2) { opacity: 0; }
.v-navbar .navbar-toggler[aria-expanded="true"] .toggler-icon i:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }
@media (min-width: 992px) { .v-navbar .navbar-toggler { display: none !important; } }

@media (max-width: 991.98px) {
  .v-navbar .navbar-spacer { display: inline-block; width: 46px; flex: none; }
  .v-navbar .navbar-toggler { display: inline-flex; align-items: center; justify-content: center; width: 46px; }
  .v-navbar .navbar-collapse {
    flex-basis: 100%;
    margin-top: 0.6rem;
    padding: 0.75rem 0 1rem;
  }
  .v-navbar.navbar-area .navbar-collapse.show {
    background: var(--v-navy);
    border-top: 1px solid rgba(232, 227, 206, 0.2);
  }
  .v-navbar .navbar-nav { flex-direction: column; align-items: flex-start; width: 100%; }
  .v-navbar .navbar-nav .nav-link { font-size: 1.02rem; padding: 0.6rem 0.2rem; width: 100%; }
  .v-navbar .v-cta-item { margin: 0.9rem 0 0; width: 100%; }
  .v-navbar .v-cta-item .v-btn-creme { width: 100%; justify-content: center; }
}

/* CTA */
.v-cta-item { margin-left: 1.4rem; }
.v-cta-item .v-btn-creme { white-space: nowrap; }

/* ---------------------------------------------------------------------------
   2. Botões de marca (v-btn-*) — componentes Bootstrap na convenção aeolus
--------------------------------------------------------------------------- */
.v-btn-creme,
.v-btn-navy,
.v-btn-ghost {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.55rem;
  font-family: var(--font-disp, "League Spartan", Arial, sans-serif);
  font-weight: 700;
  font-size: 0.92rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  text-decoration: none;
  padding: 0.85rem 1.6rem;
  border-radius: 4px;
  border: 1px solid transparent;
  transition: background-color 0.3s var(--ease, ease), color 0.3s var(--ease, ease), border-color 0.3s var(--ease, ease), transform 0.3s var(--ease, ease);
}
.v-btn-creme { background: var(--v-creme); color: var(--v-navy); }
.v-btn-creme:hover, .v-btn-creme:focus-visible { background: var(--v-taupe); color: var(--v-navy); transform: translateY(-2px); }
.v-btn-navy { background: var(--v-navy); color: var(--v-creme); }
.v-btn-navy:hover, .v-btn-navy:focus-visible { background: var(--v-slate); color: #fff; transform: translateY(-2px); }
.v-btn-ghost { background: transparent; color: var(--v-creme); border-color: rgba(232, 227, 206, 0.6); }
.v-btn-ghost:hover, .v-btn-ghost:focus-visible { background: rgba(232, 227, 206, 0.12); color: #fff; }
.hero .v-btn-ghost, .nav-open .v-btn-ghost { color: var(--v-creme); }
.v-btn-creme .arr, .v-btn-navy .arr, .v-btn-ghost .arr { display: inline-block; transition: transform 0.3s var(--ease, ease); }
.v-btn-creme:hover .arr, .v-btn-navy:hover .arr, .v-btn-ghost:hover .arr { transform: translateX(4px); }

/* ---------------------------------------------------------------------------
   3. Chrome e107: página, menús e rodapé
--------------------------------------------------------------------------- */
/* caixa genérica de custom-page menu fora de contexto de secção */
.cpage-menu { margin: 0; }
.cpage-menu .btn-cmenu { display: inline-block; }

/* header de página e107 (layouts full/cpage) usa token --primary já navy */
body.vtheme .e107-page-header {
  background: linear-gradient(135deg, var(--v-navy), var(--v-slate));
}

/* menus de rodapé aeolus → marca navy escura */
body.vtheme .footer-area {
  background: #0d1f45;
  color: rgba(232, 227, 206, 0.85);
}
body.vtheme .footer-area h6.footer-title,
body.vtheme .footer-area .footer-title {
  color: var(--v-creme);
  font-family: var(--font-disp, "League Spartan", Arial, sans-serif);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.12em;
}
body.vtheme .footer-area a,
body.vtheme .footer-area .footer-menu a,
body.vtheme .footer-area .cpage-menu a {
  color: rgba(232, 227, 206, 0.85);
  text-decoration: none;
}
body.vtheme .footer-area a:hover,
body.vtheme .footer-area .footer-menu a:hover,
body.vtheme .footer-area .cpage-menu a:hover {
  color: #fff;
  text-decoration: underline;
  text-underline-offset: 4px;
}
body.vtheme .footer-copyright {
  background: #0a1733;
  color: rgba(232, 227, 206, 0.6);
  padding: 1.2rem 0;
}

/* sign-in / user area dentro da navbar (aeolus {SIGNIN}) */
.v-navbar .navbar-nav .nav-item .nav-link.signin { white-space: nowrap; }

/* ---------------------------------------------------------------------------
   4. Ajustes de reflow para títulos de secção e107 dentro do conteúdo
--------------------------------------------------------------------------- */
body.vtheme h1, body.vtheme h2, body.vtheme h3, body.vtheme h4, body.vtheme h5, body.vtheme h6 {
  font-family: var(--font-disp, "League Spartan", Arial, sans-serif);
  color: var(--v-navy);
}

/* evita margens desnecessárias do reboot nos menus vindo do CMENU */
.vtheme .cpage-menu p:last-child { margin-bottom: 0; }

/* foco em fundos navy */
body.layout-home .hero :focus-visible,
body.vtheme .v-navbar :focus-visible {
  outline-color: var(--v-creme);
}

/* mobile: grelha 3 colunas para centrar EXACTAMENTE o logótipo (aeolus injecta margens auto) */
@media (max-width: 991.98px) {
  .v-navbar .navbar {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    width: 100%;
  }
  .v-navbar .navbar-spacer { grid-column: 1; }
  .v-navbar .v-brand { grid-column: 2; justify-self: center; }
  .v-navbar .navbar-toggler { grid-column: 3; justify-self: end; }
  .v-navbar .navbar-collapse { grid-column: 1 / -1; }
}

/* títulos de marca em fundos navy: garantem cor clara (o override genérico de
   headings não pode aplicar navy aqui) */
.vtheme .hero .hero-title,
.vtheme .v-spage-hero .v-spage-title,
.vtheme .v-sec-urgencia .v-urgencia-title { color: #ffffff; }
.vtheme .hero .hero-title .hl-mark { color: var(--v-navy); } /* destaque: navy sobre creme (como na landing) */

/* desktop: cabem os 4 serviços + CTA sem overflow */
@media (min-width: 992px) {
  .v-navbar .navbar-nav .nav-link { font-size: 0.78rem; letter-spacing: 0.1em; padding: 0.4rem 0.5rem; }
  .v-navbar .navbar-expand-lg .nav-item + .nav-item { margin-left: 0.7rem; }
  .v-navbar .v-cta-item { margin-left: 0.9rem; }
  .v-navbar .v-cta-item .v-btn-creme { padding: 0.7rem 1.1rem; font-size: 0.8rem; }
}

@media (min-width: 992px) {
  .v-navbar .navbar-nav .nav-link { font-size: 0.74rem; letter-spacing: 0.08em; padding: 0.35rem 0.42rem; }
  .v-navbar .navbar-expand-lg .nav-item + .nav-item { margin-left: 0.35rem; }
  .v-navbar .v-cta-item { margin-left: 0.7rem; }
  .v-navbar .v-cta-item .v-btn-creme { padding: 0.65rem 0.95rem; font-size: 0.76rem; }
}

/* ============================================================================
   NAVBAR — desktop: agora só Serviços/Contacto + CTA (menos itens ⇒ tipografia
   confortável) e submenu de marca para o pai "Serviços".
============================================================================ */
@media (min-width: 992px) {
  .v-navbar .navbar-nav .nav-link { font-size: 0.84rem; letter-spacing: 0.12em; padding: 0.45rem 0.6rem; }
  .v-navbar .navbar-expand-lg .nav-item + .nav-item { margin-left: 1.2rem; }
  .v-navbar .v-cta-item { margin-left: 1.6rem; }
  .v-navbar .v-cta-item .v-btn-creme { padding: 0.8rem 1.4rem; font-size: 0.84rem; }
}

/* pai de submenu */
.v-navbar .nav-item { position: relative; }
.v-navbar .nav-parent { display: inline-flex; align-items: center; gap: 0.4rem; cursor: pointer; }
.v-navbar .sub-nav-toggler { display: inline-flex; transition: transform 0.3s var(--ease, ease); }
.v-navbar .nav-parent[aria-expanded="true"] .sub-nav-toggler { transform: rotate(180deg); }

/* submenu (collapse do e107) — folha navy de marca */
.v-navbar .sub-menu {
  background: var(--v-navy);
  border: 1px solid rgba(232, 227, 206, 0.22);
  border-radius: 4px;
  padding: 0.5rem 0;
  min-width: 230px;
  box-shadow: 12px 12px 0 rgba(16, 36, 80, 0.12);
  z-index: 1040;
}
.v-navbar .sub-menu .nav-link { color: var(--v-creme); padding: 0.6rem 1.1rem; font-size: 0.8rem; letter-spacing: 0.1em; width: 100%; }
.v-navbar .sub-menu .nav-link:hover,
.v-navbar .sub-menu .nav-link:focus-visible { background: rgba(232, 227, 206, 0.12); color: #fff; }
@media (min-width: 992px) {
  .v-navbar .sub-menu.show { opacity: 1; visibility: visible; }
}
@media (max-width: 991.98px) {
  .v-navbar .sub-menu .nav-link { padding-left: 1.5rem; }
}

/* Submenu visível quando o collapse do e107 adiciona .show (override aeolus) */
.v-navbar .sub-menu.show {
  opacity: 1 !important;
  visibility: visible !important;
}
@media (min-width: 992px) {
  .v-navbar .sub-menu.show { display: block !important; height: auto !important; }
}

/* Submenu: marca Vianna's (sobrepor às regras aeolus) */
.v-navbar.navbar-area .sub-menu {
  background: var(--v-navy) !important;
  border: 1px solid rgba(232, 227, 206, 0.22) !important;
  border-radius: 4px !important;
  padding: 0.5rem 0 !important;
  box-shadow: 12px 12px 0 rgba(16, 36, 80, 0.12) !important;
}
.v-navbar.navbar-area .sub-menu .nav-link,
.v-navbar.navbar-area .sub-menu .nav-link:hover,
.v-navbar.navbar-area .sub-menu .nav-link:focus-visible {
  color: var(--v-creme) !important;
}
.v-navbar.navbar-area .sub-menu .nav-link:hover,
.v-navbar.navbar-area .sub-menu .nav-link:focus-visible {
  background: rgba(232, 227, 206, 0.14) !important;
  color: #fff !important;
}

/* ============================================================================
   SIGNIN ({SIGNIN} do e107, como no Aeolus) — login/registo e conta
============================================================================ */
.v-navbar .signin-item > .nav-link { display: inline-flex; align-items: center; gap: 0.4rem; }
.v-navbar .signin-item .dropdown-menu {
  background: var(--v-navy);
  border: 1px solid rgba(232, 227, 206, 0.22);
  border-radius: 4px;
  color: var(--v-creme);
}
.v-navbar .signin-item .dropdown-menu .form-control {
  background: rgba(240, 239, 235, 0.06);
  border: 1px solid rgba(232, 227, 206, 0.28);
  color: var(--v-creme);
}
.v-navbar .signin-item .dropdown-menu .form-control::placeholder { color: rgba(232, 227, 206, 0.6); }
.v-navbar .signin-item .dropdown-menu a,
.v-navbar .signin-item .dropdown-menu label,
.v-navbar .signin-item .dropdown-menu .login-page-signup-link,
.v-navbar .signin-item .dropdown-menu .login-page-fpw-link { color: var(--v-creme); }
.v-navbar .signin-item .dropdown-menu .primary-btn {
  background: var(--v-creme);
  border: 0;
  color: var(--v-navy);
  font-weight: 700;
  letter-spacing: 0.08em;
  padding: 0.55rem 1rem;
  width: 100%;
}
.v-navbar .signin-item .dropdown-menu input[type="submit"].primary-btn:hover { background: #fff; }
.v-navbar .signout-item .sub-menu { min-width: 250px; }
.v-navbar .signout-item .sub-menu a { color: var(--v-creme); }

/* ============================================================================
   Sprite de ícones: fora do fluxo (era um <svg> inline que criava uma linha
   de ~26px no topo do body e empurrava o hero, deixando ver o fundo claro).
============================================================================ */
body.vtheme > svg.ic-sprite,
svg.ic-sprite {
  position: absolute !important;
  width: 0 !important;
  height: 0 !important;
  overflow: hidden !important;
  pointer-events: none;
}

/* ============================================================================
   NAVBAR — CAPA AUTORITATIVA DE ESTADOS (última capa; replica a landing)
   · topo (home/cpage sobre hero navy): fixo, transparente, texto creme
   · .scrolled: fundo creme translúcido + texto/links navy
   · .nav-open: fundo navy + texto/links creme (menu colapsado aberto)
============================================================================ */
body .v-navbar.navbar-area {
  background: var(--v-navy);
  color: var(--v-creme);
}
body.layout-home .v-navbar.navbar-area,
body.layout-cpage .v-navbar.navbar-area {
  position: fixed !important;
  inset: 0 0 auto 0 !important;
  width: 100%;
  background: transparent !important;
}

body .v-navbar.navbar-area.scrolled,
body .v-navbar.navbar-area.sticky {
  background: rgba(240, 239, 235, 0.88) !important;
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid rgba(16, 36, 80, 0.16) !important;
  box-shadow: 0 1px 0 rgba(16, 36, 80, 0.04);
  color: var(--v-navy) !important;
}
body .v-navbar.navbar-area.nav-open {
  background: var(--v-navy) !important;
  border-bottom: 1px solid rgba(232, 227, 206, 0.22) !important;
  color: var(--v-creme) !important;
}

/* cores de texto/links por estado */
body .v-navbar.navbar-area .brand-word,
body .v-navbar.navbar-area .navbar-nav .nav-link,
body .v-navbar.navbar-area .navbar-nav a,
body .v-navbar.navbar-area .signin-item > .nav-link {
  color: var(--v-creme) !important;
}
body .v-navbar.navbar-area.scrolled .brand-word,
body .v-navbar.navbar-area.scrolled .navbar-nav .nav-link,
body .v-navbar.navbar-area.scrolled .navbar-nav a,
body .v-navbar.navbar-area.scrolled .signin-item > .nav-link,
body .v-navbar.navbar-area.sticky .brand-word,
body .v-navbar.navbar-area.sticky .navbar-nav .nav-link,
body .v-navbar.navbar-area.sticky .navbar-nav a {
  color: var(--v-navy) !important;
}
body .v-navbar.navbar-area.nav-open .brand-word,
body .v-navbar.navbar-area.nav-open .navbar-nav .nav-link,
body .v-navbar.navbar-area.nav-open .navbar-nav a,
body .v-navbar.navbar-area.nav-open .signin-item > .nav-link {
  color: var(--v-creme) !important;
}

/* hambúrguer: barras com a cor do estado */
body .v-navbar.navbar-area .navbar-toggler { color: inherit !important; }
body .v-navbar.navbar-area .navbar-toggler .toggler-icon i { background: currentColor !important; }

/* ============================================================================
   MOBILE — hambúrguer corrigido + menu com cor própria (distinto do hero navy)
   · hambúrguer: alvo 46×44, barras 20×2 com 4px reais de separação, X ao abrir
   · menu aberto: painel CREME (o hero é navy) com texto/CTA navy
============================================================================ */
@media (max-width: 991.98px) {
  body .v-navbar.navbar-area .navbar-toggler {
    min-height: 44px;
    width: 46px;
    padding: 0.55rem 0.6rem;
  }
  body .v-navbar.navbar-area .navbar-toggler .toggler-icon { gap: 0 !important; }
  body .v-navbar.navbar-area .navbar-toggler .toggler-icon i { margin-top: 4px; }
  body .v-navbar.navbar-area .navbar-toggler .toggler-icon i:first-child { margin-top: 0; }
  body .v-navbar.navbar-area .navbar-toggler[aria-expanded="true"] .toggler-icon i:nth-child(1) { transform: translateY(6px) rotate(45deg); }
  body .v-navbar.navbar-area .navbar-toggler[aria-expanded="true"] .toggler-icon i:nth-child(2) { opacity: 0; }
  body .v-navbar.navbar-area .navbar-toggler[aria-expanded="true"] .toggler-icon i:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

  /* menu aberto = painel creme (contrasta com o hero navy) */
  body .v-navbar.navbar-area.nav-open {
    background: var(--v-creme) !important;
    border-bottom: 1px solid rgba(16, 36, 80, 0.18) !important;
    color: var(--v-navy) !important;
  }
  body .v-navbar.navbar-area.nav-open .brand-word,
  body .v-navbar.navbar-area.nav-open .navbar-nav .nav-link,
  body .v-navbar.navbar-area.nav-open .navbar-nav a,
  body .v-navbar.navbar-area.nav-open .signin-item > .nav-link { color: var(--v-navy) !important; }
  body .v-navbar.navbar-area.nav-open .navbar-toggler { color: var(--v-navy) !important; }
  body .v-navbar.navbar-area.nav-open .navbar-collapse.show {
    background: transparent !important;
    border-top: 1px solid rgba(16, 36, 80, 0.16) !important;
  }
  /* CTA navy sobre o painel creme */
  body .v-navbar.navbar-area.nav-open .v-cta-item .v-btn-creme {
    background: var(--v-navy) !important;
    color: var(--v-creme) !important;
  }
  /* submenu inline (Serviços) no painel creme */
  body .v-navbar.navbar-area.nav-open .sub-menu {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    padding: 0 0 0 0.9rem !important;
    min-width: 0 !important;
  }
  body .v-navbar.navbar-area.nav-open .sub-menu .nav-link { color: var(--v-navy) !important; }
  body .v-navbar.navbar-area.nav-open .sub-menu .nav-link:hover { background: rgba(16, 36, 80, 0.08) !important; color: var(--v-navy) !important; }
}

/* ============================================================================
   MOBILE — correcções deterministas (aeolus punha o painel em top:106px e
   rodava o .toggler-icon, quebrando o X)
============================================================================ */
@media (max-width: 991.98px) {
  /* Painel do menu: encosta à barra e tem fundo próprio (creme) */
  body .v-navbar.navbar-area .navbar-collapse,
  body .v-navbar.navbar-area .navbar-collapse.show,
  body .v-navbar.navbar-area .navbar-collapse.collapsing {
    position: absolute !important;
    top: 100% !important;
    left: 0 !important;
    right: 0 !important;
    margin: 0 !important;
    background: var(--v-creme) !important;
    border-top: 1px solid rgba(16, 36, 80, 0.14) !important;
    box-shadow: 0 16px 26px rgba(16, 36, 80, 0.14) !important;
    padding: 0.75rem 1rem 1rem !important;
    z-index: 5;
  }

  /* Hambúrguer determinista: ícone neutro + barras absolutas + X exacto */
  body .v-navbar.navbar-area .navbar-toggler .toggler-icon {
    position: relative !important;
    top: 0 !important;
    margin: 0 !important;
    transform: none !important;
    display: block !important;
    width: 20px;
    height: 14px;
    gap: 0 !important;
  }
  body .v-navbar.navbar-area .navbar-toggler .toggler-icon i {
    position: absolute !important;
    left: 0 !important;
    width: 20px !important;
    height: 2px !important;
    margin: 0 !important;
    top: 0;
    background: currentColor !important;
    transform: none;
    opacity: 1;
    transition: transform 0.3s var(--ease, ease), opacity 0.3s var(--ease, ease);
  }
  body .v-navbar.navbar-area .navbar-toggler .toggler-icon i:nth-child(2) { top: 6px; }
  body .v-navbar.navbar-area .navbar-toggler .toggler-icon i:nth-child(3) { top: 12px; }

  body .v-navbar.navbar-area .navbar-toggler[aria-expanded="true"] .toggler-icon { transform: none !important; }
  body .v-navbar.navbar-area .navbar-toggler[aria-expanded="true"] .toggler-icon i:nth-child(1) { transform: translateY(6px) rotate(45deg) !important; }
  body .v-navbar.navbar-area .navbar-toggler[aria-expanded="true"] .toggler-icon i:nth-child(2) { opacity: 0 !important; }
  body .v-navbar.navbar-area .navbar-toggler[aria-expanded="true"] .toggler-icon i:nth-child(3) { transform: translateY(-6px) rotate(-45deg) !important; }
}

/* Painel do menu aberto: fundo creme (sobrepõe a regra transparente anterior) */
@media (max-width: 991.98px) {
  body .v-navbar.navbar-area.nav-open .navbar-collapse,
  body .v-navbar.navbar-area.nav-open .navbar-collapse.show,
  body .v-navbar.navbar-area.nav-open .navbar-collapse.collapsing {
    background: var(--v-creme) !important;
    border-top: 1px solid rgba(16, 36, 80, 0.14) !important;
  }
}

/* ============================================================================
   NAVBAR — hover com tinte próprio por superfície + chevron do pai alinhado
============================================================================ */
/* Hover em superfícies NAVY (topo sobre hero + submenu navy): tinte creme */
body .v-navbar.navbar-area:not(.scrolled):not(.nav-open) .navbar-nav .nav-link:hover,
body .v-navbar.navbar-area:not(.scrolled):not(.nav-open) .navbar-nav .nav-link:focus-visible,
body .v-navbar.navbar-area .sub-menu .nav-link:hover,
body .v-navbar.navbar-area .sub-menu .nav-link:focus-visible {
  color: #fff !important;
  background: rgba(232, 227, 206, 0.14) !important;
  text-decoration: none !important;
  border-radius: 2px;
}
/* Hover em superfícies CREME (scrolled + menu móvel aberto): tinte navy */
body .v-navbar.navbar-area.scrolled .navbar-nav .nav-link:hover,
body .v-navbar.navbar-area.scrolled .navbar-nav .nav-link:focus-visible,
body .v-navbar.navbar-area.nav-open .navbar-nav .nav-link:hover,
body .v-navbar.navbar-area.nav-open .navbar-nav .nav-link:focus-visible {
  color: var(--v-navy) !important;
  background: rgba(16, 36, 80, 0.08) !important;
  text-decoration: none !important;
  border-radius: 2px;
}
/* Link activo: só cor, sem sublinhado */
body .v-navbar.navbar-area .navbar-nav .nav-link.is-active { text-decoration: none !important; }

/* Chevron do pai (Serviços): em fluxo, encostado à direita, sem sobrepor o texto */
body .v-navbar.navbar-area .navbar-collapse .nav-parent {
  display: flex !important;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  width: 100%;
}
body .v-navbar.navbar-area .navbar-collapse .nav-parent .sub-nav-toggler {
  position: static !important;
  right: auto !important;
  margin: 0 0 0 auto !important;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  flex: none;
  transition: transform 0.3s var(--ease, ease);
}
body .v-navbar.navbar-area .navbar-collapse .nav-parent[aria-expanded="true"] .sub-nav-toggler { transform: rotate(180deg); }

/* Mobile: filas do menu a toda a largura (chevron do pai no extremo direito) */
@media (max-width: 991.98px) {
  body .v-navbar.navbar-area .navbar-collapse .navbar-nav { align-items: stretch !important; width: 100% !important; }
  body .v-navbar.navbar-area .navbar-collapse .navbar-nav .nav-item { width: 100%; }
  body .v-navbar.navbar-area .navbar-collapse .nav-parent { width: 100% !important; }
}

/* ============================================================================
   NAVBAR — submenu alinhado ao pai + chevron sem reflujo (não altera o layout)
   Aeolus usava: .navbar-two ... .sub-menu { right:0; width:260px } ⇒ left:-138px
============================================================================ */
@media (min-width: 992px) {
  /* dropdown ancorado sob o próprio item "Serviços" */
  body .v-navbar.navbar-two .navbar .navbar-nav .nav-item .sub-menu,
  body .v-navbar.navbar-area .navbar-nav .nav-item > .sub-menu {
    left: 0 !important;
    right: auto !important;
    top: 100% !important;
    width: auto !important;
    min-width: 230px;
  }
  /* chevron: absoluto à direita, centrado por translate (rotação preserva o centrado) */
  body .v-navbar.navbar-area .navbar-collapse .nav-item > .nav-link.nav-parent {
    position: relative;
    padding-right: 1.7rem;
  }
  body .v-navbar.navbar-area .navbar-collapse .nav-item > .nav-link.nav-parent .sub-nav-toggler {
    position: absolute !important;
    right: 0.15rem !important;
    top: 50% !important;
    margin: 0 !important;
    width: 20px;
    height: 20px;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    transform: translateY(-50%);
    transform-origin: center;
  }
  body .v-navbar.navbar-area .navbar-collapse .nav-item > .nav-link.nav-parent[aria-expanded="true"] .sub-nav-toggler {
    transform: translateY(-50%) rotate(180deg);
  }
}
@media (max-width: 991.98px) {
  body .v-navbar.navbar-area .navbar-collapse .nav-item > .nav-link.nav-parent .sub-nav-toggler {
    transform-origin: center;
    flex: none;
  }
  body .v-navbar.navbar-area .navbar-collapse .nav-item > .nav-link.nav-parent[aria-expanded="true"] .sub-nav-toggler {
    transform: rotate(180deg);
  }
}

/* ============================================================================
   MOBILE — painel do menu a 100% de largura (sem faixas laterais) e linhas
   uniformes; filhos do submenu com sangria coerente; login inline
============================================================================ */
@media (max-width: 991.98px) {
  /* o painel passa a ser relativo à SECTION (barra fixa) */
  body .v-navbar.navbar-area > .container,
  body .v-navbar.navbar-area .navbar { position: static !important; }

  body .v-navbar.navbar-area .navbar-collapse,
  body .v-navbar.navbar-area .navbar-collapse.show,
  body .v-navbar.navbar-area .navbar-collapse.collapsing {
    position: absolute !important;
    left: 0 !important;
    right: 0 !important;
    top: 100% !important;
    width: 100% !important;
    margin: 0 !important;
    border-radius: 0 !important;
    background: var(--v-creme) !important;
    border-top: 1px solid rgba(16, 36, 80, 0.14) !important;
    box-shadow: 0 18px 26px rgba(16, 36, 80, 0.16) !important;
    padding: 0.4rem 0 0.9rem !important;
  }

  /* linhas a toda a largura, sem margens herdadas */
  body .v-navbar.navbar-area .navbar-collapse .navbar-nav {
    width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    align-items: stretch !important;
  }
  body .v-navbar.navbar-area .navbar-collapse .navbar-nav > li { margin: 0 !important; }
  body .v-navbar.navbar-area .navbar-collapse .navbar-nav .nav-link {
    width: 100% !important;
    padding: 0.85rem 1.25rem !important;
    border-radius: 0 !important;
  }
  body .v-navbar.navbar-area .navbar-collapse .nav-parent { padding-right: 3.2rem !important; }
  body .v-navbar.navbar-area .navbar-collapse .nav-parent .sub-nav-toggler { right: 1.1rem !important; }

  /* filhos do submenu: fundo próprio + sangria consistente */
  body .v-navbar.navbar-area .navbar-collapse .sub-menu {
    background: rgba(16, 36, 80, 0.05) !important;
    border: 0 !important;
    box-shadow: none !important;
    padding: 0.25rem 0 !important;
    min-width: 0 !important;
  }
  body .v-navbar.navbar-area .navbar-collapse .sub-menu .nav-link {
    padding: 0.7rem 1.25rem 0.7rem 2.4rem !important;
    font-size: 0.95rem !important;
  }

  /* login: dropdown inline dentro do painel */
  body .v-navbar.navbar-area .navbar-collapse .signin-item .dropdown-menu {
    position: static !important;
    float: none !important;
    width: 100% !important;
    min-width: 0 !important;
    margin: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    background: rgba(16, 36, 80, 0.05) !important;
  }
  body .v-navbar.navbar-area .navbar-collapse .signin-item .dropdown-menu .primary-btn { width: calc(100% - 1rem); margin: 0 0.5rem; }
}

/* Foco: sem anel ao clicar (só teclado) — evita "mudar o css" no clique */
body .v-navbar.navbar-area .navbar-nav .nav-link:focus:not(:focus-visible),
body .v-navbar.navbar-area .navbar-toggler:focus:not(:focus-visible) {
  outline: none !important;
  box-shadow: none !important;
}

/* ============================================================================
   NAVBAR — sem chevron e sem clique que altere o layout
   · Desktop: submenu abre por hover/foco (overlay absoluto, zero reflow)
   · Mobile : filhos sempre visíveis (o clique não muda nada)
============================================================================ */
body .v-navbar.navbar-area .sub-nav-toggler { display: none !important; }
body .v-navbar.navbar-area .navbar-collapse .nav-item > .nav-link.nav-parent { padding-right: 1.25rem !important; }

@media (min-width: 992px) {
  /* estado fechado: inclui .show (o clique não revela) */
  body .v-navbar.navbar-area .navbar-nav .nav-item > .sub-menu,
  body .v-navbar.navbar-area .navbar-nav .nav-item > .sub-menu.show {
    opacity: 0 !important;
    visibility: hidden !important;
    transform: translateY(6px);
    transition: opacity 0.25s var(--ease, ease), transform 0.25s var(--ease, ease), visibility 0.25s;
  }
  /* revela apenas com hover/foco — sem reflow */
  body .v-navbar.navbar-area .navbar-nav .nav-item:hover > .sub-menu,
  body .v-navbar.navbar-area .navbar-nav .nav-item:focus-within > .sub-menu {
    opacity: 1 !important;
    visibility: visible !important;
    transform: translateY(0);
  }
}

@media (max-width: 991.98px) {
  /* filhos sempre visíveis: o clique no pai não altera nada */
  body .v-navbar.navbar-area .navbar-collapse .sub-menu,
  body .v-navbar.navbar-area .navbar-collapse .sub-menu.collapse,
  body .v-navbar.navbar-area .navbar-collapse .sub-menu.collapse:not(.show),
  body .v-navbar.navbar-area .navbar-collapse .sub-menu.show,
  body .v-navbar.navbar-area .navbar-collapse .sub-menu.collapsing {
    display: block !important;
    height: auto !important;
    opacity: 1 !important;
    visibility: visible !important;
    overflow: visible !important;
    background: rgba(16, 36, 80, 0.05) !important;
    border: 0 !important;
    box-shadow: none !important;
  }
}

/* ============================================================================
   FINAL — resolve conflitos de especificidade e do CSS inline do theme.php
   · chevron do pai: escondido (regra antiga de 5 classes ganhava por especificidade)
   · navbar: z-index de marca (theme.php injetava z-index:99 inline, depois dos links)
============================================================================ */
body .v-navbar.navbar-area .navbar-collapse .nav-item > .nav-link.nav-parent .sub-nav-toggler,
body .v-navbar.navbar-area .navbar-collapse .nav-parent .sub-nav-toggler,
body .v-navbar.navbar-area .sub-nav-toggler {
  display: none !important;
  width: 0 !important;
  height: 0 !important;
  visibility: hidden !important;
}
body .v-navbar.navbar-area { z-index: 1030 !important; }

/* ============================================================================
   NAVBAR — independiente do nome do layout (e107 pode reportar layout-full
   mesmo servindo home_layout.html). Detecta a página pelo hero presente.
============================================================================ */
body:has(.v-hero) .v-navbar.navbar-area,
body:has(.hero) .v-navbar.navbar-area,
body:has(.v-spage-hero) .v-navbar.navbar-area {
  position: fixed !important;
  inset: 0 0 auto 0 !important;
  width: 100%;
  background: transparent !important;
  border-bottom-color: transparent !important;
}
body:has(.v-hero) .v-navbar.navbar-area.scrolled,
body:has(.hero) .v-navbar.navbar-area.scrolled,
body:has(.v-spage-hero) .v-navbar.navbar-area.scrolled {
  background: rgba(240, 239, 235, 0.88) !important;
  border-bottom: 1px solid rgba(16, 36, 80, 0.16) !important;
}
body:has(.v-hero) .v-navbar.navbar-area.nav-open,
body:has(.hero) .v-navbar.navbar-area.nav-open,
body:has(.v-spage-hero) .v-navbar.navbar-area.nav-open {
  background: var(--v-creme) !important;
}

/* ============================================================================
   NAVBAR — estados como a landing ORIGINAL (medido):
     · topo .......... transparente + links crema
     · scroll ........ fundo creme + links navy
     · menu aberto ... fundo NAVY + links crema   ← (antes estava creme: errado)
   Clicar em "Serviços" não muda a cor da barra.
============================================================================ */
@media (max-width: 991.98px) {
  body .v-navbar.navbar-area.nav-open {
    background: var(--v-navy) !important;
    border-bottom: 1px solid rgba(232, 227, 206, 0.22) !important;
    color: var(--v-creme) !important;
  }
  body .v-navbar.navbar-area.nav-open .brand-word,
  body .v-navbar.navbar-area.nav-open .navbar-nav .nav-link,
  body .v-navbar.navbar-area.nav-open .navbar-nav a,
  body .v-navbar.navbar-area.nav-open .signin-item > .nav-link { color: var(--v-creme) !important; }
  body .v-navbar.navbar-area.nav-open .navbar-toggler { color: var(--v-creme) !important; }

  /* painel do menu: mesma folha navy, apenas com hairline de separação */
  body .v-navbar.navbar-area.nav-open .navbar-collapse,
  body .v-navbar.navbar-area.nav-open .navbar-collapse.show,
  body .v-navbar.navbar-area.nav-open .navbar-collapse.collapsing {
    background: var(--v-navy) !important;
    border-top: 1px solid rgba(232, 227, 206, 0.18) !important;
    box-shadow: 0 18px 26px rgba(10, 23, 51, 0.35) !important;
  }
  /* CTA creme sobre navy */
  body .v-navbar.navbar-area.nav-open .v-cta-item .v-btn-creme {
    background: var(--v-creme) !important;
    color: var(--v-navy) !important;
  }
  /* filhos do submenu (Serviços): tom próprio + links creme */
  body .v-navbar.navbar-area.nav-open .sub-menu,
  body .v-navbar.navbar-area.nav-open .sub-menu.show,
  body .v-navbar.navbar-area.nav-open .sub-menu.collapse,
  body .v-navbar.navbar-area.nav-open .sub-menu.collapse:not(.show) {
    background: rgba(232, 227, 206, 0.06) !important;
    border: 0 !important;
    box-shadow: none !important;
  }
  body .v-navbar.navbar-area.nav-open .sub-menu .nav-link { color: var(--v-creme) !important; }
  body .v-navbar.navbar-area.nav-open .sub-menu .nav-link:hover { background: rgba(232, 227, 206, 0.14) !important; color: #fff !important; }
}

/* Menú aberto = navy (mesma especificidade das regras :has() anteriores, mas depois) */
body:has(.v-hero) .v-navbar.navbar-area.nav-open,
body:has(.hero) .v-navbar.navbar-area.nav-open,
body:has(.v-spage-hero) .v-navbar.navbar-area.nav-open,
body.layout-home .v-navbar.navbar-area.nav-open,
body.layout-cpage .v-navbar.navbar-area.nav-open,
body .v-navbar.navbar-area.nav-open {
  background: var(--v-navy) !important;
  border-bottom: 1px solid rgba(232, 227, 206, 0.22) !important;
}

/* ============================================================================
   NAVBAR — decisão do cliente: com scroll a barra fica NAVY e os links CREME
   (a landing original usava creme na barra; aqui mantém-se o azul da marca)
============================================================================ */
body .v-navbar.navbar-area.scrolled,
body .v-navbar.navbar-area.sticky,
body:has(.v-hero) .v-navbar.navbar-area.scrolled,
body:has(.hero) .v-navbar.navbar-area.scrolled,
body:has(.v-spage-hero) .v-navbar.navbar-area.scrolled,
body.layout-home .v-navbar.navbar-area.scrolled,
body.layout-cpage .v-navbar.navbar-area.scrolled {
  background: var(--v-navy) !important;
  border-bottom: 1px solid rgba(232, 227, 206, 0.18) !important;
  box-shadow: 0 10px 24px rgba(10, 23, 51, 0.28) !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}
body .v-navbar.navbar-area.scrolled .brand-word,
body .v-navbar.navbar-area.scrolled .navbar-nav .nav-link,
body .v-navbar.navbar-area.scrolled .navbar-nav a,
body .v-navbar.navbar-area.scrolled .signin-item > .nav-link,
body .v-navbar.navbar-area.sticky .brand-word,
body .v-navbar.navbar-area.sticky .navbar-nav .nav-link,
body .v-navbar.navbar-area.sticky .navbar-nav a {
  color: var(--v-creme) !important;
}
body .v-navbar.navbar-area.scrolled .navbar-nav .nav-link:hover,
body .v-navbar.navbar-area.scrolled .navbar-nav .nav-link:focus-visible {
  color: #fff !important;
  background: rgba(232, 227, 206, 0.14) !important;
}
body .v-navbar.navbar-area.scrolled .sub-menu { border-color: rgba(232, 227, 206, 0.3) !important; }

/* Contrastes: cor do estado (currentColor) para hambúrguer/signin + CTA sempre navy sobre creme */
body .v-navbar.navbar-area.scrolled,
body .v-navbar.navbar-area.sticky,
body .v-navbar.navbar-area.nav-open { color: var(--v-creme) !important; }

body .v-navbar.navbar-area .v-cta-item .v-btn-creme,
body .v-navbar.navbar-area .v-cta-item .v-btn-creme:hover,
body .v-navbar.navbar-area .v-cta-item .v-btn-creme:focus-visible {
  color: var(--v-navy) !important;
}

/* CTA em estado scroll/aberto: botão creme ⇒ texto navy (mesma especificidade das regras de links) */
body .v-navbar.navbar-area.scrolled .v-cta-item .v-btn-creme,
body .v-navbar.navbar-area.sticky .v-cta-item .v-btn-creme,
body .v-navbar.navbar-area.nav-open .v-cta-item .v-btn-creme,
body:has(.v-hero) .v-navbar.navbar-area.scrolled .v-cta-item .v-btn-creme,
body.layout-home .v-navbar.navbar-area.scrolled .v-cta-item .v-btn-creme {
  color: var(--v-navy) !important;
}

/* Escritório: .nav-open é conceito MOBILE — nunca altera a barra no desktop */
@media (min-width: 992px) {
  body .v-navbar.navbar-area.nav-open,
  body.layout-home .v-navbar.navbar-area.nav-open,
  body.layout-cpage .v-navbar.navbar-area.nav-open,
  body:has(.v-hero) .v-navbar.navbar-area.nav-open,
  body:has(.hero) .v-navbar.navbar-area.nav-open {
    background: transparent !important;
    border-bottom-color: transparent !important;
    color: var(--v-creme) !important;
  }
  body .v-navbar.navbar-area.nav-open.scrolled,
  body .v-navbar.navbar-area.nav-open.sticky { background: var(--v-navy) !important; }
  body .v-navbar.navbar-area.nav-open .navbar-nav .nav-link,
  body .v-navbar.navbar-area.nav-open .brand-word { color: var(--v-creme) !important; }
}

/* ============================================================================
   NAVBAR — convenção NATIVA e107: pai com submenu mostra .sub-nav-toggler
   (chevron LineIcons) e usa o collapse do Bootstrap; aria-expanded controla o X.
   Aqui apenas se mostra o chevron sem afetar o fluxo do texto.
============================================================================ */
body .v-navbar.navbar-area .navbar-collapse .nav-item > .nav-link.nav-parent,
body .v-navbar.navbar-area .navbar-collapse .nav-parent {
  position: relative !important;
  display: flex !important;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  padding-right: 1.9rem !important;
}
body .v-navbar.navbar-area .navbar-collapse .nav-item > .nav-link.nav-parent .sub-nav-toggler,
body .v-navbar.navbar-area .navbar-collapse .nav-parent .sub-nav-toggler,
body .v-navbar.navbar-area .sub-nav-toggler {
  display: inline-flex !important;
  visibility: visible !important;
  position: absolute !important;
  right: 0.55rem !important;
  top: 50% !important;
  margin: 0 !important;
  width: 18px !important;
  height: 18px !important;
  align-items: center;
  justify-content: center;
  pointer-events: none;               /* o clique pertence ao <a> (nativo) */
  opacity: 0.9;
  transform: translateY(-50%) rotate(0deg);
  transform-origin: center;
  transition: transform 0.3s var(--ease, ease);
}
body .v-navbar.navbar-area .navbar-collapse .nav-item > .nav-link.nav-parent[aria-expanded="true"] .sub-nav-toggler,
body .v-navbar.navbar-area .navbar-collapse .nav-parent[aria-expanded="true"] .sub-nav-toggler {
  transform: translateY(-50%) rotate(180deg);
}
/* Escritório: o collapse nativo (.show) também abre o submenu, além do hover */
@media (min-width: 992px) {
  body .v-navbar.navbar-area .navbar-nav .nav-item > .sub-menu.show {
    opacity: 1 !important;
    visibility: visible !important;
    transform: translateY(0);
  }
}
/* Mobile: volta ao collapse nativo (filhos abrem/fecham com o pai) */
@media (max-width: 991.98px) {
  body .v-navbar.navbar-area .navbar-collapse .sub-menu.collapse:not(.show) { display: none !important; }
  body .v-navbar.navbar-area .navbar-collapse .sub-menu.show {
    display: block !important;
    height: auto !important;
    opacity: 1 !important;
    visibility: visible !important;
  }
  body .v-navbar.navbar-area .navbar-collapse .nav-item > .nav-link.nav-parent,
  body .v-navbar.navbar-area .navbar-collapse .nav-parent { padding-right: 2.8rem !important; }
  body .v-navbar.navbar-area .navbar-collapse .nav-parent .sub-nav-toggler { right: 1.15rem !important; }
}

/* ============================================================================
   NAVBAR — TIPOGRAFIA ÚNICA + ícone nativo sem folga extra + chevron no menu
   de conta (sessão iniciada) sem sobrepor o nome ("Admin")
============================================================================ */
body .v-navbar.navbar-area .navbar-nav .nav-link,
body .v-navbar.navbar-area .navbar-nav .nav-link .nav-label,
body .v-navbar.navbar-area .signin-item > .nav-link,
body .v-navbar.navbar-area .signout-item > a,
body .v-navbar.navbar-area .sub-menu .nav-link {
  font-family: var(--font-disp, "League Spartan", Arial, sans-serif) !important;
  font-size: 0.84rem !important;
  font-weight: 600 !important;
  letter-spacing: 0.12em !important;
  text-transform: uppercase !important;
  line-height: 1.2 !important;
}
@media (max-width: 991.98px) {
  body .v-navbar.navbar-area .navbar-nav .nav-link,
  body .v-navbar.navbar-area .sub-menu .nav-link { font-size: 0.96rem !important; }
}

/* ícone nativo: sem margem de aeolus; espaçamento controlado por gap */
body .v-navbar.navbar-area .navbar-nav .nav-link {
  display: inline-flex !important;
  align-items: center;
  gap: 0.45rem;
}
body .v-navbar.navbar-area .navbar-nav .nav-link > i,
body .v-navbar.navbar-area .navbar-nav .nav-link > svg,
body .v-navbar.navbar-area .navbar-nav .nav-link > img {
  margin: 0 !important;
  padding: 0 !important;
  flex: none;
  width: auto !important;
  height: auto !important;
  font-size: 0.95em;
  line-height: 1;
}
body .v-navbar.navbar-area .navbar-nav .nav-link > i.fa-fw { width: 1.05em !important; text-align: center; }
body .v-navbar.navbar-area .navbar-nav .nav-label { white-space: nowrap; }

/* qualquer link do menu que tenha chevron ganha espaço à direita (nativo) */
body .v-navbar.navbar-area .navbar-nav > li > a:has(.sub-nav-toggler),
body .v-navbar.navbar-area .navbar-collapse .signout-item > a,
body .v-navbar.navbar-area .navbar-collapse .nav-parent {
  position: relative !important;
  padding-right: 2rem !important;
}
/* folga antes do CTA "Pedir orçamento" */
body .v-navbar.navbar-area .v-cta-item { margin-left: 1.6rem !important; }

/* O <a> nativo do e107 não tem classe: garantir caixa flex para o chevron
   reservar espaço (evita sobrepor o nome "Admin" no menu de conta) */
body .v-navbar.navbar-area .navbar-nav > li > a:has(.sub-nav-toggler),
body .v-navbar.navbar-area .navbar-collapse .signout-item > a,
body .v-navbar.navbar-area .navbar-collapse .nav-parent {
  display: inline-flex !important;
  align-items: center;
  gap: 0.45rem;
}

/* Submenu: ícone + etiqueta juntos (aeolus usava justify-content:space-between,
   que abria 64px entre o ícone e a palavra). O chevron do pai continua à direita. */
body .v-navbar.navbar-area .sub-menu .nav-link {
  justify-content: flex-start !important;
  width: 100%;
}
body .v-navbar.navbar-area .sub-menu .nav-link .nav-label { margin: 0; }

/* Mobile: submenu com ícone+texto alinhados à esquerda (aeolus usava space-between) */
body .v-navbar.navbar-area .navbar-collapse .sub-menu li > .nav-link {
  justify-content: flex-start !important;
  text-align: left;
}

/* Mobile: aeolus esconde os ícones do submenu; restaurar (ícone nativo do link) */
body .v-navbar.navbar-two .navbar .navbar-nav .nav-item .sub-menu li a i,
body .v-navbar.navbar-area .navbar-collapse .sub-menu li > .nav-link > i {
  display: inline-block !important;
  margin: 0 !important;
  padding: 0 !important;
  width: 1.05em !important;
  text-align: center;
}

/* Mobile: separar o CTA "Pedir orçamento" (e o último item) das bordas do painel */
@media (max-width: 991.98px) {
  body .v-navbar.navbar-area .navbar-collapse .v-cta-item {
    padding: 0 1.25rem 0.35rem !important;
    margin: 0 !important;
  }
  body .v-navbar.navbar-area .navbar-collapse .v-cta-item .v-btn-creme {
    width: 100% !important;
    justify-content: center;
  }
  /* respiro lateral também nos itens de login/conta */
  body .v-navbar.navbar-area .navbar-collapse .signin-item > .nav-link,
  body .v-navbar.navbar-area .navbar-collapse .signout-item > a { padding-left: 1.25rem !important; }
}

/* ============================================================================
   NAVBAR — tipografia única em TODO o painel de conta/PM (e107 nativo:
   os itens do submenu não têm .nav-link, por isso escapavam à regra)
============================================================================ */
body .v-navbar.navbar-area .navbar-nav .sub-menu a,
body .v-navbar.navbar-area .navbar-nav .dropdown-menu a,
body .v-navbar.navbar-area .navbar-nav .sub-menu a:hover,
body .v-navbar.navbar-area .navbar-nav .dropdown-menu a:hover {
  font-family: var(--font-disp, "League Spartan", Arial, sans-serif) !important;
  font-size: 0.84rem !important;
  font-weight: 600 !important;
  letter-spacing: 0.12em !important;
  text-transform: uppercase !important;
  line-height: 1.25 !important;
  display: inline-flex !important;
  align-items: center;
  gap: 0.45rem;
  width: 100%;
}
body .v-navbar.navbar-area .navbar-nav .sub-menu a > span,
body .v-navbar.navbar-area .navbar-nav .dropdown-menu a > span { display: inline-flex; align-items: center; }
body .v-navbar.navbar-area .navbar-nav .sub-menu a > span > i,
body .v-navbar.navbar-area .navbar-nav .dropdown-menu a > span > i { font-size: 0.95em; line-height: 1; margin: 0; }
body .v-navbar.navbar-area .navbar-nav .sub-menu .divider {
  height: 1px;
  margin: 0.35rem 0;
  background: rgba(232, 227, 206, 0.18);
  list-style: none;
}

/* ============================================================================
   NAVBAR — páginas internas (cpage/serviço e layouts com hero de marca):
   barra ESTÁTICA (não permanece fixa no scroll). A home mantém-se fixa.
============================================================================ */
body.layout-cpage .v-navbar.navbar-area,
body:has(.v-spage-hero) .v-navbar.navbar-area {
  position: static !important;
  inset: auto !important;
  width: 100%;
  background: var(--v-navy) !important;
  color: var(--v-creme) !important;
  border-bottom: 1px solid rgba(232, 227, 206, 0.14) !important;
}
body.layout-cpage .v-navbar.navbar-area.scrolled,
body:has(.v-spage-hero) .v-navbar.navbar-area.scrolled { background: var(--v-navy) !important; }
body.layout-cpage .v-navbar.navbar-area .navbar-collapse.show,
body:has(.v-spage-hero) .v-navbar.navbar-area .navbar-collapse.show { background: var(--v-navy) !important; }

/* ============================================================================
   NAVBAR — páginas internas: STICKY (fica fixo ao rolar) sem deslocar conteúdo.
   Mecanismo nativo e107: pref 'stickynavbar' + js/stickynavbar.js (Aeolus).
   Aqui usamos o nosso js/viannas.js (addEventListener, sem conflito com
   backtotop.js) que aplica .scrolled/.sticky; o CSS decide o posicionamento.
============================================================================ */
body.layout-cpage .v-navbar.navbar-area,
body:has(.v-spage-hero) .v-navbar.navbar-area {
  position: sticky !important;
  top: 0 !important;
  inset: 0 0 auto 0 !important;
  width: 100%;
  z-index: 1030;
  background: var(--v-navy) !important;
  color: var(--v-creme) !important;
  border-bottom: 1px solid rgba(232, 227, 206, 0.14) !important;
}

/* Generalização: navbar STICKY em todos os layouts internos (full, cpage,
   sidebar_right, bare, splash). A home mantém-se fixa/transparente (landing). */
body:not(.layout-home) .v-navbar.navbar-area {
  position: sticky !important;
  top: 0 !important;
  inset: 0 0 auto 0 !important;
  width: 100%;
  z-index: 1030;
  background: var(--v-navy) !important;
  color: var(--v-creme) !important;
  border-bottom: 1px solid rgba(232, 227, 206, 0.14) !important;
}
body:not(.layout-home) .v-navbar.navbar-area .brand-word,
body:not(.layout-home) .v-navbar.navbar-area .navbar-nav .nav-link,
body:not(.layout-home) .v-navbar.navbar-area .signin-item > .nav-link { color: var(--v-creme) !important; }

/* ============================================================================
   BACK-TO-TOP (.btn-scroll-top) — marca + aparecer só depois de rolar
   (Aeolus deixava-o sempre visível e verde; css/backtotop.css não é carregado)
============================================================================ */
body .btn-scroll-top {
  position: fixed !important;
  right: 30px;
  bottom: 30px;
  z-index: 1040;
  width: 50px;
  height: 50px;
  padding: 0 !important;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  background: var(--v-navy) !important;
  color: var(--v-creme) !important;
  border: 1px solid rgba(232, 227, 206, 0.35) !important;
  border-radius: 4px !important;
  box-shadow: 10px 10px 0 rgba(16, 36, 80, 0.10) !important;
  opacity: 0;
  visibility: hidden;
  transform: translateY(12px);
  transition: opacity 0.3s var(--ease, ease), transform 0.3s var(--ease, ease), visibility 0.3s, background-color 0.3s, color 0.3s;
}
body .btn-scroll-top.is-visible { opacity: 1; visibility: visible; transform: translateY(0); }
body .btn-scroll-top:hover,
body .btn-scroll-top:focus-visible { background: var(--v-creme) !important; color: var(--v-navy) !important; }
body .btn-scroll-top i { color: inherit !important; font-size: 18px; line-height: 1; }

/* ---------------------------------------------------------------------------
   CTA do NAVBAR — altura normal (o Aeolus aplica .nav-item > a { padding:28px 8px }
   a TODOS os anchors, incluindo o botão, e ele enchia a barra toda).
   Mesmo padding do original: 9.92px 16.8px (≈35px de altura).
--------------------------------------------------------------------------- */
.v-navbar.navbar-area .navbar-nav .v-cta-item > a.v-btn-creme,
.v-navbar.navbar-area .navbar-nav .v-cta-item > a.btn,
.v-navbar.navbar-area .navbar-nav .v-cta-item > .v-btn-creme {
  padding: 0.53rem 1.05rem !important;
  line-height: 1 !important;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  height: auto !important;
  border-radius: 3px !important;
  align-self: center;
}
.v-navbar.navbar-area .v-cta-item { display: flex; align-items: center; }

/* ---------------------------------------------------------------------------
   FOOTER — valores largos (email/telefone obfuscados) têm de poder quebrar
   em colunas estreitas (mobile), senão geram overflow horizontal.
--------------------------------------------------------------------------- */
.site-footer .footer-links-contacts,
.site-footer .footer-links-contacts li,
.site-footer .footer-links-contacts a { overflow-wrap: anywhere; word-break: break-word; }

/* ---------------------------------------------------------------------------
   FOOTER — jerarquía de los títulos de columna (devem ser MAIORES que os links)
   e cor legível sobre o fundo navy.
--------------------------------------------------------------------------- */
.site-footer .footer-h {
  font-size: 1.15rem;          /* 18.4px (links 15.2px) */
  letter-spacing: 0.12em;
  color: var(--v-creme);
  margin: 0 0 1rem;
}
.site-footer .footer-links a,
.site-footer .footer-links .footer-muted { font-size: 0.95rem; }
.site-footer .footer-links-legal li { margin-bottom: 0.5rem; }

/* ---------------------------------------------------------------------------
   FOOTER · iconos sociales (columna 1, {XURL_ICONS: template=footer})
--------------------------------------------------------------------------- */
.footer-social { margin-top: 1.5rem; }
.footer-social .social,
.footer-social ul {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
  margin: 0;
  padding: 0;
}
.footer-social .social li { margin: 0; }
.footer-social .social-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border: 1px solid rgba(232, 227, 206, 0.35);
  border-radius: 3px;
  color: var(--v-taupe);
  text-decoration: none;
  transition: background-color 0.25s var(--ease), color 0.25s var(--ease), border-color 0.25s var(--ease);
}
.footer-social .social-icon:hover,
.footer-social .social-icon:focus-visible {
  background: var(--v-creme);
  border-color: var(--v-creme);
  color: var(--v-navy);
}
.footer-social .social-icon span { font-size: 16px; line-height: 1; }

/* ---------------------------------------------------------------------------
   FOOTER · aviso legal ({SITEDISCLAIMER}) — como el .footer-copyright de Aeolus
--------------------------------------------------------------------------- */
.footer-copyright {
  margin-top: clamp(2.4rem, 5vw, 3.4rem);
  border-top: 1px solid rgba(232, 227, 206, 0.18);
  padding-top: 1.4rem;
}
.footer-copyright .copyright { gap: 1rem; }
.footer-copyright .text {
  color: var(--v-taupe);
  font-size: 0.9rem;
  line-height: 1.7;
  margin: 0;
}
.footer-copyright .text a { color: var(--v-creme); }
/* firma KreativeKey (clase loe-credit del aviso) */
.footer-copyright a.loe-credit,
a.loe-credit {
  color: var(--v-creme);
  text-decoration: none;
  letter-spacing: 0.18em;
  border-bottom: 1px solid rgba(232, 227, 206, 0.35);
  padding-bottom: 1px;
  transition: color 0.2s ease, border-color 0.2s ease;
}
.footer-copyright a.loe-credit:hover,
a.loe-credit:hover { color: var(--v-taupe); border-bottom-color: var(--v-taupe); }

/* ---------------------------------------------------------------------------
   FOOTER · aviso legal: fundo TRANSPARENTE (Aeolus punha #0a1733), tipografia
   menor e centrado; mantém a linha separadora superior.
--------------------------------------------------------------------------- */
.site-footer .footer-copyright {
  background: transparent !important;
  color: var(--v-taupe);
  text-align: center;
  padding: 1.4rem 0 0;
}
.site-footer .footer-copyright .copyright {
  justify-content: center;
  text-align: center;
  gap: 1rem;
}
.site-footer .footer-copyright .text {
  font-size: 0.8rem;      /* 12.8px (antes 14.4px) */
  line-height: 1.65;
  opacity: 1;
  color: var(--v-taupe);
  margin: 0 auto;
  max-width: 92ch;
  text-align: center;
}
.site-footer .footer-copyright .text br + br { display: none; }
