/* ==========================================================================
   THE 2510 — single-file site
   Everything (styles, markup, behaviour) lives in this one file so it can be
   emailed and opened straight in a browser.
   ========================================================================== */

:root{
  --ink:#0B0D18;
  --ink-2:#141829;
  --ink-3:#252B3D;
  --body:#333A47;
  --muted:#6E7686;
  --line:#E1E5EE;
  --line-dk:rgba(255,255,255,.12);
  --bone:#FCFFFA;
  --bone-2:#F4F7FC;
  --white:#fff;

  --royal:#1426AD;
  --royal-dk:#0D1A82;
  --gold:#E9C91B;
  --gold-2:#E9C91B;
  --peri:#7095E4;

  --max:1280px;
  --pad:clamp(20px,5vw,64px);
  --r:18px;
  --r-sm:12px;

  --serif:"Fraunces",ui-serif,Georgia,"Times New Roman",serif;
  --sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;
  --mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;

  --ease:cubic-bezier(.22,1,.36,1);
  --shadow:0 2px 4px rgba(11,13,24,.04), 0 18px 48px -20px rgba(11,13,24,.22);
  --shadow-lg:0 4px 8px rgba(11,13,24,.06), 0 44px 90px -32px rgba(11,13,24,.40);
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; background:var(--bone); color:var(--body);
  font-family:var(--sans); font-size:17px; line-height:1.68;
  font-weight:400; -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{max-width:100%; display:block}
a{color:inherit; text-decoration:none}
button{font:inherit}

/* ---------- film grain over everything ---------- */
.grain{
  position:fixed; inset:-200%; z-index:9999; pointer-events:none;
  opacity:.30; mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='260' height='260'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='260' height='260' filter='url(%23n)' opacity='.42'/%3E%3C/svg%3E");
  animation:grain 8s steps(6) infinite;
}
@keyframes grain{
  0%,100%{transform:translate(0,0)}
  20%{transform:translate(-3%,2%)}
  40%{transform:translate(2%,-3%)}
  60%{transform:translate(-2%,-2%)}
  80%{transform:translate(3%,1%)}
}

/* ---------- typography ---------- */
h1,h2,h3,h4{
  font-family:var(--serif); font-weight:400; color:var(--ink);
  line-height:1.02; letter-spacing:-.028em; margin:0;
  font-variation-settings:"SOFT" 0,"WONK" 0,"opsz" 100;
  text-wrap:balance;
}
.h-xl{font-size:clamp(3.1rem,8.4vw,7.4rem); letter-spacing:-.042em; line-height:.94}
.h-lg{font-size:clamp(2.4rem,5.6vw,4.6rem); letter-spacing:-.035em; line-height:.98}
.h-md{font-size:clamp(1.85rem,3.4vw,3rem); letter-spacing:-.03em; line-height:1.04}
.h-sm{font-size:clamp(1.2rem,1.8vw,1.55rem); letter-spacing:-.018em; line-height:1.16}
p{margin:0 0 1.15em}
p:last-child{margin-bottom:0}
em{font-style:italic}

.label{
  font-family:var(--mono); font-size:.66rem; font-weight:500;
  letter-spacing:.22em; text-transform:uppercase; color:var(--royal);
  display:inline-flex; align-items:center; gap:.75rem; margin:0 0 1.4rem;
}
.label::before{content:""; width:1.6rem; height:1px; background:currentColor; flex:none; opacity:.6}
.label.plain::before{display:none}
.lede{font-size:clamp(1.08rem,1.55vw,1.34rem); line-height:1.58; color:var(--body); font-weight:400}
.muted{color:var(--muted)}
.big-num{font-family:var(--serif); font-variant-numeric:lining-nums tabular-nums}

/* ---------- layout ---------- */
.wrap{max-width:var(--max); margin-inline:auto; padding-inline:var(--pad); width:100%}
.pad{padding-block:clamp(72px,10vw,150px)}
.pad-sm{padding-block:clamp(48px,6.5vw,92px)}
.narrow{max-width:820px}
.split{display:grid; grid-template-columns:1fr 1fr; gap:clamp(2.2rem,5.5vw,6rem); align-items:center}
.split.lean{grid-template-columns:1.08fr .92fr}
.split.top{align-items:start}
.grid{display:grid; gap:1.15rem}
.g2{grid-template-columns:repeat(2,1fr)}
.g3{grid-template-columns:repeat(3,1fr)}
.g4{grid-template-columns:repeat(4,1fr)}
.head-row{display:flex; align-items:flex-end; justify-content:space-between; gap:2.5rem; flex-wrap:wrap; margin-bottom:clamp(2.4rem,4vw,3.8rem)}
.head-row .lede{max-width:42ch}
.dark{background:var(--ink); color:rgba(255,255,255,.72)}
.dark h1,.dark h2,.dark h3,.dark h4{color:#fff}
.dark .muted{color:rgba(255,255,255,.55)}
.dark .lede{color:rgba(255,255,255,.78)}
.dark .label{color:var(--gold)}
.tint{background:var(--bone-2)}
hr.rule{border:0; height:1px; background:var(--line); margin:0}
.dark hr.rule{background:var(--line-dk)}

/* ---------- buttons ---------- */
.btn{
  --bg:var(--royal); --fg:#fff; --bd:transparent;
  position:relative; display:inline-flex; align-items:center; justify-content:center; gap:.6rem;
  font-family:var(--sans); font-size:.875rem; font-weight:600; letter-spacing:.005em;
  padding:1rem 1.7rem; border-radius:100px; border:1px solid var(--bd);
  background:var(--bg); color:var(--fg); cursor:pointer; white-space:nowrap;
  overflow:hidden; isolation:isolate;
  transition:transform .4s var(--ease), box-shadow .4s var(--ease), color .3s var(--ease), border-color .3s var(--ease);
}
.btn::before{
  content:""; position:absolute; inset:0; z-index:-1; border-radius:inherit;
  background:var(--royal-dk); transform:translateY(101%);
  transition:transform .45s var(--ease);
}
.btn:hover{transform:translateY(-3px); box-shadow:0 14px 30px -14px rgba(11,13,24,.55)}
.btn:hover::before{transform:translateY(0)}
.btn svg{width:15px; height:15px; flex:none}
.btn-outline{--bg:transparent; --fg:var(--ink); --bd:rgba(11,13,24,.28)}
.btn-outline::before{background:var(--ink)}
.btn-outline:hover{color:var(--bone); border-color:var(--ink)}
.btn-light{--bg:rgba(255,255,255,.06); --fg:#fff; --bd:rgba(255,255,255,.34); backdrop-filter:blur(8px)}
.btn-light::before{background:#fff}
.btn-light:hover{color:var(--ink); border-color:#fff}
.btn-sm{padding:.68rem 1.2rem; font-size:.8rem}
.btns{display:flex; flex-wrap:wrap; gap:.75rem}

.arrow-link{
  display:inline-flex; align-items:center; gap:.6rem; font-size:.9rem; font-weight:600;
  color:var(--ink); padding-bottom:.3rem; border-bottom:1px solid var(--line);
  transition:gap .3s var(--ease), border-color .3s var(--ease), color .3s var(--ease);
}
.arrow-link:hover{gap:1rem; border-color:var(--royal); color:var(--royal)}
.dark .arrow-link{color:#fff; border-color:var(--line-dk)}
.dark .arrow-link:hover{color:var(--gold); border-color:var(--gold)}

/* ---------- header ---------- */
.hdr{
  position:sticky; top:0; z-index:200;
  background:rgba(250,247,241,.72); backdrop-filter:saturate(180%) blur(18px);
  border-bottom:1px solid transparent;
  transition:border-color .4s var(--ease), background .4s var(--ease);
}
.hdr.stuck{border-color:var(--line); background:rgba(250,247,241,.92)}
.hdr .wrap{display:flex; align-items:center; gap:2rem; height:82px}
.brand{display:flex; align-items:center; gap:.85rem; margin-right:auto; cursor:pointer}
.brand .mark{
  min-width:58px; height:40px; padding:0 .6rem; border-radius:11px; background:var(--royal); color:#fff;
  display:grid; place-items:center; font-family:var(--serif); font-size:1rem; letter-spacing:.01em;
  flex:none; position:relative; overflow:hidden;
}
.brand .mark::after{content:""; position:absolute; left:22%; right:22%; bottom:7px; height:2px; background:var(--gold); border-radius:2px}
.brand .txt{line-height:1}
.brand .txt b{display:block; font-family:var(--serif); font-weight:400; font-size:1.3rem; letter-spacing:-.025em; color:var(--ink); white-space:nowrap}
.brand .txt span{display:block; font-family:var(--mono); font-size:.58rem; letter-spacing:.2em; text-transform:uppercase; color:var(--muted); margin-top:.34rem}

.nav{display:flex; gap:.35rem; align-items:center}
.nav a,.nav button{
  position:relative; background:none; border:0; cursor:pointer; padding:.55rem .95rem;
  font-size:.875rem; font-weight:500; color:var(--body); border-radius:100px;
  transition:color .3s var(--ease), background .3s var(--ease);
}
.nav a:hover,.nav button:hover{color:var(--ink); background:rgba(11,13,24,.045)}
.nav a.on,.nav button.on{color:var(--ink); background:rgba(11,13,24,.06)}
.nav a.on::after,.nav button.on::after{
  content:""; position:absolute; left:50%; bottom:.28rem; transform:translateX(-50%);
  width:14px; height:2px; border-radius:2px; background:var(--royal);
}
.hdr-cta{display:flex; gap:.55rem; align-items:center}

.burger{display:none; background:none; border:0; cursor:pointer; padding:.5rem; color:var(--ink)}
.burger span{display:block; width:22px; height:1.6px; background:currentColor; border-radius:2px; transition:transform .35s var(--ease), opacity .25s}
.burger span+span{margin-top:6px}
.burger.on span:nth-child(1){transform:translateY(7.6px) rotate(45deg)}
.burger.on span:nth-child(2){opacity:0}
.burger.on span:nth-child(3){transform:translateY(-7.6px) rotate(-45deg)}

.msheet{
  position:fixed; inset:82px 0 0; z-index:190; background:var(--bone);
  padding:2rem var(--pad) 3rem; display:none; flex-direction:column; gap:.2rem;
  overflow-y:auto;
}
.msheet.open{display:flex; animation:sheetIn .45s var(--ease)}
@keyframes sheetIn{from{opacity:0; transform:translateY(-12px)}to{opacity:1; transform:none}}
.msheet a,.msheet button{
  background:none; border:0; border-bottom:1px solid var(--line); text-align:left;
  font-family:var(--serif); font-size:2rem; letter-spacing:-.03em; color:var(--ink);
  padding:1.15rem 0; cursor:pointer; display:flex; justify-content:space-between; align-items:center;
}
.msheet a span,.msheet button span{font-family:var(--mono); font-size:.62rem; letter-spacing:.18em; color:var(--muted)}
.msheet .m-foot{margin-top:2.2rem; display:grid; gap:.7rem}

/* ---------- view routing ---------- */
main{animation:viewIn .5s var(--ease)}
@keyframes viewIn{from{opacity:0; transform:translateY(14px)}to{opacity:1; transform:none}}

/* ---------- scroll reveal ---------- */
.rv{opacity:0; transform:translateY(26px); transition:opacity .85s var(--ease), transform .85s var(--ease)}
.rv.in{opacity:1; transform:none}
.rv-1{transition-delay:.07s}.rv-2{transition-delay:.14s}.rv-3{transition-delay:.21s}
.rv-4{transition-delay:.28s}.rv-5{transition-delay:.35s}.rv-6{transition-delay:.42s}
@media (prefers-reduced-motion:reduce){
  .rv{opacity:1; transform:none; transition:none}
  .grain{animation:none}
  .view.active{animation:none}
  *{scroll-behavior:auto !important}
}

/* ---------- hero ---------- */
.hero{position:relative; min-height:min(94vh,940px); display:flex; align-items:flex-end; overflow:hidden; background:var(--ink)}
.hero-media{position:absolute; inset:0; z-index:0}
.hero-media img{width:100%; height:100%; object-fit:cover; filter:saturate(.82) contrast(1.06) brightness(.92)}
.hero-media::after{
  content:""; position:absolute; inset:0;
  background:
    linear-gradient(180deg,rgba(11,13,24,.72) 0%,rgba(11,13,24,.30) 34%,rgba(11,13,24,.55) 68%,rgba(11,13,24,.94) 100%),
    radial-gradient(75% 55% at 88% 8%,rgba(95,145,255,.24),transparent 62%);
}
.hero .wrap{position:relative; z-index:3; padding-block:clamp(70px,9vw,120px)}
.hero-in{max-width:1020px}
.hero h1{color:#fff}
.hero h1 .ln{display:block; overflow:hidden}
.hero h1 .ln i{
  display:block; font-style:normal; transform:translateY(110%);
  animation:lineUp 1.15s var(--ease) forwards;
}
.hero h1 .ln:nth-child(1) i{animation-delay:.10s}
.hero h1 .ln:nth-child(2) i{animation-delay:.19s}
.hero h1 .ln:nth-child(3) i{animation-delay:.28s}
@keyframes lineUp{to{transform:none}}
.hero .label{color:var(--gold); opacity:0; animation:fadeUp .9s var(--ease) .05s forwards}
.hero-sub{
  color:rgba(255,255,255,.80); max-width:56ch; margin-top:1.8rem;
  font-size:clamp(1.04rem,1.4vw,1.24rem); line-height:1.6;
  opacity:0; animation:fadeUp .9s var(--ease) .5s forwards;
}
.hero .btns{margin-top:2.6rem; opacity:0; animation:fadeUp .9s var(--ease) .62s forwards}
@keyframes fadeUp{from{opacity:0; transform:translateY(18px)}to{opacity:1; transform:none}}
.scroll-cue{
  position:absolute; right:var(--pad); bottom:clamp(70px,9vw,120px); z-index:3;
  display:flex; align-items:center; gap:.7rem; writing-mode:vertical-rl;
  font-family:var(--mono); font-size:.6rem; letter-spacing:.24em; text-transform:uppercase;
  color:rgba(255,255,255,.5); opacity:0; animation:fadeUp .9s var(--ease) .9s forwards;
}
.scroll-cue::after{content:""; width:1px; height:52px; background:linear-gradient(rgba(255,255,255,.5),transparent)}

/* interior page heroes — same full-bleed treatment, a touch shorter than home */
.hero.phero{min-height:min(72vh,680px)}
.hero.phero .hero-in{max-width:900px}
.hero.phero .btns{margin-top:2.2rem}

/* stat strip */
.stats{display:grid; grid-template-columns:repeat(4,1fr); background:var(--ink); border-top:1px solid var(--line-dk)}
.stats > div{padding:2rem var(--pad); border-right:1px solid var(--line-dk)}
.stats > div:last-child{border-right:0}
.stats b{display:block; font-family:var(--serif); font-weight:400; font-size:clamp(1.9rem,3vw,2.7rem); color:#fff; line-height:1; letter-spacing:-.03em}
.stats span{display:block; font-family:var(--mono); font-size:.6rem; letter-spacing:.2em; text-transform:uppercase; color:rgba(255,255,255,.48); margin-top:.7rem}

/* headings inside dark blocks must invert — they inherit --ink otherwise */
.cta-band h1,.cta-band h2,.cta-band h3{color:#fff}

/* ---------- marquee ---------- */
.marq{overflow:hidden; border-block:1px solid var(--line); background:var(--bone-2); padding-block:1.25rem}
.dark .marq,.marq.dark{background:var(--ink-2); border-color:var(--line-dk)}
.marq-track{display:flex; gap:0; width:max-content; animation:marq 42s linear infinite}
.marq:hover .marq-track{animation-play-state:paused}
@keyframes marq{to{transform:translateX(-50%)}}
.marq-track span,.marq-track a{
  display:inline-flex; align-items:center; gap:2.6rem; padding-right:2.6rem;
  font-family:var(--serif); font-size:clamp(1rem,1.5vw,1.32rem); color:var(--ink-3); white-space:nowrap;
}
.marq-track span::after,.marq-track a::after{content:""; width:5px; height:5px; border-radius:50%; background:var(--royal); flex:none}
.marq.dark .marq-track span,.marq.dark .marq-track a{color:rgba(255,255,255,.72)}
.marq-track a[href]{transition:color .3s var(--ease)}
.marq-track a[href]:hover{color:var(--royal); text-decoration:underline; text-underline-offset:5px}

/* ---------- cards ---------- */
.card{
  position:relative; background:var(--white); border:1px solid var(--line); border-radius:var(--r);
  padding:2rem 1.9rem 1.9rem; display:flex; flex-direction:column; gap:.75rem; overflow:hidden;
  transition:transform .5s var(--ease), box-shadow .5s var(--ease), border-color .5s var(--ease);
}
.card::after{
  content:""; position:absolute; left:0; top:0; height:2px; width:0; background:var(--royal);
  transition:width .55s var(--ease);
}
.card:hover{transform:translateY(-6px); box-shadow:var(--shadow); border-color:#C7D0E3}
.card:hover::after{width:100%}
.card .n{font-family:var(--mono); font-size:.62rem; letter-spacing:.2em; color:var(--muted)}
.card .ico{width:40px; height:40px; color:var(--royal); margin:.4rem 0 .5rem}
.card .ico svg{width:100%; height:100%}
.card h3{font-size:1.32rem}
.card p{font-size:.945rem; line-height:1.62; color:var(--muted)}
.card .tag{
  margin-top:auto; padding-top:1.1rem; font-family:var(--mono); font-size:.72rem;
  letter-spacing:.08em; color:var(--ink); text-transform:uppercase;
}

/* ---------- media frames ---------- */
.frame{position:relative; border-radius:var(--r); overflow:hidden; background:var(--bone-2)}
.frame img{width:100%; height:100%; object-fit:cover; transition:transform 1.2s var(--ease)}
.frame:hover img{transform:scale(1.045)}
.frame.tall{aspect-ratio:4/5}
.frame.wide{aspect-ratio:16/10}
.frame.sq{aspect-ratio:1}
.frame-cap{
  position:absolute; left:1.1rem; bottom:1.1rem; z-index:3;
  font-family:var(--mono); font-size:.6rem; letter-spacing:.18em; text-transform:uppercase;
  color:#fff; background:rgba(11,13,24,.55); backdrop-filter:blur(8px);
  padding:.5rem .85rem; border-radius:100px;
}

/* image placeholder when a photo can't load */
.img-ph{background:linear-gradient(148deg,#E9EEF8 0%,#C6D2EC 44%,#9DB2DF 100%)}
.img-ph::before{
  content:""; position:absolute; inset:0; z-index:1; opacity:.55;
  background-image:
    repeating-linear-gradient(132deg,rgba(255,255,255,.34) 0 2px,transparent 2px 26px),
    radial-gradient(120% 80% at 20% 10%,rgba(255,255,255,.6),transparent 60%),
    radial-gradient(90% 70% at 90% 96%,rgba(20,38,173,.24),transparent 58%);
}
.img-ph::after{
  content:"Photography to follow"; position:absolute; left:50%; top:50%; z-index:2;
  transform:translate(-50%,-50%); white-space:nowrap;
  font-family:var(--mono); font-size:.58rem; letter-spacing:.2em; text-transform:uppercase;
  color:rgba(11,13,24,.40);
}
.hero-media.img-ph{position:absolute; inset:0; background:linear-gradient(152deg,#080C28 0%,#131F68 46%,#2137B8 100%)}
.hero-media.img-ph::before{opacity:.34; background-image:repeating-linear-gradient(132deg,rgba(255,255,255,.12) 0 2px,transparent 2px 30px)}
.hero-media.img-ph::after{
  content:""; position:absolute; inset:0; left:0; top:0; transform:none; z-index:2;
  background:linear-gradient(180deg,rgba(11,13,24,.66) 0%,rgba(11,13,24,.26) 34%,rgba(11,13,24,.52) 68%,rgba(11,13,24,.94) 100%);
}

/* ---------- feature rows (spaces) ---------- */
.feat{display:grid; grid-template-columns:.92fr 1.08fr; gap:clamp(2.2rem,5.5vw,5.5rem); align-items:center; padding-block:clamp(46px,6vw,86px)}
.feat.flip .feat-media{order:2}
.feat-media{position:relative}
.feat-num{
  font-family:var(--mono); font-size:.66rem; letter-spacing:.22em; color:var(--muted);
  display:block; margin-bottom:1rem;
}
.feat ul{list-style:none; padding:0; margin:1.7rem 0 0; display:grid; gap:.7rem}
.feat ul li{position:relative; padding-left:1.7rem; font-size:.95rem; color:var(--body); line-height:1.55}
.feat ul li::before{
  content:""; position:absolute; left:0; top:.58em; width:8px; height:8px; border-radius:2px;
  background:var(--royal); transform:rotate(45deg);
}
.chip{
  display:inline-flex; align-items:baseline; gap:.5rem; margin-top:1.9rem;
  background:var(--white); border:1px solid var(--line); border-radius:100px; padding:.6rem 1.3rem;
}
.chip b{font-family:var(--serif); font-weight:400; font-size:1.3rem; color:var(--ink); letter-spacing:-.02em}
.chip span{font-family:var(--mono); font-size:.68rem; letter-spacing:.1em; color:var(--muted); text-transform:uppercase}

/* ---------- pricing ---------- */
.tiers{display:grid; grid-template-columns:repeat(4,1fr); gap:1.1rem}
.tier{
  position:relative; background:var(--white); border:1px solid var(--line); border-radius:var(--r);
  padding:2.2rem 1.75rem 1.9rem; display:flex; flex-direction:column; overflow:hidden;
  transition:transform .5s var(--ease), box-shadow .5s var(--ease);
}
.tier:hover{transform:translateY(-6px); box-shadow:var(--shadow)}
.tier.hot{background:var(--ink); border-color:var(--ink); box-shadow:var(--shadow-lg)}
.tier.hot::before{
  content:""; position:absolute; left:0; right:0; top:0; height:180px;
  background:radial-gradient(90% 100% at 50% 0,rgba(95,145,255,.30),transparent 70%);
}
.tier.hot > *{position:relative; z-index:2}
.tier.hot h3,.tier.hot .amt{color:#fff}
.tier.hot li{color:rgba(255,255,255,.76)}
.tier.hot li::before{background:var(--gold-2)}
.tier.hot .per{color:rgba(255,255,255,.5)}
.tier .kick{font-family:var(--mono); font-size:.6rem; letter-spacing:.2em; text-transform:uppercase; color:var(--royal); margin-bottom:1.1rem}
.tier.hot .kick{color:var(--gold-2)}
.tier h3{font-size:1.3rem}
.tier .amt{font-family:var(--serif); font-weight:400; font-size:clamp(2.6rem,3.6vw,3.2rem); line-height:1; letter-spacing:-.04em; margin:1rem 0 .3rem; color:var(--ink)}
.tier .per{font-family:var(--mono); font-size:.66rem; letter-spacing:.12em; text-transform:uppercase; color:var(--muted)}
.tier ul{list-style:none; padding:0; margin:1.7rem 0 2rem; display:grid; gap:.68rem}
.tier li{position:relative; padding-left:1.5rem; font-size:.9rem; line-height:1.5; color:var(--body)}
.tier li::before{content:""; position:absolute; left:0; top:.55em; width:7px; height:7px; border-radius:2px; background:var(--royal); transform:rotate(45deg)}
.tier .btn{margin-top:auto; width:100%}

.rates{width:100%; border-collapse:collapse; background:var(--white); border:1px solid var(--line); border-radius:var(--r); overflow:hidden; margin-top:1.8rem}
.rates th,.rates td{text-align:left; padding:1.15rem 1.4rem; border-bottom:1px solid var(--line); font-size:.94rem}
.rates th{font-family:var(--mono); font-size:.62rem; letter-spacing:.18em; text-transform:uppercase; color:var(--muted); font-weight:500; background:var(--bone-2)}
.rates tr:last-child td{border-bottom:0}
.rates tbody tr{transition:background .3s var(--ease)}
.rates tbody tr:hover{background:var(--bone)}
.rates td:last-child{text-align:right; font-family:var(--serif); font-size:1.12rem; color:var(--ink); white-space:nowrap}

/* ---------- day pass band ---------- */
.dpass{
  position:relative; display:grid; grid-template-columns:auto 1fr auto; gap:clamp(1.6rem,4vw,3rem);
  align-items:center; border-radius:var(--r); overflow:hidden; color:#fff;
  padding:clamp(1.9rem,4vw,2.9rem) clamp(1.9rem,4.5vw,3.4rem);
  background:linear-gradient(102deg,var(--royal) 0%,#0F1E9C 58%,#0A1266 100%);
  box-shadow:0 30px 70px -34px rgba(20,38,173,.72);
}
.dpass::after{content:""; position:absolute; right:-8%; top:-70%; width:min(460px,60%); aspect-ratio:1; border-radius:50%; background:radial-gradient(circle,rgba(255,255,255,.16),transparent 66%)}
.dpass > *{position:relative; z-index:2}
.dpass .amt{font-family:var(--serif); font-weight:400; font-size:clamp(2.9rem,6vw,4.2rem); line-height:1; letter-spacing:-.04em}
.dpass .amt small{display:block; font-family:var(--mono); font-size:.62rem; letter-spacing:.2em; text-transform:uppercase; opacity:.78; margin-top:.6rem}
.dpass h3{color:#fff; font-size:clamp(1.4rem,2.2vw,1.85rem)}
.dpass p{color:rgba(255,255,255,.82); font-size:.96rem; margin-top:.5rem; max-width:52ch}

/* ---------- quote ---------- */
.quote{
  position:relative; font-family:var(--serif); font-weight:400;
  font-size:clamp(1.5rem,2.9vw,2.35rem); line-height:1.24; letter-spacing:-.028em; color:var(--ink);
  padding-left:2rem; border-left:2px solid var(--royal);
}
.dark .quote{color:#fff; border-color:var(--gold)}
.statline{display:grid; grid-template-columns:repeat(3,1fr); gap:1.6rem; margin-top:2.6rem; padding-top:2.2rem; border-top:1px solid var(--line)}
.dark .statline{border-color:var(--line-dk)}
.statline b{display:block; font-family:var(--serif); font-weight:400; font-size:clamp(1.6rem,2.4vw,2.1rem); letter-spacing:-.03em; color:var(--ink); line-height:1}
.dark .statline b{color:#fff}
.statline span{display:block; font-family:var(--mono); font-size:.6rem; letter-spacing:.18em; text-transform:uppercase; color:var(--muted); margin-top:.6rem; line-height:1.5}

/* ---------- funders / list panel ---------- */
.panel{background:var(--ink); border-radius:var(--r); padding:clamp(1.9rem,3.4vw,2.8rem); position:relative; overflow:hidden}
.panel::after{content:""; position:absolute; left:-16%; bottom:-46%; width:min(420px,70%); aspect-ratio:1; border-radius:50%; background:radial-gradient(circle,rgba(233,201,27,.20),transparent 66%)}
.panel > *{position:relative; z-index:2}
.panel h3{color:#fff; font-size:1.32rem}
.panel ul{list-style:none; padding:0; margin:1.7rem 0 0; display:grid; gap:0}
.panel li{color:rgba(255,255,255,.82); font-size:.95rem; padding:.95rem 0; border-bottom:1px solid var(--line-dk); line-height:1.5}
.panel li:last-child{border-bottom:0; padding-bottom:0}

/* ---------- press ---------- */
.press-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:1.05rem}
.pcard{
  background:var(--white); border:1px solid var(--line); border-radius:var(--r-sm);
  padding:1.5rem 1.4rem; display:flex; flex-direction:column; gap:.65rem;
  transition:transform .45s var(--ease), box-shadow .45s var(--ease);
}
.pcard:hover{transform:translateY(-5px); box-shadow:var(--shadow)}
.pcard .outlet{font-family:var(--mono); font-size:.6rem; letter-spacing:.18em; text-transform:uppercase; color:var(--royal)}
.pcard h4{font-size:1rem; line-height:1.3; font-weight:400; letter-spacing:-.015em}
.pcard .go{margin-top:auto; padding-top:.9rem; font-family:var(--mono); font-size:.6rem; letter-spacing:.16em; text-transform:uppercase; color:var(--muted)}

/* ---------- contact ---------- */
.ilist{list-style:none; padding:0; margin:0; display:grid; gap:0}
.ilist li{display:grid; grid-template-columns:34px 1fr; gap:1.1rem; align-items:start; padding:1.4rem 0; border-bottom:1px solid var(--line)}
.ilist li:first-child{padding-top:0}
.ilist li:last-child{border-bottom:0}
.ilist .ic{width:34px; height:34px; border-radius:9px; background:var(--bone-2); color:var(--royal); display:grid; place-items:center}
.ilist .ic svg{width:16px; height:16px}
.ilist dt{font-family:var(--mono); font-size:.6rem; letter-spacing:.2em; text-transform:uppercase; color:var(--muted); margin-bottom:.45rem}
.ilist dd{margin:0; font-size:1.02rem; color:var(--ink); line-height:1.55}
.ilist dd a{border-bottom:1px solid var(--line); transition:border-color .3s var(--ease), color .3s var(--ease)}
.ilist dd a:hover{color:var(--royal); border-color:var(--royal)}
.hours{width:100%; border-collapse:collapse; font-size:.94rem; margin-top:.3rem}
.hours td{padding:.5rem 0; border-bottom:1px solid var(--line); color:var(--body)}
.hours td:last-child{text-align:right; font-family:var(--mono); font-size:.82rem; color:var(--ink)}
.hours tr:last-child td{border-bottom:0}
.map{border-radius:var(--r); overflow:hidden; border:1px solid var(--line); min-height:400px; background:var(--bone-2)}
.map iframe{width:100%; height:100%; min-height:400px; border:0; display:block; filter:saturate(.75) contrast(1.03)}

form{display:grid; gap:1.05rem}
.f2{display:grid; grid-template-columns:1fr 1fr; gap:1.05rem}
label{display:block; font-family:var(--mono); font-size:.6rem; letter-spacing:.18em; text-transform:uppercase; color:var(--muted); margin-bottom:.5rem}
input,select,textarea{
  width:100%; font:inherit; font-size:.97rem; color:var(--ink); background:var(--white);
  border:1px solid var(--line); border-radius:10px; padding:.85rem 1rem;
  transition:border-color .3s var(--ease), box-shadow .3s var(--ease);
}
input::placeholder,textarea::placeholder{color:#A3ABBC}
input:focus,select:focus,textarea:focus{outline:0; border-color:var(--royal); box-shadow:0 0 0 3px rgba(20,38,173,.16)}
textarea{min-height:140px; resize:vertical}
.formnote{
  display:none; background:var(--white); border:1px solid var(--line); border-left:2px solid var(--royal);
  border-radius:10px; padding:1.05rem 1.3rem; font-size:.92rem; color:var(--body);
}
.formnote.show{display:block; animation:fadeUp .5s var(--ease)}

/* ---------- FAQ ---------- */
.faq{border-top:1px solid var(--line)}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{
  cursor:pointer; list-style:none; position:relative; padding:1.5rem 3rem 1.5rem 0;
  font-family:var(--serif); font-size:clamp(1.1rem,1.6vw,1.32rem); letter-spacing:-.02em; color:var(--ink);
  transition:color .3s var(--ease);
}
.faq summary:hover{color:var(--royal)}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after,.faq summary::before{
  content:""; position:absolute; right:.4rem; top:50%; background:var(--royal);
  transition:transform .4s var(--ease), opacity .3s var(--ease);
}
.faq summary::after{width:14px; height:1.6px; transform:translateY(-50%)}
.faq summary::before{width:1.6px; height:14px; right:calc(.4rem + 6.2px); transform:translateY(-50%)}
.faq details[open] summary::before{transform:translateY(-50%) rotate(90deg); opacity:0}
.faq .ans{padding:0 3.5rem 1.7rem 0; color:var(--muted); font-size:.97rem; line-height:1.68}

/* ---------- CTA band ---------- */
.cta-band{
  position:relative; border-radius:var(--r); overflow:hidden; background:var(--ink); color:#fff;
  padding:clamp(2.4rem,5vw,4.2rem);
  display:flex; align-items:center; justify-content:space-between; gap:2.5rem; flex-wrap:wrap;
}
.cta-band::after{content:""; position:absolute; left:-10%; bottom:-120%; width:min(560px,80%); aspect-ratio:1; border-radius:50%; background:radial-gradient(circle,rgba(31,58,200,.52),transparent 66%)}
.cta-band > *{position:relative; z-index:2}
.cta-band p{color:rgba(255,255,255,.74); margin-top:1rem; max-width:46ch}

/* ---------- footer ---------- */
.ftr{background:var(--ink); color:rgba(255,255,255,.62)}
.ftr .wrap{padding-block:clamp(56px,7vw,90px)}
.ftr-top{display:grid; grid-template-columns:1.6fr 1fr 1fr 1.3fr; gap:2.6rem}
.ftr h4{font-family:var(--mono); font-size:.6rem; letter-spacing:.2em; text-transform:uppercase; color:rgba(255,255,255,.4); font-weight:500; margin:0 0 1.3rem}
.ftr ul{list-style:none; padding:0; margin:0; display:grid; gap:.72rem}
.ftr a,.ftr button{
  background:none; border:0; padding:0; text-align:left; cursor:pointer;
  font-size:.93rem; color:rgba(255,255,255,.62); transition:color .3s var(--ease);
}
.ftr a:hover,.ftr button:hover{color:#fff}
.ftr .fmark{display:flex; align-items:center; gap:.85rem; margin-bottom:1.2rem}
.ftr .fmark .mark{
  min-width:58px; height:40px; padding:0 .6rem; border-radius:11px; background:var(--royal); color:#fff;
  display:grid; place-items:center; font-family:var(--serif); font-size:1rem; position:relative; overflow:hidden;
}
.ftr .fmark .mark::after{content:""; position:absolute; left:22%; right:22%; bottom:7px; height:2px; background:var(--gold); border-radius:2px}
.ftr .fmark b{font-family:var(--serif); font-weight:400; font-size:1.3rem; color:#fff; letter-spacing:-.025em}
.ftr .blurb{font-size:.92rem; color:rgba(255,255,255,.5); max-width:34ch; line-height:1.65}
.funders{font-size:.82rem; color:rgba(255,255,255,.38); line-height:1.65; margin-top:2.6rem; max-width:80ch}
.ftr-btm{margin-top:2rem; padding-top:1.8rem; border-top:1px solid var(--line-dk); display:flex; justify-content:space-between; gap:1.4rem; flex-wrap:wrap; font-family:var(--mono); font-size:.66rem; letter-spacing:.1em; color:rgba(255,255,255,.36)}

/* ---------- responsive ---------- */
.split.stretch{align-items:stretch}
.split.stretch > div:last-child{display:flex; flex-direction:column}
.split.stretch .map{flex:1 1 auto}
.split.stretch .btn{align-self:flex-start}

@media (max-width:1080px){
  .tiers{grid-template-columns:repeat(2,1fr)}
  .press-grid{grid-template-columns:repeat(2,1fr)}
  .ftr-top{grid-template-columns:1fr 1fr}
  .g4{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:900px){
  .nav{display:none}
  .hdr-cta .btn-outline{display:none}
  .burger{display:block}
  .stats{grid-template-columns:repeat(2,1fr)}
  .stats > div:nth-child(2n){border-right:0}
  .stats > div:nth-child(-n+2){border-bottom:1px solid var(--line-dk)}
  .split,.split.lean,.feat{grid-template-columns:1fr}
  .feat.flip .feat-media{order:0}
  .g3,.g2{grid-template-columns:1fr}
  .dpass{grid-template-columns:1fr; gap:1.5rem}
  .statline{grid-template-columns:1fr; gap:1.3rem}
  .frame.tall{aspect-ratio:4/3}
  .scroll-cue{display:none}
  .f2{grid-template-columns:1fr}
  .cta-band{flex-direction:column; align-items:flex-start}
}
@media (max-width:600px){
  body{font-size:16px}
  .tiers{grid-template-columns:1fr}
  .press-grid{grid-template-columns:1fr}
  .ftr-top{grid-template-columns:1fr; gap:2.2rem}
  .stats{grid-template-columns:1fr}
  .stats > div{border-right:0; border-bottom:1px solid var(--line-dk)}
  .brand .txt span{display:none}
  .hdr .wrap{gap:.9rem}
  .brand{gap:.6rem}
  .brand .txt b{font-size:1.16rem}
  .rates th,.rates td{padding:.9rem 1rem; font-size:.88rem}
  .quote{padding-left:1.3rem}
  .faq .ans{padding-right:1rem}
}
