/* Theme base styles — ITCSS layering. Modules bring their own component CSS. */

/* Generic: fonts, reset, normalize */
/* Self-hosted brand fonts — no external font CDNs (GDPR + performance).
   Bould = primary (headlines, nav, buttons, body) · Ubuntu = secondary (eyebrows,
   highlight cards). Subset to latin (DE/EN), only the weights the site uses.

   Paths use get_asset_url with an ABSOLUTE Design-Manager path. Two things bite
   here: a plain relative url() resolves against the generated asset URL (404s
   on the domain root), and get_asset_url with a RELATIVE path returns an empty
   string once this file is {% include %}-ed into main.css. Absolute is the only
   form that survives the include. */


@font-face {
  font-family: "Bould";
  src: url('https://1652164.fs1.hubspotusercontent-na1.net/hubfs/1652164/raw_assets/public/mark-lotse-26/fonts/bould-400.woff2') format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap; /* swap, NOT optional: with `optional` the brand font lost the ~100ms
     race on every cold first visit and Chrome painted Arial permanently (measured via
     CDP getPlatformFontsForNode, 2026-08-22). The metrics-tuned fallbacks below keep the
     swap shift near zero, which is the right trade for a 1:1 brand build. */
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2190-2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Bould";
  src: url('https://1652164.fs1.hubspotusercontent-na1.net/hubfs/1652164/raw_assets/public/mark-lotse-26/fonts/bould-500.woff2') format("woff2");
  font-weight: 500;
  font-style: normal;
  font-display: swap; /* swap, NOT optional: with `optional` the brand font lost the ~100ms
     race on every cold first visit and Chrome painted Arial permanently (measured via
     CDP getPlatformFontsForNode, 2026-08-22). The metrics-tuned fallbacks below keep the
     swap shift near zero, which is the right trade for a 1:1 brand build. */
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2190-2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Bould";
  src: url('https://1652164.fs1.hubspotusercontent-na1.net/hubfs/1652164/raw_assets/public/mark-lotse-26/fonts/bould-600.woff2') format("woff2");
  font-weight: 600;
  font-style: normal;
  font-display: swap; /* swap, NOT optional: with `optional` the brand font lost the ~100ms
     race on every cold first visit and Chrome painted Arial permanently (measured via
     CDP getPlatformFontsForNode, 2026-08-22). The metrics-tuned fallbacks below keep the
     swap shift near zero, which is the right trade for a 1:1 brand build. */
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2190-2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Bould";
  src: url('https://1652164.fs1.hubspotusercontent-na1.net/hubfs/1652164/raw_assets/public/mark-lotse-26/fonts/bould-700.woff2') format("woff2");
  font-weight: 700;
  font-style: normal;
  font-display: swap; /* swap, NOT optional: with `optional` the brand font lost the ~100ms
     race on every cold first visit and Chrome painted Arial permanently (measured via
     CDP getPlatformFontsForNode, 2026-08-22). The metrics-tuned fallbacks below keep the
     swap shift near zero, which is the right trade for a 1:1 brand build. */
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2190-2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Ubuntu";
  src: url('https://1652164.fs1.hubspotusercontent-na1.net/hubfs/1652164/raw_assets/public/mark-lotse-26/fonts/ubuntu-400.woff2') format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap; /* swap, NOT optional: with `optional` the brand font lost the ~100ms
     race on every cold first visit and Chrome painted Arial permanently (measured via
     CDP getPlatformFontsForNode, 2026-08-22). The metrics-tuned fallbacks below keep the
     swap shift near zero, which is the right trade for a 1:1 brand build. */
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2190-2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Ubuntu";
  src: url('https://1652164.fs1.hubspotusercontent-na1.net/hubfs/1652164/raw_assets/public/mark-lotse-26/fonts/ubuntu-700.woff2') format("woff2");
  font-weight: 700;
  font-style: normal;
  font-display: swap; /* swap, NOT optional: with `optional` the brand font lost the ~100ms
     race on every cold first visit and Chrome painted Arial permanently (measured via
     CDP getPlatformFontsForNode, 2026-08-22). The metrics-tuned fallbacks below keep the
     swap shift near zero, which is the right trade for a 1:1 brand build. */
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2190-2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Metrics-tuned fallbacks — kill the font-swap layout shift (QA: home CLS 0.026).
   Computed from the shipped woff2 metrics (fonttools):
   Bould 400: upm 1000, hhea 1039/-249, avgW 522 → vs Arial (2048, 1854/-434, avgW ~904)
   size-adjust = 52.2% / 44.14% = 118.3%; overrides are relative to the adjusted size. */
@font-face {
  font-family: "Bould Fallback";
  src: local("Arial");
  size-adjust: 118.3%;
  ascent-override: 87.8%;
  descent-override: 21.1%;
  line-gap-override: 0%;
}
@font-face {
  font-family: "Bould Fallback";
  font-weight: 500;
  src: local("Arial");
  size-adjust: 119.6%;
  ascent-override: 87.7%;
  descent-override: 21.2%;
  line-gap-override: 0%;
}
@font-face {
  font-family: "Bould Fallback";
  font-weight: 600;
  src: local("Arial Bold"), local("Arial");
  size-adjust: 120.3%;
  ascent-override: 88%;
  descent-override: 21.3%;
  line-gap-override: 0%;
}
/* Bould Fallback bold face — weight-specific metrics (Bould 700: avgW 531,
   hhea 1067/-259) so the headline swap shifts ~0 (the 400-calibrated face
   under-adjusted bold glyphs; measured as the dominant CLS cause, 27 Aug). */
@font-face {
  font-family: "Bould Fallback";
  font-weight: 700;
  src: local("Arial Bold"), local("Arial");
  size-adjust: 120.3%;
  ascent-override: 88.7%;
  descent-override: 21.5%;
  line-gap-override: 0%;
}
@font-face {
  font-family: "Ubuntu Fallback";
  src: local("Arial");
  size-adjust: 145.7%;
  ascent-override: 64%;
  descent-override: 13%;
  line-gap-override: 2%;
}
*, *:before, *:after {
  box-sizing: border-box;
}
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */

/* Document
   ========================================================================== */

/**
 * 1. Correct the line height in all browsers.
 * 2. Prevent adjustments of font size after orientation changes in iOS.
 */

html {
  line-height: 1.15; /* 1 */
  -webkit-text-size-adjust: 100%; /* 2 */
}

/* Sections
   ========================================================================== */

/**
 * Remove the margin in all browsers.
 */

body {
  margin: 0;
}

/**
 * Correct the font size and margin on `h1` elements within `section` and
 * `article` contexts in Chrome, Firefox, and Safari.
 */

h1 {
  font-size: 2em;
  margin: 0.67em 0;
}

/* Grouping content
   ========================================================================== */

/**
 * Add the correct box sizing in Firefox.
 */

hr {
  box-sizing: content-box;
  height: 0;
}

/**
 * 1. Correct the inheritance and scaling of font size in all browsers.
 * 2. Correct the odd `em` font sizing in all browsers.
 */

pre {
  font-family: monospace, monospace; /* 1 */
  font-size: 1em; /* 2 */
}

/* Text-level semantics
   ========================================================================== */

/**
 * 1. Remove the bottom border in Chrome 57-
 * 2. Add the correct text decoration in Chrome, Edge, Opera, and Safari.
 */

abbr[title] {
  border-bottom: none; /* 1 */
  text-decoration: underline; /* 2 */
  text-decoration: underline dotted; /* 2 */
}

/**
 * Add the correct font weight in Chrome, Edge, and Safari.
 */

b,
strong {
  font-weight: bolder;
}

/**
 * 1. Correct the inheritance and scaling of font size in all browsers.
 * 2. Correct the odd `em` font sizing in all browsers.
 */

code,
kbd,
samp {
  font-family: monospace, monospace; /* 1 */
  font-size: 1em; /* 2 */
}

/**
 * Add the correct font size in all browsers.
 */

small {
  font-size: 80%;
}

/**
 * Prevent `sub` and `sup` elements from affecting the line height in
 * all browsers.
 */

sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sub {
  bottom: -0.25em;
}

sup {
  top: -0.5em;
}

/* Forms
   ========================================================================== */

/**
 * 1. Change the font styles in all browsers.
 * 2. Remove the margin in Firefox and Safari.
 */

button,
input,
optgroup,
select,
textarea {
  font-family: inherit; /* 1 */
  font-size: 100%; /* 1 */
  line-height: 1.15; /* 1 */
  margin: 0; /* 2 */
}

/**
 * Remove the inheritance of text transform in Edge and Firefox.
 * 1. Remove the inheritance of text transform in Firefox.
 */

button,
select { /* 1 */
  text-transform: none;
}

/**
 * Correct the inability to style clickable types in iOS and Safari.
 */

button,
[type="button"],
[type="reset"],
[type="submit"] {
  -webkit-appearance: button;
}

/**
 * Remove the inner border and padding in Firefox.
 */

button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
  border-style: none;
  padding: 0;
}

