@font-face { font-family: "Cormorant Garamond"; src: url("../fonts/cormorant-300.ttf") format("truetype"); font-style: normal; font-weight: 300; font-display: swap; }
@font-face { font-family: "Cormorant Garamond"; src: url("../fonts/cormorant-400.ttf") format("truetype"); font-style: normal; font-weight: 400; font-display: swap; }
@font-face { font-family: "Cormorant Garamond"; src: url("../fonts/cormorant-600.ttf") format("truetype"); font-style: normal; font-weight: 600; font-display: swap; }
@font-face { font-family: "Cormorant Garamond"; src: url("../fonts/cormorant-italic-300.ttf") format("truetype"); font-style: italic; font-weight: 300; font-display: swap; }
@font-face { font-family: "Cormorant Garamond"; src: url("../fonts/cormorant-italic-400.ttf") format("truetype"); font-style: italic; font-weight: 400; font-display: swap; }
@font-face { font-family: Manrope; src: url("../fonts/manrope-400.ttf") format("truetype"); font-style: normal; font-weight: 400; font-display: swap; }
@font-face { font-family: Manrope; src: url("../fonts/manrope-500.ttf") format("truetype"); font-style: normal; font-weight: 500; font-display: swap; }
@font-face { font-family: Manrope; src: url("../fonts/manrope-600.ttf") format("truetype"); font-style: normal; font-weight: 600; font-display: swap; }

:root {
  --cream: #f4efe8;
  --paper: #faf8f4;
  --champagne: #d7c3a0;
  --gold: #b89a61;
  --brown: #392f29;
  --ink: #272727;
  --muted: #716861;
  --serif: "Cormorant Garamond", "Bodoni 72", Didot, Georgia, serif;
  --sans: Manrope, Montserrat, "Segoe UI", sans-serif;
  --radius: 1.5rem;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 5rem; }
body { margin: 0; color: var(--ink); background: var(--paper); font-family: var(--sans); font-size: 1rem; line-height: 1.65; overflow-x: hidden; }
body.menu-open { overflow: hidden; }
img { display: block; max-width: 100%; }
a { color: inherit; }
button, input, textarea { font: inherit; }
button { cursor: pointer; }
address { font-style: normal; }
.skip-link { position: fixed; top: .5rem; left: .5rem; z-index: 1000; padding: .7rem 1rem; background: white; transform: translateY(-150%); }
.skip-link:focus { transform: none; }
.visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0,0,0,0); }
:focus-visible { outline: 2px solid var(--gold); outline-offset: 4px; }

.site-header { position: fixed; inset: 0 0 auto; z-index: 100; height: 8rem; display: flex; align-items: center; justify-content: space-between; padding: 0 clamp(1.25rem,5vw,5rem); color: white; transition: height .5s ease, background .5s ease, box-shadow .5s ease; }
.site-header.scrolled { height: 5.4rem; background: rgba(38,31,27,.76); backdrop-filter: blur(16px); box-shadow: 0 10px 40px rgba(0,0,0,.12); }
.brand { position: absolute; top: 25px; left: clamp(1.25rem,5vw,5rem); display: block; width: 9rem; border-radius: 50%; overflow: hidden; filter: drop-shadow(0 4px 12px rgba(0,0,0,.24)); transition: width .5s ease, top .5s ease; }
.brand img { width: 100%; border-radius: 50%; }
.scrolled .brand { top: 12px; width: 6rem; }
.desktop-nav { display: flex; gap: clamp(1.5rem,3vw,3.2rem); margin-left: auto; }
.desktop-nav a { position: relative; color: white; text-decoration: none; text-transform: uppercase; font-size: 22px; font-weight: 500; letter-spacing: .12em; }
.desktop-nav a::after { content: ""; position: absolute; left: 0; right: 100%; bottom: -.45rem; height: 1px; background: var(--champagne); transition: right .35s ease; }
.desktop-nav a:hover::after, .desktop-nav a:focus-visible::after { right: 0; }
.menu-toggle { display: none; width: 3rem; height: 3rem; margin-left: auto; border: 0; background: transparent; position: relative; z-index: 102; }
.menu-toggle span { position: absolute; left: .55rem; width: 1.9rem; height: 1px; background: white; transition: transform .35s ease, top .35s ease; }
.menu-toggle span:first-child { top: 1.15rem; }.menu-toggle span:last-child { top: 1.8rem; }
.menu-toggle[aria-expanded="true"] span:first-child { top: 1.5rem; transform: rotate(45deg); }.menu-toggle[aria-expanded="true"] span:last-child { top: 1.5rem; transform: rotate(-45deg); }
.mobile-menu { position: fixed; inset: 0; z-index: 99; display: grid; place-content: center; text-align: center; background: rgba(45,36,31,.97); color: white; opacity: 0; visibility: hidden; transition: opacity .45s ease, visibility .45s; }
.mobile-menu.open { opacity: 1; visibility: visible; }.mobile-menu img { width: 8rem; margin: 0 auto 2rem; }
.mobile-menu nav { display: grid; gap: 1rem; }.mobile-menu a { font: 300 clamp(2.3rem,10vw,4rem)/1.2 var(--serif); text-decoration: none; }

