/* =========================================
   HEADER (estructura + comportamiento)
   ========================================= */
header{
  background-color: rgba(229,229,229,0.9);
  box-shadow: var(--shadow);
  padding: 10px 0;
}

.header-container{
  display:flex; align-items:center; width:100%;
  margin:0 auto; padding-inline: clamp(8px, 3vw, 24px);
}

/* Logo */
.logo-container{ display:flex; align-items:center; padding-left:10px; }
.brand-link{ display:flex; flex-direction:column; align-items:center; gap:8px; line-height:0; }
.brand-link img{ display:block; }
.brand-icon{ height:50px; width:auto; }
.brand-wordmark{ height:30px; width:auto; }

/* Nav principal */
header nav{ margin-left:auto; display:flex; align-items:center; }
.menu-toggle{
  margin-left:auto; display:none; font-size:24px;
  background:none; border:none; cursor:pointer;
}
.menu{
  list-style:none; display:flex; align-items:center;
  gap:var(--gap); margin-left:auto;
}
.menu > li{ position:relative; white-space:nowrap; }
.menu > li > a{
  text-decoration:none; font-size:1rem; color:#333;
  padding:6px 10px; border-radius:5px; line-height:1;
  transition: color .2s, background-color .2s;
}
.menu > li > a:hover{ color:#fff; background-color:var(--brand); }

/* Cabeceras dropdown */
.dropdown-head, .submenu-head{ display:flex; align-items:center; gap:8px; }
.dropdown-link, .submenu-link{
  text-decoration:none; font-size:1rem; color:#333;
  padding:6px 10px; border-radius:8px; transition: color .2s, background-color .2s;
}
.dropdown-link:hover, .submenu-link:hover{ color:#fff; background-color:var(--brand); }

.submenu-caret, .submenu-caret-2 {
  background: none;
  border: none;
  cursor: pointer;
  padding: 0;
  font-family: "Font Awesome 6 Free";  /* 👈 fuente de FA */
  font-weight: 900;                    /* 👈 versión sólida */
  font-size: 16px;
  color: #333;                         /* color del icono */
}

.submenu-caret::after, .submenu-caret-2::after {
  content: "\f067";  /* fa-plus */
}

.submenu-caret[aria-expanded="true"]::after,
.submenu-caret-2[aria-expanded="true"]::after {
  content: "\f068";  /* fa-minus */
}

/* Dropdowns (desktop) */
.menu > .dropdown::after{
  content:""; position:absolute; top:100%; left:0; right:0; height:12px;
}
.dropdown > .dropdown-menu{
  list-style:none; position:absolute; top:calc(100% + 12px); left:0;
  min-width:220px; background:rgba(229,229,229,0.9);
  border-radius:8px; box-shadow:0 2px 5px rgba(0,0,0,.1);
  margin:0; padding:10px 0; z-index:1000;
  opacity:0; visibility:hidden; pointer-events:none;
  transform:translateY(10px);
  transition:opacity .3s ease, transform .3s ease, visibility .3s ease;
  transition-delay:.3s;
}
.has-sub::after{ content:""; position:absolute; top:0; bottom:0; left:100%; width:12px; }
.has-sub > .submenu{
  position:absolute; top:0; left:calc(100% + 12px); min-width:200px;
  background:rgba(229,229,229,0.9); border-radius:8px; box-shadow:0 2px 5px rgba(0,0,0,.1);
  margin:0; padding:10px 0; z-index:1000;
  opacity:0; visibility:hidden; pointer-events:none;
  transform:translateX(10px);
  transition:opacity .3s ease, transform .3s ease, visibility .3s ease;
  transition-delay:.3s;
}
/* Hover abre instantáneo */
.dropdown:hover > .dropdown-menu,
.dropdown > .dropdown-menu:hover{
  opacity:1; visibility:visible; pointer-events:auto; transform:translateY(0); transition-delay:0s;
}
.has-sub:hover > .submenu,
.has-sub > .submenu:hover{
  opacity:1; visibility:visible; pointer-events:auto; transform:translateX(0); transition-delay:0s;
}
/* Estado .open (JS/móvil o fijado) */
.dropdown.open > .dropdown-menu{ opacity:1; visibility:visible; pointer-events:auto; transform:translateY(0); transition-delay:0s; }
.has-sub.open > .submenu{ opacity:1; visibility:visible; pointer-events:auto; transform:translateX(0); transition-delay:0s; }

/* Links internos en paneles */
.dropdown-menu li, .submenu li{ margin:0; list-style:none; padding-left:0; }
.dropdown-menu li a, .submenu li a{
  display:block; padding:10px 16px; color:#333; text-decoration:none;
  border-radius:6px; margin:4px 8px; transition: background-color .2s; white-space:nowrap;
}
.dropdown-menu li a:hover, .submenu li a:hover{ background:var(--brand); color:#fff; }

/* Breakpoints del header */
@media (max-width: 1200px){ .header-container{ padding-inline:20px; } }
@media (max-width: 1024px){ .header-container{ padding-inline:16px; } }
@media (max-width: 768px){
  .header-container{ padding-inline:12px; }
  .brand-icon{ height:46px; }
  .brand-wordmark{ height:26px; }
}
@media (max-width: 480px){
  .header-container{ padding-inline:8px; }
  .brand-link{ gap:6px; }
  .brand-icon{ height:42px; }
  .brand-wordmark{ height:24px; }
}

/* Flechas solo desktop */
@media (min-width: 769px){
  .submenu-caret, .submenu-caret-2{ display:none !important; }
  .dropdown-link::after{ content:"▾"; margin-left:6px; font-size:.9rem; }
  .dropdown:hover > .dropdown-head .dropdown-link::after,
  .dropdown.open  > .dropdown-head .dropdown-link::after{ content:"▴"; }
  .submenu-link::after{ content:"▸"; margin-left:6px; font-size:.9rem; }
  .has-sub:hover > .submenu-head .submenu-link::after,
  .has-sub.open  > .submenu-head .submenu-link::after{ content:"▾"; }
}

/* Overlay para móvil */
.menu-overlay{
  position:fixed; inset:0; background:rgba(0,0,0,0.4);
  z-index:var(--z-overlay); opacity:0; pointer-events:none;
  transition:opacity .3s ease-in-out;
}
.menu-overlay.active{ opacity:1; pointer-events:auto; }

/* Menú móvil deslizante + cálculo de altura */
@media (max-width: 768px){
  :root{
    --brand-icon: 46px;
    --brand-wordmark: 26px;
    --brand-gap: 8px;
    --header-padding-v: 20px;
    --header-height: calc(var(--brand-icon) + var(--brand-wordmark) + var(--brand-gap) + var(--header-padding-v));
  }

  html, body{ margin:0; }
  body{ padding-top: var(--header-height); }

  header{
    position:fixed; top:0; left:0; right:0;
    z-index:var(--z-header);
    background-color: rgba(229,229,229,0.9);
    box-shadow: var(--shadow);
    padding: calc(var(--header-padding-v) / 2) 0;
  }

  .header-container{
    display:grid; grid-template-columns:1fr auto 1fr; align-items:center;
  }
  .logo-container{ grid-column:2; justify-self:center; padding-left:0; }
  .menu-toggle{ grid-column:3; justify-self:end; display:block; margin-left:0; }

  /* Panel */
  header nav{
    display:flex; flex-direction:column; position:fixed;
    top: var(--header-height) !important;
    left:0 !important; right:auto !important; bottom:auto !important;
    height: calc(100dvh - var(--header-height)) !important;
    width:80%; 
    background: rgba(229,229,229,0.95);
    border-right:6px solid var(--brand);
    box-shadow: var(--shadow-lg);
    z-index: calc(var(--z-overlay) + 1);
    padding:18px 14px 24px; overflow-y:auto;
    transform: translateX(-100%); transition: transform .3s ease-in-out;
    pointer-events:none; will-change: transform;
  }
  header nav.active{ transform:translateX(0); pointer-events:auto; }

  /* Lista vertical */
  .menu{ flex-direction:column; align-items:stretch; gap:12px; padding:0; margin:0; background:none; }

  /* ==============================
   MENÚ MÓVIL — Panel, acordeón y jerarquía
   ============================== */
@media (max-width: 768px){
  /* Panel móvil (ya lo tienes)…
     …dejamos nav como panel deslizante, no tocamos aquí */

  /* 1) Estado base de submenús: colapsados y listos para animación */
  #mainNav .dropdown > .dropdown-menu,
  #mainNav .has-sub > .submenu {
    position: static;
    display: block;             /* necesario para animar altura */
    background: transparent;
    box-shadow: none;
    border: 0;
    border-radius: 0;
    margin: 0;                  /* sin márgenes que molesten la animación */
    padding: 0;                 /* padding se dará por nivel */
    max-height: 0;
    overflow: hidden;
    opacity: 0;
    transform: translateX(0);
    transition: max-height .3s ease, opacity .3s ease, transform .25s ease;
  }

  /* 2) NIVEL 1 abierto (Convencional/Deportiva/Avanzada) */
  #mainNav .dropdown.open > .dropdown-menu {
    max-height: 800px;          /* suficiente para varios items */
    opacity: 1;
    margin-left: 14px;          /* sangría visual */
    padding-left: 10px;
    border-left: 2px solid #ddd;
    transform: translateX(6px);
  }

  /* 3) NIVEL 2 abierto (Técnicas dentro de Avanzada) */
  #mainNav .has-sub.open > .submenu {
    max-height: 800px;
    opacity: 1;
    margin-left: 28px;          /* aún más a la derecha */
    padding-left: 10px;
    border-left: 2px dashed rgba(0,0,0,.15);
    transform: translateX(8px);
  }

  /* 4) Subitems: legibilidad y feedback */
  #mainNav .submenu li a {
    display: block;
    padding: 8px 0 8px 4px;     /* el padding horizontal grande lo damos al bloque por nivel */
    font-size: 0.95rem;
    line-height: 1.6;
    font-weight: 400;
    color: #444;
    border-radius: 4px;
    transition: background-color .2s ease, color .2s ease;
  }
  #mainNav .submenu li a:hover {
    background-color: rgba(0, 196, 214, 0.08);
    color: var(--brand);
  }

  /* 5) Separadores sutiles */
  #mainNav .dropdown-menu li,
  #mainNav .submenu li {
    border-bottom: 1px solid #eee;
    margin-bottom: 4px;
    padding-bottom: 4px;
  }
  #mainNav .dropdown-menu li:last-child,
  #mainNav .submenu li:last-child {
    border-bottom: none;
    margin-bottom: 0;
    padding-bottom: 0;
  }

  /* 6) Flechas del rótulo: ocultas en móvil (dejamos solo el + / −) */
  .dropdown-link::after,
  .submenu-link::after {
    content: none;
  }

  /* 7) Botón caret como icono (si usas Font Awesome) */
  .submenu-caret, .submenu-caret-2 {
    background: none;
    border: none;
    cursor: pointer;
    padding: 0;
    font-family: "Font Awesome 6 Free";
    font-weight: 900;
    font-size: 16px;
    color: #333;
  }
  .submenu-caret::after, .submenu-caret-2::after { content: "\f067"; } /* fa-plus */
  .submenu-caret[aria-expanded="true"]::after,
  .submenu-caret-2[aria-expanded="true"]::after { content: "\f068"; }  /* fa-minus */
}


  /* Submenús ocultos por defecto cuando el panel está activo */
  header nav.active .dropdown > .dropdown-menu,
  header nav.active .has-sub > .submenu{
    display:none; padding:0 0 0 16px;
  }
  header nav.active .dropdown.open > .dropdown-menu{ display:block; }
  header nav.active .has-sub.open > .submenu{ display:block; }

  /* Items */
  .dropdown-menu li a, .submenu li a{
    display:block; padding:6px 0; margin:0; background:none !important; border:none !important; border-radius:0 !important;
    color:#333; font-size:1rem;
  }
  .submenu li a{ padding-left:12px; }

  /* Separadores primer nivel */
  .menu > li{ border-bottom:1px solid #d4d4d4; padding-bottom:8px; margin-bottom:8px; }
  .menu > li:last-child{ border-bottom:none; margin-bottom:0; padding-bottom:0; }

  .arrow{ display:none !important; }
  .menu-toggle{ display:block; }

  /* Carets + / − */
  .submenu-caret, .submenu-caret-2{
    display:inline-flex !important; align-items:center; justify-content:center;
    width:28px; height:28px; margin-left:auto; background:none; border:none; border-radius:0; font-size:0; cursor:pointer;
  }
  .submenu-caret::after, .submenu-caret-2::after{
    content:"+"; font-size:18px; font-weight:700; line-height:1;
  }
  .submenu-caret[aria-expanded="true"]::after,
  .submenu-caret-2[aria-expanded="true"]::after{ content:"−"; }
}
/* layout.css */