/**
 * Restore the focus styles unset by the previous rule.
 */

button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
  outline: 1px dotted ButtonText;
}

/**
 * Correct the padding in Firefox.
 */

fieldset {
  padding: 0.35em 0.75em 0.625em;
}

/**
 * Remove the padding so developers are not caught out when they zero out `fieldset` elements in all browsers.
 */

legend {
  padding: 0;
}

/**
 * Add the correct vertical alignment in Chrome, Firefox, and Opera.
 */

progress {
  vertical-align: baseline;
}

/**
 * Correct the cursor style of increment and decrement buttons in Chrome.
 */

[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
  height: auto;
}

/**
 * 1. Correct the odd appearance in Chrome and Safari.
 * 2. Correct the outline style in Safari.
 */

[type="search"] {
  -webkit-appearance: textfield; /* 1 */
  outline-offset: -2px; /* 2 */
}

/**
 * Remove the inner padding in Chrome and Safari on macOS.
 */

[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}

/**
 * 1. Correct the inability to style clickable types in iOS and Safari.
 * 2. Change font properties to `inherit` in Safari.
 */

::-webkit-file-upload-button {
  -webkit-appearance: button; /* 1 */
  font: inherit; /* 2 */
}

/* Interactive
   ========================================================================== */

/*
 * Add the correct display in Edge and Firefox.
 */

