/* =============================================================
   Vaaradhi Consultancy Services — stylesheet v3
   Build: 2026-04-27af-smtp  (visible verification stamp)
   Clean modern SaaS aesthetic — bright blue, white,
   sans-serif throughout, soft shadows, cloud-themed
   ============================================================= */

:root{
  /* Logo blue palette */
  --blue:#0a84c4;
  --blue-deep:#0967a0;
  --blue-bright:#1ea0e0;
  --blue-soft:#e8f4fa;
  --blue-faint:#f4faff;

  /* Neutrals */
  --ink:#1a2438;
  --ink-soft:#3a4860;
  --ink-mute:#6a7693;
  --line:#e6ecf3;
  --line-soft:#eef2f7;
  --paper:#ffffff;
  --paper-tint:#f6f9fc;

  /* Accents */
  --accent:#0a84c4;     /* primary CTA */
  --accent-hover:#0967a0;

  --sans:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;

  --container:1320px;
  --gutter:clamp(1.25rem,5vw,3.5rem);
  --radius:8px;
  --radius-sm:4px;
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;font-size:16px}
@media (max-width:480px){html{font-size:15px}}

body{
  font-family:var(--sans);
  font-size:1rem;
  line-height:1.65;
  color:var(--ink);
  background:var(--paper);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}
img{max-width:100%;display:block}

a{color:var(--blue);text-decoration:none;transition:color .18s;text-underline-offset:.18em;text-decoration-skip-ink:auto}
a:hover{color:var(--blue-deep)}

.wrap{max-width:var(--container);margin:0 auto;padding:0 var(--gutter)}
section{padding:clamp(2.25rem,4.5vw,4rem) 0}

/* ---------- typography ---------- */
.eyebrow{
  font-family:var(--sans);
  font-size:.75rem;
  font-weight:600;
  letter-spacing:.12em;
  text-transform:uppercase;
  color:var(--blue);
  margin-bottom:1rem;
  display:inline-block;
}

h1,h2,h3,h4{
  font-family:var(--sans);
  font-weight:700;
  line-height:1.2;
  letter-spacing:-.02em;
  color:var(--ink);
}
h1{
  font-size:clamp(1.5rem,2.9vw,2.4rem);
  font-weight:700;
  line-height:1.15;
  letter-spacing:-.025em;
}
h2{
  font-size:clamp(1.15rem,1.7vw,1.5rem);
  margin-bottom:1rem;
  font-weight:700;
  letter-spacing:-.015em;
}
h3{font-size:1.05rem;font-weight:600;margin-bottom:.55rem}
h4{font-size:.95rem;font-weight:600}

p{
  margin-bottom:1rem;color:var(--ink-soft);font-size:.97rem;
  text-align:left;
}
/* Justified text is applied by site.js to paragraphs (and h1s) that render
   2+ lines. This avoids whitespace rivers in single-line text while giving
   any wrapping content the cleaner block-aligned look.
   Hyphenation is disabled (hyphens: manual) — auto-hyphens produces ugly
   mid-word breaks like "engi-/neering" that read as low-quality. Justified
   English with manual hyphens just gets slightly wider word-spacing, which
   is fine. Only kicks in on screens wide enough that justification reads
   well. */
@media (min-width:641px){
  p.justified-multiline,
  h1.justified-multiline,
  .hero h1.justified-multiline,
  .page-head h1.justified-multiline{
    text-align:justify;
    text-justify:inter-word;
    -webkit-hyphens:manual;
    hyphens:manual;
  }
}
p.lead{
  font-size:clamp(1rem,1.3vw,1.15rem);
  font-weight:400;
  line-height:1.6;
  color:var(--ink-soft);
  max-width:60ch;
}
.italic{font-style:italic}

/* ---------- header ---------- */
.site-header{
  position:sticky;top:0;z-index:100;
  background:rgba(255,255,255,.95);
  backdrop-filter:saturate(140%) blur(10px);
  -webkit-backdrop-filter:saturate(140%) blur(10px);
  border-bottom:1px solid var(--line);
}
.site-header .wrap{
  display:flex;align-items:center;justify-content:space-between;
  padding-top:.85rem;padding-bottom:.85rem;
  gap:1rem;
}
.brand{display:inline-flex;align-items:center;line-height:0}
.brand img{
  height:20px;width:auto;
  display:block;
}
@media (max-width:560px){
  .brand img{height:16px}
}

nav.primary ul{
  list-style:none;
  display:flex;
  gap:1.75rem;
  align-items:center;
}
nav.primary a{
  font-size:.92rem;
  color:var(--ink-soft);
  font-weight:500;
  position:relative;
  padding:.4rem 0;
  white-space:nowrap;
  transition:color .15s;
}
nav.primary a:hover{color:var(--blue)}
nav.primary a.active{color:var(--blue);font-weight:600}

/* ---------- submenu (Programs ▾) ---------- */
.has-submenu{position:relative}
.has-submenu > a{display:inline-flex;align-items:center;gap:.25rem}
.submenu-caret{font-size:.7rem;line-height:1;transition:transform .15s}
.has-submenu:hover .submenu-caret,
.has-submenu:focus-within .submenu-caret{transform:rotate(180deg)}
nav.primary ul.submenu,
.submenu{
  position:absolute;
  top:100%;left:0;
  list-style:none;
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:var(--radius-sm);
  box-shadow:0 8px 24px -8px rgba(10,36,72,.18);
  min-width:200px;
  padding:.5rem 0;
  margin-top:.4rem;
  display:flex !important;flex-direction:column !important;gap:0 !important;
  align-items:stretch !important;
  opacity:0;visibility:hidden;transform:translateY(-4px);
  transition:opacity .15s,transform .15s,visibility 0s linear .15s;
  z-index:1000;
}
.has-submenu:hover > .submenu,
.has-submenu:focus-within > .submenu,
.has-submenu.open > .submenu{
  opacity:1;visibility:visible;transform:translateY(0);
  transition:opacity .15s,transform .15s,visibility 0s;
}
nav.primary ul.submenu li,
.submenu li{margin:0;width:100%}
nav.primary .submenu a,
.submenu a{
  display:block;width:100%;
  padding:.55rem 1rem !important;
  font-size:.9rem !important;
  white-space:nowrap;
  color:var(--ink-soft);
}
.submenu a:hover{background:var(--paper-tint);color:var(--blue)}
.submenu a.active{background:var(--paper-tint);color:var(--blue)}
.has-submenu.active-parent > a{color:var(--blue);font-weight:600}
/* Submenu toggle button (hidden on desktop, shown on mobile) */
.submenu-toggle{
  display:none;
  background:transparent;border:none;
  font-size:1rem;color:var(--ink-soft);
  cursor:pointer;padding:.4rem .6rem;
  transition:transform .15s;
}

