/* ==========================================================================
   Components — buttons, links, header, nav, forms, accordion, cursor
   ========================================================================== */

/* ---- Buttons ------------------------------------------------------------ */
.cp-btn {
  --btn-fg: var(--cp-ink);
  --btn-bd: var(--cp-rule);
  --btn-fill: var(--cp-navy);
  --btn-fg-hover: #fff;

  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 0.7em;
  padding: 1.05em 1.9em;
  border: 1px solid var(--btn-bd);
  border-radius: 999px;
  color: var(--btn-fg);
  background: transparent;
  font-size: var(--cp-step--1);
  font-weight: 500;
  letter-spacing: 0.075em;
  text-transform: uppercase;
  text-decoration: none;
  overflow: hidden;
  isolation: isolate;
  transition: color var(--cp-dur-sm) var(--cp-ease),
              border-color var(--cp-dur-sm) var(--cp-ease),
              transform var(--cp-dur-sm) var(--cp-ease-out);
}

/* The fill sweeps in horizontally from the leading edge. */
.cp-btn__fill {
  position: absolute;
  inset: 0;
  background: var(--btn-fill);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform var(--cp-dur-md) var(--cp-ease-out);
  z-index: -1;
}
.cp-btn:hover .cp-btn__fill,
.cp-btn:focus-visible .cp-btn__fill { transform: scaleX(1); }

.cp-btn__label { position: relative; }
.cp-btn__arrow {
  display: inline-flex;
  transition: transform var(--cp-dur-sm) var(--cp-ease-out);
}
.cp-btn:hover .cp-btn__arrow,
.cp-btn:focus-visible .cp-btn__arrow { transform: translate3d(3px, -3px, 0); }

.cp-btn:hover, .cp-btn:focus-visible { color: var(--btn-fg-hover); border-color: var(--btn-fill); }

/* Primary — filled by default, inverts on hover. */
.cp-btn--primary {
  --btn-fg: #fff;
  --btn-bd: var(--cp-navy);
  background: var(--cp-navy);
}
.cp-btn--primary { --btn-fill: var(--cp-azure); --btn-fg-hover: #fff; }
.cp-btn--primary:hover, .cp-btn--primary:focus-visible { border-color: var(--cp-azure); }

.cp-btn--secondary { --btn-fg: var(--cp-ink); --btn-fill: var(--cp-navy); }

.cp-dark .cp-btn--secondary,
.cp-btn--ghost {
  --btn-fg: var(--cp-on-dark);
  --btn-bd: var(--cp-rule-dark);
  --btn-fill: var(--cp-on-dark);
  --btn-fg-hover: var(--cp-navy);
}
/* On dark grounds the primary sweeps in the bright azure, so the label has to
   flip to navy — white on #65b8ed measures 2.2:1 and the button reads as blank
   on hover. Navy on the same fill is 8.0:1. */
.cp-dark .cp-btn--primary {
  --btn-fill: var(--cp-azure-bright);
  --btn-fg-hover: var(--cp-navy);
}

/* ---- Text link with animated arrow -------------------------------------- */
.cp-link {
  display: inline-flex;
  align-items: center;
  gap: 0.5em;
  font-weight: 500;
  font-size: var(--cp-step--1);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  text-decoration: none;
  color: var(--cp-azure);
  position: relative;
  padding-bottom: 0.35em;
}
.cp-dark .cp-link { color: var(--cp-azure-bright); }
.cp-link::after {
  content: "";
  position: absolute;
  left: 0; bottom: 0;
  width: 100%; height: 1px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: right center;
  transition: transform var(--cp-dur-sm) var(--cp-ease);
}
.cp-link:hover::after, .cp-link:focus-visible::after {
  transform: scaleX(1);
  transform-origin: left center;
}
.cp-link svg { transition: transform var(--cp-dur-sm) var(--cp-ease-out); }
.cp-link:hover svg, .cp-link:focus-visible svg { transform: translate3d(3px, -3px, 0); }

/* ---- Header ------------------------------------------------------------- */
.cp-header {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: var(--cp-z-nav);
  height: var(--cp-header-h);
  display: flex;
  align-items: center;
  background: rgba(255, 255, 255, 0.96);
  border-bottom: 1px solid rgba(15, 109, 180, 0.1);
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.9) inset;
  -webkit-backdrop-filter: blur(18px) saturate(118%);
  backdrop-filter: blur(18px) saturate(118%);
  transition: background var(--cp-dur-md) var(--cp-ease),
              border-color var(--cp-dur-md) var(--cp-ease),
              box-shadow var(--cp-dur-md) var(--cp-ease),
              backdrop-filter var(--cp-dur-md) var(--cp-ease),
              transform var(--cp-dur-md) var(--cp-ease);
}

