/* Chalet Bellachat — Les Praz de Chamonix
   Deux saisons, une seule maison : la palette suit la saison choisie (body.hiver / body.ete).
   Bodoni Moda pour les titres, Albert Sans pour le texte. */

:root {
  --ratio: 1.25;
  --duree: 900ms;
  --t0: 1.0625rem;
  --t-1: calc(var(--t0) / var(--ratio));
  --t-2: calc(var(--t-1) / var(--ratio));
  --t1: calc(var(--t0) * var(--ratio));
  --t2: calc(var(--t1) * var(--ratio));
  --t3: calc(var(--t2) * var(--ratio));
  --t4: calc(var(--t3) * var(--ratio));
  --t5: calc(var(--t4) * var(--ratio));
  --t6: calc(var(--t5) * var(--ratio));
  --t7: calc(var(--t6) * var(--ratio));
  --d-fast: calc(var(--duree) / 3);
  --d-mid: calc(var(--duree) / 1.5);
  --d-slow: calc(var(--duree) * 1.5);
  --serif: "Bodoni Moda", "Didot", "Bodoni 72", Georgia, serif;
  --sans: "Albert Sans", "Helvetica Neue", Arial, sans-serif;
  --ease: cubic-bezier(.22, .61, .36, 1);
  --ease-out: cubic-bezier(.16, 1, .3, 1);
  --wrap: 1280px;
  --gutter: clamp(20px, 5vw, 72px);
  --nav-h: 78px;
  --on-dark: #F3F2EE;
  --on-dark-soft: rgba(243, 242, 238, .74);
  --on-dark-line: rgba(243, 242, 238, .28);

  /* Hiver : neige, ardoise, glacier */
  --paper: #F2F2EF;
  --paper-2: #E9E9E4;
  --paper-3: #DDDDD6;
  --ink: #1B2422;
  --ink-2: #33403D;
  --soft: #626C69;
  --line: rgba(27, 36, 34, .14);
  --accent: #3F6272;
  --accent-2: #7E98A5;
  --night: #0F1719;
  --night-2: #17222A;
}
body.ete {
  /* Été : pierre chaude, forêt, alpage */
  --paper: #F7F3E9;
  --paper-2: #EEE8DA;
  --paper-3: #E3DCCA;
  --ink: #1E261F;
  --ink-2: #3A4438;
  --soft: #687063;
  --line: rgba(30, 38, 31, .14);
  --accent: #4C6644;
  --accent-2: #86A07C;
  --night: #121A14;
  --night-2: #1B261D;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body {
  margin: 0;
  font: 300 var(--t0) / 1.65 var(--sans);
  color: var(--ink-2);
  background: var(--paper);
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
html.js body { opacity: 0; }
html.js body.ready { opacity: 1; transition: opacity var(--d-mid) var(--ease); }
body.no-scroll { overflow: hidden; }
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
h1, h2, h3, h4 { font-family: var(--serif); font-weight: 400; line-height: 1.06; letter-spacing: -.005em; color: var(--ink); margin: 0; }
p { margin: 0; }
ul { list-style: none; margin: 0; padding: 0; }
::selection { background: var(--accent); color: var(--on-dark); }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }

/* Bascule de saison : tout ce qui porte une couleur de palette fond pendant une seconde */
html.swap *, html.swap *::before, html.swap *::after {
  transition: background-color var(--duree) var(--ease), color var(--duree) var(--ease),
              border-color var(--duree) var(--ease), fill var(--duree) var(--ease), stroke var(--duree) var(--ease) !important;
}
.s-hiver, .s-ete { animation: fade-in var(--duree) var(--ease); }
body.hiver .s-ete { display: none !important; }
body.ete .s-hiver { display: none !important; }
@keyframes fade-in { from { opacity: 0; } to { opacity: 1; } }

.wrap { max-width: var(--wrap); margin: 0 auto; padding-left: var(--gutter); padding-right: var(--gutter); }
.wrap--narrow { max-width: 820px; }
.section { padding: clamp(72px, 10vw, 140px) 0; }
.section--tight { padding: clamp(48px, 7vw, 96px) 0; }

.kicker {
  display: block;
  font: 500 var(--t-1) / 1.2 var(--sans);
  letter-spacing: .28em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: 1.1em;
}
.lede {
  font-family: var(--serif);
  font-size: clamp(var(--t2), 2.4vw, var(--t3));
  line-height: 1.28;
  color: var(--ink);
  max-width: 26em;
}
.lede em { font-style: italic; }
.h-section { font-size: clamp(var(--t3), 3.4vw, var(--t5)); max-width: 16em; }
.h-page { font-size: clamp(var(--t4), 5vw, var(--t6)); }
.small { font-size: var(--t-1); color: var(--soft); }
.txt { max-width: 34em; color: var(--ink-2); }
.txt + .txt { margin-top: 1em; }

/* ---------- Boutons ---------- */
.btn {
  display: inline-flex; align-items: center; gap: .7em;
  font: 500 var(--t-1) / 1 var(--sans);
  letter-spacing: .16em; text-transform: uppercase;
  padding: 1.05em 1.9em;
  border-radius: 2px;
  background: var(--ink); color: var(--paper);
  border: 1px solid var(--ink);
  transition: background-color var(--d-fast) var(--ease), color var(--d-fast) var(--ease), border-color var(--d-fast) var(--ease), transform var(--d-fast) var(--ease);
  white-space: nowrap;
}
.btn:hover { background: var(--accent); border-color: var(--accent); color: var(--on-dark); }
.btn:active { transform: translateY(1px); }
.btn svg { width: 1.1em; height: 1.1em; }
.btn--light { background: var(--on-dark); color: var(--night); border-color: var(--on-dark); }
.btn--light:hover { background: transparent; color: var(--on-dark); border-color: var(--on-dark); }
.btn--ghost { background: transparent; color: var(--ink); border-color: var(--line); }
.btn--ghost:hover { background: transparent; color: var(--accent); border-color: var(--accent); }
.btn--ghost-light { background: transparent; color: var(--on-dark); border-color: var(--on-dark-line); }
.btn--ghost-light:hover { background: transparent; border-color: var(--on-dark); color: var(--on-dark); }
.link {
  display: inline-flex; align-items: center; gap: .6em;
  font: 500 var(--t-1) / 1 var(--sans); letter-spacing: .14em; text-transform: uppercase; color: var(--ink);
}
.link svg { width: 1.2em; height: 1.2em; transition: transform var(--d-fast) var(--ease); }
.link:hover svg { transform: translateX(4px); }
.link::after { content: none; }