/* ---------- hamburger (3-bar icon) ---------- */
.nav-toggle{
  display:none;
  background:transparent;border:1px solid var(--line);
  width:42px;height:42px;
  cursor:pointer;border-radius:var(--radius-sm);
  position:relative;
  flex-direction:column;justify-content:center;align-items:center;
  gap:5px;
}
.nav-toggle-bar{
  display:block;
  width:18px;height:1.75px;
  background:var(--ink);
  transition:transform .25s,opacity .15s;
}
.nav-toggle[aria-expanded="true"] .nav-toggle-bar:nth-child(1){
  transform:translateY(7px) rotate(45deg);
}
.nav-toggle[aria-expanded="true"] .nav-toggle-bar:nth-child(2){opacity:0}
.nav-toggle[aria-expanded="true"] .nav-toggle-bar:nth-child(3){
  transform:translateY(-7px) rotate(-45deg);
}

@media (max-width:1024px){
  nav.primary ul#primaryMenu{
    position:absolute;
    top:100%;left:0;right:0;
    background:var(--paper);
    flex-direction:column;
    padding:0 var(--gutter);
    gap:.4rem;
    border-bottom:1px solid var(--line);
    box-shadow:0 8px 16px -8px rgba(10,36,72,.08);
    align-items:flex-start;
    max-height:0;opacity:0;overflow:hidden;pointer-events:none;
    transition:max-height .3s ease,opacity .25s ease,padding .3s ease;
  }
  nav.primary.open ul#primaryMenu{
    max-height:80vh;opacity:1;pointer-events:auto;
    padding-top:1.25rem;padding-bottom:1.25rem;
    overflow-y:auto;
  }
  nav.primary a{font-size:1rem;padding:.5rem 0;width:100%}
  .nav-toggle{display:flex}

  /* Submenu becomes inline accordion on mobile */
  .has-submenu{width:100%;display:flex;flex-wrap:wrap;align-items:center}
  .has-submenu > a{flex:1}
  .has-submenu .submenu-caret{display:none}  /* hide hover caret, use button instead */
  .submenu-toggle{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px}
  .has-submenu.open .submenu-toggle{transform:rotate(180deg)}
  .submenu{
    position:static;
    width:100%;
    background:transparent;
    border:none;box-shadow:none;border-radius:0;
    padding:.25rem 0 .5rem 1rem;
    margin:0;
    opacity:1;visibility:visible;transform:none;
    max-height:0;overflow:hidden;
    transition:max-height .25s ease;
  }
  .has-submenu.open .submenu{max-height:300px}
  /* Disable hover-open behavior on touch devices */
  .has-submenu:hover > .submenu,
  .has-submenu:focus-within > .submenu{
    /* Mobile uses .open class via JS; hover doesn't apply */
    transition:max-height .25s ease;
  }
  .has-submenu:hover:not(.open) > .submenu{max-height:0}
  body.nav-locked{overflow:hidden}
}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;gap:.5rem;
  padding:.85rem 1.65rem;
  font-family:var(--sans);
  font-size:.92rem;font-weight:600;letter-spacing:.01em;
  border:1px solid var(--accent);background:var(--accent);color:#fff;
  border-radius:var(--radius);
  cursor:pointer;
  text-decoration:none;
  box-shadow:0 1px 3px rgba(10,132,196,.25),0 4px 12px -4px rgba(10,132,196,.35);
  transition:all .18s;
}
.btn:hover{
  background:var(--accent-hover);
  border-color:var(--accent-hover);
  color:#fff;
  transform:translateY(-1px);
  box-shadow:0 2px 5px rgba(10,132,196,.3),0 8px 18px -4px rgba(10,132,196,.4);
}
.btn .arrow{display:inline-block;transition:transform .2s}
.btn:hover .arrow{transform:translateX(3px)}

.btn-ghost{
  background:transparent;color:var(--ink);
  border-color:var(--line);
  box-shadow:none;
}
.btn-ghost:hover{
  background:var(--paper-tint);
  border-color:var(--blue);
  color:var(--blue);
  transform:translateY(-1px);
  box-shadow:0 2px 8px rgba(10,36,72,.06);
}
.btn-row{display:flex;gap:.7rem;flex-wrap:wrap;margin-top:1.6rem}

.text-link{
  font-family:var(--sans);
  font-size:.92rem;font-weight:600;
  color:var(--blue);
  display:inline-flex;align-items:center;gap:.4rem;
  transition:color .15s,gap .2s;
}
.text-link::after{content:"→";transition:transform .2s}
.text-link:hover{color:var(--blue-deep)}
.text-link:hover::after{transform:translateX(3px)}

/* ---------- hero (homepage) ---------- */
.hero{
  padding:clamp(2rem,4.5vw,3.5rem) 0 clamp(2rem,4vw,3rem);
  position:relative;
  overflow:hidden;
  background:
    radial-gradient(ellipse at top right,rgba(30,160,224,.10),transparent 55%),
    radial-gradient(ellipse at bottom left,rgba(10,132,196,.06),transparent 60%),
    linear-gradient(180deg,var(--blue-faint) 0%,var(--paper) 75%);
}
.hero::before{
  content:"";
  position:absolute;
  top:0;left:0;right:0;bottom:0;
  background-image:
    radial-gradient(circle at 20% 30%,rgba(255,255,255,.7),transparent 25%),
    radial-gradient(circle at 80% 60%,rgba(255,255,255,.5),transparent 30%),
    radial-gradient(circle at 50% 80%,rgba(255,255,255,.4),transparent 25%);
  pointer-events:none;z-index:0;
}
.hero .wrap{position:relative;z-index:1}

/* Two-column hero: text left, single-card slideshow right */
.hero-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:clamp(2rem,5vw,4rem);
  align-items:stretch;
}
.hero-text{min-width:0}
.hero-text .eyebrow{font-size:.62rem;margin-bottom:.65rem}
.hero h1{
  font-size:clamp(1.4rem,2.4vw,2rem);
  line-height:1.2;
  /* text-wrap: balance distributes the words across lines so they're
     roughly equal length — no orphan word on a short final line.
     Falls back gracefully on browsers that don't support it (~93% as of
     2026; older browsers just see ragged-left, which is also fine). */
  text-wrap:balance;
  text-align:left;
  -webkit-hyphens:manual;
  hyphens:manual;
}
.hero h1 .underline{
  position:relative;display:inline-block;
  color:var(--blue);
  font-weight:700;
}
.hero h1 .underline::after{
  content:"";position:absolute;left:0;right:0;bottom:2px;height:6px;
  background:var(--blue);opacity:.18;z-index:-1;border-radius:2px;
}
.hero p.lead{
  margin-top:.85rem;
  max-width:none;
  font-size:clamp(.85rem,.95vw,.92rem);
  line-height:1.55;
  text-align:justify;
  text-justify:inter-word;
  -webkit-hyphens:manual;
  hyphens:manual;
}
.hero .btn-row{margin-top:1.05rem}
.hero .btn{padding:.6rem 1.1rem;font-size:.8rem}

