/* ==========================================================================
   Norse Business Services: shared stylesheet
   Palette: White #FFFFFF / Maroon #7F0303 / Light Blue #96C0CE /
            Midnight Blue #0F414A
   (Tan intentionally unused. Alabaster #EFE8DF is defined but reserved for
   rare, subtle use only.)
   Type: Fraunces (display) + Georgia/Times New Roman (body) + Jost (labels)
   ========================================================================== */

@import url('https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,300;0,9..144,400;0,9..144,500;0,9..144,600;1,9..144,300;1,9..144,400&family=Jost:wght@400;500&display=swap');

:root{
  --maroon:#7F0303;
  --maroon-deep:#5E0202;
  --lightblue:#96C0CE;
  --midnight:#0F414A;
  --midnight-deep:#0A2F36;
  --white:#FFFFFF;
  --alabaster:#EFE8DF;        /* reserved: use sparingly, if at all */
  --ink:#0F414A;
  --paper:#FFFFFF;
  --line:rgba(15,65,74,.14);

  --display:'Fraunces', Georgia, 'Times New Roman', serif;
  --body: Georgia, 'Times New Roman', Times, serif;
  --label:'Jost', Arial, sans-serif;

  --max: 1200px;
  --gutter: clamp(1.25rem, 4vw, 3rem);
  --radius: 2px;
  --ease: cubic-bezier(.2,.7,.2,1);
}

*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; overflow-x:clip; }
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{ animation-duration:0.001ms !important; animation-iteration-count:1 !important; transition-duration:0.001ms !important; scroll-behavior:auto !important; }
}

body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--body);
  font-size:1.0625rem;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

img{ max-width:100%; display:block; }
svg{ fill:currentColor; }

h1,h2,h3,h4{
  font-family:var(--display);
  font-weight:500;
  line-height:1.1;
  margin:0 0 .5em;
  color:var(--maroon);
  letter-spacing:.005em;
}
h1{ font-size:clamp(2.5rem, 5.6vw, 4.6rem); font-weight:300; }
h1 em, h2 em{ font-style:italic; font-weight:300; }
h2{ font-size:clamp(1.9rem, 3.6vw, 2.8rem); font-weight:400; }
h3{ font-size:clamp(1.2rem, 2vw, 1.5rem); }
h4{ font-size:1.05rem; }

p{ margin:0 0 1.1em; max-width:65ch; }
a{ color:var(--maroon); text-decoration-thickness:1px; text-underline-offset:.2em; }
a:not(.btn):not(.logo-link):not(.card-link):not(.main-nav a):not(.breadcrumb a):not(.service-row){ text-decoration:underline; }
a:hover{ color:var(--midnight); }

.eyebrow{
  font-family:var(--label);
  text-transform:uppercase;
  letter-spacing:.18em;
  font-size:.72rem;
  font-weight:500;
  color:var(--maroon);
  display:inline-flex; align-items:center; gap:.8em;
  margin-bottom:1em;
}
.eyebrow::before{ content:""; width:1.8em; height:1px; background:currentColor; opacity:.7; }

.wrap{ max-width:var(--max); margin-inline:auto; padding-inline:var(--gutter); }

/* -------------------- Accessibility helpers -------------------- */
.visually-hidden{
  position:absolute !important; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;
}
.skip-link{
  position:absolute; left:1rem; top:-3.5rem;
  background:var(--midnight); color:var(--white);
  padding:.7em 1.2em; border-radius:var(--radius);
  font-family:var(--label); font-size:.85rem; z-index:1000;
  transition:top .15s ease;
}
.skip-link:focus{ top:1rem; }
:focus-visible{ outline:3px solid var(--midnight); outline-offset:3px; border-radius:1px; }
.block-dark :focus-visible, .block-maroon :focus-visible, .site-footer :focus-visible{ outline-color:var(--white); }

