@charset "UTF-8";
/**
 * Main stylesheet for the theme.
 *
 * Theme styles follow http://cssguidelin.es/ and are organized according to
 * Inverted Triangle CSS (ITCSS) principles put forth by Harry Roberts. In
 * short, each layer of CSS gets more specific as you move down this page.
 */
/*--------------------------------------------------------------
# Settings - Global variables, config switches.
--------------------------------------------------------------*/
:root {
  /* colors.
   *
   * All colors related variables.
   *
  * */
  /* Brand */
  --color-stravent: #132b6a;
  --color-blue: #0059ce;
  --color-blue-dark: #27283f;
  --color-blue-light: #3c90ff;
  --color-white: #ffffff;
  /* Supplementary */
  --color-grey-600: #6e6c6a;
  --color-grey-500: #b8b3b0;
  --color-grey-400: #efefef;
  --color-grey-200: #f7f7f7;
  --color-blue-500: #596072;
  --color-blue-wisper: #f0f7ff;
  --color-blue-extralight: #afd2ff;
  /* Opacity */
  --color-black-10: #0202021a;
  --color-black-5: #0202020d;
  /* System */
  --color-system-error: #e16059;
  --color-system-success: #76c570;
  /* Text colors. */
  --color-text: var(--color-black);
  --color-link: var(--color-blue);
  --color-text-primary: var(--color-blue-dark);
  --color-text-primary-invert: var(--color-white);
  --color-text-secondary: var(--color-blue-500);
  --color-text-link-primary: var(--color-white);
  --color-text-link-secondary: var(--color-blue);
  --color-text-secondary-invert: var(--color-blue-extralight);
  /* Background colors. */
  --color-background: #fff;
  --color-background-primary: var(--color-white);
  --color-background-primary-invert: var(--color-blue-dark);
  --color-background-secondary: var(--color-stravent);
  /* Border colors. */
  --color-border: var(--color-grey-100);
  --color-border-primary: var(--color-grey-400);
  --color-border-secondary: var(--color-black-5);
  /* Form colors. */
  --color-form-text: var(--color-text);
  --color-form-border: var(--color-border);
  --color-form-background: var(--color-grey-100);
  --color-form-focus: var(--color-secondary-500);
  --color-form-error: var(--color-error);
  /* Legacy colors. */
  --color-primary-500: var(--color-blue);
  --color-secondary-700: #025f88;
  --color-secondary-500: #039fe2;
  --color-grey-900: #1a1a1a;
  --color-grey-700: #4d4d4d;
  --color-grey-300: #b3b3b3;
  --color-grey-100: #e6e6e6;
  --color-grey-050: #f2f2f2;
  --color-black: #000;
  --color-success: #219653;
  --color-error: #e73232;
  /* Font sizes. */
  --heading-600: clamp(2.25rem, 1.9090909091rem + 1.3636363636vw, 3rem);
  --heading-500: clamp(1.75rem, 1.4090909091rem + 1.3636363636vw, 2.5rem);
  --heading-400: clamp(1.5rem, 1.2727272727rem + 0.9090909091vw, 2rem);
  --heading-300: clamp(1.25rem, 1.0795454545rem + 0.6818181818vw, 1.625rem);
  --heading-200: clamp(1.25rem, 1.1363636364rem + 0.4545454545vw, 1.5rem);
  --text-610: clamp(1.25rem, 1.25rem + 0vw, 1.25rem);
  --text-600: clamp(1.25rem, 1.25rem + 0vw, 1.25rem);
  --text-510: clamp(1rem, 0.9431818182rem + 0.2272727273vw, 1.125rem);
  --text-500: clamp(0.9375rem, 0.8522727273rem + 0.3409090909vw, 1.125rem);
  --text-410: clamp(0.875rem, 0.8181818182rem + 0.2272727273vw, 1rem);
  --text-400: clamp(0.875rem, 0.8181818182rem + 0.2272727273vw, 1rem);
  --text-310: clamp(0.75rem, 0.6931818182rem + 0.2272727273vw, 0.875rem);
  --text-300: clamp(0.75rem, 0.6931818182rem + 0.2272727273vw, 0.875rem);
  --text-200: clamp(0.6875rem, 0.6590909091rem + 0.1136363636vw, 0.75rem);
  --text-tag: clamp(0.75rem, 0.7215909091rem + 0.1136363636vw, 0.8125rem);
  --text-nav: clamp(0.875rem, 0.8181818182rem + 0.2272727273vw, 1rem);
  --text-btn: clamp(0.75rem, 0.6363636364rem + 0.4545454545vw, 1rem);
  --font-family-title: 'Inter', -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif;
  --font-family-base: 'Inter', -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif;
  --line-height-heading: 1.2;
  --line-height-body: 1.5;
  /* Spacing.
   *
   * Generate new values using the following link.
   *
   * @link https://utopia.fyi/space/calculator/?c=390,16,1.2,1280,32,1.25,5,2,&s=0.75|0.62|0.5|0.35|0.25|0.125,1.24|1.5|1.74|1.98|2.22|2.48|2.97|3.97|4.96|5.96|6.95|7.95,s-l|xs-5xl&g=s,l,xl,12
  * */
  --space-6xs: clamp(0.125rem, 0.0702rem + 0.2247vw, 0.25rem);
  --space-5xs: clamp(0.25rem, 0.1404rem + 0.4494vw, 0.5rem);
  --space-4xs: clamp(0.375rem, 0.2381rem + 0.5618vw, 0.6875rem);
  --space-3xs: clamp(0.5rem, 0.2809rem + 0.8989vw, 1rem);
  --space-2xs: clamp(0.625rem, 0.3511rem + 1.1236vw, 1.25rem);
  --space-xs: clamp(0.75rem, 0.4213rem + 1.3483vw, 1.5rem);
  --space-s: clamp(1rem, 0.5618rem + 1.7978vw, 2rem);
  --space-m: clamp(1.25rem, 0.7022rem + 2.2472vw, 2.5rem);
  --space-l: clamp(1.5rem, 0.8427rem + 2.6966vw, 3rem);
  --space-xl: clamp(1.75rem, 0.9831rem + 3.1461vw, 3.5rem);
  --space-2xl: clamp(2rem, 1.151rem + 3.4831vw, 3.9375rem);
  --space-3xl: clamp(2.25rem, 1.2914rem + 3.9326vw, 4.4375rem);
  --space-4xl: clamp(2.5rem, 1.4319rem + 4.382vw, 4.9375rem);
  --space-5xl: clamp(3rem, 1.7128rem + 5.2809vw, 5.9375rem);
  --space-6xl: clamp(4rem, 2.2746rem + 7.0787vw, 7.9375rem);
  --space-7xl: clamp(4.9375rem, 2.7465rem + 8.9888vw, 9.9375rem);
  --space-8xl: clamp(5.9375rem, 3.3083rem + 10.7865vw, 11.9375rem);
  --space-9xl: clamp(6.9375rem, 3.8975rem + 12.4719vw, 13.875rem);
  --space-10xl: clamp(7.9375rem, 4.4593rem + 14.2697vw, 15.875rem);
  /* One-up pairs */
  --space-6xs-5xs: clamp(0.125rem, -0.0393rem + 0.6742vw, 0.5rem);
  --space-5xs-4xs: clamp(0.25rem, 0.0583rem + 0.7865vw, 0.6875rem);
  --space-4xs-3xs: clamp(0.375rem, 0.1011rem + 1.1236vw, 1rem);
  --space-3xs-2xs: clamp(0.5rem, 0.1713rem + 1.3483vw, 1.25rem);
  --space-2xs-xs: clamp(0.625rem, 0.2416rem + 1.573vw, 1.5rem);
  --space-xs-s: clamp(0.75rem, 0.2022rem + 2.2472vw, 2rem);
  --space-s-m: clamp(1rem, 0.3427rem + 2.6966vw, 2.5rem);
  --space-m-l: clamp(1.25rem, 0.4831rem + 3.1461vw, 3rem);
  --space-l-xl: clamp(1.5rem, 0.6236rem + 3.5955vw, 3.5rem);
  --space-xl-2xl: clamp(1.75rem, 0.7914rem + 3.9326vw, 3.9375rem);
  --space-2xl-3xl: clamp(2rem, 0.9319rem + 4.382vw, 4.4375rem);
  --space-3xl-4xl: clamp(2.25rem, 1.0723rem + 4.8315vw, 4.9375rem);
  --space-4xl-5xl: clamp(2.5rem, 0.9937rem + 6.1798vw, 5.9375rem);
  --space-5xl-6xl: clamp(3rem, 0.8364rem + 8.8764vw, 7.9375rem);
  --space-6xl-7xl: clamp(4rem, 1.3982rem + 10.6742vw, 9.9375rem);
  --space-7xl-8xl: clamp(4.9375rem, 1.8701rem + 12.5843vw, 11.9375rem);
  --space-8xl-9xl: clamp(5.9375rem, 2.4593rem + 14.2697vw, 13.875rem);
  --space-9xl-10xl: clamp(6.9375rem, 3.0211rem + 16.0674vw, 15.875rem);
  /* Custom pairs */
  --space-s-l: clamp(1rem, 0.1236rem + 3.5955vw, 3rem);
  --space-xs-5xl: clamp(0.75rem, -1.5232rem + 9.3258vw, 5.9375rem);
  --side-padding: var(--space-xs-5xl);
  /* Height of the fixed site header.
   *
   * The header is `position: fixed`, so it does not reserve any space of its
   * own — 05-layouts/_spacings.scss pushes the page down by this instead.
   * Provisional: it tracks whatever the header content happens to be, so it
   * needs revisiting when the real navigation lands.
  * */
  --header-height: 8.31125rem;
  --space-default: var(--space-4xl);
  --gutter: var(--space-s);
  --text-margin: 1.3em;
  /* Widths.
   *
   * All widths related variables.
   *
  * */
  --max-width-site: 120rem;
  --max-width-container: 80rem;
  --max-width-medium: calc(var(--max-width-container) * 0.59375);
  --max-width-regular: calc(var(--max-width-container) * 0.515625);
  --width-wide: clamp(min(50rem, 100%), 100%, var(--max-width-container));
  --width-medium: clamp(min(40rem, 100%), 59.375%, var(--max-width-medium));
  --width-regular: clamp(min(41.25rem, 100%), 51.5625%, var(--max-width-regular));
  /* Miscellanious.
  *
  * All miscellanious variables.
  *
  * */
  --transition-2: 0.2s;
  --underline-box-shadow: inset 0 -0.125rem 0 var(--color-blue-light);
  --radius-minimal: 0.25rem;
  --radius-xs: 0.25rem;
  --radius-s: 0.5rem;
  --radius-xl: 1.25rem;
  /* HubSpot form variables.
   *
   * The new form renderer reads every value as
   * `var(--hsf-x, var(--hsf-default-x))`, so setting `--hsf-x` here themes it.
   * The file field has no variables at all — it is styled in
   * 04-elements/_form.scss instead.
  * */
  --hsf-global__font-family: var(--font-family-base);
  --hsf-global__font-size: var(--text-300);
  --hsf-global__color: var(--color-text-primary);
  --hsf-global__error-color: var(--color-system-error);
  --hsf-heading__font-family: var(--font-family-title);
  --hsf-heading__color: var(--color-text-primary);
  --hsf-richtext__font-family: var(--font-family-base);
  --hsf-richtext__font-size: var(--text-300);
  --hsf-richtext__color: var(--color-text-secondary);
  /* Labels render as tag chips. Only type is settable here; the chip
     background, border and padding come from _form.scss. */
  --hsf-field-label__font-family: var(--font-family-base);
  --hsf-field-label__font-size: var(--text-200);
  --hsf-field-label__color: var(--color-text-primary);
  --hsf-field-label-requiredindicator__color: var(--color-system-error);
  --hsf-field-input__font-family: var(--font-family-base);
  --hsf-field-input__font-size: var(--text-300);
  --hsf-field-input__color: var(--color-text-primary);
  --hsf-field-input__background-color: var(--color-background-primary);
  --hsf-field-input__border-color: var(--color-border-primary);
  --hsf-field-input__border-style: solid;
  --hsf-field-input__border-width: 0.0625rem;
  --hsf-field-input__border-radius: 0;
  --hsf-field-input__padding: var(--space-3xs);
  --hsf-field-input__placeholder-color: var(--color-text-secondary);
  --hsf-field-textarea__font-family: var(--font-family-base);
  --hsf-field-textarea__font-size: var(--text-300);
  --hsf-field-textarea__color: var(--color-text-primary);
  --hsf-field-textarea__background-color: var(--color-background-primary);
  --hsf-field-textarea__border-color: var(--color-border-primary);
  --hsf-field-textarea__border-style: solid;
  --hsf-field-textarea__border-width: 0.0625rem;
  --hsf-field-textarea__border-radius: 0;
  --hsf-field-textarea__padding: var(--space-3xs);
  --hsf-field-textarea__placeholder-color: var(--color-text-secondary);
  /* Checkbox and radio: light blue when empty, stronger blue once chosen.
     `color` is the checkmark. */
  --hsf-field-checkbox__color: var(--color-blue);
  --hsf-field-checkbox__background-color: var(--color-blue-wisper);
  --hsf-field-checkbox__border-color: var(--color-blue-extralight);
  --hsf-field-checkbox__border-style: solid;
  --hsf-field-checkbox__border-width: 0.0625rem;
  --hsf-field-checkbox__padding: 0;
  --hsf-field-radio__color: var(--color-blue);
  --hsf-field-radio__background-color: var(--color-blue-wisper);
  --hsf-field-radio__border-color: var(--color-blue-extralight);
  --hsf-field-radio__border-style: solid;
  --hsf-field-radio__border-width: 0.0625rem;
  --hsf-field-radio__padding: 0;
  --hsf-field-description__font-family: var(--font-family-base);
  --hsf-field-description__font-size: var(--text-200);
  --hsf-field-description__color: var(--color-text-secondary);
  --hsf-field-footer__font-family: var(--font-family-base);
  --hsf-field-footer__font-size: var(--text-200);
  --hsf-field-footer__color: var(--color-text-secondary);
  --hsf-field-dropdown-options__border-radius: 0;
  --hsf-erroralert__font-family: var(--font-family-base);
  --hsf-erroralert__font-size: var(--text-200);
  --hsf-erroralert__color: var(--color-system-error);
  --hsf-infoalert__font-family: var(--font-family-base);
  --hsf-infoalert__font-size: var(--text-200);
  --hsf-infoalert__color: var(--color-text-secondary);
  /* Submit button is always the primary blue one. */
  --hsf-button__font-family: var(--font-family-base);
  --hsf-button__font-size: var(--text-btn);
  --hsf-button__font-weight: 500;
  --hsf-button__color: var(--color-text-primary-invert);
  --hsf-button__background-color: var(--color-blue);
  --hsf-button__background-image: none;
  --hsf-button__border-color: var(--color-blue);
  --hsf-button__border-style: solid;
  --hsf-button__border-width: 0;
  --hsf-button__border-radius: 0;
  --hsf-button__padding: var(--space-4xs) var(--space-3xs);
  --hsf-button__box-shadow: none;
  --hsf-button__width: auto;
  --hsf-button--hover__color: var(--color-text-primary-invert);
  --hsf-button--hover__background-color: var(--color-stravent);
  --hsf-button--hover__border-color: var(--color-stravent);
  --hsf-button--focus__color: var(--color-text-primary-invert);
  --hsf-button--focus__background-color: var(--color-stravent);
  --hsf-button--focus__border-color: var(--color-stravent);
  /* The module supplies its own background and padding. */
  --hsf-background__background-color: transparent;
  --hsf-background__background-image: none;
  --hsf-background__border-color: transparent;
  --hsf-background__border-style: none;
  --hsf-background__border-width: 0;
  --hsf-background__border-radius: 0;
  --hsf-background__padding: 0;
  --hsf-row__vertical-spacing: var(--space-2xs);
  --hsf-row__horizontal-spacing: var(--space-4xs);
  --hsf-module__vertical-spacing: var(--space-2xs);
  --hsf-navigationrow-buttons__justify-content: start;
  --hsf-navigationrow-buttons-single__justify-content: start;
}
@media (max-width: 60rem) {
  :root {
    --header-height: 7.449375rem;
  }
}
@media (max-width: 37.5rem) {
  :root {
    --header-height: 7.1875rem;
  }
}

/*
Example how to add a font-face.
Other than woff2 and woff are not necessary.

@font-face {
    font-display: swap;
    font-family: font-name;
    font-style: normal;
    font-weight: 400;
    src:
        url(../fonts/font-name.woff2) format("woff2"),
        url(../fonts/font-name.woff) format("woff"), // Modern Browsers
}
*/
/*--------------------------------------------------------------
# Generic - Ground-zero styles (resets, box-sizing, etc.).
--------------------------------------------------------------*/
/*! normalize.css v8.0.0 | 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
   ========================================================================== */
/**
 * 1. Add the correct box sizing in Firefox.
 * 2. Show the overflow in Edge and IE.
 */
hr {
  box-sizing: content-box; /* 1 */
  height: 0; /* 1 */
  overflow: visible; /* 2 */
}

/**
 * 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
   ========================================================================== */
/**
 * Remove the gray background on active links in IE 10.
 */
a {
  background-color: transparent;
}

/**
 * 1. Remove the bottom border in Chrome 57-
 * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
 */
abbr[title] {
  border-bottom: none; /* 1 */
  text-decoration: underline; /* 2 */
  -webkit-text-decoration: underline dotted;
          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;
}

/* Embedded content
   ========================================================================== */
/**
 * Remove the border on images inside links in IE 10.
 */