/* ---------- Sélecteur de saison ---------- */
.season { display: inline-flex; align-items: center; gap: 1em; }
.season__label { font: 400 var(--t-1) / 1 var(--sans); letter-spacing: .06em; color: var(--soft); white-space: nowrap; }
.season__track {
  position: relative; display: inline-grid; grid-template-columns: 1fr 1fr;
  border-radius: 999px; padding: 4px;
  background: var(--paper-2); border: 1px solid var(--line);
}
.season__thumb {
  position: absolute; top: 4px; bottom: 4px; left: 4px; width: calc(50% - 4px);
  border-radius: 999px; background: var(--ink);
  transition: transform var(--d-mid) var(--ease-out);
}
body.ete .season__thumb { transform: translateX(100%); }
.season__track button {
  position: relative; z-index: 1;
  display: inline-flex; align-items: center; justify-content: center; gap: .5em;
  font: 500 var(--t-1) / 1 var(--sans); letter-spacing: .1em; text-transform: uppercase;
  padding: .8em 1.4em; border-radius: 999px; color: var(--ink-2);
  transition: color var(--d-mid) var(--ease);
  white-space: nowrap;
}
.season__track button svg { width: 1.05em; height: 1.05em; }
.season__track button[aria-checked="true"] { color: var(--paper); }
.season__track button:hover:not([aria-checked="true"]) { color: var(--accent); }
/* variante sur photo : verre clair, pouce blanc */
.season--onphoto .season__label { color: var(--on-dark-soft); }
.season--onphoto .season__track { background: rgba(255, 255, 255, .12); border-color: rgba(255, 255, 255, .34); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); }
.season--onphoto .season__thumb { background: var(--on-dark); }
.season--onphoto .season__track button { color: var(--on-dark); }
.season--onphoto .season__track button[aria-checked="true"] { color: var(--night); }
.season--onphoto .season__track button:hover:not([aria-checked="true"]) { color: #fff; }
/* variante grande, dans le hero */
.season--hero { flex-direction: column; align-items: flex-start; gap: .9em; }
.season--hero .season__label { font-size: var(--t0); }
.season--hero .season__track button { font-size: var(--t0); padding: .85em 1.7em; gap: .6em; }
.season--hero .season__track button svg { width: 1.15em; height: 1.15em; }
/* Petit signal, une fois par session, pour montrer que ça se manipule */
.season--hero.nudge .season__thumb { animation: nudge 1.6s var(--ease) 1; }
body.ete .season--hero.nudge .season__thumb { animation-name: nudge-back; }
@keyframes nudge { 0%, 100% { transform: translateX(0); } 30% { transform: translateX(22%); } 60% { transform: translateX(0); } 80% { transform: translateX(10%); } }
@keyframes nudge-back { 0%, 100% { transform: translateX(100%); } 30% { transform: translateX(78%); } 60% { transform: translateX(100%); } 80% { transform: translateX(90%); } }

/* ---------- Navigation ---------- */
.nav {
  position: fixed; inset: 0 0 auto 0; z-index: 60;
  height: var(--nav-h);
  display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center;
  padding: 0 clamp(20px, 3vw, 48px);
  color: var(--ink);
  background: color-mix(in srgb, var(--paper) 90%, transparent);
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--line);
  transition: background-color var(--d-mid) var(--ease), color var(--d-mid) var(--ease), border-color var(--d-mid) var(--ease);
}
.nav--over:not(.is-solid) { background: transparent; border-bottom-color: transparent; color: var(--on-dark); backdrop-filter: none; -webkit-backdrop-filter: none; }
.nav--over.nav--ink:not(.is-solid) { color: var(--ink); }
.nav__brand { display: inline-flex; align-items: center; gap: 14px; color: inherit; }
.nav__brand svg { width: 38px; height: 28px; flex: none; }
.nav__name { display: flex; flex-direction: column; line-height: 1; }
.nav__name b { font: 400 var(--t1) / 1 var(--serif); letter-spacing: .2em; text-transform: uppercase; }
.nav__name small { font: 500 var(--t-2) / 1 var(--sans); letter-spacing: .3em; text-transform: uppercase; opacity: .7; margin-top: .45em; white-space: nowrap; }
.nav__links { display: flex; gap: clamp(16px, 2vw, 30px); justify-self: center; padding: 0 16px; }
.nav__links a { position: relative; font: 400 var(--t-1) / 1 var(--sans); letter-spacing: .12em; text-transform: uppercase; padding: .5em 0; white-space: nowrap; }
.nav__links a::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1px; background: currentColor; transform: scaleX(0); transform-origin: left; transition: transform var(--d-fast) var(--ease); }
.nav__links a:hover::after, .nav__links a[aria-current="page"]::after { transform: scaleX(1); }
.nav__right { display: flex; align-items: center; gap: clamp(14px, 1.6vw, 26px); justify-self: end; }
.nav .season__track button { padding: .62em 1.05em; }
.nav--over:not(.is-solid):not(.nav--ink) .season__track { background: rgba(255, 255, 255, .12); border-color: rgba(255, 255, 255, .34); }
.nav--over:not(.is-solid):not(.nav--ink) .season__thumb { background: var(--on-dark); }
.nav--over:not(.is-solid):not(.nav--ink) .season__track button { color: var(--on-dark); }
.nav--over:not(.is-solid):not(.nav--ink) .season__track button[aria-checked="true"] { color: var(--night); }
.nav__lang { font: 500 var(--t-1) / 1 var(--sans); letter-spacing: .14em; opacity: .8; }
.nav__lang:hover { opacity: 1; }
.nav__cta { padding: .9em 1.5em; }
.nav--over:not(.is-solid):not(.nav--ink) .nav__cta { background: var(--on-dark); color: var(--night); border-color: var(--on-dark); }
.nav--over:not(.is-solid):not(.nav--ink) .nav__cta:hover { background: transparent; color: var(--on-dark); }
.nav__burger { display: none; align-items: center; gap: 12px; font: 500 var(--t-1) / 1 var(--sans); letter-spacing: .16em; text-transform: uppercase; }
.nav__burger i { display: block; width: 26px; height: 12px; position: relative; }
.nav__burger i::before, .nav__burger i::after { content: ""; position: absolute; left: 0; right: 0; height: 1.5px; background: currentColor; transition: transform var(--d-fast) var(--ease); }
.nav__burger i::before { top: 0; } .nav__burger i::after { bottom: 0; }