/* -------------------- Scroll progress bar -------------------- */
.scroll-progress{
  position:fixed; top:0; left:0; height:3px; width:100%;
  background:var(--maroon); transform-origin:0 50%; transform:scaleX(0);
  z-index:300; pointer-events:none;
}

/* -------------------- Buttons -------------------- */
.btn{
  position:relative; overflow:hidden; isolation:isolate;
  display:inline-flex; align-items:center; gap:.6em;
  font-family:var(--label); font-size:.82rem; font-weight:500;
  text-transform:uppercase; letter-spacing:.12em;
  padding:1em 1.8em;
  border:1px solid var(--maroon);
  border-radius:var(--radius);
  text-decoration:none !important;
  cursor:pointer;
  background:transparent;
  color:var(--maroon);
  transition:color .3s var(--ease), border-color .3s var(--ease);
}
.btn::before{
  content:""; position:absolute; inset:0; z-index:-1;
  background:var(--midnight); transform:scaleX(0); transform-origin:100% 50%;
  transition:transform .4s var(--ease);
}
.btn:hover::before{ transform:scaleX(1); transform-origin:0 50%; }
.btn-primary{ background:var(--maroon); color:var(--white); }
.btn-primary:hover{ color:var(--white); border-color:var(--midnight); }
.btn-ghost:hover{ color:var(--white); border-color:var(--midnight); }
.btn-on-dark{ border-color:var(--white); color:var(--white); }
.btn-on-dark::before{ background:var(--white); }
.btn-on-dark:hover{ color:var(--midnight); }
.btn .arrow{ transition:transform .3s var(--ease); }
.btn:hover .arrow{ transform:translateX(4px); }
.btn-row{ display:flex; gap:1rem; flex-wrap:wrap; margin-top:1.8rem; }

/* -------------------- Header / nav -------------------- */
.site-header{
  position:sticky; top:0; z-index:100;
  background:rgba(255,255,255,.94);
  -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line);
  transition:box-shadow .3s ease;
}
.site-header.is-scrolled{ box-shadow:0 6px 24px rgba(15,65,74,.08); }
.header-inner{ display:flex; align-items:center; justify-content:space-between; padding-block:.8rem; gap:1rem; }
.logo-link{ display:flex; align-items:center; text-decoration:none; }
.logo-link img{ height:52px; width:auto; }
.site-footer .logo-link img{ height:64px; }

.nav-toggle{
  display:none; background:none; border:1px solid var(--maroon); border-radius:var(--radius);
  padding:.5em .7em; cursor:pointer; position:relative; z-index:120;
}
.nav-toggle svg{ width:22px; height:22px; color:var(--maroon); }

.main-nav ul{ list-style:none; display:flex; align-items:center; gap:2rem; margin:0; padding:0; }
.main-nav a{
  position:relative;
  font-family:var(--label); font-size:.8rem; letter-spacing:.1em; text-transform:uppercase;
  text-decoration:none; color:var(--midnight); padding:.4em 0; transition:color .2s ease;
}
.main-nav a::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:1px; background:var(--maroon);
  transform:scaleX(0); transform-origin:100% 50%; transition:transform .35s var(--ease);
}
.main-nav a:hover::after, .main-nav a[aria-current="page"]::after{ transform:scaleX(1); transform-origin:0 50%; }
.main-nav a[aria-current="page"]{ color:var(--maroon); }
.main-nav .nav-cta a{ border:1px solid var(--maroon); padding:.7em 1.2em; color:var(--maroon); }
.main-nav .nav-cta a::after{ display:none; }
.main-nav .nav-cta a:hover{ background:var(--maroon); color:var(--white); }