.cp-header.is-stuck {
  background: rgba(255, 255, 255, 0.92);
  border-bottom-color: rgba(15, 109, 180, 0.14);
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.92) inset,
    0 10px 34px rgba(11, 25, 53, 0.065);
}

.cp-header .cp-header__cta .cp-btn--ghost {
  --btn-fg: var(--cp-ink);
  --btn-bd: rgba(11, 25, 53, 0.22);
  --btn-fill: var(--cp-navy);
  --btn-fg-hover: #fff;
}

/* Hide on scroll down, reveal on scroll up. */
.cp-header.is-hidden { transform: translate3d(0, -100%, 0); }

.cp-header__inner {
  width: 100%;
  max-width: var(--cp-max);
  margin-inline: auto;
  padding-inline: var(--cp-gutter);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--cp-space-md);
}

.cp-brand {
  position: relative;
  display: inline-flex;
  align-items: center;
  flex: none;
  text-decoration: none;
  transition: opacity var(--cp-dur-sm) var(--cp-ease);
}
.cp-brand img {
  /* The lockup is wide (3.5:1), so it needs real height to carry presence
     across the header. Tops out at 72px inside a 116px header. */
  height: clamp(2.5rem, 2rem + 2.2vw, 4.5rem);
  width: auto;
}
.cp-brand__mark { display: block; }
.cp-brand:hover { opacity: 0.82; }

/* ---- Desktop navigation ------------------------------------------------- */
.cp-nav { display: none; }
@media (min-width: 62rem) {
  .cp-nav { display: block; margin-left: auto; }
  .cp-nav__list { display: flex; align-items: center; gap: clamp(1.25rem, 0.6rem + 1.6vw, 2.5rem); }
}
.cp-nav__link {
  position: relative;
  display: inline-block;
  padding: 0.5rem 0;
  font-size: var(--cp-step--1);
  font-weight: 400;
  letter-spacing: 0.04em;
  color: var(--cp-ink-soft);
  text-decoration: none;
  transition: color var(--cp-dur-sm) var(--cp-ease);
}
.cp-nav__link:hover, .cp-nav__link:focus-visible { color: var(--cp-ink); }
.cp-nav__item.is-current .cp-nav__link { color: var(--cp-ink); }

.cp-nav__rule {
  position: absolute;
  left: 0; bottom: 0.15rem;
  width: 100%; height: 1px;
  background: var(--cp-azure-vivid);
  transform: scaleX(0);
  transform-origin: right center;
  transition: transform var(--cp-dur-sm) var(--cp-ease);
}
.cp-nav__link:hover .cp-nav__rule,
.cp-nav__link:focus-visible .cp-nav__rule,
.cp-nav__item.is-current .cp-nav__rule {
  transform: scaleX(1);
  transform-origin: left center;
}

.cp-header__cta { display: none; }
@media (min-width: 62rem) {
  .cp-header__cta { display: inline-flex; margin-left: var(--cp-space-md); flex: none; }
  .cp-header__cta .cp-btn { padding: 0.8em 1.5em; }
}

/* ---- Mobile menu toggle ------------------------------------------------- */
/* WordPress admin bar offsets.
   The admin bar is fixed at z-index 99999, well above the header, so a header
   at top:0 has its top edge covered for any logged-in user. Push it clear.
   Below 600px the admin bar is position:absolute and scrolls away, so the
   offset is dropped once the header is stuck — otherwise it would leave a
   permanent empty strip above the header. */