.dropdown-link::after{ content:"\25BE"; } /* ▾ */
.dropdown:hover > .dropdown-head .dropdown-link::after,
.dropdown.open  > .dropdown-head .dropdown-link::after{ content:"\25B4"; } /* ▴ */

.submenu-link::after{ content:"\25B8"; } /* ▸ */
.has-sub:hover > .submenu-head .submenu-link::after,
.has-sub.open  > .submenu-head .submenu-link::after{ content:"\25BE"; } /* ▾ */

/* Bloqueador de scroll cuando el menú está abierto */
body.menu-open { overflow: hidden; }

/* =========================================
   HERO (adaptativo)
   ========================================= */
.hero{
  position:relative; width:100%;
  height:min(70vh, 600px); min-height:320px; overflow:hidden;
}
.hero img{ width:100%; height:100%; object-fit:cover; }
.overlay{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%);
  text-align:center; color:#fff; width:min(90%, 900px);
}

.overlay h2 {
  font-size: 3.2rem;         /* cambia el tamaño */
  color: var(--brand);     /* o un color concreto (#fff, #333, etc.) */
  font-weight: 800;        /* opcional: más grueso */
   text-shadow: 
    2px 2px 8px rgba(0,0,0,.6),   /* primera capa */
    0 0 12px rgba(0,0,0,.5),      /* un glow alrededor */
    -2px -2px 4px rgba(0,0,0,.4); /* sombra inversa para darle volumen */
  margin-bottom: 20px;     /* espacio respecto al botón */
}