@media (max-width: 900px){
  .site-header{ -webkit-backdrop-filter:none; backdrop-filter:none; background:var(--white); }
  .nav-toggle{ display:inline-flex; align-items:center; justify-content:center; }
  .main-nav{
    position:fixed; inset:0 0 0 auto; width:min(84vw,340px); z-index:110;
    background:var(--midnight); color:var(--white);
    transform:translateX(100%); visibility:hidden; transition:transform .3s var(--ease), visibility 0s linear .3s;
    padding:6.5rem 2rem 2rem; overflow-y:auto;
  }
  .main-nav.is-open{ transform:translateX(0); visibility:visible; transition:transform .3s var(--ease); }
  .main-nav ul{ flex-direction:column; align-items:flex-start; gap:1.5rem; }
  .main-nav a{ color:var(--white); font-size:1rem; }
  .main-nav a::after{ background:var(--lightblue); }
  .main-nav a[aria-current="page"]{ color:var(--lightblue); }
  .main-nav .nav-cta a{ border-color:var(--white); color:var(--white); }
  .nav-backdrop{ position:fixed; inset:0; background:rgba(10,47,54,.5); opacity:0; pointer-events:none; transition:opacity .25s ease; z-index:105; }
  .nav-backdrop.is-open{ opacity:1; pointer-events:auto; }
  .logo-link img{ height:44px; }
}

/* -------------------- Hero (home) -------------------- */
.hero{ padding-block: clamp(3rem, 8vw, 6.5rem) clamp(3.5rem, 8vw, 6rem); position:relative; overflow-x:clip; }
.hero-grid{ display:grid; grid-template-columns: 1.05fr .95fr; gap:clamp(2rem,5vw,4.5rem); align-items:center; }
.hero .lede{ font-size:1.18rem; max-width:46ch; }
.hero h1 .line{ display:block; overflow:hidden; padding-bottom:.06em; }
.hero h1 .line > span{ display:inline-block; transform:translateY(105%); animation:rise 1s var(--ease) forwards; }
.hero h1 .line:nth-child(2) > span{ animation-delay:.12s; }
.hero h1 .line:nth-child(3) > span{ animation-delay:.24s; }
@keyframes rise{ to{ transform:translateY(0); } }

.hero-media{ position:relative; padding:0 0 2.5rem 2.5rem; }
.hero-media .main-shot{ position:relative; overflow:hidden; border-radius:var(--radius); aspect-ratio:4/5; }
.hero-media .main-shot img{ width:100%; height:115%; object-fit:cover; object-position:48% 50%; will-change:transform; }
.hero-media .inset-shot{
  position:absolute; left:0; bottom:0; width:48%; aspect-ratio:16/10; overflow:hidden;
  border:6px solid var(--white); border-radius:var(--radius); box-shadow:0 18px 40px rgba(15,65,74,.2);
}
.hero-media .inset-shot img{ width:100%; height:100%; object-fit:cover; }
.hero-media .frame-tag{
  position:absolute; top:1.2rem; right:-0.8rem; background:var(--lightblue); color:var(--midnight);
  font-family:var(--label); font-size:.7rem; letter-spacing:.14em; text-transform:uppercase;
  padding:.6em 1em; border-radius:var(--radius);
}
.hero-orbit{
  position:absolute; right:-6%; top:-8%; width:62%; aspect-ratio:1; pointer-events:none; z-index:-1;
  border:1px solid rgba(150,192,206,.7); border-radius:50%;
  animation:spin 60s linear infinite;
}
.hero-orbit::after{ content:""; position:absolute; top:12%; left:12%; width:10px; height:10px; border-radius:50%; background:var(--maroon); }
@keyframes spin{ to{ transform:rotate(360deg); } }
@media (max-width: 900px){
  .hero-grid{ grid-template-columns:1fr; }
  .hero-media{ order:-1; padding:0 0 2rem 1.5rem; }
  .hero-media .frame-tag{ right:0; }
}