img {
  border-style: none;
}

/* 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 */
}

/**
 * Show the overflow in IE.
 * 1. Show the overflow in Edge.
 */
button,
input { /* 1 */
  overflow: visible;
}

/**
 * Remove the inheritance of text transform in Edge, Firefox, and IE.
 * 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;
}

/**
 * 1. Correct the text wrapping in Edge and IE.
 * 2. Correct the color inheritance from `fieldset` elements in IE.
 * 3. Remove the padding so developers are not caught out when they zero out
 *    `fieldset` elements in all browsers.
 */
legend {
  box-sizing: border-box; /* 1 */
  color: inherit; /* 2 */
  display: table; /* 1 */
  max-width: 100%; /* 1 */
  padding: 0; /* 3 */
  white-space: normal; /* 1 */
}

/**
 * Add the correct vertical alignment in Chrome, Firefox, and Opera.
 */
progress {
  vertical-align: baseline;
}

/**
 * Remove the default vertical scrollbar in IE 10+.
 */
textarea {
  overflow: auto;
}

/**
 * 1. Add the correct box sizing in IE 10.
 * 2. Remove the padding in IE 10.
 */
[type=checkbox],
[type=radio] {
  box-sizing: border-box; /* 1 */
  padding: 0; /* 2 */
}

/**
 * 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, IE 10+, and Firefox.
 */
details {
  display: block;
}

/*
 * Add the correct display in all browsers.
 */
summary {
  display: list-item;
}

/* Misc
   ========================================================================== */
/**
 * Add the correct display in IE 10+.
 */
template {
  display: none;
}

/**
 * Add the correct display in IE 10.
 */
[hidden] {
  display: none;
}

html, body {
  height: 100%;
}

html {
  box-sizing: border-box;
  background: var(--color-background);
}
@media (max-width: 60rem) {
  html.main-menu-open {
    overflow: hidden;
  }
}

*,
*:before,
*:after {
  box-sizing: inherit;
}

body {
  margin: 0;
  padding: 0;
}

.site-wrapper {
  display: flex;
  flex-direction: column;
  height: inherit;
}
.site-wrapper__main-content {
  flex: 1 0 auto;
  padding-top: var(--header-height);
}
.site-wrapper__footer {
  flex-shrink: 0;
}

img {
  height: auto;
  max-width: 100%;
}

.full-width {
  position: relative;
  width: 100vw;
  left: 50%;
  right: 50%;
  margin-left: -50vw;
  margin-right: -50vw;
}

.absolute-link::after {
  content: "";
  height: 100%;
  left: 0;
  position: absolute;
  top: 0;
  width: 100%;
}

/*--------------------------------------------------------------
# Elements - Unclassed HTML elements (type selectors).
--------------------------------------------------------------*/
html {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
  overflow-y: scroll;
  font-size: 16px;
}

body {
  font-size: var(--text-400);
  letter-spacing: -0.02rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
  color: var(--color-text-secondary);
}

a {
  color: var(--color-link);
  text-decoration: underline;
  transition: all 0.2s ease-in-out;
}
a:hover, a:active {
  color: var(--color-text);
}
a:focus-visible {
  background-color: var(--color-blue-wisper);
  box-shadow: 0 0 0 var(--space-6xs) var(--color-blue-wisper);
  outline: 0.0625rem dashed var(--color-blue);
  outline-offset: var(--space-6xs);
}

b,
strong {
  font-weight: 700;
}

ul,
ol,
table,
p {
  margin: var(--text-margin) 0 0;
}
ul:first-child,
ol:first-child,
table:first-child,
p:first-child {
  margin-top: 0;
}

h1,
h2,
h3,
h4,
h5,
.h1,
.h2,
.h3,
.h4,
.h5 {
  color: var(--color-text-primary);
}
h1:first-child,
h2:first-child,
h3:first-child,
h4:first-child,
h5:first-child,
.h1:first-child,
.h2:first-child,
.h3:first-child,
.h4:first-child,
.h5:first-child {
  margin-top: 0;
}

h1,
.h1 {
  font-size: var(--heading-600);
  letter-spacing: -0.09rem;
  line-height: 1.15;
  font-family: var(--font-family-title);
  font-weight: 500;
}

h2,
.h2 {
  font-size: var(--heading-500);
  letter-spacing: -0.075rem;
  line-height: 1.15;
  font-family: var(--font-family-title);
  font-weight: 500;
}
h2 + p,
.h2 + p {
  margin-top: 1em;
}

h3,
.h3 {
  font-size: var(--heading-400);
  letter-spacing: -0.06rem;
  line-height: 1.15;
  font-family: var(--font-family-title);
  font-weight: 500;
}

h4,
.h4 {
  font-size: var(--heading-300);
  letter-spacing: -0.0488rem;
  line-height: 1.15;
  font-family: var(--font-family-title);
  font-weight: 500;
}

h5,
.h5,
h6,
.h6 {
  font-size: var(--heading-200);
  letter-spacing: -0.045rem;
  line-height: 1.15;
  font-family: var(--font-family-title);
  font-weight: 500;
}

blockquote {
  font-size: var(--heading-300);
  letter-spacing: -0.0488rem;
  line-height: 1.15;
  font-family: var(--font-family-title);
  font-weight: 500;
}

