/* CBD EN PROVENCE — cinematic entrance and brand system. Load after styles.css. */
:root{--forest:#003c2c;--pine:#0b2b22;--ivory:#f1f0e6;--sage:#dce5d7;--gold:#b3ab79;--ink:var(--forest);--paper:var(--ivory);--accent:#52785f;--display:Georgia,'Times New Roman',serif}
html{overflow-x:clip}
body{background:var(--ivory);color:var(--forest);overflow-x:clip;overflow-y:visible}
body.is-loading{overflow:hidden;overscroll-behavior:none}
body.is-loading .header,body.is-loading .chapters,body.is-loading .visit-progress{visibility:hidden}
button:focus-visible,a:focus-visible{outline-color:var(--gold)}
.chapter[data-theme=light]{color:var(--forest)}
.chapter[data-theme=dark]{color:var(--ivory)}
.dark{--ink:var(--ivory);--paper:var(--pine);--accent:#a9bf9d;color:var(--ivory)}
.no-webgl .chapter[data-theme=dark]{background:var(--pine)}
.header{transition:color .45s,opacity .4s;isolation:isolate}
.top-nav button:not(#menu-toggle),.language{border-color:currentColor;border-bottom-width:1px}
.chapters a span{border-radius:2px;padding:2px 7px}
.progress-line{background:#52785f40}
.hotspot>span{background:var(--ivory);color:var(--forest);box-shadow:0 3px 20px #082a2015;transition:transform .4s,box-shadow .4s}
.hotspot:hover>span{box-shadow:0 0 0 8px #dce5d738,0 4px 26px #082a2020}
.hotspot b{background:var(--ivory);color:var(--forest);padding:7px 10px}
.text-actions button{background:var(--forest);color:var(--ivory);border:1px solid transparent;border-radius:0;transition:transform .3s,background .3s}
.text-actions button:hover{background:#17563e;transform:translateY(-3px)}
.chapter[data-theme=dark] .text-actions button{background:var(--ivory);color:var(--forest)}
.chapter[data-theme=dark] .text-actions button:hover{background:var(--sage)}
.copy .instruction{text-decoration-color:#839b77;text-decoration-thickness:1px;text-underline-offset:7px}
.place-tag{background:var(--ivory);color:var(--forest);border:1px solid #003c2c18;box-shadow:0 8px 32px #082a201a}
.pin{background:var(--forest);outline-color:var(--forest);border-color:var(--ivory)}
.numbers button{border-color:#003c2c2c}
.numbers strong{font-family:var(--display);font-weight:400;letter-spacing:-.06em}
.numbers em{letter-spacing:0}
.contact-button{background:var(--forest);color:var(--ivory);border:1px solid #003c2c;transition:transform .3s,background .3s;min-height:52px}
.contact-button:hover{background:#17563e;transform:translateY(-4px)}
.round{color:var(--forest);background:var(--ivory);border:1px solid #003c2c15;box-shadow:0 6px 25px #003c2c0c}
.hero-copy h1,.contact-copy h2{font-family:var(--display);font-weight:400;letter-spacing:-.045em;line-height:1.02}
.hero-copy h1{font-size:clamp(42px,5.9vw,88px)}
.hero-copy p{letter-spacing:.01em}
.hero-copy,.contact-copy{opacity:var(--copy-opacity,1);transform:translate3d(0,var(--copy-y,0px),0);filter:blur(var(--copy-blur,0px));will-change:transform,opacity}
.chapter .copy{opacity:var(--copy-opacity,1);transform:translate3d(0,calc(-50% + var(--copy-y,0px)),0);filter:blur(var(--copy-blur,0px));will-change:transform,opacity}
.chapter .eyebrow{letter-spacing:.2em;opacity:.68}
dialog{background:var(--ivory);color:var(--forest);box-shadow:0 30px 120px #001d1650}
dialog::backdrop{background:#03291e9c;backdrop-filter:blur(12px)}
dialog h2{letter-spacing:.01em}
#menu-links a{border-color:#003c2c22}

/* Loading is driven by settled resource milestones, not a timer. */
.preloader{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;color:var(--ivory);background:var(--forest);clip-path:inset(0 0 0 0);transition:clip-path 1s cubic-bezier(.76,0,.24,1),visibility 0s 1s;overflow:hidden}
.preloader::before{content:'';position:absolute;left:50%;top:50%;width:min(86vw,870px);height:min(86vw,870px);border:1px solid #f1f0e60b;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none}
.preloader::after{content:'';position:absolute;left:50%;top:50%;width:min(68vw,690px);height:min(68vw,690px);border:1px solid #f1f0e608;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none}
.preloader.is-complete{clip-path:inset(0 0 100% 0);pointer-events:none;visibility:hidden}
.preloader-inner{position:relative;z-index:1;width:min(600px,calc(100% - 56px));text-align:center;padding:20px 0}
.preloader-logo{display:block;width:220px;max-height:130px;object-fit:contain;margin:0 auto 30px;filter:brightness(0) invert(1);opacity:.92}
.preloader-kicker{font-size:11px;letter-spacing:.26em;text-transform:uppercase;color:#c6d5bf;margin:0 0 18px}
.load-number{display:flex;justify-content:center;align-items:baseline;line-height:1;font-variant-numeric:tabular-nums;letter-spacing:-.065em;font-size:clamp(100px,13vw,176px);font-weight:400;margin:0 0 39px;min-height:1em}
.load-number #load-number{font-family:var(--display);font-weight:400;min-width:1.52em}
.load-number small{font-size:.19em;letter-spacing:0;font-weight:400;color:var(--gold);margin-left:14px}
.load-track{position:relative;height:2px;background:#f1f0e622;width:100%;overflow:visible}
#load-fill{position:absolute;inset:0;transform:scaleX(0);transform-origin:left;background:var(--gold);will-change:transform}
#load-fill::after{content:'';position:absolute;right:-2px;top:-3px;width:8px;height:8px;border:1px solid var(--gold);border-radius:50%;background:var(--ivory);box-shadow:0 0 15px #c6d5bf55}
.load-ruler{display:flex;justify-content:space-between;position:relative;margin-top:0;font-size:10px;font-variant-numeric:tabular-nums;letter-spacing:.04em;color:#c6d5bf}
.load-ruler>*{display:flex;flex-direction:column;align-items:center;gap:10px;min-width:22px;padding-top:0}
.load-ruler>*::before{content:'';display:block;height:9px;width:1px;background:#f1f0e640}
.load-ruler>*:first-child{align-items:flex-start}.load-ruler>*:last-child{align-items:flex-end}
#load-status{font-size:12px;letter-spacing:.055em;line-height:1.5;color:#c6d5bf;min-height:18px;margin:28px 0 0}
#load-continue{display:block;font-size:12px;letter-spacing:.03em;color:var(--ivory);border-bottom:1px solid #f1f0e655;padding:4px 0;margin:22px auto 0;min-height:32px}
#load-continue[hidden]{display:none}
.load-stages{display:flex;justify-content:space-between;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:#a6bba2;margin-top:22px;gap:10px}
.load-stages .active{color:var(--ivory)}

/* Keep overflow on the intro section visible so its stage can stick. */
.film-intro{position:relative;height:380svh;min-height:2000px;background:var(--pine);isolation:isolate;z-index:1}
.film-stage{position:sticky;top:0;height:100svh;width:100%;overflow:hidden;color:var(--ivory);background:var(--pine);clip-path:inset(var(--film-inset,0%) round var(--film-radius,0px));transform:translateZ(0);isolation:isolate}
#intro-film{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;display:block;transform:scale(var(--film-scale,1.08));transform-origin:50% 50%;will-change:transform}
.film-shade{position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(90deg,#00281ed4 0%,#00281e7a 44%,#00281e1c 80%),linear-gradient(0deg,#001d17b8 0%,transparent 40%,#001d174d 100%);opacity:calc(1 - var(--film-exit,0)*.4)}
.film-heading{position:absolute;z-index:2;left:8%;right:8%;top:49%;transform:translate3d(0,calc(-50% + var(--film-copy-y,0px)),0);opacity:var(--film-copy-opacity,1);max-width:1000px;will-change:transform,opacity}
.film-heading .eyebrow{color:#e0e8d6;opacity:.9;letter-spacing:.24em;font-size:11px;margin-bottom:25px}
.film-heading h2{font-family:var(--display);font-weight:400;font-size:clamp(58px,8.2vw,128px);text-transform:none;letter-spacing:-.055em;line-height:.98;max-width:12ch;text-wrap:balance;text-shadow:0 4px 35px #001b1520}
.film-heading h2 em{font-weight:400;font-style:italic;color:#dde6c7}
.film-heading p{font-size:clamp(16px,1.4vw,21px);line-height:1.55;max-width:410px;margin-top:28px;color:#f1f0e6e0;letter-spacing:.01em}
.film-bottom{position:absolute;z-index:3;left:8%;right:8%;bottom:55px;display:flex;align-items:center;justify-content:space-between;gap:25px;font-size:12px;letter-spacing:.045em}
.film-scroll-cue,.film-bottom .scroll-cue{display:flex;align-items:center;gap:13px;line-height:1.4}
.film-scroll-cue::before,.film-bottom .scroll-cue::before{content:'';display:block;flex:none;width:1px;height:35px;background:linear-gradient(transparent,#f1f0e6);transform-origin:top;animation:film-cue 2s ease-in-out infinite}
@keyframes film-cue{0%,100%{transform:scaleY(.65);opacity:.5}50%{transform:scaleY(1);opacity:1}}
#film-skip{font-size:12px;color:var(--ivory);background:#003c2c26;backdrop-filter:blur(5px);border:1px solid #f1f0e65c;padding:11px 18px;min-height:42px;transition:background .25s,border-color .25s}
#film-skip:hover{background:#003c2c66;border-color:var(--ivory)}
.film-progress{position:absolute;left:8%;right:8%;bottom:30px;height:1px;background:#f1f0e638;z-index:3}
.film-progress i{position:absolute;inset:0;display:block;background:var(--ivory);transform-origin:left;transform:scaleX(var(--film-progress,0));will-change:transform}
.film-overlay{position:absolute;z-index:2;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;font-family:var(--display);font-size:clamp(55px,10.5vw,170px);line-height:.9;letter-spacing:-.055em;pointer-events:none;opacity:var(--film-exit,0);transform:translate3d(0,calc(45px - var(--film-exit,0)*45px),0);text-shadow:0 10px 70px #003c2c44}
.film-overlay small{display:block;font-family:Jost,sans-serif;font-size:11px;letter-spacing:.3em;text-transform:uppercase;margin-top:30px}
.film-active .header{color:var(--ivory)}
.film-active .brand img{filter:brightness(0) invert(1)}
.film-active .chapters,.film-active .visit-progress{opacity:0!important;pointer-events:none}
.chapters,.visit-progress{transition:opacity .4s,color .4s}
.film-active .top-nav{color:var(--ivory)}

@media(max-width:900px){
 .chapter .copy{transform:translate3d(0,var(--copy-y,0px),0)}
 .hero-copy h1{font-size:clamp(36px,7vw,62px)}
 .film-intro{height:320svh;min-height:1800px}
 .film-heading{left:7%;right:12%;top:50%;max-width:650px}
 .film-heading h2{font-size:clamp(54px,10.5vw,90px);max-width:11ch}
 .film-heading .eyebrow{font-size:10px;line-height:1.6;margin-bottom:22px}
 .film-heading p{font-size:17px;max-width:330px;margin-top:24px}
 .film-bottom{left:7%;right:7%;bottom:49px}
 .film-progress{left:7%;right:7%;bottom:25px}
 .film-shade{background:linear-gradient(90deg,#00281ec7,#00281e26),linear-gradient(0deg,#001d17c4,transparent 58%,#001d174d)}
 .preloader-logo{width:200px;margin-bottom:25px}
 .preloader-kicker{font-size:10px;letter-spacing:.22em}
 .load-number{font-size:132px;margin-bottom:36px}
}
@media(max-width:520px){
 .preloader-inner{width:calc(100% - 46px)}
 .preloader-logo{width:180px;max-height:112px;margin-bottom:22px}
 .preloader::before{width:120vw;height:120vw}.preloader::after{width:94vw;height:94vw}
 .load-number{font-size:112px;letter-spacing:-.07em;margin-bottom:32px}
 .load-number small{margin-left:8px;font-size:21px}
 .preloader-kicker{font-size:9px;letter-spacing:.2em}
 #load-status{font-size:11px;margin-top:24px}
 .load-ruler{font-size:9px}.load-stages{font-size:8px;letter-spacing:.08em}
 .film-heading{top:49%;right:10%}
 .film-heading h2{font-size:clamp(47px,13vw,70px);line-height:1.02;max-width:10.7ch}
 .film-heading .eyebrow{font-size:9px;letter-spacing:.19em;max-width:28ch;margin-bottom:20px}
 .film-heading p{font-size:15px;max-width:270px;line-height:1.55;margin-top:22px}
 .film-bottom{bottom:48px;gap:14px;font-size:10px}
 .film-scroll-cue,.film-bottom .scroll-cue{max-width:140px;gap:9px}
 #film-skip{font-size:10px;padding:10px 12px;white-space:nowrap;min-height:40px}
 .film-overlay{font-size:16vw}.film-overlay small{font-size:9px;letter-spacing:.23em;margin-top:23px}
 .hero-copy h1{font-size:clamp(37px,9.5vw,50px);letter-spacing:-.04em;line-height:1.04}
 .hero-copy p{font-size:17px}
 .contact-copy h2{font-size:44px;line-height:1.05}
 .hotspot b{padding:6px 8px}
}
@media(max-height:620px) and (min-width:700px){
 .preloader-logo{width:150px;max-height:80px;margin-bottom:12px}
 .preloader-kicker{margin-bottom:10px}.load-number{font-size:100px;margin-bottom:24px}
 #load-status{margin-top:18px}.film-heading{top:51%}.film-heading h2{font-size:62px}
 .film-heading .eyebrow{margin-bottom:14px}.film-heading p{font-size:15px;margin-top:16px;max-width:360px}
 .film-bottom{bottom:35px}.film-progress{bottom:17px}
}
@media(prefers-reduced-motion:reduce){
 .preloader,.preloader.is-complete{transition:none}
 .preloader.is-complete{display:none}
 .chapter .copy{transform:translateY(-50%)!important;filter:none!important;opacity:1!important}
 .hero-copy,.contact-copy{transform:none!important;filter:none!important;opacity:1!important}
 #intro-film{transform:none!important}
 .film-stage{clip-path:none!important}
 .film-heading{transform:translateY(-50%)!important;opacity:1!important}
 .film-overlay{display:none}
 .film-scroll-cue::before,.film-bottom .scroll-cue::before{animation:none}
}
@media(prefers-reduced-motion:reduce) and (max-width:900px){.chapter .copy{transform:none!important}}
.preloader[hidden]{display:none}
.preloader-signature{position:absolute;bottom:28px;left:20px;right:20px;text-align:center;font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:#c6d5bf80}
.film-overlay{opacity:var(--film-end-opacity,0)}
.film-overlay em{font-weight:400;margin-top:.1em}
.film-fallback{position:absolute;z-index:5;left:8%;bottom:150px;max-width:400px;font-size:14px;color:var(--ivory)}
.film-time{font-size:11px;font-variant-numeric:tabular-nums;letter-spacing:.12em;opacity:.75}
#film-skip{text-decoration:none}
.film-scroll-cue>i{display:none}
.chapter .hotspots,.scene-caption,.award-label{opacity:var(--copy-opacity,1)}
.numbers button{transition:transform .6s ease,opacity .6s ease;transform:translateY(22px);opacity:.4}
.numbers-chapter.in-view .numbers button{transform:translateY(0);opacity:1}
.numbers-chapter.in-view .numbers button:nth-child(2){transition-delay:.12s}
.numbers-chapter.in-view .numbers button:nth-child(3){transition-delay:.24s}
@media(max-width:520px){.film-time{display:none}.preloader-signature{font-size:8px;bottom:20px;letter-spacing:.12em}}
@media(prefers-reduced-motion:reduce){.numbers button{transform:none;opacity:1}.chapter .hotspots,.scene-caption,.award-label{opacity:1}}

/* Sculpted brand signature. */
.hero-copy{top:65%}.hero-copy h1{font-size:clamp(38px,4.3vw,66px);text-transform:none;line-height:.98}.hero-copy h1 em{font-weight:400}.hero-copy .eyebrow{font-size:10px;margin-bottom:15px;letter-spacing:.24em}.hero-copy p{font-size:16px;margin:21px 0}.hero-copy .next{margin-top:16px}
@media(max-width:900px){.hero-copy{top:60%}.hero-copy h1{font-size:clamp(40px,8vw,62px)}.hero-copy p{font-size:15px;max-width:260px;margin:22px auto}.hero-copy .eyebrow{font-size:9px}}