/* -------------------- Marquee -------------------- */
.marquee{
  background:var(--midnight); color:var(--white); overflow:hidden; padding-block:1.15rem;
  border-block:1px solid var(--midnight);
}
.marquee-track{ display:flex; width:max-content; animation:marquee 40s linear infinite; }
.marquee:hover .marquee-track{ animation-play-state:paused; }
.marquee ul{ display:flex; list-style:none; margin:0; padding:0; }
.marquee li{
  font-family:var(--display); font-style:italic; font-weight:300; font-size:clamp(1.2rem,2.2vw,1.7rem);
  padding-inline:1.4rem; white-space:nowrap; display:flex; align-items:center; gap:2.8rem;
}
.marquee li::after{ content:""; width:7px; height:7px; border-radius:50%; background:var(--lightblue); }
@keyframes marquee{ to{ transform:translateX(-50%); } }
@media (prefers-reduced-motion: reduce){ .marquee-track{ animation:none; flex-wrap:wrap; } }

/* -------------------- Section blocks -------------------- */
section{ padding-block: clamp(3.5rem,8vw,6.5rem); }
.section-head{ max-width:62ch; margin-bottom:clamp(2rem,4vw,3.25rem); }
.section-head.split{ max-width:none; display:grid; grid-template-columns:1fr 1fr; gap:2rem; align-items:end; }
.section-head.split p{ margin-bottom:.6em; }
@media (max-width:900px){ .section-head.split{ grid-template-columns:1fr; } }

.block-dark{ background:var(--midnight); color:var(--white); }
.block-dark h1,.block-dark h2,.block-dark h3{ color:var(--white); }
.block-dark .eyebrow{ color:var(--lightblue); }
.block-dark a{ color:var(--lightblue); }
.block-dark a:hover{ color:var(--white); }

.block-lightblue{ background:var(--lightblue); color:var(--midnight); }
.block-lightblue h1,.block-lightblue h2{ color:var(--midnight); }
.block-lightblue .eyebrow{ color:var(--maroon); }
.block-lightblue a{ color:var(--maroon); }
.block-lightblue a:hover{ color:var(--midnight); }

.block-maroon{ background:var(--maroon); color:var(--white); }
.block-maroon h1,.block-maroon h2,.block-maroon h3{ color:var(--white); }
.block-maroon .eyebrow{ color:var(--lightblue); }
.block-maroon a{ color:var(--lightblue); }
.block-maroon a:hover{ color:var(--white); }

.block-white{ background:var(--white); }
.block-tint{ background:linear-gradient(180deg, rgba(150,192,206,.16), rgba(150,192,206,0)); }

