﻿/* =============================================================
   Casona San José — Header
   Sticky + transparente sobre hero → sólido al hacer scroll.
   Mobile: overlay fullscreen con links en Cormorant.
   Dials: motion 3-4, density 2-3, variance 5-6.
   ============================================================= */

/* -----------------------------------------------------------
   SKIP LINK — accesibilidad (primer foco del teclado)
   ----------------------------------------------------------- */

.skip-link {
  position: absolute;
  top: -100%;
  left: var(--space-4);
  z-index: 9999;
  padding: var(--space-2) var(--space-5);
  background: var(--accent);
  color: var(--fg-inverse);
  font-family: var(--font-body);
  font-size: var(--type-body-sm);
  font-weight: 500;
  border-radius: 0 0 var(--radius-sm) var(--radius-sm);
  text-decoration: none;
  transition: top var(--duration-fast) var(--ease-out);
}

.skip-link:focus {
  top: 0;
}

/* -----------------------------------------------------------
   SITE HEADER — wrapper fijo
   ----------------------------------------------------------- */

.site-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;

  /* Estado inicial: transparente sobre hero */
  background: transparent;
  color: var(--fg-inverse);

  transition:
    background    var(--duration-normal) var(--ease-out),
    box-shadow    var(--duration-normal) var(--ease-out),
    color         var(--duration-normal) var(--ease-out);
}

/* Estado scrolled: sólido blanco + shadow-sm */
.site-header.is-scrolled {
  background: var(--bg-soft);
  color: var(--fg);
  box-shadow: var(--shadow-sm);
}

/* Admin bar offset */
.admin-bar .site-header { top: 32px; }
@media (max-width: 782px) {
  .admin-bar .site-header { top: 46px; }
}

/* Compensar el header fijo en el body */
body { padding-block-start: 0; } /* Las páginas con hero absorben el header encima */

/* -----------------------------------------------------------
   SITE NAV — inner layout
   ----------------------------------------------------------- */

.site-nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-6);
  max-width: var(--container-wide);
  margin-inline: auto;
  padding: 18px var(--section-padding-x);
}

/* -----------------------------------------------------------
   LOGO — swap negro/blanco según estado del header
   ----------------------------------------------------------- */

.site-nav__logo {
  display: flex;
  align-items: center;
  flex-shrink: 0;
  text-decoration: none;
}

.site-nav__logo img {
  height: 60px;
  width: auto;
  /* display: block omitido — base.css lo cubre en "img { display: block }"
     y tenerlo aquí creaba especificidad (0,1,1) que ganaba a
     .site-nav__logo-dark { display: none } (0,1,0), mostrando ambos logos. */
  transition: opacity var(--duration-fast) var(--ease-out);
}

/* Transparente (sobre hero): logo blanco visible, negro oculto */
.site-nav__logo-dark  { display: none; }
.site-nav__logo-light { display: block; }

/* Scrolled: logo negro visible, blanco oculto */
.site-header.is-scrolled .site-nav__logo-dark  { display: block; }
.site-header.is-scrolled .site-nav__logo-light { display: none; }

/* Si no hay hero (páginas internas): forzar dark desde el inicio */
.site-header--solid .site-nav__logo-dark  { display: block; }
.site-header--solid .site-nav__logo-light { display: none; }
.site-header--solid {
  background: var(--bg-soft);
  color: var(--fg);
  box-shadow: var(--shadow-sm);
}

/* -----------------------------------------------------------
   NAV LINKS — desktop
   ----------------------------------------------------------- */

.site-nav__links {
  display: flex;
  align-items: center;
  gap: var(--space-5);
  flex: 1;
  justify-content: center;
}

.site-nav__item {
  position: relative;
  display: flex;
  align-items: center;
  gap: var(--space-1);
}

.site-nav__link {
  font-family: var(--font-body);
  font-size: 13px;
  letter-spacing: 0.04em;
  color: inherit;
  text-decoration: none;
  padding: 6px 0;
  border-bottom: 1px solid transparent;
  white-space: nowrap;
  transition:
    border-color var(--duration-fast) var(--ease-out),
    color        var(--duration-fast) var(--ease-out);
}

