
:root{
--ink-900:#0B0E11; --ink-900-rgb:11,14,17;
--ink-800:#12171C; --ink-800-rgb:18,23,28;
--ink-700:#1C242B; --ink-700-rgb:28,36,43;
--ink-600:#46515C; --ink-400:#8A97A3; --ink-200:#C9D1D8; --ink-100:#E4E9ED;
--char-900:#1F2328; --char-800:#2B3137; --char-700:#363D44;
--paper:#F1F3F5; --paper-rgb:241,243,245; --surface:#FFFFFF; --surface-sunk:#E6E9ED;
--brand-800:#731324; --brand-800-rgb:115,19,36;
--brand-600:#A31D36; --brand-600-rgb:163,29,54;
--brand-500:#B8243F; --brand-500-rgb:184,36,63;
--brand-300:#F08394; --brand-300-rgb:240,131,148;
--brand-100:#F6E4E7;
--data-700:#0E6B6B; --data-400:#3FB5AC; --data-400-rgb:63,181,172; --data-100:#E0F0EF;
--text:var(--ink-600); --text-strong:var(--ink-700); --border:var(--ink-200);
--focus-ring:var(--brand-300);
--font-display:'Barlow Condensed','Arial Narrow',Arial,sans-serif;
--font-body:'Source Sans 3',-apple-system,BlinkMacSystemFont,sans-serif;
--container:1160px; --container-narrow:740px;
--s-2:.5rem;--s-3:.75rem;--s-4:1rem;--s-6:1.5rem;--s-8:2rem;--s-12:3rem;--s-16:4rem;--s-24:6rem;
--shadow-2:0 4px 8px rgba(var(--ink-900-rgb),.06),0 2px 4px rgba(var(--ink-900-rgb),.05);
--shadow-3:0 12px 24px rgba(var(--ink-900-rgb),.1),0 4px 8px rgba(var(--ink-900-rgb),.06);
--shadow-glow:0 0 0 1px rgba(var(--brand-600-rgb),.28),0 8px 40px rgba(var(--brand-600-rgb),.18);
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--text);font-family:var(--font-body);font-size:1.0625rem;line-height:1.65;-webkit-font-smoothing:antialiased;overflow-x:hidden}
h1,h2,h3{font-family:var(--font-display);color:var(--text-strong);margin:0 0 var(--s-4)}
h1{font-size:clamp(2.375rem,8.5vw,4.75rem);font-weight:700;line-height:1;letter-spacing:.005em;text-transform:uppercase}
h2{font-size:clamp(1.875rem,5.5vw,3.125rem);font-weight:700;line-height:1.05;letter-spacing:.005em;text-transform:uppercase}
h3{font-size:clamp(1.3125rem,3.2vw,1.625rem);font-weight:600;line-height:1.2;letter-spacing:0}
p{margin:0 0 var(--s-4)}
a{color:var(--brand-800);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1.5px;transition:color .15s}
a:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px;border-radius:2px}
.wrap{max-width:var(--container);margin:0 auto;padding:0 1.25rem}
.wrap-narrow{max-width:var(--container-narrow);margin:0 auto;padding:0 1.25rem}
section{padding:var(--s-16) 0;position:relative}
.eyebrow{font-size:.8125rem;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--brand-800);margin:0 0 var(--s-3)}
.lead{font-size:clamp(1.0625rem,2.4vw,1.375rem);line-height:1.55}
/* ===== scroll progress ===== */
.progress{position:fixed;top:0;left:0;height:3px;width:100%;transform-origin:0 50%;transform:scaleX(0);background:linear-gradient(90deg,var(--brand-600),var(--brand-300));z-index:70}
/* ===== buttons (magnetic) ===== */
.btn{white-space:nowrap;font-family:var(--font-body);font-size:1rem;font-weight:600;border-radius:8px;padding:.9375rem 1.75rem;min-height:52px;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;border:2px solid transparent;cursor:pointer;text-decoration:none;position:relative;overflow:hidden;transition:background-color .18s,border-color .18s,transform .18s cubic-bezier(.2,.8,.2,1),box-shadow .25s}
.btn-primary{background:var(--brand-600);color:#fff;border-color:var(--brand-600)}
.btn-primary:hover{background:var(--brand-500);border-color:var(--brand-500);color:#fff;text-decoration:none;box-shadow:var(--shadow-glow)}
.btn-primary:active{background:var(--brand-800);border-color:var(--brand-800);color:#fff;transform:translateY(1px) scale(.99)}
.btn-primary:focus-visible{outline:3px solid var(--focus-ring);outline-offset:3px}
.btn-primary::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.22) 50%,transparent 70%);transform:translateX(-120%);transition:transform .7s ease}
.btn-primary:hover::after{transform:translateX(120%)}
.btn-text{display:inline-flex;align-items:center;gap:.375rem;color:var(--brand-800);font-weight:600;padding:.5rem 0;border-bottom:2px solid rgba(var(--brand-800-rgb),.35);min-height:44px;text-decoration:none;font-size:1rem;transition:border-color .2s,gap .2s}
.btn-text:hover{border-bottom-color:var(--brand-800);color:var(--brand-800);text-decoration:none;gap:.625rem}
.btn-text:focus-visible{outline:3px solid var(--focus-ring);outline-offset:4px}
/* ===== nav ===== */
.nav{position:sticky;top:0;z-index:50;background:transparent;border-bottom:1px solid transparent;transition:background-color .3s,border-color .3s,box-shadow .3s,backdrop-filter .3s}
.nav.is-scrolled{background:rgba(var(--paper-rgb),.9);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom-color:var(--border);box-shadow:0 1px 14px rgba(var(--ink-900-rgb),.07)}
.nav__inner{max-width:var(--container);margin:0 auto;padding:.875rem 1.25rem;display:flex;align-items:center;justify-content:space-between;gap:1rem}
.brand{display:inline-flex;align-items:center;color:#fff;text-decoration:none;line-height:0;transition:color .3s}
.brand svg{display:block;height:44px;width:auto}
.brand:focus-visible{outline:3px solid var(--focus-ring);outline-offset:4px;border-radius:2px}
.nav.is-scrolled .brand{color:var(--brand-800)}
.footer__logo{display:inline-block;color:#fff;line-height:0;margin-bottom:var(--s-8)}
.footer__logo svg{display:block;height:56px;width:auto}
.nav__links{display:none;gap:1.75rem;align-items:center}
.nav__links a{color:rgba(255,255,255,.82);text-decoration:none;font-weight:500;font-size:.9375rem;transition:color .3s;position:relative}
.nav__links a::after{content:"";position:absolute;left:0;right:100%;bottom:-4px;height:2px;background:var(--brand-300);transition:right .25s ease}
.nav__links a:hover::after{right:0}
.nav.is-scrolled .nav__links a{color:var(--ink-700)}
.nav .btn{padding:.6875rem 1.25rem;min-height:44px;font-size:.9375rem}
/* ===== HERO: dark, animated aurora, spotlight ===== */
.hero{background:var(--char-800);color:#fff;padding:var(--s-16) 0 var(--s-24);margin-top:-72px;padding-top:calc(var(--s-16) + 72px);position:relative;overflow:hidden;isolation:isolate}
.hero__aurora{position:absolute;inset:-25%;z-index:-2;background:
  radial-gradient(38% 42% at 22% 28%,rgba(var(--brand-600-rgb),.30),transparent 62%),
  radial-gradient(34% 38% at 78% 22%,rgba(var(--data-400-rgb),.20),transparent 60%),
  radial-gradient(45% 45% at 62% 82%,rgba(var(--brand-300-rgb),.16),transparent 64%);
  animation:drift 22s ease-in-out infinite alternate}
@keyframes drift{0%{transform:translate3d(0,0,0) scale(1)}50%{transform:translate3d(-2.5%,2%,0) scale(1.06)}100%{transform:translate3d(2.5%,-2%,0) scale(1.02)}}
.hero__grain{position:absolute;inset:0;z-index:-1;opacity:.5;pointer-events:none;
  background-image:radial-gradient(rgba(255,255,255,.055) 1px,transparent 1px);background-size:3px 3px}
.hero__spot{position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:0;transition:opacity .4s;
  background:radial-gradient(420px circle at var(--mx,50%) var(--my,50%),rgba(var(--brand-300-rgb),.13),transparent 72%)}
.hero:hover .hero__spot{opacity:1}
.hero h1{color:#fff}
.hero .eyebrow{color:var(--brand-300)}
.hero .lead{color:rgba(255,255,255,.78)}
.hero__grid{display:grid;gap:var(--s-12);align-items:center}
.hero__actions{display:flex;flex-direction:column;gap:var(--s-4);align-items:flex-start;margin-top:var(--s-8)}
.hero .btn-text{color:var(--brand-300);border-bottom-color:rgba(var(--brand-300-rgb),.4)}
.hero .btn-text:hover{color:var(--brand-300);border-bottom-color:var(--brand-300)}
/* split-text char reveal */
.split .ch{display:inline-block;opacity:0;transform:translateY(.6em) rotateX(-40deg);animation:charIn .62s cubic-bezier(.2,.75,.3,1) both}
@keyframes charIn{to{opacity:1;transform:none}}
.split .sp{display:inline-block;width:.28em}
.fade-up{opacity:0;transform:translateY(16px);animation:fadeUp .7s ease-out both}
@keyframes fadeUp{to{opacity:1;transform:none}}
/* ===== job file (dark variant) ===== */
.jobfile{background:rgba(31,35,40,.86);border:1px solid rgba(255,255,255,.14);border-radius:14px;box-shadow:0 24px 60px rgba(0,0,0,.45);overflow:hidden;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.jobfile__bar{background:rgba(255,255,255,.07);color:#fff;padding:.8125rem 1.25rem;font-size:.8125rem;font-weight:600;letter-spacing:.07em;text-transform:uppercase;display:flex;justify-content:space-between;gap:1rem;border-bottom:1px solid rgba(255,255,255,.1)}
.jobfile__bar .tag{color:var(--brand-300)}
.jobfile__scroll{overflow-x:auto}
.jobfile__grid{display:grid;grid-template-columns:repeat(4,minmax(84px,1fr));gap:1px;background:rgba(255,255,255,.1);min-width:340px}
.jobfile__cell{background:rgba(11,14,17,.55);padding:.9375rem .75rem}
.jobfile__label{font-size:.6875rem;letter-spacing:.07em;text-transform:uppercase;color:rgba(255,255,255,.5)}
.jobfile__value{font-variant-numeric:tabular-nums;font-size:1.125rem;font-weight:600;color:var(--data-400);margin-top:.25rem;transition:color .4s}
.jobfile__value.is-dry{color:var(--data-400)}
.jobfile__photos{display:flex;gap:.5rem;padding:1rem 1.25rem;border-top:1px solid rgba(255,255,255,.1);flex-wrap:wrap}
.photoslot{width:64px;height:48px;border-radius:5px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.14);display:flex;align-items:center;justify-content:center;font-size:.5625rem;letter-spacing:.05em;color:rgba(255,255,255,.5);text-transform:uppercase;opacity:0;transform:scale(.9)}
.photoslot.is-in{animation:popIn .5s cubic-bezier(.2,.8,.3,1) both}
@keyframes popIn{to{opacity:1;transform:none}}
.jobfile__foot{padding:.9375rem 1.25rem;border-top:1px solid rgba(255,255,255,.1);font-size:.8125rem;color:rgba(255,255,255,.55)}
/* ===== MARQUEE ===== */
.marquee{background:var(--brand-600);color:#fff;padding:1.125rem 0;overflow:hidden;white-space:nowrap;border-top:2px solid var(--ink-900);border-bottom:2px solid var(--ink-900)}
.marquee__track{display:inline-flex;gap:3rem;animation:slide 34s linear infinite;will-change:transform}
.marquee span{font-family:var(--font-display);font-weight:800;font-size:clamp(1.125rem,3vw,1.75rem);letter-spacing:-.01em;display:inline-flex;align-items:center;gap:3rem}
.marquee span::after{content:"";width:9px;height:9px;background:rgba(255,255,255,.55);border-radius:50%;display:inline-block}
@keyframes slide{to{transform:translateX(-50%)}}
.marquee:hover .marquee__track{animation-play-state:paused}
/* ===== bands ===== */
.band-surface{background:var(--surface)}
.band-sunk{background:var(--surface-sunk)}
.band-inverse{background:var(--char-800);color:rgba(255,255,255,.82)}
.band-inverse h2,.band-inverse h3{color:#fff}
.band-inverse .eyebrow{color:var(--brand-300)}
/* ===== spotlight cards ===== */
.scard{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:1.875rem;overflow:hidden;transition:transform .3s cubic-bezier(.2,.8,.2,1),box-shadow .3s,border-color .3s}
.scard::before{content:"";position:absolute;inset:0;opacity:0;transition:opacity .3s;pointer-events:none;
  background:radial-gradient(360px circle at var(--mx,50%) var(--my,50%),rgba(var(--brand-600-rgb),.10),transparent 68%)}
.scard:hover{transform:translateY(-4px);box-shadow:var(--shadow-3);border-color:rgba(var(--brand-600-rgb),.35)}
.scard:hover::before{opacity:1}
.scard:focus-within{outline:3px solid var(--focus-ring);outline-offset:2px}
.scard h3{margin-bottom:var(--s-2)}
.scard p:last-child{margin-bottom:0}
.scard-signal{border-left:4px solid var(--brand-600)}
.step-num{font-family:var(--font-display);font-size:2.75rem;font-weight:800;line-height:1;color:rgba(var(--brand-800-rgb),.18);display:block;margin-bottom:.5rem}
.grid{display:grid;gap:var(--s-6)}
/* ===== sticky plan ===== */
.plan__sticky{position:sticky;top:96px}
.plan__steps{display:grid;gap:var(--s-6)}
.plan__step{border-left:3px solid var(--border);padding-left:1.5rem;transition:border-color .4s,opacity .4s}
.plan__step.is-active{border-left-color:var(--brand-600)}
.plan__step:not(.is-active){opacity:.55}
/* ===== bento value props ===== */
.bento{display:grid;gap:var(--s-4)}
.bento .scard h3{font-size:1.1875rem}
.bento .scard p{font-size:1rem;margin-bottom:0}
.bento__feature{background:var(--char-800);color:rgba(255,255,255,.8);border-color:var(--ink-800)}
.bento__feature h3{color:#fff}
.bento__feature::before{background:radial-gradient(360px circle at var(--mx,50%) var(--my,50%),rgba(var(--brand-300-rgb),.16),transparent 68%)}
/* ===== badges, form, explain, footer, callbar ===== */
.badge{display:inline-flex;align-items:center;gap:.375rem;font-size:.8125rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;padding:.3125rem .625rem;border-radius:4px;background:var(--brand-100);color:var(--brand-800);border:1px solid rgba(var(--brand-800-rgb),.25)}
.field{display:block;margin-bottom:1.25rem}
.field label{display:block;font-size:.9375rem;font-weight:600;color:#fff;margin-bottom:.4375rem}
.field input,.field textarea{width:100%;font-family:var(--font-body);font-size:1.0625rem;padding:.875rem 1rem;min-height:52px;border:1.5px solid rgba(255,255,255,.22);border-radius:8px;background:rgba(255,255,255,.06);color:#fff;transition:border-color .15s,box-shadow .15s}
.field input::placeholder,.field textarea::placeholder{color:rgba(255,255,255,.4)}
.field input:hover,.field textarea:hover{border-color:rgba(255,255,255,.4)}
.field input:focus,.field textarea:focus{outline:none;border-color:var(--brand-300);box-shadow:0 0 0 3px rgba(var(--brand-600-rgb),.28)}
.field textarea{min-height:104px;resize:vertical}
.explain{background:var(--brand-100);border-left:4px solid var(--brand-600);border-radius:10px;padding:1.875rem}
.explain h3{margin-bottom:var(--s-3)}
.explain p:last-child{margin-bottom:0}
.footer{background:var(--char-900);color:rgba(255,255,255,.72);padding:var(--s-12) 0 7rem;border-top:1px solid rgba(255,255,255,.1)}
.trust{display:flex;flex-wrap:wrap;gap:.5rem 1.25rem;font-size:.875rem;list-style:none;padding:0;margin:0 0 var(--s-6)}
.trust li{display:flex;align-items:center;gap:.5rem}
.trust li::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--brand-600);flex:none}
.footer__legal{font-size:.8125rem;color:rgba(255,255,255,.45);border-top:1px solid rgba(255,255,255,.1);padding-top:var(--s-6);margin:0}
.callbar{position:fixed;left:0;right:0;bottom:0;z-index:60;background:var(--surface);border-top:1px solid var(--border);box-shadow:var(--shadow-3);padding:.75rem 1rem calc(.75rem + env(safe-area-inset-bottom));transform:translateY(110%);transition:transform .3s cubic-bezier(.2,.8,.2,1)}
.callbar.is-shown{transform:none}
.callbar .btn{width:100%}
/* reveal */
.reveal{opacity:0;transform:translateY(24px);transition:opacity .65s cubic-bezier(.2,.75,.3,1),transform .65s cubic-bezier(.2,.75,.3,1)}
.reveal.is-visible{opacity:1;transform:none}
.reveal-d1{transition-delay:.08s}.reveal-d2{transition-delay:.16s}.reveal-d3{transition-delay:.24s}.reveal-d4{transition-delay:.32s}
/* before / after inside the job file */
.ba{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:rgba(255,255,255,.1)}
.ba__pane{margin:0;background:rgba(11,14,17,.55)}
.ba__img{position:relative;aspect-ratio:4/3;background-color:rgba(255,255,255,.04);background-size:cover;background-position:center;display:flex;align-items:center;justify-content:center;
 background-image:repeating-linear-gradient(45deg,rgba(255,255,255,.05) 0 6px,transparent 6px 12px)}
.ba__ph{font-size:.6875rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.55);background:rgba(11,14,17,.75);padding:.3125rem .625rem;border-radius:3px;border:1px solid rgba(255,255,255,.14)}
.ba__pane figcaption{display:flex;justify-content:space-between;align-items:center;gap:.5rem;padding:.625rem .75rem;font-size:.75rem;border-top:1px solid rgba(255,255,255,.1)}
.ba__day{letter-spacing:.06em;text-transform:uppercase;color:rgba(255,255,255,.5);font-weight:600}
.ba__read{font-variant-numeric:tabular-nums;font-weight:600;color:var(--data-400)}
.ba__read.is-dry{color:var(--data-400)}
/* responsive */
@media(min-width:600px){.hero__actions{flex-direction:row;align-items:center}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(2,1fr)}
 .bento{grid-template-columns:repeat(2,1fr)}.bento__feature{grid-column:span 2}}
@media(min-width:768px){body{font-size:1.125rem}section{padding:var(--s-24) 0}.wrap,.wrap-narrow{padding:0 2rem}}
@media(min-width:900px){.nav__links{display:flex}.grid-3{grid-template-columns:repeat(3,1fr)}
 .hero__grid{grid-template-columns:1.05fr .95fr}.callbar{display:none}.footer{padding-bottom:var(--s-12)}
 .bento{grid-template-columns:repeat(3,1fr)}.bento__feature{grid-column:span 2;grid-row:span 1}
 .plan__wrap{display:grid;grid-template-columns:.85fr 1.15fr;gap:var(--s-16);align-items:start}}
@media(prefers-reduced-motion:reduce){
 *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
 .reveal{opacity:1;transform:none}.split .ch{opacity:1;transform:none}.fade-up{opacity:1;transform:none}
 .photoslot{opacity:1;transform:none}.hero__aurora{animation:none}.marquee__track{animation:none}
 .plan__step:not(.is-active){opacity:1}}

/* ===== home hero photo (9/29): charcoal wash over a real scene, no cursor glow ===== */
.hero__photo{position:absolute;inset:0;z-index:-1;
  background:linear-gradient(90deg,rgba(43,49,55,.96) 0%,rgba(43,49,55,.88) 38%,rgba(43,49,55,.55) 70%,rgba(43,49,55,.35) 100%),
  url(/img/hero-home.jpg) center 60%/cover no-repeat}
@media(max-width:899px){.hero__photo{background:linear-gradient(180deg,rgba(43,49,55,.8) 0%,rgba(43,49,55,.9) 55%,rgba(43,49,55,.97) 100%),url(/img/hero-home.jpg) center/cover no-repeat}}

/* ---- added for interior pages ---- */
.page-hero{background:var(--char-800);color:#fff;padding:calc(var(--s-16) + 72px) 0 var(--s-16);margin-top:-72px;position:relative;overflow:hidden;isolation:isolate}
.page-hero::before{content:"";position:absolute;inset:-30%;z-index:-1;
 background:radial-gradient(40% 44% at 24% 30%,rgba(var(--brand-600-rgb),.22),transparent 62%),
            radial-gradient(36% 40% at 76% 26%,rgba(var(--data-400-rgb),.14),transparent 60%);
 animation:drift 24s ease-in-out infinite alternate}
.page-hero h1{color:#fff}
.page-hero .eyebrow{color:var(--brand-300)}
.page-hero .lead{color:rgba(255,255,255,.78)}
.page-hero .btn-text{color:var(--brand-300);border-bottom-color:rgba(var(--brand-300-rgb),.4)}
/* light-ground form fields (contact page) */
.field--light label{color:var(--ink-700)}
.field--light input,.field--light textarea{background:var(--surface);border-color:var(--border);color:var(--ink-700)}
.field--light input::placeholder,.field--light textarea::placeholder{color:var(--ink-400)}
.field--light input:hover,.field--light textarea:hover{border-color:var(--ink-400)}
.field--light input:focus,.field--light textarea:focus{border-color:var(--brand-800);box-shadow:0 0 0 3px rgba(var(--brand-800-rgb),.18)}
/* nav dropdown for services */
.nav__links .has-sub{position:relative}
.nav__links .sub{position:absolute;top:calc(100% + 10px);left:-1rem;min-width:250px;background:var(--surface);
 border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-3);padding:.5rem;display:none;flex-direction:column;gap:.125rem}
/* invisible bridge across the gap, so moving the cursor down does not drop :hover */
.nav__links .sub::before{content:"";position:absolute;left:0;right:0;top:-14px;height:14px}
/* widen the trigger's own hover area downward */
.nav__links .has-sub > a{padding-bottom:.75rem;margin-bottom:-.75rem}
.nav__links .has-sub:hover .sub,.nav__links .has-sub:focus-within .sub{display:flex}
.nav__links .sub a{color:var(--ink-700);padding:.5rem .75rem;border-radius:6px;font-size:.9375rem}
.nav__links .sub a::after{display:none}
.nav__links .sub a:hover{background:var(--surface-sunk);color:var(--brand-800)}
/* footer nav */
.footer__nav{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;list-style:none;padding:0;margin:0 0 var(--s-6);font-size:.9375rem}
.footer__nav a{color:rgba(255,255,255,.72);text-decoration:none}
.footer__nav a:hover{color:var(--brand-300)}
/* artifact router */
.pg{display:none}
.pg.is-on{display:block}

/* ---- photography ---- */
.page-hero--img::before{opacity:.45}
.page-hero--img::after{content:"";position:absolute;inset:0;z-index:-3;
 background:linear-gradient(90deg,rgba(11,14,17,.93) 0%,rgba(11,14,17,.78) 42%,rgba(11,14,17,.42) 100%),
            var(--hero-img) center/cover no-repeat}
.page-hero--img .wrap-narrow{position:relative;z-index:1}
/* full-bleed image band */
.band-img{position:relative;min-height:320px;background:var(--char-800) var(--band-img) center/cover no-repeat;
 display:flex;align-items:center;padding:var(--s-16) 0}
.band-img::after{content:"";position:absolute;inset:0;
 background:linear-gradient(90deg,rgba(11,14,17,.92) 0%,rgba(11,14,17,.62) 55%,rgba(11,14,17,.28) 100%)}
.band-img .wrap-narrow{position:relative;z-index:1}
.band-img h2{color:#fff}.band-img p{color:rgba(255,255,255,.82)}.band-img .eyebrow{color:var(--brand-300)}
/* inline feature image */
.figblock{margin:0;border-radius:14px;overflow:hidden;border:1px solid var(--border);box-shadow:var(--shadow-3)}
.figblock img{display:block;width:100%;height:auto}
.figblock figcaption{background:var(--char-700);color:rgba(255,255,255,.62);font-size:.8125rem;padding:.75rem 1.125rem}
/* thin decorative rule band */
.rule-img{height:180px;background:var(--char-800) var(--band-img) center/cover no-repeat;position:relative}
@media(max-width:600px){.rule-img{height:120px}}

/* ---- mobile menu ---- */
.navtoggle{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;
 background:transparent;border:2px solid rgba(255,255,255,.28);color:#fff;border-radius:8px;
 min-height:44px;min-width:44px;padding:.5rem .75rem;cursor:pointer;font:inherit;font-size:.875rem;font-weight:600;
 transition:border-color .2s,background-color .2s,color .2s}
.navtoggle:hover{border-color:var(--brand-300);color:var(--brand-300)}
.navtoggle:focus-visible{outline:3px solid var(--focus-ring);outline-offset:3px}
.nav.is-scrolled .navtoggle{border-color:var(--ink-200);color:var(--ink-700)}
.nav.is-scrolled .navtoggle:hover{border-color:var(--brand-800);color:var(--brand-800)}
.navtoggle__bars{position:relative;width:18px;height:12px;flex:none}
.navtoggle__bars i{position:absolute;left:0;right:0;height:2px;background:currentColor;border-radius:2px;transition:transform .25s,opacity .2s}
.navtoggle__bars i:nth-child(1){top:0}
.navtoggle__bars i:nth-child(2){top:5px}
.navtoggle__bars i:nth-child(3){top:10px}
.navtoggle[aria-expanded="true"] .navtoggle__bars i:nth-child(1){transform:translateY(5px) rotate(45deg)}
.navtoggle[aria-expanded="true"] .navtoggle__bars i:nth-child(2){opacity:0}
.navtoggle[aria-expanded="true"] .navtoggle__bars i:nth-child(3){transform:translateY(-5px) rotate(-45deg)}
.mobilenav{position:fixed;inset:0;z-index:70;background:var(--char-800);
 display:flex;flex-direction:column;padding:1rem 1.25rem calc(1.5rem + env(safe-area-inset-bottom));
 overflow-y:auto;opacity:0;visibility:hidden;transform:translateY(-8px);
 transition:opacity .22s ease,transform .22s ease,visibility .22s}
.mobilenav.is-open{opacity:1;visibility:visible;transform:none}
.mobilenav__head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.5rem;min-height:52px}
.mobilenav__close{background:transparent;border:2px solid rgba(255,255,255,.28);color:#fff;border-radius:8px;
 min-height:44px;min-width:44px;cursor:pointer;font-size:1.25rem;line-height:1;display:inline-flex;align-items:center;justify-content:center}
.mobilenav__close:hover{border-color:var(--brand-300);color:var(--brand-300)}
.mobilenav__close:focus-visible{outline:3px solid var(--focus-ring);outline-offset:3px}
.mobilenav__group{font-size:.6875rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
 color:rgba(255,255,255,.4);padding:1.25rem 0 .5rem;border-top:1px solid rgba(255,255,255,.1);margin-top:.5rem}
.mobilenav a.mobilenav__link{display:flex;align-items:center;min-height:52px;padding:.5rem 0;
 color:#fff;text-decoration:none;font-family:var(--font-display);font-weight:600;font-size:1.25rem;
 border-bottom:1px solid rgba(255,255,255,.07);transition:color .18s,padding-left .18s}
.mobilenav a.mobilenav__link:hover{color:var(--brand-300);padding-left:.375rem}
.mobilenav a.mobilenav__link:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}
.mobilenav .btn{margin-top:1.75rem;width:100%}
body.nav-open{overflow:hidden}
@media(min-width:900px){.navtoggle{display:none}.mobilenav{display:none}}
@media(prefers-reduced-motion:reduce){.mobilenav{transition:none}.navtoggle__bars i{transition:none}}

/* ---- FAQ ---- */
.faq{border-top:1px solid var(--border)}
.faq details{border-bottom:1px solid var(--border)}
.faq summary{list-style:none;cursor:pointer;padding:1.25rem 2.5rem 1.25rem 0;position:relative;
 font-family:var(--font-display);font-weight:600;font-size:1.0625rem;color:var(--ink-700);min-height:52px;
 display:flex;align-items:center;transition:color .18s}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"";position:absolute;right:.5rem;top:50%;width:10px;height:10px;
 border-right:2px solid var(--brand-800);border-bottom:2px solid var(--brand-800);
 transform:translateY(-70%) rotate(45deg);transition:transform .22s}
.faq details[open] summary::after{transform:translateY(-30%) rotate(225deg)}
.faq summary:hover{color:var(--brand-800)}
.faq summary:focus-visible{outline:3px solid var(--focus-ring);outline-offset:-2px}
.faq details p{padding:0 2.5rem 1.25rem 0;margin:0;color:var(--ink-600)}
.faq details p + p{padding-top:0;margin-top:-.5rem}
@media(prefers-reduced-motion:reduce){.faq summary::after{transition:none}}

/* ---- tick list ---- */
.ticklist{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.75rem}
.ticklist li{position:relative;padding-left:1.625rem;font-size:1rem;line-height:1.5;color:var(--ink-600)}
.ticklist li::before{content:"";position:absolute;left:0;top:.45em;width:9px;height:9px;
 border-right:2px solid var(--brand-600);border-bottom:2px solid var(--brand-600);
 transform:rotate(45deg) translateY(-1px)}
.band-inverse .ticklist li{color:rgba(255,255,255,.8)}
/* hero actions on interior pages */
.page-hero .hero__actions{margin-top:var(--s-8)}
.band-inverse .hero__actions{margin-top:var(--s-8)}

/* Content must never depend on JavaScript. If the script never runs,
   .reveal elements are shown by this rule; the script opts into animating them. */
html:not([data-js]) .reveal{opacity:1;transform:none}

/* ---- mobile nav contrast fix ----
   The hero pulls up a fixed -72px. On narrow screens the nav is taller than that,
   so the cream page background showed through the transparent nav and the white
   brand text sat on it. Solid dark nav below the desktop breakpoint removes the
   dependency on nav height entirely. */
@media(max-width:899px){
  .nav{background:var(--char-800);border-bottom:1px solid rgba(255,255,255,.1)}
  .nav.is-scrolled{background:var(--char-800);box-shadow:0 1px 14px rgba(0,0,0,.4)}
  .nav .brand,.nav.is-scrolled .brand{color:#fff}
  .brand svg{height:38px}
  .nav .navtoggle,.nav.is-scrolled .navtoggle{border-color:rgba(255,255,255,.28);color:#fff}
  .nav .navtoggle:hover,.nav.is-scrolled .navtoggle:hover{border-color:var(--brand-300);color:var(--brand-300)}
  /* belt and braces: anything behind the sticky header stays dark */
  html{background:var(--char-800)}
}

/* ---- job file summary lines ---- */
.jobfile__lines{list-style:none;margin:0;padding:0;border-top:1px solid rgba(255,255,255,.1)}
.jobfile__lines li{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;
 padding:.6875rem 1.25rem;border-bottom:1px solid rgba(255,255,255,.06);font-size:.875rem;color:rgba(255,255,255,.66)}
.jobfile__lines li:last-child{border-bottom:0}
.jobfile__lines b{font-variant-numeric:tabular-nums;font-weight:600;color:#fff;font-size:1rem}
.jobfile__lines b.ok{color:var(--data-400);font-size:.8125rem;letter-spacing:.06em;text-transform:uppercase}


/* ---- hamburger: no visible box, touch target and focus ring preserved ---- */
.navtoggle,
.nav.is-scrolled .navtoggle,
.nav .navtoggle,
.nav.is-scrolled .navtoggle{border-color:transparent;background:transparent}
.navtoggle:hover,
.nav .navtoggle:hover,
.nav.is-scrolled .navtoggle:hover{border-color:transparent;background:transparent;color:var(--brand-300)}
.navtoggle:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px;border-radius:8px}

/* ---- live forms ---- */
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.js-form{position:relative}
.form-status{margin:.875rem 0 0;font-size:.9375rem;font-weight:600;min-height:1.5em;color:rgba(255,255,255,.78)}
.form-status.is-ok{color:var(--data-400)}
.form-status.is-err{color:var(--brand-300)}
.field--light ~ .form-status,.js-form .field--light ~ p.form-status{color:var(--ink-600)}
.js-form:has(.field--light) .form-status.is-ok{color:var(--data-700)}
.js-form:has(.field--light) .form-status.is-err{color:var(--brand-800)}
.btn-primary:disabled{opacity:.7;cursor:wait}
/* small phones: logo + call button + hamburger must fit in 320-419px */
@media(max-width:419px){
  .navtoggle{font-size:0;gap:0;padding-left:.5rem;padding-right:.5rem}
  .nav .btn{padding:.6875rem .875rem}
}
@media(max-width:359px){
  .brand svg{height:32px}
  .nav .btn{font-size:.8125rem;padding:.625rem .625rem}
  .nav__inner{gap:.5rem;padding-left:1rem;padding-right:1rem}
}

/* in-copy links on dark grounds: white text, light-maroon underline (maroon alone is ~1.5:1 on charcoal) */
.bento__feature a:not(.btn):not(.btn-text),.band-inverse p a:not(.btn):not(.btn-text),
.hero p a:not(.btn):not(.btn-text),.page-hero p a:not(.btn):not(.btn-text),.band-img p a:not(.btn):not(.btn-text){
  color:#fff;text-decoration-color:var(--brand-300);text-decoration-thickness:2px}
.bento__feature a:not(.btn):not(.btn-text):hover,.band-inverse p a:not(.btn):not(.btn-text):hover,
.hero p a:not(.btn):not(.btn-text):hover,.page-hero p a:not(.btn):not(.btn-text):hover,.band-img p a:not(.btn):not(.btn-text):hover{
  color:var(--brand-300)}