.btn,
.hs-button,
button,
input[type=button],
input[type=reset],
input[type=submit] {
  font-size: var(--text-btn);
  letter-spacing: -0.0175rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 500;
  display: inline-block;
  cursor: pointer;
  padding: var(--space-4xs-3xs, 1rem) var(--space-3xs-2xs, 1.25rem);
  text-decoration: none;
  text-align: center;
  color: var(--color-text-primary-invert, #FFF);
  background: var(--color-blue, #0059CE);
  border: 0;
  transition: all 0.2s;
}
.btn:hover, .btn:focus,
.hs-button:hover,
.hs-button:focus,
button:hover,
button:focus,
input[type=button]:hover,
input[type=button]:focus,
input[type=reset]:hover,
input[type=reset]:focus,
input[type=submit]:hover,
input[type=submit]:focus {
  background: var(--color-stravent, #132B6A);
  color: var(--color-text-primary-invert, #FFF);
  text-decoration: none;
}
.btn:focus-visible,
.hs-button:focus-visible,
button:focus-visible,
input[type=button]:focus-visible,
input[type=reset]:focus-visible,
input[type=submit]:focus-visible {
  background-color: var(--color-stravent, #132B6A);
  box-shadow: none;
  outline: auto;
  outline-offset: 0;
}

.btn--light {
  background: var(--color-blue-light);
}

.btn--secondary {
  padding: var(--space-5xs, 0.5rem) var(--space-4xs, 0.75rem);
}

.btn--tertiary {
  font-size: var(--text-300);
  letter-spacing: -0.0175rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
  color: var(--color-text-link-secondary, #0059CE);
  background: transparent;
  padding: 0;
}
.btn--tertiary::after {
  content: " →";
}
.btn--tertiary:hover, .btn--tertiary:focus {
  color: var(--color-text-link-secondary, #0059CE);
  background: transparent;
  text-decoration: underline;
}
.btn--tertiary:focus-visible {
  background-color: transparent;
}

.btn--mini {
  font-size: var(--text-200);
  letter-spacing: -0.0075rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
  color: var(--color-text-secondary, #596072);
}

.reset-button {
  min-width: 1px;
  padding: 0;
  border-radius: 0;
  font-size: inherit;
  font-family: inherit;
  font-weight: inherit;
  line-height: inherit;
  border: 0;
  background: rgba(255, 255, 255, 0);
}
.reset-button:hover, .reset-button:focus {
  background: unset;
}

/**
 * Form styles.
 *
 * These apply to every HubSpot form in the theme, so a form needs no per-module
 * styling. Fields are square, white, with a tag chip as the label; checkboxes
 * and radios use the light blue theme; the submit button is always the primary
 * blue one.
 */
input[type=text],
input[type=email],
input[type=url],
input[type=password],
input[type=search],
input[type=number],
input[type=tel],
input[type=date],
input[type=month],
input[type=week],
input[type=time],
input[type=datetime],
input[type=datetime-local],
textarea,
select {
  font-size: var(--text-300);
  letter-spacing: -0.0175rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
  display: block;
  width: 100%;
  height: auto;
  margin: 0;
  padding: var(--space-3xs);
  color: var(--color-text-primary);
  background: var(--color-background-primary);
  border: 0.0625rem solid var(--color-border-primary);
  border-radius: 0;
  box-shadow: none;
  transition: border-color var(--transition-2);
}
input[type=text]:focus,
input[type=email]:focus,
input[type=url]:focus,
input[type=password]:focus,
input[type=search]:focus,
input[type=number]:focus,
input[type=tel]:focus,
input[type=date]:focus,
input[type=month]:focus,
input[type=week]:focus,
input[type=time]:focus,
input[type=datetime]:focus,
input[type=datetime-local]:focus,
textarea:focus,
select:focus {
  border-color: var(--color-blue-extralight);
  box-shadow: none;
  outline: none;
}
input[type=text]::-moz-placeholder, input[type=email]::-moz-placeholder, input[type=url]::-moz-placeholder, input[type=password]::-moz-placeholder, input[type=search]::-moz-placeholder, input[type=number]::-moz-placeholder, input[type=tel]::-moz-placeholder, input[type=date]::-moz-placeholder, input[type=month]::-moz-placeholder, input[type=week]::-moz-placeholder, input[type=time]::-moz-placeholder, input[type=datetime]::-moz-placeholder, input[type=datetime-local]::-moz-placeholder, textarea::-moz-placeholder, select::-moz-placeholder {
  color: var(--color-text-secondary);
  opacity: 1;
}
input[type=text]::placeholder,
input[type=email]::placeholder,
input[type=url]::placeholder,
input[type=password]::placeholder,
input[type=search]::placeholder,
input[type=number]::placeholder,
input[type=tel]::placeholder,
input[type=date]::placeholder,
input[type=month]::placeholder,
input[type=week]::placeholder,
input[type=time]::placeholder,
input[type=datetime]::placeholder,
input[type=datetime-local]::placeholder,
textarea::placeholder,
select::placeholder {
  color: var(--color-text-secondary);
  opacity: 1;
}

select {
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  padding-right: calc(var(--space-3xs) * 2 + 0.75rem);
  background-repeat: no-repeat;
  background-position: right var(--space-3xs) center;
  background-size: 0.6875rem auto;
  /* stylelint-disable-next-line */
  background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="11" height="6" viewBox="0 0 11 6" fill="none"><path d="M1 1L5.5 5L10 1" stroke="%2327283F" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg>');
}

textarea {
  min-height: 8.375rem;
  resize: vertical;
  vertical-align: top;
}

/**
 * Checkboxes and radios. Light blue when empty, stronger blue once chosen.
 *
 * The new HubSpot renderer paints its own checkmark with a masked `::after` and
 * takes its colours from the --hsf-* variables, so its controls are excluded
 * here — otherwise both stylesheets draw a tick on the same box.
 */
input[type=checkbox]:not(.hsfc-CheckboxInput),
input[type=radio]:not(.hsfc-RadioInput) {
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  display: inline-block;
  flex: 0 0 auto;
  width: 1.25rem;
  min-width: 1.25rem;
  height: 1.25rem;
  min-height: 1.25rem;
  margin: 0;
  padding: 0;
  background: var(--color-blue-wisper) no-repeat center;
  border: 0.0625rem solid var(--color-blue-extralight);
  border-radius: 0;
  box-shadow: none;
  cursor: pointer;
  transition: background-color var(--transition-2), border-color var(--transition-2);
}
input[type=checkbox]:not(.hsfc-CheckboxInput):checked,
input[type=radio]:not(.hsfc-RadioInput):checked {
  background-color: var(--color-blue-extralight);
  border-color: var(--color-blue);
  /* stylelint-disable-next-line */
  background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="12" height="9" viewBox="0 0 12 9" fill="none"><path d="M1 4.5L4.2 7.5L11 1" stroke="%230059CE" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg>');
  background-size: 0.6875rem auto;
}
input[type=checkbox]:not(.hsfc-CheckboxInput):focus-visible,
input[type=radio]:not(.hsfc-RadioInput):focus-visible {
  outline: 0.125rem solid var(--color-blue);
  outline-offset: 0.125rem;
}

input[type=radio]:not(.hsfc-RadioInput) {
  border-radius: 50%;
}

.hs-form, .systems-page .form-container {
  font-size: var(--text-300);
  letter-spacing: -0.0175rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
}
.hs-form .hs-form-field, .systems-page .form-container .hs-form-field {
  margin: 0 0 var(--space-2xs);
}
.hs-form .hs-form-field > label, .systems-page .form-container .hs-form-field > label {
  font-size: var(--text-200);
  letter-spacing: -0.0075rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin: 0;
  padding: var(--space-6xs) var(--space-5xs);
  color: var(--color-text-primary);
  background: var(--color-grey-200);
  border: 0.0625rem solid var(--color-border-secondary);
  margin-bottom: var(--space-6xs);
}
.hs-form .hs-form-field, .systems-page .form-container .hs-form-field {
  /**
   * A field with no label still gets one — HubSpot prints the element
   * with an empty span inside it, which the chip above then paints as a
   * small grey box above the field. `:empty` alone does not find it: the
   * span is a child, so the label is not empty in CSS's sense.
   */
}
.hs-form .hs-form-field > label:empty, .systems-page .form-container .hs-form-field > label:empty,
.hs-form .hs-form-field > label:has(> span:empty),
.systems-page .form-container .hs-form-field > label:has(> span:empty) {
  display: none;
}
.hs-form .hs-form-field .hs-form-required, .systems-page .form-container .hs-form-field .hs-form-required {
  margin-left: 0.125rem;
  color: var(--color-system-error);
}
.hs-form .hs-field-desc, .systems-page .form-container .hs-field-desc {
  font-size: var(--text-200);
  letter-spacing: -0.0075rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
  display: block;
  margin: 0 0 var(--space-6xs);
  padding: 0;
  color: var(--color-text-secondary);
}
.hs-form .inputs-list, .systems-page .form-container .inputs-list {
  margin: 0;
  padding: 0;
  list-style: none;
}
.hs-form .inputs-list li::after, .systems-page .form-container .inputs-list li::after,
.hs-form .inputs-list li::before,
.systems-page .form-container .inputs-list li::before {
  display: none;
}
.hs-form .inputs-list, .systems-page .form-container .inputs-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-5xs);
  margin: 0;
}
.hs-form .inputs-list li, .systems-page .form-container .inputs-list li {
  padding-left: 0;
}
.hs-form .inputs-list li label, .systems-page .form-container .inputs-list li label {
  font-size: var(--text-300);
  letter-spacing: -0.0175rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
  display: inline-flex;
  align-items: center;
  gap: var(--space-5xs);
  margin: 0;
  padding: 0;
  color: var(--color-text-secondary);
  background: none;
  border: 0;
  cursor: pointer;
}
.hs-form .inputs-list li:has(input:checked) label, .systems-page .form-container .inputs-list li:has(input:checked) label {
  color: var(--color-text-primary);
}
.hs-form .inputs-list span, .systems-page .form-container .inputs-list span {
  font-size: inherit;
}
.hs-form .legal-consent-container, .systems-page .form-container .legal-consent-container {
  margin-bottom: var(--space-2xs);
}
.hs-form .legal-consent-container .hs-form-booleancheckbox-display > span, .systems-page .form-container .legal-consent-container .hs-form-booleancheckbox-display > span {
  font-size: var(--text-200);
  letter-spacing: -0.0075rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
  margin: 0;
  color: var(--color-text-secondary);
}
.hs-form .legal-consent-container a, .systems-page .form-container .legal-consent-container a {
  color: var(--color-text-link-secondary);
}
.hs-form .hs-error-msgs, .systems-page .form-container .hs-error-msgs {
  margin: 0;
  padding: 0;
  list-style: none;
}
.hs-form .hs-error-msgs li::after, .systems-page .form-container .hs-error-msgs li::after,
.hs-form .hs-error-msgs li::before,
.systems-page .form-container .hs-error-msgs li::before {
  display: none;
}
.hs-form .hs-error-msgs, .systems-page .form-container .hs-error-msgs {
  gap: 0;
  margin: var(--space-6xs) 0 0;
}
.hs-form .hs-error-msgs li label, .systems-page .form-container .hs-error-msgs li label,
.hs-form .hs-error-msgs label.hs-error-msg,
.systems-page .form-container .hs-error-msgs label.hs-error-msg {
  font-size: var(--text-200);
  letter-spacing: -0.0075rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
  display: block;
  padding: 0;
  color: var(--color-system-error);
  background: none;
  border: 0;
}
.hs-form .hs-button, .systems-page .form-container .hs-button,
.hs-form input[type=submit],
.systems-page .form-container input[type=submit] {
  font-size: var(--text-410);
  letter-spacing: -0.02rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 500;
  display: inline-block;
  width: auto;
  padding: var(--space-4xs) var(--space-3xs);
  color: var(--color-text-primary-invert);
  background: var(--color-blue);
  border: 0;
  border-radius: 0;
  cursor: pointer;
  transition: background var(--transition-2);
}
.hs-form .hs-button:hover, .systems-page .form-container .hs-button:hover, .hs-form .hs-button:focus, .systems-page .form-container .hs-button:focus,
.hs-form input[type=submit]:hover,
.systems-page .form-container input[type=submit]:hover,
.hs-form input[type=submit]:focus,
.systems-page .form-container input[type=submit]:focus {
  color: var(--color-text-primary-invert);
  background: var(--color-stravent);
}

body .body-wrapper .hs-form fieldset,
.hs-form fieldset,
.systems-page .form-container fieldset {
  width: 100%;
  max-width: 100%;
  margin: 0;
  padding: 0;
  border: 0;
}
body .body-wrapper .hs-form fieldset .input,
.hs-form fieldset .input,
.systems-page .form-container fieldset .input {
  margin-right: 0;
}
body .body-wrapper .hs-form fieldset .hs-form-field,
.hs-form fieldset .hs-form-field,
.systems-page .form-container fieldset .hs-form-field {
  width: 100%;
}
@media (min-width: 37.501rem) {
  body .body-wrapper .hs-form fieldset,
  .hs-form fieldset,
  .systems-page .form-container fieldset {
    display: flex;
    gap: var(--space-4xs);
  }
  body .body-wrapper .hs-form fieldset.form-columns-2 .hs-form-field, body .body-wrapper .hs-form fieldset.form-columns-3 .hs-form-field,
  .hs-form fieldset.form-columns-2 .hs-form-field,
  .systems-page .form-container fieldset.form-columns-2 .hs-form-field,
  .hs-form fieldset.form-columns-3 .hs-form-field,
  .systems-page .form-container fieldset.form-columns-3 .hs-form-field {
    flex: 1 1 0;
    min-width: 0;
    margin-right: 0;
  }
}

/**
 * HubSpot ships its own form stylesheet, which scopes rules like
 * `.hs-form-field input[type="checkbox"]`. That outranks the bare attribute
 * selectors above and reverts `appearance`, collapsing the control to a
 * sliver, so the same look is repeated here at a heavier weight.
 */
.hs-form .hs-form-field input[type=checkbox], .systems-page .form-container .hs-form-field input[type=checkbox],
.hs-form .hs-form-field input[type=radio],
.systems-page .form-container .hs-form-field input[type=radio],
.hs-form .inputs-list input[type=checkbox],
.systems-page .form-container .inputs-list input[type=checkbox],
.hs-form .inputs-list input[type=radio],
.systems-page .form-container .inputs-list input[type=radio],
.hs-form .legal-consent-container input[type=checkbox],
.systems-page .form-container .legal-consent-container input[type=checkbox] {
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  display: inline-block;
  flex: 0 0 auto;
  width: 1.25rem;
  min-width: 1.25rem;
  height: 1.25rem;
  min-height: 1.25rem;
  margin: 0;
  padding: 0;
  background: var(--color-blue-wisper) no-repeat center;
  border: 0.0625rem solid var(--color-blue-extralight);
  border-radius: 0;
  box-shadow: none;
  cursor: pointer;
  transition: background-color var(--transition-2), border-color var(--transition-2);
}
.hs-form .hs-form-field input[type=checkbox]:checked, .systems-page .form-container .hs-form-field input[type=checkbox]:checked,
.hs-form .hs-form-field input[type=radio]:checked,
.systems-page .form-container .hs-form-field input[type=radio]:checked,
.hs-form .inputs-list input[type=checkbox]:checked,
.systems-page .form-container .inputs-list input[type=checkbox]:checked,
.hs-form .inputs-list input[type=radio]:checked,
.systems-page .form-container .inputs-list input[type=radio]:checked,
.hs-form .legal-consent-container input[type=checkbox]:checked,
.systems-page .form-container .legal-consent-container input[type=checkbox]:checked {
  background-color: var(--color-blue-extralight);
  border-color: var(--color-blue);
  /* stylelint-disable-next-line */
  background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="12" height="9" viewBox="0 0 12 9" fill="none"><path d="M1 4.5L4.2 7.5L11 1" stroke="%230059CE" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg>');
  background-size: 0.6875rem auto;
}
.hs-form .hs-form-field input[type=checkbox]:focus-visible, .systems-page .form-container .hs-form-field input[type=checkbox]:focus-visible,
.hs-form .hs-form-field input[type=radio]:focus-visible,
.systems-page .form-container .hs-form-field input[type=radio]:focus-visible,
.hs-form .inputs-list input[type=checkbox]:focus-visible,
.systems-page .form-container .inputs-list input[type=checkbox]:focus-visible,
.hs-form .inputs-list input[type=radio]:focus-visible,
.systems-page .form-container .inputs-list input[type=radio]:focus-visible,
.hs-form .legal-consent-container input[type=checkbox]:focus-visible,
.systems-page .form-container .legal-consent-container input[type=checkbox]:focus-visible {
  outline: 0.125rem solid var(--color-blue);
  outline-offset: 0.125rem;
}

.hs-form .hs-form-field input[type=radio], .systems-page .form-container .hs-form-field input[type=radio],
.hs-form .inputs-list input[type=radio],
.systems-page .form-container .inputs-list input[type=radio] {
  border-radius: 50%;
}

/**
 * File field.
 *
 * Neither form renderer gives us a usable wrapper — the legacy markup has
 * `.input`, the new one puts the input directly in `.hsfc-FileField` — so
 * js/file-field.js wraps every file input in `.hs-file-dropzone` and this
 * styles that. The real input is laid transparently over the box, which keeps
 * native click-to-browse and native drag-and-drop working.
 *
 * The chips below it are also rendered by that script: the browser keeps the
 * chosen files in the input's shadow DOM, so CSS alone cannot show them.
 *
 * Icon is the exported `add-item` asset from Figma node 2292:1733, inlined to
 * avoid depending on a CSS-relative asset path.
 */
.hs-file-dropzone {
  --file-field-text: "Raahaa suunnitelmat t\00e4h\00e4n tai klikkaa aluetta valitaksesi tiedostot.";
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--space-4xs);
  min-height: 11.5rem;
  padding: var(--space-s);
  text-align: center;
  background: var(--color-blue-wisper);
  border: 0.0625rem dashed var(--color-blue-extralight);
  transition: background var(--transition-2), border-color var(--transition-2);
}
.hs-file-dropzone::before {
  content: "";
  flex-shrink: 0;
  width: 3rem;
  height: 3rem;
  /* stylelint-disable-next-line */
  background: url("data:image/svg+xml,<svg width='48' height='48' viewBox='0 0 48 48' fill='none' xmlns='http://www.w3.org/2000/svg'> <g id='add-item'> <g id='Rectangle 434'> <path d='M48 14L34 0V14H48Z' fill='%233C90FF'/> <path d='M0 48H48V14H34V0H0V48Z' fill='%23AFD2FF'/> <path d='M33 1V15H47V47H1V1H33ZM45.5859 13H35V2.41406L45.5859 13Z' stroke='%233C90FF' stroke-width='2'/> </g> <path id='Vector' d='M24 32V24M24 24V16M24 24L16 24M24 24H32' stroke='%230059CE' stroke-width='2'/> </g> </svg>") no-repeat center;
  background-size: contain;
}
.hs-file-dropzone::after {
  font-size: var(--text-310);
  letter-spacing: -0.0175rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 500;
  content: var(--file-field-text);
  max-width: 15.625rem;
  color: var(--color-blue);
}
.hs-file-dropzone input[type=file] {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  background: none;
  border: 0;
  opacity: 0;
  cursor: pointer;
}
.hs-file-dropzone:hover, .hs-file-dropzone:has(input[type=file]:focus-visible) {
  background: var(--color-blue-extralight);
  border-color: var(--color-blue-light);
}

/* Chips for the chosen files, rendered by js/file-field.js. */
.hs-file-chips {
  margin: 0;
  padding: 0;
  list-style: none;
}
.hs-file-chips li::after,
.hs-file-chips li::before {
  display: none;
}
.hs-file-chips {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  gap: var(--space-5xs);
  margin: var(--space-5xs) 0 0;
}
.hs-file-chips li {
  font-size: var(--text-200);
  letter-spacing: -0.0075rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
  display: inline-flex;
  align-items: center;
  gap: var(--space-5xs);
  padding: var(--space-6xs) var(--space-5xs);
  color: var(--color-text-primary-invert);
  background: var(--color-blue);
  border: 0.0625rem solid var(--color-blue);
}
.hs-file-chips__remove {
  min-width: 1px;
  padding: 0;
  border-radius: 0;
  font-size: inherit;
  font-family: inherit;
  font-weight: inherit;
  line-height: inherit;
  border: 0;
  background: rgba(255, 255, 255, 0);
}
.hs-file-chips__remove:hover, .hs-file-chips__remove:focus {
  background: unset;
}
.hs-file-chips__remove {
  flex-shrink: 0;
  width: 0.875rem;
  height: 0.875rem;
  /* stylelint-disable-next-line */
  background: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 14 14' fill='none'><path d='M2 2L12 12M12 2L2 12' stroke='white' stroke-width='1.8' stroke-linecap='round'/></svg>") no-repeat center;
  background-size: contain;
  cursor: pointer;
}

/**
 * HubSpot's new form renderer (`hsfc-*`).
 *
 * Most of it is themed by the --hsf-* variables in 01-settings/_settings-css.
 * These are the bits with no variable: the label chip, the option-label layout
 * and the control size. HubSpot's own rules are `[data-hsfc-id="Renderer"]
 * .hsfc-x` (0,2,0), so these are written a step heavier to win.
 */
[data-hsfc-id=Renderer].hsfc-Renderer .hsfc-FieldLabel:not(:has(input)) {
  font-size: var(--text-200);
  letter-spacing: -0.0075rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin: 0;
  padding: var(--space-6xs) var(--space-5xs);
  color: var(--color-text-primary);
  background: var(--color-grey-200);
  border: 0.0625rem solid var(--color-border-secondary);
  margin-bottom: var(--space-6xs);
}
[data-hsfc-id=Renderer].hsfc-Renderer .hsfc-FieldLabel:empty,
[data-hsfc-id=Renderer].hsfc-Renderer .hsfc-FieldLabel:has(> span:empty) {
  display: none;
}
[data-hsfc-id=Renderer].hsfc-Renderer .hsfc-CheckboxFieldGroup__Options label,
[data-hsfc-id=Renderer].hsfc-Renderer .hsfc-RadioFieldGroup__Options label,
[data-hsfc-id=Renderer].hsfc-Renderer .hsfc-CheckboxField label {
  font-size: var(--text-300);
  letter-spacing: -0.0175rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
  display: inline-flex;
  align-items: center;
  gap: var(--space-5xs);
  margin: 0;
  padding: 0;
  color: var(--color-text-secondary);
  background: none;
  border: 0;
  cursor: pointer;
}
[data-hsfc-id=Renderer].hsfc-Renderer .hsfc-CheckboxFieldGroup__Options label:has(input:checked),
[data-hsfc-id=Renderer].hsfc-Renderer .hsfc-RadioFieldGroup__Options label:has(input:checked),
[data-hsfc-id=Renderer].hsfc-Renderer .hsfc-CheckboxField label:has(input:checked) {
  color: var(--color-text-primary);
}
[data-hsfc-id=Renderer].hsfc-Renderer .hsfc-CheckboxField label {
  align-items: flex-start;
}
[data-hsfc-id=Renderer].hsfc-Renderer .hsfc-CheckboxField label > span {
  font-size: var(--text-200);
  letter-spacing: -0.0075rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
}
[data-hsfc-id=Renderer].hsfc-Renderer .hsfc-CheckboxInput,
[data-hsfc-id=Renderer].hsfc-Renderer .hsfc-RadioInput {
  flex-shrink: 0;
  width: 1.25rem;
  min-width: 1.25rem;
  height: 1.25rem;
  min-height: 1.25rem;
}
[data-hsfc-id=Renderer].hsfc-Renderer .hsfc-CheckboxInput {
  border-radius: 0;
}
[data-hsfc-id=Renderer].hsfc-Renderer .hsfc-RadioInput {
  border-radius: 50%;
}
[data-hsfc-id=Renderer].hsfc-Renderer .hsfc-DropdownOptions__List__ListItem::before,
[data-hsfc-id=Renderer].hsfc-Renderer .hsfc-DropdownOptions__List__ListItem::after {
  display: none;
}

.form-title {
  /**
   * The form module prints this heading whether or not there is a title to
   * go in it. An empty block has no height but keeps its margins, and the
   * heading's own bottom margin is what holds the form away from the top of
   * the column it sits in.
   */
}
.form-title:empty {
  display: none;
}
.form-title:not(:empty) {
  margin-bottom: var(--space-s);
}

table {
  border-collapse: collapse;
  width: 100%;
}

td, th {
  border: 1px solid #aaa;
  border-width: 0 0 1px;
  padding: 0.5rem;
}

th {
  border-width: 0 0 2px;
  text-align: left;
  font-weight: 400;
  padding: 0.5rem;
}

/*--------------------------------------------------------------
# Layout - Undecorated design patterns.
--------------------------------------------------------------*/
.content-wrapper,
.container,
.dnd-section > .row-fluid {
  width: var(--width-wide);
  margin-left: auto;
  margin-right: auto;
}

.width-wide {
  width: var(--width-wide);
}

.width-medium {
  width: var(--width-medium);
}

.width-regular {
  width: var(--width-regular);
}

.mx-auto {
  margin-left: auto;
  margin-right: auto;
}

@media (max-width: 48rem) {
  .dnd-section .dnd-column:not(:first-child) {
    margin-top: var(--gutter);
  }
}

div[class*=background-color].dnd-section {
  padding-top: var(--space-default);
  padding-bottom: var(--space-default);
}

div[class*=background-color].dnd-column {
  padding: var(--gutter);
}
@media (min-width: 48.001rem) {
  div[class*=background-color].dnd-column {
    padding: var(--gutter);
  }
}

.side-padding {
  padding-left: var(--side-padding);
  padding-right: var(--side-padding);
}

.vertical-padding {
  padding-top: var(--space-default);
  padding-bottom: var(--space-default);
}

/**
 * Content grid.
 *
 * The column count is fixed, never derived from how many children there are:
 * two cards in a four-column grid stay card-width and sit to the left rather
 * than stretching across the row.
 *
 * Four columns from `medium` up unless the module says otherwise with
 * `grid--columns-n`. Stacks to two columns below `medium` and one below
 * `small`.
 */
.grid {
  display: grid;
  gap: var(--space-3xs);
  grid-template-columns: 1fr;
}
@media (min-width: 37.501rem) {
  .grid {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (min-width: 48.001rem) {
  .grid {
    grid-template-columns: repeat(4, 1fr);
  }
  .grid--columns-2 {
    grid-template-columns: repeat(2, 1fr);
  }
  .grid--columns-3 {
    grid-template-columns: repeat(3, 1fr);
  }
  .grid--columns-4 {
    grid-template-columns: repeat(4, 1fr);
  }
  .grid--columns-5 {
    grid-template-columns: repeat(5, 1fr);
  }
}

/* Responsive Grid */
@media (min-width: 48.001rem) {
  .row-fluid-wrapper > .row-fluid {
    display: flex;
    gap: var(--gutter);
  }
}

.row-fluid {
  width: 100%;
  *zoom: 1;
}
@media (min-width: 48.001rem) {
  .row-fluid [class*=span] {
    display: block;
    width: 100%;
    min-height: 1px;
    box-sizing: border-box;
  }
  .row-fluid .span12 {
    width: 100%;
  }
  .row-fluid .span11 {
    width: calc(91.6666666667% - var(--gutter) * (12 / 11 - 1) / (12 / 11));
  }
  .row-fluid .span10 {
    width: calc(83.3333333333% - var(--gutter) * (12 / 10 - 1) / (12 / 10));
  }
  .row-fluid .span9 {
    width: calc(75% - var(--gutter) * (12 / 9 - 1) / (12 / 9));
  }
  .row-fluid .span8 {
    width: calc(66.6666666667% - var(--gutter) * (12 / 8 - 1) / (12 / 8));
  }
  .row-fluid .span7 {
    width: calc(58.3333333333% - var(--gutter) * (12 / 7 - 1) / (12 / 7));
  }
  .row-fluid .span6 {
    width: calc(50% - var(--gutter) * (12 / 6 - 1) / (12 / 6));
  }
  .row-fluid .span5 {
    width: calc(41.6666666667% - var(--gutter) * (12 / 5 - 1) / (12 / 5));
  }
  .row-fluid .span4 {
    width: calc(33.3333333333% - var(--gutter) * (12 / 4 - 1) / (12 / 4));
  }
  .row-fluid .span3 {
    width: calc(25% - var(--gutter) * (12 / 3 - 1) / (12 / 3));
  }
  .row-fluid .span2 {
    width: calc(16.6666666667% - var(--gutter) * (12 / 2 - 1) / (12 / 2));
  }
  .row-fluid .span1 {
    width: calc(8.3333333333% - var(--gutter) * (12 / 1 - 1) / (12 / 1));
  }
}

.container-fluid {
  *zoom: 1;
}
.container-fluid:before, .container-fluid:after {
  display: table;
  content: "";
}
.container-fluid:after {
  clear: both;
}

/* Clearfix */
.clearfix {
  *zoom: 1;
}
.clearfix:before, .clearfix:after {
  display: table;
  content: "";
}
.clearfix:after {
  clear: both;
}

/* Visibilty Classes */
.hide {
  display: none;
}

.show {
  display: block;
}

.invisible {
  visibility: hidden;
}

.hidden {
  display: none;
  visibility: hidden;
}

/* Responsive Visibilty Classes */
.visible-phone {
  display: none !important;
}

.visible-tablet {
  display: none !important;
}

.hidden-desktop {
  display: none !important;
}

@media (max-width: 48rem) {
  .visible-phone {
    display: inherit !important;
  }
  .hidden-phone {
    display: none !important;
  }
  .hidden-desktop {
    display: inherit !important;
  }
  .visible-desktop {
    display: none !important;
  }
}
@media (min-width: 48rem) and (max-width: 65rem) {
  .visible-tablet {
    display: inherit !important;
  }
  .hidden-tablet {
    display: none !important;
  }
  .hidden-desktop {
    display: inherit !important;
  }
  .visible-desktop {
    display: none !important;
  }
}
.error-page {
  margin-top: var(--space-default);
  margin-bottom: var(--space-default);
}
.error-page img {
  vertical-align: top;
}
.error-page__paragraph {
  margin: 2em 0 2.1em;
}
.error-page__paragraph:last-child {
  margin-bottom: 0;
}

.error-page {
  text-align: center;
}

.archive-filters {
  margin: 0;
  padding: 0;
  list-style: none;
}
.archive-filters li::after,
.archive-filters li::before {
  display: none;
}
.archive-filters {
  margin-bottom: var(--gutter);
  display: flex;
  flex-flow: wrap;
}
.archive-filters li {
  margin: 0.5rem 0.5rem 0 0;
}

.blog-post__metas {
  margin-top: var(--gutter);
}
.blog-post__metas a {
  text-decoration: none;
}
.blog-post__metas a:hover, .blog-post__metas a:focus {
  text-decoration: underline;
}

.posts-pagination {
  margin: 0;
  padding: 0;
  list-style: none;
}
.posts-pagination li::after,
.posts-pagination li::before {
  display: none;
}
.posts-pagination {
  margin-top: var(--space-gutter);
  line-height: 1;
  text-align: center;
}
.posts-pagination li {
  display: inline-block;
  margin: 0 0 0 0.5rem;
}
.posts-pagination li:first-child {
  margin-left: 0;
}
.posts-pagination .posts-pagination__link {
  display: inline-block;
  padding: 0.3rem;
  text-decoration: none;
}
.posts-pagination .posts-pagination__link:hover, .posts-pagination .posts-pagination__link:focus {
  color: var(--color-text);
}
.posts-pagination .posts-pagination__link--active {
  color: var(--color-text);
  border-bottom: 0.125rem solid var(--color-link);
}
.posts-pagination .posts-pagination__link--active:hover, .posts-pagination .posts-pagination__link--active:focus {
  color: var(--color-link);
}
.posts-pagination .posts-pagination__prev-link--disabled,
.posts-pagination .posts-pagination__next-link--disabled {
  display: none;
}

.systems-page {
  margin-top: var(--space-default);
  margin-bottom: var(--space-default);
}
.systems-page .form-container {
  max-width: none;
}
.systems-page.container {
  width: var(--width-medium);
}
.systems-page .subscribe-options {
  margin-bottom: var(--text-margin);
}
.systems-page .item,
.systems-page .subscribe-options {
  margin-top: var(--text-margin);
}
.systems-page .item p,
.systems-page .subscribe-options p {
  margin: 0;
}
.systems-page .backup-unsubscribe #email-prefs-form {
  margin: var(--text-margin) auto;
}
.systems-page .backup-unsubscribe #email-prefs-form .email-edit.hs-input {
  margin: 1rem 0;
}

@keyframes openMenu {
  from {
    margin-top: -1rem;
    opacity: 0;
  }
  to {
    margin-top: 0%;
    opacity: 1;
  }
}
@keyframes fadeIn {
  0% {
    transform: translateY(-8px);
  }
  50% {
    opacity: 0;
  }
  100% {
    transform: translateY(0);
    opacity: 1;
  }
}
/*--------------------------------------------------------------
# Modules - specific UI components.
--------------------------------------------------------------*/
.dnd-module > .hs_cos_wrapper_type_module[class*=widget-type-] {
  display: block;
  margin-bottom: var(--space-default);
  margin-top: var(--space-default);
}

.span12.dnd-column > div > div > .span12.dnd-module > .hs_cos_wrapper_type_module.widget-type-rich_text, .span12.dnd-column > div > div > .span12.dnd-module > .hs_cos_wrapper_type_module.widget-type-header, .span12.dnd-column > div > div > .span12.dnd-module > .hs_cos_wrapper_type_module.widget-type-form,
.span12.dnd-column > div > div > .span12.dnd-module > .hs_cos_wrapper_type_module > .normal-text-width {
  margin-inline: auto;
  width: var(--width-regular);
}
.span12.dnd-column > div > div > .span12.dnd-module > .hs_cos_wrapper_type_module > hr {
  width: 100% !important;
  border-color: var(--color-primary-500) !important;
}

.site-header {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 200;
  width: 100%;
  background-color: var(--color-background);
}
@media (max-width: 60rem) {
  .site-header.has-nav-open {
    height: 100vh;
    height: 100svh;
    overflow-y: auto;
  }
}

/* The top bar. Always visible, whatever the scroll is doing. */
.site-header__top {
  border-bottom: 0.0625rem solid var(--color-border-primary);
}
.site-header__top-inner {
  display: flex;
  flex-direction: column-reverse;
}
@media (min-width: 60.001rem) {
  .site-header__top-inner {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    padding: var(--space-4xs) 0;
  }
}

.site-header__ctas {
  display: flex;
  margin: 0 calc(var(--side-padding) * -1);
}
@media (min-width: 60.001rem) {
  .site-header__ctas {
    margin: 0;
    gap: var(--space-6xs);
  }
}
.site-header__ctas .hs-web-interactive-inline {
  width: 100%;
}
.site-header__ctas > * {
  display: flex;
  flex: 1 1 0;
  min-width: 0;
}
@media (max-width: 37.5rem) {
  .site-header__ctas > * {
    flex: 0 0 auto;
  }
  .site-header__ctas > *:nth-child(2) {
    flex: 1 1 auto;
  }
}
@media (min-width: 60.001rem) {
  .site-header__ctas > * {
    flex: 0 0 auto;
  }
}
.site-header__ctas a {
  display: flex;
  flex: 1 1 auto;
}

.site-header__brand {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3xs);
  padding: var(--space-5xs) 0;
}
@media (max-width: 60rem) {
  .site-header__brand {
    align-items: stretch;
    padding: 0;
  }
}

.site-header__logo {
  display: inline-flex;
  align-items: center;
}
@media (max-width: 60rem) {
  .site-header__logo {
    padding: var(--space-xs) 0;
  }
}
.site-header__logo svg,
.site-header__logo img {
  display: block;
  width: auto;
  height: 2.5rem;
}
@media (max-width: 48rem) {
  .site-header__logo svg,
  .site-header__logo img {
    height: auto;
    max-width: 13.6875rem;
    width: 100%;
  }
}

/* The switcher and the toggle, in the logo row — mobile only. */
.site-header__brand-extra {
  display: flex;
  align-items: stretch;
  gap: var(--space-s);
}
.site-header__brand-extra > div:has(.language-menu) {
  display: flex;
  align-items: center;
  align-self: stretch;
}
@media (min-width: 60.001rem) {
  .site-header__brand-extra {
    display: none;
  }
}

.site-header__bar {
  display: grid;
  grid-template-rows: 1fr;
  border-bottom: 0.0625rem solid var(--color-border-primary);
  transition: grid-template-rows 0.25s ease-in-out;
}
.site-header__bar-inner {
  min-height: 0;
}
@media (min-width: 60.001rem) {
  .site-header__bar-inner {
    overflow: hidden;
    opacity: 1;
    transition: opacity 0.25s ease-in-out;
  }
  .site-header__bar-inner:has(.is-opened) {
    overflow: visible;
  }
}
.headroom--not-top.headroom--unpinned .site-header__bar {
  grid-template-rows: 0fr;
}
@media (min-width: 60.001rem) {
  .headroom--not-top.headroom--unpinned .site-header__bar .site-header__bar-inner {
    opacity: 0;
  }
}
@media (max-width: 60rem) {
  .site-header__bar {
    grid-template-rows: 1fr;
    border-bottom: 0;
  }
}

@media (min-width: 60.001rem) {
  .site-nav {
    display: flex;
    align-items: stretch;
    justify-content: space-between;
    gap: var(--space-s);
  }
}

.site-nav__extra {
  display: flex;
  align-items: center;
  gap: var(--space-3xs);
}
@media (max-width: 60rem) {
  .site-nav__extra {
    gap: 0;
  }
  .site-nav__extra .language-menu {
    display: none;
  }
}
@media (min-width: 60.001rem) {
  .site-nav__extra > div:has(.language-menu) {
    display: flex;
    align-items: center;
    align-self: stretch;
  }
}

.site-nav__extra-link {
  font-size: var(--text-nav);
  letter-spacing: -0.02rem;
  line-height: 1.2;
  font-family: var(--font-family-base);
  font-weight: 400;
  color: var(--color-text-primary);
  text-decoration: none;
}
@media (min-width: 60.001rem) {
  .site-nav__extra-link {
    display: flex;
    align-items: center;
    height: 100%;
    padding: 0;
  }
}
@media (max-width: 60rem) {
  .site-nav__extra-link {
    padding: var(--space-s) 0;
    width: 100%;
  }
}
.site-nav__extra-link:focus {
  outline: none;
}
.site-nav__extra-link:hover, .site-nav__extra-link:focus-visible {
  background-color: transparent;
  box-shadow: var(--underline-box-shadow);
  outline: none;
  text-decoration: none;
}

.language-menu {
  margin: 0;
  padding: 0;
  list-style: none;
}
.language-menu li::after,
.language-menu li::before {
  display: none;
}
.language-menu {
  position: relative;
  display: flex;
  flex-direction: row;
  align-items: stretch;
  align-self: stretch;
}
.language-menu > li {
  display: flex;
  align-items: center;
}
.language-menu__toggle {
  min-width: 1px;
  padding: 0;
  border-radius: 0;
  font-size: inherit;
  font-family: inherit;
  font-weight: inherit;
  line-height: inherit;
  border: 0;
  background: rgba(255, 255, 255, 0);
}
.language-menu__toggle:hover, .language-menu__toggle:focus {
  background: unset;
}
.language-menu__toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--space-6xs);
  color: var(--color-blue);
  background: transparent;
  cursor: pointer;
  height: 100%;
  padding: 0;
}
.language-menu__toggle:focus {
  outline: none;
}
.language-menu__toggle:hover, .language-menu__toggle:focus, .language-menu__toggle:focus-visible {
  background: unset;
  color: var(--color-blue);
}
.language-menu__toggle:hover, .language-menu__toggle:focus-visible, .language-menu__toggle[aria-expanded=true] {
  box-shadow: var(--underline-box-shadow);
}
.language-menu__panel {
  margin: 0;
  padding: 0;
  list-style: none;
}
.language-menu__panel li::after,
.language-menu__panel li::before {
  display: none;
}
.language-menu__panel {
  position: absolute;
  top: 100%;
  right: 0;
  z-index: 300;
}
@media (min-width: 60.001rem) {
  .language-menu__panel {
    right: calc(var(--space-s) * -1);
  }
}
.language-menu__panel {
  display: flex;
  flex-direction: column;
  gap: var(--space-2xs);
  padding: var(--space-xs);
  background: var(--color-background-primary);
  border: 0.0625rem solid var(--color-border-primary);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}
.language-menu__panel.is-opened {
  animation: openMenu var(--transition-2) cubic-bezier(0.14, 0.59, 1, 1.01) forwards;
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}
.language-menu .hs-menu-depth-2 a {
  font-size: var(--text-300);
  letter-spacing: -0.0175rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
  display: block;
  color: var(--color-text-primary);
  text-decoration: none;
  white-space: nowrap;
}
.language-menu .hs-menu-depth-2 a:hover, .language-menu .hs-menu-depth-2 a:focus-visible {
  color: var(--color-text-link-secondary);
}
.language-menu .hs-menu-depth-2 a:focus-visible {
  background-color: var(--color-blue-wisper);
  box-shadow: 0 0 0 var(--space-6xs) var(--color-blue-wisper);
  outline: 0.0625rem dashed var(--color-blue);
  outline-offset: var(--space-6xs);
}

/* Tarjouspyyntö — the brand navy. */
.hsbtn-header-1 {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 2.625rem;
  padding: var(--space-5xs, 0.5rem) var(--space-2xs, 1.25rem);
  color: var(--color-text-primary-invert, #FFF);
  background: var(--color-blue, #0059ce);
}

/* Ota yhteyttä — the lighter blue. */
.hsbtn-header-2 {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 2.625rem;
  padding: var(--space-5xs, 0.5rem) var(--space-2xs, 1.25rem);
  color: var(--color-text-primary-invert, #FFF);
  background: var(--color-blue-light, #3C90FF);
}

/* Huolto — the pale one, with the eagle against its left edge. */
.hsbtn-header-3 {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  min-height: 2.625rem;
  padding: var(--space-5xs, 0.5rem) var(--space-2xs, 1.25rem) var(--space-5xs, 0.5rem) calc(3.94298rem + var(--space-5xs, 0.5rem));
  overflow: hidden;
  color: var(--color-text-primary, #27283F);
  background: var(--color-blue-wisper, #F0F7FF);
  border: 0.0625rem solid var(--color-blue-extralight, #AFD2FF);
}

/* Its own hover: the shared one is the navy, which this pale button jumps
   straight past. The other two keep the navy. */
.hsbtn-header-3:hover,
.hsbtn-header-3:focus {
  color: var(--color-text-primary-invert, #FFF);
  background: var(--color-blue, #0059ce);
  border-color: var(--color-blue, #0059ce);
}

.hsbtn-header-3::before {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: 3.94298rem;
  background-image: url(https://2612857.fs1.hubspotusercontent-na1.net/hubfs/2612857/stravent-2026-theme-assets/cta-eagle.svg);
  background-repeat: no-repeat;
  background-position: center;
  background-size: cover;
}

.site-footer {
  color: var(--color-text-secondary-invert);
  background: var(--color-stravent);
}
.site-footer a {
  color: inherit;
  text-decoration: none;
}
.site-footer a:hover, .site-footer a:focus {
  color: var(--color-text-primary-invert);
  text-decoration: underline;
}
.site-footer__band {
  padding-top: var(--space-4xl);
  padding-bottom: var(--space-4xl);
  border-bottom: 0.0625rem solid var(--color-blue);
}
.site-footer__band--bottom {
  padding-top: var(--space-l);
  padding-bottom: var(--space-l);
  border-bottom: 0;
}
.site-footer {
  /**
   * Band 1 – logo, tagline, newsletter.
   */
}
.site-footer__intro {
  display: flex;
  gap: var(--space-3xs);
}
@media (max-width: 65rem) {
  .site-footer__intro {
    flex-direction: column;
    gap: var(--space-l);
  }
}
.site-footer__brand, .site-footer__newsletter {
  display: flex;
  flex: 1 1 0;
  flex-direction: column;
  gap: var(--space-3xs);
  min-width: 0;
}
.site-footer__logo {
  display: block;
  width: 5.0625rem;
  line-height: 0;
}
.site-footer__logo:hover, .site-footer__logo:focus {
  text-decoration: none;
}
.site-footer__logo svg {
  display: block;
  width: 100%;
  height: auto;
}
.site-footer__tagline {
  max-width: 21.4375rem;
  color: var(--color-text-primary-invert);
}
.site-footer__tagline p {
  font-size: var(--text-410);
  letter-spacing: -0.02rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 500;
  margin: 0;
}
.site-footer__newsletter-content {
  display: flex;
  flex-direction: column;
  gap: var(--space-3xs);
}
.site-footer__newsletter-content h2 {
  font-size: var(--heading-200);
  letter-spacing: -0.045rem;
  line-height: 1.15;
  font-family: var(--font-family-title);
  font-weight: 500;
  margin: 0;
  color: var(--color-text-primary-invert);
}
.site-footer__newsletter-content p {
  font-size: var(--text-410);
  letter-spacing: -0.02rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 500;
  color: var(--color-text-primary-invert);
}
.site-footer__form {
  --hsf-global__color: var(--color-text-secondary-invert);
  --hsf-heading__color: var(--color-text-primary-invert);
  --hsf-richtext__color: var(--color-text-secondary-invert);
  --hsf-field-label__color: var(--color-text-primary-invert);
  --hsf-field-input__color: var(--color-text-secondary-invert);
  --hsf-field-input__placeholder-color: var(--color-text-secondary-invert);
  --hsf-field-input__background-color: transparent;
  --hsf-field-input__border-width: 0;
  --hsf-field-input__padding: 0;
  --hsf-field-description__color: var(--color-text-secondary-invert);
  --hsf-field-footer__color: var(--color-text-secondary-invert);
  --hsf-infoalert__color: var(--color-text-secondary-invert);
  --hsf-button__color: var(--color-background-primary);
  --hsf-button__background-color: var(--color-blue-light);
  --hsf-button__border-color: var(--color-blue-light);
  --hsf-button__padding: var(--space-5xs) var(--space-2xs);
  --hsf-button--hover__background-color: var(--color-blue);
  --hsf-button--hover__border-color: var(--color-blue);
  --hsf-button--focus__background-color: var(--color-blue);
  --hsf-button--focus__border-color: var(--color-blue);
  --hsf-row__vertical-spacing: var(--space-5xs);
  --hsf-module__vertical-spacing: var(--space-5xs);
}
.site-footer__form .hs-form,
.site-footer__form .hsfc-Step {
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  gap: var(--space-5xs);
}
.site-footer__form .hs-form > .hs-form-field,
.site-footer__form .hsfc-Step__Content {
  flex: 1 1 12rem;
  min-width: 0;
}
.site-footer__form .hs-form > .hs_submit,
.site-footer__form .hsfc-Step__Navigation {
  display: flex;
  flex-shrink: 0;
  align-items: stretch;
}
.site-footer__form .hs-form > .hs_error_rollup,
.site-footer__form .hs-form > .legal-consent-container {
  flex: 1 0 100%;
}
.site-footer__form .hs-form .hs-form-field,
.site-footer__form div:has(> .hsfc-FieldLabel):has(> input) {
  display: flex;
  align-items: center;
  gap: var(--space-5xs);
  margin: 0;
  padding: var(--space-3xs);
  background: var(--color-black-10);
  border: 0.0625rem solid var(--color-blue-light);
}
.site-footer__form .hs-form .hs-form-field:has(input:focus-visible),
.site-footer__form div:has(> .hsfc-FieldLabel):has(> input:focus-visible) {
  outline: 0.125rem solid var(--color-text-primary-invert);
  outline-offset: 0.125rem;
}
.site-footer__form .hs-form .hs-form-field > label,
.site-footer__form [data-hsfc-id=Renderer].hsfc-Renderer .hsfc-FieldLabel:not(:has(input)) {
  flex-shrink: 0;
  margin: 0;
  color: var(--color-text-primary-invert);
  background: var(--color-blue);
  border-color: var(--color-blue-light);
}
.site-footer__form .hs-form .hs-form-field > .input {
  flex: 1 1 auto;
  min-width: 0;
  margin: 0;
}
.site-footer__form input[type=email],
.site-footer__form input[type=text] {
  font-size: var(--text-410);
  letter-spacing: -0.02rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 500;
  padding: 0;
  color: var(--color-text-secondary-invert);
  background: none;
  border: 0;
}
.site-footer__form input[type=email]::-moz-placeholder, .site-footer__form input[type=text]::-moz-placeholder {
  color: var(--color-text-secondary-invert);
  opacity: 1;
}
.site-footer__form input[type=email]::placeholder,
.site-footer__form input[type=text]::placeholder {
  color: var(--color-text-secondary-invert);
  opacity: 1;
}
.site-footer__form input[type=email]:focus,
.site-footer__form input[type=text]:focus {
  border: 0;
  outline: none;
}
.site-footer__form .hs-form .hs-button,
.site-footer__form .hs-form input[type=submit] {
  height: 100%;
  padding: var(--space-5xs) var(--space-2xs);
  color: var(--color-background-primary);
  background: var(--color-blue-light);
}
.site-footer__form .hs-form .hs-button:hover, .site-footer__form .hs-form .hs-button:focus,
.site-footer__form .hs-form input[type=submit]:hover,
.site-footer__form .hs-form input[type=submit]:focus {
  color: var(--color-background-primary);
  background: var(--color-blue);
}
.site-footer__form .hs-form .hs-error-msgs li label,
.site-footer__form .hs-form .hs-error-msgs label.hs-error-msg {
  color: var(--color-system-error);
}
.site-footer {
  /**
   * Band 2 – link columns.
   */
}
.site-footer__menus {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-3xs);
}
@media (max-width: 65rem) {
  .site-footer__menus {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    row-gap: var(--space-l);
  }
}
.site-footer__col h2 {
  font-size: var(--text-410);
  letter-spacing: -0.02rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 500;
  margin: 0 0 var(--space-4xs);
  color: var(--color-text-primary-invert);
}
.site-footer__col ul {
  margin: 0;
  padding: 0;
  list-style: none;
}
.site-footer__col ul li::after,
.site-footer__col ul li::before {
  display: none;
}
.site-footer__col ul {
  display: flex;
  flex-direction: column;
  gap: 0;
}
.site-footer__col li {
  font-size: var(--text-300);
  letter-spacing: -0.0175rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
  padding-left: 0;
}
.site-footer {
  /**
   * Band 3 – copyright and legal links.
   */
}
.site-footer__bottom {
  font-size: var(--text-200);
  letter-spacing: -0.0075rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3xs);
}
@media (max-width: 48rem) {
  .site-footer__bottom {
    flex-direction: column;
    align-items: flex-start;
  }
}
.site-footer__bottom p {
  margin: 0;
}
.site-footer__legal p {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2xs);
}

/* stylelint-disable no-duplicate-selectors */
@media (min-width: 60.001rem) {
  .site-nav {
    display: flex;
    gap: var(--gutter);
  }
}
@media (max-width: 60rem) {
  .site-nav {
    width: 100%;
  }
}

.site-nav__items,
.site-nav__items ul {
  margin: 0;
  padding: 0;
  list-style: none;
}
.site-nav__items li::after,
.site-nav__items li::before,
.site-nav__items ul li::after,
.site-nav__items ul li::before {
  display: none;
}

@media (max-width: 60rem) {
  .site-nav,
  .site-nav__items .sub-menu {
    display: none;
  }
  .site-nav.is-opened,
  .site-nav__items .sub-menu.is-opened {
    display: block;
  }
}

@media (min-width: 60.001rem) {
  .site-nav__items {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    gap: var(--space-s);
    height: 100%;
  }
  .site-nav__items .menu-item-depth-0 > a,
  .site-nav__items .menu-item-depth-0 > .site-nav__sub-toggle {
    display: flex;
    align-items: center;
    height: 100%;
    padding: 0;
  }
}
@media (max-width: 60rem) {
  .site-nav__items {
    gap: 0;
    margin: 0 calc(var(--side-padding) * -1);
  }
  .site-nav__items .menu-item-depth-0 > a,
  .site-nav__items .menu-item-depth-0 > button {
    align-items: center;
    display: flex;
    gap: var(--space-xs);
    padding: var(--space-s) var(--side-padding);
    width: 100%;
    border-top: 1px solid var(--color-border);
  }
  .site-nav__items .menu-item-depth-0 > a[aria-expanded=true],
  .site-nav__items .menu-item-depth-0 > button[aria-expanded=true] {
    border-bottom: 2px solid var(--color-blue-light);
  }
  .site-nav__items .menu-item-depth-0:last-child > a,
  .site-nav__items .menu-item-depth-0:last-child > button {
    border-bottom: 1px solid var(--color-border);
  }
  .site-nav__items .menu-item-depth-0 .sub-menu {
    display: block;
    opacity: 0;
    position: absolute;
    overflow: hidden;
    height: 0;
    transform: translateY(-1rem);
    transition: transform var(--transition-2) cubic-bezier(0.14, 0.59, 1, 1.01), opacity var(--transition-2) cubic-bezier(0.14, 0.59, 1, 1.01);
    visibility: hidden;
    padding: var(--space-m) var(--space-2xl);
  }
  .site-nav__items .menu-item-depth-0 .sub-menu.is-opened {
    height: auto;
    opacity: 1;
    position: relative;
    transform: translateY(0);
    visibility: visible;
  }
  .site-nav__items .menu-item-depth-1 + .menu-item-depth-1 {
    padding-top: var(--space-m);
  }
  .site-nav__items .menu-item-depth-2 > a {
    padding: var(--space-s) var(--space-xs);
  }
}

@media (max-width: 60rem) {
  .menu-item-depth-0,
  .site-nav__extra {
    opacity: 0;
  }
  .has-nav-open .menu-item-depth-0,
  .has-nav-open .site-nav__extra {
    animation: fadeIn 317ms cubic-bezier(0.4, 0, 0.6, 1) forwards;
  }
}

.site-nav__items .sub-menu .sub-menu {
  all: unset;
  display: block;
  padding-left: var(--space-3xs);
}
.site-nav__items .sub-menu .site-nav__sub-sub-toggle {
  display: none;
}
@media (min-width: 60.001rem) {
  .site-nav__items .sub-menu {
    background-color: var(--color-white);
    border: 1px solid var(--color-border);
    left: -999em;
    opacity: 0;
    padding: var(--space-2xs);
    position: absolute;
    text-align: left;
    top: 100%;
    visibility: hidden;
    width: 12rem;
    z-index: 300;
  }
  .site-nav__items .sub-menu.is-opened {
    left: calc(var(--space-s) * -1);
    animation: openMenu var(--transition-2) cubic-bezier(0.14, 0.59, 1, 1.01) forwards;
    opacity: 1;
    visibility: visible;
  }
}

.menu-item {
  padding-left: 0;
  position: relative;
}

.menu-item a,
.site-nav__sub-toggle {
  text-decoration: none;
  display: inline-block;
}
.menu-item a svg,
.site-nav__sub-toggle svg {
  display: inline-block;
  pointer-events: none;
  position: relative;
  transition: transform var(--transition-2);
  vertical-align: middle;
  margin-left: var(--space-3xs);
}
@media (max-width: 60rem) {
  .menu-item a svg:last-child,
  .site-nav__sub-toggle svg:last-child {
    width: 0.7rem;
    height: auto;
  }
}
.menu-item a:hover, .menu-item a[aria-expanded=true],
.site-nav__sub-toggle:hover,
.site-nav__sub-toggle[aria-expanded=true] {
  outline: 0;
}

.site-nav__sub-toggle {
  min-width: 1px;
  padding: 0;
  border-radius: 0;
  font-size: inherit;
  font-family: inherit;
  font-weight: inherit;
  line-height: inherit;
  border: 0;
  background: rgba(255, 255, 255, 0);
}
.site-nav__sub-toggle:hover, .site-nav__sub-toggle:focus {
  background: unset;
}
.site-nav__sub-toggle {
  background-color: transparent;
  border: 0;
  cursor: pointer;
}
.site-nav__sub-toggle svg {
  stroke: currentColor;
  display: inline-block;
  pointer-events: none;
  position: relative;
  transition: transform var(--transition-2);
  vertical-align: middle;
}
@media (min-width: 60.001rem) {
  .site-nav__sub-toggle[aria-expanded=true] {
    box-shadow: var(--underline-box-shadow);
  }
}
.site-nav__sub-toggle[aria-expanded=true] svg {
  transform: rotate(-180deg);
}

.menu-item a[hidden] {
  display: none;
}

a[aria-current=page] {
  color: var(--color-primary-500);
}

.site-nav__toggle {
  min-width: 1px;
  padding: 0;
  border-radius: 0;
  font-size: inherit;
  font-family: inherit;
  font-weight: inherit;
  line-height: inherit;
  border: 0;
  background: rgba(255, 255, 255, 0);
}
.site-nav__toggle:hover, .site-nav__toggle:focus {
  background: unset;
}
.site-nav__toggle {
  background-color: inherit;
  border: none;
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 0.4rem 0;
}
@media (min-width: 60.001rem) {
  .site-nav__toggle {
    display: none;
  }
}
.site-nav__toggle:hover, .site-nav__toggle:focus, .site-nav__toggle:focus-visible {
  background: unset;
}
.site-nav__toggle-inner {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  width: 1.5625rem;
}
.site-nav__toggle-inner span {
  display: block;
  height: 0.125rem;
  width: 100%;
  background: var(--color-blue);
  transition: all 0.55s cubic-bezier(0.075, 0.82, 0.165, 1);
}
.site-nav__toggle[aria-expanded=true] .site-nav__toggle-inner {
  transform: rotate(45deg);
  transition: all 0.25s ease 0.05s;
}
.site-nav__toggle[aria-expanded=true] .site-nav__toggle-inner span:first-child {
  transform: translateY(0.375rem);
}
.site-nav__toggle[aria-expanded=true] .site-nav__toggle-inner span:nth-child(2) {
  opacity: 0;
}
.site-nav__toggle[aria-expanded=true] .site-nav__toggle-inner span:last-child {
  transform: translateY(-0.375rem) rotate(90deg);
}

.menu-item a,
.menu-item button {
  color: var(--color-black);
  transition: box-shadow var(--transition-2);
}

.menu-item-depth-0 {
  height: 100%;
  min-height: 3.3125rem;
}
.menu-item-depth-0 > a,
.menu-item-depth-0 > button {
  font-size: var(--text-nav);
  letter-spacing: -0.02rem;
  line-height: 1.2;
  font-family: var(--font-family-base);
  font-weight: 400;
}
.menu-item-depth-0 > a:focus-visible,
.menu-item-depth-0 > button:focus-visible {
  background-color: transparent;
  box-shadow: none;
  outline: none;
  outline-offset: 0;
}
.menu-item-depth-0 > a:focus,
.menu-item-depth-0 > button:focus {
  outline: none;
}
@media (min-width: 60.001rem) {
  .menu-item-depth-0 > a:hover, .menu-item-depth-0 > a:focus-visible,
  .menu-item-depth-0 > button:hover,
  .menu-item-depth-0 > button:focus-visible {
    box-shadow: var(--underline-box-shadow);
    text-decoration: none;
  }
}

.menu-item-depth-1 > a {
  font-size: var(--text-300);
  letter-spacing: -0.0175rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
  width: 100%;
}
.menu-item-depth-1 > a:hover {
  color: var(--color-text-link-secondary);
}
.menu-item-depth-1 > a:focus-visible {
  background-color: var(--color-blue-wisper);
  box-shadow: 0 0 0 var(--space-6xs) var(--color-blue-wisper);
  outline: 0.0625rem dashed var(--color-blue);
  outline-offset: var(--space-6xs);
  color: var(--color-text-link-secondary);
}

/**
 * Page hero, rendered by templates/default.html.
 *
 * The two-column layout comes from .media-text — only what differs from it
 * belongs here.
 */
@media (max-width: 48rem) {
  .page-hero .media-text__wrapper {
    grid-template-areas: "content" "image";
  }
}

/**
 * Reference hero, rendered by templates/reference.html.
 *
 * Two equal columns: the case text, its tag chips and the about-reference
 * blocks on the left, the photo and the link groups on the right. The
 * about-reference blocks style themselves — see that module's own stylesheet.
 */
.site-hero {
  padding-top: var(--space-l);
  padding-bottom: var(--space-4xl);
}
.site-hero__wrapper {
  display: grid;
  gap: var(--space-2xl);
}
@media (min-width: 65.001rem) {
  .site-hero__wrapper {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
.site-hero__content {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}
.site-hero__content h1 {
  margin: 0;
}
.site-hero__content .tag-list {
  margin-bottom: calc(var(--space-3xs) - var(--space-xs));
}
.site-hero__image {
  margin: 0;
  border: 0.0625rem solid var(--color-border-secondary);
}
.site-hero__image img {
  display: block;
  width: 100%;
  height: auto;
}
@media (min-width: 65.001rem) {
  .site-hero__image {
    flex: 1 1 auto;
    min-height: 12rem;
  }
  .site-hero__image img {
    height: 100%;
    -o-object-fit: cover;
       object-fit: cover;
  }
}
.site-hero {
  /**
   * Link groups.
   *
   * The design draws every group inside one bordered box, so the border sits
   * on the wrapper and the groups are just stacked rows within it.
   */
}
.site-hero__link-groups {
  padding: var(--space-xs);
  background: var(--color-background-primary);
  border: 0.0625rem solid var(--color-border-primary);
}
.site-hero__link-group + .site-hero__link-group {
  margin-top: var(--space-4xs);
}
.site-hero__link-group h2 {
  font-size: var(--text-610);
  letter-spacing: -0.05rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 500;
  margin: 0 0 var(--space-4xs);
}
.site-hero__links {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-3xs);
}

/**
 * Reference page prose.
 *
 * The case write-up sits below a big hero, so its headings run a step smaller
 * than the site scale — h2 at heading-400 rather than heading-500, h3 at
 * heading-300. Scoped to the rich text in the reference page's drag-and-drop
 * area, so modules dropped alongside it keep their own heading sizes.
 */
.reference-dnd-area .widget-type-rich_text h2 {
  font-size: var(--heading-400);
  letter-spacing: -0.06rem;
  line-height: 1.15;
  font-family: var(--font-family-title);
  font-weight: 500;
}
.reference-dnd-area .widget-type-rich_text h3 {
  font-size: var(--heading-300);
  letter-spacing: -0.0488rem;
  line-height: 1.15;
  font-family: var(--font-family-title);
  font-weight: 500;
}

/**
 * Industry hero.
 *
 * Same two columns as the reference hero. The image runs to the design's
 * ratio rather than filling the column, because there is nothing below it to
 * line up with.
 */
@media (min-width: 65.001rem) {
  .site-hero--industry .site-hero__image {
    flex: 0 0 auto;
    aspect-ratio: 512/418;
  }
}

/**
 * Blog archive and post.
 *
 * Named for the article rather than the blog because 05-layouts/_blog.scss
 * already holds that namespace — that one is the boilerplate's pagination and
 * filter list, this is the design's own.
 *
 * The listing cards are the shared `.post-item--article` in _post-item.scss;
 * what belongs here is the featured post at the top of the archive and the
 * post's own hero and body column. The filter chips and the archive hero are
 * shared with the other archives in _archive.scss.
 */
/* The wide first post of the unfiltered archive. */
.featured-post {
  position: relative;
  display: grid;
  gap: var(--space-2xl);
  margin-bottom: var(--space-l);
  padding-bottom: var(--space-l);
  border-bottom: 0.0625rem solid var(--color-border-primary);
}
@media (min-width: 65.001rem) {
  .featured-post {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: center;
  }
}
.featured-post__content {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-4xs);
  min-width: 0;
}
.featured-post__title {
  font-size: var(--heading-500);
  letter-spacing: -0.075rem;
  line-height: 1.15;
  font-family: var(--font-family-title);
  font-weight: 500;
  margin: 0;
}
.featured-post__title a {
  color: inherit;
  text-decoration: none;
}
.featured-post__description {
  font-size: var(--text-310);
  letter-spacing: -0.0175rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 500;
  margin: 0;
  color: var(--color-text-secondary);
}
.featured-post__image {
  min-width: 0;
  margin: 0;
}
.featured-post__image img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 16/9;
  -o-object-fit: cover;
     object-fit: cover;
}
.featured-post:hover .featured-post__more, .featured-post:has(a:focus-visible) .featured-post__more {
  text-decoration: underline;
}

/* A post's hero: the copy beside its image. */
.article-hero {
  padding-top: var(--space-l);
  padding-bottom: var(--space-4xl);
  border-bottom: 0.0625rem solid var(--color-border-primary);
}
.article-hero__wrapper {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--space-2xl);
}
@media (min-width: 65.001rem) {
  .article-hero__wrapper {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: start;
  }
}
.article-hero__content {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-xs);
}
.article-hero__content h1 {
  font-size: var(--heading-400);
  letter-spacing: -0.06rem;
  line-height: 1.15;
  font-family: var(--font-family-title);
  font-weight: 500;
}
.article-hero__title {
  margin: 0;
}
.article-hero__summary {
  color: var(--color-text-secondary);
}
.article-hero__image {
  margin: 0;
}
.article-hero__image img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 32/25;
  -o-object-fit: cover;
     object-fit: cover;
}

/**
 * The post body runs to a reading measure rather than the full container, and
 * its headings a step smaller than the site scale — the h1 above it is already
 * doing the shouting. Scoped to the post's own prose so a module beside it
 * keeps its own sizes, the same way the reference page does it.
 */
.article-body {
  padding-bottom: var(--space-4xl);
  padding-top: var(--space-4xl);
}
.article-body__wrapper {
  max-width: 47.5rem;
}
.article-body .blog-post h2 {
  font-size: var(--heading-400);
  letter-spacing: -0.06rem;
  line-height: 1.15;
  font-family: var(--font-family-title);
  font-weight: 500;
}
.article-body .blog-post h3 {
  font-size: var(--heading-200);
  letter-spacing: -0.045rem;
  line-height: 1.15;
  font-family: var(--font-family-title);
  font-weight: 500;
}

@media (min-width: 48.001rem) {
  .posts-list {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    -moz-column-gap: var(--gutter);
         column-gap: var(--gutter);
    row-gap: var(--gutter);
  }
}

.post-item {
  position: relative;
}
@media (max-width: 48rem) {
  .post-item {
    margin-top: var(--gutter);
  }
  .post-item:first-child {
    margin-top: 0;
  }
}
.post-item h3 {
  font-size: var(--heading-300);
  letter-spacing: -0.0488rem;
  line-height: 1.15;
  font-family: var(--font-family-title);
  font-weight: 500;
}
.post-item__image {
  margin: 0;
}

/**
 * Bordered cards.
 *
 * Three variants share one frame — image above, bordered content below:
 *
 *   --reference      reference lifts and the reference archive
 *   --industry       the industry archive, taller image and two links
 *   --industry-lift  industry lifts, the reference count where the
 *                    reference card puts its description
 *
 * Output by `reference_item`, `industry_item` and `industry_lift_item` in
 * macros/blog.html. Anything specific to one of them is below the shared block.
 */
.post-item--reference,
.post-item--industry,
.post-item--industry-lift,
.post-item--product,
.post-item--product-category,
.post-item--article {
  display: flex;
  flex-direction: column;
  height: 100%;
  margin-top: 0;
  overflow: hidden;
  background: var(--color-background-primary);
  border: 0.0625rem solid var(--color-border-primary);
  transition: border-color var(--transition-2);
}
.post-item--reference .post-item__image,
.post-item--industry .post-item__image,
.post-item--industry-lift .post-item__image,
.post-item--product .post-item__image,
.post-item--product-category .post-item__image,
.post-item--article .post-item__image {
  flex-shrink: 0;
  height: 9.375rem;
}
.post-item--reference .post-item__image img,
.post-item--industry .post-item__image img,
.post-item--industry-lift .post-item__image img,
.post-item--product .post-item__image img,
.post-item--product-category .post-item__image img,
.post-item--article .post-item__image img {
  display: block;
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
}
.post-item--reference .post-item__image + .post-item__content,
.post-item--industry .post-item__image + .post-item__content,
.post-item--industry-lift .post-item__image + .post-item__content,
.post-item--product .post-item__image + .post-item__content,
.post-item--product-category .post-item__image + .post-item__content,
.post-item--article .post-item__image + .post-item__content {
  border-top: 0.0625rem solid var(--color-border-primary);
}
.post-item--reference .post-item__content,
.post-item--industry .post-item__content,
.post-item--industry-lift .post-item__content,
.post-item--product .post-item__content,
.post-item--product-category .post-item__content,
.post-item--article .post-item__content {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-4xs);
  padding: var(--space-xs);
}
.post-item--reference .post-item__title,
.post-item--industry .post-item__title,
.post-item--industry-lift .post-item__title,
.post-item--product .post-item__title,
.post-item--product-category .post-item__title,
.post-item--article .post-item__title {
  font-size: var(--text-510);
  letter-spacing: -0.0394rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 500;
  margin: 0;
  color: var(--color-text-primary);
}
.post-item--reference .post-item__title a,
.post-item--industry .post-item__title a,
.post-item--industry-lift .post-item__title a,
.post-item--product .post-item__title a,
.post-item--product-category .post-item__title a,
.post-item--article .post-item__title a {
  color: inherit;
  text-decoration: none;
}
.post-item--reference .post-item__description,
.post-item--industry .post-item__description,
.post-item--industry-lift .post-item__description,
.post-item--product .post-item__description,
.post-item--product-category .post-item__description,
.post-item--article .post-item__description {
  font-size: var(--text-300);
  letter-spacing: -0.0175rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
  margin: 0;
  color: var(--color-text-secondary);
}

/* Cards that are a single link highlight as one. */
.post-item--reference:hover, .post-item--reference:has(a:focus-visible),
.post-item--industry:hover,
.post-item--industry:has(a:focus-visible),
.post-item--industry-lift:hover,
.post-item--industry-lift:has(a:focus-visible),
.post-item--product:hover,
.post-item--product:has(a:focus-visible),
.post-item--product-category:hover,
.post-item--product-category:has(a:focus-visible),
.post-item--article:hover,
.post-item--article:has(a:focus-visible) {
  border-color: var(--color-blue-extralight);
}
.post-item--reference:hover .post-item__more, .post-item--reference:has(a:focus-visible) .post-item__more,
.post-item--industry:hover .post-item__more,
.post-item--industry:has(a:focus-visible) .post-item__more,
.post-item--industry-lift:hover .post-item__more,
.post-item--industry-lift:has(a:focus-visible) .post-item__more,
.post-item--product:hover .post-item__more,
.post-item--product:has(a:focus-visible) .post-item__more,
.post-item--product-category:hover .post-item__more,
.post-item--product-category:has(a:focus-visible) .post-item__more,
.post-item--article:hover .post-item__more,
.post-item--article:has(a:focus-visible) .post-item__more {
  text-decoration: underline;
}
.post-item--reference .post-item__more,
.post-item--industry .post-item__more,
.post-item--industry-lift .post-item__more,
.post-item--product .post-item__more,
.post-item--product-category .post-item__more,
.post-item--article .post-item__more {
  margin-top: auto;
  padding-top: var(--space-4xs);
}

/* The archive card leads with a larger image. */
.post-item--industry .post-item__image {
  height: 17.25rem;
}
.post-item--industry .post-item__links {
  margin-top: auto;
}

/**
 * The product card shows the product itself rather than a photograph, so the
 * image is contained on a tint instead of cropped to fill, and it carries no
 * "read more" line — the whole card is the link.
 */
.post-item--product .post-item__image,
.post-item--product-category .post-item__image {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--space-4xs);
  background: var(--color-grey-200);
}
.post-item--product .post-item__image img,
.post-item--product-category .post-item__image img {
  width: auto;
  max-width: 100%;
  height: 100%;
  -o-object-fit: contain;
     object-fit: contain;
}

/* The category card carries a link rather than tags, so it opens taller. */
.post-item--product-category .post-item__image {
  height: 11.25rem;
}

/* The blog card leads with its tag and date rather than an image. */
.post-item--article .post-item__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-5xs);
}

/* Shared by the card, the featured post and a post's own hero. */
.post-item__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-5xs);
}

