/* Dream Chaser Elite - shared site styles.
   Brand tokens live in theme.css (loaded first). Hand-built static site, no runtime.
   Motion is progressive: everything is visible without JS and with reduced motion. */

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:88px}
body{margin:0;background:var(--dce-ink);color:var(--dce-text);font-family:var(--dce-font-body);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{max-width:100%;display:block;height:auto}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;cursor:pointer}
h1,h2,h3,h4{font-family:var(--dce-font-display);font-weight:400;text-transform:uppercase;line-height:.95;letter-spacing:.01em;margin:0;text-wrap:balance}
p{margin:0 0 1em}
:focus-visible{outline:2px solid var(--dce-accent);outline-offset:3px;border-radius:4px}
::selection{background:var(--dce-accent);color:#fff}

.wrap{width:min(1180px,100% - 40px);margin-inline:auto}
.wrap-narrow{width:min(820px,100% - 40px);margin-inline:auto}
.section{padding:clamp(64px,9vw,128px) 0;position:relative}
.section-alt{background:var(--dce-panel)}
.eyebrow{display:inline-flex;align-items:center;gap:10px;font-size:13px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--dce-accent-text);margin:0 0 18px}
.eyebrow::before{content:"";width:28px;height:2px;background:var(--dce-accent)}
.h-xl{font-size:clamp(46px,8.2vw,112px)}
.h-lg{font-size:clamp(38px,5.6vw,76px)}
.h-md{font-size:clamp(28px,3.4vw,44px)}
.h-sm{font-size:clamp(22px,2.2vw,28px);letter-spacing:.02em}
.lead{font-size:clamp(18px,1.6vw,21px);color:var(--dce-muted);max-width:60ch}
.muted{color:var(--dce-muted)}
.center{text-align:center}
.center .lead{margin-inline:auto}
.section-head{margin-bottom:clamp(36px,5vw,64px)}

/* The signature move: one outlined word per headline, echoing the outlined logo */
.outline{color:transparent;-webkit-text-stroke:1.5px var(--dce-accent);text-stroke:1.5px var(--dce-accent);position:relative;white-space:nowrap}
.outline.is-in,.no-js .outline{animation:dce-fill 1.1s .35s cubic-bezier(.2,.7,.2,1) forwards}
@keyframes dce-fill{to{color:var(--dce-accent-text)}}