.hero { min-height: 100svh; position: relative; display: grid; place-items: center; overflow: hidden; color: white; }
.hero-image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 42%; transform: scale(1.025); animation: hero-in 2.2s cubic-bezier(.2,.8,.2,1) forwards; }
@keyframes hero-in { to { transform: scale(1); } }
.hero-overlay { position: absolute; inset: 0; background: linear-gradient(180deg,rgba(17,13,10,.32),rgba(17,13,10,.13) 45%,rgba(17,13,10,.52)); }
.hero-content { position: relative; z-index: 1; text-align: center; padding: 8rem 1rem 5rem; transform: translateY(75px); text-shadow: 0 2px 24px rgba(0,0,0,.22); }
.eyebrow { margin: 0 0 .8rem; color: var(--gold); font-size: .75rem; font-weight: 600; text-transform: uppercase; letter-spacing: .3em; }
.hero-kicker { color: white; letter-spacing: .5em; }
.hero h1 { margin: .65rem 0 .55rem; font: 300 italic clamp(4rem,10vw,9rem)/.86 var(--serif); letter-spacing: -.045em; }
.hero h1 span { font-weight: 300; }.hero-date { margin: 2rem 0 0; font-size: clamp(.8rem,1.2vw,1.05rem); text-transform: uppercase; letter-spacing: .34em; }
.scroll-cue { position: absolute; z-index: 2; bottom: 2rem; left: 50%; transform: translateX(-50%); display: grid; justify-items: center; gap: .6rem; color: white; text-decoration: none; text-transform: uppercase; font-size: .62rem; letter-spacing: .28em; }
.scroll-cue i { width: 1px; height: 2.4rem; overflow: hidden; background: rgba(255,255,255,.28); }
.scroll-cue i::before { content: ""; display: block; width: 1px; height: 1.2rem; background: white; animation: scroll-line 1.8s infinite ease-in-out; }
@keyframes scroll-line { 0%{ transform: translateY(-120%)} 100%{ transform: translateY(220%)} }

.section { padding: clamp(6rem,12vw,11rem) max(1.25rem,calc((100vw - 1320px)/2)); }
.section-heading { max-width: 880px; margin: 0 auto clamp(4rem,8vw,7rem); text-align: center; }
.section-heading h2 { margin: 0; color: var(--brown); font: 300 clamp(3rem,7vw,6rem)/.95 var(--serif); letter-spacing: -.035em; }
.section-heading h2 span { color: var(--gold); font-size: .55em; vertical-align: .18em; }
.section-heading > p:last-child:not(.eyebrow) { max-width: 650px; margin: 1.5rem auto 0; color: var(--muted); }
.timeline-section { background: var(--cream); }
.timeline { position: relative; max-width: 1120px; margin: auto; padding: 1rem 0; }
.timeline-line { position: absolute; left: 31%; top: 0; bottom: 0; width: 1px; background: rgba(184,154,97,.25); }
.timeline-line span { display: block; width: 1px; height: var(--line-progress,0%); background: var(--gold); transition: height .2s linear; }
.timeline-item { display: grid; grid-template-columns: 28% 6% 1fr; align-items: start; min-height: 21rem; gap: 0 2rem; }
.timeline-item time { justify-self: end; font: 300 clamp(3.5rem,7vw,6.6rem)/.82 var(--serif); color: var(--brown); letter-spacing: -.055em; }
.timeline-icon { position: relative; z-index: 1; justify-self: center; width: 3.7rem; height: 3.7rem; display: grid; place-items: center; border: 1px solid var(--champagne); border-radius: 50%; background: var(--cream); color: var(--gold); font-size: 1.45rem; }
.timeline-item h3 { margin: 0 0 .7rem; font: 400 clamp(1.8rem,3.2vw,3rem)/1.05 var(--serif); color: var(--brown); }
.timeline-item p:not(.eyebrow), .timeline-item address { margin: .25rem 0; color: var(--muted); max-width: 34rem; }
.reveal { opacity: 0; transform: translateY(2rem); transition: opacity .9s ease, transform .9s cubic-bezier(.2,.8,.2,1); }.reveal.visible { opacity: 1; transform: none; }