.post-item__date {
  font-size: var(--text-200);
  letter-spacing: -0.0075rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin: 0;
  padding: var(--space-6xs) var(--space-5xs);
  color: var(--color-text-primary);
  background: var(--color-grey-200);
  border: 0.0625rem solid var(--color-border-secondary);
}

.product-hero {
  padding-top: var(--space-l);
  padding-bottom: var(--space-4xl);
}
.product-hero__wrapper {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--space-2xl);
}
@media (min-width: 65.001rem) {
  .product-hero__wrapper {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: start;
  }
}
.product-hero__media {
  min-width: 0;
}
.product-hero__content {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}
.product-hero__content h1 {
  margin: 0;
}
.product-hero__content .tag-list {
  margin-bottom: calc(var(--space-3xs) - var(--space-xs));
}
.product-hero__slider {
  width: 100%;
  height: -moz-fit-content;
  height: fit-content;
  border: 0.0625rem solid var(--color-border-secondary);
}
.product-hero__slide {
  align-self: flex-start;
  height: -moz-fit-content;
  height: fit-content;
  margin: 0;
}
.product-hero__slide img {
  display: block;
  width: 100%;
  height: auto;
  -o-object-fit: contain;
     object-fit: contain;
}
.product-hero .swiper-navigation {
  position: absolute;
  bottom: var(--space-4xs);
  left: var(--space-4xs);
  z-index: 2;
  display: flex;
  gap: 0.0625rem;
}
.product-hero .swiper-button {
  position: static;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 3.125rem;
  height: 3.125rem;
  margin: 0;
  padding: 0;
  background: var(--color-background-primary);
  border: 0.0625rem solid var(--color-border-primary);
  cursor: pointer;
  transition: background var(--transition-2);
}
.product-hero .swiper-button::after {
  font-size: var(--text-410);
  letter-spacing: -0.02rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 500;
  color: var(--color-text-primary);
}
.product-hero .swiper-button.swiper-button-prev::after {
  content: "←";
}
.product-hero .swiper-button.swiper-button-next::after {
  content: "→";
}
.product-hero .swiper-button:hover, .product-hero .swiper-button:focus-visible {
  background: var(--color-grey-200);
}
.product-hero .swiper-button.swiper-button-disabled {
  opacity: 0.4;
  cursor: default;
}
.product-hero .swiper-pagination {
  position: static;
  display: flex;
  gap: var(--space-6xs);
  width: 100%;
  margin-top: var(--space-6xs);
}
.product-hero .swiper-pagination-bullet {
  flex: 1 1 0;
  width: auto;
  height: auto;
  margin: 0 !important;
  padding: var(--space-6xs);
  background: transparent;
  border: 0.0625rem solid var(--color-border-primary);
  border-radius: 0;
  opacity: 1;
  cursor: pointer;
  transition: border-color var(--transition-2);
}
.product-hero .swiper-pagination-bullet img {
  display: block;
  width: 100%;
  aspect-ratio: 16/9;
  -o-object-fit: cover;
     object-fit: cover;
}
.product-hero .swiper-pagination-bullet:hover, .product-hero .swiper-pagination-bullet.swiper-pagination-bullet-active {
  border-color: var(--color-blue-extralight);
}