body.admin-bar .cp-header { top: 32px; }
body.admin-bar .cp-overlay { top: 32px; }

@media screen and (max-width: 782px) {
  body.admin-bar .cp-header { top: 46px; }
  body.admin-bar .cp-overlay { top: 46px; }
}
@media screen and (max-width: 600px) {
  body.admin-bar .cp-header.is-stuck { top: 0; }
}

/* The header is a fixed, z-indexed element, so it forms its own stacking
   context and the burger inside it cannot rise above the overlay on its own.
   While the menu is open the whole header is lifted instead, which keeps the
   logo and the close control visible and reachable. */
body.cp-menu-open .cp-header {
  z-index: calc(var(--cp-z-overlay) + 1);
  background: rgba(255, 255, 255, 0.98);
  border-bottom-color: rgba(15, 109, 180, 0.12);
  -webkit-backdrop-filter: blur(18px) saturate(118%);
  backdrop-filter: blur(18px) saturate(118%);
}

.cp-burger {
  --bar: var(--cp-ink);
  display: inline-flex;
  flex-direction: column;
  justify-content: center;
  gap: 6px;
  width: 44px; height: 44px;
  margin-right: -10px;
  padding: 0 10px;
  flex: none;
}
@media (min-width: 62rem) { .cp-burger { display: none; } }
.cp-burger span {
  display: block;
  height: 1.5px;
  background: var(--bar);
  border-radius: 2px;
  transition: transform var(--cp-dur-sm) var(--cp-ease),
              opacity var(--cp-dur-xs) var(--cp-ease),
              width var(--cp-dur-sm) var(--cp-ease);
}
.cp-burger span:nth-child(1) { width: 24px; }
.cp-burger span:nth-child(2) { width: 17px; margin-left: auto; }
.cp-burger[aria-expanded="true"] span:nth-child(1) { transform: translateY(3.75px) rotate(45deg); }
.cp-burger[aria-expanded="true"] span:nth-child(2) { width: 24px; transform: translateY(-3.75px) rotate(-45deg); }

/* ---- Mobile overlay navigation ------------------------------------------ */
.cp-overlay {
  position: fixed;
  inset: 0;
  z-index: var(--cp-z-overlay);
  background: var(--cp-navy);
  display: flex;
  flex-direction: column;
  padding: calc(var(--cp-header-h) + var(--cp-space-lg)) var(--cp-gutter) var(--cp-space-lg);
  /* Circular expansion from the toggle. */
  clip-path: circle(0% at calc(100% - 2.5rem) 2.5rem);
  transition: clip-path var(--cp-dur-lg) var(--cp-ease-inout), visibility 0s linear var(--cp-dur-lg);
  visibility: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
}
.cp-overlay.is-open {
  clip-path: circle(150% at calc(100% - 2.5rem) 2.5rem);
  visibility: visible;
  transition: clip-path var(--cp-dur-lg) var(--cp-ease-inout), visibility 0s;
}
@media (min-width: 62rem) { .cp-overlay { display: none; } }

.cp-overlay__list { margin-bottom: auto; }
.cp-overlay__list .cp-nav__item { border-bottom: 1px solid var(--cp-rule-dark); overflow: hidden; }
.cp-overlay__list .cp-nav__link {
  display: block;
  padding: clamp(0.9rem, 0.5rem + 1.4vw, 1.35rem) 0;
  font-family: var(--cp-font-display);
  font-size: var(--cp-step-3);
  letter-spacing: var(--cp-track-tight);
  text-transform: none;
  color: var(--cp-on-dark);
  transform: translate3d(0, 100%, 0);
  opacity: 0;
  transition: transform var(--cp-dur-md) var(--cp-ease-out),
              opacity var(--cp-dur-md) var(--cp-ease-out);
  transition-delay: calc(var(--i, 0) * 60ms + 120ms);
}
.cp-overlay.is-open .cp-nav__link { transform: none; opacity: 1; }
.cp-overlay__list .cp-nav__rule { display: none; }