/* Buttons */
.btn{--bg:var(--dce-accent);display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:54px;padding:0 30px;border-radius:999px;border:2px solid var(--bg);background:var(--bg);color:#fff;font-weight:800;font-size:15px;letter-spacing:.08em;text-transform:uppercase;position:relative;overflow:hidden;isolation:isolate;transition:transform .25s cubic-bezier(.2,.7,.2,1),box-shadow .25s,background .25s;will-change:transform}
.btn::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.38) 50%,transparent 65%);transform:translateX(-120%) skewX(-12deg)}
.btn:hover{transform:translateY(-2px);box-shadow:0 14px 40px -12px var(--dce-accent-glow)}
.btn:hover::after{animation:dce-shine .8s ease}
.btn:active{transform:translateY(0) scale(.98)}
.btn-ghost{--bg:transparent;border-color:rgba(255,255,255,.28);color:var(--dce-text)}
.btn-ghost:hover{border-color:#fff;box-shadow:none}
.btn-lg{min-height:62px;padding:0 38px;font-size:16px}
.btn-block{width:100%}
.btn .arr{transition:transform .25s}
.btn:hover .arr{transform:translateX(4px)}
.btn[disabled]{opacity:.55;pointer-events:none}
@keyframes dce-shine{to{transform:translateX(120%) skewX(-12deg)}}
.cta-note{font-size:14px;color:var(--dce-muted);margin-top:14px}

/* Header */
.site-header{position:sticky;top:0;z-index:50;background:rgba(10,10,11,.72);backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);border-bottom:1px solid transparent;transition:border-color .3s,background .3s}
.site-header.is-stuck{border-color:var(--dce-line);background:rgba(10,10,11,.92)}
.site-header .wrap{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:76px}
.brand img{height:50px;width:auto}
.nav{display:flex;align-items:center;gap:30px}
.nav a:not(.btn){font-size:14px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--dce-muted);position:relative;padding:6px 0;transition:color .2s}
.nav a:not(.btn)::after{content:"";position:absolute;left:0;bottom:0;height:2px;width:100%;background:var(--dce-accent);transform:scaleX(0);transform-origin:left;transition:transform .3s cubic-bezier(.2,.7,.2,1)}
.nav a:not(.btn):hover,.nav a[aria-current=page]{color:#fff}
.nav a:not(.btn):hover::after,.nav a[aria-current=page]::after{transform:scaleX(1)}
.nav .btn{min-height:46px;padding:0 22px;font-size:13px}
.nav-toggle{display:none;width:46px;height:46px;border-radius:12px;border:1px solid var(--dce-line);background:transparent;position:relative}
.nav-toggle span,.nav-toggle span::before,.nav-toggle span::after{position:absolute;left:12px;right:12px;height:2px;background:#fff;content:"";transition:transform .3s,opacity .2s}
.nav-toggle span{top:22px}.nav-toggle span::before{left:0;right:0;top:-7px}.nav-toggle span::after{left:0;right:0;top:7px}
.nav-open .nav-toggle span{background:transparent}
.nav-open .nav-toggle span::before{transform:translateY(7px) rotate(45deg)}
.nav-open .nav-toggle span::after{transform:translateY(-7px) rotate(-45deg)}
.funnel-header .wrap{justify-content:center;min-height:68px}
.funnel-header .brand img{height:44px}

/* Hero */
.hero{position:relative;min-height:min(92vh,900px);display:flex;align-items:flex-end;padding:clamp(120px,16vh,180px) 0 0;overflow:hidden;isolation:isolate}
.hero-media{position:absolute;inset:0;z-index:-3}
.hero-media img{width:100%;height:100%;object-fit:cover;object-position:50% 22%;opacity:.5;transform:scale(1.06);animation:dce-kenburns 18s ease-out forwards}
@keyframes dce-kenburns{to{transform:scale(1)}}
.hero::before{content:"";position:absolute;inset:0;z-index:-2;background:linear-gradient(180deg,rgba(10,10,11,.55) 0%,rgba(10,10,11,.35) 35%,var(--dce-ink) 96%),linear-gradient(90deg,rgba(10,10,11,.88) 0%,rgba(10,10,11,.55) 45%,transparent 80%)}
.hero-spot{position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(520px circle at var(--mx,70%) var(--my,35%),var(--dce-accent-soft),transparent 65%);transition:opacity .4s}
.court-lines{position:absolute;right:-6%;bottom:-8%;width:min(760px,80vw);z-index:-1;opacity:.5;pointer-events:none}
.court-lines path,.court-lines circle,.court-lines line{fill:none;stroke:var(--dce-accent);stroke-width:1.5;stroke-dasharray:1;stroke-dashoffset:1;animation:dce-draw 2.6s .4s cubic-bezier(.4,0,.2,1) forwards}
@keyframes dce-draw{to{stroke-dashoffset:0}}
.hero-inner{padding-bottom:clamp(36px,6vh,72px)}
.badge{display:inline-flex;align-items:center;gap:10px;padding:8px 16px 8px 12px;border-radius:999px;border:1px solid var(--dce-line);background:rgba(255,255,255,.04);font-size:13px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;margin-bottom:26px}
.dot{width:9px;height:9px;border-radius:50%;background:var(--dce-accent);animation:dce-pulse 2s infinite}
@keyframes dce-pulse{0%{box-shadow:0 0 0 0 var(--dce-accent-glow)}70%{box-shadow:0 0 0 12px transparent}100%{box-shadow:0 0 0 0 transparent}}
.hero h1{max-width:none}
.hero h1 .line{display:block;overflow:hidden}
.hero h1 .line>span{display:inline-block;transform:translateY(105%);animation:dce-rise .9s cubic-bezier(.2,.7,.2,1) forwards}
.hero h1 .line:nth-child(2)>span{animation-delay:.1s}.hero h1 .line:nth-child(3)>span{animation-delay:.2s}
@keyframes dce-rise{to{transform:translateY(0)}}
.hero .lead{margin:26px 0 34px;color:#d8d5cf}
.hero-cta{display:flex;flex-wrap:wrap;gap:14px;align-items:center}
.stats{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--dce-line);margin-top:clamp(40px,6vh,72px)}
.stat{padding:26px 20px 30px 0}
.stat+.stat{padding-left:28px;border-left:1px solid var(--dce-line)}
.stat b{display:block;font-family:var(--dce-font-display);font-weight:400;font-size:clamp(40px,5.4vw,72px);line-height:1;color:#fff}
.stat b i{font-style:normal;color:var(--dce-accent-text)}
.stat>span{font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--dce-muted);font-weight:700}

/* Page hero (inner pages) */
.page-hero{padding:clamp(72px,10vw,130px) 0 clamp(48px,6vw,80px);position:relative;overflow:hidden;border-bottom:1px solid var(--dce-line);background:radial-gradient(60% 120% at 85% 0%,var(--dce-accent-soft),transparent 60%)}
.page-hero h1{max-width:16ch}
.page-hero .lead{margin-top:22px}

/* Marquee */
.marquee{border-block:1px solid var(--dce-line);background:var(--dce-accent);color:#fff;overflow:hidden;transform:rotate(-1.2deg) scale(1.02);margin:clamp(20px,3vw,40px) 0}
.marquee-track{display:flex;width:max-content;animation:dce-marquee 30s linear infinite}
.marquee:hover .marquee-track{animation-play-state:paused}
.marquee span{font-family:var(--dce-font-display);font-size:clamp(22px,2.6vw,34px);text-transform:uppercase;letter-spacing:.04em;padding:14px 26px;display:inline-flex;align-items:center;gap:52px;white-space:nowrap}
.marquee span::after{content:"";width:12px;height:12px;border-radius:50%;border:2px solid #fff}
@keyframes dce-marquee{to{transform:translateX(-50%)}}

/* Grids and cards */
.grid{display:grid;gap:22px}
.g-2{grid-template-columns:repeat(2,1fr)}.g-3{grid-template-columns:repeat(3,1fr)}.g-4{grid-template-columns:repeat(4,1fr)}
.split{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(32px,6vw,90px);align-items:center}
.split.flip>:first-child{order:2}
.card{position:relative;background:var(--dce-panel-2);border:1px solid var(--dce-line);border-radius:22px;padding:34px 30px;overflow:hidden;transition:transform .4s cubic-bezier(.2,.7,.2,1),border-color .3s,background .3s;transform-style:preserve-3d}
.card::before{content:"";position:absolute;inset:0;background:radial-gradient(380px circle at var(--cx,50%) var(--cy,0%),var(--dce-accent-soft),transparent 60%);opacity:0;transition:opacity .35s;pointer-events:none}
.card:hover{transform:translateY(-6px);border-color:var(--dce-accent)}
.card:hover::before{opacity:1}
.card .num{font-family:var(--dce-font-display);font-size:64px;line-height:1;color:transparent;-webkit-text-stroke:1.5px var(--dce-accent);display:block;margin-bottom:26px}
.card h3{margin-bottom:12px}
.card p{color:var(--dce-muted);margin:0}
.card-link{display:inline-flex;align-items:center;gap:8px;margin-top:22px;font-weight:800;font-size:14px;letter-spacing:.12em;text-transform:uppercase;color:var(--dce-accent-text)}
.card-link .arr{transition:transform .25s}
.card:hover .card-link .arr{transform:translateX(5px)}
.card-media{margin:-34px -30px 26px;aspect-ratio:16/10;overflow:hidden}
.card-media img{width:100%;height:100%;object-fit:cover;transition:transform .8s cubic-bezier(.2,.7,.2,1)}
.card:hover .card-media img{transform:scale(1.06)}
.tag{display:inline-block;font-size:12px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;padding:6px 12px;border-radius:999px;background:var(--dce-accent-soft);color:var(--dce-accent-text);margin-bottom:16px}

.quote{font-family:var(--dce-font-display);text-transform:uppercase;font-size:clamp(26px,3.2vw,42px);line-height:1.05;padding-left:26px;border-left:4px solid var(--dce-accent)}
.photo{border-radius:26px;overflow:hidden;position:relative;border:1px solid var(--dce-line)}
.photo img{width:100%;height:100%;object-fit:cover}
.photo-tall{aspect-ratio:4/5}
.photo-frame::after{content:"";position:absolute;inset:14px;border:1px solid rgba(255,255,255,.22);border-radius:16px;pointer-events:none}
.cred{display:flex;flex-wrap:wrap;gap:10px;margin:26px 0 32px;padding:0;list-style:none}
.cred li{padding:9px 16px;border:1px solid var(--dce-line);border-radius:999px;font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.check{list-style:none;padding:0;margin:22px 0 0;display:grid;gap:12px}
.check li{padding-left:34px;position:relative;color:#d8d5cf}
.check li::before{content:"";position:absolute;left:0;top:4px;width:20px;height:20px;border-radius:50%;background:var(--dce-accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M5.5 10.5l3 3 6-7' fill='none' stroke='%23fff' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/cover}

/* Schedule */
.sched{width:100%;border-collapse:collapse;font-size:16px}
.sched th,.sched td{padding:18px 16px;text-align:left;border-bottom:1px solid var(--dce-line);vertical-align:top}
.sched thead th{font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--dce-muted)}
.sched tbody th{font-family:var(--dce-font-display);font-weight:400;font-size:22px;text-transform:uppercase;white-space:nowrap}
.sched td{color:#d8d5cf}
.sched td small{display:block;color:var(--dce-muted)}
.sched tbody tr{transition:background .25s}
.sched tbody tr:hover{background:rgba(255,255,255,.03)}
.table-scroll{overflow-x:auto;border:1px solid var(--dce-line);border-radius:22px;background:var(--dce-panel-2);padding:6px 14px}

/* Steps */
.steps{counter-reset:s;display:grid;grid-template-columns:repeat(3,1fr);gap:0;border:1px solid var(--dce-line);border-radius:26px;overflow:hidden}
.step{padding:40px 32px;position:relative;background:var(--dce-panel-2)}
.step+.step{border-left:1px solid var(--dce-line)}
.step::before{counter-increment:s;content:"0" counter(s);font-family:var(--dce-font-display);font-size:88px;line-height:.8;position:absolute;right:20px;top:24px;color:rgba(255,255,255,.05)}
.step h3{margin-bottom:12px}
.step p{color:var(--dce-muted);margin:0}

/* Gallery */
.gallery{display:grid;grid-template-columns:repeat(12,1fr);gap:14px}
.gallery figure{margin:0;border-radius:20px;overflow:hidden;position:relative;aspect-ratio:1;grid-column:span 4}
.gallery figure.wide{grid-column:span 8;aspect-ratio:2/1}
.gallery img{width:100%;height:100%;object-fit:cover;transition:transform .9s cubic-bezier(.2,.7,.2,1),filter .4s;filter:saturate(.85)}
.gallery figure:hover img{transform:scale(1.07);filter:saturate(1.1)}

/* Testimonials (rendered from the portal store only; hidden when empty) */
[data-testimonials][hidden]{display:none}
.tcard{background:var(--dce-panel-2);border:1px solid var(--dce-line);border-radius:22px;padding:30px}
.tcard blockquote{margin:0 0 18px;font-size:18px;color:#e6e3dd}
.tcard cite{font-style:normal;font-weight:800;font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--dce-muted)}
.stars{color:var(--dce-accent-text);letter-spacing:3px;margin-bottom:12px}

/* CTA band */
.cta-band{position:relative;overflow:hidden;text-align:center;padding:clamp(72px,10vw,140px) 0;background:var(--dce-accent);color:#fff;isolation:isolate}
.cta-band::before{content:"";position:absolute;inset:-40%;z-index:-1;background:repeating-linear-gradient(115deg,rgba(0,0,0,.09) 0 2px,transparent 2px 46px);animation:dce-drift 24s linear infinite}
@keyframes dce-drift{to{transform:translateX(92px)}}
.cta-band .eyebrow{color:#fff}.cta-band .eyebrow::before{background:#fff}
.cta-band .lead{color:rgba(255,255,255,.9);margin:20px auto 34px}
.cta-band .btn{--bg:#0a0a0b;border-color:#0a0a0b}
.cta-band .btn:hover{box-shadow:0 18px 44px -14px rgba(0,0,0,.6)}
.cta-band .outline{-webkit-text-stroke-color:#0a0a0b}
.cta-band .outline.is-in{animation-name:dce-fill-ink}
@keyframes dce-fill-ink{to{color:#0a0a0b}}

/* Forms */
.form-card{background:var(--dce-panel-2);border:1px solid var(--dce-line);border-radius:26px;padding:clamp(24px,3.4vw,40px);position:relative}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.field{display:flex;flex-direction:column;gap:7px}
.field.full{grid-column:1/-1}
.field label{font-size:12px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--dce-muted)}
.field label em{font-style:normal;color:var(--dce-muted);font-weight:600;letter-spacing:.04em;text-transform:none}
.field input,.field select,.field textarea{width:100%;min-height:54px;padding:14px 16px;border-radius:14px;border:1.5px solid var(--dce-line);background:#0d0d0f;color:#fff;font:inherit;font-size:16px;transition:border-color .2s,box-shadow .2s}
.field textarea{min-height:120px;resize:vertical}
.field select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M5 8l5 5 5-5' fill='none' stroke='%239a958e' stroke-width='2'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;background-size:18px;padding-right:44px}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--dce-accent);box-shadow:0 0 0 4px var(--dce-accent-soft)}
.field .is-bad{border-color:#ff6b5e}
.consent{display:grid;gap:14px;margin:22px 0}
.consent label{display:grid;grid-template-columns:22px 1fr;gap:12px;font-size:12.5px;line-height:1.55;color:var(--dce-muted);cursor:pointer}
.consent input{width:20px;height:20px;margin:2px 0 0;accent-color:var(--dce-accent)}
.consent a{color:#fff;text-decoration:underline;text-underline-offset:3px}
.form-error{display:none;margin:0 0 16px;padding:12px 16px;border-radius:12px;background:rgba(255,107,94,.12);border:1px solid rgba(255,107,94,.4);color:#ffb4ac;font-size:14px}
.form-error.is-on{display:block}
.form-done{text-align:center;padding:30px 0}
.form-done .tick{width:74px;height:74px;border-radius:50%;background:var(--dce-accent);display:grid;place-items:center;margin:0 auto 22px;animation:dce-pop .6s cubic-bezier(.2,1.4,.4,1)}
@keyframes dce-pop{from{transform:scale(0)}}
.hp{position:absolute!important;left:-9999px!important;opacity:0;height:0;width:0}
.spinner{width:18px;height:18px;border-radius:50%;border:2.5px solid rgba(255,255,255,.35);border-top-color:#fff;animation:dce-spin .7s linear infinite;display:none}
.is-busy .spinner{display:inline-block}
@keyframes dce-spin{to{transform:rotate(360deg)}}

/* Funnel */
.funnel{padding:clamp(28px,4vw,56px) 0 clamp(60px,8vw,100px)}
.funnel-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(28px,4vw,60px);align-items:start}
.funnel h1{font-size:clamp(38px,5.4vw,70px)}
.vsl{aspect-ratio:16/9;border-radius:22px;overflow:hidden;border:1px solid var(--dce-line);background:#000;margin:26px 0;position:relative}
.vsl iframe,.vsl video{width:100%;height:100%;border:0;display:block}
.vsl[hidden]{display:none}
.progress{display:flex;gap:8px;margin-bottom:24px}
.progress i{flex:1;height:5px;border-radius:99px;background:var(--dce-line);position:relative;overflow:hidden}
.progress i::after{content:"";position:absolute;inset:0;background:var(--dce-accent);transform:scaleX(0);transform-origin:left;transition:transform .5s cubic-bezier(.2,.7,.2,1)}
.progress i.on::after{transform:scaleX(1)}
.step-label{font-size:12px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--dce-accent-text);margin-bottom:8px}
.fstep{display:none}.fstep.is-on{display:block;animation:dce-fadein .45s ease}
@keyframes dce-fadein{from{opacity:0;transform:translateY(14px)}}
.sticky-col{position:sticky;top:96px}
.cal-days{display:grid;grid-auto-flow:column;grid-auto-columns:74px;gap:10px;overflow-x:auto;padding:4px 2px 14px;scroll-snap-type:x proximity}
.cal-day{scroll-snap-align:start;border:1.5px solid var(--dce-line);background:#0d0d0f;border-radius:16px;padding:12px 6px;text-align:center;transition:border-color .2s,background .2s,transform .2s}
.cal-day small{display:block;font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--dce-muted)}
.cal-day b{display:block;font-family:var(--dce-font-display);font-weight:400;font-size:30px;line-height:1.1}
.cal-day:hover{border-color:#fff;transform:translateY(-2px)}
.cal-day.is-on{background:var(--dce-accent);border-color:var(--dce-accent)}
.cal-day.is-on small{color:#fff}
.cal-slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;margin-top:8px}
.cal-slot{min-height:52px;border-radius:14px;border:1.5px solid var(--dce-line);background:#0d0d0f;font-weight:800;letter-spacing:.04em;transition:all .2s}
.cal-slot:hover{border-color:#fff}
.cal-slot.is-on{background:#fff;color:#0a0a0b;border-color:#fff}
.cal-empty{color:var(--dce-muted);padding:18px 0}
.summary{border:1px dashed var(--dce-line);border-radius:16px;padding:16px 18px;margin:18px 0;font-size:15px;color:#d8d5cf}
.summary b{color:#fff}
.back-link{background:none;border:0;color:var(--dce-muted);font-size:14px;text-decoration:underline;text-underline-offset:3px;margin-top:16px;padding:6px 0}
.trust{display:flex;flex-wrap:wrap;gap:8px 20px;font-size:13px;color:var(--dce-muted);margin-top:18px}
.trust span::before{content:"\2713";color:var(--dce-accent-text);margin-right:7px;font-weight:900}

/* Plans */
.term-toggle{display:inline-flex;padding:5px;border-radius:999px;border:1px solid var(--dce-line);background:#0d0d0f;margin-bottom:26px;position:relative}
.term-toggle button{border:0;background:transparent;padding:11px 20px;border-radius:999px;font-weight:800;font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--dce-muted);transition:color .2s,background .25s}
.term-toggle button.is-on{background:var(--dce-accent);color:#fff}
.term-toggle button small{display:block;font-size:10px;letter-spacing:.06em;opacity:.85}
.plan{cursor:pointer;text-align:left;width:100%}
.plan.is-on{border-color:var(--dce-accent);background:linear-gradient(180deg,var(--dce-accent-soft),transparent 70%),var(--dce-panel-2)}
.plan .price{font-family:var(--dce-font-display);font-size:clamp(44px,4.6vw,60px);line-height:1;margin:14px 0 4px}
.plan .price small{font-family:var(--dce-font-body);font-size:15px;color:var(--dce-muted);font-weight:600;letter-spacing:0;text-transform:none}
.plan .per{font-size:14px;color:var(--dce-muted);min-height:22px}
.plan .pop{position:absolute;top:18px;right:18px;margin:0}

/* FAQ */
.faq{border-top:1px solid var(--dce-line)}
.faq details{border-bottom:1px solid var(--dce-line)}
.faq summary{list-style:none;cursor:pointer;padding:24px 44px 24px 0;position:relative;font-family:var(--dce-font-display);font-size:clamp(20px,2vw,26px);text-transform:uppercase}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";position:absolute;right:6px;top:50%;transform:translateY(-50%);font-size:32px;color:var(--dce-accent-text);transition:transform .3s;font-family:var(--dce-font-body);font-weight:300}
.faq details[open] summary::after{transform:translateY(-50%) rotate(45deg)}
.faq details p{color:var(--dce-muted);max-width:70ch;padding-bottom:24px;margin:0}

/* Contact */
.contact-list{list-style:none;padding:0;margin:30px 0 0;display:grid;gap:18px}
.contact-list li{display:grid;grid-template-columns:52px 1fr;gap:16px;align-items:center}
.contact-list .ico{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;background:var(--dce-accent-soft);color:var(--dce-accent-text)}
.contact-list small{display:block;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--dce-muted);font-weight:800}
.contact-list a:hover{color:var(--dce-accent-text)}

/* Legal */
.legal{padding-bottom:clamp(60px,8vw,110px)}
.legal-hero{width:min(820px,100% - 40px);margin:0 auto;padding:clamp(60px,8vw,110px) 0 30px}
.legal-hero h1{font-size:clamp(42px,6vw,80px)}
.legal-meta{color:var(--dce-muted);margin-top:14px}
.legal-body{width:min(820px,100% - 40px);margin:0 auto;color:#d8d5cf}
.legal-body h2{font-size:clamp(24px,2.6vw,32px);margin:48px 0 16px;color:#fff;scroll-margin-top:96px}
.legal-body h3{font-family:var(--dce-font-body);text-transform:none;font-weight:800;font-size:18px;line-height:1.35;letter-spacing:0;margin:26px 0 10px;color:#fff}
.legal-body a{color:#fff;text-decoration:underline;text-underline-offset:3px}
.legal-body li{margin-bottom:8px}
.legal-toc{background:var(--dce-panel-2);border:1px solid var(--dce-line);border-radius:18px;padding:22px 26px;font-size:15px}
.legal-toc ul,.legal-toc ol{margin:8px 0 0;padding-left:20px;columns:2;column-gap:30px}

/* Footer */
.site-footer{border-top:1px solid var(--dce-line);background:#070708;padding:clamp(48px,6vw,80px) 0 28px;font-size:15px}
.foot-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1.2fr;gap:36px}
.site-footer img{height:64px;width:auto;margin-bottom:18px}
.site-footer h4{font-family:var(--dce-font-body);font-weight:800;font-size:12px;letter-spacing:.18em;color:var(--dce-muted);margin-bottom:16px}
.site-footer ul{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.site-footer a{color:#d8d5cf;transition:color .2s}
.site-footer a:hover{color:var(--dce-accent-text)}
.foot-legal{display:flex;flex-wrap:wrap;gap:10px 24px;justify-content:space-between;border-top:1px solid var(--dce-line);margin-top:44px;padding-top:24px;color:var(--dce-muted);font-size:13px}
.foot-legal nav{display:flex;gap:20px;flex-wrap:wrap}
.foot-sms{color:var(--dce-muted);font-size:12px;max-width:90ch;margin-top:18px}
.funnel-footer{padding:26px 0;text-align:center}
.funnel-footer .foot-legal{justify-content:center;margin:0;border:0;padding:0}

/* Sticky mobile CTA */
.mobile-cta{position:fixed;left:12px;right:12px;bottom:12px;z-index:40;display:none;transform:translateY(140%);transition:transform .4s cubic-bezier(.2,.7,.2,1)}
.mobile-cta.is-on{transform:none}
.mobile-cta .btn{width:100%;box-shadow:0 14px 40px -8px rgba(0,0,0,.8)}

/* Scroll reveal: only hides when JS has confirmed it can reveal */
.js [data-reveal]{opacity:0;transform:translateY(26px);transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1);transition-delay:calc(var(--i,0)*90ms)}
.js [data-reveal=left]{transform:translateX(-34px)}
.js [data-reveal=right]{transform:translateX(34px)}
.js [data-reveal=zoom]{transform:scale(.94)}
.js [data-reveal].is-in{opacity:1;transform:none}

@media (max-width:980px){
  .g-3,.g-4{grid-template-columns:repeat(2,1fr)}
  .split,.funnel-grid{grid-template-columns:1fr}
  .split.flip>:first-child{order:0}
  .sticky-col{position:static}
  .foot-grid{grid-template-columns:1fr 1fr}
  .steps{grid-template-columns:1fr}.step+.step{border-left:0;border-top:1px solid var(--dce-line)}
  .nav{position:fixed;inset:76px 0 auto 0;flex-direction:column;align-items:stretch;gap:0;padding:12px 20px 26px;background:rgba(10,10,11,.98);border-bottom:1px solid var(--dce-line);transform:translateY(-130%);transition:transform .4s cubic-bezier(.2,.7,.2,1);visibility:hidden}
  .nav-open .nav{transform:none;visibility:visible}
  .nav a:not(.btn){padding:16px 0;border-bottom:1px solid var(--dce-line);font-size:16px}
  .nav .btn{margin-top:18px;min-height:54px}
  .nav-toggle{display:block}
  .mobile-cta{display:block}
  body.has-mobile-cta{padding-bottom:84px}
}
@media (max-width:640px){
  body{font-size:16px}
  .g-2,.g-3,.g-4,.form-grid{grid-template-columns:1fr}
  .stats{grid-template-columns:1fr 1fr 1fr}
  .stat{padding:18px 8px 20px 0}.stat+.stat{padding-left:12px}
  .stat>span{font-size:10.5px;letter-spacing:.08em}
  .hero{min-height:auto;padding-top:96px}
  .hero-cta .btn{width:100%}
  .gallery figure,.gallery figure.wide{grid-column:span 6;aspect-ratio:1}
  .gallery figure.wide{grid-column:span 12;aspect-ratio:16/10}
  .foot-grid{grid-template-columns:1fr}
  .legal-toc ul,.legal-toc ol{columns:1}
  .brand img{height:42px}
  .court-lines{opacity:.28}
  .sched tbody th{font-size:18px;white-space:normal}
}
@media (hover:none){.hero-spot{opacity:.7}.card:hover{transform:none}}

[hidden]{display:none!important}
.legal-toc h2{font-family:var(--dce-font-body);text-transform:uppercase;font-weight:800;font-size:12px;letter-spacing:.18em;color:var(--dce-muted);margin:0 0 6px}
.funnel-grid>*,.split>*,.grid>*,.fstep{min-width:0}
.cal-days{max-width:100%}
body.is-typing .mobile-cta{display:none}
.tick{width:74px;height:74px;border-radius:50%;background:var(--dce-accent);display:grid;place-items:center;margin:0 auto 22px}
.card-media img{object-position:50% 18%}
@media (max-width:640px){.btn-lg{padding:0 22px;font-size:14px;letter-spacing:.06em;min-height:58px}.badge{font-size:11px;letter-spacing:.1em;padding:7px 14px 7px 10px}.term-toggle button{padding:10px 13px;font-size:12px}}
.plan .price small{display:block;margin-top:8px}

/* ================= v2 polish (2026-09-17): logo-font highlights, living CTA, scroll motion, photo treatment ================= */

/* Highlight word = the logo's chamfered block face (Squada One), filled teal, with a swipe underline */

/* Primary CTA: breathing glow ring, looping shine, arrow that keeps nudging forward */
.btn:not(.btn-ghost){animation:dce-breathe 2.6s ease-in-out infinite;background-image:linear-gradient(120deg,var(--bg) 0%,var(--dce-accent-hi) 50%,var(--bg) 100%);background-size:220% 100%;background-position:0% 0}
.btn:not(.btn-ghost):hover{background-position:100% 0;transition:background-position .6s ease,transform .25s,box-shadow .25s}
.btn:not(.btn-ghost)::after{animation:dce-shine 3.4s 1.2s ease-in-out infinite}
.btn:not(.btn-ghost) .arr{animation:dce-nudge 1.6s ease-in-out infinite}
.cta-band .btn:not(.btn-ghost){background-image:none;animation-name:dce-breathe-ink}
@keyframes dce-breathe{0%,100%{box-shadow:0 0 0 0 var(--dce-accent-glow),0 10px 30px -14px var(--dce-accent-glow)}50%{box-shadow:0 0 0 10px transparent,0 16px 44px -10px var(--dce-accent-glow)}}
@keyframes dce-breathe-ink{0%,100%{box-shadow:0 0 0 0 rgba(10,10,11,.45)}50%{box-shadow:0 0 0 12px transparent}}
@keyframes dce-nudge{0%,100%{transform:translateX(0)}50%{transform:translateX(5px)}}
@keyframes dce-shine{0%{transform:translateX(-120%) skewX(-12deg)}35%,100%{transform:translateX(120%) skewX(-12deg)}}
.mobile-cta .btn{animation:dce-breathe 2.2s ease-in-out infinite}

/* Marquee: two identical halves, translate -50% = a seamless infinite loop. Second row runs the other way. */
.marquee{margin-inline:-3%;width:106%}
.marquee-track{animation-duration:36s}
.marquee.rev{background:transparent;color:var(--dce-text);transform:rotate(1deg) scale(1.02);border-color:var(--dce-line);margin-top:-6px}
.marquee.rev .marquee-track{animation-direction:reverse;animation-duration:44s}
.marquee.rev span{color:transparent;-webkit-text-stroke:1px rgba(255,255,255,.4);font-family:var(--dce-font-logo)}
.marquee.rev span::after{border-color:var(--dce-accent)}

/* Scroll progress */
.scroll-progress{position:fixed;left:0;top:0;height:3px;width:100%;z-index:60;background:linear-gradient(90deg,var(--dce-accent),var(--dce-accent-text));transform:scaleX(var(--sp,0));transform-origin:left;pointer-events:none}

/* Photo treatment: one grade, one overlay, one frame. Makes phone pics and pro shots read as a set. */
.photo img,.card-media img,.gallery img{filter:contrast(1.04) saturate(.92)}
.photo::before,.card-media::after,.gallery figure::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:1;background:linear-gradient(180deg,rgba(10,10,11,0) 45%,rgba(10,10,11,.62) 100%),linear-gradient(135deg,rgba(0,121,141,.16),rgba(10,10,11,0) 55%);mix-blend-mode:normal}
.card-media{position:relative}
.photo{box-shadow:0 40px 80px -40px rgba(0,0,0,.9)}
.photo-frame::after{z-index:2}
.gallery figure{border:1px solid var(--dce-line)}
.gallery figcaption{position:absolute;left:16px;bottom:14px;z-index:2;font-size:12px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;opacity:0;transform:translateY(8px);transition:opacity .35s,transform .35s}
.gallery figure:hover figcaption{opacity:1;transform:none}

/* Scroll motion: photos wipe open, images drift (parallax), stagger cascades */
.js .photo[data-reveal],.js .gallery figure[data-reveal]{clip-path:inset(0 0 100% 0 round 26px);transform:none;opacity:1;transition:clip-path 1.1s cubic-bezier(.2,.7,.2,1);transition-delay:calc(var(--i,0)*110ms)}
.js .photo[data-reveal].is-in,.js .gallery figure[data-reveal].is-in{clip-path:inset(0 0 0 0 round 26px)}
[data-parallax] img{transform:translate3d(0,var(--py,0px),0) scale(1.14);will-change:transform}
.js .section-head[data-reveal] .eyebrow::before{width:0;transition:width .8s .2s cubic-bezier(.2,.7,.2,1)}
.js .section-head[data-reveal].is-in .eyebrow::before{width:28px}
.js .sched tbody tr{opacity:0;transform:translateX(-18px);transition:opacity .6s,transform .6s cubic-bezier(.2,.7,.2,1);transition-delay:calc(var(--r,0)*90ms)}
.js .table-scroll.is-in .sched tbody tr{opacity:1;transform:none}
.stat b{font-variant-numeric:tabular-nums}
.stat{position:relative}
.stat::after{content:"";position:absolute;left:0;top:-1px;height:2px;width:0;background:var(--dce-accent);transition:width 1.4s cubic-bezier(.2,.7,.2,1)}
.stat+.stat::after{left:28px}
.stat.is-in::after{width:56px}

/* Confirmation pass (thank-you + welcome) */
.confetti{position:fixed;inset:0;z-index:70;pointer-events:none}
.pass{position:relative;display:grid;grid-template-columns:1fr auto;text-align:left;max-width:720px;margin:34px auto 0;border-radius:26px;background:linear-gradient(135deg,#1a1a1d,#101012);border:1px solid var(--dce-line);overflow:hidden;box-shadow:0 50px 100px -50px var(--dce-accent-glow);animation:dce-pass-in .9s .15s cubic-bezier(.2,.9,.3,1) both}
@keyframes dce-pass-in{from{opacity:0;transform:translateY(30px) rotateX(18deg) scale(.96)}}
.pass::before{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,.09) 50%,transparent 60%);transform:translateX(-100%);animation:dce-pass-sheen 4.5s 1.2s ease-in-out infinite;pointer-events:none}
@keyframes dce-pass-sheen{0%{transform:translateX(-100%)}40%,100%{transform:translateX(100%)}}
.pass-main{padding:30px 32px}
.pass-label{font-size:11px;font-weight:800;letter-spacing:.22em;text-transform:uppercase;color:var(--dce-accent-text);margin:0 0 10px}
.pass-name{font-family:var(--dce-font-logo);text-transform:uppercase;font-size:clamp(34px,5vw,52px);line-height:.95;margin:0 0 16px;overflow-wrap:anywhere}
.pass-meta{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}
.pass-meta li{padding:7px 13px;border-radius:999px;border:1px solid var(--dce-line);font-size:12.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#d8d5cf}
.pass-side{position:relative;min-width:170px;padding:26px 28px;display:grid;place-content:center;text-align:center;background:var(--dce-accent);color:#fff}
.pass-side::before{content:"";position:absolute;left:-9px;top:0;bottom:0;width:18px;background:radial-gradient(circle at 9px 12px,#121214 7px,transparent 7.5px) 0 0/18px 28px repeat-y}
.pass-side small{display:block;font-size:12px;font-weight:800;letter-spacing:.2em;text-transform:uppercase}
.pass-side b{display:block;font-family:var(--dce-font-display);font-weight:400;font-size:76px;line-height:.95}
.pass-side em{display:block;font-style:normal;font-weight:800;font-size:17px;margin-top:6px}
.pass-actions{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-top:26px}
.tick{animation:dce-pop .7s cubic-bezier(.2,1.5,.4,1) both}
.tick svg path{stroke-dasharray:30;stroke-dashoffset:30;animation:dce-tickdraw .5s .45s ease forwards}
@keyframes dce-tickdraw{to{stroke-dashoffset:0}}
@media (max-width:640px){.pass{grid-template-columns:1fr}.pass-side{display:flex;gap:14px;align-items:baseline;justify-content:center;padding:18px}.pass-side b{font-size:44px}.pass-side::before{left:0;right:0;top:-9px;bottom:auto;width:auto;height:18px;background:radial-gradient(circle at 12px 9px,#121214 7px,transparent 7.5px) 0 0/28px 18px repeat-x}.pass-main{padding:24px 22px 28px}}

/* Reduced motion = calmer, not dead. Big movement is removed; brand loops keep running slowly. */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .hero-media img{animation:none;transform:none}
  .hero h1 .line>span{animation:none;transform:none}
  .court-lines path,.court-lines circle,.court-lines line{animation-duration:1.2s}
  .js [data-reveal],.js [data-reveal=left],.js [data-reveal=right],.js [data-reveal=zoom]{transform:none;transition:opacity .9s ease}
  .js .photo[data-reveal],.js .gallery figure[data-reveal]{clip-path:none;opacity:0;transition:opacity .9s ease}
  .js .photo[data-reveal].is-in,.js .gallery figure[data-reveal].is-in{opacity:1}
  .js .sched tbody tr{transform:none}
  [data-parallax] img{transform:scale(1.02)}
  .marquee-track{animation-duration:70s}
  .marquee.rev .marquee-track{animation-duration:84s}
  .cta-band::before{animation:none}
  .pass{animation-name:dce-fadein}
  .card:hover,.btn:hover{transform:none}
}

/* funnel header: logo left, contact right (Baseline funnel pattern) */
.funnel-header .wrap{justify-content:space-between}
.funnel-contact{display:flex;align-items:center;gap:22px}
.funnel-contact a{display:inline-flex;align-items:center;gap:9px;min-height:44px;font-size:14px;font-weight:700;letter-spacing:.03em;color:var(--dce-text);transition:color .2s}
.funnel-contact a:hover{color:var(--dce-accent-text)}
.funnel-contact svg{color:var(--dce-accent-text);flex:none}
@media (max-width:640px){.funnel-contact{gap:12px}.funnel-contact a span{font-size:12px}.funnel-contact a[data-dce-tel]~a span{display:none}}
.consent label+label{padding-top:12px;border-top:1px dashed var(--dce-line)}
.form-grid{align-items:end}

/* ---------- live location map + pulsing beacons ---------- */
.loc-split{grid-template-columns:.85fr 1.15fr;align-items:center}
.map-frame{position:relative;border-radius:28px;overflow:hidden;border:1px solid var(--dce-line);box-shadow:0 50px 100px -50px var(--dce-accent-glow),0 40px 80px -40px rgba(0,0,0,.9);isolation:isolate}
.map-frame::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:500;border-radius:28px;box-shadow:inset 0 0 90px 20px rgba(10,10,11,.75)}
.map{height:clamp(380px,52vw,560px);background:#0d0d0f radial-gradient(circle at 50% 50%,rgba(0,121,141,.12),transparent 60%);font-family:var(--dce-font-body)}
.map:not(.is-live)::before{content:"Loading live map";position:absolute;inset:0;display:grid;place-items:center;color:var(--dce-muted);font-size:13px;font-weight:700;letter-spacing:.18em;text-transform:uppercase}
.map.map-failed::before{content:"Santa Barbara and Goleta, California"}
.map .leaflet-tile-pane{filter:invert(1) hue-rotate(180deg) grayscale(.75) brightness(1.02) contrast(1.22)}
.map.leaflet-container{background:#0d0d0f}
html{overflow-x:clip}
.map-live{position:absolute;left:18px;top:18px;z-index:600;display:inline-flex;align-items:center;gap:9px;padding:8px 14px;border-radius:999px;background:rgba(10,10,11,.82);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid var(--dce-line);font-size:11px;font-weight:800;letter-spacing:.18em;text-transform:uppercase}
.beacon-wrap{background:none;border:0}
.beacon{position:relative;display:block;width:28px;height:28px}
.beacon i{position:absolute;left:50%;top:50%;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;background:var(--dce-accent);border:2px solid #fff;box-shadow:0 0 18px 4px var(--dce-accent-glow);z-index:2;animation:dce-beacon-core 2.4s ease-in-out infinite;animation-delay:var(--d,0s)}
.beacon::before,.beacon::after{content:"";position:absolute;left:50%;top:50%;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;background:var(--dce-accent);opacity:0;animation:dce-beacon 2.4s cubic-bezier(.2,.6,.3,1) infinite;animation-delay:var(--d,0s)}
.beacon::after{animation-delay:calc(var(--d,0s) + 1.2s)}
@keyframes dce-beacon{0%{transform:scale(1);opacity:.7}100%{transform:scale(6.5);opacity:0}}
@keyframes dce-beacon-core{0%,100%{transform:scale(1)}50%{transform:scale(1.25)}}
.beacon-sm{width:22px;height:22px;flex:none}
.beacon-sm i,.beacon-sm::before,.beacon-sm::after{width:10px;height:10px;margin:-5px 0 0 -5px}
.beacon-sm::before,.beacon-sm::after{animation-name:dce-beacon-sm}
@keyframes dce-beacon-sm{0%{transform:scale(1);opacity:.7}100%{transform:scale(3.4);opacity:0}}
.loc-list{list-style:none;margin:30px 0 0;padding:0;display:grid;gap:12px}
.loc-item{width:100%;display:grid;grid-template-columns:22px 1fr auto;gap:16px;align-items:center;text-align:left;padding:18px 20px;border-radius:18px;border:1px solid var(--dce-line);background:var(--dce-panel-2);transition:border-color .25s,transform .25s,background .25s}
.loc-item b{display:block;font-family:var(--dce-font-display);font-weight:400;font-size:24px;text-transform:uppercase;line-height:1.05}
.loc-item small{color:var(--dce-muted);font-size:14px}
.loc-item .arr{color:var(--dce-accent-text);transition:transform .25s}
.loc-item:hover,.loc-item.is-on{border-color:var(--dce-accent);transform:translateX(6px);background:linear-gradient(90deg,var(--dce-accent-soft),transparent 70%),var(--dce-panel-2)}
.loc-item:hover .arr{transform:translateX(4px)}
.dce-popup .leaflet-popup-content-wrapper{background:rgba(16,16,18,.96);color:var(--dce-text);border:1px solid var(--dce-line);border-radius:16px;box-shadow:0 24px 60px -20px #000}
.dce-popup .leaflet-popup-tip{background:rgba(16,16,18,.96);border:1px solid var(--dce-line)}
.dce-popup .leaflet-popup-content{margin:16px 18px;min-width:200px}
.map-pop small{display:block;font-size:10.5px;font-weight:800;letter-spacing:.2em;text-transform:uppercase;color:var(--dce-accent-text)}
.map-pop b{display:block;font-family:var(--dce-font-display);font-weight:400;font-size:26px;text-transform:uppercase;line-height:1.05;margin:4px 0 6px}
.map-pop span{display:block;font-size:13.5px;line-height:1.5;color:var(--dce-muted)}
.map-pop a{display:inline-block;margin-top:10px;font-size:12.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--dce-accent-text)!important}
.map.leaflet-container .leaflet-control-zoom a{background:rgba(16,16,18,.92);color:#fff;border-color:var(--dce-line)}
.map.leaflet-container .leaflet-control-zoom a:hover{background:var(--dce-accent)}
.map.leaflet-container .leaflet-control-attribution{background:rgba(10,10,11,.7);color:#8a857d;font-size:10px}
.map.leaflet-container .leaflet-control-attribution a{color:#b9b4ac}
.map.leaflet-container .leaflet-bar{border:0;box-shadow:none}
@media (max-width:980px){.loc-split{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){.beacon::before,.beacon::after{animation-duration:3.6s}.beacon i{animation:none}}

/* ---------- highlight word, metric-matched (v5) ----------
   Squada One caps are 0.656em tall, Anton caps are 0.859em. 0.859 / 0.656 = 1.31, so the highlight is set
   at 1.31em and its caps land exactly on the Anton cap line and baseline. line-height:0 keeps the bigger
   font from pushing the line box open, so line spacing stays even. The underline is a background on the
   inline box, so it can never drift away from the word. */
.outline,.hl{font-family:var(--dce-font-logo);font-size:1.31em;line-height:0;letter-spacing:.005em;vertical-align:baseline;display:inline;white-space:nowrap}
.outline{--ul:var(--dce-accent);-webkit-text-stroke-width:.018em;background:linear-gradient(var(--ul),var(--ul)) 0 92%/0% .07em no-repeat;padding-bottom:.02em}
.outline.is-in{animation:dce-fill 1.1s .35s cubic-bezier(.2,.7,.2,1) forwards,dce-swipe .9s .75s cubic-bezier(.2,.7,.2,1) forwards}
@keyframes dce-swipe{to{background-size:100% .07em}}
.cta-band .outline{--ul:#0a0a0b}
.cta-band .outline.is-in{animation-name:dce-fill-ink,dce-swipe}
.hl{color:var(--dce-accent-text)}
/* headings that carry a highlight get a touch more leading so the underline clears the next line */
h1:has(.outline),h2:has(.outline){line-height:1.02}
.hero h1 .line{padding-bottom:.06em;margin-bottom:-.02em}
@media (prefers-reduced-motion:reduce){.outline{color:var(--dce-accent-text);background-size:100% .07em}}
@media (prefers-reduced-motion:reduce){.cta-band .outline{color:#0a0a0b}}

/* ---------- no cut-off heads: safe defaults before JS runs, and gallery frames shaped like their photos ---------- */
.photo img,.card-media img,.gallery img,.hero-media img{object-position:50% 12%}
.gallery figure,.gallery figure.wide{grid-column:span 5;aspect-ratio:auto;min-height:0}
.gallery figure.g7{grid-column:span 7;aspect-ratio:3/2}
.gallery figure img{position:absolute;inset:0}
[data-parallax] img{transform:translate3d(0,var(--py,0px),0) scale(1.1)}
@media (max-width:640px){.gallery figure,.gallery figure.g5,.gallery figure.g7{grid-column:span 12;aspect-ratio:4/3}.gallery figure.g7{aspect-ratio:3/2}}

/* gallery v7: justified rows. flex-grow = the photo's aspect ratio, so every frame in a row shares one height
   and shows 100% of its photo. No crop means no cut heads, at any width. */
.gallery{display:flex;flex-wrap:wrap;gap:14px}
.gallery figure,.gallery figure.wide{flex:var(--ar,1.4) 1 calc(var(--ar,1.4)*30%);min-width:0;aspect-ratio:var(--ar,1.4);grid-column:auto}
.gallery figure img{position:static;width:100%;height:100%;object-fit:cover}
.gallery figure:hover img{transform:none;filter:saturate(1.15) contrast(1.06)}
@media (max-width:640px){.gallery figure,.gallery figure.wide{flex:1 1 100%;aspect-ratio:var(--ar,1.4)}}
[data-parallax] img.no-zoom,.card:hover .card-media img.no-zoom{transform:none!important}

/* ---------- v8: laptop fit (MacBook 1280x800 to 1512x982) ----------
   The first scale was tuned on a tall external monitor and read oversized on a 13 to 14 inch laptop.
   Type now tops out lower, and the hero sizes against viewport HEIGHT as well as width so the headline,
   CTA and stat row all land above the fold on a short screen. */
body{font-size:16px}
.h-xl{font-size:clamp(42px,5.4vw,88px)}
.h-lg{font-size:clamp(32px,3.9vw,58px)}
.h-md{font-size:clamp(25px,2.7vw,38px)}
.h-sm{font-size:clamp(20px,1.8vw,25px)}
.lead{font-size:clamp(16px,1.3vw,19px)}
.section{padding:clamp(56px,6.6vw,104px) 0}
.section-head{margin-bottom:clamp(30px,3.8vw,52px)}
.wrap{width:min(1160px,100% - 48px)}
.quote{font-size:clamp(22px,2.5vw,34px)}
.marquee span{font-size:clamp(19px,2vw,28px);padding:12px 22px;gap:44px}
.stat b{font-size:clamp(34px,3.9vw,56px)}
.stat{padding:20px 18px 24px 0}
.card{padding:30px 26px}
.card-media{margin:-30px -26px 22px}
.card .num{font-size:54px;margin-bottom:20px}
.btn{min-height:50px;padding:0 26px;font-size:14px}
.btn-lg{min-height:56px;padding:0 32px;font-size:15px}
.site-header .wrap{min-height:68px}
.brand img{height:44px}
.funnel h1{font-size:clamp(34px,4.1vw,58px)}
.page-hero{padding:clamp(60px,7.5vw,104px) 0 clamp(40px,4.6vw,64px)}
.cta-band{padding:clamp(64px,7.5vw,112px) 0}
.step{padding:34px 28px}
.step::before{font-size:72px}
.pass-side b{font-size:64px}
.hero{min-height:min(90vh,800px);padding-top:clamp(92px,12vh,140px)}
.hero .lead{margin:22px 0 28px}
.stats{margin-top:clamp(28px,4.5vh,56px)}
@media (min-width:981px){
  .hero h1{font-size:clamp(42px,min(5.4vw,9vh),88px)}
  .photo-tall{aspect-ratio:5/6;max-height:78vh}
  .map{height:clamp(340px,min(40vw,62vh),520px)}
}
/* locations: the highlighted city name must stay inside its own column, never under the map */
.loc-split{grid-template-columns:1fr 1.12fr;gap:clamp(28px,4.4vw,64px)}
.loc-split h2{font-size:clamp(28px,3.3vw,50px)}
.split>*{min-width:0}
.split h1,.split h2{overflow-wrap:break-word}
@media (max-width:1180px){.split h2 .outline,.funnel-grid h1 .outline{white-space:normal}}
@media (max-width:640px){body{font-size:16px}.hero{min-height:auto}.btn-lg{min-height:56px}}
@media (max-width:640px){.btn-lg{padding:0 22px;font-size:14px;letter-spacing:.06em}.stat{padding:16px 8px 18px 0}.stat+.stat{padding-left:12px}.card{padding:26px 22px}.card-media{margin:-26px -22px 20px}.wrap{width:min(1160px,100% - 40px)}}

/* Upfront package prices under each monthly plan on /programs (ticket 1de8cb77) */
.prepay{list-style:none;margin:18px 0 0;padding:14px 0 0;border-top:1px solid var(--dce-line);display:grid;gap:8px}
.prepay li{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:14px;color:var(--dce-muted)}
.prepay b{font-family:var(--dce-font-display);font-weight:400;font-size:22px;letter-spacing:.02em;color:var(--dce-text)}