.social-share {
  margin: 0;
  padding: 0;
  list-style: none;
}
.social-share li::after,
.social-share li::before {
  display: none;
}
.social-share {
  display: flex;
  flex-flow: wrap;
}
.social-share__item {
  margin: 0 1.3rem 0 0;
}
.social-share__item:last-child {
  margin-right: 0;
}
.social-share__item--label {
  flex: 0 0 100%;
  margin: 0 0 1rem;
  font-size: var(--heading-300);
  letter-spacing: -0.0488rem;
  line-height: 1.15;
  font-family: var(--font-family-title);
  font-weight: 500;
}
.social-share a {
  color: var(--color-primary-500);
}
.social-share a:hover, .social-share a:focus {
  text-decoration: none;
}

/**
 * Shared media and video styles.
 *
 * Used by any module that outputs an image or a Plyr video with an optional
 * caption. Modules keep only their own layout rules (grid area, sizing) and
 * add these classes to the figure:
 *
 *   <figure class="media-component media-component--image">
 *   <figure class="media-component media-component--video js-plyr-video">
 *
 * Videos always render a `.media-caption` holding the play button; the
 * `.media-caption__text` bar is only added when the editor sets a caption.
 * Plyr itself is loaded per module with require_js/require_css from vendor/,
 * and initialised by module-js/video.js.
 */