/* Menu plein écran */
.menu {
  position: fixed; inset: 0; z-index: 70;
  background: var(--paper); color: var(--ink);
  display: flex; flex-direction: column;
  padding: var(--nav-h) var(--gutter) 40px;
  opacity: 0; visibility: hidden; transform: translateY(-8px);
  transition: opacity var(--d-mid) var(--ease), visibility 0s var(--d-mid), transform var(--d-mid) var(--ease);
  overflow-y: auto;
}
.menu.is-open { opacity: 1; visibility: visible; transform: none; transition: opacity var(--d-mid) var(--ease), transform var(--d-mid) var(--ease); }
.menu__close { position: absolute; top: 0; right: var(--gutter); height: var(--nav-h); display: inline-flex; align-items: center; gap: 10px; font: 500 var(--t-1) / 1 var(--sans); letter-spacing: .16em; text-transform: uppercase; }
.menu__close svg { width: 20px; height: 20px; }
.menu__list { margin-top: clamp(24px, 6vh, 64px); }
.menu__list a { display: block; font: 400 clamp(var(--t3), 6vw, var(--t5)) / 1.15 var(--serif); padding: .28em 0; border-bottom: 1px solid var(--line); }
.menu__list a[aria-current="page"] { color: var(--accent); }
.menu__tools { margin-top: auto; padding-top: 32px; display: flex; flex-wrap: wrap; align-items: center; gap: 20px 28px; }
.menu__foot { margin-top: 28px; font-size: var(--t-1); color: var(--soft); }

/* ---------- Hero ---------- */
.hero {
  position: relative; height: 100svh; min-height: 640px; max-height: 1100px;
  display: flex; align-items: flex-end;
  color: var(--on-dark); background: var(--night);
  overflow: hidden; isolation: isolate;
}
.hero__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 0; transition: opacity var(--d-slow) var(--ease); animation: kb 16s var(--ease-out) forwards; }
.hero__img--ete { opacity: 0; }
body.ete .hero__img--ete { opacity: 1; }
body.ete .hero__img--hiver { opacity: 0; }
@keyframes kb { from { transform: scale(1.08); } to { transform: scale(1); } }
/* bande haute de 140 px pour la navbar, voile bas pour le texte */
.hero::before { content: ""; position: absolute; inset: 0 0 auto 0; height: 140px; z-index: 1; pointer-events: none; background: linear-gradient(to bottom, rgba(15, 23, 25, .30), rgba(15, 23, 25, 0)); transition: background var(--d-slow) var(--ease); }
body.hiver .hero[data-top-hiver="ink"]::before, body.ete .hero[data-top-ete="ink"]::before { background: linear-gradient(to bottom, rgba(243, 242, 238, .42), rgba(243, 242, 238, 0)); }
.hero::after { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: linear-gradient(to top, rgba(15, 23, 25, .88) 0%, rgba(15, 23, 25, .74) 22%, rgba(15, 23, 25, .46) 46%, rgba(15, 23, 25, .12) 68%, rgba(15, 23, 25, 0) 85%); }
.hero__content { position: relative; z-index: 2; width: 100%; max-width: var(--wrap); margin: 0 auto; padding: 0 var(--gutter) clamp(40px, 8vh, 88px); }
.hero .kicker { color: var(--on-dark-soft); }
.hero h1 { font-size: clamp(var(--t5), 7vw, var(--t7)); color: var(--on-dark); letter-spacing: -.01em; }
.hero__line { font-family: var(--serif); font-style: italic; font-size: clamp(var(--t1), 2.2vw, var(--t3)); line-height: 1.3; max-width: 26em; color: var(--on-dark); margin-top: .7em; }
.hero__season { margin-top: clamp(28px, 4vh, 44px); }
.hero__scroll { position: absolute; right: var(--gutter); bottom: clamp(40px, 8vh, 88px); z-index: 2; display: flex; flex-direction: column; align-items: center; gap: 12px; font: 500 var(--t-2) / 1 var(--sans); letter-spacing: .3em; text-transform: uppercase; color: var(--on-dark-soft); }
.hero__scroll i { width: 1px; height: 56px; background: var(--on-dark-soft); position: relative; overflow: hidden; }
.hero__scroll i::after { content: ""; position: absolute; inset: 0; background: var(--paper); animation: drip 2.4s var(--ease) infinite; }
@keyframes drip { 0% { transform: translateY(-100%); } 60%, 100% { transform: translateY(100%); } }
/* apparition à l'ouverture */
.hero__content > * { opacity: 0; transform: translateY(26px); animation: rise var(--d-slow) var(--ease-out) forwards; }
.hero__content > :nth-child(1) { animation-delay: .25s; }
.hero__content > :nth-child(2) { animation-delay: .4s; }
.hero__content > :nth-child(3) { animation-delay: .55s; }
.hero__content > :nth-child(4) { animation-delay: .75s; }
@keyframes rise { to { opacity: 1; transform: none; } }

