/*
Theme Name: Nordik Stay
Theme URI: https://example.com/nordik-stay
Author: Projet Villa Maloha & Chalet Maleo
Description: Thème WordPress photographique pour Villa Maloha et Chalet Maleo.
Version: 1.10.1
Requires at least: 6.4
Tested up to: 6.8
Requires PHP: 8.0
Text Domain: nordik-stay
*/

:root {
  --ns-forest: #173f3a;
  --ns-forest-deep: #0d2926;
  --ns-moss: #4f6b4f;
  --ns-lake: #2e6474;
  --ns-copper: #c86f3d;
  --ns-sand: #f1ece2;
  --ns-cream: #fbf9f5;
  --ns-white: #fff;
  --ns-text: #19312f;
  --ns-muted: #667572;
  --ns-border: rgba(23,63,58,.14);
  --ns-radius: .85rem;
  --ns-shadow: 0 20px 60px rgba(13,41,38,.13);
  --ns-shadow-soft: 0 10px 30px rgba(13,41,38,.08);
  --ns-content: 1240px;
  --ns-accent: var(--ns-copper);
  --ns-theme-dark: var(--ns-forest);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  overflow-x: hidden;
  background: var(--ns-cream);
  color: var(--ns-text);
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  line-height: 1.65;
  text-rendering: optimizeLegibility;
}
a { color: inherit; }
img { max-width: 100%; height: auto; display: block; }
.ns-container { width: min(calc(100% - 2.5rem), var(--ns-content)); margin-inline: auto; }
.ns-section { padding: clamp(4.5rem, 8vw, 8rem) 0; }
.ns-section--sand { background: var(--ns-sand); }
.ns-section-title { margin: 0 0 1.2rem; max-width: 900px; color: var(--ns-theme-dark); font-family: Georgia, "Times New Roman", serif; font-size: clamp(2.25rem, 4.4vw, 4rem); font-weight: 500; line-height: 1.04; letter-spacing: -.025em; }
.ns-kicker { margin: 0 0 .7rem; color: var(--ns-accent); font-size: .75rem; font-weight: 850; letter-spacing: .18em; line-height: 1.4; text-transform: uppercase; }
.ns-lead { max-width: 760px; color: var(--ns-muted); font-size: clamp(1.08rem, 2vw, 1.35rem); }
.ns-section-heading { display: grid; grid-template-columns: 1.25fr .75fr; gap: 4rem; align-items: end; margin-bottom: 3rem; }
.ns-section-heading .ns-lead { margin: 0 0 .35rem; }
.ns-icon { width: 1.45rem; height: 1.45rem; display: block; }

