/* ===== Chalet D'Exception — Design system =====
   Rebuild of the real site's own identity — nothing invented here:
   - Accent gold #c69700 is their site's <meta name="theme-color">
   - Black/white/#efefef borders match their actual page chrome
   - League Spartan + Montserrat are the fonts their site already loads
   - Logo and all photography are hotlinked from their real site */

@import url('https://fonts.googleapis.com/css2?family=League+Spartan:wght@400;500;600;700&family=Montserrat:wght@400;500;600;700&display=swap');

:root{
  --ink: #000000;
  --white: #ffffff;
  --off: #fafafa;
  --gold: #c69700;
  --gold-deep: #ad8300;
  --border: #efefef;
  --stone: #6b6b6b;

  --font-display: 'League Spartan', sans-serif;
  --font-body: 'Montserrat', sans-serif;

  --radius: 2px;
  --ease: cubic-bezier(.22,.68,.32,1);
}

*{ box-sizing: border-box; }
html{ scroll-behavior: smooth; }
html.loading{ overflow: hidden; }
body{
  margin:0;
  font-family: var(--font-body);
  color: var(--ink);
  background: var(--white);
  -webkit-font-smoothing: antialiased;
  line-height: 1.6;
}
img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
ul{ margin:0; padding:0; list-style:none; }
h1,h2,h3,h4{ font-family: var(--font-display); font-weight:600; margin:0; letter-spacing:-0.01em; text-transform: uppercase; }
p{ margin:0; }
button{ font-family:inherit; cursor:pointer; }
:focus-visible{ outline: 2px solid var(--gold); outline-offset: 3px; }

.eyebrow{
  font-family: var(--font-body);
  font-size: 0.72rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--gold-deep);
  font-weight: 600;
}
.eyebrow.on-dark{ color: var(--gold); }

.wrap{ max-width: 1240px; margin: 0 auto; padding: 0 32px; }

/* ---------- Preloader ---------- */
#preloader{
  position: fixed; inset:0; z-index: 999;
  background: var(--white);
  display:flex; align-items:center; justify-content:center;
  transition: opacity .7s var(--ease), visibility .7s var(--ease);
}
#preloader img{ height: 46px; width:auto; }
#preloader.exit{ opacity:0; visibility:hidden; }

/* ---------- Disclaimer badge ---------- */
.concept-badge{
  background: var(--ink); color: #d9d9d9;
  font-size: 0.72rem; text-align:center; padding: 7px 16px;
  letter-spacing: 0.02em;
}
.concept-badge strong{ color: var(--white); font-weight: 600; }

/* ---------- Header ---------- */
header.site-header{
  position: sticky; top:0; z-index: 90;
  background: var(--white);
  border-bottom: 1px solid var(--border);
}
.nav-inner{
  display:flex; align-items:center; justify-content:space-between;
  padding: 14px 32px;
  max-width: 1240px; margin:0 auto;
}
.logo-img{ height: 40px; width:auto; }
nav.main-nav{ display:flex; align-items:center; gap: 32px; }
nav.main-nav a{
  color: var(--ink); font-size: 0.82rem; letter-spacing: 0.04em; text-transform: uppercase; font-weight:500;
  opacity: 0.8; transition: opacity .2s, color .2s;
}
nav.main-nav a:hover{ opacity:1; color: var(--gold-deep); }
.nav-cta{
  border: 1px solid var(--ink); padding: 10px 20px; border-radius: var(--radius);
  font-size: 0.78rem !important; text-transform: uppercase; letter-spacing: 0.06em !important;
}
.nav-cta:hover{ background: var(--gold); border-color: var(--gold); color: var(--white) !important; opacity:1; }
.burger{ display:none; background:none; border:0; padding:6px; }
.burger svg{ stroke: var(--ink); }

/* ---------- Mobile nav ---------- */
.mobile-nav{
  position: fixed; inset:0; z-index: 200; background: var(--white);
  display:flex; flex-direction:column; padding: 24px 28px;
  transform: translateX(100%); transition: transform .4s var(--ease);
}
.mobile-nav.open{ transform: translateX(0); }
.mobile-nav-top{ display:flex; justify-content:space-between; align-items:center; margin-bottom: 48px; }
.mobile-nav-top button{ background:none; border:0; }
.mobile-nav-top button svg{ stroke: var(--ink); }
.mobile-nav .btn{ margin-top: 16px; }
.mobile-nav ul{ display:flex; flex-direction:column; gap: 8px; }
.mobile-nav a{
  font-family: var(--font-display); font-size: 1.8rem; color: var(--ink); text-transform: uppercase;
  padding: 12px 0; border-bottom: 1px solid var(--border);
}

