/* ========================================================================
   Etxea — Thème WordPress Location Basque
   assets/css/main.css
   ======================================================================== */

/* ─── Variables ──────────────────────────────────────────────────────────── */
:root {
  --rouge:       #C0392B;
  --rouge-doux:  #8B1A10;
  --vert:        #2D5016;
  --blanc:       #F7F3ED;
  --noir:        #1A1208;
  --beige:       #E8DCC8;
  --beige-fonce: #C9B99A;
  --ombre:       rgba(26,18,8,0.08);

  --font-titre:  'Playfair Display', Georgia, serif;
  --font-body:   'Raleway', sans-serif;
  --font-serif:  'Libre Baskerville', Georgia, serif;

  --rayon:       2px;
  --transition:  0.25s ease;
  --max-width:   1200px;
}

/* ─── Reset & base ───────────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
img  { max-width: 100%; height: auto; display: block; }

body {
  background:  var(--blanc);
  color:       var(--noir);
  font-family: var(--font-body);
  font-weight: 300;
  font-size:   1rem;
  line-height: 1.6;
  overflow-x:  hidden;
}

a { color: inherit; text-decoration: none; }
button { font-family: inherit; }

/* ─── Navigation ─────────────────────────────────────────────────────────── */
.etxea-nav {
  position:        fixed;
  top:             0;
  width:           100%;
  z-index:         900;
  background:      rgba(247,243,237,0.96);
  backdrop-filter: blur(8px);
  border-bottom:   2px solid var(--rouge);
  display:         flex;
  align-items:     center;
  justify-content: space-between;
  padding:         0 48px;
  height:          64px;
  transition:      box-shadow var(--transition);
}

.etxea-nav.scrolled { box-shadow: 0 4px 24px rgba(0,0,0,0.08); }

.nav-logo {
  font-family:    var(--font-titre);
  font-size:      1.5rem;
  color:          var(--rouge);
  letter-spacing: 0.08em;
}

.nav-logo span { font-style: italic; color: var(--vert); }

.nav-links {
  display:    flex;
  gap:        32px;
  list-style: none;
  margin:     0;
  padding:    0;
}

.nav-links a {
  font-size:       0.8rem;
  letter-spacing:  0.12em;
  text-transform:  uppercase;
  font-weight:     600;
  color:           var(--noir);
  transition:      color var(--transition);
  padding:         4px 0;
  border-bottom:   2px solid transparent;
}

.nav-links a:hover,
.nav-links .current-menu-item > a {
  color:         var(--rouge);
  border-color:  var(--rouge);
}

.nav-cta {
  background:     var(--rouge);
  color:          var(--blanc) !important;
  padding:        10px 22px;
  border-radius:  var(--rayon);
  font-size:      0.8rem;
  font-weight:    600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  transition:     background var(--transition);
  border:         none;
  cursor:         pointer;
}

.nav-cta:hover { background: var(--rouge-doux); }

.nav-burger {
  display:        none;
  flex-direction: column;
  gap:            5px;
  background:     none;
  border:         none;
  cursor:         pointer;
  padding:        4px;
}

.nav-burger span {
  display:          block;
  width:            24px;
  height:           2px;
  background:       var(--rouge);
  transition:       transform var(--transition), opacity var(--transition);
}

/* ─── Boutons ────────────────────────────────────────────────────────────── */
.btn-primary {
  display:        inline-block;
  background:     var(--rouge);
  color:          var(--blanc);
  padding:        16px 36px;
  font-size:      0.8rem;
  font-weight:    600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  border-radius:  var(--rayon);
  border:         none;
  cursor:         pointer;
  transition:     background var(--transition), transform var(--transition);
}

.btn-primary:hover {
  background: var(--rouge-doux);
  transform:  translateY(-2px);
  color:      var(--blanc);
}

.btn-outline {
  display:        inline-block;
  border:         2px solid var(--blanc);
  color:          var(--blanc);
  padding:        14px 36px;
  font-size:      0.8rem;
  font-weight:    600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  border-radius:  var(--rayon);
  transition:     all var(--transition);
}

.btn-outline:hover {
  background: var(--blanc);
  color:      var(--rouge);
}

/* ─── Hero ───────────────────────────────────────────────────────────────── */
.etxea-hero {
  min-height:      100vh;
  position:        relative;
  display:         flex;
  align-items:     center;
  justify-content: center;
  overflow:        hidden;
  padding-top:     64px;
}