/* hero-slide single-card carousel */
.hero-slide{
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:1.4rem 1.5rem;
  box-shadow:0 8px 40px -12px rgba(10,36,72,.18),0 2px 6px rgba(10,36,72,.04);
  display:flex;flex-direction:column;
  min-height:auto;
  justify-content:center;
}

.hero-slide-stage{
  position:relative;
  /* Tall enough that the longest slide (date pill + h3 + 3-line description
     + CTA link) doesn't push down into the foot's border-top. The foot has
     padding-top:.7rem + border-top, so we add headroom. */
  min-height:180px;
}
.hero-slide-item{
  position:absolute;inset:0;
  display:flex;flex-direction:column;gap:.55rem;
  opacity:0;visibility:hidden;
  transform:translateY(6px);
  transition:opacity .35s ease,transform .35s ease,visibility 0s linear .35s;
  pointer-events:none;
}
.hero-slide-item.is-active{
  opacity:1;visibility:visible;
  transform:translateY(0);
  transition:opacity .35s ease,transform .35s ease,visibility 0s;
  pointer-events:auto;
}
.hero-slide-item .a-date{
  display:inline-flex;align-items:center;gap:.35rem;
  font-size:.72rem;font-weight:700;letter-spacing:.08em;
  text-transform:uppercase;color:var(--blue);
  align-self:flex-start;
  padding:.25rem .6rem;
  background:var(--blue-faint);
  border-radius:100px;
}
.hero-slide-item h3{
  font-size:1.2rem;font-weight:700;line-height:1.3;
  color:var(--ink);margin-bottom:0;
}
.hero-slide-item p{
  font-size:.95rem;line-height:1.55;
  color:var(--ink-soft);margin-bottom:0;
}
.hero-slide-item .a-cta{
  padding-top:.4rem;
  font-size:.92rem;font-weight:600;color:var(--blue);
  display:inline-flex;align-items:center;gap:.3rem;
  align-self:flex-start;
  /* Defensive: kill any browser-default or inherited underline on this link.
     Some browsers re-apply underline at certain zoom levels or on focus,
     and at small font sizes the underline collides with descenders ('p','y'). */
  text-decoration:none !important;
  text-underline-offset:.25em;
  text-decoration-skip-ink:auto;
}
.hero-slide-item .a-cta::after{content:"→";transition:transform .2s}
.hero-slide-item .a-cta:hover{color:var(--blue-deep)}
.hero-slide-item .a-cta:hover::after{transform:translateX(3px)}

.hero-slide-foot{
  display:flex;align-items:center;justify-content:space-between;
  padding-top:.7rem;
  border-top:1px solid var(--line);
  gap:.75rem;
  margin-top:.85rem;
}
.hero-slide-dots{display:flex;gap:.4rem}
.hero-slide-dot{
  width:7px;height:7px;border-radius:50%;
  background:var(--line);border:none;cursor:pointer;
  transition:background .2s,transform .2s,width .2s;padding:0;
}
.hero-slide-dot:hover{background:var(--blue-soft);transform:scale(1.15)}
.hero-slide-dot.is-active{background:var(--blue);width:18px;border-radius:4px}

.hero-slide-arrows{display:flex;gap:.35rem}
.hero-slide-arrows button{
  width:28px;height:28px;
  border:1px solid var(--line);background:var(--paper);
  border-radius:50%;cursor:pointer;
  color:var(--ink-soft);font-size:.8rem;font-weight:600;
  display:inline-flex;align-items:center;justify-content:center;
  transition:border-color .2s,color .2s,background .2s;
}
.hero-slide-arrows button:hover{
  border-color:var(--blue);color:var(--blue);background:var(--blue-faint);
}

@media (max-width:980px){
  .hero-grid{grid-template-columns:1fr;gap:clamp(2rem,4vw,3rem)}
  .hero-slide{min-height:auto}
}

/* ---------- inner page header ---------- */
.page-head{
  background:
    radial-gradient(ellipse at top right,rgba(30,160,224,.12),transparent 60%),
    linear-gradient(180deg,var(--blue-faint) 0%,var(--paper) 100%);
  border-bottom:1px solid var(--line);
  padding:clamp(2.5rem,5vw,4rem) 0 clamp(2rem,4vw,3rem);
  position:relative;overflow:hidden;
}
.page-head::before{
  content:"";
  position:absolute;
  top:-30%;right:-15%;width:55%;height:200%;
  background:radial-gradient(circle,rgba(255,255,255,.5),transparent 50%);
  pointer-events:none;z-index:0;
}
.page-head .wrap{position:relative;z-index:1}
.page-head h1{
  font-size:clamp(1.3rem,2.3vw,1.95rem);
  max-width:24ch;
  margin-bottom:1rem;
  line-height:1.18;
  /* Balance line lengths so trailing words don't dangle on a near-empty line */
  text-wrap:balance;
  text-align:left;
  -webkit-hyphens:manual;
  hyphens:manual;
}
.page-head p.lead{
  max-width:60ch;
  font-size:clamp(.92rem,1.05vw,1rem);
  /* Page-head lead paragraphs sit in narrow columns alongside a key-facts
     card; justify produces visible word-spacing gaps. Force left-align. */
  text-align:left !important;
  -webkit-hyphens:manual;
  hyphens:manual;
}

/* page-head 2-column variant — text left, key facts right */
.page-head-grid{
  display:grid;
  grid-template-columns:1.4fr 1fr;
  gap:clamp(2rem,5vw,4rem);
  align-items:end;
}
.page-head-grid .head-side{
  background:rgba(255,255,255,.7);
  border:1px solid var(--blue-soft);
  border-radius:var(--radius);
  padding:1.25rem 1.5rem;
  font-size:.92rem;
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
}
.page-head-grid .head-side h4{
  font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;
  color:var(--blue);font-weight:700;margin-bottom:.85rem;
}
.page-head-grid .head-side ul{list-style:none;margin:0}
.page-head-grid .head-side li{
  padding:.45rem 0;border-bottom:1px solid var(--blue-soft);
  font-size:.92rem;color:var(--ink);font-weight:500;
  display:flex;align-items:center;gap:.5rem;
}
.page-head-grid .head-side li:last-child{border-bottom:none}
.page-head-grid .head-side li::before{
  content:"";width:5px;height:5px;border-radius:50%;
  background:var(--blue);flex-shrink:0;
}
@media (max-width:980px){
  .page-head-grid{grid-template-columns:1fr}
}
/* ---------- two/three col + bands ---------- */
.two-col{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(1.5rem,3vw,2rem);align-items:stretch}
.three-col{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1.5rem,3vw,2rem);align-items:stretch}
@media (max-width:820px){.two-col,.three-col{grid-template-columns:1fr}}