/* -------------------- Grids / cards -------------------- */
.grid-4{ display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(1rem,2vw,1.5rem); }
.grid-3{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(1.5rem,3vw,2.5rem); }
.grid-2{ display:grid; grid-template-columns:repeat(2,1fr); gap:clamp(1.75rem,4vw,3.5rem); }
@media (max-width:1000px){ .grid-4{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:900px){ .grid-3,.grid-2{ grid-template-columns:1fr; } }
@media (max-width:560px){ .grid-4{ grid-template-columns:1fr; } }

.service-card{
  color:var(--ink);
  border:1px solid rgba(15,65,74,.2); padding:2rem; border-radius:var(--radius);
  background:var(--white); display:flex; flex-direction:column; height:100%;
  transition:transform .35s var(--ease), box-shadow .35s var(--ease);
}
.service-card:hover{ transform:translateY(-4px); box-shadow:0 16px 36px rgba(15,65,74,.14); }
.service-card h3{ color:var(--maroon); margin-bottom:.4em; }
.service-card .card-link{
  margin-top:auto; padding-top:1rem; font-family:var(--label); font-size:.78rem;
  text-transform:uppercase; letter-spacing:.1em; text-decoration:none; color:var(--maroon);
  border-top:1px solid rgba(15,65,74,.15);
}
.service-card .card-link:hover{ color:var(--midnight); }
.service-card .card-link::after{ content:" \2192"; }

/* Industry tiles */
.industry{
  position:relative; border-top:2px solid var(--maroon); padding:1.6rem 0 .5rem;
}
.industry .num{ font-family:var(--label); font-size:.72rem; letter-spacing:.14em; color:var(--maroon); }
.industry h3{ margin:.5em 0 .4em; color:var(--midnight); }
.industry p{ font-size:.97rem; margin:0; }
.block-dark .industry{ border-top-color:var(--lightblue); }
.block-dark .industry .num{ color:var(--lightblue); }
.block-dark .industry h3{ color:var(--white); }

/* Numbered service rows with hover wipe */
.service-rows{ list-style:none; margin:0; padding:0; border-top:1px solid rgba(255,255,255,.2); }
.service-row{
  position:relative; isolation:isolate; overflow:hidden;
  display:grid; grid-template-columns:4rem 1.1fr 1.4fr 2rem; gap:1.5rem; align-items:center;
  padding:1.8rem .5rem; border-bottom:1px solid rgba(255,255,255,.2);
  text-decoration:none; color:var(--white) !important;
}
.service-row::before{
  content:""; position:absolute; inset:0; z-index:-1; background:var(--maroon);
  transform:scaleY(0); transform-origin:50% 100%; transition:transform .45s var(--ease);
}
.service-row:hover::before, .service-row:focus-visible::before{ transform:scaleY(1); }
.service-row .num{ font-family:var(--label); font-size:.8rem; letter-spacing:.14em; color:var(--lightblue); }
.service-row h3{ margin:0; color:var(--white); font-weight:400; font-size:clamp(1.4rem,2.6vw,2rem); transition:transform .45s var(--ease); }
.service-row:hover h3{ transform:translateX(8px); }
.service-row p{ margin:0; font-size:.97rem; opacity:.88; }
.service-row .go{ font-size:1.3rem; justify-self:end; transition:transform .35s var(--ease); }
.service-row:hover .go{ transform:translateX(6px); }
@media (max-width:760px){
  .service-row{ grid-template-columns:3rem 1fr 1.5rem; }
  .service-row p{ grid-column:2 / 3; }
  .service-row .go{ grid-row:1; grid-column:3; }
}

/* -------------------- Process timeline (scroll drawn) -------------------- */
.steps{ list-style:none; margin:0; padding:0; counter-reset:step; display:grid; gap:2.5rem; position:relative; }
.steps::before{ content:""; position:absolute; left:1.3rem; top:.5rem; bottom:.5rem; width:1px; background:var(--line); }
.steps .steps-fill{ position:absolute; left:1.3rem; top:.5rem; width:1px; height:0; background:var(--maroon); transition:height .15s linear; }
.steps li{ counter-increment:step; display:grid; grid-template-columns:auto 1fr; gap:1.5rem; align-items:start; position:relative; }
.steps li::before{
  content: counter(step,decimal-leading-zero);
  font-family:var(--label); font-size:.78rem; letter-spacing:.06em;
  border:1px solid var(--maroon); border-radius:50%; background:var(--white);
  width:2.6rem; height:2.6rem; display:flex; align-items:center; justify-content:center;
  color:var(--maroon); flex-shrink:0; position:relative; z-index:1;
  transition:background-color .3s ease, color .3s ease;
}
.steps li.is-active::before{ background:var(--maroon); color:var(--white); }
.steps h3{ margin-bottom:.25em; }

/* -------------------- Portfolio -------------------- */
.portfolio-grid{ display:grid; grid-template-columns:repeat(4,1fr); grid-auto-rows:clamp(180px,22vw,300px); gap:.75rem; }
.portfolio-grid figure{ margin:0; overflow:hidden; border-radius:var(--radius); position:relative; }
.portfolio-grid figure.tall{ grid-row:span 2; }
.portfolio-grid figure.wide{ grid-column:span 2; }
.portfolio-grid img{ width:100%; height:100%; object-fit:cover; display:block; transition:transform .8s var(--ease); }
.portfolio-grid figure:hover img{ transform:scale(1.05); }
.portfolio-grid figcaption{
  position:absolute; left:0; right:0; bottom:0; padding:1.4rem 1rem .8rem;
  background:linear-gradient(0deg, rgba(10,47,54,.85), rgba(10,47,54,0));
  color:var(--white); font-family:var(--label); font-size:.7rem; letter-spacing:.14em; text-transform:uppercase;
  transform:translateY(100%); transition:transform .45s var(--ease);
}
.portfolio-grid figure:hover figcaption{ transform:translateY(0); }
.portfolio-note{ font-size:.92rem; opacity:.8; }
@media (max-width:900px){
  .portfolio-grid{ grid-template-columns:repeat(2,1fr); grid-auto-rows:clamp(160px,42vw,260px); }
  .portfolio-grid figcaption{ transform:none; }
}

/* -------------------- Framed feature photo -------------------- */
.framed-photo{ aspect-ratio:4/5; overflow:hidden; border-radius:var(--radius); position:relative; }
.framed-photo img{ width:100%; height:100%; object-fit:cover; display:block; }
.framed-photo.landscape{ aspect-ratio:3/2; }
.framed-photo.offset{ box-shadow:18px 18px 0 0 var(--lightblue); }
.block-maroon .framed-photo.offset, .block-dark .framed-photo.offset{ box-shadow:18px 18px 0 0 var(--lightblue); }
@media (max-width:900px){ .framed-photo{ aspect-ratio:4/3; } .framed-photo.offset{ box-shadow:10px 10px 0 0 var(--lightblue); } }

/* Stat / pull quote strip */
.pull{
  font-family:var(--display); font-weight:300; font-style:italic;
  font-size:clamp(1.6rem,3.4vw,2.6rem); line-height:1.25; max-width:28ch; margin:0 auto; text-align:center;
}

.check-list{ list-style:none; padding:0; margin:0 0 1.4em; display:grid; gap:.9rem; }
.check-list li{ padding-left:1.8rem; position:relative; }
.check-list li::before{ content:""; position:absolute; left:0; top:.62em; width:.9rem; height:1px; background:currentColor; }
.block-maroon .check-list li::before, .block-dark .check-list li::before{ background:var(--lightblue); }

/* -------------------- Scroll reveal -------------------- */
.reveal{ opacity:0; transform:translateY(26px); transition:opacity .9s var(--ease), transform .9s var(--ease); }
.reveal.is-visible{ opacity:1; transform:none; }
.reveal-delay-1{ transition-delay:.1s; } .reveal-delay-2{ transition-delay:.2s; } .reveal-delay-3{ transition-delay:.3s; }
.no-js .reveal{ opacity:1; transform:none; }
@media (prefers-reduced-motion: reduce){ .reveal{ opacity:1; transform:none; } }

/* -------------------- Forms -------------------- */
.form-grid{ display:grid; gap:1.4rem; max-width:640px; }
.form-row{ display:flex; flex-direction:column; gap:.4rem; }
.form-row label{ font-family:var(--label); font-size:.8rem; letter-spacing:.06em; text-transform:uppercase; color:var(--midnight); }
.form-row .hint{ font-size:.8rem; opacity:.7; text-transform:none; letter-spacing:0; }
input[type="text"], input[type="email"], input[type="tel"], select, textarea{
  font-family:var(--body); font-size:1rem; color:var(--midnight);
  padding:.8em .9em; border:1px solid rgba(15,65,74,.35); border-radius:var(--radius);
  background:var(--white); width:100%; transition:border-color .2s ease, box-shadow .2s ease;
}
textarea{ min-height:150px; resize:vertical; }
input:focus, select:focus, textarea:focus{ border-color:var(--midnight); box-shadow:0 0 0 3px rgba(150,192,206,.45); outline:none; }
.required-mark{ color:var(--maroon); }

.consent-row{ display:flex; gap:.7rem; align-items:flex-start; }
.consent-row input[type="checkbox"]{ width:1.15rem; height:1.15rem; margin-top:.25rem; accent-color:var(--maroon); flex-shrink:0; }
.consent-row label{ font-family:var(--body); font-size:.92rem; text-transform:none; letter-spacing:0; color:var(--ink); }

fieldset.form-row{ border:none; margin:0; padding:0; }
fieldset.form-row legend{ font-family:var(--label); font-size:.8rem; letter-spacing:.06em; text-transform:uppercase; color:var(--midnight); padding:0; margin-bottom:.5rem; }
.checkbox-group{ display:grid; grid-template-columns:1fr 1fr; gap:.65rem 1rem; }
@media (max-width:560px){ .checkbox-group{ grid-template-columns:1fr; } }
.checkbox-group label{ display:flex; align-items:center; gap:.65rem; font-family:var(--body); font-size:.98rem; text-transform:none; letter-spacing:0; color:var(--ink); }
.checkbox-group input[type="checkbox"]{ width:1.15rem; height:1.15rem; accent-color:var(--maroon); flex-shrink:0; }

.honeypot-field{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }

.form-status{ padding:.9em 1.1em; border-radius:var(--radius); font-size:.95rem; display:none; }
.form-status.is-visible{ display:block; }
.form-status.success{ background:rgba(150,192,206,.35); border:1px solid var(--midnight); }
.form-status.error{ background:rgba(127,3,3,.08); border:1px solid var(--maroon); }

/* -------------------- Footer -------------------- */
.site-footer{ background:var(--midnight); color:var(--white); padding-block:4rem 2rem; }
.site-footer a{ color:var(--lightblue); }
.site-footer a:hover{ color:var(--white); }
.footer-grid{ display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:2.5rem; margin-bottom:2.5rem; }
.footer-grid h4{ color:var(--white); font-family:var(--label); font-size:.76rem; text-transform:uppercase; letter-spacing:.14em; margin-bottom:1em; }
.footer-grid ul{ list-style:none; margin:0; padding:0; display:grid; gap:.6em; }
.footer-legal{ font-size:.82rem; opacity:.85; border-top:1px solid rgba(255,255,255,.18); padding-top:1.5rem; display:flex; flex-wrap:wrap; gap:.6rem 1.4rem; align-items:center; justify-content:space-between; }
.footer-legal-links{ display:flex; flex-wrap:wrap; gap:1.1rem; list-style:none; margin:0; padding:0; }
@media (max-width:900px){ .footer-grid{ grid-template-columns:1fr 1fr; } .footer-grid > div:first-child{ grid-column:1 / -1; } }
@media (max-width:520px){ .footer-grid{ grid-template-columns:1fr; } }

/* -------------------- Cookie consent banner -------------------- */
.cookie-banner{
  position:fixed; left:0; right:0; bottom:0; z-index:200;
  background:var(--white); border-top:3px solid var(--maroon);
  box-shadow:0 -8px 24px rgba(15,65,74,.15);
}
.cookie-banner[hidden]{ display:none; }
.cookie-banner-inner{ max-width:var(--max); margin-inline:auto; padding:1.2rem var(--gutter); display:flex; gap:1.2rem; align-items:center; flex-wrap:wrap; }
.cookie-banner p{ margin:0; font-size:.9rem; flex:1 1 340px; }
.cookie-banner-actions{ display:flex; gap:.8rem; flex-wrap:wrap; }
.cookie-banner .btn{ padding:.7em 1.2em; white-space:nowrap; }

.link-button{
  background:none; border:none; padding:0; cursor:pointer;
  font-family:inherit; font-size:inherit; color:var(--lightblue);
  text-decoration:underline; text-underline-offset:.2em;
}
.link-button:hover{ color:var(--white); }

/* -------------------- Legal / long form prose pages -------------------- */
.prose{ max-width:74ch; }
.prose h2{ margin-top:1.6em; font-size:clamp(1.4rem,2.4vw,1.8rem); }
.prose h2:first-child{ margin-top:0; }
.prose ul, .prose ol{ padding-left:1.3em; }
.prose li{ margin-bottom:.5em; }
.updated-note{ font-family:var(--label); font-size:.8rem; letter-spacing:.06em; color:var(--midnight); opacity:.75; text-transform:uppercase; }
.callout{ border-left:3px solid var(--maroon); background:var(--white); padding:1rem 1.3rem; margin:1.8em 0; border-radius:var(--radius); box-shadow:0 0 0 1px var(--line); }
.info-box{ border-left:3px solid var(--lightblue); background:var(--white); padding:1.4rem 1.6rem; border-radius:var(--radius); box-shadow:0 0 0 1px var(--line); }

/* -------------------- Page intro band (non home pages) -------------------- */
.page-intro{ padding-block: clamp(3rem,7vw,5.5rem) clamp(2.25rem,5vw,3.5rem); border-bottom:1px solid var(--line); position:relative; overflow:hidden; }
.page-intro::after{
  content:""; position:absolute; right:-12vw; top:-30%; width:42vw; aspect-ratio:1; border-radius:50%;
  border:1px solid rgba(150,192,206,.6); pointer-events:none;
}
.page-intro .lede{ font-size:1.15rem; max-width:56ch; }
.breadcrumb{ font-family:var(--label); font-size:.76rem; letter-spacing:.08em; text-transform:uppercase; margin-bottom:1.4em; }
.breadcrumb a{ text-decoration:none; }
.breadcrumb a:hover{ text-decoration:underline; }

/* -------------------- Misc -------------------- */
.tag-list{ display:flex; flex-wrap:wrap; gap:.5rem; list-style:none; margin:1.2em 0; padding:0; }
.tag-list li{ font-family:var(--label); font-size:.72rem; text-transform:uppercase; letter-spacing:.08em; border:1px solid currentColor; padding:.45em .9em; border-radius:20px; }
.center{ text-align:center; }
.center p{ margin-inline:auto; }

/* -------------------- Full bleed image feature (aerial) -------------------- */
.video-feature{
  position:relative; overflow:hidden; isolation:isolate;
  min-height:clamp(420px,70vh,680px); display:flex; align-items:flex-end;
  color:var(--white); background:var(--midnight-deep);
}
.video-feature.tall{ min-height:clamp(360px,75vh,760px); }
.video-feature .video-bg{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:-2; }
.video-feature::before{
  content:""; position:absolute; inset:0; z-index:-1;
  background:linear-gradient(0deg, rgba(10,47,54,.9) 0%, rgba(10,47,54,.45) 45%, rgba(10,47,54,.1) 100%);
}
.video-feature-inner{ width:100%; }
.video-feature h2{ color:var(--white); max-width:18ch; }
.video-feature .eyebrow{ color:var(--lightblue); }
.video-feature p{ max-width:52ch; }
.video-feature .pull{ color:var(--white); }

/* -------------------- FAQ -------------------- */
.faq-list{ border-top:1px solid var(--line); }
.faq-item{ border-bottom:1px solid var(--line); }
.faq-item summary{
  list-style:none; cursor:pointer; position:relative;
  padding:1.3rem 2.5rem 1.3rem 0;
  font-family:var(--display); font-size:1.2rem; color:var(--midnight);
}
.faq-item summary::-webkit-details-marker{ display:none; }
.faq-item summary::after{
  content:"+"; position:absolute; right:.25rem; top:50%; transform:translateY(-50%);
  font-family:var(--label); font-size:1.4rem; color:var(--maroon); transition:transform .3s var(--ease);
}
.faq-item[open] summary::after{ transform:translateY(-50%) rotate(45deg); }
.faq-item summary:hover{ color:var(--maroon); }
.faq-item p{ margin:0 0 1.4rem; font-size:.98rem; }