/* En-tête photo des pages intérieures */
.phero {
  position: relative; height: 74svh; min-height: 520px; max-height: 860px;
  display: flex; align-items: flex-end;
  color: var(--on-dark); background: var(--night); overflow: hidden; isolation: isolate;
}
.phero__img { position: absolute; left: 0; right: 0; top: -30%; width: 100%; height: 130%; object-fit: cover; z-index: 0; transition: opacity var(--d-slow) var(--ease); will-change: transform; }
.phero__img--ete { opacity: 0; }
body.ete .phero__img--ete { opacity: 1; }
body.ete .phero__img--hiver { opacity: 0; }
.phero::before { content: ""; position: absolute; inset: 0 0 auto 0; height: 140px; z-index: 1; pointer-events: none; background: linear-gradient(to bottom, rgba(15, 23, 25, .30), rgba(15, 23, 25, 0)); transition: background var(--d-slow) var(--ease); }
body.hiver .phero[data-top-hiver="ink"]::before, body.ete .phero[data-top-ete="ink"]::before { background: linear-gradient(to bottom, rgba(243, 242, 238, .42), rgba(243, 242, 238, 0)); }
.phero::after { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: linear-gradient(to top, rgba(15, 23, 25, .86) 0%, rgba(15, 23, 25, .66) 26%, rgba(15, 23, 25, .34) 52%, rgba(15, 23, 25, .06) 76%, rgba(15, 23, 25, 0) 100%); }
.phero__content { position: relative; z-index: 2; width: 100%; max-width: var(--wrap); margin: 0 auto; padding: 0 var(--gutter) clamp(36px, 6vh, 64px); display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 28px 40px; }
.phero .kicker { color: var(--on-dark-soft); }
.phero h1 { color: var(--on-dark); }
.phero__line { font-family: var(--serif); font-style: italic; font-size: clamp(var(--t1), 2vw, var(--t2)); line-height: 1.3; max-width: 26em; color: var(--on-dark); margin-top: .6em; }
/* voile local derrière le bloc de titre : invisible sur photo sombre, décisif sur neige ou ciel blanc */
.phero__content > div:first-child { position: relative; isolation: isolate; }
.phero__content > div:first-child::before { content: ""; position: absolute; inset: -72px -140px -40px -170px; z-index: -1; pointer-events: none; background: radial-gradient(ellipse at 36% 42%, rgba(15, 23, 25, .74), rgba(15, 23, 25, 0) 72%); }
.phero__content > * { opacity: 0; transform: translateY(20px); animation: rise var(--d-slow) var(--ease-out) forwards; animation-delay: .25s; }
.phero__content > :nth-child(2) { animation-delay: .45s; }

/* En-tête sans photo */
.ptop { padding: calc(var(--nav-h) + clamp(48px, 8vw, 110px)) 0 clamp(32px, 5vw, 64px); }
.ptop h1 { font-size: clamp(var(--t4), 5vw, var(--t6)); }
.ptop .phero__line { color: var(--ink-2); font-style: italic; }

/* ---------- Photos cliquables ---------- */
.ph { position: relative; margin: 0; overflow: hidden; background: var(--paper-3); cursor: zoom-in; }
.ph img { width: 100%; height: 100%; object-fit: cover; transition: transform var(--d-slow) var(--ease); }
.ph:hover img { transform: scale(1.035); }
.ph figcaption {
  position: absolute; left: 0; right: 0; bottom: 0; z-index: 1;
  padding: clamp(44px, 6vw, 72px) clamp(18px, 2.4vw, 30px) clamp(16px, 2vw, 24px);
  color: var(--on-dark); font: 400 var(--t-1) / 1.45 var(--sans); letter-spacing: .02em;
  background: linear-gradient(to top, rgba(15, 23, 25, .74), rgba(15, 23, 25, 0));
  pointer-events: none;
}
.ph figcaption b { display: block; font: 400 var(--t1) / 1.15 var(--serif); margin-bottom: .3em; }
.ph .tag { position: absolute; top: 16px; left: 16px; z-index: 1; font: 500 var(--t-2) / 1 var(--sans); letter-spacing: .26em; text-transform: uppercase; color: var(--night); background: var(--on-dark); padding: .7em .9em; border-radius: 999px; }
.ph--zoom::after { content: ""; position: absolute; right: 16px; top: 16px; z-index: 1; width: 36px; height: 36px; border-radius: 50%; background: rgba(15, 23, 25, .42) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23F3F2EE' stroke-width='1.5' stroke-linecap='round'><path d='M12 5v14M5 12h14'/></svg>") center / 16px no-repeat; opacity: 0; transition: opacity var(--d-fast) var(--ease); }
.ph--zoom:hover::after { opacity: 1; }
.grid { display: grid; gap: clamp(14px, 2vw, 24px); }
.grid--3 { grid-template-columns: repeat(3, 1fr); }
.grid--2 { grid-template-columns: repeat(2, 1fr); }
.grid .ph { aspect-ratio: 3 / 2; }
.grid .ph img { position: absolute; inset: 0; }

/* ---------- Accueil ---------- */
.intro { padding: clamp(80px, 11vw, 150px) 0 clamp(56px, 8vw, 110px); }
.intro__grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(32px, 6vw, 96px); align-items: end; }
.intro .lede { font-size: clamp(var(--t3), 3.2vw, var(--t5)); max-width: 15em; }
.facts { display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(20px, 3vw, 40px); border-top: 1px solid var(--line); padding-top: clamp(28px, 3vw, 40px); margin-top: clamp(48px, 6vw, 80px); }
.facts b { display: block; font: 400 clamp(var(--t3), 3.4vw, var(--t5)) / 1 var(--serif); color: var(--ink); font-variant-numeric: tabular-nums; }
.facts span { display: block; margin-top: .6em; font-size: var(--t-1); color: var(--soft); max-width: 16em; }
.facts b span { display: inline; font: inherit; color: inherit; margin: 0; }

.doors { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(14px, 2vw, 24px); }
.door { position: relative; display: block; aspect-ratio: 3 / 4; overflow: hidden; background: var(--paper-3); color: var(--on-dark); isolation: isolate; }
.door img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform var(--d-slow) var(--ease); }
.door img.s-ete { animation: none; }
.door:hover img { transform: scale(1.05); }
.door::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(15, 23, 25, .82) 0%, rgba(15, 23, 25, .38) 36%, rgba(15, 23, 25, 0) 62%); z-index: 1; }
.door__txt { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: clamp(20px, 2.6vw, 34px); }
.door__txt .kicker { color: var(--on-dark-soft); margin-bottom: .8em; }
.door__txt h2 { font-size: clamp(var(--t2), 2.4vw, var(--t4)); color: var(--on-dark); }
.door__txt p { margin-top: .5em; font-size: var(--t-1); color: var(--on-dark-soft); max-width: 24em; }
.door__go { display: inline-flex; align-items: center; gap: .6em; margin-top: 1.2em; font: 500 var(--t-2) / 1 var(--sans); letter-spacing: .26em; text-transform: uppercase; }
.door__go svg { width: 1.3em; height: 1.3em; transition: transform var(--d-fast) var(--ease); }
.door:hover .door__go svg { transform: translateX(5px); }