.media-component {
  position: relative;
  margin: 0;
}
.media-component img {
  -o-object-fit: cover;
     object-fit: cover;
  vertical-align: top;
  width: 100%;
}

.media-component--video {
  --plyr-color-main: var(--color-blue);
  --plyr-control-radius: 0;
  border: 0.0625rem solid var(--color-border-secondary);
}
.media-component--video video,
.media-component--video .plyr {
  display: block;
  width: 100%;
}
.media-component--video .plyr--full-ui.plyr--video .plyr__control--overlaid {
  display: none;
}
.media-component--video:not(.is-playing) .plyr.plyr--video .plyr__controls {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

.media-caption {
  display: flex;
  align-items: stretch;
  gap: var(--space-6xs);
  position: absolute;
  z-index: 4;
  right: var(--space-l);
  bottom: var(--space-l);
  left: var(--space-l);
  transition: opacity 0.2s, visibility 0.2s;
}
.is-playing .media-caption {
  opacity: 0;
  visibility: hidden;
}

.media-caption__button {
  min-width: 1px;
  padding: 0;
  border-radius: 0;
  font-size: inherit;
  font-family: inherit;
  font-weight: inherit;
  line-height: inherit;
  border: 0;
  background: rgba(255, 255, 255, 0);
}
.media-caption__button:hover, .media-caption__button:focus {
  background: unset;
}
.media-caption__button {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 2.5rem;
  height: 2.5rem;
  padding: var(--space-4xs);
  cursor: pointer;
  background: var(--color-blue);
  transition: background 0.2s;
}
@media (min-width: 48.001rem) {
  .media-caption__button {
    width: 3.5rem;
    height: 3.5rem;
  }
}
.media-caption__button:hover, .media-caption__button:focus {
  background: var(--color-stravent);
}
.media-caption__button img {
  width: auto;
  height: 0.8125rem;
}

.media-caption__text {
  font-size: var(--text-410);
  letter-spacing: -0.02rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 500;
  display: flex;
  align-items: center;
  margin-right: auto;
  min-height: 2.5rem;
  padding: var(--space-5xs) var(--space-3xs);
  color: var(--color-text-primary-invert);
  background: var(--color-blue-light);
}
@media (min-width: 48.001rem) {
  .media-caption__text {
    min-height: 3.5rem;
  }
}

/**
 * Person card, output by the `person` macro in macros/content.html.
 *
 * Shared by any module that shows someone from the stravent_persons HubDB
 * table. The tag row holds the person's title first, then the list items from
 * the `tags` richtext column.
 */
.person-item {
  display: flex;
  flex-direction: column;
  height: 100%;
  overflow: hidden;
  background: var(--color-background-primary);
  border: 0.0625rem solid var(--color-border-primary);
}
.person-item__image {
  flex: 1 1 auto;
  min-height: 0;
  margin: 0;
}
.person-item__image img {
  display: block;
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
}
.person-item__info {
  display: flex;
  flex-direction: column;
  gap: var(--space-4xs);
  padding: var(--space-xs);
  border-top: 0.0625rem solid var(--color-border-primary);
}
.person-item__tags {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-6xs);
}
.person-item__tags ul {
  margin: 0;
  padding: 0;
  list-style: none;
}
.person-item__tags ul li::after,
.person-item__tags ul li::before {
  display: none;
}
.person-item__tags ul {
  display: contents;
}
.person-item__tags p {
  margin: 0;
}
.person-item__tag, .person-item__tags li {
  font-size: var(--text-200);
  letter-spacing: -0.0075rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
  padding: var(--space-6xs) var(--space-5xs);
  color: var(--color-text-primary);
  background: var(--color-grey-200);
  border: 0.0625rem solid var(--color-border-primary);
}
.person-item__title {
  font-size: var(--text-300);
  letter-spacing: -0.0175rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
  color: var(--color-text-secondary);
  margin: 0;
}
.person-item__name {
  font-size: var(--text-510);
  letter-spacing: -0.0394rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 500;
  margin: 0;
}
.person-item__contact {
  display: flex;
  flex-direction: column;
}
.person-item__contact a {
  font-size: var(--text-300);
  letter-spacing: -0.0175rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
  text-decoration: none;
}
.person-item__contact a:hover, .person-item__contact a:focus {
  text-decoration: underline;
}

ul {
  display: flex;
  flex-direction: column;
  gap: var(--space-4xs);
  list-style: none;
  margin: var(--text-margin) 0 0;
  padding: 0;
}
ul li {
  font-size: var(--text-310);
  letter-spacing: -0.0175rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 500;
  position: relative;
  padding-left: calc(1.25rem + var(--space-5xs));
}
ul li b,
ul li strong {
  color: var(--color-text-primary);
  font-weight: 500;
}
ul li::before {
  content: "";
  position: absolute;
  top: calc((1.5em - 1.25rem) / 2);
  left: 0;
  width: 1.25rem;
  height: 1.25rem;
  background: var(--color-blue-light);
  border-radius: 50%;
}
ul li {
  /**
   * Checkmark. Drawn into a box the same size and in the same place as
   * the circle, so the two cannot drift apart: `center` does the
   * centring, where the hand-set offsets it replaces left the tick
   * sitting high and to the left of the circle it belongs in.
   *
   * Masked rather than painted, so the tick keeps taking its colour from
   * the theme — a data URI cannot read a custom property.
   */
}
ul li::after {
  content: "";
  position: absolute;
  top: calc((1.5em - 1.25rem) / 2);
  left: 0;
  width: 1.25rem;
  height: 1.25rem;
  background: var(--color-white);
  -webkit-mask: url("data:image/svg+xml,<svg width='20' height='20' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg'><path d='M6.11 9.65 L8.94 12.48 L13.89 7.53' fill='none' stroke='black' stroke-width='1.3'/></svg>") no-repeat center/contain;
  mask: url("data:image/svg+xml,<svg width='20' height='20' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg'><path d='M6.11 9.65 L8.94 12.48 L13.89 7.53' fill='none' stroke='black' stroke-width='1.3'/></svg>") no-repeat center/contain;
}

