  :root{
    --paper:#faf8f4;
    --paper-2:#f1ede4;
    --ink:#12151b;
    --ink-soft:#6b7078;
    --accent:#1f3a5f;
    --accent-bright:#2c5386;
    --line:#e3ded2;
    --focus:#c76b1c;
    --max-w:1080px;
  }
  *{box-sizing:border-box;}
  html{
    scroll-behavior:smooth;
    /* The header is sticky, so an anchor jump would otherwise land the
       section flush against the top of the viewport and the header would
       sit on top of its eyebrow and heading. Offset every scroll target by
       a little more than the header's height so the heading clears it. */
    scroll-padding-top:88px;
  }
  @media (max-width:640px){ html{scroll-padding-top:76px;} }
  /* Belt and braces: scroll-padding-top covers anchor links, and this covers
     the JS scrollIntoView() calls that also jump to sections. */
  section[id]{scroll-margin-top:88px;}
  @media (max-width:640px){ section[id]{scroll-margin-top:76px;} }
  @media (prefers-reduced-motion: reduce){
    html{scroll-behavior:auto;}
    *{animation-duration:0.01ms !important; animation-iteration-count:1 !important; transition-duration:0.01ms !important;}
  }

  /* ---------- Scroll-reveal motion (progressive enhancement) ----------
     Default state is fully visible. Only when JS confirms it's running
     (html.js) do elements start hidden and animate in on scroll, so a
     no-JS visitor never sees missing content. */
  .reveal{opacity:1; transform:none;}
  html.js .reveal{
    opacity:0; transform:translateY(22px);
    transition:opacity .7s cubic-bezier(.2,.7,.2,1), transform .7s cubic-bezier(.2,.7,.2,1);
    will-change:opacity, transform;
  }
  html.js .reveal.is-visible{opacity:1; transform:none;}
  /* stagger children of a revealed group slightly for a "flowing" feel */
  html.js .reveal-group.is-visible > *{transition-delay:calc(var(--stagger, 0) * 70ms);}
  body{
    margin:0; background:var(--paper); color:var(--ink);
    font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
    font-size:16px; line-height:1.6;
  }
  h1,h2,h3{
    font-family:'Archivo',sans-serif; font-weight:800;
    line-height:1.08; margin:0 0 0.5em 0; letter-spacing:-0.01em;
  }
  p{margin:0 0 1em 0;}
  a{color:var(--accent);}
  a:hover{color:var(--accent-bright);}
  img{max-width:100%; display:block;}

  a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible,
  textarea:focus-visible, summary:focus-visible, [tabindex]:focus-visible{
    outline:3px solid var(--focus); outline-offset:3px;
  }
  .skip-link{
    position:absolute; left:-9999px; top:0;
    background:var(--accent); color:#fff; padding:12px 20px; font-weight:700; z-index:1000;
  }
  .skip-link:focus{left:0;}

  /* Cookie consent banner */
  .cookie-banner{
    position:fixed; left:0; right:0; bottom:0; z-index:2000;
    background:var(--ink); color:#e8e6e1;
    border-top:1px solid rgba(255,255,255,0.12);
    padding:18px 24px; box-shadow:0 -4px 24px rgba(0,0,0,0.18);
  }
  .cookie-banner[hidden]{display:none;}
  .cookie-banner-inner{
    max-width:var(--max-w); margin:0 auto;
    display:flex; align-items:center; justify-content:space-between; gap:24px; flex-wrap:wrap;
  }
  .cookie-banner p{margin:0; font-size:0.88rem; line-height:1.5; color:#c4c8ce; max-width:62ch;}
  .cookie-banner a{color:#fff; text-decoration:underline;}
  .cookie-banner-actions{display:flex; gap:10px; flex-shrink:0;}
  .cookie-banner-actions button{
    font-family:'Inter',sans-serif; font-weight:600; font-size:0.88rem;
    padding:10px 18px; border-radius:6px; cursor:pointer; border:1px solid transparent;
  }
  .cookie-btn-decline{background:transparent; color:#c4c8ce; border-color:rgba(255,255,255,0.25);}
  .cookie-btn-decline:hover{border-color:#fff; color:#fff;}
  .cookie-btn-accept{background:var(--focus); color:#fff;}
  .cookie-btn-accept:hover{background:#a85916;}
  @media (max-width:640px){
    .cookie-banner-inner{flex-direction:column; align-items:stretch; text-align:left;}
    .cookie-banner-actions{justify-content:flex-end;}
  }

  .wrap{max-width:var(--max-w); margin:0 auto; padding:0 24px;}
  section{padding:64px 0;}
  @media (max-width:640px){ section{padding:44px 0;} }

  .eyebrow{
    text-transform:uppercase; letter-spacing:0.12em; font-size:0.74rem;
    font-weight:700; color:var(--accent); margin:0 0 10px 0;
  }

  /* ---------- Nav ---------- */
  header.site-header{
    position:sticky; top:0; z-index:100;
    background:rgba(250,248,244,0.95); backdrop-filter:blur(6px);
    border-bottom:1px solid var(--line);
  }
  .nav-inner{
    max-width:var(--max-w); margin:0 auto; padding:16px 24px;
    display:flex; align-items:center; justify-content:space-between; gap:24px;
  }
  .brand{display:inline-flex; align-items:center; text-decoration:none;}
  .brand img{height:40px; width:auto; display:block; transition:opacity .15s ease;}
  .brand:hover img{opacity:0.8;}
  nav.primary-nav ul{list-style:none; display:flex; gap:26px; margin:0; padding:0;}
  nav.primary-nav a{color:var(--ink); text-decoration:none; font-size:0.9rem; font-weight:500; position:relative;}
  nav.primary-nav a::after{
    content:""; position:absolute; left:0; right:0; bottom:-4px; height:2px;
    background:var(--accent); transform:scaleX(0); transform-origin:left;
    transition:transform .25s ease;
  }
  nav.primary-nav a:hover::after, nav.primary-nav a:focus-visible::after{transform:scaleX(1);}
  nav.primary-nav a:hover{color:var(--accent);}
  .nav-cta{
    background:var(--accent); color:#fff !important; padding:10px 20px;
    font-weight:600; font-size:0.86rem; text-decoration:none; white-space:nowrap; border-radius:4px;
  }
  .nav-cta:hover{background:var(--accent-bright); color:#fff !important;}
  .nav-toggle{
    display:none; background:none; border:1px solid var(--line); color:var(--ink);
    padding:8px 12px; font-size:0.95rem; border-radius:4px;
  }
  @media (max-width:860px){
    nav.primary-nav{display:none;}
    nav.primary-nav.open{
      display:block; position:absolute; top:100%; left:0; right:0;
      background:var(--paper); border-bottom:1px solid var(--line); padding:16px 24px 24px;
    }
    nav.primary-nav.open ul{flex-direction:column; gap:14px;}
    .nav-toggle{display:inline-block;}
    .nav-cta{display:none;}
  }

  /* ---------- Hero (ocean background) ---------- */
  .hero{
    position:relative; overflow:hidden;
    aspect-ratio:3004/1024; min-height:300px;
    display:flex; align-items:flex-end;
    background:var(--ink); /* shows instantly while the photo loads in */
  }
  /* Mobile: a moderate landscape ratio rather than either extreme --
     the photo's native ~2.9:1 shape would leave almost no room for the
     heading and buttons on a phone, but the old tall ~78vh treatment
     zoomed in far too aggressively on a photo this wide, cropping out
     most of the sun and the house. 3:2 is a reasonable middle ground. */
  @media (max-width:640px){ .hero{aspect-ratio:auto; min-height:440px; max-height:540px;} }
  .hero-bg{
    position:absolute; left:0; right:0; top:-8%; bottom:-8%; z-index:0;
    overflow:hidden;
    background:var(--ink) url('/assets/hero-house-poster-v7.webp') center/cover no-repeat;
  }
  .hero-bg video{
    position:absolute; inset:0; width:100%; height:100%;
    object-fit:cover; object-position:center;
  }
  /* Reduced-motion / "pause motion" -> hide the video and let the poster
     background (already set on .hero-bg above) show through. */
  @media (prefers-reduced-motion: reduce){
    .hero-bg video{display:none;}
  }
  html.a11y-pause-motion .hero-bg video{display:none;}
  .hero-overlay{
    position:absolute; inset:0; z-index:1;
    background:linear-gradient(180deg, rgba(15,20,26,0.20) 0%, rgba(15,20,26,0.55) 55%, rgba(12,16,21,0.90) 100%);
  }
  .hero-content{position:relative; z-index:2; padding:32px 0 40px; width:100%;}
  .hero-content .eyebrow{color:#ffd479;}
  .hero h1{font-size:clamp(2rem, 6vw, 3.6rem); color:#fff;}
  .hero h1 .accent{color:#ffd479;}
  .hero p.lede{font-size:1.1rem; color:rgba(255,255,255,0.86); max-width:44ch;}
  .btn{
    display:inline-block; padding:13px 24px; border-radius:4px; font-weight:600;
    font-size:0.94rem; text-decoration:none; border:1px solid transparent; cursor:pointer;
    transition:transform .25s ease, box-shadow .25s ease, background-color .25s ease, border-color .25s ease, color .25s ease;
  }
  .btn:hover{transform:translateY(-2px);}
  .btn:active{transform:translateY(0);}
  .btn-primary{background:var(--accent); color:#fff; box-shadow:0 1px 2px rgba(0,0,0,0.08);}
  .btn-primary:hover{background:var(--accent-bright); color:#fff; box-shadow:0 10px 24px -8px rgba(31,58,95,0.55);}
  .btn-secondary{background:transparent; color:var(--ink); border-color:var(--line);}
  .btn-secondary:hover{border-color:var(--accent); color:var(--accent);}

  /* ---------- Trust ---------- */
  .trust-strip{padding:28px 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line);}
  .trust-inner{display:flex; align-items:center; gap:20px; flex-wrap:wrap; justify-content:center; text-align:center; flex-direction:column;}
  .trust-text{color:var(--ink-soft); font-size:0.86rem;}

  /* ---------- Intent selector ---------- */
  .intent{padding:44px 0; border-bottom:1px solid var(--line); background:var(--paper-2);}
  .intent-label{
    text-align:center; font-weight:700; font-family:'Archivo',sans-serif; font-size:1.02rem;
    margin-bottom:18px; color:var(--ink);
  }
  .intent-grid{display:grid; grid-template-columns:repeat(5, minmax(0,1fr)); gap:14px;}
  @media (max-width:900px){ .intent-grid{grid-template-columns:repeat(3, minmax(0,1fr));} }
  @media (max-width:760px){ .intent-grid{grid-template-columns:repeat(2, minmax(0,1fr));} }
  .intent-card{
    background:#fff; border:1px solid var(--line); border-radius:8px; padding:18px 14px;
    display:flex; flex-direction:column; align-items:center; text-align:center; gap:4px;
    cursor:pointer; font-family:inherit;
    transition:transform .25s cubic-bezier(.2,.7,.2,1), box-shadow .25s ease, border-color .25s ease;
  }
  .intent-card:hover{transform:translateY(-3px); box-shadow:0 14px 28px -16px rgba(18,21,27,0.25); border-color:var(--accent);}
  .intent-card.selected{border-color:var(--accent); background:#fff; box-shadow:0 0 0 2px var(--accent) inset;}
  .intent-icon{font-size:1.4rem; color:var(--accent); margin-bottom:2px;}
  .intent-title{font-weight:700; font-size:0.9rem; color:var(--ink);}
  .intent-sub{font-size:0.76rem; color:var(--ink-soft);}

  /* ---------- Programs ---------- */
  .programs-grid{
    display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
    gap:1px; background:var(--line); border:1px solid var(--line); margin-top:28px; border-radius:6px; overflow:hidden;
  }
  .program-card{
    background:var(--paper); padding:22px; color:var(--ink);
    transition:transform .3s cubic-bezier(.2,.7,.2,1), box-shadow .3s ease, background-color .3s ease, border-color .3s ease;
    border:none; text-align:left; font-family:inherit; cursor:pointer; position:relative;
    display:flex; flex-direction:column; align-items:flex-start;
  }
  .program-card:hover{
    transform:translateY(-4px);
    box-shadow:0 16px 32px -18px rgba(18,21,27,0.25);
    background:#fff;
  }
  .program-card.selected{background:#fff; box-shadow:0 0 0 2px var(--accent) inset;}
  .program-card::after{
    content:"Get matched \2192"; font-size:0.72rem; font-weight:700; color:var(--accent);
    margin-top:10px; opacity:0; transform:translateY(2px);
    transition:opacity .2s ease, transform .2s ease;
  }
  .program-card:hover::after, .program-card:focus-visible::after{opacity:1; transform:none;}
  .program-card h3{font-size:1rem; font-weight:700; margin-bottom:4px;}
  .program-card p{color:var(--ink-soft); font-size:0.86rem; margin:0;}

  /* ---------- Team ---------- */
  .team-intro{
    display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:24px;
    margin-top:24px; margin-bottom:8px; padding-bottom:28px; border-bottom:1px solid var(--line);
  }
  .team-intro h3{font-size:1rem; margin-bottom:8px; color:var(--accent);}
  .team-intro p{font-size:0.92rem; color:var(--ink-soft); line-height:1.6; max-width:60ch;}
  .team-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); gap:20px; margin-top:28px;}
  .team-grid:has(.person-card:only-of-type){max-width:420px;}
  .person-card{
    display:flex; gap:16px; align-items:flex-start; padding:24px;
    background:var(--paper-2); border-radius:6px;
    transition:transform .3s cubic-bezier(.2,.7,.2,1), box-shadow .3s ease;
  }
  .person-card:hover{transform:translateY(-4px); box-shadow:0 16px 32px -18px rgba(18,21,27,0.22);}
  .person-card .avatar{
    width:64px; height:64px; border-radius:50%; overflow:hidden; flex-shrink:0;
  }
  .person-card .avatar img{width:100%; height:100%; object-fit:cover; display:block;}
  .person-card h3{font-size:1rem; margin-bottom:2px;}
  .person-card .role{color:var(--accent); font-size:0.82rem; font-weight:600; margin-bottom:10px;}
  .person-card .contact-line{font-size:0.82rem; color:var(--ink-soft); line-height:1.5;}
  .person-card .contact-line a{color:var(--ink);}

  /* ---------- Calculator ---------- */
  .calc-panel{
    background:var(--paper-2); border-radius:8px; padding:28px; margin-top:28px;
    display:grid; grid-template-columns:1fr 1fr; gap:32px;
  }
  @media (max-width:760px){ .calc-panel{grid-template-columns:1fr;} }
  .field{margin-bottom:16px;}
  .field label{display:block; font-size:0.86rem; font-weight:600; margin-bottom:6px;}
  .field input, .field select, .field textarea{
    width:100%; background:var(--paper); border:1px solid var(--line); color:var(--ink);
    padding:11px 13px; border-radius:4px; font-size:1rem; font-family:inherit;
  }
  .field input:hover, .field select:hover, .field textarea:hover{border-color:var(--accent);}
  .calc-results{background:var(--paper); border-radius:6px; padding:22px;}
  .result-row{display:flex; justify-content:space-between; padding:9px 0; border-bottom:1px dashed var(--line); font-size:0.92rem;}
  .result-row:last-child{border-bottom:none;}
  .result-row .label{color:var(--ink-soft);}
  .result-row .value{font-weight:700; font-size:1.1rem;}
  .result-total .value{color:var(--accent);}
  .calc-disclaimer{font-size:0.74rem; color:var(--ink-soft); margin-top:14px; padding-top:14px; border-top:1px solid var(--line);}
  .calc-cta{
    display:none; margin-top:16px; padding-top:16px; border-top:1px solid var(--line);
    text-align:center;
  }
  .calc-cta.show{display:block; animation:calcCtaIn .4s ease;}
  @keyframes calcCtaIn{from{opacity:0; transform:translateY(6px);} to{opacity:1; transform:none;}}
  .calc-cta p{margin:0 0 10px 0; font-size:0.88rem; font-weight:600; color:var(--ink);}
  .btn-sm{padding:10px 18px; font-size:0.86rem;}

  /* ---------- Glossary ---------- */
  .accordion{border-top:1px solid var(--line); margin-top:28px;}
  .accordion-item{border-bottom:1px solid var(--line);}
  .accordion-item summary{
    list-style:none; cursor:pointer; padding:16px 2px; display:flex;
    justify-content:space-between; align-items:center; font-weight:600; font-size:0.98rem; gap:16px;
  }
  .accordion-item summary::-webkit-details-marker{display:none;}
  .accordion-item summary .plus{color:var(--accent); font-size:1.2rem; font-weight:400; flex-shrink:0; transition:transform 0.15s ease;}
  .accordion-item[open] summary .plus{transform:rotate(45deg);}
  .accordion-item p{
    padding:0 2px 18px 2px; color:var(--ink-soft); font-size:0.92rem; max-width:64ch;
    opacity:0; transform:translateY(-6px);
    transition:opacity .35s ease, transform .35s ease;
  }
  .accordion-item[open] p{opacity:1; transform:translateY(0);}

  /* ---------- Agent partnership ---------- */
  .agent-grid{
    display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:18px;
    margin-top:24px;
  }
  .agent-card{
    background:var(--paper-2); border-radius:6px; padding:20px;
    transition:transform .3s cubic-bezier(.2,.7,.2,1), box-shadow .3s ease;
  }
  .agent-card:hover{transform:translateY(-4px); box-shadow:0 16px 32px -18px rgba(18,21,27,0.22);}
  .agent-card h3{font-size:0.98rem; margin-bottom:6px; color:var(--accent);}
  .agent-card p{font-size:0.86rem; color:var(--ink-soft); line-height:1.55;}

  /* ---------- Contact ---------- */
  .contact-panel{background:var(--paper-2); border-radius:8px; margin-top:28px; overflow:hidden;}
  .tabs{display:flex; border-bottom:1px solid var(--line);}
  .tab-btn{
    flex:1; background:none; border:none; color:var(--ink-soft); padding:16px 18px;
    font-size:0.92rem; font-weight:600; font-family:inherit; cursor:pointer; border-bottom:2px solid transparent;
  }
  .tab-btn[aria-selected="true"]{color:var(--ink); border-bottom-color:var(--accent);}
  .tab-panel{padding:28px;}
  .tab-panel[hidden]{display:none;}
  .form-row{display:grid; grid-template-columns:1fr 1fr; gap:14px;}
  @media (max-width:600px){ .form-row{grid-template-columns:1fr;} }
  .field textarea{min-height:100px; resize:vertical;}
  .consent-row{display:flex; gap:10px; align-items:flex-start; font-size:0.8rem; color:var(--ink-soft); margin:16px 0;}
  .consent-row input[type="checkbox"]{width:18px; height:18px; margin-top:2px; flex-shrink:0; accent-color:var(--accent);}
  .form-error{color:#c0392b; font-size:0.8rem; margin-top:6px; display:none;}
  .field.has-error input, .field.has-error textarea{border-color:#c0392b;}
  .field.has-error .form-error{display:block;}

  /* ---------- Multi-step form ---------- */
  .form-progress{
    display:flex; align-items:center; gap:10px; padding:0 0 18px;
    font-size:0.78rem; font-weight:700; color:var(--ink-soft);
  }
  .form-progress-step.active{color:var(--accent);}
  .form-progress-bar{flex:1; height:4px; background:var(--line); border-radius:99px; overflow:hidden;}
  .form-progress-fill{
    display:block; height:100%; width:0%; background:var(--accent);
    transition:width .35s cubic-bezier(.2,.7,.2,1);
  }
  .form-step-hint{font-size:0.76rem; color:var(--ink-soft); text-align:center; margin:10px 0 0;}
  .form-step-actions{display:flex; gap:10px;}
  .form-step-actions .btn{flex:1;}
  .form-trust{font-size:0.74rem; color:var(--ink-soft); text-align:center; margin:12px 0 0;}
  .optional-tag{font-weight:400; color:var(--ink-soft); font-size:0.78rem;}
  .form-success{
    text-align:center; padding:40px 20px; animation:calcCtaIn .4s ease;
  }
  .form-success-title{
    font-family:'Archivo',sans-serif; font-weight:800; font-size:1.15rem;
    color:var(--ink); margin-bottom:8px;
  }
  .form-success p:not(.form-success-title){color:var(--ink-soft); font-size:0.92rem;}
  .form-progress{flex-wrap:wrap; row-gap:6px;}

  /* ---------- Footer ---------- */
  footer{background:var(--ink); color:#c4c8ce; padding:44px 0 26px; font-size:0.82rem;}
  .footer-grid{display:grid; grid-template-columns:1.2fr 1fr 1fr; gap:32px; margin-bottom:28px;}
  @media (max-width:760px){ .footer-grid{grid-template-columns:1fr;} }
  footer h4{
    font-family:'Archivo',sans-serif; color:#fff; font-size:0.78rem;
    text-transform:uppercase; letter-spacing:0.08em; margin-bottom:12px;
  }
  footer ul{list-style:none; margin:0; padding:0;}
  footer li{margin-bottom:7px;}
  footer a{color:#c4c8ce; text-decoration:none;}
  footer a:hover{color:#fff;}
  .eho-badge{
    display:inline-flex; align-items:center; gap:8px; border:1px solid #3a3f48;
    border-radius:4px; padding:7px 11px; font-size:0.76rem; color:#fff; margin-top:8px;
  }
  .eho-badge svg{flex-shrink:0;}
  .legal-block{border-top:1px solid #2a2e35; padding-top:20px; font-size:0.74rem; line-height:1.7;}
  .legal-block p{margin-bottom:8px;}

  .visually-hidden{
    position:absolute; width:1px; height:1px; padding:0; margin:-1px;
    overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;
  }
  /* ---------- Accessibility toolbar ---------- */
  .a11y-toggle{
    position:fixed; left:20px; bottom:20px; z-index:200;
    width:52px; height:52px; border-radius:50%;
    background:var(--ink); color:#fff; border:none; cursor:pointer;
    display:flex; align-items:center; justify-content:center;
    box-shadow:0 8px 20px -6px rgba(0,0,0,0.35);
    transition:transform .2s ease;
  }
  .a11y-toggle:hover{transform:translateY(-2px);}
  .a11y-toggle svg{width:24px; height:24px;}
  .a11y-panel{
    position:fixed; left:20px; bottom:82px; z-index:200;
    width:280px; max-width:calc(100vw - 40px);
    background:#fff; border:1px solid var(--line); border-radius:10px;
    box-shadow:0 20px 44px -16px rgba(0,0,0,0.32);
    padding:18px; display:none;
  }
  .a11y-panel.open{display:block;}
  .a11y-panel-head{display:flex; align-items:center; justify-content:space-between; margin:0 0 12px 0;}
  .a11y-panel h2{font-size:0.92rem; margin:0; font-family:'Archivo',sans-serif; font-weight:800;}
  .a11y-close{background:none; border:none; color:var(--ink-soft); font-size:1.3rem; cursor:pointer; line-height:1; padding:2px 4px;}
  .a11y-close:hover{color:var(--ink);}
  .a11y-row{
    display:flex; align-items:center; justify-content:space-between;
    padding:9px 0; border-bottom:1px solid var(--line); font-size:0.86rem;
  }
  .a11y-row:last-of-type{border-bottom:none;}
  .a11y-row-controls{display:flex; align-items:center; gap:6px;}
  .a11y-btn{
    width:30px; height:30px; border-radius:6px; border:1px solid var(--line);
    background:var(--paper-2); color:var(--ink); cursor:pointer; font-size:0.95rem; font-weight:700;
    display:flex; align-items:center; justify-content:center;
  }
  .a11y-btn:hover{background:var(--line);}
  .a11y-switch{
    width:38px; height:22px; border-radius:999px; border:1px solid var(--line);
    background:var(--paper-2); position:relative; cursor:pointer; flex-shrink:0;
  }
  .a11y-switch::after{
    content:""; position:absolute; top:2px; left:2px; width:16px; height:16px; border-radius:50%;
    background:#fff; box-shadow:0 1px 2px rgba(0,0,0,0.3); transition:transform .2s ease;
  }
  .a11y-switch[aria-pressed="true"]{background:var(--accent); border-color:var(--accent);}
  .a11y-switch[aria-pressed="true"]::after{transform:translateX(16px);}
  .a11y-reset{
    width:100%; margin-top:6px; padding:9px; border-radius:6px; border:1px solid var(--line);
    background:none; color:var(--ink-soft); font-size:0.82rem; cursor:pointer;
  }
  .a11y-reset:hover{color:var(--ink); border-color:var(--ink);}

  /* Applied to <html> by the toolbar */
  html.a11y-large-text{font-size:118%;}
  html.a11y-xl-text{font-size:132%;}
  html.a11y-high-contrast{--paper:#ffffff; --paper-2:#ffffff; --ink:#000000; --ink-soft:#1a1a1a; --line:#000000; --accent:#0b3d91; --accent-bright:#092c68;}
  html.a11y-high-contrast .hero-overlay{background:linear-gradient(180deg, rgba(0,0,0,0.45) 0%, rgba(0,0,0,0.75) 55%, rgba(0,0,0,0.95) 100%) !important;}
  html.a11y-underline-links a{text-decoration:underline !important;}
  html.a11y-pause-motion .hero-bg{animation:none !important;}
  html.a11y-pause-motion .reveal{opacity:1 !important; transform:none !important; transition:none !important;}
  html.a11y-readable-font body{font-family:Arial, Helvetica, sans-serif !important;}

  /* ---------- Chat widget ---------- */
  .chat-toggle{
    position:fixed; right:20px; bottom:20px; z-index:200;
    width:58px; height:58px; border-radius:50%;
    background:var(--accent); color:#fff; border:none; cursor:pointer;
    display:flex; align-items:center; justify-content:center;
    box-shadow:0 8px 20px -6px rgba(31,58,95,0.5);
    transition:transform .2s ease, background-color .2s ease;
  }
  .chat-toggle:hover{transform:translateY(-2px); background:var(--accent-bright);}
  .chat-toggle svg{width:26px; height:26px;}
  .chat-panel{
    position:fixed; right:20px; bottom:90px; z-index:200;
    width:420px; max-width:calc(100vw - 40px); height:580px; max-height:calc(100vh - 130px);
    min-width:300px; min-height:360px;
    background:#fff; border:1px solid var(--line); border-radius:14px;
    box-shadow:0 24px 48px -18px rgba(0,0,0,0.35);
    display:none; flex-direction:column; overflow:hidden;
    resize:both;
  }
  .chat-panel.open{display:flex;}
  .chat-head{
    background:var(--ink); color:#fff; padding:14px 16px;
    display:flex; align-items:center; justify-content:space-between;
  }
  .chat-head strong{font-family:'Archivo',sans-serif; font-size:0.92rem; display:block;}
  .chat-head span{font-size:0.72rem; color:rgba(255,255,255,0.7);}
  .chat-close{background:none; border:none; color:#fff; font-size:1.2rem; cursor:pointer; line-height:1; padding:4px;}
  .chat-log{
    flex:1; overflow-y:auto; padding:14px 16px; display:flex; flex-direction:column; gap:10px;
    background:var(--paper-2);
  }
  .chat-msg{max-width:84%; padding:9px 12px; border-radius:12px; font-size:0.86rem; line-height:1.45;}
  .chat-msg.bot{background:#fff; border:1px solid var(--line); align-self:flex-start; border-bottom-left-radius:3px;}
  .chat-msg.user{background:var(--accent); color:#fff; align-self:flex-end; border-bottom-right-radius:3px;}
  .chat-quick{display:flex; flex-wrap:wrap; gap:6px; padding:0 16px 10px; background:var(--paper-2);}
  .chat-quick button{
    font-size:0.76rem; padding:6px 10px; border-radius:999px; border:1px solid var(--line);
    background:#fff; color:var(--ink); cursor:pointer;
  }
  .chat-quick button:hover{border-color:var(--accent); color:var(--accent);}
  .chat-options{display:flex; flex-wrap:wrap; gap:6px; align-self:flex-start; max-width:92%;}
  .chat-options button{
    font-size:0.8rem; padding:7px 12px; border-radius:999px; border:1px solid var(--accent);
    background:#fff; color:var(--accent); cursor:pointer; transition:background-color .15s ease, color .15s ease;
  }
  .chat-options button:hover:not(:disabled){background:var(--accent); color:#fff;}
  .chat-options button:disabled{opacity:0.45; cursor:default;}
  .chat-input-row{display:flex; gap:8px; padding:12px; border-top:1px solid var(--line); background:#fff;}
  .chat-input-row input{
    flex:1; border:1px solid var(--line); border-radius:8px; padding:9px 12px; font-size:0.86rem; font-family:inherit;
  }
  .chat-input-row button{
    background:var(--accent); color:#fff; border:none; border-radius:8px; padding:0 14px; font-weight:600; cursor:pointer; font-size:0.86rem;
    flex-shrink:0; white-space:nowrap;
  }
  .chat-input-row button:hover{background:var(--accent-bright);}
  .chat-disclaimer{font-size:0.68rem; color:var(--ink-soft); padding:0 16px 10px; background:var(--paper-2);}

  /* ---------- Sticky mobile CTA bar ---------- */
  .mobile-cta-bar{
    display:none; position:fixed; left:0; right:0; bottom:0; z-index:190;
    background:var(--ink); padding:10px 12px; gap:10px;
    box-shadow:0 -6px 20px -8px rgba(0,0,0,0.4);
    transform:translateY(100%); transition:transform .3s cubic-bezier(.2,.7,.2,1);
  }
  .mobile-cta-bar.show{transform:translateY(0);}
  @media (max-width:640px){
    .mobile-cta-bar{display:flex;}
    .a11y-toggle, .a11y-panel{left:14px; bottom:78px;}
    .chat-toggle, .chat-panel{right:14px; bottom:78px;}
  }
  .mobile-cta-bar a{
    flex:1; text-align:center; padding:12px 10px; border-radius:8px; font-weight:700; font-size:0.86rem;
    text-decoration:none;
  }
  .mobile-cta-bar .call-btn{background:transparent; color:#fff; border:1px solid rgba(255,255,255,0.35);}
  .mobile-cta-bar .cta-btn{background:var(--accent); color:#fff;}

/* ---------- Blog ---------- */
.blog-hero{padding:56px 0 8px;}
.blog-list{display:grid; gap:20px; margin-top:28px;}
.blog-card{
  display:block; padding:24px; border:1px solid var(--line); border-radius:10px;
  background:#fff; text-decoration:none; color:inherit; transition:box-shadow .15s ease, transform .15s ease;
}
.blog-card:hover, .blog-card:focus-visible{box-shadow:0 4px 18px rgba(18,21,27,0.08); transform:translateY(-1px);}
.blog-card .blog-meta{color:var(--ink-soft); font-size:0.82rem; margin-bottom:6px;}
.blog-card h3{font-size:1.15rem; margin:0 0 8px;}
.blog-card p{color:var(--ink-soft); margin:0; font-size:0.95rem;}
.blog-card .read-more{display:inline-block; margin-top:10px; font-weight:700; color:var(--accent-bright); font-size:0.88rem;}

.article{padding:56px 0 40px;}
.article .wrap{max-width:760px;}
.article-meta{color:var(--ink-soft); font-size:0.88rem; margin-bottom:6px;}
.article h1{margin-bottom:8px;}
.article-body h2{margin-top:36px; margin-bottom:12px; font-size:1.35rem;}
.article-body p{margin-bottom:16px; line-height:1.7;}
.article-body ul{margin:0 0 16px 22px; line-height:1.7;}
.article-body li{margin-bottom:6px;}
.article-cta{
  margin-top:40px; padding:24px; border-radius:10px; background:var(--paper-2);
  border:1px solid var(--line);
}
.article-cta h3{margin:0 0 8px;}
.article-cta p{margin:0 0 14px; color:var(--ink-soft);}
.back-to-blog{display:inline-block; margin-bottom:24px; font-size:0.88rem; color:var(--accent-bright); text-decoration:none; font-weight:600;}

/* ---------- How It Works: horizontal client journey ---------- */
.journey{
  display:flex; align-items:flex-start; gap:4px; margin-top:36px;
}
.journey-step{
  flex:1 1 0; min-width:0; text-align:center; padding:0 8px;
}
.journey-icon{
  width:56px; height:56px; border-radius:50%; background:var(--accent); color:#fff;
  display:flex; align-items:center; justify-content:center; margin:0 auto 14px; flex-shrink:0;
  box-shadow:0 4px 14px -4px rgba(31,58,95,0.45);
}
.journey-icon svg{width:26px; height:26px;}
.journey-step h3{font-size:0.98rem; margin:0 0 6px;}
.journey-step p{font-size:0.84rem; color:var(--ink-soft); margin:0; line-height:1.5;}
.journey-arrow{
  flex:0 0 auto; display:flex; align-items:center; justify-content:center;
  color:var(--line); padding-top:18px; min-width:20px;
}
.journey-arrow svg{width:22px; height:22px;}
@media (max-width:820px){
  .journey{flex-direction:column; align-items:center; gap:0;}
  .journey-step{max-width:320px; width:100%; padding:0;}
  .journey-arrow{transform:rotate(90deg); padding:6px 0;}
}

/* ---------- Document checklist ---------- */
.doc-checklist{list-style:none; margin:24px 0 0; padding:0; max-width:640px;}
.doc-checklist li{
  display:flex; align-items:flex-start; gap:12px; padding:12px 0;
  border-bottom:1px solid var(--line); font-size:0.95rem;
}
.doc-checklist li:last-child{border-bottom:none;}
.doc-checklist .check-icon{
  flex-shrink:0; width:22px; height:22px; border-radius:50%;
  background:var(--accent); color:#fff; display:flex; align-items:center; justify-content:center;
  font-size:0.75rem; font-weight:700; margin-top:1px;
}
.checklist-note{color:var(--ink-soft); font-size:0.86rem; margin-top:18px; max-width:640px;}

/* ---------- Contact trust badges ---------- */
.contact-trust{
  display:flex; flex-wrap:wrap; gap:10px; margin:16px 0 28px;
}
.contact-trust .badge{
  display:inline-flex; align-items:center; gap:6px;
  background:var(--paper-2); border:1px solid var(--line); border-radius:20px;
  padding:6px 14px; font-size:0.8rem; color:var(--ink-soft); font-weight:600;
}

/* ---------- Hero CTA row ---------- */
.hero-cta{display:flex; gap:12px; flex-wrap:wrap; margin-top:20px;}
.hero-cta .btn-secondary{
  background:transparent; color:#fff; border-color:rgba(255,255,255,0.5);
}
.hero-cta .btn-secondary:hover{border-color:#fff; color:#fff;}
@media (max-width:480px){
  .hero-cta{flex-wrap:nowrap; gap:8px;}
  .hero-cta .btn{padding:11px 14px; font-size:0.82rem; flex:1; text-align:center; white-space:nowrap;}
}

/* ---------- Contact wizard: card-based step-by-step flow ---------- */
.wizard-question{font-weight:700; font-size:1.05rem; margin:0 0 16px; text-align:center;}
.wizard-cards{
  display:grid; grid-template-columns:repeat(auto-fit, minmax(140px, 1fr)); gap:12px;
}
.wizard-cards-narrow{grid-template-columns:repeat(auto-fit, minmax(160px, 1fr));}
.wizard-cards .program-card{min-height:auto; padding:16px 14px;}
.wizard-back{
  background:none; border:none; color:var(--accent-bright); font-weight:700;
  font-size:0.86rem; cursor:pointer; padding:0 0 16px; display:inline-block;
}
.wizard-back:hover{text-decoration:underline;}

/* ---------- Collapsible document checklist ---------- */
.checklist-toggle{border-top:1px solid var(--line); margin-top:8px;}
.checklist-toggle summary h2{font-family:'Archivo',sans-serif; font-weight:800;}
.checklist-toggle .checklist-body{padding:0 2px 8px;}

/* ---------- Find My Loan: modal wizard ---------- */
html.wizard-modal-open{overflow:hidden;}
.wizard-modal-backdrop{
  position:fixed; inset:0; z-index:500;
  background:rgba(10,14,20,0.72);
  display:flex; align-items:center; justify-content:center; padding:20px;
  opacity:0; transition:opacity .2s ease;
}
.wizard-modal-backdrop.open{opacity:1;}
.wizard-modal-backdrop[hidden]{display:none;}
.wizard-modal{
  background:var(--ink); color:#fff; border-radius:14px;
  width:100%; max-width:600px; max-height:90vh; max-height:90dvh; overflow-y:auto;
  padding:32px 28px 28px; position:relative;
  transform:scale(.96); transition:transform .2s ease;
  box-shadow:0 30px 60px -20px rgba(0,0,0,0.5);
}
.wizard-modal-backdrop.open .wizard-modal{transform:scale(1);}
.wizard-modal-close{
  position:absolute; top:14px; right:14px; background:none; border:none;
  color:rgba(255,255,255,0.6); font-size:1.6rem; line-height:1; cursor:pointer;
  width:34px; height:34px; display:flex; align-items:center; justify-content:center;
  border-radius:50%;
}
.wizard-modal-close:hover{background:rgba(255,255,255,0.12); color:#fff;}
.wizard-modal-head{text-align:center; margin-bottom:20px;}
.wizard-modal-eyebrow{
  font-family:'Archivo',sans-serif; font-weight:800; font-size:1.3rem; color:#fff; margin:0 0 6px;
}
.wizard-modal-sub{color:rgba(255,255,255,0.6); font-size:0.8rem; margin:0;}

.wizard-modal .form-progress{color:rgba(255,255,255,0.55);}
.wizard-modal .form-progress-step.active{color:#fff;}
.wizard-modal .form-progress-bar{background:rgba(255,255,255,0.15);}
.wizard-modal .form-progress-fill{background:var(--focus);}
.wizard-modal .wizard-question{color:#fff;}
.wizard-modal .form-step-hint{color:rgba(255,255,255,0.5);}
.wizard-modal .wizard-back{color:rgba(255,255,255,0.75);}
.wizard-modal .wizard-back:hover{color:#fff;}

.wizard-modal .program-card{
  background:rgba(255,255,255,0.06); border:1px solid rgba(255,255,255,0.18); color:#fff;
}
.wizard-modal .program-card:hover{background:rgba(255,255,255,0.1); box-shadow:none; transform:translateY(-2px); border-color:var(--focus);}
.wizard-modal .program-card.selected{background:rgba(199,107,28,0.16); box-shadow:0 0 0 2px var(--focus) inset; border-color:var(--focus);}
.wizard-modal .program-card p{color:rgba(255,255,255,0.55);}
.wizard-modal .program-card::after{color:var(--focus); content:"Continue \2192";}

.wizard-modal .field label{color:rgba(255,255,255,0.85);}
.wizard-modal .field input, .wizard-modal .field select, .wizard-modal .field textarea{
  background:rgba(255,255,255,0.08); border:1px solid rgba(255,255,255,0.22); color:#fff;
}
.wizard-modal .field input::placeholder, .wizard-modal .field textarea::placeholder{color:rgba(255,255,255,0.4);}
.wizard-modal .consent-row label{color:rgba(255,255,255,0.65); font-size:0.8rem;}
.wizard-modal .form-trust{color:rgba(255,255,255,0.5);}
.wizard-modal .form-success-title{color:#fff;}
.wizard-modal .form-success p:not(.form-success-title){color:rgba(255,255,255,0.65);}
.wizard-modal .optional-tag{color:rgba(255,255,255,0.5);}

.borrower-cta-prompt{text-align:center;}
.borrower-cta-prompt p{color:var(--ink-soft); margin-bottom:16px;}
.borrower-cta-prompt .form-trust{margin-top:14px;}

@media (max-width:480px){
  .wizard-modal-backdrop{padding:8px;}
  .wizard-modal{
    padding:22px 16px 18px; border-radius:10px;
    max-height:96vh; max-height:96dvh;
  }
}

/* ---------- Wizard modal: direct-call fallback, shown on every step ---------- */
.wizard-modal-direct{
  display:flex; align-items:center; gap:12px; margin-top:22px; padding-top:18px;
  border-top:1px solid rgba(255,255,255,0.15);
}
.wizard-modal-direct img{
  width:44px; height:44px; border-radius:50%; object-fit:cover; flex-shrink:0;
  border:2px solid rgba(255,255,255,0.2);
}
.wizard-modal-direct-label{color:rgba(255,255,255,0.55); font-size:0.76rem; margin:0 0 2px;}
.wizard-modal-direct-phone{color:#fff; font-weight:700; font-size:0.92rem; text-decoration:none;}
.wizard-modal-direct-phone:hover{text-decoration:underline;}

/* ---------- Success checkmark animation ---------- */
.success-check{width:72px; height:72px; margin:0 auto 18px;}
.success-check svg{width:100%; height:100%;}
.success-check-circle{
  stroke:#2e7d4f; stroke-width:3;
  stroke-dasharray:151; stroke-dashoffset:151;
  animation:successCircle .5s ease forwards;
}
.success-check-mark{
  stroke:#2e7d4f; stroke-width:4; stroke-linecap:round; stroke-linejoin:round;
  stroke-dasharray:36; stroke-dashoffset:36;
  animation:successMark .35s ease forwards .45s;
}
@keyframes successCircle{to{stroke-dashoffset:0;}}
@keyframes successMark{to{stroke-dashoffset:0;}}
@media (prefers-reduced-motion: reduce){
  .success-check-circle, .success-check-mark{animation:none; stroke-dashoffset:0;}
}
.wizard-success-close{
  display:block; margin:20px auto 0; background:none; border:none;
  color:rgba(255,255,255,0.7); font-weight:600; font-size:0.88rem; cursor:pointer;
}
.wizard-success-close:hover{color:#fff; text-decoration:underline;}