.cp-overlay__foot {
  padding-top: var(--cp-space-lg);
  opacity: 0;
  transform: translate3d(0, 16px, 0);
  transition: opacity var(--cp-dur-md) var(--cp-ease-out), transform var(--cp-dur-md) var(--cp-ease-out);
  transition-delay: 420ms;
}
.cp-overlay.is-open .cp-overlay__foot { opacity: 1; transform: none; }
.cp-overlay__address {
  font-size: var(--cp-step--1);
  line-height: 1.7;
  color: var(--cp-on-dark-faint);
  margin-bottom: var(--cp-space-md);
  font-style: normal;
}
.cp-overlay__foot .cp-btn { width: 100%; justify-content: center; }

body.cp-menu-open { overflow: hidden; }

/* ---- Accordion ---------------------------------------------------------- */
.cp-accordion { border-top: 1px solid var(--cp-rule); }
.cp-dark .cp-accordion { border-top-color: var(--cp-rule-dark); }
.cp-accordion__item { border-bottom: 1px solid var(--cp-rule); }
.cp-dark .cp-accordion__item { border-bottom-color: var(--cp-rule-dark); }

.cp-accordion__trigger {
  width: 100%;
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--cp-space-md);
  padding: var(--cp-space-md) 0;
  text-align: left;
  font-family: var(--cp-font-display);
  font-size: var(--cp-step-1);
  line-height: 1.35;
  color: inherit;
  transition: color var(--cp-dur-sm) var(--cp-ease);
}
.cp-accordion__trigger:hover { color: var(--cp-azure); }
.cp-dark .cp-accordion__trigger:hover { color: var(--cp-azure-bright); }

.cp-accordion__icon {
  position: relative;
  flex: none;
  width: 14px; height: 14px;
  margin-top: 0.35em;
}
.cp-accordion__icon::before,
.cp-accordion__icon::after {
  content: "";
  position: absolute;
  background: currentColor;
  transition: transform var(--cp-dur-sm) var(--cp-ease);
}
.cp-accordion__icon::before { top: 50%; left: 0; width: 100%; height: 1.5px; transform: translateY(-50%); }
.cp-accordion__icon::after  { left: 50%; top: 0; height: 100%; width: 1.5px; transform: translateX(-50%); }
[aria-expanded="true"] .cp-accordion__icon::after { transform: translateX(-50%) scaleY(0); }

.cp-accordion__panel {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows var(--cp-dur-md) var(--cp-ease-inout);
}
.cp-accordion__panel.is-open { grid-template-rows: 1fr; }
.cp-accordion__panel > div { overflow: hidden; }
.cp-accordion__body {
  max-width: var(--cp-measure);
  padding-bottom: var(--cp-space-md);
  color: var(--cp-ink-soft);
}
.cp-dark .cp-accordion__body { color: var(--cp-on-dark-soft); }
/* Without JS the panels are simply open. */
.no-js .cp-accordion__panel { grid-template-rows: 1fr; }

/* ---- Forms -------------------------------------------------------------- */
.cp-form { max-width: 44rem; }
.cp-field { position: relative; margin-bottom: var(--cp-space-md); }
.cp-field__label {
  display: block;
  margin-bottom: 0.5rem;
  font-size: var(--cp-step--1);
  font-weight: 500;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--cp-ink-soft);
}
.cp-dark .cp-field__label { color: var(--cp-on-dark-soft); }
.cp-field__req { color: var(--cp-azure); }
.cp-dark .cp-field__req { color: var(--cp-azure-bright); }

.cp-input, .cp-select, .cp-textarea {
  width: 100%;
  padding: 0.95rem 1.1rem;
  background: var(--cp-paper);
  border: 1px solid var(--cp-rule);
  border-radius: var(--cp-radius);
  color: var(--cp-ink);
  font-size: var(--cp-step-0);
  transition: border-color var(--cp-dur-sm) var(--cp-ease),
              box-shadow var(--cp-dur-sm) var(--cp-ease);
}
.cp-dark .cp-input, .cp-dark .cp-select, .cp-dark .cp-textarea {
  background: rgba(255,255,255,0.04);
  border-color: var(--cp-rule-dark);
  color: var(--cp-on-dark);
}
.cp-input:focus, .cp-select:focus, .cp-textarea:focus {
  outline: none;
  border-color: var(--cp-azure);
  box-shadow: 0 0 0 3px var(--cp-azure-soft);
}
.cp-textarea { min-height: 9.5rem; resize: vertical; }
.cp-select {
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%234A5468' stroke-width='1.4' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 1.1rem center;
  padding-right: 2.75rem;
}

