/* The privacy notice, in the site's own vocabulary: a dark panel on a hairline
   rule in the accent, a mono eyebrow, and the same two-weight button pair the
   detail panel uses.

   It is fixed and it animates from translateY, so it never pushes the document
   and contributes nothing to layout shift — a banner that arrives after paint
   and shoves the page down is the usual way these damage Core Web Vitals, and
   CLS is a ranking signal. Nothing here blocks rendering either: the script is
   small, deferred, and draws only after the document is parsed. */
.atcl-consent {
  position: fixed; z-index: 120; inset-inline: 0; bottom: 0;
  /* The notice is a <section>, and main.css pads every bare section by 9rem
     at desktop widths. This inherited it: 413px tall instead of 125px, nearly
     half the viewport, and on the division pages that buried the contact
     form's submit button so completely it could not be clicked even scrolled
     to the very bottom of the page. Something fixed to the viewport sizes
     itself; it does not take the page's section rhythm. */
  padding: 0;
  border-top: 1px solid color-mix(in srgb, var(--acc, #5EEAD4) 42%, transparent);
  background: rgb(var(--ink-rgb, 4 10 16) / 0.97);
  backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px);
  box-shadow: 0 -18px 48px rgb(0 0 0 / 0.5);
  transform: translateY(100%);
  transition: transform 320ms cubic-bezier(0.22, 1, 0.36, 1);
}
.atcl-consent.is-open { transform: none; }
.ac-inner {
  max-width: 1180px; margin: 0 auto; padding: 18px clamp(20px, 5vw, 48px);
  display: flex; align-items: center; gap: clamp(18px, 4vw, 56px);
}
.ac-copy { min-width: 0; }
.ac-eyebrow {
  display: block; margin-bottom: 6px;
  font-size: 10px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--acc, #5EEAD4);
}
.ac-copy p {
  margin: 0; max-width: 72ch;
  font-size: 13.5px; line-height: 1.65;
  color: var(--fg2, #B7CFC9);
}
.ac-copy a { color: var(--acc, #5EEAD4); text-underline-offset: 3px; }
.ac-copy a:hover { text-decoration: underline; }

.ac-actions { display: flex; align-items: center; gap: 10px; flex: 0 0 auto; }
.ac-btn {
  min-height: 44px; padding-inline: 18px; border-radius: 6px;
  font: inherit; font-size: 12.5px; font-weight: 600; letter-spacing: 0.02em;
  white-space: nowrap; cursor: pointer;
  transition: background 180ms, border-color 180ms, color 180ms;
}
.ac-ghost {
  border: 1px solid var(--hud, rgba(94,234,212,0.16));
  background: transparent; color: var(--fg2, #B7CFC9);
}
.ac-ghost:hover { border-color: var(--acc, #5EEAD4); color: var(--fg, #E8FBF6); }
.ac-primary {
  border: 1px solid var(--acc, #5EEAD4);
  background: var(--acc, #5EEAD4); color: #04100E;
}
.ac-primary:hover { background: color-mix(in srgb, var(--acc, #5EEAD4) 86%, #fff); }
.ac-btn:focus-visible { outline: 2px solid var(--acc, #5EEAD4); outline-offset: 2px; }

/* The floating furniture steps aside while the notice is up, rather than being
   covered by it. It shows once, so this is briefly true and then never again. */
html.atcl-consent-open .division-read-dock,
html.atcl-consent-open .division-eco-dock,
html.atcl-consent-open .ai-fab,
html.atcl-consent-open #ai-fab { bottom: calc(var(--ac-h, 125px) + 20px); }
html.atcl-consent-open .cst-audio--floating { bottom: calc(var(--ac-h, 125px) + 96px); }
/* The hub keeps its own furniture along the same edge, and it was left out of
   the list above — so while the notice was up, on every desktop first visit,
   BOOK A DISCOVERY CALL and the capability stepper sat underneath it and could
   not be clicked at all. The primary call to action was dead for exactly the
   visitors seeing the site for the first time. Below 1081 these are display:none
   (constellation.css), so this only has to hold for the desktop layout. */
html.atcl-consent-open .cst-stepper,
html.atcl-consent-open .cst-theme,
html.atcl-consent-open .cst-book { bottom: calc(var(--ac-h, 125px) + 22px); }
html.atcl-consent-open .ch-inner { bottom: calc(var(--ac-h, 125px) + 88px); }

/* All of the above steps floating furniture aside. Content in the normal flow
   cannot step anywhere, so the division pages are given room to scroll past
   the notice instead — belt and braces behind the padding fix, because the
   failure it prevents (a form that cannot be submitted on a first visit) is
   not one to leave resting on a single rule. scroll-padding is for the
   in-page nav, which otherwise lands a section half under the panel. */
html.atcl-consent-open[data-division] { scroll-padding-bottom: calc(var(--ac-h, 125px) + 16px); }
html.atcl-consent-open[data-division] body { padding-bottom: var(--ac-h, 125px); }

@media (max-width: 860px) {
  .ac-inner { flex-direction: column; align-items: stretch; gap: 14px; padding: 16px 18px; }
  .ac-actions { justify-content: stretch; }
  .ac-btn { flex: 1 1 0; }
  .ac-copy p { font-size: 13px; }

}
@media (prefers-reduced-motion: reduce) {
  .atcl-consent { transition: none; }
}


/* ── reCAPTCHA badge ──────────────────────────────────────────────────────
   Google allows the badge to be hidden as long as its branding appears in the
   user flow instead, which the contact forms carry. `visibility` and not
   `display`: display:none stops the widget working, and this badge is the
   only part of an invisible check a visitor would ever see. Since April 2026
   reCAPTCHA runs under the Google Cloud DPA with Google as processor, and
   Google asks sites to drop the Privacy-Policy and Terms links that used to
   accompany that line — so the forms carry the sentence on its own. */
.grecaptcha-badge { visibility: hidden; }
