:root{
  --night:#0b0a09;--ink:#efe9df;--soft:rgba(239,233,223,.72);--faint:rgba(239,233,223,.38);
  --gold:#c8a46a;--gold-soft:rgba(200,164,106,.55);
  --serif:"Cormorant Garamond","Times New Roman",serif;--sans:"Inter",system-ui,-apple-system,sans-serif;
  --ease:cubic-bezier(.22,.61,.36,1);
}
*{box-sizing:border-box;margin:0}
html{background:var(--night);-webkit-text-size-adjust:100%}
body{background:var(--night);color:var(--ink);font:300 16px/1.6 var(--sans);-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:inherit}
.skip{position:absolute;left:-999px;top:8px;z-index:50;background:var(--ink);color:var(--night);padding:8px 14px}
.skip:focus{left:8px}

/* Top bar */
.bar{position:fixed;inset:0 0 auto;z-index:30;display:flex;align-items:center;justify-content:space-between;
  padding:calc(18px + env(safe-area-inset-top)) clamp(20px,4vw,48px) 18px;pointer-events:none;
  transition:opacity .8s var(--ease),transform .8s var(--ease)}
.bar>*{pointer-events:auto}
.bar.hide{opacity:0;transform:translateY(-12px)}
.mark{font:400 22px/1 var(--serif);letter-spacing:.42em;text-decoration:none;color:var(--ink)}
.mark span{color:var(--gold)}
.bar-cta{font:400 11px/1 var(--sans);letter-spacing:.22em;text-transform:uppercase;text-decoration:none;
  padding:12px 18px;border:1px solid var(--gold-soft);border-radius:999px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  background:rgba(11,10,9,.25);transition:background .4s,border-color .4s}
.bar-cta:hover{background:rgba(200,164,106,.16);border-color:var(--gold)}

/* Journey */
.journey{position:relative;height:880vh}
.stage{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden;background:var(--night)}
.ambient{display:none;position:absolute;inset:0}
.frame{position:absolute;inset:0}
.frame canvas,.frame .poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.frame canvas{opacity:0;transition:opacity .6s}
.frame.ready canvas{opacity:1}
.shade{position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(11,10,9,.55) 0%,rgba(11,10,9,0) 22%,rgba(11,10,9,0) 48%,rgba(11,10,9,.78) 100%)}

.intro{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;
  padding:0 24px;will-change:opacity,transform}