.cp-field__error {
  display: block;
  margin-top: 0.45rem;
  font-size: var(--cp-step--1);
  color: #B3261E;
}
.cp-dark .cp-field__error { color: #FFB4AB; }
.cp-field.has-error .cp-input,
.cp-field.has-error .cp-select,
.cp-field.has-error .cp-textarea { border-color: #B3261E; }

/* Honeypot: removed from layout and from the a11y tree. */
.cp-hp {
  position: absolute !important;
  left: -9999px !important;
  width: 1px; height: 1px;
  overflow: hidden;
}

.cp-form__status {
  margin-bottom: var(--cp-space-md);
  padding: 1rem 1.25rem;
  border-radius: var(--cp-radius);
  border: 1px solid transparent;
  font-size: var(--cp-step--1);
}
.cp-form__status--ok    { background: rgba(5,101,182,0.08);  border-color: rgba(5,101,182,0.3);  color: var(--cp-azure); }
.cp-form__status--error { background: rgba(179,38,30,0.07); border-color: rgba(179,38,30,0.3); color: #B3261E; }
.cp-dark .cp-form__status--ok { background: rgba(76,159,228,0.1); border-color: rgba(76,159,228,0.35); color: var(--cp-azure-bright); }
.cp-dark .cp-form__status--error { background: rgba(255,180,171,0.08); border-color: rgba(255,180,171,0.3); color: #FFB4AB; }

.cp-form button[type="submit"][aria-busy="true"] { opacity: 0.65; pointer-events: none; }

/* ---- Footer -------------------------------------------------------------
   A quiet corporate close: identity, useful information, then legal details.
   -------------------------------------------------------------------------- */
.cp-footer {
  position: relative;
  isolation: isolate;
  background:
    radial-gradient(circle at 13% 4%, rgba(31, 143, 230, 0.25), transparent 29rem),
    radial-gradient(circle at 86% 86%, rgba(28, 107, 185, 0.18), transparent 34rem),
    linear-gradient(145deg, #050d20 0%, #0a1834 52%, #061127 100%);
  color: var(--cp-on-dark);
  overflow: hidden;
}

.cp-footer__inner {
  position: relative;
  z-index: 1;
  padding-top: clamp(2.75rem, 2rem + 2.5vw, 4.5rem);
  padding-bottom: clamp(2.75rem, 2rem + 2.5vw, 4.5rem);
}

/* --- identity --- */
.cp-footer__identity {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1.25rem 2rem;
  padding-top: clamp(2rem, 1.5rem + 1.5vw, 3rem);
  padding-bottom: clamp(2rem, 1.5rem + 1.5vw, 3rem);
  border-bottom: 1px solid var(--cp-rule-dark);
}
.cp-footer__brand { display: inline-block; line-height: 0; }
.cp-footer__brand img {
  height: clamp(2.5rem, 2.1rem + 1.3vw, 3.5rem);
  width: auto;
  max-width: 100%;
  transition: opacity var(--cp-dur-sm) var(--cp-ease);
}
.cp-footer__brand:hover img { opacity: 0.85; }
/* --- columns --- */
.cp-footer__grid {
  display: grid;
  gap: 2rem;
  padding-block: clamp(2.25rem, 1.6rem + 2vw, 3.5rem);
}
@media (min-width: 40rem) {
  .cp-footer__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2.5rem 3rem; }
}
@media (min-width: 68rem) {
  .cp-footer__grid {
    grid-template-columns: minmax(9rem, 0.75fr) minmax(18rem, 1.55fr) minmax(10rem, 0.8fr) minmax(13rem, 1fr);
    gap: clamp(2rem, 1rem + 2.4vw, 4rem);
  }
}

.cp-footer__title {
  font-family: var(--cp-font-sans);
  font-size: 0.72rem;
  font-weight: 500;
  letter-spacing: var(--cp-track-wide);
  text-transform: uppercase;
  color: var(--cp-azure-bright);
  margin-bottom: 1rem;
  padding-bottom: 0.75rem;
  border-bottom: 1px solid var(--cp-rule-dark);
}
.cp-footer__list li + li { margin-top: 0.5rem; }
.cp-footer__list a,
.cp-footer__list span {
  color: var(--cp-on-dark-soft);
  text-decoration: none;
  font-size: var(--cp-step--1);
  line-height: 1.5;
  transition: color var(--cp-dur-sm) var(--cp-ease);
}
.cp-footer__list a:hover, .cp-footer__list a:focus-visible { color: var(--cp-azure-bright); }
.cp-footer__list a {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 0;
}
.cp-footer__list a::after {
  content: "\2192";
  width: 0;
  opacity: 0;
  overflow: hidden;
  transition: width var(--cp-dur-sm) var(--cp-ease), opacity var(--cp-dur-sm) var(--cp-ease);
}
.cp-footer__list a:hover,
.cp-footer__list a:focus-visible { gap: 0.4em; }
.cp-footer__list a:hover::after,
.cp-footer__list a:focus-visible::after { width: 1em; opacity: 1; }

.cp-footer address {
  font-style: normal;
  font-size: var(--cp-step--1);
  line-height: 1.85;
  color: var(--cp-on-dark-soft);
}
.cp-footer address a { color: inherit; text-decoration: none; border-bottom: 1px solid var(--cp-rule-dark); }
.cp-footer address a:hover { color: var(--cp-azure-bright); border-bottom-color: currentColor; }
.cp-footer__contact-details {
  display: grid;
  gap: 0.8rem;
  margin: 0;
  padding: 0;
  list-style: none;
}
.cp-footer__contact-details li {
  display: grid;
  grid-template-columns: 1.35rem minmax(0, 1fr);
  align-items: start;
  gap: 0.65rem;
}
.cp-footer__contact-details address { line-height: 1.55; }
.cp-footer__contact-details a {
  color: var(--cp-on-dark-soft);
  font-size: var(--cp-step--1);
  line-height: 1.5;
  text-decoration: none;
  overflow-wrap: anywhere;
  transition: color var(--cp-dur-sm) var(--cp-ease);
}
.cp-footer__contact-details a:hover,
.cp-footer__contact-details a:focus-visible { color: var(--cp-azure-bright); }
.cp-footer__contact-icon {
  display: grid;
  width: 1.35rem;
  height: 1.35rem;
  place-items: center;
  border: 1px solid rgba(101, 184, 237, 0.3);
  border-radius: 50%;
  color: var(--cp-azure-bright);
}
.cp-footer__contact-icon svg { width: 0.78rem; height: 0.78rem; }
.cp-footer__abn {
  margin-top: var(--cp-space-sm);
  font-size: var(--cp-step--1);
  color: var(--cp-on-dark-faint);
}

/* --- legal bar --- */
.cp-footer__bar {
  border-top: 1px solid var(--cp-rule-dark);
  padding-block: 1.2rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--cp-space-sm) var(--cp-space-md);
  font-size: var(--cp-step--1);
  color: var(--cp-on-dark-faint);
}
.cp-footer__bar p { margin: 0; }
.cp-footer__legal { display: flex; flex-wrap: wrap; align-items: center; gap: 0.75rem 1.5rem; }
.cp-footer__legal-label {
  color: var(--cp-azure-bright);
  font-size: 0.67rem;
  font-weight: 600;
  letter-spacing: var(--cp-track-wide);
  text-transform: uppercase;
}
.cp-footer__legal-list { display: flex; flex-wrap: wrap; gap: 0.75rem 1.5rem; }
.cp-footer__legal a { color: inherit; text-decoration: none; }
.cp-footer__legal a:hover,
.cp-footer__legal a:focus-visible { color: var(--cp-on-dark); text-decoration: underline; text-underline-offset: 0.25em; }

@media (max-width: 39.999rem) {
  .cp-footer__identity { align-items: flex-start; }
  .cp-footer__bar { align-items: flex-start; flex-direction: column; }
}

/* Compact photographic footer — the current shipped treatment. */
.cp-footer.cp-footer--image {
  isolation: isolate;
  background: #07142e;
}
.cp-footer.cp-footer--image::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    linear-gradient(90deg, rgba(5, 14, 34, 0.91) 0%, rgba(8, 27, 61, 0.78) 48%, rgba(4, 13, 31, 0.91) 100%),
    linear-gradient(180deg, rgba(7, 18, 42, 0.18) 0%, rgba(7, 18, 42, 0.76) 100%);
}
.cp-footer--image .cp-footer__bg {
  position: absolute;
  inset: 0;
  z-index: -2;
  overflow: hidden;
  pointer-events: none;
}
.cp-footer--image .cp-footer__bg .cp-media,
.cp-footer--image .cp-footer__bg .cp-media__picture,
.cp-footer--image .cp-footer__bg .cp-media__img {
  width: 100%;
  height: 100%;
}
.cp-footer--image .cp-footer__bg .cp-media__img {
  object-fit: cover;
  object-position: center 48%;
  opacity: 0.78;
  filter: saturate(0.78) contrast(0.96);
}
.cp-footer--image .cp-footer__bg .cp-media__tint { display: none; }

.cp-footer.cp-footer--image .cp-footer__inner {
  padding-top: clamp(2.5rem, 1.9rem + 1.9vw, 3.75rem);
  padding-bottom: 0;
}
.cp-footer.cp-footer--image .cp-footer__grid {
  grid-template-columns: 1fr;
  align-items: start;
  gap: 1.75rem;
  padding: 0 0 clamp(2rem, 1.45rem + 1.7vw, 3rem);
}
.cp-footer--image .cp-footer__brand-column { padding-top: 0.1rem; }
.cp-footer--image .cp-footer__brand img {
  height: clamp(2.7rem, 2.35rem + 1.2vw, 3.65rem);
}
.cp-footer--image .cp-footer__title {
  margin-bottom: 0.9rem;
  padding-bottom: 0;
  border-bottom: 0;
  color: #fff;
  font-size: 0.68rem;
  font-weight: 650;
}
.cp-footer--image .cp-footer__list li + li { margin-top: 0.42rem; }
.cp-footer--image .cp-footer__list a,
.cp-footer--image .cp-footer__list span,
.cp-footer--image address {
  color: rgba(239, 245, 253, 0.82);
  font-size: 0.86rem;
}
.cp-footer.cp-footer--image .cp-footer__bar {
  padding-block: 1rem;
  border-top-color: rgba(229, 240, 252, 0.36);
  color: rgba(229, 238, 250, 0.76);
}

@media (min-width: 40rem) {
  .cp-footer.cp-footer--image .cp-footer__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 2rem 3rem;
  }
}
@media (min-width: 22rem) and (max-width: 39.999rem) {
  .cp-footer.cp-footer--image .cp-footer__grid {
    grid-template-columns: minmax(7rem, 0.72fr) minmax(0, 1.28fr);
    gap: 1.8rem 1.5rem;
  }
  .cp-footer--image .cp-footer__brand-column,
  .cp-footer--image .cp-footer__contact { grid-column: 1 / -1; }
}
@media (min-width: 68rem) {
  .cp-footer.cp-footer--image .cp-footer__grid {
    grid-template-columns: minmax(12rem, 0.9fr) minmax(9rem, 0.62fr) minmax(18rem, 1.35fr) minmax(12rem, 0.8fr);
    gap: clamp(2.5rem, 1.2rem + 3vw, 5rem);
  }
}
@media (max-width: 39.999rem) {
  .cp-footer--image .cp-footer__bg .cp-media__img { object-position: 62% center; }
  .cp-footer.cp-footer--image::before { background: rgba(5, 16, 39, 0.9); }
}
