/* ==========================================================================
   ImpactPlus v2.0 — Components
   ========================================================================== */

/* ---------- Buttons ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--s-8);
  font-weight: var(--fw-semibold); font-size: var(--t-body-sm);
  padding: 13px 22px; border-radius: var(--r-btn); border: 1.5px solid transparent;
  transition: transform var(--dur) var(--ease), background var(--dur) var(--ease), box-shadow var(--dur) var(--ease), border-color var(--dur) var(--ease);
  cursor: pointer; text-align: center; line-height: 1;
}
.btn:active { transform: translateY(1px); }
.btn-primary { background: var(--ip-blue); color: #fff; box-shadow: 0 10px 24px -12px rgba(0,74,159,.6); }
.btn-primary:hover { background: var(--ip-blue-deep); color: #fff; transform: translateY(-2px); box-shadow: 0 16px 30px -12px rgba(0,74,159,.7); }
.btn-secondary { background: transparent; color: var(--ip-blue); border-color: var(--line-strong); }
.btn-secondary:hover { border-color: var(--ip-blue); background: var(--ip-blue-soft); color: var(--ip-blue-deep); }
.btn-ghost { background: transparent; color: var(--muted); padding: 10px 12px; }
.btn-ghost:hover { color: var(--ink); background: var(--surface-alt); }
.btn-lg { padding: 16px 28px; font-size: var(--t-body); }
.btn-block { width: 100%; }
/* on dark bands */
.section--dark .btn-primary, .hero--dark .btn-primary { background: #fff; color: var(--navy-2); box-shadow: 0 12px 30px -12px rgba(0,0,0,.5); }
.section--dark .btn-primary:hover, .hero--dark .btn-primary:hover { background: #eaf1fb; color: var(--navy-2); }
.section--dark .btn-secondary, .hero--dark .btn-secondary { color: #fff; border-color: var(--on-dark-line); }
.section--dark .btn-secondary:hover, .hero--dark .btn-secondary:hover { border-color: #fff; background: rgba(255,255,255,.08); color:#fff; }
.btn-arrow::after { content: "\2192"; transition: transform var(--dur) var(--ease); }
.btn:hover .btn-arrow::after, a.btn-arrow:hover::after { transform: translateX(3px); }

/* ---------- Navbar ---------- */
.nav {
  position: sticky; top: 0; z-index: 50;
  background: rgba(255,255,255,.82); backdrop-filter: saturate(180%) blur(12px);
  border-bottom: 1px solid var(--line);
}
.nav__inner { display: flex; align-items: center; justify-content: space-between; height: 78px; }
.nav__logo img { height: 48px; width: auto; }
.nav__menu { display: flex; align-items: center; gap: var(--s-4); }
.nav__link {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: var(--t-body-sm); font-weight: var(--fw-medium); color: var(--ink-2);
  padding: 10px 14px; border-radius: var(--r-btn);
}
.nav__link:hover { color: var(--ip-blue); background: var(--ip-blue-soft); }
/* current-page tab: persistent "you are here" state with a teal underline bar */
.nav__link.is-active { color: var(--ip-blue); font-weight: var(--fw-semibold); position: relative; }
.nav__link.is-active::after { content: ""; position: absolute; left: 14px; right: 14px; bottom: 3px; height: 2px; background: var(--ip-teal); border-radius: 2px; }
.nav__cta { margin-left: var(--s-8); }
.nav__toggle { display: none; background: none; border: 0; color: var(--ink); padding: 8px; }
/* dropdown */
.nav__dd { position: relative; }
.nav__panel {
  position: absolute; top: calc(100% + 8px); left: 0; min-width: 300px;
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-panel);
  box-shadow: var(--shadow-lg); padding: var(--s-8); opacity: 0; visibility: hidden;
  transform: translateY(6px); transition: all var(--dur) var(--ease);
}
.nav__dd:hover .nav__panel, .nav__dd:focus-within .nav__panel { opacity: 1; visibility: visible; transform: none; }
.nav__item { display: block; padding: 10px 12px; border-radius: var(--r-btn); }
.nav__item:hover { background: var(--surface-alt); }
.nav__item strong { display: block; color: var(--ink); font-size: var(--t-body-sm); font-weight: var(--fw-semibold); }
.nav__item span { display: block; color: var(--muted-2); font-size: var(--t-caption); margin-top: 2px; }
/* keep the parent tab highlighted while its dropdown is open */
.nav__dd:hover > .nav__link, .nav__dd:focus-within > .nav__link { color: var(--ip-blue); background: var(--ip-blue-soft); }
/* nested sub-item: indent + connector line so hierarchy reads clearly */
.nav__item--sub { margin: 2px 0 2px 20px; padding-left: 14px; border-left: 2px solid var(--line-strong); border-radius: 0 var(--r-btn) var(--r-btn) 0; }
.nav__item--sub:hover { border-left-color: var(--ip-teal); background: var(--ip-teal-soft); }
/* branded sub-item shows the offering's own logo */
.nav__item--brand { padding-top: 9px; padding-bottom: 9px; }
.nav__brandlogo { height: 15px; width: auto; display: block; margin-bottom: 6px; }
.nav__brandlogo--ms { height: 30px; }  /* full logo keeps the tagline, so it needs more height */
.nav__item--brand span { display: block; color: var(--muted-2); font-size: var(--t-caption); }
.nav__item--all { background: var(--ip-blue-soft); margin-bottom: var(--s-4); }
.nav__item--all:hover { background: var(--ip-blue-soft); filter: brightness(.98); }
.nav__item--all strong { color: var(--ip-blue); }
.nav__item--all span { color: var(--ip-blue); opacity: .72; }
@media (max-width: 900px) {
  .nav__toggle { display: inline-flex; }
  /* Full-height sheet from under the bar to the bottom of the screen, and it SCROLLS when the
     submenus are open (previously it grew off-screen and the lower items were unreachable). */
  .nav__menu { position: fixed; inset: 68px 0 auto 0; flex-direction: column; align-items: stretch;
    background: var(--surface); padding: var(--s-8) var(--s-20) var(--s-32); gap: 0;
    box-shadow: var(--shadow-lg); display: none;
    max-height: calc(100vh - 68px); overflow-y: auto; -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain; }
  .nav__menu.is-open { display: flex; }
  /* Top-level items: clean full-width rows with dividers and comfortable tap targets. */
  .nav__menu > li { border-bottom: 1px solid var(--line); }
  .nav__menu > li:last-child { border-bottom: 0; }
  .nav__menu > li > .nav__link { display: flex; align-items: center; justify-content: space-between;
    width: 100%; padding: 16px 2px; font-size: var(--t-body-lg); font-weight: var(--fw-semibold);
    color: var(--ink); background: none; border-radius: 0; }
  .nav__menu > li > .nav__link.is-active { color: var(--ip-blue); background: none; }
  .nav__dd > .nav__link svg { margin-left: auto; transition: transform var(--dur) var(--ease); }
  .nav__dd.is-open > .nav__link svg { transform: rotate(180deg); }
  /* Submenu: static, tucked under its parent, tighter spacing. */
  .nav__panel { position: static; opacity: 1; visibility: visible; transform: none; box-shadow: none;
    border: 0; padding: 0 0 var(--s-8); min-width: 0; display: none; }
  .nav__dd.is-open > .nav__panel { display: block; }
  .nav__item { padding: 11px 10px; }
  .nav__item--all { margin-bottom: var(--s-8); }
  .nav__cta { width: 100%; justify-content: center; margin-top: var(--s-16); }
}
/* Lock the page behind the open mobile menu so it does not scroll under it. */
body.nav-open { overflow: hidden; }

/* ---------- Badges / chips / tags ---------- */
.badge { display: inline-flex; align-items: center; gap: 6px; font-size: var(--t-eyebrow);
  font-weight: var(--fw-semibold); letter-spacing: .04em; padding: 5px 10px; border-radius: var(--r-tag); }
.badge-new { background: var(--ip-teal); color: #fff; text-transform: uppercase; }
.badge-teal { background: var(--ip-teal-soft); color: var(--ip-teal-deep); }
.badge-blue { background: var(--ip-blue-soft); color: var(--ip-blue); }
.chip { display:inline-flex; align-items:center; gap:8px; padding:8px 14px; border:1px solid var(--line);
  border-radius: var(--r-pill); background: var(--surface); font-size: var(--t-body-sm); font-weight: var(--fw-medium); color: var(--ink-2); }

/* ---------- Section header ---------- */
.sec-head { max-width: 760px; margin-bottom: var(--s-48); }
.sec-head.center { margin-inline: auto; }
.sec-head h2 { margin-bottom: var(--s-16); }
/* brand accent bar under every section heading */
.sec-head h2::after { content: ""; display: block; width: 52px; height: 4px; margin-top: var(--s-16);
  border-radius: 3px; background: linear-gradient(90deg, var(--ip-blue), var(--ip-teal)); }
.sec-head.center h2::after { margin-inline: auto; }
.section--dark .sec-head h2::after { background: linear-gradient(90deg, var(--ip-teal), #7fdfe4); }
.sec-head p { font-size: var(--t-body-lg); }

/* ---------- Cards ---------- */
.card {
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-card);
  padding: var(--s-24); box-shadow: var(--shadow-sm);
  transition: transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease), border-color var(--dur) var(--ease);
}
.card--hover:hover { transform: translateY(-3px); border-color: var(--ip-blue);
  box-shadow: 0 2px 4px rgba(15,27,45,.06), 0 20px 44px -20px rgba(0,74,159,.36); }
.card--pad-lg { padding: var(--s-32); }
.card__icon { width: 48px; height: 48px; border-radius: var(--r-btn); display: grid; place-items: center;
  background: var(--ip-blue-soft); color: var(--ip-blue); font-size: 20px; margin-bottom: var(--s-16); }
.card--flag { border-color: var(--ip-teal); border-width: 1.5px; position: relative; }
.card h3 { font-size: var(--t-subhead); margin-bottom: var(--s-8); }
.card p { font-size: var(--t-body-sm); }

/* feature/service list */
.ticks { display: flex; flex-direction: column; gap: 10px; }
.ticks li { position: relative; padding-left: 28px; font-size: var(--t-body-sm); color: var(--ink-2); line-height: 1.55; }
.ticks li::before { content: ""; position: absolute; left: 0; top: 7px; width: 16px; height: 16px;
  border-radius: 50%; background: var(--ip-teal-soft);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath d='M1 5l2.5 2.5L9 2' stroke='%2300838a' stroke-width='1.6' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: center; }

/* ---------- Hero ---------- */
.hero { position: relative; overflow: hidden; }
.hero--dark { background: var(--navy-grad); color: var(--on-dark); padding-block: var(--s-96) var(--s-80); }
.hero__grid { display: grid; gap: var(--s-48); align-items: center; }
@media (min-width: 900px) { .hero__grid { grid-template-columns: 1.05fr .95fr; } }
.hero h1 { margin-bottom: var(--s-20); max-width: 16ch; }
.hero .lede { max-width: 54ch; margin-bottom: var(--s-32); }
.hero__cta { display: flex; flex-wrap: wrap; gap: var(--s-12); }
.hero__note { font-size: var(--t-caption); color: var(--on-dark-faint); margin-top: var(--s-16); }

/* ---------- Founder / credibility block ---------- */
.founder { display: grid; gap: var(--s-32); align-items: center; }
@media (min-width: 760px) { .founder { grid-template-columns: 260px 1fr; } }
.founder__photo { border-radius: var(--r-panel); overflow: hidden; box-shadow: var(--shadow-md); }
.founder__meta { font-size: var(--t-caption); color: var(--muted-2); }

/* credential row (qualitative — no % claims) */
.creds { display: flex; flex-wrap: wrap; gap: var(--s-32); }
.cred { }
.cred__k { font-size: var(--t-h3); font-weight: var(--fw-black); color: var(--ip-blue); font-family: var(--font-display); letter-spacing: -0.02em; }
.cred__v { font-size: var(--t-body-sm); color: var(--muted); }

/* ---------- FAQ accordion ---------- */
.faq { border-top: 1px solid var(--line); }
.faq details { border-bottom: 1px solid var(--line); }
.faq summary { list-style: none; cursor: pointer; padding: var(--s-20) 0; display: flex; justify-content: space-between;
  gap: var(--s-16); align-items: flex-start; font-weight: var(--fw-semibold); color: var(--ink); font-size: var(--t-body-lg); }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; color: var(--ip-teal-deep); font-weight: var(--fw-bold); font-size: 22px; line-height: 1; flex: none; }
.faq details[open] summary::after { content: "\2212"; }
.faq .faq__a { padding: 0 0 var(--s-24); color: var(--muted); max-width: 68ch; }

/* ---------- Footer ---------- */
.footer { background: var(--navy-2); color: var(--on-dark-muted); padding-block: var(--s-64) var(--s-32); }
.footer a { color: var(--on-dark-muted); }
.footer a:hover { color: #fff; }
.footer__top { display: grid; gap: var(--s-48); padding-bottom: var(--s-40); border-bottom: 1px solid var(--on-dark-line); }
@media (min-width: 900px) { .footer__top { grid-template-columns: 1.4fr 1fr 1fr 1fr; } }
.footer__brand img { height: 40px; }
.footer__note { font-size: var(--t-body-sm); color: var(--on-dark-faint); max-width: 42ch; margin-top: var(--s-16); }
.footer__col h4 { color: #fff; font-size: var(--t-body-sm); text-transform: uppercase; letter-spacing: .06em; margin-bottom: var(--s-16); font-family: var(--font-sans); font-weight: var(--fw-semibold); }
.footer__col li { margin-bottom: 10px; font-size: var(--t-body-sm); }
.footer__social { display: flex; gap: var(--s-8); margin-top: var(--s-16); }
.footer__social a { width: 40px; height: 40px; display: grid; place-items: center; border: 1px solid var(--on-dark-line); border-radius: var(--r-btn); }
.footer__social a:hover { border-color: #fff; }
.footer__bottom { padding-top: var(--s-24); display: flex; flex-wrap: wrap; gap: var(--s-12); justify-content: space-between;
  font-size: var(--t-caption); color: var(--on-dark-faint); }

/* ---------- Forms ---------- */
.field { display: flex; flex-direction: column; gap: 6px; }
.field label { font-size: var(--t-body-sm); font-weight: var(--fw-medium); color: var(--ink-2); }
.input, .select, .textarea {
  font: inherit; font-size: var(--t-body-sm); color: var(--ink); background: var(--surface);
  border: 1.5px solid var(--line-strong); border-radius: var(--r-btn); padding: 13px 15px; width: 100%;
  transition: border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);
}
.input:focus, .select:focus, .textarea:focus { outline: none; border-color: var(--ip-blue); box-shadow: var(--shadow-focus); }
.textarea { min-height: 130px; resize: vertical; }

/* ---------- Dark CTA band ---------- */
.cta-band { text-align: center; }
.cta-band h2 { max-width: 20ch; margin: 0 auto var(--s-16); }
.cta-band p { margin: 0 auto var(--s-32); max-width: 52ch; }

/* ---------- Breadcrumb ---------- */
.crumbs { display: flex; flex-wrap: wrap; gap: 8px; font-size: var(--t-caption); color: var(--muted-2); margin-bottom: var(--s-24); }
.crumbs a { color: var(--muted); }
.crumbs a:hover { color: var(--ip-blue); }

/* ==================== v2 hero visual + brand elements ==================== */
.hero--dark { position: relative; }
.hero__bg { position: absolute; inset: 0; z-index: 0;
  background-image: radial-gradient(rgba(255,255,255,.07) 1px, transparent 1.2px);
  background-size: 24px 24px;
  -webkit-mask-image: linear-gradient(to bottom, #000 8%, transparent 78%);
          mask-image: linear-gradient(to bottom, #000 8%, transparent 78%);
  opacity: .55; pointer-events: none; }
.hero .wrap { position: relative; z-index: 2; }
.hero__star { position: absolute; z-index: 1; pointer-events: none; opacity: .16;
  filter: drop-shadow(0 0 28px rgba(0,160,168,.55)); animation: floaty 9s var(--ease) infinite; }
.hero__star--1 { width: 130px; top: 15%; right: 9%; }
.hero__star--2 { width: 74px; bottom: 16%; left: 47%; animation-delay: 1.4s; }
.hero__star--3 { width: 44px; top: 26%; left: 31%; opacity: .1; animation-delay: 3s; }
@keyframes floaty { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-14px); } }
.hero__visual { position: relative; }
.hero__img { width: 100%; border-radius: var(--r-panel); border: 1px solid var(--on-dark-line);
  box-shadow: 0 40px 90px -30px rgba(0,0,0,.75); }
.hero__chip { position: absolute; bottom: -18px; left: 22px; display: inline-flex; align-items: center; gap: 10px;
  background: #fff; color: var(--navy-2); padding: 10px 16px; border-radius: var(--r-pill); box-shadow: var(--shadow-lg); }
.hero__chip img { height: 17px; width: auto; }
.hero__chip .dot { width: 8px; height: 8px; border-radius: 50%; background: #22c55e; box-shadow: 0 0 0 4px rgba(34,197,94,.22); flex: none; }
.hero__chip .txt { font-size: var(--t-body-sm); font-weight: var(--fw-semibold); white-space: nowrap; }
@media (max-width: 900px) { .hero__star { opacity: .09; } .hero__visual { margin-top: var(--s-24); } }
@media (prefers-reduced-motion: reduce) { .hero__star { animation: none; } }

/* typing cursor */
.is-typing::after { content: ''; display: inline-block; width: 3px; height: .92em; background: var(--ip-teal);
  margin-left: 5px; vertical-align: -2px; animation: blink 1.05s steps(1) infinite; }
@keyframes blink { 50% { opacity: 0; } }

/* inline brand wordmark inside a heading */
.inline-logo { height: .82em; width: auto; display: inline-block; vertical-align: baseline; margin: 0 1px; }

/* inline LinkedIn glyph after the word "LinkedIn" */
.li-ico { display: inline-block; width: 15px; height: 15px; vertical-align: -2px; margin-left: 5px; color: #0a66c2; }
.footer .li-ico, .section--dark .li-ico, .hero--dark .li-ico { color: #7fdfe4; }
.footer__social a svg { width: 20px; height: 20px; }

/* team member LinkedIn link */
.li-link { display: inline-flex; align-items: center; gap: 7px; margin-top: var(--s-16);
  font-size: var(--t-body-sm); font-weight: var(--fw-semibold); color: #0a66c2; }
.li-link svg { width: 18px; height: 18px; }
.li-link:hover { color: #084b8f; }

/* LinkedIn icon beside a team member name */
.name-li { display: inline-flex; align-items: center; color: #0a66c2; }
.name-li svg { width: 19px; height: 19px; display: block; }
.name-li:hover { color: #084b8f; }

/* ==================== full-bleed hero background ==================== */
.hero--bg { min-height: 660px; display: flex; align-items: center;
  background: var(--navy-2) url('../images/hero-bg.webp') center right / cover no-repeat; }
.hero--bg .hero__scrim { position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(90deg, rgba(6,29,55,.97) 0%, rgba(6,29,55,.9) 26%, rgba(6,29,55,.55) 54%, rgba(6,29,55,.12) 100%); }
.hero--bg .wrap { position: relative; z-index: 2; }
.hero__copy { max-width: 640px; }
.hero--bg .hero__title { max-width: none; }
.hero__livechip { display: inline-flex; align-items: center; gap: 10px; margin-top: var(--s-24);
  background: #fff; padding: 9px 15px; border-radius: var(--r-pill); box-shadow: var(--shadow-lg); }
.hero__livechip img { height: 16px; width: auto; }
.hero__livechip .dot { width: 8px; height: 8px; border-radius: 50%; background: #22c55e; box-shadow: 0 0 0 4px rgba(34,197,94,.22); flex: none; }
.hero__livechip span:last-child { font-size: var(--t-body-sm); font-weight: var(--fw-semibold); color: var(--navy-2); }
@media (max-width: 760px) { .hero--bg { background-position: 72% center; min-height: 540px; }
  .hero--bg .hero__scrim { background: linear-gradient(180deg, rgba(6,29,55,.82), rgba(6,29,55,.95)); } }

/* ==================== glassmorphism reality band ==================== */
.reality { position: relative; overflow: hidden; background: var(--navy-grad); padding-block: var(--s-20); }
.reality__bg { position: absolute; inset: 0; background: radial-gradient(60% 120% at 50% 0%, rgba(0,160,168,.20), transparent 60%); }
.reality .wrap { position: relative; z-index: 2; display: flex; justify-content: center; }
.reality__glass { max-width: 1040px; text-align: center; padding: var(--s-48) var(--s-40); border-radius: var(--r-panel);
  background: rgba(255,255,255,.07); border: 1px solid rgba(255,255,255,.14);
  -webkit-backdrop-filter: blur(16px) saturate(140%); backdrop-filter: blur(16px) saturate(140%);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 30px 60px -30px rgba(0,0,0,.6); position: relative; overflow: hidden; }
.reality__glass::after { content: ''; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(115deg, transparent 34%, rgba(255,255,255,.10) 48%, transparent 62%);
  transform: translateX(-120%); animation: shimmer 6.5s ease-in-out infinite; }
@keyframes shimmer { 0%, 100% { transform: translateX(-120%); } 55% { transform: translateX(120%); } }
.reality__text { font-size: clamp(20px, 2.5vw, 30px); font-weight: var(--fw-semibold); color: #fff; line-height: 1.5;
  max-width: 26ch; margin: 0 auto; position: relative; z-index: 1; }
.reality__text .w { display: inline-block; opacity: 0; transform: translateY(10px); }
.reality__text.is-in .w { animation: wordin .5s var(--ease) forwards; }
@keyframes wordin { to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .reality__glass::after { animation: none; } .reality__text .w { opacity: 1; transform: none; animation: none; } }

/* full-width hero copy alignment (use the whole width, copy near the left edge) */
.hero--bg .hero__inner { position: relative; z-index: 2; width: 100%; padding-inline: clamp(24px, 6vw, 130px); }
.hero--bg .hero__copy { max-width: 600px; }

/* running marquee (reality band) */
.marquee { position: relative; z-index: 2; overflow: hidden; padding-block: var(--s-8);
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
          mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent); }
.marquee__track { display: inline-flex; align-items: center; gap: var(--s-40); white-space: nowrap; will-change: transform; animation: marquee 34s linear infinite; }
.marquee:hover .marquee__track { animation-play-state: paused; }
@keyframes marquee { to { transform: translateX(-50%); } }
.marquee__item { font-size: clamp(15px, 1.7vw, 21px); font-weight: var(--fw-semibold); color: #fff; letter-spacing: -0.01em; }
.marquee__sep { display: inline-block; color: var(--ip-teal); font-size: 20px; }
@media (prefers-reduced-motion: reduce) { .marquee__track { animation: none; white-space: normal; justify-content: center; flex-wrap: wrap; } }

/* hero logo CTAs (MarketingSense + Second Opinion, white bg, working links) */
.hero__logos { display: flex; flex-direction: column; gap: var(--s-12); margin-top: var(--s-20); align-items: flex-start; }
/* Aligned table structure: fixed logo column keeps dividers lined up; card hugs its content (no gap before the arrow). */
.logo-cta { display: grid; grid-template-columns: 232px auto auto; align-items: center; column-gap: var(--s-16);
  width: fit-content; min-height: 80px; background: #fff; border-radius: var(--r-btn);
  padding: 12px 22px; box-shadow: var(--shadow-md); transition: transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease); }
.logo-cta:hover { transform: translateY(-2px); box-shadow: var(--shadow-lg); }
.logo-cta__logo { justify-self: start; width: auto; display: block; }
@media (max-width: 600px) {
  .logo-cta { grid-template-columns: 190px auto auto; column-gap: var(--s-12); padding: 10px 14px; min-height: 68px; }
  .logo-cta__logo--ms { height: 38px; }
  .logo-cta__logo--so { height: 24px; }
}
/* Match the two brands by WORDMARK size, not canvas height: the MarketingSense file
   includes the tagline (wordmark fills ~33% of its height), Second Opinion is wordmark-only
   (~70%). These heights make the two wordmarks read at the same size while keeping the tagline. */
.logo-cta__logo--ms { height: 44px; }
.logo-cta__logo--so { height: 28px; }
.logo-cta__meta { display: flex; flex-direction: column; line-height: 1.2; border-left: 1px solid var(--line); padding-left: 12px; }
.logo-cta__meta b { font-size: var(--t-body-sm); color: var(--navy-2); font-weight: 700; }
.logo-cta__meta small { font-size: 11px; color: var(--muted-2); }
.logo-cta__arrow { color: var(--ip-blue); flex: none; transition: transform var(--dur) var(--ease); }
.logo-cta:hover .logo-cta__arrow { transform: translateX(3px); }
/* MarketingSense logo on the Growthmind card button */
.btn .btn-logo { height: 16px; width: auto; margin-right: 2px; }

/* stable character reveal (typing without reflow — full text in place, chars fade in) */
.hero__title .tw { opacity: 0; }
.hero__title .tw.on { opacity: 1; }
.hero__title.tw-done .tw { opacity: 1; }
.hero__title .cur { position: relative; }
.hero__title .cur::after { content: ''; position: absolute; right: -0.09em; top: 0.12em; bottom: 0.12em;
  width: 3px; background: var(--ip-teal); border-radius: 1px; animation: blink 1.05s steps(1) infinite; }
@keyframes blink { 50% { opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .hero__title .tw { opacity: 1; } .hero__title .cur::after { display: none; } }

/* product feature block (Growthmind) */
.product-feature { display: grid; gap: 0; align-items: stretch; background: var(--surface);
  border: 1px solid var(--line); border-radius: var(--r-panel); overflow: hidden; box-shadow: var(--shadow-md); }
@media (min-width: 860px) { .product-feature { grid-template-columns: 1.05fr 1fr; } }
.product-feature__media { min-height: 260px; }
.product-feature__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.product-feature__body { padding: var(--s-40); display: flex; flex-direction: column; justify-content: center; }
@media (max-width: 859px) { .product-feature__body { padding: var(--s-24); } }
@media (min-width: 860px) { .product-feature--flip .product-feature__media { order: 2; } }
.pf-badges { display: flex; flex-wrap: wrap; gap: var(--s-8); margin-bottom: var(--s-16); }
.best-for { display: inline-flex; align-items: baseline; gap: 6px; margin: var(--s-8) 0 var(--s-16);
  font-size: var(--t-body-sm); color: var(--ink-2); }
.best-for b { color: var(--ip-teal-deep); font-weight: var(--fw-semibold); }
/* team / person card: fixed photo column so the photo is not stranded in empty space */
.person { display: grid; gap: var(--s-32); align-items: start; }
@media (min-width: 720px) { .person { grid-template-columns: 220px 1fr; } }
.person__photo { width: 100%; max-width: 240px; aspect-ratio: 1 / 1; object-fit: cover;
  border-radius: var(--r-panel); box-shadow: var(--shadow-md); }
@media (max-width: 719px) { .person__photo { max-width: 180px; } }
.product-feature__logo { height: 46px; width: auto; max-width: 100%; object-fit: contain;
  align-self: flex-start; display: block; margin-bottom: var(--s-16); }
@media (max-width: 859px) { .product-feature__logo { height: 38px; } }
.ms-tag { display: inline-flex; align-items: center; gap: 6px; align-self: flex-start;
  font-size: var(--t-caption); font-weight: var(--fw-semibold); letter-spacing: .01em;
  color: var(--ip-teal-deep); background: var(--ip-teal-soft); border: 1px solid rgba(0,160,168,.24);
  padding: 5px 12px; border-radius: var(--r-pill); margin-bottom: var(--s-16); }
.trial-box { margin-top: var(--s-24); padding: var(--s-20); border: 1px solid rgba(0,160,168,.28);
  border-radius: var(--r-card); background: linear-gradient(180deg, var(--ip-teal-soft), var(--surface)); }
.trial-box__label { display: inline-flex; align-items: center; gap: 6px; font-size: var(--t-eyebrow);
  font-weight: var(--fw-bold); letter-spacing: .08em; text-transform: uppercase; color: var(--ip-teal-deep); }
.trial-box__label .star { color: var(--ip-teal); font-size: 1.1em; line-height: 1; }
.trial-box__text { margin-top: var(--s-8); color: var(--ink-2); font-size: var(--t-body-sm); line-height: var(--lh-snug); }
.so-pill { display: block; margin-top: var(--s-16); padding: 12px 14px; border: 1px solid var(--line);
  border-radius: var(--r-btn); background: var(--surface-alt); text-decoration: none; width: 100%;
  transition: border-color var(--dur) var(--ease), background var(--dur) var(--ease), box-shadow var(--dur) var(--ease), transform var(--dur) var(--ease); }
.so-pill:hover { border-color: var(--ip-blue); background: var(--ip-blue-soft); box-shadow: var(--shadow-sm); transform: translateY(-1px); }
.so-pill img { height: 18px; width: auto; display: block; margin-bottom: 6px; }
.so-pill__cap { font-size: var(--t-caption); font-weight: var(--fw-semibold); color: var(--ip-blue); }
.so-pill:hover .so-pill__cap { color: var(--ip-blue-deep); }
.so-pill__cap .arw { display: inline-block; transition: transform var(--dur) var(--ease); }
.so-pill:hover .so-pill__cap .arw { transform: translateX(3px); }
/* Legal / policy page */
.legal { display: grid; gap: var(--s-48); align-items: start; }
@media (min-width: 980px) { .legal { grid-template-columns: 264px 1fr; } }
.legal-toc { font-size: var(--t-body-sm); }
@media (min-width: 980px) { .legal-toc { position: sticky; top: 96px; max-height: calc(100vh - 120px); overflow-y: auto; } }
.legal-toc__title { font-size: var(--t-eyebrow); text-transform: uppercase; letter-spacing: .08em;
  font-weight: var(--fw-bold); color: var(--ip-teal-deep); margin-bottom: var(--s-12); }
.legal-toc ol { list-style: none; counter-reset: toc; display: flex; flex-direction: column; gap: 2px; }
.legal-toc a { display: block; padding: 7px 10px; color: var(--muted); text-decoration: none;
  border-left: 2px solid var(--line); border-radius: 0 var(--r-btn) var(--r-btn) 0; line-height: 1.35; }
.legal-toc a:hover { color: var(--ip-blue); background: var(--ip-blue-soft); border-left-color: var(--ip-blue); }
.legal-body h2 { font-size: var(--t-h3); color: var(--ink); margin-top: var(--s-48); padding-top: var(--s-24);
  border-top: 1px solid var(--line); scroll-margin-top: 96px; }
.legal-body h2:first-of-type { margin-top: 0; padding-top: 0; border-top: 0; }
.legal-body h3 { font-size: var(--t-subhead); color: var(--ip-blue-deep); margin-top: var(--s-24); margin-bottom: var(--s-8); }
.legal-body p, .legal-body li { color: var(--ink-2); margin-bottom: var(--s-16); line-height: var(--lh-body); }
.legal-body ul, .legal-body ol { margin: 0 0 var(--s-16) var(--s-20); }
.legal-body strong { color: var(--ip-blue); font-weight: var(--fw-semibold); }
.legal-meta { display: inline-flex; flex-wrap: wrap; gap: var(--s-16); align-items: center; margin-top: var(--s-16); }
.legal-meta .chip { display: inline-flex; align-items: center; gap: 8px; background: var(--ip-blue-soft);
  color: var(--ip-blue); font-size: var(--t-caption); font-weight: var(--fw-semibold); padding: 6px 14px; border-radius: var(--r-pill); }
/* Blog article (editorial) */
.blog-hero { padding-block: var(--s-56) var(--s-8); }
.blog-meta { display: flex; flex-wrap: wrap; gap: var(--s-20); align-items: center; margin-top: var(--s-20);
  padding: 14px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line);
  font-size: var(--t-body-sm); color: var(--muted); }
.blog-meta b { color: var(--ink-2); font-weight: var(--fw-semibold); }
.blog-hero__img { width: 100%; border-radius: var(--r-panel); aspect-ratio: 16 / 9; object-fit: cover;
  box-shadow: var(--shadow-md); margin-top: var(--s-32); }
.blog h2 { color: var(--ip-blue); margin-top: var(--s-40); margin-bottom: var(--s-16); }
.blog h3 { color: var(--ip-blue-deep); margin-top: var(--s-24); margin-bottom: var(--s-8); font-size: var(--t-subhead); }
.blog p { margin-bottom: var(--s-16); }
.blog ul, .blog ol { margin: 0 0 var(--s-16) var(--s-20); display: flex; flex-direction: column; gap: 8px; }
.blog li { color: var(--ink-2); }
.crumbs { font-size: var(--t-caption); font-weight: var(--fw-medium); margin-bottom: var(--s-16); color: var(--muted); }
.crumbs a { color: inherit; text-decoration: none; }
.crumbs a:hover { text-decoration: underline; }
.crumbs span { opacity: .6; }
.section--dark .crumbs, .section--dark .crumbs a { color: var(--on-dark-muted); }

/* ============ Contact popcard (chooser + enquiry form + booking) ============ */
.enq-lock { overflow: hidden; }
.enq-overlay { position: fixed; inset: 0; background: rgba(6,29,55,.55); backdrop-filter: blur(3px);
  opacity: 0; visibility: hidden; transition: opacity var(--dur) var(--ease); z-index: 1000; }
.enq-overlay.open { opacity: 1; visibility: visible; }
.enq-modal { position: fixed; left: 50%; top: 50%; transform: translate(-50%, -46%); width: min(520px, calc(100vw - 32px));
  max-height: calc(100vh - 48px); overflow-y: auto; background: var(--surface); border-radius: var(--r-panel);
  box-shadow: var(--shadow-lg); padding: var(--s-32); z-index: 1001; opacity: 0; visibility: hidden;
  transition: opacity var(--dur) var(--ease), transform var(--dur) var(--ease); }
.enq-modal.open { opacity: 1; visibility: visible; transform: translate(-50%, -50%); }
.enq-close { position: absolute; top: 12px; right: 12px; width: 36px; height: 36px; border: 0; border-radius: 50%;
  background: var(--canvas-alt); color: var(--muted); font-size: 22px; line-height: 1; cursor: pointer; }
.enq-close:hover { background: var(--line); color: var(--ink); }
.enq-head { text-align: center; margin-bottom: var(--s-20); }
.enq-head h3 { font-size: var(--t-h3); margin: var(--s-4) 0 var(--s-8); }
.enq-sub { color: var(--muted); font-size: var(--t-body-sm); }
/* chooser cards */
.chooser-list { display: flex; flex-direction: column; gap: var(--s-12); }
.chooser-card { display: flex; align-items: center; gap: var(--s-16); text-align: left; width: 100%;
  padding: var(--s-16); border: 1px solid var(--line); border-radius: var(--r-card); background: var(--surface);
  cursor: pointer; transition: border-color var(--dur) var(--ease), background var(--dur) var(--ease), transform var(--dur) var(--ease); position: relative; }
.chooser-card:hover { border-color: var(--ip-blue); background: var(--ip-blue-soft); transform: translateY(-1px); }
.chooser-feat { border-color: rgba(0,160,168,.4); background: linear-gradient(180deg, var(--ip-teal-soft), var(--surface)); }
.chooser-feat:hover { border-color: var(--ip-teal); background: var(--ip-teal-soft); }
.chooser-ic { flex: none; width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center;
  background: var(--ip-blue-soft); color: var(--ip-blue); }
.chooser-ic svg { width: 22px; height: 22px; }
.chooser-ic.wa { background: #25d366; color: #fff; }
.chooser-tx { display: flex; flex-direction: column; gap: 2px; }
.chooser-tx b { color: var(--ink); font-size: var(--t-body); font-weight: var(--fw-semibold); }
.chooser-tx span { color: var(--muted); font-size: var(--t-caption); }
.chooser-badge { position: absolute; top: 12px; right: 12px; background: var(--ip-teal); color: #fff;
  font-size: 10px; font-weight: var(--fw-bold); text-transform: uppercase; letter-spacing: .06em; padding: 3px 8px; border-radius: var(--r-pill); }
.chooser-feat .chooser-tx b { padding-right: 70px; }  /* keep the title clear of the FASTEST badge */
/* enquiry form */
.enq-form { display: flex; flex-direction: column; gap: var(--s-12); }
.enq-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-12); }
@media (max-width: 480px) { .enq-grid { grid-template-columns: 1fr; } }
.enq-row { display: flex; flex-direction: column; gap: 5px; }
.enq-row > span { font-size: var(--t-body-sm); font-weight: var(--fw-medium); color: var(--ink-2); }
.enq-row.invalid input, .enq-row.invalid textarea { border-color: var(--err); box-shadow: 0 0 0 3px rgba(192,57,43,.15); }
.enq-note { font-size: var(--t-caption); color: var(--muted-2); margin: 2px 0 4px; }
.enq-submit svg, .enq-form button svg { width: 18px; height: 18px; vertical-align: -3px; margin-right: 6px; }
/* success + booking */
.enq-success { text-align: center; padding: var(--s-16) 0; }
.enq-tick { width: 56px; height: 56px; margin: 0 auto var(--s-16); border-radius: 50%; background: var(--ip-teal-soft);
  color: var(--ip-teal-deep); font-size: 30px; display: grid; place-items: center; }
.booking-when { font-size: var(--t-body-lg); margin: var(--s-8) 0; }
.booking-actions { display: flex; flex-direction: column; gap: var(--s-12); margin-top: var(--s-16); }
.booking-actions .btn { width: 100%; }
@media (prefers-reduced-motion: reduce) { .enq-modal, .enq-overlay { transition: none; } }

.btn svg { width: 18px; height: 18px; flex: none; }
.chooser-badge + .chooser-tx, .booking-actions .btn { justify-content: center; }

/* ---- Booking confirmed card (bigger, premium) ---- */
.booking-modal { width: min(560px, calc(100vw - 32px)); text-align: center; padding: var(--s-40) var(--s-32) var(--s-32); }
.booking-card { display: flex; flex-direction: column; align-items: center; }
.booking-logo { height: 52px; width: auto; margin-bottom: var(--s-20); }
.booking-check { width: 74px; height: 74px; border-radius: 50%; display: grid; place-items: center;
  background: var(--ip-teal-soft); color: var(--ip-teal-deep); box-shadow: 0 0 0 8px rgba(0,160,168,.10); margin-bottom: var(--s-16); }
.booking-check svg { width: 34px; height: 34px; }
.booking-modal .eyebrow { margin-bottom: var(--s-4); }
.booking-modal h3 { font-size: var(--t-h2); margin-bottom: var(--s-12); }
.booking-lead { color: var(--muted); max-width: 44ch; margin: 0 auto var(--s-24); line-height: var(--lh-body); }
.booking-lead strong { color: var(--ink); }
.booking-detail { width: 100%; text-align: left; background: var(--canvas-alt); border: 1px solid var(--line);
  border-radius: var(--r-card); padding: 2px var(--s-20); margin-bottom: var(--s-24); }
.booking-row { display: flex; justify-content: space-between; align-items: center; gap: var(--s-16);
  padding: var(--s-12) 0; border-bottom: 1px solid var(--line); }
.booking-row:last-child { border-bottom: 0; }
.booking-row span { color: var(--muted); font-size: var(--t-body-sm); }
.booking-row b { color: var(--ink); font-weight: var(--fw-semibold); text-align: right; }
.booking-add { font-size: var(--t-body-sm); font-weight: var(--fw-semibold); color: var(--ink-2); margin-bottom: var(--s-12); }
.cal-btn { width: 100%; background: var(--surface); border: 1.5px solid var(--line-strong); color: var(--ip-blue); }
.cal-btn svg { color: var(--ip-blue); }
.cal-btn:hover { border-color: var(--ip-blue); background: var(--ip-blue-soft); color: var(--ip-blue-deep); transform: translateY(-1px); }
/* Share row: two short actions side by side under a small heading. */
.booking-share-h { margin-top: var(--s-20); }
.booking-share { flex-direction: row; gap: var(--s-12); }
.booking-share .btn { width: auto; flex: 1; }
.booking-done { margin-top: var(--s-8); color: var(--muted); }

.enq-back { position: absolute; top: 14px; left: 14px; display: inline-flex; align-items: center; gap: 4px;
  background: none; border: 0; color: var(--muted); font-size: var(--t-body-sm); font-weight: var(--fw-medium);
  cursor: pointer; padding: 6px 10px; border-radius: var(--r-btn); }
.enq-back svg { width: 16px; height: 16px; }
.enq-back:hover { color: var(--ip-blue); background: var(--ip-blue-soft); }

/* ============ Cookie consent + scroll-top + AI Readiness FAB ============ */
/* Cookie consent — centered modal over a blurred backdrop. */
/* The veil is the second half of the same trap: a full-screen dimmer that also
   swallowed every click. Both it and body.cookie-open (which froze scrolling)
   are released, so the page stays usable while the consent question is on
   screen. Consent still controls what LOADS -- nothing fires before Accept. */
.cookie-veil { position: fixed; inset: 0; z-index: 1900; pointer-events: none; background: rgba(10, 24, 44, .5);
  -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
  opacity: 0; visibility: hidden; transition: opacity var(--dur) var(--ease), visibility var(--dur) var(--ease); }
.cookie-veil.show { opacity: 1; visibility: visible; }
/* inset:0 made this a FULL-SCREEN click trap. Verified in a browser on the live
   site: every contact button on /contact/ -- "Enquire over email", "Book a
   discovery call", "Talk to ImpactPlus" -- was unclickable until the banner was
   dismissed, because .cookie-banner intercepted the pointer event first. On a
   site whose whole purpose is a handful of high-value enquiries, that is the
   most expensive CSS on the page.
   Consent still gates what LOADS: nothing fires until Accept. It no longer gates
   whether a visitor can contact the business. pointer-events is released on the
   full-screen container and taken back only on the card itself. */
.cookie-banner { position: fixed; inset: 0; z-index: 1901; display: flex; align-items: flex-end; justify-content: center;
  padding: var(--s-24); opacity: 0; visibility: hidden; pointer-events: none;
  transition: opacity var(--dur) var(--ease), visibility var(--dur) var(--ease); }
.cookie-banner.show .cookie-card { pointer-events: auto; }
.cookie-banner.show { opacity: 1; visibility: visible; }
.cookie-card { background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-panel); box-shadow: var(--shadow-lg);
  padding: var(--s-32) var(--s-24) var(--s-24); width: min(440px, calc(100vw - 40px)); text-align: left;
  transform: translateY(16px); transition: transform var(--dur) var(--ease); }
.cookie-banner.show .cookie-card { transform: none; }
.cookie-title { font-size: 18px; font-weight: var(--fw-bold); color: var(--ink); margin: 0 0 var(--s-8); letter-spacing: -.01em; }
.cookie-text { font-size: var(--t-body-sm); color: var(--ink-2); line-height: var(--lh-snug); margin: 0 0 var(--s-16); }
.cookie-text a { color: var(--ip-blue); text-decoration: underline; }
.cookie-accept { display: block; width: 100%; padding: 13px 22px; font-family: inherit; font-size: 15.5px; font-weight: 600;
  color: #fff; background: var(--ip-blue); border: 0; border-radius: var(--r-card); cursor: pointer; box-shadow: 0 10px 24px -12px rgba(0,74,159,.5); }
.cookie-accept:hover { background: #0a3f86; }
.cookie-decline { display: block; margin: var(--s-8) auto 0; padding: 5px 10px; font-family: inherit; font-size: 12.5px;
  color: var(--muted); background: none; border: 0; text-decoration: underline; cursor: pointer; }
.cookie-decline:hover { color: var(--ink); }
/* scroll lock removed with the click trap: a visitor must be able to read the
   page and reach a contact button while deciding about cookies */
body.cookie-open { overflow: visible; }

.scroll-top { position: fixed; bottom: 94px; right: 30px; z-index: 900; width: 44px; height: 44px; border-radius: 50%;
  background: var(--ip-blue); color: #fff; border: 0; box-shadow: var(--shadow-lg); cursor: pointer; display: grid; place-items: center;
  opacity: 0; visibility: hidden; transform: translateY(8px); transition: opacity var(--dur) var(--ease), transform var(--dur) var(--ease), background var(--dur) var(--ease); }
.scroll-top.show { opacity: 1; visibility: visible; transform: none; }
.scroll-top svg { width: 20px; height: 20px; }
.scroll-top:hover { background: var(--ip-blue-deep); }

.ai-fab { position: fixed; bottom: 24px; right: 24px; z-index: 900; display: inline-flex; align-items: center;
  height: 56px; max-width: 56px; background: #fff; border: 1px solid var(--line); border-radius: 999px;
  box-shadow: var(--shadow-lg); text-decoration: none; overflow: hidden; transition: max-width .3s var(--ease), box-shadow var(--dur) var(--ease); }
.ai-fab__ic { flex: none; width: 56px; height: 56px; display: grid; place-items: center; color: var(--ip-teal); }
.ai-fab__ic svg { width: 26px; height: 26px; }
.ai-fab__tx { white-space: nowrap; font-weight: var(--fw-semibold); color: var(--ip-blue); font-size: var(--t-body-sm); padding-right: 22px; opacity: 0; transition: opacity var(--dur) var(--ease); }
.ai-fab:hover, .ai-fab:focus-visible { max-width: 280px; box-shadow: 0 12px 34px -10px rgba(0,160,168,.5); }
.ai-fab:hover .ai-fab__tx, .ai-fab:focus-visible .ai-fab__tx { opacity: 1; }
@media (max-width: 520px) { .ai-fab { bottom: 16px; right: 16px; } .scroll-top { bottom: 84px; right: 22px; } }
@media (prefers-reduced-motion: reduce) { .ai-fab, .scroll-top, .cookie-banner { transition: none; } }

/* ---- Interior page hero with a background image behind the navy scrim ----
   Text lives on the LEFT, the generated element imagery lives on the RIGHT, so the
   scrim is near-solid navy on the left (headline stays readable) and eases off toward
   the right so the brand element (network, brain, magnifier, stars) shows through. */
.page-hero { background-image: linear-gradient(90deg, rgba(6,29,55,.93) 0%, rgba(6,29,55,.86) 45%, rgba(7,32,60,.55) 70%, rgba(8,38,68,.22) 100%), var(--hero-img, none);
  background-size: cover; background-position: center; background-repeat: no-repeat; }
/* On narrow screens the hero copy spans full width, so restore a uniform dark scrim. */
@media (max-width: 780px) {
  .page-hero { background-image: linear-gradient(180deg, rgba(6,29,55,.92), rgba(8,38,68,.95)), var(--hero-img, none); }
}

.cookie-x { position: absolute; top: 10px; right: 10px; width: 30px; height: 30px; border: 0; background: none;
  color: var(--muted-2); font-size: 20px; line-height: 1; cursor: pointer; border-radius: 50%; }
.cookie-x:hover { background: var(--canvas-alt); color: var(--ink); }

/* ---- Cookie preferences toggle ---- */
.cookie-pref { display: flex; align-items: center; justify-content: space-between; gap: var(--s-24); }
.cookie-pref__tx { flex: 1; }
.switch { flex: none; width: 56px; height: 32px; border-radius: 999px; border: 0; cursor: pointer; padding: 0;
  background: var(--line-strong); position: relative; transition: background var(--dur) var(--ease); }
.switch[aria-checked="true"] { background: var(--ip-teal); }
.switch__dot { position: absolute; top: 4px; left: 4px; width: 24px; height: 24px; border-radius: 50%; background: #fff;
  box-shadow: var(--shadow-sm); transition: transform var(--dur) var(--ease); }
.switch[aria-checked="true"] .switch__dot { transform: translateX(24px); }

/* enquiry consent checkbox (any form collecting personal details) */
.enq-consent{display:flex;gap:9px;align-items:flex-start;font-size:12.5px;color:var(--muted);line-height:1.5;margin:2px 0 6px;cursor:pointer}
.enq-consent input{margin-top:3px;flex:none;width:auto}
.enq-consent a{color:var(--ip-blue)}
.enq-consent.invalid span{color:#b3261e}

/* LLP Act s.21(1) statutory footer line: full-width fine print under the copyright row */
.footer__legal { flex-basis: 100%; margin-top: var(--s-8); line-height: 1.65; opacity: .85; }

/* The floating buttons (scroll-top + AI Readiness) sit bottom-right and overlapped the
   statutory LLP footer line on small screens. That line must stay legible, so the footer
   clears the FAB stack (ai-fab bottom 16px + scroll-top bottom 84px + 44px tall). */
@media (max-width: 900px) { .footer { padding-bottom: 150px; } }