.section-head{max-width:760px;margin-bottom:clamp(1.6rem,3vw,2.2rem)}
.section-head h2{margin-bottom:.6rem}
.section-head p{font-size:.95rem;max-width:660px}

/* card-style track cards */
.track-card{
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:2rem;
  transition:border-color .2s,transform .2s,box-shadow .2s;
  display:flex;flex-direction:column;
}
.track-card:hover{
  border-color:var(--blue);
  transform:translateY(-3px);
  box-shadow:0 12px 32px -12px rgba(10,132,196,.18),0 4px 8px rgba(10,36,72,.04);
}
.track-card .num{
  font-family:var(--sans);
  font-style:normal;font-size:.72rem;
  color:var(--blue);font-weight:700;
  letter-spacing:.12em;text-transform:uppercase;
  display:block;margin-bottom:.85rem;
}
.track-card h3{font-size:1.3rem;font-weight:700;margin-bottom:.7rem}
.track-card p{margin-bottom:1.25rem;flex:1}
.track-card .links{display:flex;flex-direction:column;gap:.6rem}

.band-warm{
  background:var(--paper-tint);
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);
}
.band-dark{
  background:linear-gradient(135deg,var(--blue-deep) 0%,var(--ink) 100%);
  color:#fff;
  position:relative;overflow:hidden;
}
.band-dark::before{
  content:"";position:absolute;
  top:-30%;right:-10%;width:50%;height:200%;
  background:radial-gradient(circle,rgba(30,160,224,.18),transparent 55%);
  pointer-events:none;
}
.band-dark .wrap{position:relative;z-index:1}
.band-dark h2,.band-dark h3,.band-dark h4{color:#fff}
.band-dark p{color:rgba(255,255,255,.82)}
.band-dark .eyebrow{color:var(--blue-bright)}
.band-dark .text-link{color:#fff}
.band-dark .text-link:hover{color:var(--blue-bright)}
.band-dark .track-card{
  background:rgba(255,255,255,.04);
  border-color:rgba(255,255,255,.12);
}
.band-dark .track-card:hover{
  border-color:var(--blue-bright);
  background:rgba(255,255,255,.07);
}
.band-dark .track-card .num{color:var(--blue-bright)}

/* value-prop trio */
.value{
  padding:1.75rem;
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:var(--radius);
  transition:border-color .2s,transform .2s,box-shadow .2s;
}
.value:hover{
  border-color:var(--blue);
  transform:translateY(-3px);
  box-shadow:0 12px 32px -12px rgba(10,132,196,.18);
}
.value .num{
  display:inline-flex;
  align-items:center;justify-content:center;
  width:38px;height:38px;
  border-radius:50%;
  background:var(--blue-soft);
  color:var(--blue);
  font-family:var(--sans);font-size:.85rem;font-weight:700;
  margin-bottom:1rem;text-transform:uppercase;
}
.value h3{font-size:1.15rem;margin-bottom:.5rem;font-weight:700}
.value p{font-size:.94rem;margin-bottom:0}

/* program pitch (alternating) */
.pitch{display:grid;grid-template-columns:1.3fr 1fr;gap:clamp(1.75rem,4.5vw,3.5rem);align-items:center}
.pitch.reverse{grid-template-columns:1fr 1.3fr}
.pitch.reverse .pitch-text{order:2}
.pitch.reverse .pitch-side{order:1}
@media (max-width:820px){
  .pitch,.pitch.reverse{grid-template-columns:1fr}
  .pitch.reverse .pitch-text{order:1}
  .pitch.reverse .pitch-side{order:2}
}
.pitch h2{font-size:clamp(1.5rem,2.5vw,2.1rem);margin-bottom:1rem}
.pitch h2 em{font-style:normal;color:var(--blue);font-weight:700}
.pitch-text p{font-size:.97rem}

.pitch-side{
  background:var(--paper);
  border:1px solid var(--line);
  padding:1.75rem;
  border-radius:var(--radius);
  box-shadow:0 8px 32px -16px rgba(10,36,72,.12),0 1px 3px rgba(10,36,72,.04);
}
.band-dark .pitch-side{
  background:rgba(255,255,255,.05);
  border-color:rgba(255,255,255,.12);
  box-shadow:none;
}
.pitch-side h4{
  font-family:var(--sans);font-size:.72rem;
  letter-spacing:.12em;text-transform:uppercase;
  color:var(--blue);margin-bottom:1rem;font-weight:700;
}
.band-dark .pitch-side h4{color:var(--blue-bright)}

.pitch-list{list-style:none}
.pitch-list li{
  font-family:var(--sans);font-size:.95rem;color:var(--ink);
  padding:.65rem 0;border-bottom:1px solid var(--line-soft);
  display:flex;gap:.6rem;line-height:1.45;
  font-weight:500;
}
.band-dark .pitch-list li{color:#fff;border-bottom-color:rgba(255,255,255,.1)}
.pitch-list li:last-child{border-bottom:none}
.pitch-list li::before{
  content:"✓";color:var(--blue);font-weight:700;flex-shrink:0;
}
.band-dark .pitch-list li::before{color:var(--blue-bright)}

.tech-row{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.25rem}
.tech-tag{
  font-family:var(--sans);font-size:.78rem;font-weight:600;letter-spacing:.01em;
  padding:.4rem .9rem;background:rgba(255,255,255,.08);
  border:1px solid rgba(255,255,255,.15);color:#fff;
  border-radius:100px;
}

.cta-strip{text-align:center;padding:clamp(3rem,6vw,5rem) 0}
.cta-strip h2{font-size:clamp(1.6rem,2.8vw,2.25rem);font-weight:700;margin-bottom:.55rem;letter-spacing:-.02em}
.cta-strip h2 em{font-style:normal;color:var(--blue);font-weight:700}
.band-dark .cta-strip h2 em{color:var(--blue-bright)}
.cta-strip p{max-width:52ch;margin:0 auto .25rem}
.cta-strip .btn-row{justify-content:center;margin-top:1.6rem}

/* Boxed-card variant of CTA: when band-warm or band-dark is on the same
   section as cta-strip, contain the colored background to a centered card
   instead of running edge-to-edge. */
section.band-warm.cta-strip,
section.band-dark.cta-strip{
  background:transparent;
  border:none;
  padding:clamp(1.5rem,3vw,2.5rem) 0;
}
section.band-warm.cta-strip > .wrap{
  background:var(--paper-tint);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:clamp(2rem,4vw,3rem) clamp(1.5rem,3vw,2.5rem);
  max-width:880px;
}
section.band-dark.cta-strip > .wrap{
  background:linear-gradient(135deg,var(--blue-deep) 0%,var(--ink) 100%);
  color:#fff;
  border-radius:var(--radius);
  padding:clamp(2rem,4vw,3rem) clamp(1.5rem,3vw,2.5rem);
  max-width:880px;
  position:relative;overflow:hidden;
}
section.band-dark.cta-strip > .wrap::before{
  content:"";position:absolute;
  top:-30%;right:-10%;width:50%;height:200%;
  background:radial-gradient(circle,rgba(30,160,224,.18),transparent 55%);
  pointer-events:none;
}
section.band-dark.cta-strip > .wrap > *{position:relative;z-index:1}

/* ---------- prose / inner page content ---------- */
.prose{max-width:100%}
.prose p{font-size:1.05rem;line-height:1.75;max-width:65ch}
.prose h2{margin-top:2.5rem;margin-bottom:1rem}
.prose h2:first-child{margin-top:0}
.prose h3{margin-top:1.75rem;margin-bottom:.6rem;font-size:1.2rem;font-weight:700}
.prose ul.bullets{list-style:none;margin:.5rem 0 1.2rem;max-width:65ch}

/* Two-column page layout: prose on left, sticky sidebar on right */
.layout-2col{
  display:grid;
  grid-template-columns:1.4fr 1fr;
  gap:clamp(2rem,5vw,4rem);
  align-items:start;
}
.layout-2col .col-main{min-width:0}
.layout-2col .col-side{
  position:sticky;
  top:90px; /* offset for sticky header */
  display:flex;flex-direction:column;gap:1.25rem;
}
@media (max-width:980px){
  .layout-2col{grid-template-columns:1fr}
  .layout-2col .col-side{position:static}
}

/* page-head two-column variant */
.page-head .head-2col{
  display:grid;
  grid-template-columns:1.4fr 1fr;
  gap:clamp(2rem,5vw,4rem);
  align-items:end;
}
.page-head .head-2col .head-side{
  background:rgba(255,255,255,.65);
  border:1px solid var(--blue-soft);
  border-radius:var(--radius);
  padding:1.25rem 1.5rem;
  font-size:.92rem;
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
}
.page-head .head-2col .head-side dt{
  font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;
  color:var(--ink-mute);font-weight:600;margin-top:.85rem;margin-bottom:.15rem;
}
.page-head .head-2col .head-side dt:first-child{margin-top:0}
.page-head .head-2col .head-side dd{font-size:.95rem;color:var(--ink);font-weight:500;line-height:1.4}
@media (max-width:980px){
  .page-head .head-2col{grid-template-columns:1fr}
}
.prose ul.bullets li{
  padding-left:1.6rem;position:relative;margin-bottom:.55rem;color:var(--ink-soft);
}
.prose ul.bullets li::before{
  content:"";position:absolute;left:0;top:.7rem;
  width:6px;height:6px;background:var(--blue);border-radius:50%;
}

/* numbered process steps */
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1rem,2vw,1.5rem);margin-top:1.5rem}
@media (max-width:760px){.steps{grid-template-columns:1fr}}
/* When .steps wraps a timeline (instead of separate .step cards), the
   3-column grid wrapper has no purpose — collapse it to a block so the
   timeline gets the full container width. Both selectors used for max
   browser support: :has() (modern) and direct .steps + .timeline override. */
.steps:has(> .timeline){display:block;grid-template-columns:none}
.steps > .timeline{
  grid-column:1 / -1;
  width:100%;
  max-width:100%;
}
.step{
  padding:1.5rem;
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:var(--radius);
  transition:border-color .2s,transform .2s,box-shadow .2s;
}
.step:hover{
  border-color:var(--blue);
  transform:translateY(-2px);
  box-shadow:0 8px 24px -10px rgba(10,132,196,.15);
}
.step .step-num{
  display:inline-flex;align-items:center;justify-content:center;
  width:36px;height:36px;
  border-radius:50%;
  background:var(--blue);
  color:#fff;
  font-family:var(--sans);font-size:.95rem;font-weight:700;
  margin-bottom:.85rem;
  text-transform:uppercase;
}
.step h4{font-size:1.05rem;margin-bottom:.35rem;font-weight:700}
.step p{font-size:.93rem;margin-bottom:0}

/* eligibility / detail card */
.detail-card{
  background:var(--blue-faint);
  border:1px solid var(--blue-soft);
  padding:clamp(1.5rem,3vw,2.25rem);
  border-radius:var(--radius);
  margin:1.75rem 0;
}
.detail-card h3{font-size:1rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;margin-bottom:1rem;color:var(--blue-deep)}
.detail-card ul.bullets{margin:0}
.detail-card ul.bullets li{font-size:.95rem;color:var(--ink-soft)}
.detail-card ul.bullets li strong{color:var(--ink)}

/* ---------- forms ---------- */
.form-card{
  background:var(--paper);
  border:1px solid var(--line);
  padding:clamp(1.5rem,4vw,2.5rem);
  border-radius:var(--radius);
  box-shadow:0 4px 24px -8px rgba(10,36,72,.10),0 1px 3px rgba(10,36,72,.04);
}
.form-card h2{font-size:clamp(1.35rem,2.2vw,1.65rem);margin-bottom:.5rem}
.form-card .form-intro{font-size:.95rem;color:var(--ink-mute);margin-bottom:1.5rem}

/* form validation states */
.field-error{
  font-size:.82rem;color:#c4380a;margin-top:.35rem;line-height:1.4;
}
.field.has-error input,
.field.has-error select,
.field.has-error textarea,
.has-error input,.has-error select,.has-error textarea{
  border-color:#c4380a !important;background:#fff5f1;
}
.form-error{
  background:#fff5f1;border:1px solid #f1c5b3;
  color:#7a2306;border-radius:var(--radius);
  padding:.85rem 1rem;font-size:.9rem;
  margin-bottom:1.25rem;
}
.form-success{
  text-align:center;
  padding:clamp(1.5rem,4vw,3rem) 1rem;
}
.form-success svg{color:var(--blue);margin-bottom:.85rem}
.form-success h3{
  font-size:1.3rem;font-weight:700;
  color:var(--ink);margin-bottom:.65rem;
}
.form-success p{
  font-size:.95rem;color:var(--ink-soft);
  max-width:46ch;margin:0 auto;line-height:1.6;
}

/* Flash banner — shown after a no-JS form post redirects back with ?sent=1 or ?error=… */
.flash-host{max-width:920px;margin:0 auto;padding:0 clamp(1.25rem,3vw,2rem)}
.flash-host:empty{display:none}
.flash{
  display:flex;gap:.85rem;align-items:flex-start;
  padding:1rem 1.15rem;border-radius:var(--radius);
  margin:1.5rem 0 .25rem;
  font-size:.95rem;line-height:1.5;
  animation:flash-in .35s ease-out;
}
.flash svg{flex-shrink:0;margin-top:.1rem}
.flash-success{
  background:#eef7fc;border:1px solid #b9dcec;color:#06425e;
}
.flash-success svg{color:var(--blue)}
.flash-error{
  background:#fff5f1;border:1px solid #f1c5b3;color:#7a2306;
}
.flash-error svg{color:#c4380a}
.flash strong{font-weight:600;display:block;margin-bottom:.15rem}
@keyframes flash-in{
  from{opacity:0;transform:translateY(-6px)}
  to{opacity:1;transform:translateY(0)}
}

.field{margin-bottom:1.15rem}
.field label{
  display:block;font-size:.85rem;font-weight:600;
  color:var(--ink);margin-bottom:.4rem;
}
.field label .req{color:var(--blue);margin-left:3px}
.field input[type="text"],.field input[type="email"],.field input[type="tel"],
.field input[type="number"],.field input[type="month"],
.field select,.field textarea{
  width:100%;padding:.75rem .9rem;
  font-family:var(--sans);font-size:.95rem;color:var(--ink);
  background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-sm);
  transition:border-color .15s,box-shadow .15s;
}
.field input:focus,.field select:focus,.field textarea:focus{
  outline:none;border-color:var(--blue);
  box-shadow:0 0 0 3px rgba(10,132,196,.12);
}
.field textarea{resize:vertical;min-height:80px}
.field .hint{font-size:.82rem;color:var(--ink-mute);margin-top:.3rem}

/* Inline help tooltip — small "?" badge that shows a tip on hover/focus */
.info-tip{
  display:inline-flex;align-items:center;justify-content:center;
  width:1.05rem;height:1.05rem;margin-left:.4rem;
  border-radius:50%;background:var(--blue-faint);color:var(--blue);
  border:1px solid var(--blue-soft);
  font-size:.7rem;font-weight:700;line-height:1;
  cursor:help;position:relative;vertical-align:middle;
  transition:background .15s,color .15s;
}
.info-tip:hover,.info-tip:focus{background:var(--blue);color:#fff;outline:none}
.info-tip::after{
  content:attr(data-tip);
  position:absolute;left:50%;bottom:calc(100% + 8px);
  transform:translateX(-50%);
  background:var(--ink);color:#fff;
  padding:.55rem .75rem;border-radius:var(--radius-sm);
  font-size:.78rem;font-weight:400;line-height:1.4;
  white-space:normal;width:max-content;max-width:240px;
  box-shadow:0 4px 14px rgba(10,36,72,.18);
  opacity:0;visibility:hidden;pointer-events:none;
  transition:opacity .15s,visibility .15s;
  z-index:20;
}
.info-tip::before{
  content:"";
  position:absolute;left:50%;bottom:calc(100% + 2px);
  transform:translateX(-50%);
  border:5px solid transparent;border-top-color:var(--ink);
  opacity:0;visibility:hidden;
  transition:opacity .15s,visibility .15s;
  z-index:21;
}
.info-tip:hover::after,.info-tip:focus::after,
.info-tip:hover::before,.info-tip:focus::before{
  opacity:1;visibility:visible;
}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:.85rem}
@media (max-width:580px){.field-row{grid-template-columns:1fr}}
.field-row-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:.85rem}
@media (max-width:780px){.field-row-3{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.field-row-3{grid-template-columns:1fr}}
/* When mixed control types share a row, stretch them to match heights */
.field-row-3 > .field{display:flex;flex-direction:column}
.field-row-3 > .field > .file-wrap,
.field-row-3 > .field > .captcha-row{flex:0 0 auto;min-height:0;align-self:flex-start}
.field-row-3 > .field > textarea{flex:1;min-height:80px}

/* Mixed-width 3-col row: narrow first column for compact controls (e.g. Yes/No),
   then two equal flexible columns. Stays 3-col until the form is genuinely too narrow. */
.field-row-mix{
  display:grid;
  grid-template-columns:max-content minmax(0,1fr) minmax(0,1fr);
  gap:.85rem;
  align-items:stretch;
}
.field-row-mix > .field{display:flex;flex-direction:column;min-width:0}
.field-row-mix > .field > .file-wrap{flex:0 0 auto;min-height:0;align-self:flex-start}
@media (max-width:520px){
  .field-row-mix{grid-template-columns:1fr}
}

/* Verification + Cover note row: verification sized to its content (compact),
   cover note textarea takes the remaining width. */
.field-row-verify{
  display:grid;
  grid-template-columns:auto 1fr;
  gap:.85rem;
  align-items:stretch;
}
.field-row-verify > .field{display:flex;flex-direction:column;min-width:0}
.field-row-verify > .field > .captcha-row{flex:0 0 auto;min-height:0}
.field-row-verify > .field > textarea{flex:1;min-height:80px}
/* Tighten the captcha controls inside the verify row so the column stays compact */
.field-row-verify .captcha-row{gap:.6rem}
.field-row-verify .captcha-row input{max-width:80px}
@media (max-width:580px){
  .field-row-verify{grid-template-columns:1fr}
}

/* Compact 2-col row: both items size to their content, with gap; remaining space stays empty.
   Used for things like Resume button + Verification captcha. */
.field-row-compact{
  display:flex;flex-wrap:wrap;align-items:flex-end;
  gap:1.5rem .85rem;
}
.field-row-compact > .field{margin:0;flex:0 0 auto}
.field-row-compact .captcha-row{gap:.6rem}
.field-row-compact .captcha-row input{max-width:80px}
@media (max-width:520px){
  .field-row-compact{flex-direction:column;align-items:stretch;gap:1rem}
}

/* Inline radio options — text-only, compact.
   Selectors are scoped under .radio-row to outweigh the global `.field label{display:block}` rule. */
.radio-row{
  display:flex;align-items:center;gap:1.25rem;
  padding:.75rem .25rem;flex:1;flex-wrap:wrap;
}
.radio-row .radio-opt,
.field .radio-row .radio-opt{
  display:inline-flex;align-items:center;gap:.4rem;
  font-size:.95rem;color:var(--ink);font-weight:500;
  cursor:pointer;margin:0;
}
.radio-row .radio-opt input[type="radio"]{
  margin:0;accent-color:var(--blue);cursor:pointer;
}

/* File upload — compact button style with an upload icon */
.file-wrap{
  position:relative;
  display:inline-flex;align-items:center;gap:.5rem;
  padding:.6rem 1rem;
  border:1px solid var(--blue);
  border-radius:var(--radius-sm);
  background:var(--blue-faint);
  color:var(--blue);
  cursor:pointer;
  font-size:.9rem;font-weight:600;
  transition:background .15s,border-color .15s,box-shadow .15s,color .15s;
  max-width:100%;
}
.file-wrap .file-icon{flex-shrink:0;color:currentColor}
.file-wrap:hover{background:var(--blue);color:#fff}
.file-wrap:focus-within{box-shadow:0 0 0 3px rgba(10,132,196,.18)}
.file-wrap input[type="file"]{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}
.file-wrap .file-label{
  font-size:.9rem;color:inherit;font-weight:600;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;
}
.file-wrap .file-label strong{color:inherit;font-weight:600}
.file-wrap .file-label br{display:none}
.file-wrap .file-label span{display:inline;margin-left:.4rem;font-weight:400;opacity:.85}

.consent{
  display:flex;align-items:flex-start;gap:.65rem;
  font-size:.9rem;color:var(--ink-soft);margin:1rem 0;
}
.consent input{margin-top:.2rem;flex-shrink:0;accent-color:var(--blue)}

/* Submit row: consent (left, takes max width) + Submit button (right, fixed) */
.submit-row{
  display:flex;align-items:center;gap:1.25rem;
  margin-top:1.25rem;
}
.submit-row .consent{flex:1;margin:0}
.submit-row .btn-row{margin:0;flex-shrink:0;justify-content:flex-end}
@media (max-width:580px){
  .submit-row{flex-direction:column;align-items:stretch;gap:1rem}
  .submit-row .btn-row{justify-content:flex-start}
}

.captcha-row{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}
.captcha-q{
  font-family:var(--sans);font-size:1rem;font-weight:600;
  padding:.55rem .85rem;background:var(--blue-faint);
  border:1px solid var(--blue-soft);border-radius:var(--radius-sm);
  color:var(--ink);
}
.captcha-row input{max-width:120px}

.hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0;overflow:hidden}

/* ---------- contact-page split ---------- */
.contact-grid{
  display:grid;grid-template-columns:1fr 1.4fr;
  gap:clamp(1.75rem,4vw,3rem);align-items:start;
}
.contact-grid.contact-grid--single{
  grid-template-columns:minmax(0,720px);
  justify-content:center;
}
@media (max-width:820px){.contact-grid{grid-template-columns:1fr}}

.contact-info h3{font-size:1.35rem;font-weight:700;margin-bottom:1rem}
.contact-info dl dt{
  font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;
  color:var(--ink-mute);font-weight:600;margin-top:1.1rem;margin-bottom:.2rem;
}
.contact-info dl dt:first-child{margin-top:0}
.contact-info dl dd{font-size:1rem;color:var(--ink);line-height:1.5;font-weight:500}
.contact-info dl dd a{color:var(--blue);font-weight:600}
.contact-info dl dd a:hover{color:var(--blue-deep)}
.contact-note{
  margin-top:1.75rem;padding:1.25rem;
  background:var(--blue-faint);
  border:1px solid var(--blue-soft);
  border-radius:var(--radius-sm);
  font-size:.9rem;color:var(--ink-soft);
}
.contact-note a{font-weight:600}

/* ---------- footer ---------- */
/* ---------- programs.html components ---------- */
.audience-pill{
  display:inline-block;
  font-size:.7rem;font-weight:700;letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--blue);
  background:var(--blue-faint);
  padding:.25rem .65rem;
  border-radius:100px;
  margin-bottom:.85rem;
}
.program-note{
  font-size:.85rem;
  color:var(--ink-mute);
  font-style:italic;
  margin-top:.5rem;
}
.band-light{background:var(--paper-tint);padding:clamp(2.5rem,5vw,4rem) 0}
.band-cta{padding:clamp(2.5rem,5vw,4rem) 0}
.cta-strip{
  text-align:center;
  max-width:640px;margin:0 auto;
}
.cta-strip h2{margin-bottom:.85rem}
.cta-strip p{margin-bottom:1.5rem;color:var(--ink-soft)}
.cta-buttons{
  display:flex;gap:.75rem;flex-wrap:wrap;justify-content:center;
}
.btn-primary{
  /* alias for .btn — keeps semantic naming on programs.html */
  display:inline-flex;align-items:center;gap:.5rem;
  padding:.85rem 1.65rem;
  font-family:var(--sans);
  font-size:.92rem;font-weight:600;letter-spacing:.01em;
  border:1px solid var(--accent);background:var(--accent);color:#fff;
  border-radius:var(--radius);text-decoration:none;
  box-shadow:0 1px 3px rgba(10,132,196,.25),0 4px 12px -4px rgba(10,132,196,.35);
  transition:all .18s;
}
.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);transform:translateY(-1px)}
.btn-secondary{
  display:inline-flex;align-items:center;gap:.5rem;
  padding:.85rem 1.65rem;
  font-family:var(--sans);
  font-size:.92rem;font-weight:600;letter-spacing:.01em;
  background:transparent;color:var(--ink);
  border:1px solid var(--line);
  border-radius:var(--radius);text-decoration:none;
  transition:all .18s;
}
.btn-secondary:hover{background:var(--paper-tint);border-color:var(--blue);color:var(--blue);transform:translateY(-1px)}