.site-nav__link:hover,
.site-nav__item.is-active .site-nav__link {
  border-bottom-color: currentColor;
}

/* Hover: base.css pone a:hover en noche, que desaparece sobre un hero
   oscuro. Sobre el hero (header transparente) el hover va a piedra; con el
   header sólido, a tierra. */
.site-nav__link:hover {
  color: var(--color-tierra);
}

.site-header:not(.is-scrolled):not(.site-header--solid) .site-nav__link:hover {
  color: var(--color-piedra);
}

/* -----------------------------------------------------------
   DROPDOWN — Eventos (Corporativos / Particulares)
   ----------------------------------------------------------- */

.site-nav__item--dropdown {
  position: relative;
}

/* Botón chevron — toggle */
.site-nav__dropdown-btn {
  display: flex;
  align-items: center;
  padding: 4px 2px;
  background: none;
  border: none;
  color: inherit;
  cursor: pointer;
  line-height: 1;
  transition: transform var(--duration-fast) var(--ease-out);
}

.site-nav__dropdown-btn[aria-expanded="true"] {
  transform: rotate(180deg);
}

/* Panel del dropdown */
.site-nav__dropdown {
  position: absolute;
  top: calc(100% + var(--space-3));
  left: 50%;
  transform: translateX(-50%) translateY(-6px);
  min-width: 200px;
  background: var(--bg-soft);
  color: var(--fg);
  border: 1px solid var(--border);
  box-shadow: var(--shadow-md);
  list-style: none;
  padding: var(--space-2) 0;
  opacity: 0;
  pointer-events: none;
  transition:
    opacity   var(--duration-normal) var(--ease-out),
    transform var(--duration-normal) var(--ease-out);
}

/* Abierto vía JS (aria-expanded + data-open) */
.site-nav__dropdown[data-open] {
  opacity: 1;
  pointer-events: auto;
  transform: translateX(-50%) translateY(0);
}

.site-nav__dropdown-item {
  list-style: none;
}

.site-nav__dropdown-link {
  display: block;
  padding: var(--space-3) var(--space-5);
  font-family: var(--font-body);
  font-size: var(--type-body-sm);
  color: var(--fg);
  text-decoration: none;
  white-space: nowrap;
  transition: background var(--duration-fast) var(--ease-out);
}

.site-nav__dropdown-link:hover,
.site-nav__dropdown-item.is-active .site-nav__dropdown-link {
  background: var(--bg-alt);
  color: var(--fg);
}

/* -----------------------------------------------------------
   CTA desktop
   ----------------------------------------------------------- */

.site-nav__cta {
  flex-shrink: 0;
}

/* CTA sobre hero (transparente): usa estilo blanco invertido */
.site-header:not(.is-scrolled):not(.site-header--solid) .site-nav__cta .btn--primary {
  background: var(--bg-soft);
  color: var(--fg);
  border-color: var(--bg-soft);
}

.site-header:not(.is-scrolled):not(.site-header--solid) .site-nav__cta .btn--primary:hover {
  background: var(--color-piedra);
  border-color: var(--color-piedra);
}

/* -----------------------------------------------------------
   HAMBURGER — botón mobile
   ----------------------------------------------------------- */

.site-nav__hamburger {
  display: none;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  width: 36px;
  height: 36px;
  padding: var(--space-2);
  background: none;
  border: none;
  color: inherit;
  cursor: pointer;
  flex-shrink: 0;
}

.site-nav__hamburger-line {
  display: block;
  width: 22px;
  height: 1.25px;
  background: currentColor;
  transform-origin: center;
  transition:
    transform var(--duration-normal) var(--ease-in-out),
    opacity   var(--duration-fast)   var(--ease-out);
}

/* Estado abierto: las líneas forman una ×  */
.site-nav__hamburger[aria-expanded="true"] .site-nav__hamburger-line:nth-child(1) {
  transform: translateY(6.25px) rotate(45deg);
}
.site-nav__hamburger[aria-expanded="true"] .site-nav__hamburger-line:nth-child(2) {
  opacity: 0;
  transform: scaleX(0);
}
.site-nav__hamburger[aria-expanded="true"] .site-nav__hamburger-line:nth-child(3) {
  transform: translateY(-6.25px) rotate(-45deg);
}