/* Bandeau de saison : deux photos, la saison active en tête */
.duo { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(14px, 2vw, 24px); }
.duo .ph { aspect-ratio: 4 / 3; }
.duo .ph img { position: absolute; inset: 0; }
body.ete .duo .ph--ete { order: -1; }

/* Panneau pleine page, citation */
.panel { position: relative; height: 92svh; min-height: 560px; max-height: 960px; overflow: hidden; display: grid; place-items: center; text-align: center; color: var(--on-dark); background: var(--night); isolation: isolate; cursor: zoom-in; }
.panel > .ph { position: absolute; inset: 0; margin: 0; z-index: 0; overflow: visible; background: none; }
.panel .ph figcaption, .panel .ph::after { display: none; }
.panel img { position: absolute; left: 0; top: -10%; width: 100%; height: 120%; object-fit: cover; will-change: transform; }
.panel .ph:hover img { transform: none; }
.panel::after { content: ""; position: absolute; inset: 0; z-index: 1; background: radial-gradient(ellipse at center, rgba(15, 23, 25, .34), rgba(15, 23, 25, .58)); pointer-events: none; }
.panel blockquote { position: relative; z-index: 2; margin: 0; padding: 0 var(--gutter); max-width: 22em; font: italic 400 clamp(var(--t3), 4.4vw, var(--t6)) / 1.15 var(--serif); }
.panel cite { display: block; margin-top: 1.2em; font: 500 var(--t-1) / 1 var(--sans); letter-spacing: .28em; text-transform: uppercase; font-style: normal; color: var(--on-dark-soft); }

/* Bande contact : nuit, note près du bouton */
.contact { background: var(--night); color: var(--on-dark); padding: clamp(72px, 9vw, 120px) 0; }
.contact__grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(32px, 6vw, 96px); align-items: center; }
.contact .kicker { color: var(--accent-2); }
.contact h2 { font-size: clamp(var(--t3), 3.8vw, var(--t5)); color: var(--on-dark); max-width: 12em; }
.contact p { margin-top: 1em; color: var(--on-dark-soft); max-width: 30em; }
.contact__cta { display: flex; flex-direction: column; align-items: flex-start; gap: 18px; }
.contact__tel { font-size: var(--t0); color: var(--on-dark-soft); }
.contact__tel a { color: var(--on-dark); border-bottom: 1px solid var(--on-dark-line); }
.rating { display: inline-flex; align-items: baseline; gap: .6em; font-size: var(--t-1); color: var(--on-dark-soft); letter-spacing: .02em; }
.rating b { font: 400 var(--t2) / 1 var(--serif); color: var(--on-dark); font-variant-numeric: tabular-nums; }
.rating--ink { color: var(--soft); }
.rating--ink b { color: var(--ink); }
.stars { display: inline-flex; gap: 2px; }
.stars i { width: 14px; height: 14px; background: currentColor; -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 2.5l2.9 6.3 6.9.8-5.1 4.7 1.4 6.8L12 17.7l-6.1 3.4 1.4-6.8L2.2 9.6l6.9-.8z'/></svg>") center / contain no-repeat; mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 2.5l2.9 6.3 6.9.8-5.1 4.7 1.4 6.8L12 17.7l-6.1 3.4 1.4-6.8L2.2 9.6l6.9-.8z'/></svg>") center / contain no-repeat; }
.stars i.off { opacity: .22; }

/* ---------- Page Le chalet ---------- */
.space { position: relative; height: 100svh; min-height: 560px; max-height: 1000px; overflow: hidden; display: flex; align-items: flex-end; color: var(--on-dark); background: var(--night); isolation: isolate; }
.space .ph { position: absolute; inset: 0; margin: 0; }
.space .ph img { width: 100%; height: 100%; }
.space .ph figcaption { display: none; }
.space::after { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none; background: linear-gradient(to top, rgba(15, 23, 25, .72) 0%, rgba(15, 23, 25, .34) 30%, rgba(15, 23, 25, 0) 55%); }
.space__card { position: relative; z-index: 2; width: 100%; max-width: var(--wrap); margin: 0 auto; padding: 0 var(--gutter) clamp(32px, 6vh, 64px); display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 16px 40px; align-items: end; pointer-events: none; }
.space__card h2 { font-size: clamp(var(--t3), 3.6vw, var(--t5)); color: var(--on-dark); }
.space__card .tag { display: inline-block; margin-bottom: 1em; font: 500 var(--t-2) / 1 var(--sans); letter-spacing: .26em; text-transform: uppercase; color: var(--night); background: var(--on-dark); padding: .7em .9em; border-radius: 999px; }
.space__card p { font-size: clamp(var(--t0), 1.4vw, var(--t1)); color: var(--on-dark); max-width: 26em; justify-self: end; text-align: right; }
.space__card .fact { display: block; font: 500 var(--t-1) / 1.4 var(--sans); letter-spacing: .1em; text-transform: uppercase; color: var(--on-dark-soft); margin-top: .9em; }
.space--first { margin-top: 0; }

.band { position: relative; overflow: hidden; background: var(--night); color: var(--on-dark); }
.band .ph { aspect-ratio: 2048 / 760; min-height: 360px; max-height: 76svh; }
.band .ph img { position: absolute; inset: 0; }
.band .ph figcaption { padding-left: var(--gutter); padding-right: var(--gutter); }
.band .ph figcaption b { font-size: clamp(var(--t2), 2.6vw, var(--t4)); }

.wellness { padding: clamp(72px, 10vw, 140px) 0; }
.wellness__head { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 6fr); gap: clamp(24px, 5vw, 80px); align-items: end; margin-bottom: clamp(32px, 5vw, 64px); }
.wellness__head .txt { max-width: 30em; }
.wellness .grid .ph { aspect-ratio: 3 / 2; }
.specs { display: flex; flex-wrap: wrap; gap: 12px 36px; margin-top: clamp(32px, 5vw, 64px); padding-top: 24px; border-top: 1px solid var(--line); font: 500 var(--t-1) / 1.4 var(--sans); letter-spacing: .1em; text-transform: uppercase; color: var(--soft); }