/* ---------- numbered timeline ---------- */
.timeline{
  list-style:none;
  margin:1.5rem 0 0 0;padding:0;
  position:relative;
  max-width:640px;
}
.timeline-item{
  position:relative;
  padding-left:4rem;
  padding-bottom:2.25rem;
  /* Vertical connector line: each item draws its own line down */
}
.timeline-item:not(:last-child)::before{
  content:"";
  position:absolute;
  left:1.4rem;top:2.6rem;bottom:.4rem;
  width:1.5px;
  background:linear-gradient(180deg,var(--blue) 0%,var(--blue-bright) 100%);
  opacity:.3;
}
.timeline-num{
  position:absolute;
  left:0;top:.1rem;
  width:2.8rem;height:2.8rem;
  border-radius:50%;
  background:var(--blue);
  color:#fff;
  display:flex;align-items:center;justify-content:center;
  font-weight:700;font-size:1rem;
  box-shadow:0 2px 6px -1px rgba(10,132,196,.4);
}
.timeline-item:nth-child(even) .timeline-num{background:var(--blue-bright)}
.timeline-title{
  font-size:1.15rem;font-weight:700;
  color:var(--ink);
  margin:.3rem 0 .35rem;
  letter-spacing:-.01em;
}
.timeline-desc{
  font-size:.95rem;
  color:var(--ink-soft);
  line-height:1.6;
  margin:0;
  /* Default: left-aligned, no hyphenation. Vertical timelines need this
     because their narrow columns make justify look bad. The horizontal
     variant is also left-aligned (overridden below). The !important wins
     against .justified-multiline if the JS line-counter ever tags it. */
  text-align:left !important;
  -webkit-hyphens:manual;
  hyphens:manual;
  word-break:normal;
  overflow-wrap:break-word;
}
@media (max-width:560px){
  .timeline-item{padding-left:3.4rem}
  .timeline-num{width:2.4rem;height:2.4rem;font-size:.9rem}
  .timeline-item:not(:last-child)::before{left:1.2rem;top:2.2rem}
  .timeline-title{font-size:1.05rem}
}