details {
  display: block;
}

/*
 * Add the correct display in all browsers.
 */

summary {
  display: list-item;
}

/* Objects: layout patterns */
/* Layout objects — container + section band pattern. */

.content-wrapper,
.ml-container {
  max-width: var(--ml-container);
  margin: 0 auto;
  padding: 0 20px;
}

@media (min-width: 768px) {
  .content-wrapper,
  .ml-container {
    padding: 0 40px;
  }
}

/* full-bleed band with contained inner content */
.ml-band {
  padding-left: 0;
  padding-right: 0;
}
.ml-band > .ml-container { width: 100%; }

.ml-band--soft { background: var(--ml-bg-soft); }
.ml-band--navy { background: var(--ml-navy); color: #fff; }
.ml-band--navy-deep { background: var(--ml-navy-deep); color: #fff; }

/* dnd area helpers kept from boilerplate naming */
.dnd-section {
  padding: 80px 20px;
}
@media (min-width: 768px) {
  .dnd-section {
    padding: 80px var(--ml-pad-x);
  }
}
.dnd-section > .row-fluid {
  max-width: var(--ml-container);
  margin: 0 auto;
}
/* DnD containers — modules own their own vertical rhythm, so sections add none. */

.dnd-section,
.dnd-section > .row-fluid {
  padding: 0;
  margin: 0;
}
.dnd-section > .row-fluid {
  max-width: none;
  width: 100%;
}
.dnd-column, .dnd-row { padding: 0; }

/* Elements: base HTML */
/* Base typography — Bould primary, tokens only. */

html {
  font-size: 16px;
}

body {
  font-family: var(--ml-font);
  font-size: var(--ml-fs-18);
  font-weight: 400;
  line-height: 1.5;
  color: var(--ml-ink);
  background-color: var(--ml-bg);
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4, h5, h6 {
  margin: 0 0 0.5em;
  font-family: var(--ml-font);
  color: inherit;
}

h1, .ml-h1 { font-size: var(--ml-fs-50); font-weight: 700; line-height: 1.15; }
h2, .ml-h2 { font-size: var(--ml-fs-34); font-weight: 700; line-height: 1.2; }
h3, .ml-h3 { font-size: var(--ml-fs-30); font-weight: 600; line-height: 1.25; }
h4, .ml-h4 { font-size: var(--ml-fs-26); font-weight: 600; line-height: 1.3; }
h5, .ml-h5 { font-size: var(--ml-fs-21); font-weight: 600; line-height: 1.35; }
h6, .ml-h6 { font-size: var(--ml-fs-18); font-weight: 700; line-height: 1.15; text-transform: uppercase; }

/* display size for the hero on wide screens */
.ml-display { font-size: var(--ml-fs-50); font-weight: 700; line-height: 1.1; }
@media (min-width: 1200px) {
  .ml-display--xl { font-size: var(--ml-fs-86); line-height: 1.15; }
}

p {
  margin: 0 0 1em;
}

a {
  color: inherit;
  text-decoration-thickness: from-font;
  text-underline-position: from-font;
}

a:hover {
  color: var(--ml-red);
}

strong { font-weight: 700; }

/* eyebrow / kicker — Ubuntu Bold 12, wide tracking (Figma pattern) */
.ml-eyebrow {
  display: block;
  font-family: var(--ml-font-2);
  font-size: var(--ml-fs-12);
  font-weight: 700;
  letter-spacing: var(--ml-ls-eyebrow);
  text-transform: uppercase;
  color: var(--ml-muted);
}
.ml-eyebrow--on-dark { color: var(--ml-accent-soft); }
.ml-eyebrow--red {
  font-family: var(--ml-font-2);
  font-size: var(--ml-fs-13);
  font-weight: 700;
  letter-spacing: var(--ml-ls-eyebrow-2);
  text-transform: uppercase;
  /* --ml-accent (#e63946) is only 4.17:1 on white and this runs at 13px bold,
     which does not qualify for the large-text exemption. --ml-red is 5.06:1.
     Deliberate, documented divergence from the Figma value on a11y grounds. */
  color: var(--ml-red);
}

/* body copy on dark bands */
.ml-on-dark { color: var(--ml-bg); }
.ml-on-dark .ml-eyebrow { color: var(--ml-accent-soft); }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}
/* Buttons — square (no radius), Bould Medium 18, tracking .7, uppercase.
   Variants map 1:1 to the Figma CTA component:
   primary = red bg / white text · light = white bg / navy-ink text (on dark bands)
   ghost   = transparent + 1px Cosmos border (hero secondary)              */

/* Single-class selector on purpose: element-qualified selectors (a.ml-btn)
   outrank the .ml-btn--* variants and silently kill their border/background. */
.ml-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  min-height: 50px;
  padding: 12px 28px;
  border: 0;
  border-radius: 0;
  font-family: var(--ml-font);
  font-size: var(--ml-fs-18);
  font-weight: 500;
  letter-spacing: var(--ml-ls-tight);
  line-height: 1.2;
  text-align: center;
  text-transform: uppercase;
  text-decoration: none;
  cursor: pointer;
  transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

.ml-btn--primary {
  background: var(--ml-red);
  color: var(--ml-bg);
}
.ml-btn--primary:hover,
.ml-btn--primary:focus-visible {
  background: var(--ml-red-hover);
  color: var(--ml-bg);
}

.ml-btn--light {
  background: var(--ml-bg);
  color: var(--ml-navy-ink);
}
.ml-btn--light:hover,
.ml-btn--light:focus-visible {
  background: var(--ml-muted);
  color: var(--ml-navy-ink);
}

.ml-btn--ghost {
  background: transparent;
  color: var(--ml-bg);
  border: 1px solid var(--ml-accent-tint);
  padding: 12px 28px;
}
.ml-btn--ghost:hover,
.ml-btn--ghost:focus-visible {
  background: var(--ml-white-30);
}

.ml-btn .ml-btn__icon {
  display: inline-flex;
  width: 20px;
  height: 20px;
}
.ml-btn > span:first-child { min-width: 0; overflow-wrap: anywhere; }
.ml-btn .ml-btn__icon svg { width: 100%; height: 100%; }
/* Fields */

.hs-form-field {
  margin-bottom: 1.4rem;
}

/* Labels */

form label {
  display: block;
  font-size: 0.875rem;
  margin-bottom: 0.35rem;
}

/* Form Title */
.form-title {
  margin-bottom: 0;
}

/* Help text */

form legend {
  font-size: 0.875rem;
}

/* Inputs */

form input[type=text],
form input[type=search],
form input[type=email],
form input[type=password],
form input[type=tel],
form input[type=number],
form input[type=file],
form select,
form textarea {
  display: inline-block;
  font-size: 0.875rem;
  padding: 0.7rem;
  width: 100%;
}

form textarea {
  resize: vertical;
}

form fieldset {
  max-width: 100% !important;
}

/* Inputs - checkbox/radio */

form .inputs-list {
  margin: 0;
  padding: 0;
  list-style: none;
}

form .inputs-list > li {
  display: block;
  margin: 0.7rem 0;
}

form .inputs-list input,
form .inputs-list span {
  vertical-align: middle;
}

form input[type=checkbox],
form input[type=radio] {
  cursor: pointer;
  margin-right: 0.35rem;
}

/* Inputs - date picker */

.hs-dateinput {
  position: relative;
}

.hs-dateinput:before {
  content:'\01F4C5';
  position: absolute;
  right: 10%;
  top: 50%;
  transform: translateY(-50%);
}

.fn-date-picker .pika-table thead th {
  color: #FFF;
}

.fn-date-picker td.is-selected .pika-button {
  border-radius: 0;
  box-shadow: none;
}

.fn-date-picker td .pika-button:hover,
.fn-date-picker td .pika-button:focus {
  border-radius: 0 !important;
  color: #FFF;
}

/* Inputs - file picker */

form input[type=file] {
  background-color: transparent;
  border: initial;
  padding: initial;
}

/* Headings and text */

form .hs-richtext,
form .hs-richtext p {
  font-size: 0.875rem;
  margin: 0 0 1.4rem;
}

form .hs-richtext img {
  max-width: 100% !important;
}

/* GDPR */

.legal-consent-container .hs-form-booleancheckbox-display > span,
.legal-consent-container .hs-form-booleancheckbox-display > span p {
  margin-left: 1rem !important;
}

/* Validation */

.hs-form-required {
  color: var(--ml-red);
}

.hs-input.invalid.error {
  border-color: var(--ml-red);
}

.hs-error-msg {
  color: var(--ml-red);
  margin-top: 0.35rem;
}

/* Submit button */

form input[type=submit],
form .hs-button {
  cursor: pointer;
  display: inline-block;
  text-align: center;
  transition: all 0.15s linear;
  white-space: normal;
}

/* Captcha */

.grecaptcha-badge {
  margin: 0 auto;
}


/* Table */

table {
  border-collapse: collapse;
  margin-bottom: 1.4rem;
  overflow-wrap: break-word;
}

/* Table cells */

td,
th {
  vertical-align: top;
}

/* Table header */

thead th {
  vertical-align: bottom;
}

/* Components: global partials (header/footer) */
/* Header wrapper — transparent overlay above the hero band. */
.ml-header {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  z-index: 50;
}
/* Footer — Figma 29:9584. Navy #001233, 12px Comet top border, bottom bar Ebony. */

.ml-footer {
  background: var(--ml-navy);
  border-top: 12px solid var(--ml-ink-soft);
  color: var(--ml-bg);
  padding-top: 44px;
}
.ml-footer a { color: var(--ml-bg); text-decoration: none; }
.ml-footer a:hover { color: var(--ml-accent-soft); }

.ml-footer__container { padding-top: 16px; padding-bottom: 16px; }

.ml-footer__logo { display: inline-flex; width: 221px; height: 41px; margin-bottom: 40px; }
.ml-footer__logo svg,
.ml-footer__logo img { width: 100%; height: 100%; }

.ml-footer__main {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 40px;
  padding-bottom: 64px;
}

.ml-footer__menu-title,
.ml-footer__office-title {
  font-size: var(--ml-fs-18);
  font-weight: 700;
  line-height: 20.7px;
  text-transform: uppercase;
  margin: 0 0 12px;
}
.ml-footer__col ul { margin: 0 0 32px; padding: 0; list-style: none; }
.ml-footer__col li { padding-bottom: 16px; }
.ml-footer__col li a { font-size: var(--ml-fs-18); line-height: 20.7px; }
.ml-footer__menu-group + .ml-footer__menu-group { margin-top: 40px; }
.ml-footer__menu-title--standalone { margin-bottom: 32px; }

.ml-footer__office { margin-bottom: 40px; }
.ml-footer__office p { margin: 0 0 12px; font-size: var(--ml-fs-18); line-height: 20.7px; }
.ml-footer__office a { text-decoration: underline; text-underline-position: from-font; }

.ml-footer__social {
  display: flex;
  gap: 10px;
  margin: 56px 0 0;
  padding: 0;
  list-style: none;
}
.ml-footer__social a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 60px;
  height: 60px;
  border-radius: var(--ml-round-pill);
  background: var(--ml-bg);
  color: var(--ml-navy);
}
.ml-footer__social a:hover { background: var(--ml-accent-soft); color: var(--ml-navy); }
.ml-footer__social .ml-icon svg { width: 100%; height: 100%; }

.ml-footer__bottom { background: var(--ml-navy-deep); }
.ml-footer__bottom-inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding-top: 32px;
  padding-bottom: 32px;
}
.ml-footer__copyright { margin: 0; font-size: var(--ml-fs-16); line-height: 18.4px; }
.ml-footer__legal {
  display: flex;
  flex-wrap: wrap;
  gap: 0;
  margin: 0;
  padding: 0;
  list-style: none;
}
.ml-footer__legal li { padding: 0 16px; border-right: 1px solid var(--ml-white-30); }
.ml-footer__legal li:last-child { border-right: 0; padding-right: 0; }
.ml-footer__legal a {
  font-size: var(--ml-fs-16);
  font-weight: 700;
  line-height: 18.4px;
  text-transform: uppercase;
  text-decoration: underline;
  text-underline-position: from-font;
}