/* -----------------------------------------------------------
   MOBILE MENU OVERLAY
   Slide desde arriba, fondo --color-piedra, links en Cormorant.
   ----------------------------------------------------------- */

.site-nav__mobile {
  position: fixed;
  inset: 0;
  z-index: 99;
  background: var(--bg);
  display: flex;
  flex-direction: column;
  padding: var(--space-5) var(--section-padding-x) var(--space-8);
  transform: translateY(-100%);
  transition: transform var(--duration-slow) var(--ease-in-out);
  overflow-y: auto;
}

.site-nav__mobile[aria-hidden="false"] {
  transform: translateY(0);
}

/* Top bar: logo + botón cerrar */
.site-nav__mobile-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-block-end: var(--space-8);
}

.site-nav__mobile-logo img {
  height: 51px;
  width: auto;
}

.site-nav__mobile-close {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  background: none;
  border: none;
  color: var(--fg-subtle);
  font-family: var(--font-body);
  font-size: var(--type-label);
  font-weight: 500;
  letter-spacing: var(--tracking-wider);
  text-transform: uppercase;
  cursor: pointer;
  padding: var(--space-2);
  transition: color var(--duration-fast) var(--ease-out);
}

.site-nav__mobile-close:hover { color: var(--fg); }

/* Links del overlay — Cormorant Garamond, grandes */
.site-nav__mobile-nav {
  flex: 1;
  display: flex;
  flex-direction: column;
}

.site-nav__mobile-nav > li {
  list-style: none;
  border-bottom: 1px solid var(--border);
}

.site-nav__mobile-link {
  display: block;
  font-family: var(--font-display);
  font-weight: 300;
  font-size: clamp(1.75rem, 6vw, 2.5rem);
  letter-spacing: var(--tracking-tight);
  color: var(--fg);
  text-decoration: none;
  padding: var(--space-4) 0;
  transition: color var(--duration-fast) var(--ease-out);
}

.site-nav__mobile-link:hover {
  color: var(--accent);
}

/* Sub-ítems en mobile — expanden al tap */
.site-nav__mobile-sub {
  list-style: none;
  padding: 0 0 var(--space-3) var(--space-5);
  display: none;
}

.site-nav__mobile-sub.is-open {
  display: block;
}

.site-nav__mobile-sublink {
  display: block;
  font-family: var(--font-body);
  font-size: var(--type-body-lg);
  color: var(--fg-muted);
  text-decoration: none;
  padding: var(--space-2) 0;
  transition: color var(--duration-fast) var(--ease-out);
}

.site-nav__mobile-sublink:hover { color: var(--fg); }

/* Botón expand en mobile (para Eventos) */
.site-nav__mobile-expand {
  background: none;
  border: none;
  color: var(--fg-subtle);
  cursor: pointer;
  padding: var(--space-2);
  margin-inline-start: auto;
  margin-top: var(--space-3);
  transition: transform var(--duration-fast) var(--ease-out);
}

.site-nav__mobile-expand[aria-expanded="true"] {
  transform: rotate(180deg);
}

/* CTA en mobile */
.site-nav__mobile-cta {
  margin-block-start: var(--space-7);
}

.site-nav__mobile-cta .btn {
  width: 100%;
  justify-content: center;
  padding-block: var(--space-4);
  font-size: var(--type-body-lg);
}

/* -----------------------------------------------------------
   RESPONSIVE — breakpoint
   ----------------------------------------------------------- */

@media (min-width: 961px) {
  .site-nav__hamburger  { display: none; }
  .site-nav__mobile     { display: none; } /* JS controla el overlay */
}

@media (max-width: 960px) {
  .site-nav__links      { display: none; }
  .site-nav__cta        { display: none; }
  .site-nav__hamburger  { display: flex; }
  /* El mobile overlay es visible; display:none se elimina al abrir */
}

/* -----------------------------------------------------------
   PREFERS-REDUCED-MOTION
   ----------------------------------------------------------- */

@media (prefers-reduced-motion: reduce) {
  .site-header,
  .site-nav__dropdown,
  .site-nav__mobile,
  .site-nav__hamburger-line,
  .site-nav__dropdown-btn {
    transition: none;
  }
}