/* ---------- horizontal timeline variant ---------- */
/* Uses flexbox with explicit flex-basis on each item. This is more
   predictable than grid auto-fit when the parent's intrinsic width is
   ambiguous. Each item asks for ~16% of the row (so 6 fit) and shrinks
   on narrow screens, wrapping to multiple rows naturally. */
.timeline.timeline-horizontal{
  display:flex;
  flex-wrap:wrap;
  gap:2rem 1.25rem;
  width:100%;
  max-width:100%;
  margin-top:2rem;
  padding:0;
  list-style:none;
}
.timeline.timeline-horizontal .timeline-item{
  position:relative;
  flex:1 1 calc((100% - 5 * 1.25rem) / 6);
  min-width:160px;
  padding:0;
  padding-bottom:0;
  text-align:left;
  display:flex;flex-direction:column;align-items:flex-start;
}
.timeline.timeline-horizontal .timeline-num{
  position:static;
  margin-bottom:1rem;
}
.timeline.timeline-horizontal .timeline-title{
  text-align:left;
  margin-top:0;
  font-size:1rem;
  width:100%;
}
.timeline.timeline-horizontal .timeline-desc{
  text-align:left !important;
  -webkit-hyphens:manual !important;
  hyphens:manual !important;
  font-size:.88rem;
  line-height:1.55;
  width:100%;
  max-width:none;
}
/* Connector line — short horizontal line just to the right of each circle */
.timeline.timeline-horizontal .timeline-item:not(:last-child)::after{
  content:"";
  position:absolute;
  left:2.4rem;
  top:1.4rem;
  height:1.5px;
  width:calc(100% - 2.4rem);
  background:linear-gradient(90deg,var(--blue) 0%,var(--blue-bright) 100%);
  opacity:.3;
}
/* On phones (≤560px), stack vertically — readable as a list, not a row */
@media (max-width:560px){
  .timeline.timeline-horizontal{
    flex-direction:column;
    gap:0;
  }
  .timeline.timeline-horizontal .timeline-item{
    flex:1 1 100%;
    padding:0 0 2.25rem 3.4rem;
  }
  .timeline.timeline-horizontal .timeline-num{
    position:absolute;
    left:0;top:.1rem;
    margin-bottom:0;
  }
  .timeline.timeline-horizontal .timeline-item:not(:last-child)::after{
    left:1.2rem;top:2.2rem;
    width:1.5px;height:calc(100% - 2.2rem);
    background:linear-gradient(180deg,var(--blue) 0%,var(--blue-bright) 100%);
  }
}