@media (max-width: 767px) {
  .ml-footer__main { grid-template-columns: 1fr; gap: 8px; }
  .ml-footer__bottom-inner { flex-direction: column; align-items: flex-start; }
  .ml-footer__legal { row-gap: 12px; }
  .ml-footer__legal li:first-child { padding-left: 0; }
}

/* Utilities */
/* For content that needs to be visually hidden but stay visible for screenreaders */

.show-for-sr {
  border: 0 !important;
  clip: rect(0, 0, 0, 0) !important;
  height: 1px !important;
  overflow: hidden !important;
  padding: 0 !important;
  position: absolute !important;
  white-space: nowrap !important;
  width: 1px !important;
}

@media (max-width: 767px) {
  .show-for-sr--mobile {
    border: 0 !important;
    clip: rect(0, 0, 0, 0) !important;
    height: 1px !important;
    overflow: hidden !important;
    padding: 0 !important;
    position: absolute !important;
    white-space: nowrap !important;
    width: 1px !important;
  }
}
/* Skip link — visible on focus only */
.ml-skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 100;
  padding: 12px 20px;
  background: var(--ml-navy);
  color: #fff;
  font-family: var(--ml-font);
  font-size: var(--ml-fs-16);
}
.ml-skip-link:focus-visible {
  left: 0;
}