/* ---------- Page Les chambres : pile collante ---------- */
.rooms-top { padding: calc(var(--nav-h) + clamp(48px, 7vw, 96px)) 0 clamp(36px, 5vw, 64px); }
.rooms-top__grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(24px, 5vw, 80px); align-items: end; }
.rooms-top .h-page { max-width: 9em; }
.rooms-index { display: grid; grid-template-columns: 1fr 1fr; gap: 0 32px; border-top: 1px solid var(--line); }
.rooms-index a { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; padding: 14px 0; border-bottom: 1px solid var(--line); font-family: var(--serif); font-size: var(--t1); color: var(--ink); }
.rooms-index a small { font: 400 var(--t-1) / 1 var(--sans); color: var(--soft); letter-spacing: .04em; }
.rooms-index a:hover { color: var(--accent); }
.rooms { position: relative; }
.room { position: sticky; top: 0; height: 100svh; min-height: 560px; overflow: hidden; background: var(--night); color: var(--on-dark); isolation: isolate; display: flex; align-items: flex-end; box-shadow: 0 -30px 60px rgba(15, 23, 25, .35); }
.room .ph { position: absolute; inset: 0; margin: 0; }
.room .ph img { width: 100%; height: 100%; }
.room .ph figcaption { display: none; }
.room::after { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none; background: linear-gradient(to top, rgba(15, 23, 25, .55) 0%, rgba(15, 23, 25, .18) 30%, rgba(15, 23, 25, 0) 52%); }
.room__card { position: relative; z-index: 2; margin: 0 var(--gutter) clamp(28px, 6vh, 64px); max-width: 460px; padding: clamp(22px, 2.6vw, 34px) clamp(24px, 2.8vw, 38px); background: var(--paper); color: var(--ink-2); pointer-events: none; transform: translateY(24px); opacity: 0; transition: transform var(--duree) var(--ease-out), opacity var(--duree) var(--ease); }
.room.in .room__card { transform: none; opacity: 1; }
.room__card .kicker { margin-bottom: .8em; }
.room__card h2 { font-size: clamp(var(--t2), 2.8vw, var(--t4)); }
.room__card .fact { display: block; margin-top: .7em; font: 500 var(--t-1) / 1.4 var(--sans); letter-spacing: .1em; text-transform: uppercase; color: var(--accent); }
.room__card p { margin-top: 1em; font-size: var(--t0); }
.room__num { position: absolute; right: var(--gutter); bottom: clamp(28px, 6vh, 64px); z-index: 2; font: 400 clamp(var(--t2), 3vw, var(--t4)) / 1 var(--serif); color: var(--on-dark-soft); pointer-events: none; }
.rooms-end { position: relative; z-index: 3; background: var(--paper); }

/* ---------- Page La vallée ---------- */
.seasons { display: flex; flex-direction: column; }
body.ete .season-block--ete { order: -1; }
.season-block { padding: clamp(64px, 9vw, 120px) 0; }
.season-block + .season-block { border-top: 1px solid var(--line); }
.season-block__head { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(20px, 4vw, 64px); align-items: end; margin-bottom: clamp(28px, 4vw, 56px); }
.season-block__head .txt { max-width: 26em; }
.acts { display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(20px, 3vw, 40px); margin-top: clamp(32px, 5vw, 64px); padding-top: clamp(24px, 3vw, 36px); border-top: 1px solid var(--line); }
.acts b { display: block; font: 400 var(--t1) / 1.2 var(--serif); color: var(--ink); }
.acts span { display: block; margin-top: .5em; font-size: var(--t-1); color: var(--soft); }
.distances { padding: clamp(56px, 8vw, 100px) 0; border-top: 1px solid var(--line); }
.distances__grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(24px, 5vw, 80px); align-items: start; }

/* Listes de définition (distances, conditions) */
.dl { display: grid; grid-template-columns: 1fr 1fr; gap: 0 clamp(24px, 4vw, 56px); margin: 0; }
.dl div { display: flex; justify-content: space-between; gap: 16px; align-items: baseline; padding: 13px 0; border-bottom: 1px solid var(--line); }
.dl dt { font-size: var(--t0); color: var(--ink-2); }
.dl dd { margin: 0; font-family: var(--serif); font-size: var(--t1); color: var(--ink); white-space: nowrap; }

/* ---------- Page Séjours ---------- */
.rates { padding: clamp(72px, 10vw, 140px) 0; }
.rates__grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(32px, 6vw, 96px); align-items: start; }
.rate { display: grid; grid-template-columns: 1fr auto; gap: 8px 32px; align-items: baseline; padding: clamp(22px, 3vw, 34px) 0; border-top: 1px solid var(--line); transition: opacity var(--d-mid) var(--ease); }
.rate:last-of-type { border-bottom: 1px solid var(--line); }
.rate__name { grid-column: 1; grid-row: 1; font: 400 clamp(var(--t2), 2.6vw, var(--t3)) / 1.1 var(--serif); color: var(--ink); display: flex; align-items: center; gap: .5em; }
.rate__name svg { width: .8em; height: .8em; color: var(--accent); }
.rate__when { grid-column: 1; grid-row: 2; font-size: var(--t-1); color: var(--soft); }
.rate__price { grid-column: 2; grid-row: 1 / span 2; text-align: right; font: 400 clamp(var(--t2), 2.6vw, var(--t3)) / 1.1 var(--serif); color: var(--ink); white-space: nowrap; }
.rate__price small { display: block; font: 400 var(--t-1) / 1 var(--sans); color: var(--soft); margin-top: .5em; letter-spacing: .06em; }
body.hiver .rate--ete, body.ete .rate--hiver { opacity: .55; }
.rates__note { margin-top: 24px; max-width: 34em; }
.rates__note b { font-weight: 500; color: var(--ink); }
.book { background: var(--paper-2); padding: clamp(28px, 3.2vw, 44px); display: flex; flex-direction: column; gap: 18px; align-items: flex-start; position: sticky; top: calc(var(--nav-h) + 24px); }
.book h2 { font-size: clamp(var(--t2), 2.4vw, var(--t3)); }
.book p { color: var(--ink-2); }
.book .btn { align-self: stretch; justify-content: center; }
.book__tel { font-size: var(--t0); color: var(--soft); }
.book__tel a { color: var(--ink); border-bottom: 1px solid var(--line); }
.book ul { display: grid; gap: 8px; padding-top: 18px; border-top: 1px solid var(--line); width: 100%; font-size: var(--t-1); color: var(--ink-2); }
.book ul li { display: flex; gap: 10px; }
.book ul li::before { content: ""; flex: none; width: 5px; height: 5px; border-radius: 50%; background: var(--accent); margin-top: .65em; }
.included { padding: clamp(56px, 8vw, 110px) 0; border-top: 1px solid var(--line); }
.cols-2 { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(28px, 5vw, 80px); }
.cols-2 h3 { font-size: var(--t2); margin-bottom: .8em; }
.list li { display: flex; gap: 14px; padding: 11px 0; border-bottom: 1px solid var(--line); color: var(--ink-2); }
.list li::before { content: ""; flex: none; width: 5px; height: 5px; border-radius: 50%; background: var(--accent); margin-top: .7em; }
.list--plain li::before { display: none; }

