/* Château La Châteline V8.4 — unified finishing layer.
   All palette colors, chosen templates, media and content continue to come from Hub Contract 5.4.
   The rules below fix hierarchy, layout and accessibility; they do not rewrite Hub data. */
:root{--lc-focus:var(--accent,#c6a46b);--lc-safe-bottom:env(safe-area-inset-bottom,0px);--lc-side:clamp(17px,3.6vw,42px)}
html{scroll-padding-top:calc(var(--nav-height,80px) + 18px);-webkit-text-size-adjust:100%}
body{min-width:320px;font-kerning:normal}
body,main,.site-placement,.section,.container,.stay-grid,.stay-card,.hero-copy,.detail-layout{min-width:0}
main{overflow-x:clip;overflow-y:visible}
img,video,iframe{max-width:100%}
img{height:auto}
button,select,input,textarea{accent-color:var(--primary)}
a,button,input,select,textarea{touch-action:manipulation}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid var(--lc-focus);outline-offset:3px}
button[disabled]{cursor:not-allowed;opacity:.65}
.section,.stay-card,.news-card,.review-card,.promo-card{opacity:1;transform:none}
.container{width:min(calc(100% - (var(--lc-side) * 2)),var(--content-width,1220px))}
.section{padding-block:var(--pt,var(--section-space,90px)) var(--pb,var(--section-space,90px))}
.section-heading{max-width:780px;margin-bottom:clamp(25px,3.7vw,49px)}
.section-heading h2{line-height:1.07;text-wrap:balance;overflow-wrap:anywhere}
.section-heading p{line-height:1.7;max-width:67ch}
h1,h2,h3,h4{overflow-wrap:break-word}
h1{line-height:1.02}
h2{font-size:calc(clamp(2rem,4.4vw,4.3rem)*var(--heading-scale,1));line-height:1.08}
h3{line-height:1.17}
p,li{overflow-wrap:break-word}
.prose{font-size:clamp(.98rem,1vw,1.08rem);line-height:1.78}
.prose img,.prose video{border-radius:var(--image-radius,18px)}
.prose table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse}
.prose th,.prose td{padding:9px 14px;border-bottom:1px solid var(--line)}
.eyebrow{font-size:.74rem;letter-spacing:.135em;font-weight:750}
.button,button[type="submit"],.mobile-book{font-weight:750;min-height:48px;letter-spacing:.007em}
.button{text-align:center;white-space:normal;line-height:1.25}
.button-primary:hover{filter:brightness(1.065)}
.button-secondary{background:color-mix(in srgb,var(--card) 60%,transparent)}
/* Header: one consistent state. Content authors still select overlay, glass, solid and sticky via Hub. */
.site-header{max-width:100vw;transition:color .25s ease,background-color .25s ease,box-shadow .25s ease,backdrop-filter .25s ease}
.site-header:not(.is-scrolled):not(.menu-open).header-mode-overlay-transparent{background:transparent!important;box-shadow:none!important;backdrop-filter:none!important}
.site-header:not(.is-scrolled):not(.menu-open).header-mode-overlay-glass{background:color-mix(in srgb,var(--header-bg) calc(var(--header-opacity,.30)*100%),transparent);color:var(--header-text)}
.site-header.is-scrolled,.site-header.menu-open,body.no-hero .site-header{background:color-mix(in srgb,var(--header-scrolled-bg,#fff) 97%,transparent)!important;color:var(--header-scrolled-text,var(--heading))!important;backdrop-filter:blur(var(--header-blur,14px))!important;box-shadow:0 9px 26px rgba(18,43,36,.1)!important}
.site-header.is-scrolled .brand-copy strong,.site-header.menu-open .brand-copy strong,body.no-hero .site-header .brand-copy strong{color:var(--header-scrolled-text,var(--heading))!important}
.site-header.is-scrolled .brand-copy small,.site-header.menu-open .brand-copy small,body.no-hero .site-header .brand-copy small{color:var(--header-scrolled-text,var(--muted))!important;opacity:.82}
.site-header .header-inner{gap:clamp(12px,2vw,29px)}
.brand{min-width:0;flex-shrink:1}
.brand img{object-fit:contain;max-height:calc(var(--nav-height,80px) - 14px)}
.brand-copy strong{line-height:1.12}
.desktop-nav>a,.nav-more>summary{white-space:nowrap}
.desktop-nav>a.is-active{color:var(--accent)}
/* Full-width hero text still has comfortable readable lines and image legibility. */
.hero{height:auto;min-height:clamp(530px,70svh,900px);isolation:isolate}
.hero-home{min-height:clamp(620px,82svh,920px);height:auto}
.hero-detail{min-height:clamp(490px,60svh,750px);height:auto}
.hero-media,.hero-gradient,.hero-overlay{inset:0}
.hero-media{object-position:center}
.hero-inner{min-height:inherit;padding-top:calc(var(--nav-height,80px) + clamp(65px,10vh,150px));padding-bottom:clamp(55px,9vh,110px);align-items:flex-end}
.hero-copy{max-width:min(850px,96%)}
.hero-copy h1{font-size:clamp(2.8rem,5.9vw,6.2rem);line-height:1.035;max-width:14ch;overflow-wrap:normal;hyphens:auto;letter-spacing:-.039em}
.hero-copy p{max-width:61ch;line-height:1.65;text-wrap:pretty}
.hero-actions{gap:12px}
.hero-actions .button{min-height:52px}
/* Editorial cards and media without changing Hub-chosen palette and layout controls. */
.stay-grid,.news-grid,.reviews-grid,.promotions-grid{align-items:stretch;gap:var(--grid-gap,24px)}
.stay-card,.news-card,.review-card,.promo-card{display:flex;flex-direction:column;min-width:0;border:1px solid color-mix(in srgb,var(--line) 85%,transparent);background:var(--card);box-shadow:0 14px 44px rgba(12,40,32,.075);transition:box-shadow .22s ease,transform .22s ease}
.stay-card:hover,.news-card:hover,.promo-card:hover{transform:translateY(-3px);box-shadow:0 22px 52px rgba(12,40,32,.12)}
.stay-card .stay-body{display:flex;flex:1;flex-direction:column;gap:7px}
.stay-card .stay-body h3{margin-bottom:.1em;line-height:1.17;font-size:clamp(1.42rem,1.9vw,var(--stay-title-size,30px))}
.stay-card .stay-body p{line-height:1.64}
.stay-card .stay-meta{margin-top:auto}
.stay-card .stay-image-wrap{overflow:hidden}
.stay-card .stay-image{width:100%;height:100%;object-fit:cover}
.stay-card a,.news-card a{transition:color .2s ease,opacity .2s ease}
.stay-card .button,.stay-card .stay-actions a{min-height:44px}
.image-error{visibility:hidden}
.feature-image,.wide-image{width:100%;object-fit:cover}
.media-split,.detail-media-split{gap:clamp(26px,5vw,75px);align-items:center}
.media-split>*,.detail-media-split>*{min-width:0}
/* Consistent section spacing in builder-managed content: placements own their padding. */
.site-placement{scroll-margin-top:calc(var(--nav-height,80px) + 15px)}
.site-placement .section{min-width:0}
.detail-layout,.detail-info-grid,.detail-amenities-grid,.detail-gallery-grid,.detail-cta-panel{min-width:0}
.detail-builder-shell{overflow-x:clip}
.detail-builder-shell>.section{overflow:visible}
.detail-media img{aspect-ratio:4/3}
/* Practical booking and contact forms. */
.availability-section>.container{max-width:var(--content-width,1220px)}
.availability-box,.form-card,.contact-form-card{border-color:var(--line);box-shadow:0 16px 45px rgba(16,47,38,.075)}
.availability-box{gap:13px;align-items:end}
.availability-box>*,.form-grid>*{min-width:0}
input:not([type="checkbox"]):not([type="radio"]),select,textarea{width:100%;max-width:100%;min-width:0}
input[type="date"],input[type="email"],input[type="number"],select{min-height:48px}
textarea{resize:vertical}
.form-note{font-size:.85rem;line-height:1.65}
.flash{position:relative;z-index:400}
.form-card button[type="submit"]{margin-top:7px}
/* Prefer just one booking dock / detail action, with safe-area spacing and no nested fixed elements. */
.sticky-booking-dock{position:fixed;z-index:280;right:20px;bottom:calc(20px + var(--lc-safe-bottom));display:flex;gap:9px;align-items:center;max-width:calc(100vw - 40px)}
.sticky-booking-dock .sticky-booking,.sticky-booking-dock .sticky-contact{position:static!important;inset:auto!important;transform:none!important;display:inline-flex;align-items:center;justify-content:center;min-height:46px;white-space:normal;text-align:center}
body:has(.detail-sticky-booking) .sticky-booking-dock{display:none!important}
body:has(.detail-sticky-booking) .detail-sticky-booking{z-index:280}
/* Mobile nav must be hidden from keyboard and hit testing while closed. */
.mobile-nav:not(.is-open){visibility:hidden;pointer-events:none}
.mobile-nav.is-open{visibility:visible;pointer-events:auto}
/* Improved footer density and legal/long labels. */
.footer-grid{gap:clamp(24px,4vw,65px)}
.site-footer{overflow:hidden}
.site-footer .footer-links a{overflow-wrap:anywhere;line-height:1.7}
.site-footer .footer-bottom{gap:15px;flex-wrap:wrap}
@media(max-width:1200px){
 .desktop-nav{gap:0}
 .desktop-nav>a,.nav-more>summary{padding-inline:9px;font-size:.8rem}
 .brand-copy small{max-width:150px}
}
@media(max-width:1023px){
 .site-header,.site-header.header-sticky{height:var(--header-mobile-height,72px)}
 .header-inner{width:min(calc(100% - 32px),1760px)}
 .brand img{height:min(58px,var(--logo-size,62px));max-width:80px}
 .brand-copy strong{font-size:.94rem}
 .menu-toggle{min-width:46px;min-height:46px;display:block;z-index:2}
 .mobile-nav{position:fixed;inset:var(--header-mobile-height,72px) 0 auto;height:auto;max-height:calc(100dvh - var(--header-mobile-height,72px));overflow:auto;padding:20px var(--lc-side) calc(30px + var(--lc-safe-bottom));background:var(--header-scrolled-bg,var(--card));color:var(--header-scrolled-text,var(--heading));border-top:1px solid var(--line);box-shadow:0 20px 42px rgba(14,37,29,.15);overscroll-behavior:contain}
 .mobile-nav a{display:block;padding:13px 8px;min-height:47px;line-height:1.45}
 .mobile-nav .mobile-book{display:flex;background:var(--button-bg);color:var(--button-text);border-radius:999px;margin-top:14px;padding-inline:16px}
 .hero-inner{padding-top:calc(var(--header-mobile-height,72px) + 66px)}
 body.detail-layout-sidebar .detail-layout,body.detail-layout-editorial .detail-layout,body.detail-layout-default .detail-layout,body.detail-layout-wide .detail-layout{grid-template-columns:minmax(0,1fr)!important}
 body.detail-layout-sidebar .booking-sidecard,body.detail-layout-editorial .booking-sidecard,body.detail-layout-wide .booking-sidecard{position:static!important;top:auto!important;inset:auto!important}
 .detail-media-split,.media-split{grid-template-columns:minmax(0,1fr)!important}
 .detail-info-grid,.detail-cta-panel{grid-template-columns:minmax(0,1fr)!important}
 .stay-grid,.news-grid{grid-template-columns:repeat(min(var(--grid-t,2),2),minmax(0,1fr))}
}
@media(max-width:700px){
 :root{--lc-side:18px}
 .section{padding-top:clamp(42px,10vw,64px);padding-bottom:clamp(42px,10vw,64px)}
 .site-placement .section{padding-top:clamp(34px,8vw,54px);padding-bottom:clamp(34px,8vw,54px)}
 .hero,.hero-home,.hero-detail{height:auto!important;min-height:0!important}
 .hero-inner{min-height:clamp(460px,68svh,680px);padding-top:calc(var(--header-mobile-height,72px) + 80px);padding-bottom:clamp(44px,6vh,72px)}
 .hero-home .hero-inner{min-height:clamp(520px,77svh,720px)}
 .hero-copy{max-width:100%}
 .hero-copy h1{font-size:clamp(2.25rem,9vw,3.85rem)!important;line-height:1.08;letter-spacing:-.035em;max-width:18ch}
 .hero-copy p{font-size:clamp(1rem,4vw,1.16rem);line-height:1.58}
 .hero-actions{display:grid;grid-template-columns:minmax(0,1fr);max-width:420px;gap:9px}
 .hero-actions .button{width:100%;max-width:100%;min-height:49px}
 h2{font-size:calc(clamp(1.95rem,8.2vw,2.85rem)*var(--heading-scale,1))}
 .section-heading{text-align:left;margin-left:0;margin-bottom:26px}
 .section-heading p{margin-left:0}
 .stay-grid,.news-grid{grid-template-columns:minmax(0,1fr)!important;gap:20px}
 .stay-card .stay-body{padding:21px}
 .detail-amenities-grid,.detail-info-grid,.detail-review-grid,.amenities-grid{grid-template-columns:minmax(0,1fr)!important}
 .availability-box,.form-grid{grid-template-columns:minmax(0,1fr)!important}
 .availability-box{padding:19px;gap:13px}
 .contact-form-card,.contact-aside,.form-card{padding:clamp(17px,5vw,24px)}
 .sticky-booking-dock{left:12px;right:12px;bottom:calc(11px + var(--lc-safe-bottom));max-width:none;width:auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;padding:6px;background:color-mix(in srgb,var(--card) 93%,transparent);border:1px solid var(--line);border-radius:17px;box-shadow:0 12px 35px rgba(13,32,26,.22);backdrop-filter:blur(14px)}
 .sticky-booking-dock.has-booking:not(.has-contact){grid-template-columns:1fr}
 .sticky-booking-dock .sticky-booking,.sticky-booking-dock .sticky-contact{font-size:.83rem;line-height:1.2;padding:11px 8px;min-height:46px;box-shadow:none;border-radius:12px}
 .detail-sticky-booking{left:12px;right:12px;bottom:calc(12px + var(--lc-safe-bottom));max-width:none;text-align:center;border-radius:13px;min-height:49px}
 body:has(.sticky-booking-dock),body:has(.detail-sticky-booking){padding-bottom:calc(91px + var(--lc-safe-bottom))}
 .footer-grid{gap:28px}
 .lightbox{max-width:calc(100vw - 20px)}
 .interactive-map{min-height:320px}
 input,select,textarea{font-size:16px}
}
@media(max-width:370px){
 .brand-copy small{display:none}
 .brand-copy strong{max-width:155px;white-space:normal}
 .hero-copy h1{font-size:clamp(2.08rem,9.3vw,2.55rem)!important}
 .container{width:calc(100% - 30px)}
 .sticky-booking-dock .sticky-booking,.sticky-booking-dock .sticky-contact{font-size:.78rem}
}
@media(prefers-reduced-motion:reduce){
 html{scroll-behavior:auto!important}
 *,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
 .section,.stay-card,.news-card,.review-card,.promo-card{opacity:1!important;transform:none!important}
}
/* Language links appear only when the Hub enables English. */
.lc-languages{display:flex;align-items:center;gap:7px;font-size:.78rem;font-weight:800;white-space:nowrap}
.lc-languages a{padding:6px 5px;border-radius:6px}
.lc-languages a[aria-current="true"]{color:var(--accent);text-decoration:underline;text-underline-offset:4px}
.mobile-nav .lc-languages{gap:14px;margin:8px 0}
.mobile-nav .lc-languages a{border:0;padding:8px 10px}