/**
 * Download list.
 */
ul[style*=square] {
  list-style-type: none !important;
  gap: var(--space-5xs);
}
@media (min-width: 48.001rem) {
  ul[style*=square] {
    gap: var(--space-6xs);
  }
}
ul[style*=square] li {
  color: var(--color-text-primary);
  font-weight: 500;
}
ul[style*=square] li::before, ul[style*=square] li::after {
  top: 50%;
  transform: translateY(-50%);
}
ul[style*=square] li::before {
  border-radius: 0;
}
ul[style*=square] li::after {
  -webkit-mask-image: url("data:image/svg+xml,<svg width='11' height='14' viewBox='0 0 11 13.4815' xmlns='http://www.w3.org/2000/svg'><path d='M0.861506 5.59304L1.74645 4.69815L4.85369 7.8054L4.85369 0L6.14631 0L6.14631 7.8054L9.24858 4.69815L10.1385 5.59304L5.5 10.2315L0.861506 5.59304Z'/><rect y='12.2315' width='11' height='1.25'/></svg>");
  mask-image: url("data:image/svg+xml,<svg width='11' height='14' viewBox='0 0 11 13.4815' xmlns='http://www.w3.org/2000/svg'><path d='M0.861506 5.59304L1.74645 4.69815L4.85369 7.8054L4.85369 0L6.14631 0L6.14631 7.8054L9.24858 4.69815L10.1385 5.59304L5.5 10.2315L0.861506 5.59304Z'/><rect y='12.2315' width='11' height='1.25'/></svg>");
  -webkit-mask-size: 0.6875rem 0.8425rem;
  mask-size: 0.6875rem 0.8425rem;
}

.hs-private ul,
.hs-tools-menu ul,
.MuiGrid-root .MuiBreadcrumbs-ol {
  margin: 0;
  padding: 0;
  list-style: none;
}
.hs-private ul li::after,
.hs-private ul li::before,
.hs-tools-menu ul li::after,
.hs-tools-menu ul li::before,
.MuiGrid-root .MuiBreadcrumbs-ol li::after,
.MuiGrid-root .MuiBreadcrumbs-ol li::before {
  display: none;
}

/**
 * Tag chip.
 *
 * The small grey label used above headings and on person cards. Form labels get
 * the same look from the `tag-chip()` mixin, which is where the rules live.
 *
 * `.media-text__tag` and `.person-item__tag` predate this and still carry their
 * own copies; they can switch to the mixin when either is next touched.
 */
.tag {
  font-size: var(--text-200);
  letter-spacing: -0.0075rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin: 0;
  padding: var(--space-6xs) var(--space-5xs);
  color: var(--color-text-primary);
  background: var(--color-grey-200);
  border: 0.0625rem solid var(--color-border-secondary);
}

a.tag {
  text-decoration: none;
}
a.tag:hover, a.tag:focus-visible {
  text-decoration: underline;
}

/**
 * Blue chip.
 *
 * The editor's choice on product tags, for the ones that carry a promise —
 * "10v takuu" and the like — rather than a plain classification.
 */
.tag--blue {
  color: var(--color-text-link-secondary);
  background: var(--color-blue-wisper);
  border-color: var(--color-blue-extralight);
}

/* A row of chips — above a title in the reference hero, on a reference card. */
.tag-list {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-6xs);
}

/**
 * Section header.
 *
 * The tag chip + heading on the left, optional link on the right, used above a
 * grid of cards:
 *
 *   <div class="section-header">
 *     <div class="section-header__intro">
 *       <p class="tag">…</p>
 *       <div class="section-header__text"></div>
 *     </div>
 *     <div class="section-header__cta">…</div>
 *   </div>
 */
.section-header {
  display: flex;
  flex-direction: column;
  gap: var(--space-3xs);
  margin-bottom: var(--space-s);
}
@media (min-width: 48.001rem) {
  .section-header {
    align-items: flex-end;
    flex-direction: row;
    gap: var(--space-4xl);
    justify-content: space-between;
  }
}
.section-header__intro {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-3xs);
}
.section-header__text h2 {
  margin: 0;
}
.section-header__cta {
  flex-shrink: 0;
}
@media (min-width: 48.001rem) {
  .section-header__cta {
    padding-bottom: var(--space-4xs);
  }
}

.quote-carousel {
  display: flex;
  flex-direction: column;
  gap: var(--space-3xs);
  height: 100%;
  padding: var(--space-xs);
  background: var(--color-background-primary);
  border: 0.0625rem solid var(--color-border-primary);
}
.quote-carousel__viewport {
  width: 100%;
}
.quote-carousel__items {
  align-items: stretch;
}
.quote-carousel__items .quote-carousel__item {
  display: flex !important;
  flex-direction: column;
  gap: var(--space-4xs);
  height: auto;
}
.quote-carousel__quote {
  font-size: var(--text-510);
  letter-spacing: -0.0394rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 500;
  margin: 0;
  color: var(--color-text-primary);
}
.quote-carousel__quote > :first-child {
  margin-top: 0;
}
.quote-carousel__quote > :last-child {
  margin-bottom: 0;
}
.quote-carousel__author {
  display: flex;
  align-items: center;
  gap: var(--space-5xs);
  margin-bottom: auto;
}
.quote-carousel__avatar {
  flex-shrink: 0;
  width: 2.5rem;
  height: 2.5rem;
  -o-object-fit: cover;
     object-fit: cover;
  border-radius: 50%;
}
.quote-carousel__cite {
  font-size: var(--text-300);
  letter-spacing: -0.0175rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
  color: var(--color-text-secondary);
  font-style: normal;
}
.quote-carousel__controls {
  display: flex;
  align-items: center;
  gap: var(--space-xs);
  margin-top: auto;
}
.quote-carousel__nav {
  display: flex;
  align-items: center;
  gap: var(--space-4xs);
}
.quote-carousel__button {
  min-width: 1px;
  padding: 0;
  border-radius: 0;
  font-size: inherit;
  font-family: inherit;
  font-weight: inherit;
  line-height: inherit;
  border: 0;
  background: rgba(255, 255, 255, 0);
}
.quote-carousel__button:hover, .quote-carousel__button:focus {
  background: unset;
}
.quote-carousel__button {
  font-size: var(--text-300);
  letter-spacing: -0.0175rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
  display: flex;
  align-items: center;
  gap: var(--space-6xs);
  padding: 0;
  color: var(--color-text-secondary);
  background: transparent;
  cursor: pointer;
}
.quote-carousel__button:focus {
  color: var(--color-text-secondary);
  outline: none;
}
.quote-carousel__button:hover {
  background: unset;
  color: var(--color-text-link-secondary);
}
.quote-carousel__button svg {
  flex-shrink: 0;
}
.quote-carousel__controls .quote-carousel__pagination.swiper-pagination {
  position: static;
  display: flex;
  flex: 0 0 auto;
  gap: var(--space-6xs);
  width: auto;
}
.quote-carousel__controls .quote-carousel__pagination.swiper-pagination .swiper-pagination-bullet {
  width: 0.5rem;
  height: 0.5rem;
  margin: 0 !important;
  background: var(--color-blue-extralight);
  border-radius: 50%;
  opacity: 1;
  transition: background var(--transition-2);
}
.quote-carousel__controls .quote-carousel__pagination.swiper-pagination .swiper-pagination-bullet-active {
  background: var(--color-blue);
}
.quote-carousel:has(.swiper-slide:only-child) .quote-carousel__controls {
  display: none;
}

/**
 * Media + text, two-column layout.
 *
 * Shared by the image-content module and the hero, which render their columns
 * with the `media` and `text_column` macros in macros/content.html. The root
 * element carries the layout modifiers alongside its own block class:
 *
 *   <div class="media-text media-text--position-left media-text--media-image image-content">
 *
 * Anything specific to one of them belongs in that block's own stylesheet, not
 * here.
 */
.media-text {
  container-name: media-text;
  container-type: inline-size;
}
.media-text__wrapper {
  display: grid;
  grid-template-columns: 1fr;
  grid-template-rows: 1fr;
  grid-template-areas: "image" "content";
  gap: var(--space-2xl);
}
@media (min-width: 48.001rem) {
  .media-text__wrapper {
    align-items: center;
    grid-template-columns: repeat(2, 1fr);
    grid-template-areas: "image content";
  }
  .media-text--position-right .media-text__wrapper {
    grid-template-areas: "content image";
  }
}
.media-text__media {
  grid-area: image;
}
.media-text__media .person-item {
  height: auto;
}
.media-text__media .person-item__image {
  flex: 0 0 auto;
  aspect-ratio: 32/23;
}
.media-text__content {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-3xs);
  grid-area: content;
}
.media-text__tag {
  font-size: var(--text-200);
  letter-spacing: -0.0075rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
  margin: 0;
  padding: var(--space-6xs) var(--space-5xs);
  color: var(--color-text-primary);
  background: var(--color-grey-200);
  border: 0.0625rem solid var(--color-border-secondary);
}
.media-text__text h1:first-child,
.media-text__text h2:first-child {
  margin-top: 0;
}
.media-text--title-small .media-text__text h2 {
  font-size: var(--text-610);
  letter-spacing: -0.05rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 500;
}
.media-text__ctas {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-6xs);
  padding: var(--space-4xs) 0;
}

/**
 * A hero with no media.
 *
 * One column of copy rather than two, run to the reading measure the design
 * uses, and sitting closer to whatever follows — with no picture to balance,
 * the usual section spacing leaves it stranded.
 *
 * The gap is closed from both sides: this section gives up most of its bottom
 * padding, and the first module of the drag-and-drop area below gives up the
 * top of its own. Halving one alone would still leave the other's full padding.
 */
.media-text--media-none {
  padding-bottom: var(--space-xs);
}
.media-text--media-none .media-text__wrapper {
  grid-template-columns: minmax(0, 1fr);
  grid-template-areas: "content";
}
.media-text--media-none .media-text__content {
  max-width: 37.5rem;
}
.media-text--media-none + .main-dnd-area .dnd-section:first-child .vertical-padding {
  padding-top: var(--space-xs);
}
.media-text--media-none + .main-dnd-area .dnd-section:first-child .has-section-border {
  border-top: 0;
}

/**
 * Reference archive.
 *
 * Rendered by templates/reference-archive.html. The cards are the shared
 * `.post-item--reference` in _post-item.scss; what belongs here is the hero,
 * the filter chips and the load-more row.
 */
.archive-hero {
  padding-top: var(--space-l);
}
.archive-hero__wrapper {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-3xs);
}
.archive-hero__wrapper > *:not(.archive-filters) {
  max-width: 37.5rem;
}
.archive-hero__wrapper h1,
.archive-hero__wrapper p {
  margin: 0;
}

/**
 * Filters.
 *
 * One group per taxonomy, each a row of pill buttons. The chosen chip is
 * marked with `aria-selected`, which is both the state the script reads and
 * what styles it — no extra class to keep in sync.
 */
.archive-filters {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3xs);
  width: 100%;
  padding-top: var(--space-3xs);
}
.archive-filters__group {
  display: flex;
  flex: 1 1 18rem;
  flex-direction: column;
  gap: var(--space-5xs);
  padding-right: var(--space-xs);
}
.archive-filters__label {
  font-size: var(--text-410);
  letter-spacing: -0.02rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 500;
  margin: 0;
  color: var(--color-text-primary);
}
.archive-filters__tags {
  margin: 0;
  padding: 0;
  list-style: none;
}
.archive-filters__tags li::after,
.archive-filters__tags li::before {
  display: none;
}
.archive-filters__tags {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  gap: var(--space-6xs);
}
.archive-filters__tags li {
  padding-left: 0;
}

.filter-tag {
  font-size: var(--text-300);
  letter-spacing: -0.0175rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
  padding: var(--space-6xs) var(--space-4xs);
  color: var(--color-text-primary);
  background: var(--color-background-primary);
  border: 0.0625rem solid var(--color-border-secondary);
  border-radius: 62.4375rem;
  cursor: pointer;
  transition: color var(--transition-2), background var(--transition-2), border-color var(--transition-2);
}
.filter-tag:hover, .filter-tag:focus-visible {
  color: var(--color-text-link-secondary);
  background: var(--color-blue-wisper);
  border-color: var(--color-blue-extralight);
}
.filter-tag[aria-selected=true] {
  color: var(--color-text-link-secondary);
  background: var(--color-blue-wisper);
  border-color: var(--color-blue-extralight);
}

.archive-listing {
  padding-top: var(--space-l);
  padding-bottom: var(--space-4xl);
}

/* Belt and braces: a chip with no text should never draw its box. */
.tag:empty {
  display: none;
}

.posts-not-found {
  font-size: var(--text-400);
  letter-spacing: -0.02rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
  margin: var(--space-l) 0 0;
  color: var(--color-text-secondary);
}

.posts-load {
  margin-top: var(--space-l);
  padding-top: var(--space-l);
  border-top: 0.0625rem solid var(--color-border-primary);
}
.posts-load.hidden {
  display: none;
}

/**
 * Product archive grid.
 *
 * The listing and the CTA banner are children of one grid: `.list` is
 * `display: contents` so the cards it holds become grid items themselves,
 * which lets module-js/product-archive.js drop the banner partway down the
 * grid with `order` instead of interleaving it in the DOM. Putting the banner
 * inside `.list` would make List.js treat it as a card and filter it away.
 */
.product-archive__grid .list {
  display: contents;
}

.product-archive__cta {
  grid-column: 1/-1;
}
.product-archive__cta .cta-banner {
  --eagle-width: 21.4375rem;
  width: auto;
  left: auto;
  right: auto;
  margin-left: 0;
  margin-right: 0;
  padding: var(--space-l);
  border-top: 0;
}
.product-archive__cta .cta-banner--background-blue .cta-banner__wrapper {
  min-height: calc(var(--eagle-height) - var(--space-l) * 2);
}
.product-archive__cta .cta-banner__image {
  right: 0;
  bottom: calc(var(--space-l) * -1);
}

/**
 * Breadcrumb.
 *
 * HubSpot renders the markup from the menu, so everything here hangs off its
 * classes. The design puts a house against the first crumb — the site root —
 * and an arrow between the rest, with the root in the primary text colour and
 * the trail behind it in the secondary one.
 */
.hs-breadcrumb-menu-wrapper:after {
  content: "";
  display: table;
  clear: both;
}
.hs-breadcrumb-menu-wrapper {
  align-items: center;
  display: flex;
  gap: var(--space-4xs);
}

.hs-breadcrumb-menu {
  margin: 0;
  padding: 0;
  list-style: none;
}
.hs-breadcrumb-menu li::after,
.hs-breadcrumb-menu li::before {
  display: none;
}
.hs-breadcrumb-menu {
  align-items: center;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  gap: var(--space-5xs);
}
.hs-breadcrumb-menu-item {
  font-size: var(--text-200);
  letter-spacing: -0.0075rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
  padding: 0;
  color: var(--color-text-secondary);
}
.hs-breadcrumb-menu-item a {
  color: inherit;
  text-decoration: none;
}
.hs-breadcrumb-menu-item a:hover, .hs-breadcrumb-menu-item a:focus-visible {
  color: var(--color-text-primary);
  text-decoration: underline;
}
.hs-breadcrumb-menu-item {
  /**
   * The separator. Written as an arrow rather than a slash, and sat
   * inside the crumb it follows — the list gap supplies the space after
   * it, this margin the space before.
   */
}
.hs-breadcrumb-menu-item .hs-breadcrumb-menu-divider::before {
  content: "→";
  margin-left: var(--space-5xs);
  padding: 0;
  color: var(--color-text-secondary);
}
.hs-breadcrumb-menu {
  /**
   * The site root, with the house. It is a background rather than an inline
   * image because the markup comes from HubSpot's menu tag and cannot carry
   * one; the fill is baked in for the same reason.
   */
}
.hs-breadcrumb-menu-item.first-crumb {
  color: var(--color-text-primary);
}
.hs-breadcrumb-menu-item.first-crumb::before {
  content: "";
  /**
   * The theme's list bullet is an absolutely positioned blue circle
   * on every `li`, and `reset-list` only hides it — so its position,
   * fill and radius all have to be undone here or they come through
   * around the house. The shorthand is what clears the fill.
   */
  position: static;
  display: inline-block;
  width: 0.8125rem;
  height: 0.8125rem;
  margin-right: var(--space-6xs);
  vertical-align: -0.125em;
  background: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='13'%20height='13'%20viewBox='0%200%2013%2013'%20fill='none'%3E%3Cpath%20d='M10.855%2013H2.145C0.975%2013%200%2012.012%200%2010.829V6.084C0%205.486%200.26%204.901%200.715%204.498L5.07%200.546C5.915-0.182%207.085-0.182%207.93%200.546L12.285%204.498C12.74%204.888%2013%205.486%2013%206.084V10.829C12.935%2012.077%2012.025%2013%2010.855%2013ZM6.5%201.339C6.305%201.339%206.11%201.404%205.915%201.534L1.56%205.486C1.365%205.616%201.3%205.876%201.3%206.149V10.894C1.3%2011.349%201.69%2011.752%202.145%2011.752H10.79C11.245%2011.752%2011.635%2011.362%2011.635%2010.894V6.149C11.635%205.889%2011.505%205.694%2011.375%205.486L7.02%201.534C6.89%201.404%206.695%201.339%206.5%201.339Z'%20fill='%2327283F'/%3E%3C/svg%3E") no-repeat center/contain;
  border-radius: 0;
}