/* En-tête */
.site-header { position: sticky; top: 0; z-index: 100; border-bottom: 1px solid rgba(23,63,58,.1); background: rgba(251,249,245,.94); box-shadow: 0 5px 20px rgba(13,41,38,.04); backdrop-filter: blur(16px); }
.site-header__inner { min-height: 78px; display: flex; align-items: center; gap: 2rem; }
.site-brand { display: flex; align-items: center; white-space: nowrap; }
.site-brand__names { display: flex; align-items: baseline; gap: .4rem; }
.site-brand__link { color: var(--ns-forest); font-family: Georgia, "Times New Roman", serif; font-size: 1.13rem; font-weight: 700; text-decoration: none; }
.site-brand__link:hover, .site-brand__link:focus-visible { color: var(--ns-copper); }
.site-brand__sep { color: var(--ns-copper); font-family: Georgia, "Times New Roman", serif; font-size: .88rem; font-style: italic; }
.site-nav { margin-left: auto; display: flex; align-items: center; gap: 1.15rem; }
.site-nav a { position: relative; text-decoration: none; font-size: .89rem; font-weight: 750; }
.site-nav > a:not(.ns-button)::after { content: ""; position: absolute; right: 0; bottom: -.42rem; left: 0; height: 2px; transform: scaleX(0); background: var(--ns-copper); transition: transform .2s ease; }
.site-nav > a:not(.ns-button):hover::after, .site-nav > a:not(.ns-button):focus-visible::after { transform: scaleX(1); }
.ns-language-switcher { font-size: .78rem; font-weight: 800; line-height: 1; }
.ns-language-switcher .trp-language-switcher { width: auto !important; height: auto !important; }
.ns-language-switcher .trp-language-switcher > div { padding: .2rem !important; border-color: var(--ns-border) !important; border-radius: 999px !important; background: #fff !important; }
.ns-language-switcher .trp-language-switcher a { display: flex !important; align-items: center; min-height: 34px; padding: .35rem .55rem !important; border-radius: 999px; text-decoration: none; }
.ns-language-switcher .trp-language-switcher img { width: 18px !important; height: auto !important; margin-right: .3rem !important; }
.ns-header-booking { position: relative; flex: 0 0 auto; }
.ns-header-booking > summary { min-height: 44px; gap: .45rem; cursor: pointer; list-style: none; white-space: nowrap; }
.ns-header-booking > summary::-webkit-details-marker { display: none; }
.ns-header-booking > summary span { font-size: .72rem; transition: transform .2s ease; }
.ns-header-booking[open] > summary span { transform: rotate(180deg); }
.ns-header-booking__panel { position: absolute; top: calc(100% + .8rem); right: 0; width: min(360px,calc(100vw - 2rem)); padding: 1.15rem; border: 1px solid var(--ns-border); border-radius: var(--ns-radius); background: #fff; box-shadow: var(--ns-shadow); color: var(--ns-text); }
.ns-header-booking__panel::before { content: ""; position: absolute; top: -.4rem; right: 1.5rem; width: .75rem; height: .75rem; transform: rotate(45deg); border-top: 1px solid var(--ns-border); border-left: 1px solid var(--ns-border); background: #fff; }
.ns-header-booking__title { margin: 0 0 .8rem; color: var(--ns-forest); font-family: Georgia,"Times New Roman",serif; font-size: 1.35rem; font-weight: 700; }
.ns-header-booking__property { padding: .9rem 0; border-top: 1px solid var(--ns-border); }
.ns-header-booking__property strong, .ns-header-booking__property > span { display: block; }
.ns-header-booking__property strong { color: var(--ns-forest); font-size: .98rem; }
.ns-header-booking__property > span { margin-top: .05rem; color: var(--ns-muted); font-size: .78rem; }
.ns-header-booking__links { display: grid; grid-template-columns: 1fr 1fr; gap: .55rem; margin-top: .7rem; }
.ns-header-booking__links a { display: flex; align-items: center; justify-content: center; gap: .35rem; min-height: 42px; border: 1px solid var(--ns-border); border-radius: .55rem; color: var(--ns-forest); font-size: .86rem; font-weight: 800; text-decoration: none; transition: background .2s ease,color .2s ease,border-color .2s ease; }
.ns-header-booking__links a:first-child { border-color: var(--ns-copper); background: var(--ns-copper); color: #fff; }
.ns-header-booking__links a:hover, .ns-header-booking__links a:focus-visible { border-color: var(--ns-forest); background: var(--ns-forest); color: #fff; }
.ns-header-booking__discover { display: flex; justify-content: space-between; padding-top: .8rem; border-top: 1px solid var(--ns-border); color: var(--ns-forest); font-size: .82rem; font-weight: 800; text-decoration: none; }
.ns-header-booking__discover:hover, .ns-header-booking__discover:focus-visible { color: var(--ns-copper); }
.nav-toggle { display: none; margin-left: auto; align-items: center; gap: .65rem; border: 0; background: transparent; color: var(--ns-forest); font-weight: 800; }
.nav-toggle i, .nav-toggle i::before, .nav-toggle i::after { width: 1.35rem; height: 2px; display: block; background: currentColor; transition: transform .2s ease; }
.nav-toggle i { position: relative; }
.nav-toggle i::before, .nav-toggle i::after { content: ""; position: absolute; left: 0; }
.nav-toggle i::before { top: -.42rem; }
.nav-toggle i::after { top: .42rem; }
.nav-toggle.is-open i { background: transparent; }
.nav-toggle.is-open i::before { top: 0; transform: rotate(45deg); }
.nav-toggle.is-open i::after { top: 0; transform: rotate(-45deg); }

/* Boutons */
.ns-button { min-height: 49px; display: inline-flex; align-items: center; justify-content: center; padding: .8rem 1.35rem; border: 1px solid transparent; border-radius: 999px; text-decoration: none; font-size: .92rem; font-weight: 820; transition: transform .2s ease, box-shadow .2s ease, background .2s ease, color .2s ease; }
.ns-button:hover { transform: translateY(-2px); box-shadow: 0 10px 24px rgba(13,41,38,.15); }
.ns-button--primary { background: var(--ns-accent); color: #fff; }
.ns-button--secondary { background: var(--ns-theme-dark); color: #fff; }
.ns-button--outline { border-color: currentColor; background: transparent; }
.ns-button--glass { border-color: rgba(255,255,255,.55); background: rgba(255,255,255,.12); color: #fff; backdrop-filter: blur(12px); }
.ns-button--light { background: #fff; color: var(--ns-theme-dark); }
.ns-text-link { color: var(--ns-theme-dark); font-weight: 850; text-decoration-thickness: 1px; text-underline-offset: .35rem; }
.ns-actions { display: flex; flex-wrap: wrap; gap: .8rem; margin-top: 1.65rem; }
.ns-booking-button { min-height: 52px; display:inline-flex; align-items:center; justify-content:center; gap:.65rem; padding:.65rem 1.15rem; border:2px solid transparent; border-radius:.7rem; background:#fff; font-size:.78rem; font-weight:850; text-decoration:none; box-shadow:0 6px 18px rgba(5,25,23,.16); transition:transform .2s ease,box-shadow .2s ease,background .2s ease; }
.ns-booking-button:hover,.ns-booking-button:focus-visible { transform:translateY(-2px); box-shadow:0 10px 25px rgba(5,25,23,.25); }
.ns-booking-button--airbnb { border-color:#ff385c;color:#ff385c; }
.ns-booking-button--airbnb:hover,.ns-booking-button--airbnb:focus-visible { background:#fff5f6;color:#e51d4f; }
.ns-booking-button--vrbo { border-color:#175cff;color:#175cff; }
.ns-booking-button--vrbo:hover,.ns-booking-button--vrbo:focus-visible { background:#f1f5ff;color:#0c45cc; }
.ns-booking-logo { width:auto;height:34px;display:block;object-fit:contain; }
.ns-booking-logo--airbnb { width:140px; }
.ns-booking-logo--vrbo { width:124px; }
.ns-booking-button--compact { width:100%;min-height:42px;padding:.4rem .65rem;border-width:1px;border-radius:.55rem;box-shadow:none; }
.ns-booking-button--compact .ns-booking-logo { height:25px;max-width:112px; }
.ns-header-booking__links .ns-booking-button--airbnb { border-color:#ff385c;background:#fff;color:#ff385c; }
.ns-header-booking__links .ns-booking-button--vrbo { border-color:#175cff;background:#fff;color:#175cff; }
.ns-header-booking__links .ns-booking-button--airbnb:hover,.ns-header-booking__links .ns-booking-button--airbnb:focus-visible { background:#fff5f6;color:#e51d4f; }
.ns-header-booking__links .ns-booking-button--vrbo:hover,.ns-header-booking__links .ns-booking-button--vrbo:focus-visible { background:#f1f5ff;color:#0c45cc; }

/* Accueil photographique */
.ns-home-hero { position: relative; min-height: min(850px, calc(100vh - 78px)); display: grid; place-items: center; isolation: isolate; overflow: hidden; background: var(--ns-forest-deep); color: #fff; }
.ns-home-hero::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, rgba(7,28,25,.66), rgba(7,28,25,.32) 50%, rgba(7,28,25,.66)); }
.ns-home-hero__panels { position: absolute; inset: 0; z-index: -2; display: grid; grid-template-columns: 1fr 1fr; }
.ns-home-hero__panel { background-position: center; background-size: cover; filter: saturate(.88); transform: scale(1.015); transition: transform 1.2s ease, filter 1.2s ease; }
.ns-home-hero__panel--maloha { background-color: #315548; background-image: linear-gradient(135deg,#315548,#8b7658); }
.ns-home-hero__panel--maleo { background-color: #38687a; background-image: linear-gradient(135deg,#38687a,#739a9d); }
.ns-home-hero:hover .ns-home-hero__panel { transform: scale(1.03); filter: saturate(1); }
.ns-home-hero__intro { width: min(calc(100% - 2.5rem), 980px); padding: 5rem 2rem; text-align: center; }
.ns-home-hero__intro .ns-kicker { color: #f3c6a8; }
.ns-home-hero h1 { max-width: 920px; margin: 0 auto 1.25rem; font-family: Georgia, "Times New Roman", serif; font-size: clamp(3.25rem, 7.7vw, 7rem); font-weight: 500; line-height: .95; letter-spacing: -.045em; text-shadow: 0 8px 40px rgba(0,0,0,.25); }
.ns-home-hero p:not(.ns-kicker) { max-width: 720px; margin: 0 auto 2rem; color: rgba(255,255,255,.88); font-size: clamp(1.08rem, 2vw, 1.35rem); }
.ns-scroll-cue { position: absolute; bottom: 1.5rem; left: 50%; width: 2.7rem; height: 2.7rem; display: grid; place-items: center; transform: translateX(-50%); border: 1px solid rgba(255,255,255,.55); border-radius: 50%; color: #fff; text-decoration: none; }
.ns-home-choose { background: var(--ns-cream); }
.ns-property-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1.5rem; }
.ns-property-card { overflow: hidden; border: 1px solid var(--ns-border); border-radius: var(--ns-radius); background: #fff; box-shadow: var(--ns-shadow-soft); }
.ns-property-card__media { position: relative; min-height: 430px; display: block; overflow: hidden; background-color: var(--ns-theme-dark); background-position: center; background-size: cover; }
.ns-property-card__media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 40%, rgba(6,26,24,.7)); transition: background .3s ease; }
.ns-property-card__media:hover::after { background: linear-gradient(180deg, rgba(255,255,255,.05), rgba(6,26,24,.55)); }
.ns-property-card--maloha .ns-property-card__media { background-color: #47634d; background-image: linear-gradient(135deg,#47634d,#b19370); }
.ns-property-card--maleo .ns-property-card__media { background-color: #356a7c; background-image: linear-gradient(135deg,#356a7c,#88a5a6); }
.ns-property-card__location { position: absolute; bottom: 1.3rem; left: 1.3rem; z-index: 1; color: #fff; font-weight: 800; }
.ns-property-card__arrow { position: absolute; right: 1.2rem; bottom: 1.15rem; z-index: 1; width: 2.7rem; height: 2.7rem; display: grid; place-items: center; border: 1px solid rgba(255,255,255,.6); border-radius: 50%; color: #fff; font-size: 1.3rem; }
.ns-property-card__body { padding: clamp(1.5rem,3vw,2.35rem); }
.ns-property-card h3 { margin: 0 0 .7rem; color: var(--ns-theme-dark); font-family: Georgia, "Times New Roman", serif; font-size: clamp(2rem,3vw,2.9rem); font-weight: 500; line-height: 1; }
.ns-property-card__body > div:first-child > p:not(.ns-kicker) { color: var(--ns-muted); }
.ns-home-locations { background: var(--ns-sand); }
.ns-location-grid { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem; }
.ns-location-card { overflow:hidden;border:1px solid var(--ns-border);border-radius:var(--ns-radius);background:#fff;box-shadow:var(--ns-shadow-soft); }
.ns-location-card__map { height:350px;background:#dfe7e3; }
.ns-location-card__map iframe { width:100%;height:100%;display:block;border:0; }
.ns-location-card__body { display:flex;align-items:center;justify-content:space-between;gap:1.5rem;padding:1.5rem; }
.ns-location-card__body h3 { margin:0;color:var(--ns-forest);font-family:Georgia,"Times New Roman",serif;font-size:clamp(1.4rem,2.2vw,2rem);font-weight:500;line-height:1.12; }
.ns-location-card--maleo .ns-kicker { color:var(--ns-lake); }
.ns-location-card__actions { display:flex;flex-direction:column;align-items:flex-end;gap:.75rem;flex:0 0 auto; }
.ns-location-card__actions .ns-button { min-height:43px;padding:.65rem 1rem;font-size:.84rem; }
.ns-location-card__actions .ns-text-link { font-size:.82rem; }
.ns-location-note { max-width:820px;margin:1.25rem auto 0;color:var(--ns-muted);font-size:.86rem;text-align:center; }
.ns-home-promise { padding: clamp(5rem,10vw,9rem) 0; background: var(--ns-forest-deep); color: #fff; }
.ns-home-promise__inner { text-align: center; }
.ns-home-promise h2 { margin: .5rem auto 2.5rem; font-family: Georgia,"Times New Roman",serif; font-size: clamp(2.7rem,6vw,5.5rem); font-weight: 500; line-height: 1; }
.ns-promise-list { display: flex; justify-content: center; flex-wrap: wrap; gap: 1rem 2.5rem; color: rgba(255,255,255,.82); }
.ns-promise-list span { display: inline-flex; align-items: center; gap: .6rem; }

/* Pages des chalets */
.ns-theme--maloha { --ns-theme-dark: #244936; --ns-accent: #bd683a; }
.ns-theme--maleo { --ns-theme-dark: #245a6a; --ns-accent: #d18845; }
.ns-chalet-hero { position: relative; min-height: min(760px, calc(100vh - 78px)); display: flex; align-items: flex-end; padding: clamp(5rem,10vw,8rem) 0; isolation: isolate; overflow: hidden; background-color: var(--ns-theme-dark); background-position: center; background-size: cover; color: #fff; }
.ns-chalet-hero::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(5,24,22,.1), rgba(5,24,22,.78)); }
.ns-chalet-hero__box { max-width: 820px; padding: 0; background: transparent; }
.ns-chalet-hero .ns-kicker { color: #fff !important; opacity: .86; }
.ns-chalet-hero h1 { margin: 0 0 1rem; font-family: Georgia,"Times New Roman",serif; font-size: clamp(3.5rem,8vw,7.4rem); font-weight: 500; line-height: .92; letter-spacing: -.045em; text-shadow: 0 8px 30px rgba(0,0,0,.25); }
.ns-chalet-hero__name,.ns-chalet-hero__seo { display:block; }
.ns-chalet-hero__seo { margin-top:.65rem;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:clamp(1.05rem,2vw,1.4rem);font-weight:750;line-height:1.2;letter-spacing:.01em; }
.ns-chalet-hero p:not(.ns-kicker) { max-width: 680px; margin: 0; font-size: clamp(1.12rem,2vw,1.45rem); }
.ns-chalet-hero .ns-citq { width: fit-content; margin: -.15rem 0 1rem !important; padding: .34rem .7rem; border: 1px solid rgba(255,255,255,.62); border-radius: 999px; background: rgba(9,34,31,.48); font-size: .86rem !important; font-weight: 850; letter-spacing: .06em; backdrop-filter: blur(8px); }
.ns-social-links { display: flex; flex-wrap: wrap; gap: .55rem; }
.ns-social-links a { display: inline-flex; align-items: center; gap: .45rem; min-height: 40px; padding: .45rem .75rem; border: 1px solid var(--ns-border); border-radius: 999px; background:#fff; color: var(--ns-theme-dark); font-size: .78rem; font-weight: 820; text-decoration: none; transition: transform .2s ease,box-shadow .2s ease,color .2s ease; }
.ns-social-links a:hover,.ns-social-links a:focus-visible { transform: translateY(-1px); box-shadow:0 7px 18px rgba(5,25,23,.18); }
.ns-social-links svg,.ns-social-logo { width: 1.25rem; height: 1.25rem; flex: 0 0 auto;object-fit:contain; }
.ns-social-logo--facebook,.ns-social-logo--tiktok { border-radius:50%; }
.ns-social-link--facebook { color:#1877f2!important; }
.ns-social-link--instagram { color:#c13584!important; }
.ns-social-link--tiktok { color:#111!important; }
.ns-social-link--youtube { color:#ff0000!important; }
.ns-social-links--hero { margin-top: 1rem; }
.ns-social-links--hero a { border-color: rgba(255,255,255,.7); background: rgba(255,255,255,.94); backdrop-filter: blur(8px); }
.ns-badges { display: flex; flex-wrap: wrap; gap: .55rem; margin: 1.25rem 0; }
.ns-badge { display: inline-flex; padding: .42rem .72rem; border-radius: 999px; background: rgba(255,255,255,.9); color: var(--ns-theme-dark); font-size: .79rem; font-weight: 820; }
.ns-chalet-page .ns-section--sand .ns-badge, .ns-chalet-page .ns-panel .ns-badge, .ns-property-card .ns-badge { background: var(--ns-sand); }

.ns-anchor-nav { position: sticky; top: 78px; z-index: 90; border-bottom: 1px solid var(--ns-border); background: rgba(251,249,245,.96); backdrop-filter: blur(14px); }
.ns-anchor-nav__inner { display: flex; gap: .25rem; padding: .65rem 0; overflow-x: auto; scrollbar-width: thin; }
.ns-anchor-nav a { position: relative; flex: 0 0 auto; padding: .55rem .75rem; border-radius: 999px; color: var(--ns-muted); text-decoration: none; font-size: .82rem; font-weight: 800; transition: background .2s ease, color .2s ease; }
.ns-anchor-nav a:hover, .ns-anchor-nav a:focus-visible, .ns-anchor-nav a.is-active { background: var(--ns-theme-dark); color: #fff; }
[id] { scroll-margin-top: 150px; }
.ns-location-card:target { outline: 3px solid var(--ns-accent); outline-offset: 5px; }

.ns-stat-grid { position: relative; z-index: 2; display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 1px; margin: 0; overflow: hidden; border: 1px solid var(--ns-border); border-radius: 0 0 var(--ns-radius) var(--ns-radius); background: var(--ns-border); box-shadow: var(--ns-shadow-soft); }
.ns-stat { padding: 1.35rem 1rem; background: #fff; text-align: center; }
.ns-stat strong { display: block; color: var(--ns-theme-dark); font-family: Georgia,"Times New Roman",serif; font-size: 1.45rem; font-weight: 600; line-height: 1.15; }
.ns-stat span { color: var(--ns-muted); font-size: .84rem; }
.ns-split { display: grid; grid-template-columns: minmax(0,1.05fr) minmax(0,.95fr); gap: clamp(2.5rem,6vw,6rem); align-items: center; }
.ns-panel { padding: clamp(1.6rem,3.5vw,2.8rem); border: 1px solid var(--ns-border); border-radius: var(--ns-radius); background: #fff; box-shadow: var(--ns-shadow-soft); }
.ns-media-placeholder { min-height: 430px; display: grid; place-items: center; padding: 2rem; border-radius: var(--ns-radius); background: linear-gradient(135deg,#d6ded7,#aebeb7); background-position: center; background-size: cover; color: var(--ns-theme-dark); text-align: center; box-shadow: var(--ns-shadow); }
.ns-theme--maleo .ns-media-placeholder { background-color: #8aafb8; background-image: linear-gradient(135deg,#aec5c7,#5f8b99); }
.ns-media-placeholder strong { display: block; font-family: Georgia,"Times New Roman",serif; font-size: clamp(1.7rem,3vw,2.7rem); font-weight: 500; }
.ns-media-placeholder span { display: block; max-width: 440px; margin-top: .5rem; }

/* Galerie */
.ns-gallery-shell { margin-top: 2.3rem; }
.ns-gallery-shell .entry-content { padding: 0; }
.ns-gallery-shell .entry-content > * { width: 100%; max-width: none; }
.ns-gallery-shell .wp-block-gallery, .ns-gallery-shell .blocks-gallery-grid { display: grid !important; grid-template-columns: 1.35fr .65fr .65fr !important; grid-auto-rows: 220px; gap: .7rem !important; margin: 0; padding: 0; }
.ns-gallery-shell .wp-block-image, .ns-gallery-shell .blocks-gallery-item { width: 100% !important; height: 100%; margin: 0 !important; overflow: hidden; border-radius: .65rem; }
.ns-gallery-shell .wp-block-image:first-child, .ns-gallery-shell .blocks-gallery-item:first-child { grid-row: span 2; }
.ns-gallery-shell .wp-block-image img, .ns-gallery-shell .blocks-gallery-item img { width: 100%; height: 100% !important; object-fit: cover; transition: transform .45s ease, filter .45s ease; }
.ns-managed-gallery { display: grid; grid-template-columns: 1.35fr .65fr .65fr; grid-auto-rows: 220px; gap: .7rem; }
.ns-managed-gallery figure { width: 100%; height: 100%; margin: 0; overflow: hidden; border-radius: .65rem; }
.ns-managed-gallery figure:first-child { grid-row: span 2; }
.ns-managed-gallery a { display: block; width: 100%; height: 100%; }
.ns-managed-gallery img { width: 100%; height: 100%; object-fit: cover; transition: transform .45s ease, filter .45s ease; }
.ns-managed-gallery a:hover img { transform: scale(1.035); filter: brightness(.9); }
.ns-gallery-shell a:hover img { transform: scale(1.035); filter: brightness(.9); }
.ns-zoomable-photo { cursor: zoom-in; }
.ns-zoomable-photo:focus-visible { outline: 3px solid var(--ns-accent); outline-offset: -3px; }
.ns-zoomable-background { position: relative; }
.ns-photo-expand { position: absolute; top: .85rem; right: .85rem; z-index: 5; width: 2.65rem; height: 2.65rem; display: grid; place-items: center; padding: 0; border: 1px solid rgba(255,255,255,.76); border-radius: 50%; background: rgba(6,28,25,.62); box-shadow: 0 5px 18px rgba(0,0,0,.18); color: #fff; cursor: zoom-in; backdrop-filter: blur(7px); transition: transform .2s ease, background .2s ease; }
.ns-photo-expand:hover, .ns-photo-expand:focus-visible { transform: scale(1.08); background: rgba(6,28,25,.86); outline: 2px solid #fff; outline-offset: 2px; }
.ns-photo-expand svg { width: 1.15rem; height: 1.15rem; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.ns-lightbox { position: fixed; inset: 0; z-index: 9999; display: none; align-items: center; justify-content: center; padding: 2rem 5.5rem; background: rgba(5,20,18,.94); touch-action: pan-y; }
.ns-lightbox.is-open { display: flex; }
.ns-lightbox img { max-width: min(1200px,92vw); max-height: 88vh; object-fit: contain; }
.ns-lightbox__close { position: fixed; top: 1rem; right: 1rem; width: 3rem; height: 3rem; border: 1px solid rgba(255,255,255,.6); border-radius: 50%; background: rgba(0,0,0,.25); color: #fff; font-size: 2rem; line-height: 1; cursor: pointer; }
.ns-lightbox__nav { position: fixed; top: 50%; width: 3rem; height: 3rem; transform: translateY(-50%); border: 1px solid rgba(255,255,255,.6); border-radius: 50%; background: rgba(0,0,0,.25); color: #fff; font-size: 2rem; line-height: 1; cursor: pointer; }
.ns-lightbox__prev { left: 1rem; }
.ns-lightbox__next { right: 1rem; }
.ns-lightbox__counter { position: fixed; bottom: 1rem; left: 50%; transform: translateX(-50%); color: #fff; font-size: .85rem; font-weight: 750; }
.ns-lightbox-open { overflow: hidden; }

/* Équipements, couchages et activités */
.ns-feature-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1rem; margin-top: 2.5rem; }
.ns-feature { position: relative; min-height: 220px; padding: 1.6rem; overflow: hidden; border: 1px solid var(--ns-border); border-radius: var(--ns-radius); background: #fff; transition: transform .25s ease, box-shadow .25s ease; }
.ns-feature::after { content: ""; position: absolute; right: -2.5rem; bottom: -2.5rem; width: 8rem; height: 8rem; border-radius: 50%; background: color-mix(in srgb, var(--ns-accent) 9%, transparent); }
.ns-feature:hover { transform: translateY(-5px); box-shadow: var(--ns-shadow-soft); }
.ns-feature__icon { width: 3rem; height: 3rem; display: grid; place-items: center; border-radius: 50%; background: color-mix(in srgb, var(--ns-accent) 13%, white); color: var(--ns-accent); }
.ns-feature h3 { margin: 1rem 0 .4rem; color: var(--ns-theme-dark); font-family: Georgia,"Times New Roman",serif; font-size: 1.35rem; }
.ns-feature p { margin: 0; color: var(--ns-muted); }
.ns-sleep-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 1rem; margin-top: 2.4rem; }
.ns-sleep-card { overflow: hidden; padding: 1.4rem; border-top: 3px solid var(--ns-accent); border-radius: .65rem; background: rgba(255,255,255,.72); }
.ns-sleep-card__icon { margin-bottom: 1rem; color: var(--ns-accent); }
.ns-sleep-card span { color: var(--ns-accent); font-size: .72rem; font-weight: 850; letter-spacing: .14em; text-transform: uppercase; }
.ns-sleep-card h3 { margin: .5rem 0 .35rem; color: var(--ns-theme-dark); font-family: Georgia,"Times New Roman",serif; font-size: 1.28rem; }
.ns-sleep-card p, .ns-note { color: var(--ns-muted); }
.ns-note { margin: 1.3rem 0 0; }
.ns-spa-highlight, .ns-nautical-photo { position: relative; min-height: 430px; display: grid; place-items: end start; overflow: hidden; padding: 2rem; border-radius: var(--ns-radius); background: linear-gradient(145deg,var(--ns-theme-dark),var(--ns-forest-deep)); background-position: center; background-size: cover; color: #fff; box-shadow: var(--ns-shadow); isolation: isolate; }
.ns-sleep-card__media { height: 170px; margin: -1.25rem -1.25rem 1.1rem; background: linear-gradient(135deg,#d9d2c4,#a8b7ac); background-position: center; background-size: cover; }
.ns-spa-highlight::after, .ns-nautical-photo::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg,transparent 20%,rgba(5,25,23,.82)); }
.ns-photo-highlight__content { max-width: 390px; }
.ns-photo-highlight__content .ns-icon { width: 2.5rem; height: 2.5rem; margin-bottom: .8rem; }
.ns-photo-highlight__content strong { display: block; font-family: Georgia,"Times New Roman",serif; font-size: clamp(1.8rem,3vw,2.7rem); font-weight: 500; }
.ns-photo-highlight__content p { margin-bottom: 0; color: rgba(255,255,255,.84); }
.ns-lake-info { background: var(--ns-sand); }
.ns-lake-info__layout { display: grid; grid-template-columns: minmax(0,1.05fr) minmax(360px,.95fr); overflow: hidden; border: 1px solid var(--ns-border); border-radius: calc(var(--ns-radius) + .25rem); background: #fff; box-shadow: var(--ns-shadow); }
.ns-lake-info__map { min-height: 540px; overflow: hidden; background: #dce6e2; }
.ns-lake-info__map iframe { width: 100%; height: 100%; min-height: 440px; display: block; border: 0; }
.ns-lake-info__map--photos { display: grid; cursor: zoom-in; }
.ns-lake-info__map--photos img { width: 100%; height: 100%; min-height: 0; object-fit: cover; }
.ns-lake-info__map--count-1 img { min-height: 540px; }
.ns-lake-info__map--count-2 { grid-template-columns: repeat(2,minmax(0,1fr)); }
.ns-lake-info__map--count-3 { grid-template-columns: repeat(2,minmax(0,1fr)); grid-template-rows: repeat(2,minmax(0,1fr)); }
.ns-lake-info__map--count-3 img:first-child { grid-row: 1 / span 2; }
.ns-lake-info__website { min-height: 440px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1rem; padding: 2rem; color: var(--ns-theme-dark); text-align: center; text-decoration: none; }
.ns-lake-info__website strong { max-width: 420px; font-family: Georgia,"Times New Roman",serif; font-size: clamp(1.8rem,4vw,3rem); line-height: 1.05; }
.ns-lake-info__website > span:last-child { color: var(--ns-accent); font-weight: 800; }
.ns-lake-info__content { display: flex; flex-direction: column; justify-content: center; gap: 1.5rem; padding: clamp(2rem,4vw,3.5rem); }
.ns-lake-info__intro .ns-section-title { margin-bottom: 1rem; }
.ns-lake-info__intro .ns-lead { max-width: 52ch; margin: 0; font-size: 1.05rem; }
.ns-lake-resources { display: grid; grid-template-columns: 1fr; gap: .7rem; }
.ns-lake-resources a { min-height: 72px; display: grid; grid-template-columns: auto 1fr auto; gap: .85rem; align-items: center; padding: .85rem 1rem; border: 1px solid var(--ns-border); border-radius: .75rem; background: var(--ns-cream); color: var(--ns-theme-dark); text-decoration: none; transition: transform .2s ease, border-color .2s ease, box-shadow .2s ease; }
.ns-lake-resources a:hover, .ns-lake-resources a:focus-visible { transform: translateY(-3px); border-color: var(--ns-accent); box-shadow: var(--ns-shadow); outline: none; }
.ns-lake-resources__icon { width: 2.7rem; height: 2.7rem; display: grid; place-items: center; border-radius: 50%; background: color-mix(in srgb,var(--ns-accent) 13%,white); color: var(--ns-accent); }
.ns-lake-resources__icon .ns-icon { width: 1.35rem; height: 1.35rem; }
.ns-lake-resources strong { align-self: center; font-size: .95rem; line-height: 1.3; }
.ns-lake-resources a > span:last-child { color: var(--ns-accent); font-size: 1.1rem; }
.ns-lake-info__note { margin: 0; padding-top: .2rem; color: var(--ns-muted); font-size: .86rem; }
.ns-activity-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1rem; margin-top: 2.5rem; }
.ns-activity { overflow: hidden; border: 1px solid var(--ns-border); border-radius: var(--ns-radius); background: #fff; box-shadow: var(--ns-shadow-soft); }
.ns-activity__media { min-height: 200px; background-color: var(--ns-theme-dark); background-image: linear-gradient(135deg,var(--ns-theme-dark),color-mix(in srgb,var(--ns-theme-dark) 55%,white)); background-position: center; background-size: cover; transition: transform .45s ease; }
.ns-activity:hover .ns-activity__media { transform: scale(1.025); }
.ns-activity__body { position: relative; padding: 1.4rem; background: #fff; }
.ns-activity__meta { display: flex; flex-wrap: wrap; gap: .45rem; }
.ns-activity h3 { margin: .35rem 0 .45rem; color: var(--ns-theme-dark); font-family: Georgia,"Times New Roman",serif; font-size: 1.4rem; }
.ns-activity p { margin: 0; color: var(--ns-muted); }
.ns-distance, .ns-category { display: inline-flex; padding: .3rem .55rem; border-radius: 999px; font-size: .72rem; font-weight: 850; letter-spacing: .05em; text-transform: uppercase; }
.ns-distance { background: color-mix(in srgb,var(--ns-accent) 12%,white); color: var(--ns-accent); }
.ns-category { background: color-mix(in srgb,var(--ns-theme-dark) 10%,white); color: var(--ns-theme-dark); }
.ns-activity__links { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:.7rem; margin-top:1.15rem; }
.ns-activity__links a { font-size:.8rem;font-weight:850; }
.ns-activity__official { color:var(--ns-theme-dark);text-underline-offset:.2em; }
.ns-activity__location { min-height:42px;display:inline-flex;align-items:center;gap:.45rem;padding:.55rem .8rem;border:1px solid color-mix(in srgb,var(--ns-theme-dark) 38%,white);border-radius:999px;background:color-mix(in srgb,var(--ns-theme-dark) 5%,white);color:var(--ns-theme-dark);text-decoration:none;transition:background .2s ease,color .2s ease,transform .2s ease; }
.ns-activity__location:hover,.ns-activity__location:focus-visible { transform:translateY(-1px);background:var(--ns-theme-dark);color:#fff; }
.ns-activity__location svg { width:1rem;height:1rem;stroke:currentColor;stroke-width:1.8;flex:0 0 auto; }

/* FAQ et réservation */
.ns-faq { display: grid; gap: .75rem; max-width: 920px; margin-top: 2rem; }
.ns-faq details { border-bottom: 1px solid var(--ns-border); background: transparent; }
.ns-faq summary { position: relative; padding: 1.25rem 3rem 1.25rem 0; cursor: pointer; color: var(--ns-theme-dark); font-size: 1.02rem; font-weight: 820; list-style: none; }
.ns-faq summary::-webkit-details-marker { display: none; }
.ns-faq summary::after { content: "+"; position: absolute; top: 1.05rem; right: .25rem; width: 2rem; height: 2rem; display: grid; place-items: center; border: 1px solid var(--ns-border); border-radius: 50%; font-size: 1.25rem; font-weight: 400; transition: transform .2s ease; }
.ns-faq details[open] summary::after { transform: rotate(45deg); }
.ns-faq details p { max-width: 760px; margin: 0; padding: 0 3rem 1.25rem 0; color: var(--ns-muted); }
.ns-reservation { position: relative; overflow: hidden; padding: clamp(2.5rem,7vw,5.5rem); border-radius: var(--ns-radius); background: linear-gradient(135deg,var(--ns-theme-dark),var(--ns-forest-deep)); background-position: center; background-size: cover; color: #fff; isolation: isolate; box-shadow: var(--ns-shadow); }
.ns-reservation::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg,rgba(5,27,24,.94),rgba(5,27,24,.62)); }
.ns-reservation .ns-section-title, .ns-reservation .ns-lead { color: #fff; }
.ns-reservation .ns-lead { opacity: .84; }
.ns-mobile-book { display: none; }

/* Contenu WordPress et pied de page */
.entry-content > * { width: min(calc(100% - 2.5rem),820px); margin-left: auto; margin-right: auto; }
.entry-content > .alignwide { width: min(calc(100% - 2.5rem),var(--ns-content)); }
.entry-content > .alignfull { width: 100%; max-width: none; }
.entry-content { padding: clamp(3rem,6vw,6rem) 0; }
.site-footer { padding: 4rem 0 1.5rem; background: var(--ns-forest-deep); color: #fff; }
.site-footer__grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(190px,1fr)); gap: 2.5rem; }
.site-footer h2, .site-footer h3 { margin-top: 0; font-family: Georgia,"Times New Roman",serif; font-weight: 500; }
.site-footer a { color: #fff; text-underline-offset: .25rem; }
.site-footer p { color: rgba(255,255,255,.72); }
.site-footer__bottom { margin-top: 3rem; padding-top: 1.25rem; border-top: 1px solid rgba(255,255,255,.18); color: rgba(255,255,255,.62); font-size: .85rem; }
.site-footer__social > strong { display:block;margin:.8rem 0 .45rem;color:rgba(255,255,255,.88);font-size:.82rem; }
.site-footer__social > strong:first-of-type { margin-top:0; }
.ns-social-links--footer a { border-color:rgba(255,255,255,.35);background:#fff; }
.ns-notice { padding: 1rem; border-left: 4px solid var(--ns-accent); background: #fff5ea; }

/* Page Contact */
.ns-contact-hero { padding: clamp(5rem,10vw,8.5rem) 0 clamp(4rem,8vw,7rem); background: linear-gradient(135deg,var(--ns-forest-deep),var(--ns-lake)); color:#fff; }
.ns-contact-hero .ns-kicker { color:#f2b184; }
.ns-contact-hero h1 { max-width:900px;margin:0 0 1.25rem;font-family:Georgia,"Times New Roman",serif;font-size:clamp(3rem,7vw,6.4rem);font-weight:500;line-height:.96;letter-spacing:-.04em; }
.ns-contact-hero .ns-lead { margin:0;color:rgba(255,255,255,.82); }
.ns-contact-content { padding-top:clamp(3rem,7vw,6rem); }
.ns-contact-layout { display:grid;grid-template-columns:minmax(280px,.72fr) minmax(0,1.28fr);gap:clamp(1.5rem,4vw,4rem);align-items:start; }
.ns-contact-card,.ns-contact-form-card { padding:clamp(1.5rem,4vw,2.7rem);border:1px solid var(--ns-border);border-radius:var(--ns-radius);background:#fff;box-shadow:var(--ns-shadow-soft); }
.ns-contact-card { position:sticky;top:110px;background:var(--ns-sand); }
.ns-contact-card h2,.ns-contact-form-card h2 { margin:.2rem 0 .8rem;color:var(--ns-forest);font-family:Georgia,"Times New Roman",serif;font-size:clamp(1.8rem,3vw,2.7rem);font-weight:500;line-height:1.08; }
.ns-contact-actions { display:grid;gap:.75rem;margin:1.7rem 0; }
.ns-contact-action { display:flex;align-items:center;gap:1rem;min-height:76px;padding:1rem;border:1px solid var(--ns-border);border-radius:.7rem;background:#fff;color:var(--ns-forest);text-decoration:none;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease; }
.ns-contact-action:hover,.ns-contact-action:focus-visible { transform:translateY(-2px);border-color:var(--ns-copper);box-shadow:var(--ns-shadow-soft); }
.ns-contact-action .ns-icon { width:1.7rem;height:1.7rem;flex:0 0 auto;color:var(--ns-copper); }
.ns-contact-action span,.ns-contact-action strong,.ns-contact-action small { display:block;min-width:0; }
.ns-contact-action small { margin-top:.15rem;color:var(--ns-muted);overflow-wrap:anywhere; }
.ns-contact-note { margin:1.2rem 0 0;color:var(--ns-muted);font-size:.9rem; }
.ns-contact-form-card>p:not(.ns-kicker) { color:var(--ns-muted); }
.ns-contact-form { display:grid;gap:1rem;margin-top:1.6rem; }
.ns-form-grid { display:grid;grid-template-columns:1fr 1fr;gap:1rem; }
.ns-contact-form label { display:grid;gap:.4rem;color:var(--ns-forest);font-size:.88rem;font-weight:800; }
.ns-contact-form input,.ns-contact-form select,.ns-contact-form textarea { width:100%;padding:.85rem .9rem;border:1px solid rgba(23,63,58,.25);border-radius:.55rem;background:#fff;color:var(--ns-text);font:inherit;font-weight:400; }
.ns-contact-form textarea { resize:vertical; }
.ns-contact-form input:focus,.ns-contact-form select:focus,.ns-contact-form textarea:focus { border-color:var(--ns-copper);outline:3px solid rgba(200,111,61,.18); }
.ns-contact-form .ns-button { justify-self:start;border:0;cursor:pointer; }
.ns-form-required { margin:0;color:var(--ns-muted);font-size:.78rem; }
.ns-form-message { margin:1.25rem 0;padding:1rem;border-radius:.55rem;font-weight:700; }
.ns-form-message--success { border:1px solid #89b49e;background:#edf8f1;color:#24573e; }
.ns-form-message--error { border:1px solid #d89a8c;background:#fff1ed;color:#7a3026; }
.ns-honeypot { position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;overflow:hidden!important; }

/* Page Blog */
.ns-blog-hero { padding:clamp(5rem,10vw,8.5rem) 0 clamp(4rem,8vw,7rem);background:linear-gradient(135deg,var(--ns-forest-deep),var(--ns-lake));color:#fff; }
.ns-blog-hero .ns-kicker { color:#f2b184; }
.ns-blog-hero h1 { max-width:900px;margin:0 0 1.25rem;font-family:Georgia,"Times New Roman",serif;font-size:clamp(3rem,7vw,6.4rem);font-weight:500;line-height:.96;letter-spacing:-.04em; }
.ns-blog-hero .ns-lead { margin:0;color:rgba(255,255,255,.82); }
.ns-blog-list { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.35rem; }
.ns-blog-card { overflow:hidden;border:1px solid var(--ns-border);border-radius:var(--ns-radius);background:#fff;box-shadow:var(--ns-shadow-soft); }
.ns-blog-card__image { display:block;aspect-ratio:16/10;background:linear-gradient(135deg,var(--ns-sand),#dfe9e5); }
.ns-blog-card__image img { width:100%;height:100%;object-fit:cover; }
.ns-blog-card__body { padding:1.35rem; }
.ns-blog-card__meta { margin:0 0 .55rem;color:var(--ns-copper);font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em; }
.ns-blog-card h2 { margin:0 0 .65rem;color:var(--ns-forest);font-family:Georgia,"Times New Roman",serif;font-size:1.65rem;font-weight:500;line-height:1.12; }
.ns-blog-card h2 a { color:inherit;text-decoration:none; }
.ns-blog-card h2 a:hover,.ns-blog-card h2 a:focus-visible { color:var(--ns-copper); }
.ns-blog-card p { color:var(--ns-muted); }
.ns-blog-empty { max-width:780px;margin:0 auto;padding:clamp(2.5rem,7vw,5rem);border:1px solid var(--ns-border);border-radius:var(--ns-radius);background:var(--ns-sand);text-align:center;box-shadow:var(--ns-shadow-soft); }
.ns-blog-empty__badge { display:inline-flex;margin-bottom:1.25rem;padding:.55rem 1rem;border-radius:999px;background:var(--ns-forest);color:#fff;font-size:.78rem;font-weight:850;text-transform:uppercase;letter-spacing:.12em; }
.ns-blog-empty h2 { margin:.1rem auto 1rem;color:var(--ns-forest);font-family:Georgia,"Times New Roman",serif;font-size:clamp(2.2rem,5vw,4.2rem);font-weight:500;line-height:1; }
.ns-blog-empty p { max-width:590px;margin:0 auto 1.6rem;color:var(--ns-muted);font-size:1.05rem; }
.screen-reader-text { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
:focus-visible { outline: 3px solid var(--ns-accent); outline-offset: 3px; }
.ns-reveal { opacity: 0; transform: translateY(22px); transition: opacity .6s ease, transform .6s ease; }
.ns-reveal.is-visible { opacity: 1; transform: none; }

@media (max-width: 1050px) {
  .site-nav { gap: .75rem; }
  .site-nav a { font-size: .83rem; }
  .ns-feature-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .ns-blog-list { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .ns-sleep-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
}

@media (max-width: 860px) {
  .site-header__inner { min-height: 72px; }
  .site-brand__link { font-size: 1rem; }
  .nav-toggle { display: inline-flex; margin-left: 0; order: 3; }
  .site-nav { position: absolute; top: 72px; right: 1rem; left: 1rem; display: none; flex-direction: column; align-items: stretch; gap: 0; padding: .8rem; border: 1px solid var(--ns-border); border-radius: var(--ns-radius); background: #fff; box-shadow: var(--ns-shadow); }
  .site-nav.is-open { display: flex; }
  .site-nav a { padding: .8rem .65rem; font-size: .95rem; }
  .site-nav > a:not(.ns-button)::after { display: none; }
  .ns-header-booking { margin-left: auto; order: 2; }
  .ns-header-booking__panel { position: fixed; top: 76px; right: .75rem; }
  .ns-anchor-nav { top: 72px; }
  [id] { scroll-margin-top: 138px; }
  .ns-section-heading, .ns-split { grid-template-columns: 1fr; gap: 2rem; }
  .ns-section-heading { margin-bottom: 2rem; }
  .ns-property-card__media { min-height: 340px; }
  .ns-location-card__body { align-items:flex-start;flex-direction:column; }
  .ns-location-card__actions { width:100%;align-items:flex-start; }
  .ns-chalet-hero { min-height: 690px; }
  .ns-stat-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .ns-activity-grid { grid-template-columns: 1fr; }
  .ns-lake-info__layout { grid-template-columns: 1fr; }
  .ns-lake-info__map, .ns-lake-info__map iframe, .ns-lake-info__map--count-1 img { min-height: 380px; }
  .ns-activity { display: grid; grid-template-columns: minmax(180px,.7fr) 1fr; }
  .ns-activity__media { min-height: 100%; }
  .site-footer__grid { grid-template-columns: 1fr 1fr; }
  .site-footer__grid section:first-child { grid-column: 1/-1; }
  .ns-contact-layout { grid-template-columns:1fr; }
  .ns-contact-card { position:static; }
}

@media (max-width: 680px) {
  .ns-blog-list { grid-template-columns:1fr; }
  .ns-container { width: min(calc(100% - 1.5rem),var(--ns-content)); }
  .site-brand__names { display: block; line-height: 1.05; }
  .site-brand__sep { display: none; }
  .site-brand__link { display: block; font-size: .86rem; }
  .site-footer__language .ns-language-switcher .trp-language-switcher a { min-height: 32px; padding: .3rem .45rem !important; font-size: .72rem; }
  .site-header__inner { gap: .55rem; }
  .ns-header-booking > summary { min-height: 40px; padding: .55rem .8rem; font-size: .8rem; }
  .ns-header-booking__panel { right: .5rem; width: min(350px,calc(100vw - 1rem)); }
  .ns-home-hero { min-height: calc(100svh - 72px); }
  .ns-home-hero::after { background: linear-gradient(180deg,rgba(7,28,25,.56),rgba(7,28,25,.38) 50%,rgba(7,28,25,.58)); }
  .ns-home-hero__panels { grid-template-columns: 1fr; grid-template-rows: 1fr 1fr; }
  .ns-home-hero__panel { min-height: 0; transform: none; }
  .ns-home-hero__panel--maloha { background-position: center 46%; }
  .ns-home-hero__panel--maleo { display: block; background-position: center 54%; }
  .ns-home-hero:hover .ns-home-hero__panel { transform: none; }
  .ns-home-hero__intro { padding-inline: 0; }
  .ns-home-hero h1 { font-size: clamp(3.15rem,15vw,5rem); }
  .ns-property-grid { grid-template-columns: 1fr; }
  .ns-location-grid { grid-template-columns:1fr; }
  .ns-location-card__map { height:300px; }
  .ns-location-card__actions .ns-button { width:100%; }
  .ns-property-card__media { min-height: 300px; }
  .ns-chalet-hero { min-height: 620px; padding-bottom: 3.5rem; }
  .ns-chalet-hero h1 { font-size: clamp(3.6rem,17vw,5.5rem); }
  .ns-chalet-hero .ns-actions .ns-button { width: 100%; }
  .ns-anchor-nav__inner { width: 100%; padding-inline: .75rem; }
  .ns-stat { padding: 1.05rem .55rem; }
  .ns-stat strong { font-size: 1.17rem; }
  .ns-stat span { font-size: .75rem; }
  .ns-feature-grid, .ns-sleep-grid { grid-template-columns: 1fr; }
  .ns-lake-info__content { padding: 1.5rem; }
  .ns-lake-resources a { min-height: 68px; }
  .ns-lake-info__map, .ns-lake-info__map iframe, .ns-lake-info__map--count-1 img { min-height: 300px; }
  .ns-feature { min-height: 0; }
  .ns-gallery-shell .wp-block-gallery, .ns-gallery-shell .blocks-gallery-grid { grid-template-columns: 1fr 1fr !important; grid-auto-rows: 165px; }
  .ns-gallery-shell .wp-block-image:first-child, .ns-gallery-shell .blocks-gallery-item:first-child { grid-column: 1/-1; grid-row: span 2; height: 100%; min-height: 250px; }
  .ns-managed-gallery { grid-template-columns: 1fr 1fr; grid-auto-rows: 165px; }
  .ns-managed-gallery figure:first-child { grid-column: 1/-1; grid-row: span 2; height: 100%; min-height: 250px; }
  .ns-lightbox { padding: 4.5rem .75rem 5rem; }
  .ns-lightbox img { max-width: 100%; max-height: 78vh; }
  .ns-lightbox__nav { top: auto; bottom: 1rem; transform: none; }
  .ns-lightbox__prev { left: 1rem; }
  .ns-lightbox__next { right: 1rem; }
  .ns-lightbox__counter { bottom: 1.8rem; }
  .ns-photo-expand { top: .65rem; right: .65rem; width: 2.8rem; height: 2.8rem; }
  .ns-media-placeholder, .ns-spa-highlight, .ns-nautical-photo { min-height: 330px; }
  .ns-activity { display: block; }
  .ns-activity__media { min-height: 210px; }
  .ns-activity__location { width:100%;justify-content:center; }
  .ns-reservation { padding: 2rem 1.35rem; }
  .ns-reservation .ns-actions .ns-button { width: 100%; }
  .ns-chalet-page { padding-bottom: 68px; }
  .ns-mobile-book { position: fixed; right: .65rem; bottom: .65rem; left: .65rem; z-index: 120; min-height: 58px; display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .7rem .8rem .7rem 1rem; border: 1px solid rgba(255,255,255,.24); border-radius: .75rem; background: rgba(13,41,38,.95); box-shadow: 0 12px 35px rgba(0,0,0,.25); color: #fff; text-decoration: none; backdrop-filter: blur(14px); }
  .ns-mobile-book span { overflow: hidden; font-size: .73rem; opacity: .76; text-overflow: ellipsis; white-space: nowrap; }
  .ns-mobile-book strong { flex: 0 0 auto; padding: .45rem .8rem; border-radius: 999px; background: var(--ns-accent); font-size: .88rem; }
  .ns-promise-list { display: grid; justify-content: center; text-align: left; }
  .site-footer__grid { grid-template-columns: 1fr; }
  .site-footer__grid section:first-child { grid-column: auto; }
  .ns-form-grid { grid-template-columns:1fr; }
  .ns-contact-form .ns-button { width:100%; }
}

@media (max-width: 420px) {
  .nav-toggle span { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; }
  .nav-toggle { padding: .6rem .3rem; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; }
  .ns-reveal { opacity: 1; transform: none; }
}