/* ---------- side-by-side process + form layout ---------- */
.process-form-grid{
  display:grid;
  grid-template-columns:1fr 3fr;
  gap:clamp(2rem,4vw,3rem);
  align-items:start;
}
.process-form-grid .process-col,
.process-form-grid .form-col{
  min-width:0;  /* prevents form fields from forcing column overflow */
}
.process-form-grid .timeline{max-width:none;width:100%}
.process-form-grid .timeline-item{width:100%}
.process-form-grid .timeline-item{padding-left:3.2rem;padding-bottom:1.5rem}
.process-form-grid .timeline-num{
  width:2.2rem;height:2.2rem;
  font-size:.9rem;
}
.process-form-grid .timeline-item:not(:last-child)::before{
  left:1.05rem;top:2rem;
}
.process-form-grid .timeline-title{font-size:1.05rem}
.process-form-grid .timeline-desc{font-size:.9rem;line-height:1.55}
.process-form-grid .form-card{margin-top:.5rem}
/* Stack on tablets and below */
@media (max-width:1024px){
  .process-form-grid{
    grid-template-columns:1fr;
    gap:clamp(2.5rem,5vw,3.5rem);
  }
}


.site-footer{
  background:var(--ink);
  color:rgba(255,255,255,.75);
  padding:clamp(2.5rem,5vw,4rem) 0 1.75rem;
  font-size:.9rem;
}
.site-footer h4{
  color:#fff;
  font-size:.95rem;font-weight:600;margin-bottom:1rem;
  text-transform:uppercase;letter-spacing:.08em;font-size:.75rem;
}
.footer-grid{
  display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;
  gap:2rem;padding-bottom:2rem;border-bottom:1px solid rgba(255,255,255,.08);
}
@media (max-width:820px){.footer-grid{grid-template-columns:1fr 1fr;gap:1.75rem}}
@media (max-width:480px){.footer-grid{grid-template-columns:1fr}}

.site-footer a{color:rgba(255,255,255,.75);transition:color .15s}
.site-footer a:hover{color:var(--blue-bright)}
.site-footer .brand{
  display:inline-flex;align-items:center;line-height:0;
}
.site-footer .brand img{
  height:30px;width:auto;display:block;
  opacity:.9;
  transition:opacity .2s;
}
.site-footer .brand:hover img{opacity:1}
.site-footer ul{list-style:none}
.site-footer ul li{margin-bottom:.5rem}

.footer-meta{
  font-size:.85rem;color:rgba(255,255,255,.55);
  margin-top:1rem;line-height:1.7;
}
.footer-meta strong{color:rgba(255,255,255,.85);font-weight:500}

.copyline{
  display:flex;justify-content:space-between;align-items:flex-start;
  margin-top:1.5rem;font-size:.78rem;color:rgba(255,255,255,.45);
  flex-wrap:wrap;gap:1rem;
}
.copyline em{font-style:normal;color:rgba(255,255,255,.6)}