@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:ital,wght@1,600&display=swap');
:root{--ink:#171b18;--cream:#eee9dd;--paper:#f7f4ed;--orange:#e9672e;--lime:#c7d873;--line:rgba(23,27,24,.16);--pad:clamp(22px,5vw,76px)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',Arial,sans-serif;overflow-x:hidden}a{color:inherit;text-decoration:none}button{font:inherit}.progress{position:fixed;z-index:100;top:0;left:0;width:100%;height:4px;background:transparent}.progress span{display:block;height:100%;width:0;background:var(--orange)}
.hero{min-height:100svh;position:relative;color:white;background-image:linear-gradient(90deg,rgba(10,15,12,.78),rgba(10,15,12,.2)),var(--hero);background-size:cover;background-position:center;display:grid;grid-template-rows:auto 1fr auto}.hero-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.2),transparent 42%,rgba(0,0,0,.58));pointer-events:none}.nav{position:relative;z-index:2;display:flex;justify-content:space-between;align-items:center;padding:28px var(--pad);font-weight:700;letter-spacing:.04em}.brand{font-size:18px}.brand i{font-family:'Playfair Display';color:var(--lime);font-size:1.25em}.nav-links{display:flex;gap:26px;align-items:center;font-size:14px}.icon-button{border:1px solid rgba(255,255,255,.45);background:transparent;color:white;border-radius:50%;width:38px;height:38px;cursor:pointer}.hero-content{position:relative;z-index:2;align-self:center;padding:5vh var(--pad) 8vh;max-width:1050px}.kicker,.eyebrow,.section-heading span,.finale span{font-size:12px;font-weight:700;letter-spacing:.19em;text-transform:uppercase}.hero h1{margin:.1em 0 .18em;font-size:clamp(76px,14vw,210px);line-height:.68;letter-spacing:-.075em;text-transform:uppercase}.hero h1 em{font-family:'Playfair Display';font-weight:600;text-transform:none;color:var(--lime);font-size:.72em;letter-spacing:-.04em}.intro{max-width:610px;font-size:clamp(17px,2vw,23px);line-height:1.45}.scroll-cue{display:inline-flex;gap:18px;align-items:center;margin-top:25px;text-transform:uppercase;font-size:12px;letter-spacing:.14em}.scroll-cue b{font-size:25px;animation:bob 1.7s infinite}@keyframes bob{50%{transform:translateY(7px)}}.hero-stats{position:relative;z-index:2;display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid rgba(255,255,255,.28);backdrop-filter:blur(7px)}.hero-stats div{padding:22px var(--pad);border-right:1px solid rgba(255,255,255,.22)}.hero-stats strong{display:block;font-size:clamp(24px,3vw,42px)}.hero-stats span{font-size:12px;text-transform:uppercase;letter-spacing:.12em;opacity:.75}
.manifest{padding:clamp(100px,14vw,210px) var(--pad);max-width:1450px;margin:auto}.manifest>p{font-size:14px;text-transform:uppercase;letter-spacing:.14em}.manifest h2{font-size:clamp(45px,7.5vw,118px);line-height:.92;letter-spacing:-.055em;margin:.3em 0 0}.manifest h2 em{font-family:'Playfair Display';font-weight:600;color:var(--orange)}
.route-section{background:var(--ink);color:var(--cream);padding:clamp(80px,9vw,130px) var(--pad)}.section-heading{max-width:1300px;margin:0 auto 55px}.section-heading span{color:var(--lime)}.section-heading h2{font-size:clamp(38px,5vw,76px);line-height:.98;letter-spacing:-.045em;margin:.25em 0}.route-card{max-width:1300px;margin:auto;display:grid;grid-template-columns:minmax(260px,.7fr) 1.4fr;border:1px solid rgba(255,255,255,.15);min-height:560px}.route-copy{padding:clamp(30px,5vw,70px);display:flex;flex-direction:column}.route-label{font-size:clamp(28px,4vw,58px);font-weight:700;line-height:1}.route-label.end{color:var(--lime)}.route-arrow{font-size:50px;color:var(--orange);margin:.25em 0}.route-note{margin-top:auto;max-width:260px;font-size:14px;opacity:.65}.map{position:relative;min-height:520px;overflow:hidden;background:radial-gradient(circle at 50% 40%,#384037,#202622)}.map svg{width:100%;height:100%;position:absolute;inset:0}.map-land{fill:#2a312b;stroke:#465047;stroke-width:1}.route-line-bg{fill:none;stroke:#121512;stroke-width:12;stroke-linecap:round;stroke-linejoin:round}.route-line{fill:none;stroke:var(--orange);stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:7 10;filter:url(#glow)}.route-dot{position:absolute;left:calc(var(--x)/600 * 100%);top:calc(var(--y)/450 * 100%);transform:translate(-50%,-50%);width:34px;height:34px;border-radius:50%;background:var(--cream);color:var(--ink);display:grid;place-items:center;font-size:12px;font-weight:700;box-shadow:0 0 0 6px rgba(238,233,221,.12);transition:.25s}.route-dot:hover{background:var(--lime);transform:translate(-50%,-50%) scale(1.2)}
section.story{max-width:1500px;margin:auto;padding:clamp(70px,10vw,150px) var(--pad)}.chapter{display:grid;grid-template-columns:minmax(270px,.7fr) 1.3fr;gap:clamp(30px,6vw,100px);padding:clamp(60px,8vw,125px) 0;border-top:1px solid var(--line);align-items:start}.chapter:nth-child(even){grid-template-columns:1.3fr minmax(270px,.7fr)}.chapter:nth-child(even) .chapter-copy{order:2}.chapter-number{font-size:12px;font-weight:700;border:1px solid var(--ink);border-radius:50%;width:42px;height:42px;display:grid;place-items:center;margin-bottom:35px}.eyebrow{color:#767a71}.chapter h2{font-size:clamp(40px,5vw,75px);line-height:.95;letter-spacing:-.05em;margin:.25em 0 .4em}.chapter-copy .story p{font-size:clamp(17px,1.4vw,20px);line-height:1.65;margin:0;max-width:610px}.gallery{display:grid;gap:10px;min-height:380px}.photo{border:0;padding:0;background:#ddd;overflow:hidden;cursor:zoom-in;min-height:240px}.photo img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s cubic-bezier(.2,.8,.2,1),filter .35s}.photo:hover img{transform:scale(1.045);filter:saturate(1.08)}.gallery-1{grid-template-columns:1fr}.gallery-2{grid-template-columns:1.2fr .8fr}.gallery-3{grid-template-columns:1.2fr .8fr;grid-template-rows:1fr 1fr}.gallery-3 .photo:first-child{grid-row:1/3}.gallery-4,.gallery-5{grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(2,260px)}.gallery-5 .photo:first-child{grid-row:span 2}.gallery-5{grid-template-columns:1.2fr .8fr .8fr}
.finale{background:var(--orange);display:grid;grid-template-columns:1fr 1fr;min-height:75vh}.finale>div{padding:clamp(50px,8vw,130px);align-self:center}.finale span{color:white}.finale h2{font-size:clamp(55px,7vw,110px);line-height:.88;letter-spacing:-.06em;margin:.25em 0}.finale p{max-width:560px;font-size:19px;line-height:1.6}.finale img{width:100%;height:100%;object-fit:cover;min-height:550px}footer{background:var(--ink);color:var(--cream);padding:36px var(--pad);display:flex;justify-content:space-between;text-transform:uppercase;font-size:11px;letter-spacing:.16em}
.reveal{opacity:0;transform:translateY(38px);transition:opacity .9s ease,transform .9s ease}.reveal.visible{opacity:1;transform:none}dialog{border:0;padding:0;background:rgba(8,10,9,.96);width:100vw;height:100vh;max-width:none;max-height:none;color:white}dialog::backdrop{background:#000}.lightbox-open{overflow:hidden}dialog img{width:100%;height:100%;object-fit:contain;padding:5vh 7vw}.close,.prev,.next{position:fixed;border:0;background:rgba(255,255,255,.12);color:white;cursor:pointer;z-index:2}.close{right:22px;top:22px;width:48px;height:48px;border-radius:50%;font-size:30px}.prev,.next{top:50%;transform:translateY(-50%);width:54px;height:72px;font-size:50px}.prev{left:18px}.next{right:18px}.counter{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);font-size:12px;letter-spacing:.15em}
@media(max-width:850px){.nav-links a{display:none}.hero-stats{grid-template-columns:repeat(2,1fr)}.hero-stats div:nth-child(2){border-right:0}.route-card,.chapter,.chapter:nth-child(even),.finale{grid-template-columns:1fr}.chapter:nth-child(even) .chapter-copy{order:0}.route-copy{min-height:330px}.map{min-height:500px}.gallery-4,.gallery-5{grid-template-columns:1fr 1fr;grid-template-rows:auto}.gallery-5 .photo:first-child{grid-row:auto}.finale img{min-height:400px}.hero{background-position:60% center}}@media(max-width:540px){.hero h1{font-size:25vw}.hero-stats div{padding:18px 22px}.manifest,section.story{padding-left:22px;padding-right:22px}.route-section{padding-left:14px;padding-right:14px}.chapter{padding:70px 0}.gallery,.gallery-2,.gallery-3,.gallery-4,.gallery-5{display:flex;overflow-x:auto;scroll-snap-type:x mandatory}.photo{flex:0 0 86vw;height:430px;scroll-snap-align:center}.map{min-height:430px}.route-dot{width:29px;height:29px}.finale>div{padding:70px 22px}footer{padding:28px 22px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}}

/* V2 refinements */
.menu-button{position:relative;width:44px;height:44px;border:1px solid rgba(255,255,255,.45);border-radius:50%;background:rgba(0,0,0,.08);color:#fff;cursor:pointer;display:grid;place-items:center;padding:0;transition:background .25s,border-color .25s}
.menu-button:hover{background:rgba(255,255,255,.12);border-color:#fff}.menu-button span{position:absolute;width:18px;height:2px;background:currentColor;border-radius:2px;transition:transform .3s,opacity .2s,top .3s}.menu-button .top{top:14px}.menu-button .middle{top:20px}.menu-button .bottom{top:26px}.menu-button[aria-expanded="true"] .top{top:20px;transform:rotate(45deg)}.menu-button[aria-expanded="true"] .middle{opacity:0}.menu-button[aria-expanded="true"] .bottom{top:20px;transform:rotate(-45deg)}
.chapter-menu{position:fixed;inset:0;z-index:300;pointer-events:none;visibility:hidden}.chapter-menu.open{pointer-events:auto;visibility:visible}.menu-backdrop{position:absolute;inset:0;border:0;background:rgba(8,10,9,.64);opacity:0;cursor:pointer;backdrop-filter:blur(3px);transition:opacity .35s}.chapter-menu.open .menu-backdrop{opacity:1}.menu-panel{position:absolute;top:0;right:0;width:min(520px,92vw);height:100%;background:var(--paper);color:var(--ink);transform:translateX(100%);transition:transform .42s cubic-bezier(.2,.8,.2,1);overflow:auto;overscroll-behavior:contain;box-shadow:-28px 0 70px rgba(0,0,0,.22)}.chapter-menu.open .menu-panel{transform:none}.menu-head{position:sticky;top:0;z-index:2;display:flex;align-items:flex-start;justify-content:space-between;padding:32px 34px 24px;background:linear-gradient(var(--paper) 80%,rgba(247,244,237,0));}.menu-head span{display:block;color:var(--orange);font-size:11px;font-weight:700;letter-spacing:.18em;text-transform:uppercase}.menu-head h2{margin:.12em 0 0;font-size:42px;letter-spacing:-.045em}.menu-close{width:44px;height:44px;border:1px solid var(--line);border-radius:50%;background:transparent;cursor:pointer;font-size:29px;line-height:1}.menu-panel ol{list-style:none;margin:0;padding:0 34px 40px}.menu-panel li{border-top:1px solid var(--line)}.menu-panel a{display:grid;grid-template-columns:44px 1fr;gap:0 15px;padding:20px 0;transition:color .2s,transform .2s}.menu-panel a:hover,.menu-panel a.active{color:var(--orange);transform:translateX(4px)}.menu-number{grid-row:1/3;font-size:12px;font-weight:700;border:1px solid currentColor;border-radius:50%;width:36px;height:36px;display:grid;place-items:center}.menu-title{font-size:18px;font-weight:700;line-height:1.2}.menu-panel small{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:#85877f;margin-top:6px}.menu-open{overflow:hidden}
.chapter-copy{min-width:0}.chapter-meta{display:flex;flex-direction:column;align-items:flex-start;gap:5px;color:#767a71;font-size:12px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;line-height:1.35}.chapter-meta span{display:block}.chapter h2,.chapter-copy .story,.chapter-copy .story p{margin-left:0;padding-left:0;text-align:left}.chapter-copy .story{width:100%}
.gallery-pagination{display:none}
@media(max-width:850px){.nav-links>a{display:none}}
@media(max-width:540px){
  .nav{padding-top:20px}.menu-button{width:42px;height:42px}
  .chapter-meta{gap:4px;margin-bottom:12px}
  .gallery{scrollbar-width:none;-ms-overflow-style:none;gap:12px;scroll-padding-inline:7vw}.gallery::-webkit-scrollbar{display:none}.photo{flex-basis:86vw;height:auto;min-height:0;aspect-ratio:4/5}.photo img{object-fit:cover}
  .gallery-pagination{display:flex;justify-content:center;align-items:center;gap:9px;margin-top:16px}.gallery-bullet{width:8px;height:8px;border:0;border-radius:50%;padding:0;background:#c9c5ba;cursor:pointer;transition:transform .2s,background .2s}.gallery-bullet.active{background:var(--orange);transform:scale(1.35)}
  .menu-head{padding:26px 24px 20px}.menu-head h2{font-size:34px}.menu-panel ol{padding:0 24px 34px}.menu-panel a{padding:17px 0}
  dialog img{padding:7vh 0;width:100%;touch-action:pan-y;user-select:none;-webkit-user-drag:none}.prev,.next{display:none}.counter{bottom:22px}
}


/* Version 3 refinements */
.route-card-v3{position:relative;display:block;min-height:650px;overflow:hidden;border:1px solid rgba(255,255,255,.14);background:#202622}
.route-map-copy{position:absolute;z-index:5;left:clamp(24px,4vw,58px);top:clamp(24px,4vw,55px);max-width:470px;padding:22px 24px;background:rgba(18,22,19,.78);border:1px solid rgba(255,255,255,.13);backdrop-filter:blur(12px)}
.route-overline{display:block;color:var(--lime);font-size:11px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;margin-bottom:12px}
.route-from-to{display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-size:clamp(22px,2.5vw,38px);line-height:1.05;letter-spacing:-.035em}
.route-from-to span{color:var(--orange);font-weight:400}.route-from-to strong:last-child{color:var(--lime)}
.route-map-copy p{margin:15px 0 0;color:rgba(255,255,255,.62);font-size:13px}
.map-v3{min-height:650px;background:#202622}.map-v3 svg{position:absolute;inset:0;width:100%;height:100%}
.continent{fill:#293129;stroke:#485249;stroke-width:1.5}.country-label{fill:rgba(238,233,221,.18);font-size:18px;font-weight:800;letter-spacing:.18em}
.route-shadow{fill:none;stroke:#0f120f;stroke-width:18;stroke-linecap:round;filter:url(#routeGlow)}
.route-path{fill:none;stroke:var(--orange);stroke-width:6;stroke-linecap:round;stroke-dasharray:2 15;filter:url(#routeGlow)}
.route-stop{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%);z-index:4;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:var(--cream);color:var(--ink);border:2px solid rgba(23,27,24,.75);box-shadow:0 0 0 7px rgba(238,233,221,.1);font-size:10px;font-weight:900;transition:transform .25s,background .25s,box-shadow .25s,color .25s}
.route-stop:hover,.route-stop:focus-visible{transform:translate(-50%,-50%) scale(1.18);background:var(--lime);box-shadow:0 0 0 10px rgba(202,224,92,.16);outline:none}
.route-stop-key{background:var(--orange);color:white;width:46px;height:46px}
.route-tooltip{position:absolute;z-index:7;min-width:150px;padding:11px 13px;background:var(--cream);color:var(--ink);border-radius:3px;box-shadow:0 12px 35px rgba(0,0,0,.25);pointer-events:none;opacity:0;transform:translate(-50%,calc(-100% - 18px));transition:opacity .16s,transform .16s}
.route-tooltip.visible{opacity:1;transform:translate(-50%,calc(-100% - 12px))}.route-tooltip strong{display:block;font-size:14px}.route-tooltip span{display:block;margin-top:3px;color:#767a71;font-size:10px;letter-spacing:.1em;text-transform:uppercase}

.chapter{position:relative;gap:clamp(24px,4.5vw,74px)}
.chapter-copy{position:relative;padding-top:2px}
.chapter-number{margin-bottom:22px}
.chapter h2{position:relative;font-size:clamp(42px,5.3vw,80px);margin:.2em 0 .17em;max-width:760px;text-wrap:balance}
.chapter h2::after{content:"";display:block;width:62px;height:5px;background:var(--orange);margin-top:18px}
.chapter:nth-child(3n+2) h2::after{background:var(--lime)}
.chapter-copy .story{width:100%;padding:0 0 0 22px;border-left:2px solid var(--line);margin-top:20px}
.chapter-copy .story p:first-child::first-letter{font-size:1.35em;font-weight:800;color:var(--orange)}
.chapter-meta{margin-bottom:13px}

.lightbox-stage{position:fixed;inset:0;overflow:hidden;touch-action:pan-y;background:rgba(8,10,9,.96)}
.lightbox-stage img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;padding:5vh 7vw;will-change:transform,opacity}
.lightbox-incoming{opacity:0}

@media(max-width:850px){
 .route-card-v3,.map-v3{min-height:620px}.route-map-copy{max-width:calc(100% - 40px)}
 .chapter{gap:24px}.chapter-copy .story{margin-top:16px}
}
@media(max-width:540px){
 .route-card-v3,.map-v3{min-height:600px}.route-map-copy{left:16px;top:16px;right:16px;max-width:none;padding:17px 18px}.route-from-to{font-size:23px}.route-map-copy p{font-size:12px}
 .country-label{font-size:14px}.route-stop{width:31px;height:31px;font-size:9px;box-shadow:0 0 0 5px rgba(238,233,221,.1)}.route-stop-key{width:38px;height:38px}
 .chapter{padding:58px 0;gap:17px}.chapter-number{margin-bottom:17px}.chapter h2{margin:.16em 0 .12em}.chapter h2::after{margin-top:13px;height:4px;width:48px}.chapter-copy .story{margin-top:13px;padding-left:17px}.chapter-copy .story p{font-size:17px;line-height:1.58}
 .gallery{margin-top:0}.gallery-pagination{margin-top:10px}
 .lightbox-stage img{padding:7vh 0}
}

/* Version 4: reliable navigation, route explorer and image slider */
.menu-button{
  position:fixed;
  top:22px;
  right:clamp(18px,3vw,42px);
  z-index:340;
  color:#fff;
  background:rgba(23,27,24,.88);
  border-color:rgba(255,255,255,.55);
  box-shadow:0 8px 28px rgba(0,0,0,.18);
  backdrop-filter:blur(10px);
}
.menu-button:hover{background:var(--orange);border-color:var(--orange)}

.route-explorer{max-width:1380px;margin:auto;display:grid;grid-template-columns:minmax(300px,420px) 1fr;border:1px solid rgba(255,255,255,.14);min-height:690px;background:#1c211d}
.route-itinerary{display:flex;flex-direction:column;min-width:0;background:#151916;border-right:1px solid rgba(255,255,255,.12)}
.route-itinerary-head{padding:30px 30px 22px;border-bottom:1px solid rgba(255,255,255,.12)}
.route-itinerary-head span{display:block;color:var(--lime);font-size:10px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;margin-bottom:7px}
.route-itinerary-head strong{font-size:28px;letter-spacing:-.035em}
.route-itinerary-list{display:grid;grid-template-columns:1fr 1fr;align-content:start;padding:12px;gap:6px;overflow:auto}
.route-choice{border:1px solid transparent;background:transparent;color:rgba(238,233,221,.66);padding:12px 11px;display:grid;grid-template-columns:31px 1fr;gap:9px;align-items:center;text-align:left;cursor:pointer;border-radius:3px;transition:background .2s,color .2s,border-color .2s,transform .2s}
.route-choice b{width:29px;height:29px;border:1px solid currentColor;border-radius:50%;display:grid;place-items:center;font-size:9px}
.route-choice span{font-size:12px;font-weight:700;line-height:1.18}
.route-choice:hover{color:var(--cream);background:rgba(255,255,255,.055);transform:translateX(2px)}
.route-choice.active{color:var(--ink);background:var(--lime);border-color:var(--lime)}
.route-choice-key:not(.active){color:#fff;border-color:rgba(233,103,46,.5);background:rgba(233,103,46,.12)}
.route-visual{position:relative;min-height:690px;overflow:hidden;background:#202622}
.route-europe{position:absolute;inset:0;width:100%;height:100%}
.europe-shape{fill:#293129;stroke:#465047;stroke-width:1.5}
.route-main-line{fill:none;stroke:var(--orange);stroke-width:5;stroke-linecap:round;stroke-dasharray:4 13;filter:url(#softGlow)}
.route-base-dot{fill:var(--cream);stroke:#171b18;stroke-width:3}
.route-europe text{fill:rgba(238,233,221,.54);font-family:'DM Sans',Arial,sans-serif;font-size:14px;font-weight:700}
.route-locator{position:absolute;left:var(--x);top:var(--y);width:48px;height:48px;transform:translate(-50%,-50%);border-radius:50%;background:var(--orange);color:#fff;display:grid;place-items:center;border:3px solid var(--cream);box-shadow:0 0 0 10px rgba(233,103,46,.16),0 12px 35px rgba(0,0,0,.3);transition:left .48s cubic-bezier(.2,.8,.2,1),top .48s cubic-bezier(.2,.8,.2,1),transform .25s;z-index:3}
.route-locator span{font-size:11px;font-weight:900}
.route-locator.moving{transform:translate(-50%,-50%) scale(1.18)}
.route-detail{position:absolute;left:30px;bottom:30px;z-index:4;width:min(390px,calc(100% - 60px));padding:22px 24px;background:rgba(18,22,19,.87);border:1px solid rgba(255,255,255,.15);backdrop-filter:blur(12px)}
.route-detail-kicker{display:block;color:var(--lime);font-size:10px;font-weight:800;letter-spacing:.16em;text-transform:uppercase}
.route-detail h3{font-size:clamp(32px,4vw,54px);line-height:.95;letter-spacing:-.045em;margin:10px 0 12px}
.route-detail p{display:flex;gap:9px;flex-wrap:wrap;margin:0;color:rgba(238,233,221,.64);font-size:11px;letter-spacing:.1em;text-transform:uppercase}
.route-detail p span+span::before{content:'·';margin-right:9px}
.route-detail a{display:inline-flex;gap:14px;align-items:center;margin-top:18px;color:#fff;font-size:13px;font-weight:700}
.route-detail a b{color:var(--orange);font-size:22px}

.chapter{padding:clamp(48px,6vw,88px) 0;gap:clamp(20px,4vw,64px)}
.chapter-number{margin-bottom:15px}
.chapter-meta{margin-bottom:7px}
.chapter h2{margin:.12em 0 .06em;line-height:.93}
.chapter h2::after{margin-top:10px}
.chapter-copy .story{margin-top:9px;padding-left:18px}
.chapter-copy .story p{line-height:1.55}

.lightbox-stage{position:fixed;inset:0;overflow:hidden;background:rgba(8,10,9,.97);touch-action:pan-y;cursor:grab}
.lightbox-stage.dragging{cursor:grabbing}
.lightbox-track{position:absolute;inset:0;display:flex;width:100%;height:100%;transform:translate3d(0,0,0);transition:transform .46s cubic-bezier(.22,.72,.18,1);will-change:transform}
.lightbox-track.dragging{transition:none}
.lightbox-slide{flex:0 0 100%;width:100%;height:100%;object-fit:contain;padding:5vh 7vw;user-select:none;-webkit-user-drag:none;pointer-events:none}

@media(max-width:900px){
  .route-explorer{grid-template-columns:1fr;min-height:0}
  .route-itinerary{border-right:0;border-bottom:1px solid rgba(255,255,255,.12)}
  .route-itinerary-list{display:flex;overflow-x:auto;scrollbar-width:none;padding:10px 14px 14px}
  .route-itinerary-list::-webkit-scrollbar{display:none}
  .route-choice{flex:0 0 150px}
  .route-visual{min-height:610px}
}
@media(max-width:540px){
  .menu-button{top:16px;right:16px}
  .route-itinerary-head{padding:22px 20px 16px}.route-itinerary-head strong{font-size:24px}
  .route-choice{flex-basis:136px;padding:10px 9px}
  .route-visual{min-height:520px}
  .route-europe{transform:scale(1.08);transform-origin:center}
  .route-locator{width:40px;height:40px;box-shadow:0 0 0 7px rgba(233,103,46,.16)}
  .route-detail{left:15px;bottom:15px;width:calc(100% - 30px);padding:17px 18px}
  .route-detail h3{font-size:32px}
  .chapter{padding:44px 0;gap:9px}
  .chapter-number{margin-bottom:12px}
  .chapter-meta{margin-bottom:5px}
  .chapter h2{margin:.1em 0 .03em}
  .chapter h2::after{margin-top:8px}
  .chapter-copy .story{margin-top:7px;padding-left:14px}
  .gallery{margin-top:0}
  .gallery-pagination{margin-top:7px}
  .lightbox-slide{padding:6vh 0}
}


/* V5 fixes */

.nav{padding-right:calc(var(--pad) + 66px)}
.menu-button{position:fixed;top:20px;right:clamp(16px,4vw,34px);z-index:450;background:rgba(15,18,16,.35);backdrop-filter:blur(8px)}
.route-explorer{max-width:1380px;margin:auto;display:grid;grid-template-columns:minmax(300px,420px) 1fr;border:1px solid rgba(255,255,255,.16);min-height:690px;background:#151a17}
.route-visual.route-visual-map{position:relative;min-height:690px;overflow:hidden;background:#0e1311}
.route-map-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;filter:saturate(1.05) contrast(1.02)}
.route-map-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.route-path-shadow,.route-path-line{fill:none;stroke-linecap:round;stroke-linejoin:round}
.route-path-shadow{stroke:rgba(0,0,0,.45);stroke-width:1.8}
.route-path-line{stroke:var(--orange);stroke-width:.85;stroke-dasharray:1.05 1.8;filter:drop-shadow(0 0 10px rgba(233,103,46,.8))}
.route-map-pins{position:absolute;inset:0}
.route-pin,.route-locator{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%)}
.route-pin{width:28px;height:28px;border-radius:50%;border:1px solid rgba(255,255,255,.92);background:rgba(17,21,19,.72);color:#fff;display:grid;place-items:center;font-size:11px;font-weight:700;cursor:pointer;z-index:2;transition:transform .22s ease, background .22s ease, border-color .22s ease, box-shadow .22s ease}
.route-pin span{display:block;line-height:1}
.route-pin:hover,.route-pin:focus-visible,.route-pin.active{background:var(--orange);border-color:var(--orange);box-shadow:0 0 0 6px rgba(233,103,46,.22);transform:translate(-50%,-50%) scale(1.08)}
.route-pin.route-pin-key{width:34px;height:34px;font-size:12px}
.route-locator{z-index:3;width:44px;height:44px;border-radius:50%;background:var(--cream);color:var(--ink);display:grid;place-items:center;font-size:13px;font-weight:700;box-shadow:0 0 0 9px rgba(238,233,221,.22),0 12px 30px rgba(0,0,0,.28);transition:left .42s cubic-bezier(.2,.8,.2,1), top .42s cubic-bezier(.2,.8,.2,1), transform .28s ease}
.route-locator.moving{transform:translate(-50%,-50%) scale(1.08)}
.route-detail.route-detail-map{position:absolute;left:24px;bottom:24px;z-index:4;background:rgba(10,12,11,.78);color:white;padding:20px 22px 18px;width:min(330px,calc(100% - 48px));backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.14)}
.route-detail.route-detail-map h3{margin:.18em 0;font-size:34px;line-height:.94;letter-spacing:-.04em}
.route-detail.route-detail-map p{margin:0;display:flex;flex-direction:column;gap:4px;font-size:13px;line-height:1.45;color:rgba(255,255,255,.82)}
.route-detail.route-detail-map a{margin-top:12px;display:inline-flex;gap:8px;align-items:center;color:var(--lime);font-weight:700}
.route-choice.route-choice-key{border-color:rgba(199,216,115,.5);box-shadow:inset 0 0 0 1px rgba(199,216,115,.18)}
.chapter h2::after{display:none !important;content:none !important}
.chapter-copy .story{padding-left:0 !important;border-left:0 !important;margin-top:18px !important}
.chapter-copy .story p:first-child::first-letter{font-size:inherit !important;font-weight:inherit !important;color:inherit !important}
.chapter h2{margin:.18em 0 .14em !important}
.chapter-copy .story p{line-height:1.62 !important}
.chapter{gap:clamp(24px,5vw,72px) !important}
.lightbox-stage{position:fixed;inset:0;overflow:hidden;background:rgba(8,10,9,.97);touch-action:pan-y;cursor:grab}
.lightbox-stage.dragging{cursor:grabbing}
.lightbox-track{position:absolute;inset:0;display:flex;width:100%;height:100%;transform:translate3d(0,0,0);transition:transform .46s cubic-bezier(.22,.72,.18,1);will-change:transform}
.lightbox-track.dragging{transition:none}
.lightbox-slide{position:relative !important;flex:0 0 100%;width:100%;height:100%;display:block;object-fit:contain;padding:5vh 7vw;user-select:none;-webkit-user-drag:none;pointer-events:none}
.lightbox-stage img:not(.lightbox-slide){position:absolute;inset:0;width:100%;height:100%;object-fit:contain;padding:5vh 7vw;will-change:transform,opacity}
@media(max-width:1000px){
  .route-explorer{grid-template-columns:1fr}
  .route-visual.route-visual-map{min-height:620px}
}
@media(max-width:700px){
  .route-visual.route-visual-map{min-height:500px}
  .route-detail.route-detail-map{left:16px;bottom:16px;width:calc(100% - 32px)}
  .chapter-copy .story{margin-top:22px !important}
}
@media(max-width:540px){
  .nav{padding-right:22px}
  .menu-button{top:16px;right:16px}
  .route-map-image{object-position:center center}
  .route-pin{width:24px;height:24px;font-size:10px}
  .route-pin.route-pin-key{width:30px;height:30px}
  .route-locator{width:38px;height:38px;font-size:12px;box-shadow:0 0 0 7px rgba(238,233,221,.2),0 10px 24px rgba(0,0,0,.25)}
  .route-visual.route-visual-map{min-height:420px}
  .chapter h2{margin:.2em 0 .16em !important}
  .chapter-copy .story{margin-top:16px !important}
  .lightbox-slide{padding:7vh 0}
}


/* V6 refinements */

.route-summary{max-width:1380px;margin:auto;display:grid;grid-template-columns:minmax(320px,430px) 1fr;border:1px solid rgba(255,255,255,.16);min-height:690px;background:#151a17}
.route-summary-copy{padding:clamp(30px,5vw,60px);display:flex;flex-direction:column}
.route-legs{display:grid;gap:18px;margin-top:26px}
.route-leg{display:grid;grid-template-columns:58px 1fr;gap:18px;padding:20px 0;border-top:1px solid rgba(255,255,255,.12)}
.route-leg:first-child{border-top:0;padding-top:0}
.route-leg b{width:44px;height:44px;border-radius:50%;border:1px solid rgba(255,255,255,.26);display:grid;place-items:center;color:var(--lime);font-size:13px;letter-spacing:.08em}
.route-leg h3{margin:0 0 6px;font-size:34px;line-height:.95;letter-spacing:-.04em;color:#fff}
.route-leg p{margin:0;color:rgba(255,255,255,.78);line-height:1.58;font-size:15px}
.route-leg strong{color:#fff}
.route-visual.route-visual-map-static{position:relative;min-height:690px;overflow:hidden;background:#0e1311}
.route-map-dot{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%);width:15px;height:15px;border-radius:50%;background:#fff;box-shadow:0 0 0 5px rgba(255,255,255,.18);z-index:2}
.route-map-dot-end{width:19px;height:19px;background:var(--orange);box-shadow:0 0 0 8px rgba(233,103,46,.22)}
.route-map-label{position:absolute;left:var(--x);top:var(--y);transform:translate(16px,-12px);z-index:3;background:rgba(10,12,11,.72);color:white;padding:10px 12px;border:1px solid rgba(255,255,255,.16);backdrop-filter:blur(8px);max-width:200px}
.route-map-label span,.route-map-label em{display:block}
.route-map-label span{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.66)}
.route-map-label strong{display:block;margin-top:3px;font-size:20px;line-height:1.02;letter-spacing:-.03em}
.route-map-label em{margin-top:4px;font-style:normal;font-size:12px;color:rgba(255,255,255,.74)}
.route-map-label-end{transform:translate(-6px,18px)}
.chapter-copy .story{margin-top:28px !important}
@media(max-width:900px){.route-summary{grid-template-columns:1fr}.route-visual.route-visual-map-static{min-height:560px}}
@media(max-width:700px){.route-visual.route-visual-map-static{min-height:460px}.route-map-label{max-width:150px;padding:8px 10px}.route-map-label strong{font-size:16px}.chapter-copy .story{margin-top:24px !important}}
@media(max-width:540px){.route-summary-copy{padding:24px 20px}.route-legs{gap:12px;margin-top:18px}.route-leg{grid-template-columns:46px 1fr;gap:14px;padding:15px 0}.route-leg b{width:36px;height:36px;font-size:12px}.route-leg h3{font-size:28px}.route-leg p{font-size:14px}.route-visual.route-visual-map-static{min-height:400px}.route-map-dot{width:12px;height:12px}.route-map-dot-end{width:16px;height:16px}.route-map-label{font-size:11px;max-width:128px;padding:7px 8px}.route-map-label strong{font-size:14px}.route-map-label em{font-size:11px}.chapter-copy .story{margin-top:20px !important}}
#step-3 .gallery{min-height:0;max-width:680px;justify-self:end;align-self:start}
#step-3 .photo{min-height:0;aspect-ratio:3 / 4;max-height:720px}
#step-3 .photo img{object-fit:cover}
#step-4 .gallery{min-height:0}


/* V7 route + finale refinements */

.route-path-shadow{stroke:rgba(255,255,255,.35);stroke-width:1.55}
.route-path-line{stroke:#fff !important;stroke-width:.9;stroke-dasharray:1.05 1.8;filter:drop-shadow(0 0 8px rgba(255,255,255,.35))}
.route-map-dot,.route-map-dot-end{background:#fff !important;box-shadow:0 0 0 6px rgba(255,255,255,.18)}
.route-map-dot-end{width:19px;height:19px}
.route-map-label{background:rgba(10,12,11,.78)}
.route-map-label:nth-of-type(1){transform:translate(14px,-10px)}
.route-map-label:nth-of-type(2){transform:translate(16px,12px)}
.route-map-label:nth-of-type(3){transform:translate(16px,-10px)}
.route-map-label-end{transform:translate(14px,18px)}
.finale,.finale h2,.finale p,.finale span,.finale a,.finale strong{color:#fff !important}
footer, footer span{color:var(--cream)}
@media(max-width:700px){
  .route-map-label:nth-of-type(2){transform:translate(10px,10px)}
  .route-map-label-end{transform:translate(10px,14px)}
}


/* V8 exact route positioning */

.route-path-shadow{stroke:rgba(0,0,0,.45) !important;stroke-width:1.55;filter:none}
.route-path-line{stroke:#fff !important;stroke-width:.9;stroke-dasharray:1.05 1.8;filter:drop-shadow(0 0 8px rgba(255,255,255,.18))}


/* V9 corrected Salamanca / Saboia positions */
.route-map-label:nth-of-type(3){transform:translate(16px,-16px)}
.route-map-label-end{transform:translate(16px,-64px)}
@media(max-width:700px){
  .route-map-label:nth-of-type(3){transform:translate(10px,-12px)}
  .route-map-label-end{transform:translate(10px,-54px)}
}


/* V10 user-provided final route map */

.route-visual-map-final{background:#0e1311;padding:0;display:block}
.route-map-image-final{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;filter:none}
.route-visual-map-final .route-map-overlay,
.route-visual-map-final .route-map-label,
.route-visual-map-final .route-map-dot{display:none !important}


/* V11 text spacing and lightbox zoom */
.chapter-copy .story p {
    margin: 10px 0 20px 0;
}
.lightbox-slide{transform-origin:center center;transition:transform .22s ease;will-change:transform}
.lightbox-slide.zoomed{cursor:grab;pointer-events:auto}
.lightbox-stage.zoom-panning,.lightbox-stage.zoom-panning .lightbox-slide.zoomed{cursor:grabbing}
.zoom-controls{position:fixed;left:50%;bottom:44px;transform:translateX(-50%);z-index:4;display:flex;align-items:center;gap:1px;background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.16);backdrop-filter:blur(8px)}
.zoom-controls button{height:42px;min-width:44px;border:0;background:transparent;color:#fff;cursor:pointer;font-size:22px;padding:0 13px}
.zoom-controls button:hover,.zoom-controls button:focus-visible{background:rgba(255,255,255,.14)}
.zoom-controls .zoom-reset{min-width:70px;font-size:12px;letter-spacing:.08em}
.counter{bottom:17px}
@media(max-width:540px){
  .zoom-controls{bottom:46px}
  .zoom-controls button{height:40px;min-width:42px}
}


/* V12 mobile carousel snapping and focal points */
@media (max-width: 540px) {
    .gallery,
    .gallery-2,
    .gallery-3,
    .gallery-4,
    .gallery-5 {
        gap: 0;
        width: 100%;
        max-width: 100%;
        scroll-snap-type: x mandatory;
        scroll-snap-stop: always;
        scroll-padding-inline: 0;
        overscroll-behavior-inline: contain;
        -webkit-overflow-scrolling: touch;
    }

    .gallery .photo {
        flex: 0 0 100%;
        width: 100%;
        max-width: 100%;
        scroll-snap-align: start;
        scroll-snap-stop: always;
    }

    /* Keep both buses in view as well as the portrait crop allows. */
    #step-1 .photo:nth-child(1) img {
        object-position: 30% center;
    }

    #step-1 .photo:nth-child(2) img {
        object-position: 20% center;
    }

    /* Keep the Jeanne d'Arc statue prominent in the second Orléans photo. */
    #step-2 .photo:nth-child(2) img {
        object-position: 24% center;
    }

    /* Keep Gertjan visible at the front door. */
    #step-8 .photo:nth-child(1) img {
        object-position: 68% 22%;
    }
}


/* V13 carousel and focal-point corrections */

/* Explicit focal points for the carousel only. */
#step-1 .photo:nth-child(1) img { object-position: 18% center !important; }
#step-1 .photo:nth-child(2) img { object-position: 16% center !important; }
#step-2 .photo:nth-child(2) img { object-position: 12% center !important; }
#step-8 .photo:nth-child(1) img { object-position: center 22% !important; }

/* The lightbox must keep the complete image and ignore carousel focal points. */
.lightbox-slide { object-position: center center !important; }
.lightbox-stage { touch-action: none !important; }

@media (max-width: 540px) {
  .gallery,
  .gallery-2,
  .gallery-3,
  .gallery-4,
  .gallery-5 {
    display: flex !important;
    width: 100% !important;
    gap: 0 !important;
    overflow-x: auto !important;
    overflow-y: hidden !important;
    scroll-snap-type: x mandatory !important;
    scroll-behavior: smooth;
    scrollbar-width: none;
    overscroll-behavior-x: contain;
  }

  .gallery::-webkit-scrollbar { display: none; }

  .gallery .photo {
    flex: 0 0 100% !important;
    width: 100% !important;
    min-width: 100% !important;
    max-width: 100% !important;
    scroll-snap-align: start !important;
    scroll-snap-stop: always !important;
  }
}


/* V14 carousel snap and explicit carousel focal points */
@media (max-width: 540px) {
  .gallery,
  .gallery-2,
  .gallery-3,
  .gallery-4,
  .gallery-5 {
    display: flex !important;
    flex-wrap: nowrap !important;
    column-gap: 0 !important;
    width: 100% !important;
    overflow-x: auto !important;
    overflow-y: hidden !important;
    scroll-snap-type: x mandatory !important;
    scroll-padding: 0 !important;
    overscroll-behavior-x: contain !important;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }

  .gallery::-webkit-scrollbar { display: none; }

  .gallery > .photo {
    flex: 0 0 100% !important;
    width: 100% !important;
    min-width: 100% !important;
    max-width: 100% !important;
    margin: 0 !important;
    scroll-snap-align: start !important;
    scroll-snap-stop: always !important;
  }

  .gallery > .photo > img {
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
  }

  .gallery img.focus-step1-photo1 { object-position: 22% 50% !important; }
  .gallery img.focus-step1-photo2 { object-position: 18% 50% !important; }
  .gallery img.focus-step2-photo2 { object-position: 25% 50% !important; }
  .gallery img.focus-step8-photo1 { object-position: 58% 18% !important; }
}

/* Never apply carousel crop focus to the overlay. */
.lightbox-slide { object-position: 50% 50% !important; }


/* V15 stronger motion design */

:root {
  --ease-cinematic: cubic-bezier(.16,1,.3,1);
  --ease-snap: cubic-bezier(.2,.8,.2,1);
}

/* Hero entrance */
.hero::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background: #101411;
  transform-origin: top;
  transform: scaleY(1);
}
body.is-ready .hero::after {
  animation: HeroCurtain 1.15s var(--ease-cinematic) .08s forwards;
}
body.is-ready .hero-content > *,
body.is-ready .hero-stats > div,
body.is-ready .nav {
  opacity: 0;
  transform: translateY(34px);
  animation: HeroElementIn .9s var(--ease-cinematic) forwards;
}
body.is-ready .nav { animation-delay: .45s; }
body.is-ready .hero-content .kicker { animation-delay: .58s; }
body.is-ready .hero-content h1 { animation-delay: .68s; }
body.is-ready .hero-content .intro { animation-delay: .8s; }
body.is-ready .hero-content .scroll-cue { animation-delay: .92s; }
body.is-ready .hero-stats > div:nth-child(1) { animation-delay: .82s; }
body.is-ready .hero-stats > div:nth-child(2) { animation-delay: .9s; }
body.is-ready .hero-stats > div:nth-child(3) { animation-delay: .98s; }
body.is-ready .hero-stats > div:nth-child(4) { animation-delay: 1.06s; }

@keyframes HeroCurtain {
  0% { transform: scaleY(1); }
  100% { transform: scaleY(0); }
}
@keyframes HeroElementIn {
  0% { opacity: 0; transform: translateY(34px); }
  100% { opacity: 1; transform: translateY(0); }
}

/* More cinematic section reveals */
.reveal {
  opacity: 0;
  transform: translate3d(0,70px,0) scale(.985);
  filter: blur(8px);
  transition:
    opacity .95s var(--ease-cinematic),
    transform 1.05s var(--ease-cinematic),
    filter .8s ease;
}
.reveal.visible {
  opacity: 1;
  transform: translate3d(0,0,0) scale(1);
  filter: blur(0);
}

.chapter .chapter-copy,
.chapter .gallery,
.chapter .gallery-pagination {
  opacity: 0;
  transform: translate3d(0,42px,0);
  transition: opacity .8s var(--ease-cinematic), transform .95s var(--ease-cinematic);
}
.chapter.visible .chapter-copy {
  opacity: 1;
  transform: translate3d(0,0,0);
  transition-delay: .08s;
}
.chapter.visible .gallery {
  opacity: 1;
  transform: translate3d(0,0,0);
  transition-delay: .2s;
}
.chapter.visible .gallery-pagination {
  opacity: 1;
  transform: translate3d(0,0,0);
  transition-delay: .34s;
}
.chapter:nth-child(even) .chapter-copy { transform: translate3d(52px,34px,0); }
.chapter:nth-child(even) .gallery { transform: translate3d(-52px,34px,0); }
.chapter:nth-child(odd) .chapter-copy { transform: translate3d(-52px,34px,0); }
.chapter:nth-child(odd) .gallery { transform: translate3d(52px,34px,0); }
.chapter.visible .chapter-copy,
.chapter.visible .gallery { transform: translate3d(0,0,0); }

/* Images feel more alive */
.photo {
  position: relative;
  isolation: isolate;
  box-shadow: 0 18px 50px rgba(20,24,21,.12);
  transition: transform .55s var(--ease-cinematic), box-shadow .55s ease;
}
.photo::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  background: linear-gradient(135deg,rgba(255,255,255,.18),transparent 38%,rgba(0,0,0,.14));
  opacity: 0;
  transition: opacity .45s ease;
}
.photo:hover {
  transform: translateY(-7px) scale(1.012);
  box-shadow: 0 28px 70px rgba(20,24,21,.22);
}
.photo:hover::after { opacity: 1; }
.photo img {
  transform: scale(1.018);
  transition: transform 1s var(--ease-cinematic), filter .55s ease;
}
.photo:hover img { transform: scale(1.075); }

.route-map-image-final {
  animation: RouteMapDrift 14s ease-in-out infinite alternate;
  transform-origin: 50% 50%;
}
@keyframes RouteMapDrift {
  0% { transform: scale(1.015) translate3d(-.4%,0,0); }
  100% { transform: scale(1.055) translate3d(.8%,-.5%,0); }
}

.route-leg {
  transition: transform .35s var(--ease-cinematic), background .35s ease, padding .35s ease;
}
.route-leg:hover {
  transform: translateX(10px);
  background: rgba(255,255,255,.035);
  padding-left: 12px;
  padding-right: 12px;
}
.route-leg b { transition: transform .35s var(--ease-cinematic), background .35s ease, color .35s ease; }
.route-leg:hover b { transform: rotate(-8deg) scale(1.12); background: var(--lime); color: var(--ink); }

.finale img {
  transform: scale(1.04);
  transition: transform 1.4s var(--ease-cinematic);
}
.finale.visible img { transform: scale(1); }

/* Stronger menu motion */
.menu-panel { transition-duration: .56s; transition-timing-function: var(--ease-cinematic); }
.menu-panel li {
  opacity: 0;
  transform: translateX(28px);
  transition: opacity .45s ease, transform .55s var(--ease-cinematic);
}
.chapter-menu.open .menu-panel li { opacity: 1; transform: translateX(0); }
.chapter-menu.open .menu-panel li:nth-child(1) { transition-delay: .08s; }
.chapter-menu.open .menu-panel li:nth-child(2) { transition-delay: .11s; }
.chapter-menu.open .menu-panel li:nth-child(3) { transition-delay: .14s; }
.chapter-menu.open .menu-panel li:nth-child(4) { transition-delay: .17s; }
.chapter-menu.open .menu-panel li:nth-child(5) { transition-delay: .20s; }
.chapter-menu.open .menu-panel li:nth-child(6) { transition-delay: .23s; }
.chapter-menu.open .menu-panel li:nth-child(7) { transition-delay: .26s; }
.chapter-menu.open .menu-panel li:nth-child(8) { transition-delay: .29s; }
.chapter-menu.open .menu-panel li:nth-child(9) { transition-delay: .32s; }
.chapter-menu.open .menu-panel li:nth-child(10) { transition-delay: .35s; }
.chapter-menu.open .menu-panel li:nth-child(11) { transition-delay: .38s; }
.chapter-menu.open .menu-panel li:nth-child(12) { transition-delay: .41s; }

/* Lightbox entrance and controls */
dialog#lightbox[open] {
  animation: LightboxBackdropIn .42s ease both;
}
dialog#lightbox[open]::backdrop {
  animation: LightboxBackdropIn .42s ease both;
}
dialog#lightbox.is-opening .lightbox-stage {
  animation: LightboxStageIn .62s var(--ease-cinematic) both;
}
dialog#lightbox.is-opening .lightbox-slide {
  animation: LightboxImageIn .72s var(--ease-cinematic) both;
}
dialog#lightbox.is-opening .close,
dialog#lightbox.is-opening .prev,
dialog#lightbox.is-opening .next,
dialog#lightbox.is-opening .zoom-controls,
dialog#lightbox.is-opening .counter {
  animation: LightboxControlsIn .55s var(--ease-cinematic) .18s both;
}
@keyframes LightboxBackdropIn {
  from { opacity: 0; }
  to { opacity: 1; }
}
@keyframes LightboxStageIn {
  from { opacity: 0; transform: scale(.94); }
  to { opacity: 1; transform: scale(1); }
}
@keyframes LightboxImageIn {
  from { opacity: 0; transform: scale(.78) rotate(-1.2deg); filter: blur(16px); }
  to { opacity: 1; transform: scale(1) rotate(0); filter: blur(0); }
}
@keyframes LightboxControlsIn {
  from { opacity: 0; transform: translateY(18px) scale(.92); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

.lightbox-track {
  transition-duration: .62s !important;
  transition-timing-function: var(--ease-cinematic) !important;
}
.prev,.next,.close,.zoom-controls {
  transition: transform .3s var(--ease-cinematic), background .3s ease, opacity .3s ease;
}
.prev:hover,.next:hover,.close:hover { transform: scale(1.1); background: rgba(255,255,255,.22); }
.prev:hover { transform: translateY(-50%) translateX(-4px) scale(1.08); }
.next:hover { transform: translateY(-50%) translateX(4px) scale(1.08); }
.zoom-controls:hover { transform: translateX(-50%) translateY(-4px); }

@media (max-width: 540px) {
  .chapter:nth-child(even) .chapter-copy,
  .chapter:nth-child(even) .gallery,
  .chapter:nth-child(odd) .chapter-copy,
  .chapter:nth-child(odd) .gallery {
    transform: translate3d(0,40px,0);
  }
  .chapter.visible .chapter-copy,
  .chapter.visible .gallery { transform: translate3d(0,0,0); }
  .photo:hover { transform: none; box-shadow: 0 18px 50px rgba(20,24,21,.12); }
  .photo:hover img { transform: scale(1.018); }
}

@media (prefers-reduced-motion: reduce) {
  .hero::after,
  body.is-ready .hero-content > *,
  body.is-ready .hero-stats > div,
  body.is-ready .nav,
  .route-map-image-final,
  dialog#lightbox[open],
  dialog#lightbox[open]::backdrop,
  dialog#lightbox.is-opening .lightbox-stage,
  dialog#lightbox.is-opening .lightbox-slide,
  dialog#lightbox.is-opening .close,
  dialog#lightbox.is-opening .prev,
  dialog#lightbox.is-opening .next,
  dialog#lightbox.is-opening .zoom-controls,
  dialog#lightbox.is-opening .counter {
    animation: none !important;
  }
}


/* V16 directional repeatable motion and rounded media */

:root {
  --media-radius: clamp(14px, 1.7vw, 24px);
}

/* Every reveal now travels along one axis only. */
.reveal {
  opacity: 0;
  transform: translate3d(0, 64px, 0);
  filter: blur(7px);
  transition:
    opacity .86s var(--ease-cinematic),
    transform 1s var(--ease-cinematic),
    filter .72s ease;
}
.reveal.visible {
  opacity: 1;
  transform: translate3d(0, 0, 0);
  filter: blur(0);
}

/* Chapters alternate horizontal directions, never diagonally. */
.chapter .chapter-copy,
.chapter .gallery,
.chapter .gallery-pagination {
  opacity: 0;
  transition:
    opacity .78s var(--ease-cinematic),
    transform .96s var(--ease-cinematic);
}
.chapter:nth-child(odd) .chapter-copy {
  transform: translate3d(-64px, 0, 0);
}
.chapter:nth-child(odd) .gallery,
.chapter:nth-child(odd) .gallery-pagination {
  transform: translate3d(64px, 0, 0);
}
.chapter:nth-child(even) .chapter-copy {
  transform: translate3d(64px, 0, 0);
}
.chapter:nth-child(even) .gallery,
.chapter:nth-child(even) .gallery-pagination {
  transform: translate3d(-64px, 0, 0);
}
.chapter.visible .chapter-copy,
.chapter.visible .gallery,
.chapter.visible .gallery-pagination {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}
.chapter.visible .chapter-copy { transition-delay: .06s; }
.chapter.visible .gallery { transition-delay: .18s; }
.chapter.visible .gallery-pagination { transition-delay: .3s; }

/* Rounded corners in every normal-page gallery. */
.photo,
.photo::after,
.photo img {
  border-radius: var(--media-radius);
}
.photo {
  overflow: hidden;
}

/* Rounded corners around the actual lightbox image, not the viewport. */
.lightbox-track {
  align-items: stretch;
}
.lightbox-slide-frame {
  position: relative;
  flex: 0 0 100%;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 5vh 7vw;
  overflow: hidden;
}
.lightbox-slide {
  position: relative !important;
  inset: auto !important;
  width: auto !important;
  height: auto !important;
  max-width: 100%;
  max-height: 100%;
  padding: 0 !important;
  object-fit: contain;
  border-radius: var(--media-radius);
  box-shadow: 0 28px 80px rgba(0,0,0,.38);
}

/* Lightbox entrance: straight upward motion only. */
dialog#lightbox.is-opening .lightbox-stage {
  animation: LightboxStageInV16 .58s var(--ease-cinematic) both;
}
dialog#lightbox.is-opening .lightbox-slide {
  animation: LightboxImageInV16 .68s var(--ease-cinematic) both;
}
@keyframes LightboxStageInV16 {
  from { opacity: 0; }
  to { opacity: 1; }
}
@keyframes LightboxImageInV16 {
  from { opacity: 0; transform: translate3d(0, 54px, 0) scale(.94); filter: blur(12px); }
  to { opacity: 1; transform: translate3d(0, 0, 0) scale(1); filter: blur(0); }
}

/* Controls only fade in, so their fixed positioning never jumps. */
dialog#lightbox.is-opening .close,
dialog#lightbox.is-opening .prev,
dialog#lightbox.is-opening .next,
dialog#lightbox.is-opening .zoom-controls,
dialog#lightbox.is-opening .counter {
  animation: LightboxControlsFadeV16 .42s ease .16s both;
}
@keyframes LightboxControlsFadeV16 {
  from { opacity: 0; }
  to { opacity: 1; }
}
.prev,
.next {
  top: 50%;
  margin: 0;
  transform: translateY(-50%);
}
.prev:hover {
  transform: translateY(-50%) translateX(-4px) scale(1.08);
}
.next:hover {
  transform: translateY(-50%) translateX(4px) scale(1.08);
}

@media (max-width: 540px) {
  .chapter:nth-child(odd) .chapter-copy,
  .chapter:nth-child(odd) .gallery,
  .chapter:nth-child(odd) .gallery-pagination,
  .chapter:nth-child(even) .chapter-copy,
  .chapter:nth-child(even) .gallery,
  .chapter:nth-child(even) .gallery-pagination {
    transform: translate3d(0, 44px, 0);
  }
  .chapter.visible .chapter-copy,
  .chapter.visible .gallery,
  .chapter.visible .gallery-pagination {
    transform: translate3d(0, 0, 0);
  }
  .lightbox-slide-frame {
    padding: 7vh 12px 9vh;
  }
}

@media (prefers-reduced-motion: reduce) {
  .reveal,
  .chapter .chapter-copy,
  .chapter .gallery,
  .chapter .gallery-pagination {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
  }
}


/* V17 calmer reset, gallery group hover and consistent lightbox rounding */

/* Force clipping on every image shape, including tall portrait images. */
.lightbox-slide {
  border-radius: var(--media-radius) !important;
  clip-path: inset(0 round var(--media-radius));
  -webkit-clip-path: inset(0 round var(--media-radius));
  overflow: hidden;
}

/* Desktop gallery interaction: the selected image grows slightly while its siblings recede. */
@media (hover: hover) and (pointer: fine) and (min-width: 541px) {
  .gallery .photo {
    transform: scale(1);
    transform-origin: center center;
    transition:
      transform .5s var(--ease-cinematic),
      box-shadow .5s ease,
      opacity .42s ease,
      filter .42s ease;
  }
  .gallery:hover .photo {
    transform: scale(.985);
    opacity: .94;
  }
  .gallery:hover .photo:hover {
    z-index: 3;
    transform: scale(1.025);
    opacity: 1;
    box-shadow: 0 28px 70px rgba(20,24,21,.2);
  }
  .gallery:hover .photo:not(:hover) img {
    filter: saturate(.94) brightness(.985);
  }
  .gallery .photo:hover img {
    transform: scale(1.055);
    filter: saturate(1.06);
  }
}


/* V18 fixed navigation alignment, shared close position and reliable portrait rounding */
:root {
  --top-control-size: 48px;
  --top-control-top: 20px;
  --top-control-right: clamp(16px, 4vw, 34px);
  --top-control-gap: 24px;
}

/* Keep the chapter trigger permanently available and reserve its space in the header. */
.menu-button {
  position: fixed !important;
  top: var(--top-control-top) !important;
  right: var(--top-control-right) !important;
  width: var(--top-control-size);
  height: var(--top-control-size);
  z-index: 520 !important;
  margin: 0 !important;
}

.nav {
  align-items: flex-start;
  padding-top: var(--top-control-top);
  padding-right: calc(var(--pad) + var(--top-control-size) + 118px);
}
.nav-links {
  position: fixed;
  top: var(--top-control-top);
  right: calc(var(--top-control-right) + var(--top-control-size) + var(--top-control-gap));
  z-index: 510;
  min-height: var(--top-control-size);
  display: flex;
  align-items: center;
  gap: 26px;
  margin: 0;
}
.nav-links > a {
  display: inline-flex;
  align-items: center;
  height: var(--top-control-size);
  line-height: 1;
}

/* Every close button occupies exactly the same viewport position and size. */
.close,
.menu-close {
  position: fixed !important;
  top: var(--top-control-top) !important;
  right: var(--top-control-right) !important;
  width: var(--top-control-size) !important;
  height: var(--top-control-size) !important;
  margin: 0 !important;
  padding: 0 !important;
  border-radius: 50% !important;
  display: grid !important;
  place-items: center !important;
  line-height: 1 !important;
  font-size: 29px !important;
  transform: none !important;
}
.close {
  z-index: 620 !important;
}
.menu-close {
  z-index: 530 !important;
  background: var(--paper);
}
.menu-head {
  padding-right: calc(34px + var(--top-control-size) + 14px);
}
.close:hover,
.menu-close:hover {
  transform: none !important;
}

/* A real clipping shell gives landscape and portrait images identical rounded corners. */
.lightbox-image-shell {
  position: relative;
  flex: 0 0 auto;
  overflow: hidden;
  border-radius: var(--media-radius);
  box-shadow: 0 28px 80px rgba(0,0,0,.38);
  background: #111;
  transform: translateZ(0);
  -webkit-mask-image: -webkit-radial-gradient(white, black);
}
.lightbox-image-shell .lightbox-slide {
  display: block !important;
  width: 100% !important;
  height: 100% !important;
  max-width: none !important;
  max-height: none !important;
  padding: 0 !important;
  margin: 0 !important;
  border-radius: 0 !important;
  clip-path: none !important;
  -webkit-clip-path: none !important;
  box-shadow: none !important;
  object-fit: contain;
}

@media (max-width: 850px) {
  .nav {
    padding-right: var(--pad);
  }
  .nav-links {
    right: calc(var(--top-control-right) + var(--top-control-size));
  }
  .nav-links > a {
    display: none;
  }
}

@media (max-width: 540px) {
  :root {
    --top-control-top: 16px;
    --top-control-right: 16px;
    --top-control-size: 44px;
  }
  .menu-head {
    padding-right: 78px;
  }
}


/* V19 moments terminology + free full-window lightbox zoom */
.lightbox-image-shell {
  overflow: visible !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
  transform: none !important;
  -webkit-mask-image: none !important;
}
.lightbox-image-shell .lightbox-slide {
  border-radius: var(--media-radius) !important;
  clip-path: inset(0 round var(--media-radius)) !important;
  -webkit-clip-path: inset(0 round var(--media-radius)) !important;
  box-shadow: 0 28px 80px rgba(0,0,0,.38) !important;
  overflow: visible !important;
  will-change: transform;
}
.lightbox-slide-frame {
  overflow: hidden;
}


/* V20 stable fixed navigation and exact vertical control alignment */
:root {
  --top-control-top: 28px;
  --top-control-right: clamp(16px, 4vw, 34px);
  --top-control-size: 48px;
  --top-control-gap: 24px;
}

/* Never transform the navigation container: transformed ancestors break fixed descendants. */
body.is-ready .nav {
  opacity: 1 !important;
  transform: none !important;
  animation: none !important;
}

/* Animate only visual children, not their positioning containers. */
body.is-ready .nav .brand,
body.is-ready .nav-links > a {
  opacity: 0;
  transform: translateY(24px);
  animation: HeroElementIn .9s var(--ease-cinematic) .45s forwards;
}
body.is-ready .nav-links > a:nth-child(2) {
  animation-delay: .51s;
}

.nav {
  position: relative;
  z-index: 2;
  align-items: flex-start !important;
  padding-top: var(--top-control-top) !important;
  padding-right: calc(var(--pad) + var(--top-control-size) + 130px) !important;
}
.brand {
  display: block;
  line-height: 1.42;
  margin: 0;
}

.nav-links {
  position: fixed !important;
  top: var(--top-control-top) !important;
  right: calc(var(--top-control-right) + var(--top-control-size) + var(--top-control-gap)) !important;
  height: var(--top-control-size) !important;
  min-height: var(--top-control-size) !important;
  display: flex !important;
  align-items: center !important;
  gap: 26px;
  margin: 0 !important;
  padding: 0 !important;
  z-index: 510 !important;
  transform: none !important;
}
.nav-links > a {
  height: var(--top-control-size) !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center;
  line-height: 1 !important;
  margin: 0 !important;
  padding: 0 !important;
}

.menu-button {
  position: fixed !important;
  top: var(--top-control-top) !important;
  right: var(--top-control-right) !important;
  width: var(--top-control-size) !important;
  height: var(--top-control-size) !important;
  margin: 0 !important;
  z-index: 520 !important;
  transform: none !important;
}

/* Lightbox and side panel close controls share the exact same viewport coordinates. */
.close,
.menu-close {
  top: var(--top-control-top) !important;
  right: var(--top-control-right) !important;
  width: var(--top-control-size) !important;
  height: var(--top-control-size) !important;
  margin: 0 !important;
  padding: 0 !important;
  display: grid !important;
  place-items: center !important;
  line-height: 1 !important;
  transform: none !important;
}
.close {
  position: fixed !important;
}
.menu-close {
  position: fixed !important;
}

/* Keep the panel heading clear of the fixed close control. */
.menu-head {
  align-items: flex-start !important;
  padding-top: 42px !important;
  padding-right: calc(34px + var(--top-control-size) + 18px) !important;
}

@media (max-width: 850px) {
  .nav {
    padding-right: var(--pad) !important;
  }
  .nav-links {
    right: calc(var(--top-control-right) + var(--top-control-size)) !important;
  }
  .nav-links > a {
    display: none !important;
  }
}

@media (max-width: 540px) {
  :root {
    --top-control-top: 18px;
    --top-control-right: 16px;
    --top-control-size: 44px;
  }
  .menu-head {
    padding-top: 32px !important;
    padding-right: 78px !important;
  }
}