.hero::after{
  content:""; position:absolute; bottom:0; left:0; width:100%; height:100px;
  background: linear-gradient(to bottom, rgba(0,0,0,0) 0%, var(--bg) 100%);
  pointer-events:none; z-index:1;
}

.section-title,
.services-title,
.techniques-title {
  font-size: 2rem;
  font-weight: 700;
  color: var(--text);
  
  display: block;           /* centrado como bloque */
  width: fit-content;       
  max-width: 100%;
  margin: 0 auto 30px;      /* centrado horizontal */
  text-align: center;
  position: relative;
}

.section-title::after,
.services-title::after,
.techniques-title::after {
  content: "";
  display: block;
  width: 60px;
  height: 3px;
  background: var(--accent);
  margin: 12px auto 0;
  border-radius: 2px;
}

/* =========================================
   ESPACIADOS DE SECCIONES
   ========================================= */
:root{
  --section-pt: clamp(48px, 6vw, 96px);
  --section-gap: 40px;
}

.section,
.services-section,
.techniques-section,
.about-us,
.reviews,
.reservations,
.donde-encontrarnos,
.equipo{
  padding-top: var(--section-pt);
}

.section > * + *,
.services-section > * + *,
.techniques-section > * + *,
.about-us > * + *,
.reviews > * + *,
.reservations > * + *,
.donde-encontrarnos > * + *,
.equipo > * + *{
  margin-top: var(--section-gap);
}