/* Avis */
.reviews { padding: clamp(72px, 10vw, 140px) 0; border-top: 1px solid var(--line); }
.reviews__head { display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: 20px 40px; margin-bottom: clamp(32px, 5vw, 64px); }
.reviews__grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(14px, 2vw, 24px); }
.review { background: var(--paper-2); padding: clamp(24px, 3vw, 40px); display: flex; flex-direction: column; gap: 18px; transition: transform var(--d-mid) var(--ease), box-shadow var(--d-mid) var(--ease); }
.review:hover { transform: translateY(-4px); box-shadow: 0 24px 48px -24px rgba(27, 36, 34, .35); }
.review__who { display: flex; align-items: center; gap: 14px; }
.review__who img { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; }
.review__who b { display: block; font: 400 var(--t1) / 1.1 var(--serif); color: var(--ink); }
.review__who span { font-size: var(--t-1); color: var(--soft); }
.review .stars { color: var(--accent); }
.review .stars i { opacity: 0; transform: scale(.4); }
.review.in .stars i { animation: star var(--d-mid) var(--ease-out) forwards; }
.review.in .stars i:nth-child(1) { animation-delay: .1s; } .review.in .stars i:nth-child(2) { animation-delay: .22s; } .review.in .stars i:nth-child(3) { animation-delay: .34s; } .review.in .stars i:nth-child(4) { animation-delay: .46s; } .review.in .stars i:nth-child(5) { animation-delay: .58s; }
.review.in .stars i.off { animation-name: star-off; }
@keyframes star { to { opacity: 1; transform: none; } }
@keyframes star-off { to { opacity: .22; transform: none; } }
.review blockquote { margin: 0; font-family: var(--serif); font-size: clamp(var(--t0), 1.5vw, var(--t1)); line-height: 1.45; color: var(--ink); }
.review__src { margin-top: auto; font: 500 var(--t-2) / 1 var(--sans); letter-spacing: .24em; text-transform: uppercase; color: var(--soft); }

/* ---------- Infos pratiques / pages texte ---------- */
.blocks { padding: clamp(56px, 8vw, 110px) 0; }
.block { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: clamp(20px, 4vw, 64px); padding: clamp(32px, 4vw, 56px) 0; border-top: 1px solid var(--line); }
.block h2 { font-size: clamp(var(--t2), 2.6vw, var(--t3)); max-width: 9em; }
.block .cols-2 { gap: clamp(16px, 3vw, 48px); }
.block .actions { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 22px; }
.prose { padding-bottom: clamp(72px, 10vw, 140px); }
.prose h2 { font-size: var(--t2); margin: 2.2em 0 .6em; }
.prose p { max-width: 40em; color: var(--ink-2); }
.prose p + p { margin-top: .8em; }
.prose .muted { color: var(--soft); }
.todo { color: var(--accent); font-style: italic; }

/* ---------- Pied de page ---------- */
.footer { background: var(--paper-2); border-top: 1px solid var(--line); padding: clamp(48px, 6vw, 80px) 0 32px; color: var(--ink-2); }
.footer__grid { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: clamp(24px, 4vw, 64px); }
.footer__brand { display: inline-flex; align-items: center; gap: 14px; color: var(--ink); }
.footer__brand svg { width: 38px; height: 28px; }
.footer__brand b { font: 400 var(--t1) / 1 var(--serif); letter-spacing: .2em; text-transform: uppercase; display: block; }
.footer__brand small { display: block; font: 500 var(--t-2) / 1 var(--sans); letter-spacing: .3em; text-transform: uppercase; opacity: .7; margin-top: .45em; }
.footer address { font-style: normal; margin-top: 18px; font-size: var(--t-1); color: var(--soft); line-height: 1.7; }
.footer address a { color: var(--ink); }
.footer h4 { font: 500 var(--t-2) / 1 var(--sans); letter-spacing: .28em; text-transform: uppercase; color: var(--soft); margin-bottom: 1.4em; }
.footer li { padding: 5px 0; font-size: var(--t-1); }
.footer li a:hover { color: var(--accent); }
.footer__bottom { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px 24px; margin-top: clamp(32px, 4vw, 56px); padding-top: 20px; border-top: 1px solid var(--line); font-size: var(--t-2); color: var(--soft); letter-spacing: .04em; }
.footer__bottom a { border-bottom: 1px solid var(--line); }

/* ---------- Lightbox ---------- */
.lb { position: fixed; inset: 0; z-index: 90; background: rgba(15, 23, 25, .94); color: var(--on-dark); display: flex; flex-direction: column; opacity: 0; visibility: hidden; transition: opacity var(--d-mid) var(--ease), visibility 0s var(--d-mid); }
.lb.is-open { opacity: 1; visibility: visible; transition: opacity var(--d-mid) var(--ease); }
.lb__stage { position: relative; flex: 1; display: grid; place-items: center; padding: 64px clamp(16px, 8vw, 120px) 16px; min-height: 0; }
.lb__img { max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain; box-shadow: 0 30px 80px rgba(0, 0, 0, .5); opacity: 0; transform: scale(.985); transition: opacity var(--d-mid) var(--ease), transform var(--d-mid) var(--ease-out); }
.lb__img.is-in { opacity: 1; transform: none; }
.lb__close, .lb__arrow { position: absolute; display: grid; place-items: center; width: 52px; height: 52px; border-radius: 50%; color: var(--on-dark); background: rgba(255, 255, 255, .08); border: 1px solid rgba(255, 255, 255, .22); transition: background-color var(--d-fast) var(--ease), border-color var(--d-fast) var(--ease); }
.lb__close:hover, .lb__arrow:hover { background: rgba(255, 255, 255, .18); border-color: rgba(255, 255, 255, .5); }
.lb__close { top: 18px; right: 18px; }
.lb__close svg, .lb__arrow svg { width: 22px; height: 22px; }
.lb__arrow { top: 50%; transform: translateY(-50%); }
.lb__arrow--prev { left: clamp(10px, 2.5vw, 36px); }
.lb__arrow--next { right: clamp(10px, 2.5vw, 36px); }
.lb__arrow[hidden] { display: none; }
.lb__foot { display: flex; justify-content: space-between; align-items: baseline; gap: 20px; padding: 0 clamp(16px, 8vw, 120px) 22px; font-size: var(--t-1); color: var(--on-dark-soft); }
.lb__caption { font-family: var(--serif); font-size: var(--t1); color: var(--on-dark); }
.lb__count { font-variant-numeric: tabular-nums; letter-spacing: .1em; }