.hero-img {
  position:            absolute;
  inset:               0;
  background-size:     cover;
  background-position: center;
  z-index:             0;
}

.hero-img--placeholder {
  background: radial-gradient(ellipse at 30% 40%, #8B6B47 0%, #5C3D1E 40%, #2D1B0E 100%);
}

.hero-overlay {
  position:   absolute;
  inset:      0;
  background: linear-gradient(
    160deg,
    rgba(192,57,43,0.08) 0%,
    transparent 50%
  ),
  linear-gradient(
    to bottom,
    rgba(26,18,8,0.55) 0%,
    rgba(26,18,8,0.2) 60%,
    rgba(247,243,237,1) 100%
  );
  z-index:    1;
}

.hero-pattern {
  position:   absolute;
  inset:      0;
  z-index:    0;
  opacity:    0.04;
  background-image:
    repeating-linear-gradient(0deg, var(--rouge) 0, var(--rouge) 2px, transparent 2px, transparent 40px),
    repeating-linear-gradient(90deg, var(--rouge) 0, var(--rouge) 2px, transparent 2px, transparent 40px);
}

.hero-content {
  position:   relative;
  z-index:    2;
  text-align: center;
  padding:    0 24px;
  animation:  etxeaFadeUp 1s ease both;
}

@keyframes etxeaFadeUp {
  from { opacity: 0; transform: translateY(30px); }
  to   { opacity: 1; transform: translateY(0); }
}

.hero-badge {
  display:        inline-flex;
  align-items:    center;
  gap:            10px;
  background:     var(--rouge);
  color:          var(--blanc);
  font-size:      0.7rem;
  font-weight:    600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  padding:        6px 18px;
  margin-bottom:  28px;
}

.etxea-hero h1 {
  font-family:   var(--font-titre);
  font-size:     clamp(3rem, 7vw, 6rem);
  color:         var(--blanc);
  line-height:   1.05;
  margin-bottom: 12px;
  text-shadow:   0 2px 24px rgba(0,0,0,0.3);
}

.etxea-hero h1 em {
  font-style: italic;
  color:      var(--beige);
}

.hero-sub {
  font-family:   var(--font-serif);
  font-style:    italic;
  color:         var(--beige);
  font-size:     1.1rem;
  margin-bottom: 40px;
  opacity:       0.9;
}

.hero-actions { display: flex; gap: 16px; justify-content: center; flex-wrap: wrap; }

.hero-scroll {
  position:       absolute;
  bottom:         36px;
  left:           50%;
  transform:      translateX(-50%);
  z-index:        2;
  text-align:     center;
  color:          var(--beige);
  font-size:      0.7rem;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  animation:      etxeaBounce 2s infinite;
}

@keyframes etxeaBounce {
  0%,100% { transform: translateX(-50%) translateY(0); }
  50%     { transform: translateX(-50%) translateY(8px); }
}

/* ─── Sections communes ──────────────────────────────────────────────────── */
.etxea-section { padding: 100px 48px; }

.section-inner {
  max-width: var(--max-width);
  margin:    0 auto;
}

.section-label {
  display:        flex;
  align-items:    center;
  gap:            14px;
  font-size:      0.7rem;
  font-weight:    600;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color:          var(--rouge);
  margin-bottom:  16px;
}

.section-label::before,
.section-label::after {
  content:   '';
  flex:      1;
  max-width: 40px;
  height:    1px;
  background: var(--rouge);
}

.section-title {
  font-family:   var(--font-titre);
  font-size:     clamp(2rem, 4vw, 3.2rem);
  color:         var(--noir);
  line-height:   1.15;
  margin-bottom: 20px;
}

.section-title em { font-style: italic; color: var(--rouge); }

/* ─── Logement ───────────────────────────────────────────────────────────── */
.logement-grid {
  display:     grid;
  grid-template-columns: 1fr 1fr;
  gap:         80px;
  align-items: center;
}

.logement-visual { position: relative; }

.logement-photo {
  width:         100%;
  aspect-ratio:  4/3;
  object-fit:    cover;
  border-radius: var(--rayon);
}

.logement-photo--placeholder {
  background:    linear-gradient(135deg, #C9B99A 0%, #8B6B47 50%, #5C3D1E 100%);
  display:       flex;
  flex-direction: column;
  align-items:   center;
  justify-content: center;
  gap:           12px;
  color:         var(--blanc);
  font-family:   var(--font-titre);
  font-style:    italic;
  font-size:     1.1rem;
  text-align:    center;
  padding:       40px;
}

.badge-corner {
  position:      absolute;
  top:           -16px;
  right:         -16px;
  width:         80px;
  height:        80px;
  background:    var(--rouge);
  border-radius: 50%;
  display:       flex;
  flex-direction: column;
  align-items:   center;
  justify-content: center;
  color:         var(--blanc);
  text-align:    center;
  font-size:     0.6rem;
  font-weight:   600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  line-height:   1.3;
  box-shadow:    0 4px 20px rgba(192,57,43,0.4);
}

.badge-corner strong { font-size: 1.3rem; display: block; font-weight: 700; }

.logement-desc {
  font-size:     0.95rem;
  line-height:   1.8;
  color:         #555;
  margin-bottom: 32px;
}

.logement-features {
  display:               grid;
  grid-template-columns: 1fr 1fr;
  gap:                   16px;
}

.feature-item {
  display:     flex;
  align-items: flex-start;
  gap:         12px;
  padding:     16px;
  background:  var(--beige);
  border-left: 3px solid var(--rouge);
  transition:  transform var(--transition);
}

.feature-item:hover { transform: translateX(4px); }

.feature-icon { font-size: 1.3rem; flex-shrink: 0; line-height: 1; }

.feature-text strong {
  display:       block;
  font-size:     0.8rem;
  font-weight:   600;
  letter-spacing: 0.06em;
  margin-bottom: 2px;
  color:         var(--noir);
}

.feature-text span { font-size: 0.75rem; color: #666; }

/* ─── Séparateur basque ──────────────────────────────────────────────────── */
.basque-divider {
  display:         flex;
  align-items:     center;
  justify-content: center;
  gap:             24px;
  background:      var(--rouge);
  padding:         32px 48px;
}

.basque-divider span {
  color:          var(--blanc);
  font-size:      0.7rem;
  font-weight:    600;
  letter-spacing: 0.2em;
  text-transform: uppercase;
}

/* ─── Galerie ────────────────────────────────────────────────────────────── */
.etxea-galerie {
  background: var(--noir);
  padding:    100px 48px;
}

.etxea-galerie .section-label       { color: var(--beige-fonce); }
.etxea-galerie .section-label::before,
.etxea-galerie .section-label::after { background: var(--beige-fonce); }
.etxea-galerie .section-title        { color: var(--blanc); }
.etxea-galerie .section-title em     { color: var(--beige); }

.section-intro {
  color:      rgba(255,255,255,0.55);
  font-size:  0.9rem;
  max-width:  500px;
  margin-bottom: 0;
}

.etxea-logement .section-intro { color: #666; }

.gallery-grid {
  display:               grid;
  grid-template-columns: 2fr 1fr 1fr;
  grid-template-rows:    260px 260px;
  gap:                   8px;
  margin-top:            48px;
}

.gallery-item {
  border-radius: var(--rayon);
  overflow:      hidden;
  position:      relative;
  cursor:        pointer;
  transition:    transform var(--transition);
}

.gallery-item:hover { transform: scale(1.02); z-index: 2; }
.gallery-item--1    { grid-row: 1 / 3; }

.gallery-thumb {
  width:           100%;
  height:          100%;
  display:         flex;
  align-items:     center;
  justify-content: center;
  font-family:     var(--font-titre);
  font-style:      italic;
  color:           rgba(255,255,255,0.6);
  text-align:      center;
  padding:         20px;
  position:        relative;
}

.gallery-thumb::after {
  content:    '';
  position:   absolute;
  inset:      0;
  background: rgba(0,0,0,0.2);
  transition: background var(--transition);
}

.gallery-item:hover .gallery-thumb::after { background: rgba(192,57,43,0.3); }

.gallery-thumb-img {
  width:      100%;
  height:     100%;
  object-fit: cover;
  transition: transform 0.4s ease;
}

.gallery-item:hover .gallery-thumb-img { transform: scale(1.05); }

.g1 { background: linear-gradient(135deg, #7B5E3A, #3D2B1F); }
.g2 { background: linear-gradient(135deg, #4A6741, #2D4A28); }
.g3 { background: linear-gradient(135deg, #8B5E3C, #5C3520); }
.g4 { background: linear-gradient(135deg, #6B7B5E, #3D4A35); }
.g5 { background: linear-gradient(135deg, #5E4B3A, #2D2015); }

.gallery-label {
  position:   absolute;
  bottom:     12px;
  left:       12px;
  z-index:    3;
  background: rgba(192,57,43,0.9);
  color:      var(--blanc);
  font-size:  0.65rem;
  font-weight: 600;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  padding:    4px 10px;
}

.gallery-admin-notice {
  grid-column: 1 / -1;
  text-align:  center;
  padding:     20px;
  color:       rgba(255,255,255,0.5);
  font-style:  italic;
}

.gallery-admin-notice a { color: var(--beige-fonce); text-decoration: underline; }

/* ─── Tarifs ─────────────────────────────────────────────────────────────── */
.etxea-tarifs { background: var(--beige); }

.tarifs-inner { max-width: var(--max-width); margin: 0 auto; }

.tarifs-grid {
  display:               grid;
  grid-template-columns: repeat(3, 1fr);
  gap:                   24px;
  margin-top:            48px;
}

.tarif-card {
  background:  var(--blanc);
  border:      1px solid var(--beige-fonce);
  padding:     36px 28px;
  position:    relative;
  transition:  box-shadow var(--transition), transform var(--transition);
}

.tarif-card:hover {
  box-shadow: 0 12px 40px rgba(192,57,43,0.12);
  transform:  translateY(-4px);
}

.tarif-card--featured {
  border-color: var(--rouge);
  border-width: 2px;
}

.tarif-featured-badge {
  position:       absolute;
  top:            -12px;
  left:           50%;
  transform:      translateX(-50%);
  background:     var(--rouge);
  color:          var(--blanc);
  font-size:      0.65rem;
  font-weight:    600;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  padding:        4px 16px;
  white-space:    nowrap;
}

.tarif-saison {
  font-size:      0.7rem;
  font-weight:    600;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color:          var(--rouge);
  margin-bottom:  8px;
}

.tarif-name {
  font-family:   var(--font-titre);
  font-size:     1.5rem;
  margin-bottom: 20px;
}

.tarif-price {
  display:     flex;
  align-items: baseline;
  gap:         4px;
  margin-bottom: 8px;
}

.tarif-price strong {
  font-size:   2.8rem;
  font-weight: 700;
  color:       var(--rouge);
  line-height: 1;
}

.tarif-price span { font-size: 0.85rem; color: #888; }

.tarif-week {
  font-size:     0.8rem;
  color:         #888;
  margin-bottom: 28px;
  padding-bottom: 24px;
  border-bottom: 1px solid var(--beige-fonce);
}

.tarif-list { list-style: none; margin: 0; padding: 0; }

.tarif-list li {
  font-size:     0.85rem;
  padding:       7px 0;
  display:       flex;
  align-items:   center;
  gap:           8px;
  border-bottom: 1px solid var(--beige);
}

.tarif-list li::before {
  content:     '✓';
  color:       var(--vert);
  font-weight: 700;
  font-size:   0.9rem;
  flex-shrink: 0;
}

.tarifs-note {
  text-align:  center;
  font-size:   0.8rem;
  color:       #888;
  margin-top:  40px;
  font-style:  italic;
  padding-top: 32px;
  border-top:  1px solid var(--beige-fonce);
}

/* ─── Citation basque ────────────────────────────────────────────────────── */
.basque-quote {
  background: var(--vert);
  text-align: center;
  padding:    80px 48px;
}

.basque-quote blockquote {
  font-family: var(--font-titre);
  font-style:  italic;
  font-size:   clamp(1.5rem, 3vw, 2.4rem);
  color:       var(--blanc);
  max-width:   800px;
  margin:      0 auto;
  line-height: 1.5;
}

.basque-quote cite {
  display:        block;
  margin-top:     24px;
  font-size:      0.75rem;
  font-weight:    600;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color:          rgba(255,255,255,0.6);
  font-style:     normal;
}

/* ─── Réservation ────────────────────────────────────────────────────────── */
.etxea-reservation { background: var(--blanc); }

.resa-inner {
  max-width:             var(--max-width);
  margin:                0 auto;
  display:               grid;
  grid-template-columns: 1fr 1fr;
  gap:                   80px;
  align-items:           start;
}

.resa-intro {
  font-size:     0.9rem;
  color:         #666;
  line-height:   1.8;
  margin-bottom: 32px;
}

/* Calendrier */
.calendar-wrapper {
  background:  var(--beige);
  padding:     32px;
  border-top:  4px solid var(--rouge);
}

.cal-header {
  display:         flex;
  align-items:     center;
  justify-content: space-between;
  margin-bottom:   24px;
}

.cal-month {
  font-family: var(--font-titre);
  font-size:   1.2rem;
}

.cal-nav {
  background:  none;
  border:      1px solid var(--beige-fonce);
  width:       32px;
  height:      32px;
  cursor:      pointer;
  display:     flex;
  align-items: center;
  justify-content: center;
  font-size:   1.1rem;
  color:       var(--rouge);
  transition:  all var(--transition);
  border-radius: var(--rayon);
}

.cal-nav:hover { background: var(--rouge); color: var(--blanc); border-color: var(--rouge); }

.cal-days-header {
  display:       grid;
  grid-template-columns: repeat(7, 1fr);
  text-align:    center;
  margin-bottom: 8px;
}

.cal-days-header span {
  font-size:      0.65rem;
  font-weight:    600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color:          #888;
  padding:        4px 0;
}

.cal-grid {
  display:               grid;
  grid-template-columns: repeat(7, 1fr);
  gap:                   4px;
}

.cal-day {
  aspect-ratio:    1;
  display:         flex;
  align-items:     center;
  justify-content: center;
  font-size:       0.85rem;
  border-radius:   var(--rayon);
  cursor:          pointer;
  transition:      background var(--transition), color var(--transition);
}

.cal-day:hover:not(.cal-day--booked):not(.cal-day--empty) {
  background: var(--rouge);
  color:      var(--blanc);
}

.cal-day--empty   { cursor: default; }
.cal-day--past    { opacity: 0.35; cursor: not-allowed; }
.cal-day--booked  { background: var(--beige-fonce); color: #888; cursor: not-allowed; text-decoration: line-through; }
.cal-day--today   { font-weight: 700; border: 1px solid var(--rouge); color: var(--rouge); }
.cal-day--selected { background: var(--rouge); color: var(--blanc); }
.cal-day--in-range { background: rgba(192,57,43,0.15); }

.cal-legend {
  display:    flex;
  gap:        20px;
  margin-top: 16px;
  font-size:  0.7rem;
  color:      #888;
  flex-wrap:  wrap;
}

.cal-legend-item { display: flex; align-items: center; gap: 6px; }

.cal-dot {
  width:         12px;
  height:        12px;
  border-radius: var(--rayon);
}

.cal-dot--free     { background: var(--blanc); border: 1px solid var(--beige-fonce); }
.cal-dot--booked   { background: var(--beige-fonce); }
.cal-dot--selected { background: var(--rouge); }

/* Formulaire */
.resa-form { padding-top: 8px; }

.form-group { margin-bottom: 20px; }

.form-group label {
  display:        block;
  font-size:      0.7rem;
  font-weight:    600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color:          var(--noir);
  margin-bottom:  8px;
}

.form-group input,
.form-group select,
.form-group textarea {
  width:       100%;
  padding:     12px 16px;
  border:      1px solid var(--beige-fonce);
  background:  var(--blanc);
  font-family: var(--font-body);
  font-size:   0.9rem;
  color:       var(--noir);
  border-radius: var(--rayon);
  transition:  border-color var(--transition);
  outline:     none;
  appearance:  auto;
}

.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus { border-color: var(--rouge); }

.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }

.form-submit {
  width:          100%;
  padding:        16px;
  background:     var(--rouge);
  color:          var(--blanc);
  border:         none;
  cursor:         pointer;
  font-family:    var(--font-body);
  font-size:      0.8rem;
  font-weight:    600;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  border-radius:  var(--rayon);
  transition:     background var(--transition);
  margin-top:     8px;
}

.form-submit:hover    { background: var(--rouge-doux); }
.form-submit:disabled { opacity: 0.6; cursor: wait; }

.resa-note {
  font-size:  0.75rem;
  color:      #888;
  text-align: center;
  margin-top: 12px;
  font-style: italic;
}

/* ─── Footer ─────────────────────────────────────────────────────────────── */
.etxea-footer {
  background: var(--noir);
  color:      var(--blanc);
  padding:    64px 48px 32px;
}

.footer-inner {
  max-width:             var(--max-width);
  margin:                0 auto;
  display:               grid;
  grid-template-columns: 2fr 1fr 1fr;
  gap:                   60px;
  margin-bottom:         48px;
}

.footer-brand .nav-logo {
  display:       block;
  margin-bottom: 16px;
  color:         var(--blanc);
}

.footer-brand p {
  font-size:  0.85rem;
  color:      rgba(255,255,255,0.55);
  line-height: 1.7;
  max-width:  280px;
}

.footer-contact { margin-top: 12px; }

.footer-contact a {
  color:       rgba(255,255,255,0.55);
  font-size:   0.85rem;
  transition:  color var(--transition);
}

.footer-contact a:hover { color: var(--blanc); }

.footer-col h4,
.footer-col .footer-widget-title {
  font-size:      0.7rem;
  font-weight:    600;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color:          var(--rouge);
  margin-bottom:  16px;
}

.footer-col ul { list-style: none; margin: 0; padding: 0; }

.footer-col ul li { margin-bottom: 10px; }

.footer-col ul li a {
  color:      rgba(255,255,255,0.55);
  font-size:  0.85rem;
  transition: color var(--transition);
}

.footer-col ul li a:hover { color: var(--blanc); }

.footer-bottom {
  max-width:      var(--max-width);
  margin:         0 auto;
  border-top:     1px solid rgba(255,255,255,0.1);
  padding-top:    24px;
  display:        flex;
  justify-content: space-between;
  align-items:    center;
  font-size:      0.75rem;
  color:          rgba(255,255,255,0.35);
  flex-wrap:      wrap;
  gap:            12px;
}

.footer-basque { display: flex; align-items: center; gap: 8px; }

/* ─── Toast notification ─────────────────────────────────────────────────── */
.etxea-toast {
  position:      fixed;
  bottom:        32px;
  right:         32px;
  background:    var(--vert);
  color:         var(--blanc);
  padding:       16px 24px;
  border-radius: var(--rayon);
  font-size:     0.85rem;
  letter-spacing: 0.06em;
  transform:     translateY(80px);
  opacity:       0;
  transition:    all 0.4s;
  z-index:       999;
  box-shadow:    0 8px 32px rgba(0,0,0,0.2);
  max-width:     360px;
}

.etxea-toast.is-visible { transform: translateY(0); opacity: 1; }
.etxea-toast.is-error   { background: var(--rouge-doux); }

/* ─── Animations au scroll ───────────────────────────────────────────────── */
.js-fade-in {
  opacity:    0;
  transform:  translateY(24px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}

.js-fade-in.is-visible {
  opacity:   1;
  transform: translateY(0);
}

/* ─── Menu mobile ────────────────────────────────────────────────────────── */
@media (max-width: 768px) {
  .nav-links {
    display:        none;
    position:       fixed;
    top:            64px;
    left:           0;
    width:          100%;
    background:     var(--blanc);
    flex-direction: column;
    padding:        24px 32px;
    border-bottom:  2px solid var(--rouge);
    box-shadow:     0 8px 24px rgba(0,0,0,0.1);
    gap:            20px;
  }

  .nav-links.is-open { display: flex; }
  .nav-burger        { display: flex; }
  .nav-cta           { display: none; }

  .etxea-nav { padding: 0 24px; }
}

/* ─── Responsive général ─────────────────────────────────────────────────── */
@media (max-width: 1024px) {
  .logement-grid   { grid-template-columns: 1fr; gap: 48px; }
  .tarifs-grid     { grid-template-columns: 1fr; max-width: 480px; margin-left: auto; margin-right: auto; }
  .resa-inner      { grid-template-columns: 1fr; gap: 48px; }
  .footer-inner    { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 768px) {
  .etxea-section   { padding: 64px 24px; }
  .basque-divider  { padding: 24px; }
  .basque-quote    { padding: 64px 24px; }
  .etxea-footer    { padding: 48px 24px 24px; }
  .gallery-grid    { grid-template-columns: 1fr 1fr; grid-template-rows: auto; }
  .gallery-item--1 { grid-row: auto; grid-column: 1 / -1; height: 240px; }
  .gallery-item    { height: 200px; }
  .logement-features { grid-template-columns: 1fr; }
  .form-row        { grid-template-columns: 1fr; }
  .footer-inner    { grid-template-columns: 1fr; gap: 32px; }
  .footer-bottom   { flex-direction: column; text-align: center; }
  .etxea-toast     { left: 16px; right: 16px; bottom: 16px; }
}

@media (max-width: 480px) {
  .hero-actions    { flex-direction: column; align-items: center; }
  .btn-primary, .btn-outline { width: 100%; text-align: center; }
}

/* ─── Print ──────────────────────────────────────────────────────────────── */
@media print {
  .etxea-nav, .hero-scroll, .etxea-toast { display: none; }
  .etxea-hero { min-height: auto; padding: 40px 0; }
}