.locations-section { background: var(--paper); }
.location-intro { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(3rem,8vw,9rem); max-width: 1120px; margin: 0 auto 7rem; }
.location-intro article:nth-child(2) { padding-top: 6rem; }
.location-intro span { color: var(--gold); text-transform: uppercase; font-size: .72rem; letter-spacing: .22em; }
.location-intro h3 { margin: 1.2rem 0; color: var(--brown); font: 300 clamp(2.7rem,5vw,4.8rem)/.93 var(--serif); }
.location-intro p { color: var(--muted); max-width: 28rem; }.location-intro address { margin: 1.5rem 0 .6rem; }.location-intro small { color: var(--muted); }
.text-link { display: inline-block; margin-top: 1.4rem; text-decoration: none; text-transform: uppercase; color: var(--brown); font-size: .72rem; letter-spacing: .2em; border-bottom: 1px solid var(--gold); }
.editorial-gallery { display: grid; grid-template-columns: 1.55fr 1fr; grid-template-rows: 1fr 1fr; gap: 1.25rem; }
.gallery-item { border: 0; border-radius: var(--radius); overflow: hidden; padding: 0; background: #ddd; min-height: 18rem; }.gallery-main { grid-row: 1 / 3; min-height: 42rem; }
.gallery-item img { width: 100%; height: 100%; object-fit: cover; transition: transform .8s ease, filter .8s ease; }.gallery-item:hover img { transform: scale(1.03); filter: brightness(1.04); }

.route-section { color: white; background: var(--brown); }.route-section .section-heading h2 { color: white; }.route-section .eyebrow { color: var(--champagne); }
.route-summary { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 2rem; margin-bottom: 2rem; }.route-summary > div:last-child { text-align: right; }
.route-summary > div > span:first-child { display: block; color: var(--champagne); text-transform: uppercase; letter-spacing: .2em; font-size: .68rem; }.route-summary strong,.route-summary small { display: block; }.route-summary strong { font: 400 1.45rem var(--serif); }.route-summary small { color: rgba(255,255,255,.65); }
.route-stats { padding: .8rem 1.4rem; border: 1px solid rgba(215,195,160,.38); border-radius: 99px; display: flex; gap: 1rem; font-size: .82rem; white-space: nowrap; }
.map-shell { position: relative; }.map-shell #map { height: clamp(27rem,52vw,45rem); border-radius: var(--radius); overflow: hidden; background: #ddd; }
.leaflet-tile-pane { filter: sepia(.14) saturate(.72) contrast(.92); }.leaflet-control-attribution { font-size: 10px; }
.route-marker { display: grid; place-items: center; width: 2.8rem!important; height: 2.8rem!important; margin: -1.4rem!important; border-radius: 50%; color: var(--brown); background: var(--paper); border: 2px solid var(--gold); box-shadow: 0 4px 15px rgba(0,0,0,.22); font: 700 .6rem var(--sans); letter-spacing: .08em; }
.bus-icon { width: 64px!important; height: 42px!important; margin-left: -32px!important; margin-top: -21px!important; filter: drop-shadow(0 5px 5px rgba(0,0,0,.28)); transform-origin: center; }
.bus-icon svg { overflow: visible; }.arrival { position: absolute; z-index: 500; top: 1.2rem; left: 50%; transform: translate(-50%,-1rem); opacity: 0; padding: .75rem 1.2rem; background: rgba(57,47,41,.92); border: 1px solid var(--champagne); border-radius: 99px; text-transform: uppercase; letter-spacing: .16em; font-size: .7rem; transition: .5s ease; }.arrival.show { opacity: 1; transform: translate(-50%,0); }.arrival span { color: var(--champagne); }
.replay-route { position: absolute; z-index: 500; right: 1rem; bottom: 1rem; min-height: 44px; padding: .65rem 1rem; color: white; background: rgba(57,47,41,.88); border: 1px solid rgba(255,255,255,.25); border-radius: 99px; text-transform: uppercase; letter-spacing: .12em; font-size: .68rem; }

.upload-section { background: var(--cream); }.upload-form { max-width: 1050px; margin: auto; }.upload-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; margin-bottom: 2rem; }
.upload-fields label span { display: block; margin: 0 0 .45rem; color: var(--brown); text-transform: uppercase; font-size: .68rem; letter-spacing: .18em; }
.upload-fields input,.upload-fields textarea { width: 100%; border: 0; border-bottom: 1px solid var(--champagne); border-radius: 0; background: transparent; padding: .9rem .2rem; color: var(--ink); resize: vertical; }.upload-fields input:focus,.upload-fields textarea:focus { outline: 0; border-color: var(--gold); }
.dropzone { min-height: 27rem; display: grid; place-content: center; justify-items: center; gap: .55rem; padding: 3rem 1.5rem; text-align: center; border: 1px solid var(--gold); border-radius: 2rem; background: rgba(255,255,255,.45); transition: background .3s ease, transform .3s ease, box-shadow .3s ease; cursor: pointer; }
.dropzone.dragover { background: white; transform: scale(.995); box-shadow: 0 20px 50px rgba(57,47,41,.08); }.upload-symbol { display: grid; place-items: center; width: 5rem; height: 5rem; color: var(--gold); border: 1px solid var(--champagne); border-radius: 50%; font: 300 2.3rem var(--serif); }
.dropzone strong { margin-top: .9rem; color: var(--brown); font: 400 clamp(1.7rem,3vw,2.6rem) var(--serif); }.dropzone > span:not(.upload-symbol),.dropzone em { color: var(--muted); font-style: normal; }.dropzone b { min-height: 44px; padding: .7rem 1.4rem; display: grid; place-items: center; border-radius: 99px; color: white; background: var(--brown); text-transform: uppercase; letter-spacing: .14em; font-size: .68rem; }.dropzone small { margin-top: .7rem; color: var(--muted); }
.file-list { display: grid; gap: .8rem; margin-top: 1.5rem; }.file-row { display: grid; grid-template-columns: 3.5rem 1fr auto; align-items: center; gap: 1rem; padding: 1rem; background: rgba(255,255,255,.65); border-radius: 1rem; }.file-preview { width: 3.5rem; height: 3.5rem; object-fit: cover; border-radius: .65rem; background: var(--champagne); display: grid; place-items: center; color: var(--brown); }.file-name { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.file-meta { display: flex; justify-content: space-between; color: var(--muted); font-size: .78rem; }.progress { height: 5px; margin-top: .55rem; overflow: hidden; border-radius: 5px; background: rgba(184,154,97,.2); }.progress i { display: block; width: 0; height: 100%; background: var(--gold); transition: width .2s linear; }.file-actions button { min-width: 44px; min-height: 44px; border: 0; background: transparent; color: var(--brown); }
.consent { display: flex; align-items: flex-start; gap: .8rem; margin: 1.6rem 0; color: var(--muted); font-size: .88rem; }.consent input { width: 1.2rem; height: 1.2rem; margin-top: .15rem; accent-color: var(--brown); flex: 0 0 auto; }
.upload-submit { display: block; width: 100%; min-height: 3.6rem; border: 0; border-radius: 99px; color: white; background: var(--brown); text-transform: uppercase; letter-spacing: .16em; font-size: .72rem; }.upload-submit:disabled { opacity: .42; cursor: not-allowed; }.form-status { min-height: 1.7rem; text-align: center; color: #8a342c; }
.upload-success { max-width: 740px; margin: 2rem auto 0; padding: 4rem 2rem; text-align: center; border: 1px solid var(--champagne); border-radius: 2rem; background: white; }.upload-success span { color: var(--gold); font-size: 2rem; }.upload-success h3 { margin: .3rem 0; font: 400 3rem var(--serif); color: var(--brown); }
.upload-again { min-height: 3.2rem; margin-top: 1.2rem; padding: .75rem 1.6rem; color: white; background: var(--brown); border: 0; border-radius: 99px; text-transform: uppercase; letter-spacing: .14em; font-size: .72rem; }

footer { display: grid; justify-items: center; padding: 4rem 1rem; color: white; background: #251e1a; }footer img{width:5.5rem}footer p{margin:.7rem 0 0;font:italic 2rem var(--serif)}footer small{color:var(--champagne);letter-spacing:.18em;text-transform:uppercase}
.back-to-top { position: fixed; z-index: 90; right: clamp(1rem,2.5vw,2rem); bottom: clamp(1rem,2.5vw,2rem); width: 3.5rem; height: 3.5rem; display: grid; place-items: center; padding: 0; color: var(--paper); background: var(--brown); border: 1px solid var(--champagne); border-radius: 50%; box-shadow: 0 10px 30px rgba(39,31,27,.24); opacity: 0; visibility: hidden; transform: translateY(1rem) scale(.92); transition: opacity .35s ease, visibility .35s, transform .35s ease, background .3s ease; }
.back-to-top span { color: var(--champagne); font-size: 1.25rem; line-height: 1; }
.back-to-top.visible { opacity: 1; visibility: visible; transform: none; }
.back-to-top:hover { background: #4b3d35; transform: translateY(-3px); }
.lightbox { width: 100vw; max-width: none; height: 100vh; max-height: none; margin: 0; padding: 5rem clamp(1rem,8vw,8rem); border: 0; background: rgba(25,20,17,.96); overflow: hidden; }.lightbox::backdrop { background: rgba(0,0,0,.85); }.lightbox img { width: 100%; height: 100%; object-fit: contain; }.lightbox button { position: absolute; z-index: 1; display: grid; place-items: center; width: 3.2rem; height: 3.2rem; border: 1px solid rgba(255,255,255,.35); border-radius: 50%; color: white; background: rgba(0,0,0,.25); font-size: 2rem; }.lightbox-close{right:1.5rem;top:1.5rem}.lightbox-prev{left:1.5rem;top:50%}.lightbox-next{right:1.5rem;top:50%}
.notice { padding: 1rem; border: 1px solid var(--champagne); }

@media (max-width: 820px) {
  .desktop-nav { display: none; }.menu-toggle { display: block; }.site-header { height: 6.5rem; }.brand { top: 25px; width: 7rem; }.scrolled .brand { top: 12px; width: 5rem; }
  .hero-content { padding-top: 6rem; }.hero h1 { font-size: clamp(3.7rem,17vw,6.2rem); }.hero-date { letter-spacing: .24em; }
  .timeline-line { left: 1.85rem; }.timeline-item { grid-template-columns: 3.7rem 1fr; min-height: 0; padding-bottom: 5.5rem; gap: 0 1.3rem; }.timeline-item time { grid-column: 2; justify-self: start; margin-bottom: 1.2rem; }.timeline-icon { grid-column: 1; grid-row: 1 / 3; }.timeline-item > div:last-child { grid-column: 2; }
  .location-intro { grid-template-columns: 1fr; }.location-intro article:nth-child(2) { padding-top: 0; }.editorial-gallery { grid-template-columns: 1fr; grid-template-rows: auto; }.gallery-main { grid-row: auto; min-height: 25rem; }.gallery-item { min-height: 19rem; }
  .route-summary { grid-template-columns: 1fr; }.route-summary > div:last-child { text-align: left; }.route-stats { width: max-content; }.upload-fields { grid-template-columns: 1fr; }
}
@media (max-width: 520px) {
  .hero-image { object-position: 55% center; }.hero-kicker { letter-spacing: .35em; }.hero h1 { font-size: clamp(3.35rem,17vw,4.8rem); }.hero-date { font-size: .72rem; }.scroll-cue { bottom: 1rem; }
  .section { padding-inline: 1rem; }.section-heading { text-align: left; }.section-heading h2 { font-size: clamp(2.75rem,14vw,4rem); }.timeline-item { grid-template-columns: 3.7rem minmax(0,1fr); }.timeline-item time { font-size: 3.6rem; }
  .route-section .section-heading h2 { font-size: 2.7rem; }.map-shell #map { height: 28rem; border-radius: 1rem; }.route-stats { white-space: normal; }.dropzone { min-height: 23rem; }.file-row { grid-template-columns: 3.2rem minmax(0,1fr); }.file-actions { grid-column: 2; }.lightbox { padding: 4rem .5rem; }.lightbox-prev{left:.5rem}.lightbox-next{right:.5rem}.back-to-top{width:3.2rem;height:3.2rem}
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; } *,*::before,*::after { animation-duration: .01ms!important; animation-iteration-count: 1!important; transition-duration: .01ms!important; }.reveal { opacity: 1; transform: none; }
}