/**
 * Placement above a hero.
 *
 * The crumb sits outside the hero rather than inside it. It is global content,
 * and the editor lays an overlay over a global module that reaches well past
 * the module's own 18px — inside the hero that overlay covered the top of the
 * hero and swallowed the clicks meant for it.
 *
 * Outside, the spacing has to be rebuilt to land in the same places: the crumb
 * carries the `--space-xs` that used to be the hero's top padding, and the hero
 * takes `--space-l` in place of its own, which is the gap that used to sit
 * below the crumb. Padding rather than a margin, so a hero with a background
 * still reaches all the way up to the crumb.
 *
 * The heroes are listed rather than matched loosely so the rule outweighs each
 * one's own `padding-top` — and so it is greppable from either end.
 */
.site-breadcrumb {
  padding-top: var(--space-xs);
}

.site-breadcrumb + * {
  margin-top: var(--space-l);
}

.site-breadcrumb + .site-hero,
.site-breadcrumb + .page-hero,
.site-breadcrumb + .product-hero,
.site-breadcrumb + .article-hero,
.site-breadcrumb + .archive-hero,
.site-breadcrumb + .archive-listing {
  margin-top: 0;
  padding-top: var(--space-l);
}

/**
 * And the module below it draws no divider. That line is meant to separate two
 * sections; here there is nothing above it but the crumb, so it would read as a
 * rule under the breadcrumb rather than between anything.
 */
.site-breadcrumb + * .has-section-border,
.site-breadcrumb + .has-section-border {
  border-top: 0;
}

/*--------------------------------------------------------------
# Utilities - Helpers and overrides.
--------------------------------------------------------------*/
:focus {
  outline: thin dotted;
}

.screen-reader-text {
  clip: rect(1px, 1px, 1px, 1px);
  position: absolute !important;
  overflow: hidden;
}
.screen-reader-text:focus {
  background-color: var(--color-link);
  clip: auto !important;
  color: white;
  display: block;
  font-size: 0.8em;
  font-weight: bold;
  height: auto;
  padding: 0.75rem;
  left: 0.5rem;
  top: 0.5rem;
  text-decoration: none;
  width: auto;
  z-index: 100000;
}

/* Do not show the outline on the skip link target. */
#content[tabindex="-1"]:focus {
  outline: 0;
}

/**
 * Section background colours.
 *
 * A module emits one of these when its background is anything other than
 * white. Spacing is not this file's job: the band gets its height from the
 * module's own `vertical-padding`, and `has-section-border` in _sections.scss
 * is what closes the gap so the colour meets its neighbours.
 *
 * The class name carries the field value, so a new choice in a module's
 * `background_color` field only needs a rule here rather than one in every
 * module that offers it.
 */
.has-light_grey-background {
  background: var(--color-grey-200);
  /**
   * The tag chip is filled with the same grey as this band, so on it the
   * chip would disappear. The design flips it to the page background and
   * takes the border up a step to keep the edge readable.
   *
   * `.media-text__tag` is listed alongside `.tag` because it carries its own
   * copy of the chip's declarations rather than the `tag-chip` mixin.
   */
}
.has-light_grey-background .tag:not(.tag--blue),
.has-light_grey-background .media-text__tag {
  background: var(--color-background-primary);
  border-color: var(--color-black-10);
}
.has-light_grey-background {
  /**
   * Only chips sitting on the band itself, though. A listing card keeps its
   * own white background whatever the section does, so a chip inside one is
   * against white already and keeps the ordinary grey fill — flipping it too
   * left it invisible against the card.
   */
}
.has-light_grey-background .post-item .tag:not(.tag--blue) {
  background: var(--color-grey-200);
  border-color: var(--color-border-secondary);
}

/**
 * Section divider.
 *
 * Every full-width module draws its own top edge, so a stack of them ends up
 * with exactly one hairline between each pair — including one under the hero,
 * since the first module in the drag-and-drop area draws it too.
 *
 * It is an opt-in class rather than a rule on `.full-width`, because that class
 * is also on the heroes and the site footer, which should not carry the line.
 */
.has-section-border {
  border-top: 0.0625rem solid var(--color-border-primary);
}

.hs-inline-edit script[type="mce-no/type"] {
  display: block;
  background: red;
  color: #fff;
  font-size: 1rem;
  font-family: "Lucida Console";
  padding: 1rem;
}
.hs-inline-edit script[type="mce-no/type"]:before {
  content: "Hubspot render koodi, editoi muokataksesi lomaketta";
  display: block;
  margin: 0 0 1rem;
  font-family: sans-serif;
  font-size: 0.8rem;
  font-weight: bold;
  text-transform: uppercase;
}

/**
 * The editor's layout-section drag overlay.
 *
 * A single element the editor moves and resizes to whatever it is hovering,
 * inside the preview frame — which is where this stylesheet is loaded too, so
 * it can be reached from here. On a page whose breadcrumb is global content it
 * ends up stretched over the top of the hero, and since it sits above the page
 * it takes every click meant for what is underneath.
 *
 * Its size is set inline by the editor, so shrinking it would take an
 * `!important` height that clamps every section on every page. Letting the
 * clicks through instead leaves the overlay where it is and gives the hero
 * back.
 *
 * Hooked on the test id rather than the class beside it: that class is a
 * styled-components hash and is regenerated whenever HubSpot ships the editor.
 *
 * Editor only — the element does not exist on the live site.
 */
[data-test-id=layout-section-hover-overlay] {
  pointer-events: none !important;
}

/**
 * The page id printed into a hero for the editor.
 *
 * It is there to be copied into HubDB, so it has to be easy to find in a hero
 * full of real content — hence a heading's size and the brand blue, rather than
 * the body copy it would otherwise be mistaken for.
 *
 * The templates print it behind `request.postDict.inpageEditorUI`, so it never
 * reaches a visitor.
 */
.editor-page-id {
  font-size: var(--text-610);
  letter-spacing: -0.05rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 500;
  color: var(--color-blue);
}

.scroll-stop {
  overflow: hidden;
}

#CookieBanner {
  position: fixed;
  z-index: 2147483645;
  min-height: 100vh;
  min-width: 100vw;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  margin: 0 auto;
  pointer-events: none;
  display: none;
}

#CookieBanner.is-visible-cookie-banner {
  display: flex;
  align-items: center;
  justify-content: center;
}

#CookieBanner,
#CookieBanner * {
  box-sizing: border-box;
  text-underline-offset: 0.125em;
  outline-offset: 3px;
}

#CookieBannerOverlay {
  background: rgba(0, 0, 0, 0.4);
  width: 100%;
  height: 100%;
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  pointer-events: auto;
  z-index: 10;
}

.is-visible-cookie-banner #CookieBannerOverlay {
  animation: cookieBannerFadeIn 0.25s ease-in-out;
  animation-fill-mode: forwards;
}

.is-closing-cookie-banner #CookieBannerOverlay {
  animation: cookieBannerFadeOut 0.25s ease-in-out;
  animation-fill-mode: forwards;
  pointer-events: none;
}

@media (prefers-reduced-motion: reduce) {
  #CookieBanner * {
    animation-duration: 0.001ms !important;
    transition-duration: 0.001ms !important;
  }
}
#CookieBannerNotice {
  color: var(--color-text);
  max-width: 1080px;
  padding: 40px 28px;
  overflow: auto;
  max-height: 100vh;
  max-height: calc(100vh - 24px);
  width: 100%;
  width: calc(100% - 24px);
  max-width: 1080px;
  background: var(--color-background);
  margin: 0 auto;
  z-index: 500;
  pointer-events: auto;
}

@media (min-width: 450px) {
  #CookieBannerNotice {
    padding: 24px;
    max-height: calc(100vh - 48px);
    width: calc(100% - 48px);
  }
}
.is-visible-cookie-banner #CookieBannerNotice {
  animation: cookieBannerSlideIn 0.25s ease-in-out;
  animation-fill-mode: forwards;
}

.is-closing-cookie-banner #CookieBannerNotice {
  animation: cookieBannerSlideOut 0.25s ease-in-out;
  animation-fill-mode: forwards;
  pointer-events: none;
}

@media (min-width: 800px) {
  #CookieBannerNotice {
    padding: 48px;
    max-width: 49rem;
  }
}
@media (min-width: 1000px) {
  #CookieBannerNotice {
    padding: 64px;
  }
}
/**
 * Utils
 */
@keyframes cookieBannerFadeIn {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}
@keyframes cookieBannerFadeOut {
  0% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}
@keyframes cookieBannerSlideIn {
  0% {
    opacity: 0;
    transform: translateY(96px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}
@keyframes cookieBannerSlideOut {
  0% {
    opacity: 1;
    transform: translateY(0);
  }
  100% {
    opacity: 0;
    transform: translateY(96px);
  }
}
#CookieBanner button > * {
  pointer-events: none;
}

#CookieBanner ul,
#CookieBanner li {
  list-style: none;
  margin: 0;
  padding: 0;
  text-indent: 0;
}

#CookieBanner .screen-reader-text {
  border: 0;
  clip: rect(1px, 1px, 1px, 1px);
  clip-path: inset(50%);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
  word-wrap: normal !important;
}

/**
 * Content
 */
#CookieBanner .cookiebanner__main__inner {
  max-width: 1080px;
  margin: 0 auto;
}

@media (min-width: 800px) {
  #CookieBanner .cookiebanner__main__content {
    margin-right: 48px;
  }
}
#CookieBanner .cookiebanner__main__title {
  font-size: var(--heading-400);
  letter-spacing: -0.06rem;
  line-height: 1.15;
  font-family: var(--font-family-title);
  font-weight: 500;
  margin-bottom: 1rem;
}

#CookieBanner .cookiebanner__main__description {
  font-size: var(--text-400);
  letter-spacing: -0.02rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
  margin-top: 0;
  margin-bottom: 0;
}

/**
 * Buttons
 */
#CookieBanner .cookiebanner__buttons {
  margin: 0;
  padding: 0;
  list-style: none;
}
#CookieBanner .cookiebanner__buttons li::after,
#CookieBanner .cookiebanner__buttons li::before {
  display: none;
}
#CookieBanner .cookiebanner__buttons {
  margin-top: var(--space-l);
}

#CookieBanner .cookiebanner__buttons ul {
  display: flex;
  flex-direction: row;
}

@media (max-width: 800px) {
  #CookieBanner .cookiebanner__buttons ul {
    flex-direction: column;
  }
  #CookieBanner .cookiebanner__buttons ul * {
    width: 100%;
  }
}
#CookieBanner .cookiebanner__buttons__details {
  min-width: 1px;
  padding: 0;
  border-radius: 0;
  font-size: inherit;
  font-family: inherit;
  font-weight: inherit;
  line-height: inherit;
  border: 0;
  background: rgba(255, 255, 255, 0);
}
#CookieBanner .cookiebanner__buttons__details:hover, #CookieBanner .cookiebanner__buttons__details:focus {
  background: unset;
}
#CookieBanner .cookiebanner__buttons__details {
  color: var(--color-link);
  height: 100%;
}

/**
 * Details
 */
#CookieBanner .cookiebanner__details {
  margin-top: var(--space-s);
  display: none;
}

#CookieBanner.is-details-open .cookiebanner__details {
  display: block;
}

#CookieBanner .cookiebanner__details__inner {
  max-width: 1080px;
  margin: 0 auto;
}

/**
 * Preferences
 */
#CookieBanner .cookiebanner__details__preferences {
  display: flex;
  flex-direction: column;
  margin-top: var(--space-s);
}

#CookieBanner .cookiebanner__details__preferences__options {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  padding: 0;
  margin: 0;
  border: 0;
  min-width: 0;
}

@media (min-width: 540px) {
  #CookieBanner .cookiebanner__preference__heading {
    display: flex;
    align-items: center;
  }
}
#CookieBanner .cookiebanner__preference {
  background: var(--color-grey-200);
  padding: var(--space-xs);
  width: 100%;
  margin-bottom: var(--space-xs);
}

#CookieBanner .cookiebanner__preference::last-of-type {
  margin-bottom: 0;
}

/* Hide the input */
#CookieBanner .cookiebanner__preference input {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
  overflow: hidden;
}

#CookieBanner .cookiebanner__preference__label {
  display: flex;
  align-items: center;
  flex-grow: 1;
  flex-direction: column;
}

@media (min-width: 540px) {
  #CookieBanner .cookiebanner__preference__label {
    flex-direction: row;
  }
}
#CookieBanner .cookiebanner__preference input:focus + .cookiebanner__preference__label,
#CookieBanner .cookiebanner__preference__label:hover {
  text-decoration: underline;
  cursor: pointer;
}

#CookieBanner .cookiebanner__preference__ui {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  width: 2.5rem;
  height: 1.375rem;
  background: #868e96;
  border-radius: 40px;
  transition: all 0.2s ease-in-out;
  cursor: pointer;
}

#CookieBanner .cookiebanner__preference__text {
  display: block;
  margin-top: 12px;
}

@media (min-width: 540px) {
  #CookieBanner .cookiebanner__preference__text {
    margin-left: 16px;
    margin-top: 0;
  }
}
#CookieBanner .cookiebanner__preference__title {
  font-size: var(--text-500);
  letter-spacing: -0.0225rem;
  line-height: 1.5;
  font-family: var(--font-family-base);
  font-weight: 400;
}

#CookieBanner .cookiebanner__preference__toggle {
  margin: 0;
  padding: 0;
  list-style: none;
}
#CookieBanner .cookiebanner__preference__toggle li::after,
#CookieBanner .cookiebanner__preference__toggle li::before {
  display: none;
}
#CookieBanner .cookiebanner__preference__toggle {
  background: transparent;
  color: var(--color-link);
  text-decoration: underline;
}

@media (max-width: 800px) {
  #CookieBanner .cookiebanner__preference__toggle {
    margin-top: var(--space-2xs);
    width: 100%;
  }
}
#CookieBanner .cookiebanner__preference__toggle:hover,
#CookieBanner .cookiebanner__preference__toggle:focus,
#CookieBanner .cookiebanner__preference__toggle:active {
  text-decoration: underline;
}

#CookieBanner .cookiebanner__preference__more {
  display: none;
  margin-top: 24px;
}

#CookieBanner .cookiebanner__preference__more__list {
  margin-top: 16px;
  width: 100%;
  overflow: auto;
  border: 1px solid rgba(0, 0, 0, 0.25);
  background: linear-gradient(to right, #f4f4f4 30%, rgba(255, 255, 255, 0)), linear-gradient(to right, rgba(255, 255, 255, 0), #f4f4f4 70%) 0 100%, radial-gradient(farthest-side at 0% 50%, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0)), radial-gradient(farthest-side at 100% 50%, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0)) 0 100%;
  background-repeat: no-repeat;
  background-color: #f4f4f4;
  background-size: 40px 100%, 40px 100%, 14px 100%, 14px 100%;
  background-position: 0 0, 100%, 0 0, 100%;
  background-attachment: local, local, scroll, scroll;
}

#CookieBanner .cookiebanner__preference__more__list table {
  width: 100%;
}

#CookieBanner .cookiebanner__preference__more__list tbody td {
  background: transparent;
  border-top: 1px solid rgba(0, 0, 0, 0.25);
}

#CookieBanner .cookiebanner__preference__more__list tbody .CybotCookiebotDialogDetailBodyContentCookieTypeTableEmpty {
  border-top: 0;
}

#CookieBanner .cookiebanner__preference__more__list a {
  text-decoration: underline;
  color: inherit;
}

#CookieBanner .cookiebanner__preference__more__list th,
#CookieBanner .cookiebanner__preference__more__list td {
  vertical-align: baseline;
  min-width: 176px;
  text-align: left;
  padding: 6px;
  background: transparent;
  font-size: 16px;
  word-break: break-word;
}

@media (min-width: 800px) {
  #CookieBanner .cookiebanner__preference__more__list th,
  #CookieBanner .cookiebanner__preference__more__list td {
    padding: 8px;
  }
}
#CookieBanner .cookiebanner__preference__more.is-open {
  display: block;
}

#CookieBanner .cookiebanner__preference__ui__handle {
  display: flex;
  margin-left: 0.25rem;
  justify-content: center;
  align-items: center;
  width: 1rem;
  height: 1rem;
  background: #fff;
  border-radius: 50%;
  transition: all 0.2s ease-in-out;
  box-shadow: 0 0 8px rgba(0, 0, 0, 0.2);
}

#CookieBanner .cookiebanner__preference input:checked + label .cookiebanner__preference__ui {
  background: #16a085;
}

#CookieBanner .cookiebanner__preference input:checked + label .cookiebanner__preference__ui__handle {
  margin-left: 50%;
  background: #fff;
}

#CookieBanner .cookiebanner__details__preferences__buttons {
  text-align: center;
  margin-top: 8px;
}

#CookieBanner .cookiebanner__accept-selection {
  width: 100%;
}

/**
 * Updated
 */
#CookieBanner .cookiebanner__details__updated {
  margin-top: 24px;
  text-align: center;
}

#CookieBanner .cookiebanner__details__updated p {
  font-size: 15px;
}