.eyebrow{font:400 11px/1.4 var(--sans);letter-spacing:.32em;text-transform:uppercase;color:var(--gold)}
.intro h1{font:300 clamp(72px,17vw,190px)/.9 var(--serif);letter-spacing:.18em;margin:18px 0 18px .18em}
.intro-line{font:300 italic clamp(19px,2.4vw,26px)/1.35 var(--serif);color:var(--soft);max-width:22em}
.cue{position:absolute;bottom:calc(34px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:14px;
  font:400 10px/1 var(--sans);letter-spacing:.3em;text-transform:uppercase;color:var(--faint)}
.cue-line{display:block;width:1px;height:48px;background:linear-gradient(var(--gold),transparent);transform-origin:top;animation:cue 2.4s var(--ease) infinite}
.cue span:last-child{font-variant-numeric:tabular-nums}
.cue.loading .cue-line{animation:none;transform:scaleY(.35);opacity:.5}
@keyframes cue{0%{transform:scaleY(0);opacity:1}60%{transform:scaleY(1);opacity:1}100%{transform:scaleY(1);opacity:0}}

.chapters{position:absolute;inset:0;pointer-events:none}
.chapter{position:absolute;left:clamp(24px,6vw,96px);right:24px;bottom:calc(92px + env(safe-area-inset-bottom));max-width:30rem;
  opacity:0;translate:0 24px;will-change:opacity,translate}
.chapter.on{pointer-events:auto}
.num{font:400 11px/1 var(--sans);letter-spacing:.3em;text-transform:uppercase;color:var(--gold);margin-bottom:16px;display:flex;align-items:center;gap:12px}
.num::before{content:"";width:28px;height:1px;background:var(--gold)}
.chapter h2{font:300 clamp(36px,5.4vw,64px)/1.02 var(--serif);letter-spacing:-.005em;margin-bottom:14px;text-wrap:balance}
.chapter p:not(.num){color:var(--soft);font-size:15px;max-width:26em}
.btn{display:inline-block;margin-top:24px;font:400 11px/1 var(--sans);letter-spacing:.24em;text-transform:uppercase;text-decoration:none;
  color:var(--night);background:var(--gold);border:0;border-radius:999px;padding:17px 28px;cursor:pointer;transition:background .4s,transform .4s var(--ease)}
.btn:hover{background:#d8b77f;transform:translateY(-1px)}

.rail{position:absolute;right:clamp(16px,3vw,40px);top:50%;transform:translateY(-50%);display:flex;gap:14px;align-items:stretch;opacity:0;transition:opacity .8s}
.rail.on{opacity:1}
.rail ol{list-style:none;padding:0;display:flex;flex-direction:column;justify-content:space-between;text-align:right;gap:18px}
.rail a{font:400 10px/1 var(--sans);letter-spacing:.24em;text-transform:uppercase;color:var(--faint);text-decoration:none;transition:color .5s}
.rail a.on{color:var(--ink)}
.rail-track{width:1px;background:rgba(239,233,223,.16);position:relative}
.rail-track i{position:absolute;left:0;top:0;width:1px;height:100%;background:var(--gold);transform-origin:top;transform:scaleY(0)}
.loader{position:absolute;left:0;right:0;bottom:0;height:1px;background:rgba(239,233,223,.08);transition:opacity .8s}
.loader i{display:block;height:100%;width:0;background:var(--gold-soft);transition:width .3s}
.loader.done{opacity:0}

/* Wide screens: the portrait film sits in a tall frame, with its own colour blurred behind it */
@media (min-aspect-ratio:4/5){
  /* a still, pre-blurred wash of the film's own colours: no live blur to redraw while scrolling */
  .ambient{display:block;background:#2f2e2b url(ambient.jpg) center/cover no-repeat}
  .frame{inset:0 10vw 0 auto;width:min(56.25vh,46vw);box-shadow:0 0 120px rgba(0,0,0,.55)}
  .frame::after{content:"";position:absolute;inset:0;border:1px solid rgba(239,233,223,.08);pointer-events:none}
  .shade{background:linear-gradient(90deg,rgba(11,10,9,.72) 0%,rgba(11,10,9,.15) 40%,rgba(11,10,9,0) 60%),linear-gradient(180deg,rgba(11,10,9,.4) 0%,rgba(11,10,9,0) 25%)}
  .chapter{bottom:auto;top:50%;transform:translateY(-50%);max-width:min(30rem,calc(84vw - min(56.25vh,46vw) - 48px))}
}
@media (max-aspect-ratio:4/5){
  .rail ol{display:none}
  .rail{right:14px;height:34vh}
  .bar-cta{padding:10px 14px;letter-spacing:.16em}
}

/* Viewing */
.viewing{position:relative;min-height:100svh;display:flex;align-items:center;justify-content:center;padding:120px 24px 80px;
  background:radial-gradient(ellipse at 50% 0%,rgba(200,164,106,.10),transparent 60%),var(--night)}
.viewing-in{width:100%;max-width:34rem;text-align:center}
.viewing h2{font:300 clamp(44px,7vw,80px)/1 var(--serif);margin:18px 0 18px}
.viewing-lede{color:var(--soft);max-width:26em;margin:0 auto 44px}
.enquiry{display:grid;gap:22px;text-align:left}
.enquiry label{display:grid;gap:8px}
.enquiry label span{font:400 10px/1 var(--sans);letter-spacing:.26em;text-transform:uppercase;color:var(--faint)}
.enquiry input{font:300 18px/1.4 var(--sans);color:var(--ink);background:transparent;border:0;border-bottom:1px solid rgba(239,233,223,.22);
  padding:8px 0 10px;border-radius:0;outline:none;transition:border-color .4s;color-scheme:dark}
.enquiry input:focus{border-color:var(--gold)}
.enquiry input[aria-invalid="true"]{border-color:#c77a6a}
.enquiry .btn{justify-self:center;margin-top:14px}
.form-note{text-align:center;color:var(--soft);font-size:14px;min-height:1.4em}

.foot{padding:48px 24px calc(48px + env(safe-area-inset-bottom));border-top:1px solid rgba(239,233,223,.08);text-align:center;color:var(--faint);font-size:13px;display:grid;gap:10px}
.foot .mark{font-size:18px;color:var(--ink);margin-bottom:6px}

@media (prefers-reduced-motion:reduce){.cue-line{animation:none}.btn,.bar{transition:none}}