/* ---------- Hero ---------- */
.hero{
  position: relative; min-height: 86vh; display:flex; align-items:flex-end;
  background: var(--ink); overflow:hidden;
}
.hero-media{ position:absolute; inset:0; }
.hero-media img{ width:100%; height:100%; object-fit:cover; opacity:0.75; }
.hero-media::after{
  content:''; position:absolute; inset:0;
  background: linear-gradient(180deg, rgba(0,0,0,0.25) 0%, rgba(0,0,0,0.2) 40%, rgba(0,0,0,0.9) 100%);
}
.hero-content{ position:relative; z-index:2; padding: 0 32px 88px; max-width: 1240px; margin:0 auto; width:100%; }
.hero-content h1{
  font-size: clamp(2.2rem, 5.4vw, 4.2rem); color: var(--white); font-weight: 600;
  max-width: 16ch; line-height: 1.08; margin: 16px 0 22px; text-transform:none;
}
.hero-content h1 em{ font-style: normal; color: var(--gold); }
.hero-sub{ color: #e6e6e6; max-width: 52ch; font-size: 1.02rem; margin-bottom: 32px; }
.hero-actions{ display:flex; gap: 16px; flex-wrap:wrap; }

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex; align-items:center; gap:10px;
  padding: 15px 28px; border-radius: var(--radius);
  font-size: 0.82rem; letter-spacing: 0.05em; text-transform: uppercase; font-weight:600;
  transition: transform .25s var(--ease), background .25s, color .25s, border-color .25s;
}
.btn-primary{ background: var(--gold); color: var(--white); }
.btn-primary:hover{ background: var(--gold-deep); transform: translateY(-2px); }
.btn-outline{ border: 1px solid rgba(255,255,255,0.55); color: var(--white); }
.btn-outline:hover{ background: rgba(255,255,255,0.1); }
.btn-dark{ background: var(--ink); color: var(--white); }
.btn-dark:hover{ background: #222; }
.btn-block{ width:100%; justify-content:center; }

/* ---------- Sections ---------- */
section{ padding: 88px 0; }
.section-head{ max-width: 640px; margin-bottom: 48px; }
.section-head h2{ font-size: clamp(1.7rem, 3.2vw, 2.4rem); margin-top: 12px; }
.section-head p{ color: var(--stone); margin-top: 14px; font-size: 1rem; }
.section-head.center{ margin-left:auto; margin-right:auto; text-align:center; }

/* ---------- Stat strip ---------- */
.stat-strip{ background: var(--ink); color: var(--white); padding: 48px 0; }
.stat-grid{ display:grid; grid-template-columns: repeat(4,1fr); gap: 32px; }
.stat-grid .stat b{ font-family: var(--font-display); font-size: 2rem; display:block; color: var(--gold); font-weight:700; }
.stat-grid .stat span{ font-size: 0.8rem; color: #cfcfcf; letter-spacing:0.02em; }

/* ---------- Chalet cards ---------- */
.grid{ display:grid; grid-template-columns: repeat(3, 1fr); gap: 28px; }
.card{
  background: var(--white); border: 1px solid var(--border); border-radius: var(--radius); overflow:hidden;
  transition: transform .3s var(--ease), box-shadow .3s var(--ease);
}
.card:hover{ transform: translateY(-4px); box-shadow: 0 20px 40px -24px rgba(0,0,0,0.25); }
.card-media{ position:relative; display:block; aspect-ratio: 4/3; overflow:hidden; }
.card-media img{ width:100%; height:100%; object-fit:cover; transition: transform .6s var(--ease); }
.card:hover .card-media img{ transform: scale(1.05); }
.card-tag{
  position:absolute; top:14px; left:14px; background: var(--gold); color: var(--white);
  font-size: 0.65rem; letter-spacing:0.06em; text-transform:uppercase; font-weight:600; padding: 6px 12px; border-radius: var(--radius);
}
.card-body{ padding: 24px; }
.card-loc{ font-size:0.7rem; letter-spacing:0.08em; text-transform:uppercase; color: var(--gold-deep); font-weight:600; }
.card-body h3{ font-size: 1.15rem; margin: 8px 0 10px; text-transform:none; }
.card-desc{ color: var(--stone); font-size: 0.9rem; margin-bottom:16px; }
.card-meta{ display:flex; gap:14px; flex-wrap:wrap; font-size:0.78rem; color: var(--ink); border-top:1px solid var(--border); padding-top:14px; }
.card-meta span{ display:flex; align-items:center; gap:6px; }
.meta-ico{ width:14px; height:14px; color: var(--gold-deep); }
.card-cta{
  margin-top: 16px; display:flex; align-items:center; justify-content:space-between;
  font-size: 0.8rem; text-transform:uppercase; letter-spacing:0.05em; font-weight:600; color: var(--ink);
}
.card-cta .arrow{ transition: transform .25s var(--ease); }
.card:hover .card-cta .arrow{ transform: translateX(5px); }

.grid-cta{ text-align:center; margin-top: 48px; }

/* ---------- Thermal feature strip (real content: many chalets list the same
   sauna / bain froid / détente sequence — this just surfaces it) ---------- */
.thermal-strip{ background: var(--off); border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.thermal-grid{ display:grid; grid-template-columns: repeat(3,1fr); gap: 40px; margin-top: 8px; }
.thermal-step{ display:flex; gap:16px; align-items:flex-start; }
.thermal-step .ico{
  width: 44px; height:44px; border-radius:50%; background: var(--ink); color: var(--gold);
  display:flex; align-items:center; justify-content:center; flex-shrink:0;
}
.thermal-step h3{ font-size: 1rem; margin-bottom: 6px; }
.thermal-step p{ color: var(--stone); font-size: 0.9rem; }

/* ---------- Split / feature rows ---------- */
.split{ display:grid; grid-template-columns: 1fr 1fr; gap: 60px; align-items:center; }
.split-media{ border-radius: var(--radius); overflow:hidden; aspect-ratio: 6/5; }
.split-media img{ width:100%; height:100%; object-fit:cover; }
.split-text .eyebrow{ margin-bottom: 12px; display:block; }
.split-text h2{ font-size: clamp(1.6rem,3vw,2.1rem); margin-bottom: 18px; }
.split-text p{ color: var(--stone); margin-bottom: 22px; }
.check-list{ display:flex; flex-direction:column; gap: 12px; margin-bottom: 26px; }
.check-list li{ display:flex; gap:12px; align-items:flex-start; font-size:0.92rem; }
.check-list li svg{ flex-shrink:0; margin-top:3px; color: var(--gold-deep); }
section.alt-bg{ background: var(--off); }

/* ---------- CTA banner ---------- */
.cta-banner{ background: var(--gold); color: var(--white); text-align:center; }
.cta-banner h2{ color: var(--white); font-size: clamp(1.6rem,3.2vw,2.2rem); margin-bottom: 16px; }
.cta-banner p{ color: rgba(255,255,255,0.9); max-width: 520px; margin: 0 auto 30px; }
.cta-banner .btn-primary{ background: var(--ink); }
.cta-banner .btn-primary:hover{ background: #222; }

/* ---------- Page banner (photo background) ---------- */
.page-banner{
  position: relative; padding: 84px 0 56px; overflow:hidden;
  background: var(--ink);
}
.page-banner-media{ position:absolute; inset:0; }
.page-banner-media img{ width:100%; height:100%; object-fit:cover; opacity:0.85; }
.page-banner-media::after{
  content:''; position:absolute; inset:0;
  background: linear-gradient(180deg, rgba(0,0,0,0.28) 0%, rgba(0,0,0,0.42) 100%);
}
.page-banner .wrap{ position:relative; z-index:2; }
.page-banner h1{ color: var(--white); }
.page-banner p{ color: #d9d9d9 !important; }

/* ---------- Filter bar (archive) ---------- */
.filter-bar{
  display:flex; gap: 16px; flex-wrap:wrap; align-items:center; justify-content:space-between;
  background: var(--off); border: 1px solid var(--border); border-radius: var(--radius);
  padding: 18px 22px; margin-bottom: 40px;
}
.filter-group{ display:flex; gap: 12px; flex-wrap:wrap; }
.filter-bar select, .filter-bar input[type="search"]{
  font-family: var(--font-body); font-size: 0.85rem; padding: 10px 14px;
  border: 1px solid var(--border); border-radius: var(--radius); background: var(--white); color: var(--ink);
}
.result-count{ font-size:0.85rem; color: var(--stone); }
.result-count b{ color: var(--ink); }
.no-results{ display:none; text-align:center; padding: 56px 0; color: var(--stone); }
.no-results.show{ display:block; }

/* ---------- Chalet single page ---------- */
.chalet-hero{ position:relative; height: 38vh; min-height: 280px; max-height: 430px; background: var(--ink); }
.chalet-hero-media{ position:absolute; inset:0; overflow:hidden; }
.chalet-hero-media img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:0.88; }
.chalet-hero::after{ content:''; position:absolute; inset:0; background: linear-gradient(180deg, rgba(0,0,0,0.1), rgba(0,0,0,0.88)); }
.chalet-hero-content{ position:absolute; left:0; right:0; bottom:0; padding: 0 32px 40px; max-width:1240px; margin:0 auto; width:100%; z-index:2; }
.chalet-hero-content h1{ color: var(--white); font-size: clamp(1.9rem,4.4vw,3rem); margin: 8px 0; text-transform:none; }
.chalet-hero-meta{ display:flex; gap:18px; flex-wrap:wrap; color: #e6e6e6; font-size:0.88rem; }
.chalet-hero-meta span{ display:flex; align-items:center; gap:6px; }

/* ---------- Media (single hero photo in the text column, mini strip below) ---------- */
.media-tile{
  position:relative; overflow:hidden; border-radius: var(--radius); background: var(--off);
  cursor: pointer;
}
.media-tile img{ width:100%; height:100%; object-fit:cover; transition: transform .5s var(--ease); }
.media-tile:hover img{ transform: scale(1.04); }
.media-tile.large{ aspect-ratio: 16/10; }
.media-tile.video{ cursor: default; background: var(--ink); }
.media-tile.video .play-btn{
  position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  background: rgba(0,0,0,0.35); border:0; width:100%; height:100%; padding:0; cursor:pointer;
  transition: background .25s;
}
.media-tile.video .play-btn:hover{ background: rgba(0,0,0,0.5); }
.media-tile.video .play-btn .circle{
  width:44px; height:44px; border-radius:50%; background: var(--gold);
  display:flex; align-items:center; justify-content:center; color: var(--white);
}
.media-tile.video iframe{ position:absolute; inset:0; width:100%; height:100%; border:0; }

/* Mini thumbnail strip for any remaining photos */
.media-strip{
  display:flex; gap:8px; overflow-x:auto; padding-bottom:4px; margin-top: 8px; margin-bottom: 8px;
}
.media-strip .strip-tile{
  flex: 0 0 84px; height:64px; border-radius: var(--radius); overflow:hidden; cursor:pointer;
  border: 1px solid var(--border);
}
.media-strip .strip-tile img{ width:100%; height:100%; object-fit:cover; }
.media-strip .strip-tile:hover{ border-color: var(--gold); }
.media-strip .strip-tile.video{ position:relative; border-color: var(--ink); }
.media-strip .strip-tile.video .strip-play{
  position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  background: rgba(0,0,0,0.4); color: var(--white);
}
.media-strip-count{
  flex:0 0 auto; display:flex; align-items:center; justify-content:center; padding:0 14px; height:64px;
  border-radius: var(--radius); border: 1px solid var(--border); background: var(--off);
  font-size:0.82rem; color: var(--stone); white-space:nowrap;
}

/* Lightbox */
.lightbox{
  position: fixed; inset:0; z-index: 400; background: rgba(0,0,0,0.92);
  display:flex; align-items:center; justify-content:center; padding: 40px;
  opacity:0; visibility:hidden; transition: opacity .25s var(--ease), visibility .25s var(--ease);
}
.lightbox.open{ opacity:1; visibility:visible; }
.lightbox img{ max-width:100%; max-height:100%; object-fit:contain; border-radius: var(--radius); }
.lightbox-close{
  position:absolute; top:24px; right:24px; background:none; border:0; color: var(--white); padding:8px;
}

.chalet-layout{ display:grid; grid-template-columns: 1.6fr 1fr; gap: 60px; align-items:flex-start; }
.chalet-main h2{ font-size: 1.4rem; margin: 40px 0 16px; }
.chalet-main h2:first-child{ margin-top:0; }
.chalet-main p{ color: var(--ink); }
.amenity-grid{ display:grid; grid-template-columns: repeat(2,1fr); gap: 10px 24px; }
.amenity-grid li{ display:flex; gap:10px; align-items:flex-start; font-size:0.9rem; padding: 9px 0; border-bottom: 1px solid var(--border); }
.amenity-grid li svg{ color: var(--gold-deep); flex-shrink:0; margin-top:2px; }
.mini-gallery{ display:grid; grid-template-columns: repeat(3,1fr); gap: 12px; }
.mini-gallery img{ aspect-ratio: 4/3; object-fit:cover; border-radius: var(--radius); }
.extra-note{ background: var(--off); border-left: 3px solid var(--gold); padding: 16px 20px; margin-top: 24px; font-size: 0.9rem; color: var(--stone); }

.booking-card{
  position: sticky; top: 90px; background: var(--white); border: 1px solid var(--border);
  border-radius: var(--radius); padding: 28px;
}
.booking-card h3{ font-size: 1.1rem; margin-bottom: 4px; text-transform:none; }
.booking-card .citq{ font-size:0.76rem; color: var(--stone); margin-bottom:20px; }
.booking-contact{ display:flex; flex-direction:column; gap:14px; margin-bottom: 22px; }
.booking-contact a{ display:flex; align-items:center; gap:10px; font-size:0.92rem; font-weight:600; }
.booking-contact a svg{ color: var(--gold-deep); flex-shrink:0; }
.booking-note{ font-size: 0.78rem; color: var(--stone); margin-top: 14px; text-align:center; }

/* Availability simulator */
.avail-check{ margin-bottom: 22px; padding-bottom: 22px; border-bottom: 1px solid var(--border); }
.avail-fields{ display:grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 12px; }
.avail-fields label{ font-size:0.7rem; text-transform:uppercase; letter-spacing:0.05em; color: var(--stone); display:block; margin-bottom:6px; }
.avail-fields input{
  width:100%; padding:10px; border:1px solid var(--border); border-radius: var(--radius); font-family:inherit; font-size:0.85rem;
}
.avail-result{ margin-top:14px; padding:12px 14px; border-radius: var(--radius); font-size:0.86rem; display:flex; gap:10px; align-items:flex-start; }
.avail-result.ok{ background: rgba(198,151,0,0.1); color: var(--gold-deep); }
.avail-result.wait{ background: var(--off); color: var(--stone); }
.avail-result svg{ flex-shrink:0; margin-top:1px; }
.avail-badge{
  display:inline-block; font-size:0.65rem; letter-spacing:0.06em; text-transform:uppercase; font-weight:600;
  color: var(--stone); border:1px solid var(--border); border-radius: var(--radius); padding: 2px 8px; margin-bottom:10px;
}

/* ---------- Mobile media slider ---------- */
.media-slider-wrap{ display:none; }
.media-slider{
  display:flex; overflow-x:auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling:touch;
  border-radius: var(--radius); aspect-ratio: 4/3;
}
.media-slider::-webkit-scrollbar{ display:none; }
.media-slider .slide{
  flex: 0 0 100%; scroll-snap-align: start; position:relative; overflow:hidden; background: var(--off);
}
.media-slider .slide img{ width:100%; height:100%; object-fit:cover; }
.media-slider .slide.video .play-btn{
  position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  background: rgba(0,0,0,0.35); border:0; width:100%; height:100%; padding:0;
}
.media-slider .slide.video .play-btn .circle{
  width:52px; height:52px; border-radius:50%; background: var(--gold);
  display:flex; align-items:center; justify-content:center; color: var(--white);
}
.media-slider .slide.video iframe{ position:absolute; inset:0; width:100%; height:100%; border:0; }
.slider-dots{ display:flex; justify-content:center; gap:6px; margin-top:10px; }
.slider-dots span{ width:6px; height:6px; border-radius:50%; background: var(--border); transition: background .2s, transform .2s; }
.slider-dots span.active{ background: var(--gold); transform: scale(1.3); }

/* ---------- Contact ---------- */
.contact-grid{ display:grid; grid-template-columns: 1fr 1.1fr; gap: 60px; }
.contact-info-list{ display:flex; flex-direction:column; gap: 24px; margin-top: 30px; }
.contact-info-item{ display:flex; gap:16px; align-items:flex-start; }
.contact-info-item .ico{
  width:44px; height:44px; border-radius:50%; background: var(--ink); color:var(--gold);
  display:flex; align-items:center; justify-content:center; flex-shrink:0;
}
.contact-info-item h4{ font-size:0.95rem; margin-bottom:4px; text-transform:none; }
.contact-info-item p, .contact-info-item a{ color: var(--stone); font-size:0.9rem; }
.contact-info-item a:hover{ color: var(--gold-deep); }
.form-card{ background: var(--off); border: 1px solid var(--border); border-radius: var(--radius); padding: 36px; }
.form-row{ display:grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-bottom:18px; }
.field{ margin-bottom: 18px; }
.field label{ font-size:0.76rem; text-transform:uppercase; letter-spacing:0.05em; color: var(--stone); display:block; margin-bottom:8px; }
.field input, .field select, .field textarea{
  width:100%; padding: 12px 14px; border: 1px solid var(--border); border-radius: var(--radius);
  font-family: inherit; font-size: 0.92rem; background: var(--white);
}
.field textarea{ min-height: 110px; resize: vertical; }

/* ---------- FAQ ---------- */
.faq-list{ max-width: 800px; }
.faq-item{ border-bottom: 1px solid var(--border); padding: 22px 0; }
.faq-item h3{ font-size: 1rem; text-transform:none; margin-bottom: 10px; cursor:pointer; display:flex; justify-content:space-between; align-items:center; gap:16px; }
.faq-item p{ color: var(--stone); font-size: 0.92rem; display:none; }
.faq-item.open p{ display:block; margin-top: 4px; }
.faq-item h3 .plus{ transition: transform .25s var(--ease); flex-shrink:0; color: var(--gold-deep); }
.faq-item.open h3 .plus{ transform: rotate(45deg); }

/* ---------- Footer ---------- */
footer.site-footer{ background: var(--ink); color: #c9c9c9; padding: 72px 0 30px; }
.footer-grid{ display:grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 44px; margin-bottom: 56px; }
.footer-logo-img{ height: 40px; width:auto; filter: invert(1) brightness(2); margin-bottom:16px; }
.footer-col h5{ font-size:0.76rem; letter-spacing:0.08em; text-transform:uppercase; color: var(--white); margin-bottom:16px; }
.footer-col ul{ display:flex; flex-direction:column; gap:10px; }
.footer-col a, .footer-col p{ font-size:0.86rem; color: #b0b0b0; }
.footer-col a:hover{ color: var(--gold); }
.footer-bottom{ border-top:1px solid rgba(255,255,255,0.12); padding-top:24px; display:flex; justify-content:space-between; flex-wrap:wrap; gap:12px; font-size:0.76rem; color: #999; }
.footer-bottom strong{ color: #ccc; }

/* ---------- Toast ---------- */
.toast{
  position: fixed; bottom: 28px; left: 50%; transform: translateX(-50%) translateY(20px);
  background: var(--ink); color: var(--white); padding: 14px 24px; border-radius: var(--radius);
  font-size: 0.85rem; opacity:0; visibility:hidden; transition: all .35s var(--ease); z-index: 300;
}
.toast.show{ opacity:1; visibility:visible; transform: translateX(-50%) translateY(0); }

/* ---------- Reveal ---------- */
.reveal{ opacity:0; transform: translateY(20px); transition: opacity .6s var(--ease), transform .6s var(--ease); }
.reveal.in{ opacity:1; transform:none; }

/* ---------- Responsive ---------- */
@media (max-width: 980px){
  nav.main-nav{ display:none; }
  .burger{ display:flex; }
  .grid{ grid-template-columns: repeat(2,1fr); }
  .stat-grid{ grid-template-columns: repeat(2,1fr); gap: 26px; }
  .thermal-grid{ grid-template-columns: 1fr; gap: 28px; }
  .split{ grid-template-columns: 1fr; gap: 30px; }
  .chalet-layout{ grid-template-columns: 1fr; }
  .booking-card{ position:static; }
  .contact-grid{ grid-template-columns: 1fr; }
  .footer-grid{ grid-template-columns: 1fr 1fr; gap: 32px; }
}
@media (max-width: 640px){
  section{ padding: 60px 0; }
  .wrap{ padding: 0 20px; }
  .grid{ grid-template-columns: 1fr; }
  .stat-grid{ grid-template-columns: 1fr 1fr; }
  .amenity-grid{ grid-template-columns: 1fr; }
  .mini-gallery{ grid-template-columns: 1fr 1fr; }
  .form-row{ grid-template-columns: 1fr; }
  .footer-grid{ grid-template-columns: 1fr; gap: 30px; }
  .hero-content{ padding-bottom: 56px; }
  .filter-bar{ flex-direction:column; align-items:stretch; }
  .chalet-hero{ height: 34vh; min-height: 240px; }
  .chalet-hero-content{ padding: 0 20px 24px; }
  .chalet-hero-meta{ gap: 12px; font-size: 0.8rem; }
  .media-tile.large, #mediaStripWrap{ display:none !important; }
  .media-slider-wrap{ display:block; }
  .avail-fields{ grid-template-columns: 1fr 1fr; }
}
