@font-face{font-family:"Playfair Display";src:url(../fonts/playfair-display-latin-wght-normal.woff2) format("woff2");font-weight:400 900;font-style:normal;font-display:swap}
@font-face{font-family:"Playfair Display";src:url(../fonts/playfair-display-latin-wght-italic.woff2) format("woff2");font-weight:400 900;font-style:italic;font-display:swap}
@font-face{font-family:"Outfit";src:url(../fonts/outfit-latin-wght-normal.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap}

:root{
  --ink:#0b1a30; --ink2:#2f4260; --zenith:#0e2a52; --mist:#eef2f5; --sun:#f7b58a; --gold:#ffd9a0; --accent:#b24a1c;
  --serif:"Playfair Display","Didot",Georgia,serif; --sans:"Outfit",system-ui,-apple-system,"Segoe UI",sans-serif;
  --pad:clamp(54px,8vw,150px); --ppm:64px; --lift:128px; --off:0px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{background:#2b2d3d;color:var(--ink);font:400 16px/1.55 var(--sans);overflow-x:hidden;-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%}
a{color:inherit}
ul,ol{list-style:none}
:focus-visible{outline:2px solid var(--zenith);outline-offset:3px;border-radius:6px}
.skip{position:absolute;left:12px;top:-60px;background:#fff;color:var(--ink);padding:10px 14px;border-radius:99px;z-index:100;font-weight:600}
.skip:focus{top:12px}

/* ---------- header pill ---------- */
.top{position:fixed;z-index:60;top:14px;left:50%;transform:translateX(-50%);width:min(860px,calc(100% - 28px));display:flex;align-items:center;justify-content:space-between;gap:18px;padding:8px 10px 8px 24px;border-radius:99px;background:rgba(255,255,255,.62);backdrop-filter:blur(18px) saturate(1.5);-webkit-backdrop-filter:blur(18px) saturate(1.5);border:1px solid rgba(255,255,255,.7);box-shadow:0 10px 40px -16px rgba(8,18,40,.4)}
.mark{font:italic 500 24px/1 var(--serif);text-decoration:none;color:var(--ink);letter-spacing:-.01em}
.mark span{font:400 18px var(--sans);color:var(--accent);margin-left:2px}
.top nav{display:flex;align-items:center;gap:clamp(12px,2.4vw,28px);font-size:13px;font-weight:500;letter-spacing:.04em}
.top nav a{text-decoration:none;padding:8px 2px;opacity:.85}
.top nav a:hover{opacity:1;text-decoration:underline;text-underline-offset:5px}
.top nav .pill{background:var(--ink);color:#fff;padding:11px 20px;border-radius:99px;opacity:1}
.top nav .pill:hover{background:var(--zenith);text-decoration:none}
@media (max-width:640px){.top{padding-left:18px}.top nav a:not(.pill){display:none}}

/* ---------- the climb ---------- */
.climb{position:relative;height:900vh}
.stage{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden;background:#2b2d3d;isolation:isolate}
.sky{position:absolute;inset:0;z-index:0;overflow:hidden}
.lyr{position:absolute;left:0;top:-12%;width:100%;height:124%;object-fit:cover;opacity:0;will-change:transform,opacity;transform-origin:50% 50%}
.lyr:first-of-type{opacity:1}
.haze{position:absolute;inset:0;background:radial-gradient(90% 70% at 50% 50%,#fff6ec,#f3e8de);opacity:0;pointer-events:none}
.veil{position:absolute;inset:0;background:radial-gradient(130% 100% at 50% 45%,transparent 58%,rgba(6,12,30,.34));pointer-events:none}
.grain{position:absolute;inset:0;opacity:.14;mix-blend-mode:overlay;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .9 0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)'/%3E%3C/svg%3E")}

/* scaffold standards at the edges: couplers and ledger stubs travel with the altitude */
.fg{position:absolute;inset:0;z-index:1;pointer-events:none}
.std{position:absolute;top:0;bottom:0;width:7px;background:linear-gradient(90deg,rgba(255,255,255,.18),rgba(255,255,255,.85) 35%,rgba(255,255,255,.28) 70%,rgba(0,0,0,.3));box-shadow:0 0 22px rgba(255,255,255,.25)}
.std.l{left:clamp(10px,2vw,30px)}
.std.r{right:clamp(10px,2vw,30px)}
.std::before,.std::after{content:"";position:absolute;top:-300px;bottom:-300px;background-position:0 var(--off);background-repeat:repeat-y}
.std::before{left:6px;width:clamp(18px,2.4vw,40px);background-image:repeating-linear-gradient(to bottom,transparent 0,transparent calc(var(--lift) - 4px),rgba(255,255,255,.7) calc(var(--lift) - 4px),rgba(255,255,255,.7) var(--lift));background-size:100% var(--lift)}
.std.r::before{left:auto;right:6px}
.std::after{left:-4px;width:15px;background-image:repeating-linear-gradient(to bottom,transparent 0,transparent calc(var(--lift) - 10px),rgba(12,20,40,.85) calc(var(--lift) - 10px),rgba(12,20,40,.85) var(--lift));background-size:100% var(--lift)}
.streaks{position:absolute;inset:0;overflow:hidden}
.streaks b{position:absolute;top:0;width:1px;background:linear-gradient(transparent,rgba(255,255,255,.9),transparent);will-change:transform,opacity;opacity:0}

/* the world: everything here is positioned by altitude */
.world{position:absolute;inset:0;z-index:2;pointer-events:none}
.stop,.cap{position:absolute;left:0;top:0;will-change:transform}
.stop{width:100%;padding:0 var(--pad);display:flex}
.stop.right{justify-content:flex-end}
.stop>*{pointer-events:auto}
/* the board the panel stands on, with guard rails behind it */
.stop:not(.hero)::after{content:"";position:absolute;left:0;right:0;bottom:-12px;height:12px;background:linear-gradient(#f4ecda,#cdbf9e);box-shadow:0 14px 36px rgba(6,12,30,.35),inset 0 -2px 0 rgba(0,0,0,.12)}
.stop:not(.hero)::before{content:"";position:absolute;left:0;right:0;bottom:calc(var(--ppm) * .45);height:calc(var(--ppm) * .55);border-top:2px solid rgba(255,255,255,.75);border-bottom:1px solid rgba(255,255,255,.4);z-index:-1;pointer-events:none}
.eyebrow{font-size:11.5px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--ink2)}
em{font-style:italic;font-family:var(--serif);color:var(--accent)}
.panel{width:min(560px,100%);background:rgba(255,255,255,.78);backdrop-filter:blur(24px) saturate(1.5);-webkit-backdrop-filter:blur(24px) saturate(1.5);border:1px solid rgba(255,255,255,.75);border-radius:28px;padding:clamp(22px,2.6vw,38px);box-shadow:0 40px 90px -36px rgba(8,18,40,.5);margin-bottom:6px}
.panel.wide{width:min(940px,100%)}
.panel h2{font:400 clamp(30px,3.5vw,50px)/1.03 var(--serif);letter-spacing:-.015em;margin:10px 0 18px}
.panel h2 em{color:var(--accent)}

.hero{flex-direction:column;justify-content:flex-end;color:#fff;max-width:1100px;padding-bottom:6px;text-shadow:0 2px 40px rgba(8,12,34,.6)}
.hero .eyebrow{color:#fff;opacity:.92;margin-bottom:18px}
.hero h1{font:400 clamp(46px,8vw,128px)/.97 var(--serif);letter-spacing:-.025em;max-width:11ch}
.hero h1 em{color:var(--gold)}
.hero .sub{margin-top:24px;max-width:46ch;font-size:clamp(15px,1.35vw,18px);line-height:1.55;font-weight:400;color:#fff}
.hero .cue{margin-top:22px;font-size:12px;letter-spacing:.2em;text-transform:uppercase;font-weight:600;color:var(--gold)}
.hero .cue span{display:inline-block;animation:bob 1.8s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(5px)}}

.list li{display:grid;grid-template-columns:34px 1fr;gap:12px;padding:14px 0;border-top:1px solid rgba(11,26,48,.14)}
.num{font:italic 400 18px var(--serif);color:var(--accent)}
.list h3{font:600 17px/1.25 var(--sans)}
.list p{font-size:14.5px;color:var(--ink2);margin-top:2px}
.steps{counter-reset:s}
.steps li{counter-increment:s;position:relative;padding:12px 0 12px 44px;border-top:1px solid rgba(11,26,48,.14);font-size:15px;color:var(--ink2)}
.steps li::before{content:counter(s);position:absolute;left:0;top:8px;font:italic 400 28px/1 var(--serif);color:var(--accent)}
.steps b{color:var(--ink);font-weight:600}
.facts{display:grid;grid-template-columns:1fr 1fr;gap:0;border-top:1px solid rgba(11,26,48,.14);margin-bottom:16px}
.facts div{padding:14px 0;border-bottom:1px solid rgba(11,26,48,.14)}
.facts div:nth-child(odd){padding-right:14px}
.facts dt{font-size:11px;letter-spacing:.18em;text-transform:uppercase;font-weight:600;color:var(--ink2)}
.facts dd{font:italic 400 clamp(24px,2.6vw,34px)/1.1 var(--serif);color:var(--ink)}
.panel>p:not(.eyebrow):not(.contact){font-size:15px;color:var(--ink2)}

.case{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(18px,3vw,40px);text-decoration:none;align-items:center}
.case img{width:100%;height:100%;max-height:min(58vh,520px);object-fit:cover;border-radius:18px;aspect-ratio:4/5}
.case-copy{display:flex;flex-direction:column;gap:12px}
.case-copy h2{margin:0}
.case-copy p:not(.eyebrow){font-size:15px;color:var(--ink2)}
.more{align-self:flex-start;margin-top:6px;background:var(--ink);color:#fff;padding:12px 22px;border-radius:99px;font-size:13px;font-weight:600;letter-spacing:.04em}
.case:hover .more{background:var(--zenith)}

.form{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.form label{display:flex;flex-direction:column;gap:5px;font-size:11px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--ink2)}
.form .wide,.form .go,.form .msg{grid-column:1/-1}
.form input,.form textarea{font:400 16px/1.35 var(--sans);color:var(--ink);background:rgba(255,255,255,.8);border:1px solid rgba(11,26,48,.22);border-radius:14px;padding:12px 14px;width:100%;resize:none}
.form input:focus,.form textarea:focus{outline:2px solid var(--zenith);outline-offset:1px;background:#fff}
.go{font:600 14px var(--sans);letter-spacing:.04em;background:var(--ink);color:#fff;border:0;border-radius:99px;padding:15px 24px;cursor:pointer;justify-self:start}
.go:hover{background:var(--zenith)}
.msg{min-height:1.4em;font-size:14px;font-weight:600;color:var(--accent)}
.contact{margin-top:14px;font-size:13.5px;color:var(--ink2);line-height:1.6}

/* captions pass by as you rise */
.cap{left:clamp(52px,7vw,120px);display:flex;align-items:center;gap:10px;padding:8px 18px 8px 14px;border-radius:99px;background:rgba(9,22,46,.42);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:#fff;font-size:13px;letter-spacing:.02em;white-space:nowrap;border:1px solid rgba(255,255,255,.22)}
.cap b{font:italic 400 24px/1 var(--serif);color:var(--gold)}
.cap.r{left:auto;right:calc(clamp(52px,6vw,96px) + 78px)}

/* altitude readout and ruler */
.hud{position:absolute;z-index:1;left:clamp(18px,3.5vw,60px);bottom:clamp(16px,3.5vh,40px);pointer-events:none;color:#fff;text-shadow:0 2px 40px rgba(8,18,50,.55)}
.alt{display:flex;align-items:baseline;gap:.08em;font:200 clamp(120px,19vw,320px)/.78 var(--sans);letter-spacing:-.055em;font-variant-numeric:tabular-nums}
.alt-u{font:italic 400 .22em var(--serif);letter-spacing:0}
.alt-l{margin-top:14px;font-size:11.5px;letter-spacing:.22em;text-transform:uppercase;font-weight:600}
.ruler{position:absolute;z-index:3;right:clamp(52px,6vw,96px);top:0;bottom:0;width:44px;pointer-events:none;color:#fff}
.ticks{position:absolute;inset:0;background-image:repeating-linear-gradient(to bottom,rgba(255,255,255,.55) 0,rgba(255,255,255,.55) 1px,transparent 1px,transparent var(--ppm)),repeating-linear-gradient(to bottom,rgba(255,255,255,.95) 0,rgba(255,255,255,.95) 1.5px,transparent 1.5px,transparent calc(var(--ppm) * 5));background-size:12px 100%,26px 100%;background-repeat:repeat-y;background-position:right 0 top 0,right 0 top 0;-webkit-mask-image:linear-gradient(transparent,#000 12%,#000 88%,transparent);mask-image:linear-gradient(transparent,#000 12%,#000 88%,transparent)}
.rl{position:absolute;right:34px;font-size:12px;font-weight:600;letter-spacing:.08em;font-variant-numeric:tabular-nums;text-shadow:0 1px 10px rgba(0,0,20,.6);transform:translateY(-50%)}
.eye{position:absolute;right:-6px;width:0;height:0;border:6px solid transparent;border-right:9px solid var(--gold);transform:translateY(-50%)}
@media (max-width:760px){.ruler{right:42px;width:34px}.rl{display:none}.cap{font-size:12px;padding:6px 14px 6px 10px}.cap b{font-size:20px}.cap.r{right:44px}.cap{left:44px}}

.foot{background:linear-gradient(#3b2f6b,#241d4a);color:#e9e5f5;padding:60px var(--pad) 40px;text-align:center}
.foot-line{font-size:14px;letter-spacing:.04em}
.credit{margin-top:18px;font-size:12.5px;opacity:.85;max-width:70ch;margin-inline:auto}

@media (max-width:760px){
  :root{--pad:48px}
  .list p{display:none}
  .panel{border-radius:22px;padding:20px 20px 22px}
  .panel h2{font-size:30px;margin:8px 0 12px}
  .list li{padding:10px 0}
  .steps li{font-size:14px;padding:9px 0 9px 38px}
  .steps li::before{font-size:24px}
  .case{grid-template-columns:.7fr 1.3fr;gap:14px}
  .case img{aspect-ratio:3/4;max-height:40vh;border-radius:12px}
  .case-copy p:not(.eyebrow){display:none}
  .facts dd{font-size:22px}
  .panel>p:not(.eyebrow):not(.contact){font-size:14px}
  .hero h1{font-size:clamp(42px,13vw,72px)}
  .alt{font-size:clamp(100px,34vw,170px)}
  .form{gap:9px}
  .form input,.form textarea{padding:10px 12px}
}

/* ---------- static: reduced motion or no JS ---------- */
.reduce .climb,html:not(.js) .climb{height:auto!important}
.reduce .stage,html:not(.js) .stage{position:relative;height:auto;overflow:visible;background:none}
.reduce .sky,.reduce .fg,.reduce .hud,.reduce .ruler,.reduce .cap,html:not(.js) .sky,html:not(.js) .fg,html:not(.js) .hud,html:not(.js) .ruler,html:not(.js) .cap{display:none}
.reduce .world,html:not(.js) .world{position:relative;pointer-events:auto}
.reduce .stop,html:not(.js) .stop{position:relative;transform:none!important;opacity:1!important;visibility:visible!important;min-height:100svh;align-items:center;padding-top:110px;padding-bottom:70px;background:linear-gradient(rgba(8,14,34,.28),rgba(8,14,34,.28)),var(--bg) center/cover no-repeat}
.reduce .stop::before,.reduce .stop::after,html:not(.js) .stop::before,html:not(.js) .stop::after{display:none}
.reduce .hero,html:not(.js) .hero{align-items:flex-start;justify-content:center}
.reduce .cue span{animation:none}
@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation:none!important}}