section[id]{ scroll-margin-top: 96px; }


/* Grids comunes */
.services-container,
.techniques-container,
.media-gallery,
.process-container,
.team-list,
.reviews-container{
  display:grid; gap:var(--gap);
}
.services-container   { grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); }
.techniques-container { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.media-gallery        { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
.process-container    { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.team-list            { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
.reviews-container    { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }

/* =========================================
   FOOTER (estructura + detalles)
   ========================================= */
.footer{
  background:#1e1e1e; color:#869191; padding:20px 0 8px; font-family:system-ui, sans-serif;
}
.footer-container{
  display:flex; flex-wrap:wrap; justify-content:space-between; gap:28px;
  padding-inline: clamp(16px, 3vw, 48px); margin:0 0 20px; width:100%;
}
.footer-section{ flex:1 1 0; min-width:220px; }
.footer-bottom{
  border-top:1px solid rgba(255,255,255,0.1); text-align:center; padding-top:10px; font-size:13px; color:#aaa;
}
.footer a{ color:#869191; text-decoration:none; }
.footer a:hover, .footer a:focus{ text-decoration:underline; color:#00c4d6; }
.logo-section{ flex:0.5 1 0; display:flex; align-items:center; justify-content:flex-start; text-align:left; }
.logo-footer{ display:block; max-width:300px; width:auto; height:auto; filter:brightness(0) invert(1); }
.footer-section h4{ margin:0 0 8px; font-size:16px; color:#c0cece; }
.footer-section p{ margin:4px 0; line-height:1.4; display:flex; align-items:center; gap:4px; }
.footer .contact-info a{ white-space:nowrap; }
.footer-section li, .footer-section a{ font-size:15px; line-height:1.4; }
.quick-links ul, .social-media ul{ list-style:none; padding:0; margin:0; }
.social-media ul{ display:flex; gap:12px; flex-direction:column; flex-wrap:wrap; }
.quick-links li, .social-media li{ margin:0; }
.footer-bottom a{ color:#bbb; } .footer-bottom a:hover{ color:#fff; }

@media (max-width: 640px){
  .footer-container{ gap:18px; text-align:center; }
  .footer-section{ flex:1 1 100%; min-width:0; }
  .logo-section{ flex:1 1 100%; justify-content:center; text-align:center; }
  .logo-footer{ max-width:180px; }
  .footer .contact-info{ align-self:center; text-align:center; }
  .footer .contact-info p{ justify-content:center; }
}