/* Inline icon sizes are deliberately finite so the macro never emits styles. */
.ml-icon { display: inline-flex; align-items: center; justify-content: center; }
.ml-icon--20 { width: 20px; height: 20px; }
.ml-icon--24 { width: 24px; height: 24px; }
.ml-icon svg { display: block; max-width: 100%; max-height: 100%; }
/* Band vertical rhythm — editor-overridable via Styles > Padding.
   Scale: none=0 · s=64/40 · default(Figma)=120/64 · l=160/88 (desktop/mobile).
   Modules consume var(--band-pt/--band-pb) with their own Figma default as
   fallback; these utilities only SET the variables (mobile via the -sm pair). */
.ml-pt-none { --band-pt: 0px;   --band-pt-sm: 0px; }
.ml-pt-s    { --band-pt: 64px;  --band-pt-sm: 40px; }
.ml-pt-l    { --band-pt: 160px; --band-pt-sm: 88px; }
.ml-pb-none { --band-pb: 0px;   --band-pb-sm: 0px; }
.ml-pb-s    { --band-pb: 64px;  --band-pb-sm: 40px; }
.ml-pb-l    { --band-pb: 160px; --band-pb-sm: 88px; }

/* Motion hygiene — kill decorative transforms for reduced-motion users */
@media (prefers-reduced-motion: reduce) {
  .ml-card, .ml-vcard, .ml-industry, .ml-stat { transition: none; }
  .ml-card:hover, .ml-vcard:hover, .ml-industry:hover, .ml-stat:hover,
  .ml-card:focus-visible, .ml-vcard:focus-visible, .ml-industry:focus-visible, .ml-stat:focus-visible { transform: none; }
}