/* ---------- Apparitions ---------- */
html.js .rv { opacity: 0; transform: translateY(28px); transition: opacity var(--duree) var(--ease), transform var(--duree) var(--ease-out); }
html.js .rv.in { opacity: 1; transform: none; }
html.js .rv-img { position: relative; }
html.js .rv-img::before { content: ""; position: absolute; inset: 0; z-index: 3; background: var(--paper); transform-origin: top; transition: transform var(--d-slow) var(--ease-out); pointer-events: none; }
html.js .rv-img.in::before { transform: scaleY(0); }
html.js .rv-img img { transform: scale(1.08); transition: transform var(--d-slow) var(--ease-out); }
html.js .rv-img.in img { transform: none; }
html.js .rv-img.ph:hover img { transform: scale(1.035); }
.stagger > * { transition-delay: calc(var(--i, 0) * 90ms); }
.words .w { display: inline-block; overflow: hidden; vertical-align: bottom; }
html.js .words .w > span { display: inline-block; transform: translateY(110%); transition: transform var(--duree) var(--ease-out); transition-delay: calc(var(--i) * 28ms); }
html.js .words.in .w > span { transform: none; }

/* ---------- Loader ---------- */
.loader { position: fixed; inset: 0; z-index: 100; background: var(--paper); color: var(--ink); display: grid; place-items: center; transition: opacity var(--d-mid) var(--ease), visibility 0s var(--d-mid); }
.loader.is-done { opacity: 0; visibility: hidden; }
.loader svg { width: 120px; height: 88px; }
.loader path, .loader circle { stroke-dasharray: 160; stroke-dashoffset: 160; animation: draw 1.4s var(--ease) forwards; }
.loader circle { animation-delay: .5s; }
.loader b { display: block; margin-top: 18px; font: 400 var(--t0) / 1 var(--serif); letter-spacing: .34em; text-transform: uppercase; text-align: center; opacity: 0; animation: fade-in .8s var(--ease) .6s forwards; }
@keyframes draw { to { stroke-dashoffset: 0; } }

/* ---------- Responsive ---------- */
@media (max-width: 1380px) {
  .nav .season__track button span { display: none; }
  .nav .season__track button { padding: .62em .9em; }
  .nav .season__track button svg { width: 1.2em; height: 1.2em; }
}
@media (max-width: 1240px) {
  .nav { grid-template-columns: auto 1fr auto; }
  .nav__links, .nav__right .season, .nav__lang { display: none; }
  .nav__burger { display: inline-flex; justify-self: end; margin-right: 18px; }
  .nav__right { grid-column: 3; }
}
@media (max-width: 1024px) {
  .doors, .grid--3 { grid-template-columns: 1fr 1fr; }
  .doors .door:last-child:nth-child(odd), .grid--3 .ph:last-child:nth-child(odd) { grid-column: span 2; }
  .doors .door:last-child:nth-child(odd) { aspect-ratio: 3 / 2; }
  .facts, .acts { grid-template-columns: 1fr 1fr; }
  .footer__grid { grid-template-columns: 1fr 1fr; }
  .intro__grid, .contact__grid, .rates__grid, .wellness__head, .season-block__head, .distances__grid, .rooms-top__grid, .block { grid-template-columns: 1fr; }
  .book { position: static; }
  .space__card { grid-template-columns: 1fr; }
  .space__card p { justify-self: start; text-align: left; }
}
@media (max-width: 767px) {
  :root { --nav-h: 66px; }
  .nav__name b { font-size: var(--t0); }
  .nav__name small { display: none; }
  .nav__cta { display: none; }
  .nav__burger { margin-right: 0; }
  .hero { min-height: 560px; }
  .hero h1 { font-size: clamp(var(--t4), 12vw, var(--t6)); }
  .season--hero .season__track { width: 100%; }
  .hero__scroll { display: none; }
  .doors, .grid--3, .grid--2, .duo, .reviews__grid, .cols-2, .dl, .rooms-index, .footer__grid { grid-template-columns: 1fr; }
  .doors .door:last-child:nth-child(odd), .grid--3 .ph:last-child:nth-child(odd) { grid-column: auto; }
  .door, .doors .door:last-child:nth-child(odd) { aspect-ratio: 4 / 5; }
  .facts, .acts { grid-template-columns: 1fr 1fr; gap: 24px 20px; }
  .room__card { margin: 0 12px 20px; max-width: none; }
  .room__num { display: none; }
  .panel { height: 78svh; }
  .lb__stage { padding: 72px 8px 12px; }
  .lb__arrow { width: 44px; height: 44px; }
  .lb__arrow--prev { left: 6px; } .lb__arrow--next { right: 6px; }
  .lb__foot { flex-direction: column; gap: 4px; padding: 0 16px 18px; }
  .dl dd { white-space: normal; text-align: right; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition-duration: 1ms !important; }
  html.js .rv, html.js .rv-img img, html.js .words .w > span { opacity: 1; transform: none; }
  html.js .rv-img::before { display: none; }
  .hero__content > *, .phero__content > * { opacity: 1; transform: none; }
  .room__card { opacity: 1; transform: none; }
  .review .stars i { opacity: 1; transform: none; }
  .review .stars i.off { opacity: .22; }
}
