/* ---- src/styles/00-tokens.css ---- */
/* src/styles/00-tokens.css
 * Design tokens ported from _rebuild/capture/fingerprint/index.css.
 * Foundation lane (see _rebuild/BRIEF-BUILD.md). Loaded first (build.mjs
 * concatenates src/styles/*.css in filename order) so every later file can
 * reference these custom properties.
 *
 * Scope is deliberately narrow per BRIEF-BUILD.md: type-style-1..5 (family,
 * size, line-height, letter-spacing, weight, text-transform per breakpoint),
 * page background/text/border vars, and the nav colour. Every OTHER :root
 * block in index.css (--space-*, --width-*, --z*, --container-width,
 * --black/--white/--light-grey palette, --muted, --vh, module-specific vars
 * like --project-slider-heading-shift) is ported verbatim by
 * scripts/port-css.mjs into 10-base.css alongside the reset -- they are real
 * source tokens too, just not the curated set this file documents by name.
 *
 * IMPORTANT: scripts/port-css.mjs ALSO ports the type-style-1..5 :root block
 * below into 10-base.css, verbatim, alongside index.css's OWN earlier
 * generic-placeholder :root (1rem/sans-serif/inherit, type-style-1..12) --
 * on purpose. index.css defines the generic block first and the real one
 * (identical to the block below) second, so the real one wins the cascade;
 * if the mechanical port only kept ONE copy of "the curated set" and dropped
 * it from 10-base.css, the generic placeholder left behind would win instead
 * (10-base loads after this file). The copy here is a harmless duplicate,
 * kept so this file stays a complete, readable reference on its own --
 * see scripts/port-css.mjs's own header comment for the full reasoning.
 *
 * Verified against _rebuild/capture/html/*.html: type-style-1..5 have base +
 * sm(640)/md(1024)/lg(1480) tiers, EXCEPT type-style-3/4/5 which only have
 * base + md tiers in the source (no --sm-/--lg- vars defined for them --
 * that is the sources own behaviour, ported as-is, not a porting gap).
 */

/* Page background/text/border. Source (index.css) only ever sets a
 * default --page-background:#fff at :root; --page-text and --page-border
 * have NO index.css default -- every captured route sets all three inline
 * in a per-page <style> block (see src/layout.mjs renderDocument /
 * contrastFor: YIQ luminance >= 128 -> black text + 12.5% black border,
 * else white text + 50% white border -- rule verified against 21 distinct
 * backgroundColors across the 142 captured routes). The defaults below are
 * a safety net only, in case a template ever omits the inline block. */
:root {
  --page-background: #fff;
  --page-text: #000;
  --page-border: #00000020;
}

/* navigation.backgroundColor from the globals payload (RECON.md: "#008C4E").
 * Not applied to any element in the captured markup -- exposed as a token
 * for template agents in case a later design pass wants it; documented here
 * rather than silently dropped. */
:root {
  --nav-background: #008C4E;
}

:root {
  --type-style-1-family:"SuisseIntl",sans-serif;
  --type-style-1-weight:300;
  --type-style-1-size:2.4rem;
  --type-style-1-line-height:1.25;
  --type-style-1-letter-spacing:.37rem;
  --type-style-1-text-transform:uppercase;
  --sm-type-style-1-family:"SuisseIntl",sans-serif;
  --sm-type-style-1-weight:300;
  --sm-type-style-1-size:3rem;
  --sm-type-style-1-line-height:1.26667;
  --sm-type-style-1-letter-spacing:.46rem;
  --sm-type-style-1-text-transform:uppercase;
  --md-type-style-1-family:"SuisseIntl",sans-serif;
  --md-type-style-1-weight:300;
  --md-type-style-1-size:4.5rem;
  --md-type-style-1-line-height:1.22222;
  --md-type-style-1-letter-spacing:.35rem;
  --md-type-style-1-text-transform:uppercase;
  --lg-type-style-1-family:"SuisseIntl",sans-serif;
  --lg-type-style-1-weight:300;
  --lg-type-style-1-size:8rem;
  --lg-type-style-1-line-height:1.25;
  --lg-type-style-1-letter-spacing:.6rem;
  --lg-type-style-1-text-transform:uppercase;
  --type-style-2-family:"GTF Upper",sans-serif;
  --type-style-2-weight:normal;
  --type-style-2-size:2.4rem;
  --type-style-2-line-height:1.08333;
  --type-style-2-letter-spacing:-.12rem;
  --type-style-2-text-transform:uppercase;
  --sm-type-style-2-family:"GTF Upper",sans-serif;
  --sm-type-style-2-weight:normal;
  --sm-type-style-2-size:3.3rem;
  --sm-type-style-2-line-height:1.09091;
  --sm-type-style-2-letter-spacing:-.25rem;
  --sm-type-style-2-text-transform:uppercase;
  --md-type-style-2-family:"GTF Upper",sans-serif;
  --md-type-style-2-weight:normal;
  --md-type-style-2-size:4.5rem;
  --md-type-style-2-line-height:1.15556;
  --md-type-style-2-letter-spacing:-.28rem;
  --md-type-style-2-text-transform:uppercase;
  --lg-type-style-2-family:"GTF Upper",sans-serif;
  --lg-type-style-2-weight:normal;
  --lg-type-style-2-size:8rem;
  --lg-type-style-2-line-height:1;
  --lg-type-style-2-letter-spacing:-.3rem;
  --lg-type-style-2-text-transform:uppercase;
  --type-style-3-family:"SuisseIntl",sans-serif;
  --type-style-3-weight:300;
  --type-style-3-size:1.7rem;
  --type-style-3-line-height:1.35294;
  --type-style-3-letter-spacing:.13rem;
  --type-style-3-text-transform:none;
  --md-type-style-3-family:"SuisseIntl",sans-serif;
  --md-type-style-3-weight:300;
  --md-type-style-3-size:2.2rem;
  --md-type-style-3-line-height:1.27273;
  --md-type-style-3-letter-spacing:.17rem;
  --md-type-style-3-text-transform:none;
  --type-style-4-family:"SuisseIntl",sans-serif;
  --type-style-4-weight:300;
  --type-style-4-size:1.4rem;
  --type-style-4-line-height:1.42857;
  --type-style-4-letter-spacing:.13rem;
  --type-style-4-text-transform:none;
  --md-type-style-4-family:"SuisseIntl",sans-serif;
  --md-type-style-4-weight:300;
  --md-type-style-4-size:1.6rem;
  --md-type-style-4-line-height:1.375;
  --md-type-style-4-letter-spacing:.18rem;
  --md-type-style-4-text-transform:none;
  --type-style-5-family:"SuisseIntl",sans-serif;
  --type-style-5-weight:normal;
  --type-style-5-size:1rem;
  --type-style-5-line-height:1.8;
  --type-style-5-letter-spacing:.333rem;
  --type-style-5-text-transform:uppercase;
  --md-type-style-5-family:"SuisseIntl",sans-serif;
  --md-type-style-5-weight:normal;
  --md-type-style-5-size:1.2rem;
  --md-type-style-5-line-height:1.66667;
  --md-type-style-5-letter-spacing:.4rem;
  --md-type-style-5-text-transform:uppercase;
}

/* ---- src/styles/10-base.css ---- */
/* src/styles/10-base.css
 * Reset (normalize.css v8.0.1) + every non-class rule from
 * _rebuild/capture/fingerprint/index.css (element selectors, ALL 14 :root
 * token blocks including the ones 00-tokens.css also hand-curates, @font-face
 * for the 3 self-hosted families with url(/fonts/...) rewritten to
 * url(/assets/fonts/...), @keyframes actually referenced by a kept rule) +
 * body/link/container base rules.
 *
 * Every :root block is ported here in original source order -- INCLUDING
 * 00-tokens.css's curated type-style-1..5 block -- because the source itself
 * defines a generic 1rem/sans-serif placeholder :root FIRST and the real
 * 2.4rem/SuisseIntl values SECOND (last-declaration-wins at equal
 * specificity); dropping either one, or reordering them relative to each
 * other, changes which value wins. The redundant copy of the real block that
 * also lives in 00-tokens.css is harmless (same values, and it loads even
 * earlier) -- see that file's header comment.
 *
 * Generated by scripts/port-css.mjs, fully, top to bottom -- re-run it after
 * capture/fingerprint/index.css or capture/html/*.html change. Do not
 * hand-edit this file; there is no preserved region, any hand edit is
 * silently lost on the next port-css.mjs run. Hand-written safety/override
 * CSS (e.g. the veil-fails-open backstop) belongs in its own numbered file
 * instead -- see src/styles/25-failsafe.css, which this script never
 * touches, and which build.mjs loads after this file so it can win the
 * cascade by source order.
 */

html {
  -webkit-text-size-adjust:100%;
  line-height:1.15;
}

body {
  margin:0;
}

main {
  display:block;
}

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

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

a {
  background-color:transparent;
}

abbr[title] {
  border-bottom:none;
  text-decoration:underline;
  -webkit-text-decoration:underline dotted;
  text-decoration:underline dotted;
}

b, strong {
  font-weight:bolder;
}

code {
  font-family:monospace,monospace;
  font-size:1em;
}

small {
  font-size:80%;
}

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

sub {
  bottom:-.25em;
}

sup {
  top:-.5em;
}

img {
  border-style:none;
}

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

button, input {
  overflow:visible;
}

button, select {
  text-transform:none;
}

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

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

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

progress {
  vertical-align:baseline;
}

textarea {
  overflow:auto;
}

[type=checkbox], [type=radio] {
  box-sizing:border-box;
  padding:0;
}

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

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

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

::-webkit-file-upload-button {
  -webkit-appearance:button;
  font:inherit;
}

details {
  display:block;
}

[hidden] {
  display:none;
}

:root {
  --border-width:1px;
}

:root {
  --dark-grey:#222;
  --grey:#555;
  --light-grey:#e8e8e8;
  --blue:"blue";
  --green:"green";
  --orange:"orange";
  --red:"red";
  --yellow:"yellow";
}

:root {
  --container-width:1440px;
}

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

:root {
  --width-1:24rem;
  --width-2:32rem;
  --width-3:48rem;
  --width-4:64rem;
}

html {
  box-sizing:border-box;
}

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

:focus {
  outline:none;
}

:root {
  --space-2:1rem;
  --space-3:2rem;
  --space-4:4rem;
  --space-5:5rem;
  --space-6:6rem;
  --space-7:7rem;
  --space-8:8rem;
  --space-9:9rem;
  --space-10:10rem;
  --space-11:11rem;
  --space-12:12rem;
  --space-13:13rem;
  --space-14:14rem;
  --space-15:15rem;
  --space-16:16rem;
}

table {
  border-collapse:collapse;
}

:root {
  --type-style-1-family:sans-serif;
  --type-style-1-weight:inherit;
  --type-style-1-size:1rem;
  --type-style-1-line-height:1;
  --type-style-1-letter-spacing:0;
  --type-style-1-text-transform:none;
  --type-style-2-family:sans-serif;
  --type-style-2-weight:inherit;
  --type-style-2-size:1rem;
  --type-style-2-line-height:1;
  --type-style-2-letter-spacing:0;
  --type-style-2-text-transform:none;
  --type-style-3-family:sans-serif;
  --type-style-3-weight:inherit;
  --type-style-3-size:1rem;
  --type-style-3-line-height:1;
  --type-style-3-letter-spacing:0;
  --type-style-4-family:sans-serif;
  --type-style-4-weight:inherit;
  --type-style-4-size:1rem;
  --type-style-4-line-height:1;
  --type-style-4-letter-spacing:0;
  --type-style-5-family:sans-serif;
  --type-style-5-weight:inherit;
  --type-style-5-line-height:1;
  --type-style-5-letter-spacing:0;
  --type-style-5-text-transform:none;
  --type-style-6-family:sans-serif;
  --type-style-6-weight:inherit;
  --type-style-6-size:1rem;
  --type-style-6-line-height:1;
  --type-style-6-letter-spacing:0;
  --type-style-6-text-transform:none;
  --type-style-7-family:sans-serif;
  --type-style-7-weight:inherit;
  --type-style-7-size:1rem;
  --type-style-7-line-height:1;
  --type-style-7-letter-spacing:0;
  --type-style-7-text-transform:none;
  --type-style-8-family:sans-serif;
  --type-style-8-weight:inherit;
  --type-style-8-size:1rem;
  --type-style-8-line-height:1;
  --type-style-8-letter-spacing:0;
  --type-style-8-text-transform:none;
  --type-style-9-family:sans-serif;
  --type-style-9-weight:inherit;
  --type-style-9-size:1rem;
  --type-style-9-line-height:1;
  --type-style-9-letter-spacing:0;
  --type-style-9-text-transform:none;
  --type-style-10-family:sans-serif;
  --type-style-10-weight:inherit;
  --type-style-10-size:1rem;
  --type-style-10-line-height:1;
  --type-style-10-letter-spacing:0;
  --type-style-10-text-transform:none;
  --type-style-11-family:sans-serif;
  --type-style-11-weight:inherit;
  --type-style-11-size:1rem;
  --type-style-11-line-height:1;
  --type-style-11-letter-spacing:0;
  --type-style-11-text-transform:none;
  --type-style-12-family:sans-serif;
  --type-style-12-weight:inherit;
  --type-style-12-size:1rem;
  --type-style-12-line-height:1;
  --type-style-12-letter-spacing:0;
  --type-style-12-text-transform:none;
  --sm-type-style-1-family:var(--type-style-1-family);
  --sm-type-style-1-weight:var(--type-style-1-weight);
  --sm-type-style-1-size:var(--type-style-1-size);
  --sm-type-style-1-line-height:var(--type-style-1-line-height);
  --sm-type-style-1-letter-spacing:var(--type-style-1-letter-spacing);
  --sm-type-style-1-text-transform:var(--type-style-1-text-transform);
  --sm-type-style-2-family:var(--type-style-2-family);
  --sm-type-style-2-weight:var(--type-style-2-weight);
  --sm-type-style-2-size:var(--type-style-2-size);
  --sm-type-style-2-line-height:var(--type-style-2-line-height);
  --sm-type-style-2-letter-spacing:var(--type-style-2-letter-spacing);
  --sm-type-style-2-text-transform:var(--type-style-2-text-transform);
  --sm-type-style-3-family:var(--type-style-3-family);
  --sm-type-style-3-weight:var(--type-style-3-weight);
  --sm-type-style-3-size:var(--type-style-3-size);
  --sm-type-style-3-line-height:var(--type-style-3-line-height);
  --sm-type-style-3-letter-spacing:var(--type-style-3-letter-spacing);
  --sm-type-style-3-text-transform:var(--type-style-3-text-transform);
  --sm-type-style-4-family:var(--type-style-4-family);
  --sm-type-style-4-weight:var(--type-style-4-weight);
  --sm-type-style-4-size:var(--type-style-4-size);
  --sm-type-style-4-line-height:var(--type-style-4-line-height);
  --sm-type-style-4-letter-spacing:var(--type-style-4-letter-spacing);
  --sm-type-style-4-text-transform:var(--type-style-4-text-transform);
  --sm-type-style-5-family:var(--type-style-5-family);
  --sm-type-style-5-weight:var(--type-style-5-weight);
  --sm-type-style-5-size:var(--type-style-5-size);
  --sm-type-style-5-line-height:var(--type-style-5-line-height);
  --sm-type-style-5-letter-spacing:var(--type-style-5-letter-spacing);
  --sm-type-style-5-text-transform:var(--type-style-5-text-transform);
  --sm-type-style-6-family:var(--type-style-6-family);
  --sm-type-style-6-weight:var(--type-style-6-weight);
  --sm-type-style-6-size:var(--type-style-6-size);
  --sm-type-style-6-line-height:var(--type-style-6-line-height);
  --sm-type-style-6-letter-spacing:var(--type-style-6-letter-spacing);
  --sm-type-style-6-text-transform:var(--type-style-6-text-transform);
  --sm-type-style-7-family:var(--type-style-7-family);
  --sm-type-style-7-weight:var(--type-style-7-weight);
  --sm-type-style-7-size:var(--type-style-7-size);
  --sm-type-style-7-line-height:var(--type-style-7-line-height);
  --sm-type-style-7-letter-spacing:var(--type-style-7-letter-spacing);
  --sm-type-style-7-text-transform:var(--type-style-7-text-transform);
  --sm-type-style-8-family:var(--type-style-8-family);
  --sm-type-style-8-weight:var(--type-style-8-weight);
  --sm-type-style-8-size:var(--type-style-8-size);
  --sm-type-style-8-line-height:var(--type-style-8-line-height);
  --sm-type-style-8-letter-spacing:var(--type-style-8-letter-spacing);
  --sm-type-style-8-text-transform:var(--type-style-8-text-transform);
  --sm-type-style-9-family:var(--type-style-9-family);
  --sm-type-style-9-weight:var(--type-style-9-weight);
  --sm-type-style-9-size:var(--type-style-9-size);
  --sm-type-style-9-line-height:var(--type-style-9-line-height);
  --sm-type-style-9-letter-spacing:var(--type-style-9-letter-spacing);
  --sm-type-style-9-text-transform:var(--type-style-9-text-transform);
  --sm-type-style-10-family:var(--type-style-10-family);
  --sm-type-style-10-weight:var(--type-style-10-weight);
  --sm-type-style-10-size:var(--type-style-10-size);
  --sm-type-style-10-line-height:var(--type-style-10-line-height);
  --sm-type-style-10-letter-spacing:var(--type-style-10-letter-spacing);
  --sm-type-style-10-text-transform:var(--type-style-10-text-transform);
  --sm-type-style-11-family:var(--type-style-11-family);
  --sm-type-style-11-weight:var(--type-style-11-weight);
  --sm-type-style-11-size:var(--type-style-11-size);
  --sm-type-style-11-line-height:var(--type-style-11-line-height);
  --sm-type-style-11-letter-spacing:var(--type-style-11-letter-spacing);
  --sm-type-style-11-text-transform:var(--type-style-11-text-transform);
  --sm-type-style-12-family:var(--type-style-12-family);
  --sm-type-style-12-weight:var(--type-style-12-weight);
  --sm-type-style-12-size:var(--type-style-12-size);
  --sm-type-style-12-line-height:var(--type-style-12-line-height);
  --sm-type-style-12-letter-spacing:var(--type-style-12-letter-spacing);
  --sm-type-style-12-text-transform:var(--type-style-12-text-transform);
  --md-type-style-1-family:var(--sm-type-style-1-family);
  --md-type-style-1-weight:var(--sm-type-style-1-weight);
  --md-type-style-1-size:var(--sm-type-style-1-size);
  --md-type-style-1-line-height:var(--sm-type-style-1-line-height);
  --md-type-style-1-letter-spacing:var(--sm-type-style-1-letter-spacing);
  --md-type-style-1-text-transform:var(--sm-type-style-1-text-transform);
  --md-type-style-2-family:var(--sm-type-style-2-family);
  --md-type-style-2-weight:var(--sm-type-style-2-weight);
  --md-type-style-2-size:var(--sm-type-style-2-size);
  --md-type-style-2-line-height:var(--sm-type-style-2-line-height);
  --md-type-style-2-letter-spacing:var(--sm-type-style-2-letter-spacing);
  --md-type-style-2-text-transform:var(--sm-type-style-2-text-transform);
  --md-type-style-3-family:var(--sm-type-style-3-family);
  --md-type-style-3-weight:var(--sm-type-style-3-weight);
  --md-type-style-3-size:var(--sm-type-style-3-size);
  --md-type-style-3-line-height:var(--sm-type-style-3-line-height);
  --md-type-style-3-letter-spacing:var(--sm-type-style-3-letter-spacing);
  --md-type-style-3-text-transform:var(--sm-type-style-3-text-transform);
  --md-type-style-4-family:var(--sm-type-style-4-family);
  --md-type-style-4-weight:var(--sm-type-style-4-weight);
  --md-type-style-4-size:var(--sm-type-style-4-size);
  --md-type-style-4-line-height:var(--sm-type-style-4-line-height);
  --md-type-style-4-letter-spacing:var(--sm-type-style-4-letter-spacing);
  --md-type-style-4-text-transform:var(--sm-type-style-4-text-transform);
  --md-type-style-5-family:var(--sm-type-style-5-family);
  --md-type-style-5-weight:var(--sm-type-style-5-weight);
  --md-type-style-5-size:var(--sm-type-style-5-size);
  --md-type-style-5-line-height:var(--sm-type-style-5-line-height);
  --md-type-style-5-letter-spacing:var(--sm-type-style-5-letter-spacing);
  --md-type-style-5-text-transform:var(--sm-type-style-5-text-transform);
  --md-type-style-6-family:var(--sm-type-style-6-family);
  --md-type-style-6-weight:var(--sm-type-style-6-weight);
  --md-type-style-6-size:var(--sm-type-style-6-size);
  --md-type-style-6-line-height:var(--sm-type-style-6-line-height);
  --md-type-style-6-letter-spacing:var(--sm-type-style-6-letter-spacing);
  --md-type-style-6-text-transform:var(--sm-type-style-6-text-transform);
  --md-type-style-7-family:var(--sm-type-style-7-family);
  --md-type-style-7-weight:var(--sm-type-style-7-weight);
  --md-type-style-7-size:var(--sm-type-style-7-size);
  --md-type-style-7-line-height:var(--sm-type-style-7-line-height);
  --md-type-style-7-letter-spacing:var(--sm-type-style-7-letter-spacing);
  --md-type-style-7-text-transform:var(--sm-type-style-7-text-transform);
  --md-type-style-8-family:var(--sm-type-style-8-family);
  --md-type-style-8-weight:var(--sm-type-style-8-weight);
  --md-type-style-8-size:var(--sm-type-style-8-size);
  --md-type-style-8-line-height:var(--sm-type-style-8-line-height);
  --md-type-style-8-letter-spacing:var(--sm-type-style-8-letter-spacing);
  --md-type-style-8-text-transform:var(--sm-type-style-8-text-transform);
  --md-type-style-9-family:var(--sm-type-style-9-family);
  --md-type-style-9-weight:var(--sm-type-style-9-weight);
  --md-type-style-9-size:var(--sm-type-style-9-size);
  --md-type-style-9-line-height:var(--sm-type-style-9-line-height);
  --md-type-style-9-letter-spacing:var(--sm-type-style-9-letter-spacing);
  --md-type-style-9-text-transform:var(--sm-type-style-9-text-transform);
  --md-type-style-10-family:var(--sm-type-style-10-family);
  --md-type-style-10-weight:var(--sm-type-style-10-weight);
  --md-type-style-10-size:var(--sm-type-style-10-size);
  --md-type-style-10-line-height:var(--sm-type-style-10-line-height);
  --md-type-style-10-letter-spacing:var(--sm-type-style-10-letter-spacing);
  --md-type-style-10-text-transform:var(--sm-type-style-10-text-transform);
  --md-type-style-11-family:var(--sm-type-style-11-family);
  --md-type-style-11-weight:var(--sm-type-style-11-weight);
  --md-type-style-11-size:var(--sm-type-style-11-size);
  --md-type-style-11-line-height:var(--sm-type-style-11-line-height);
  --md-type-style-11-letter-spacing:var(--sm-type-style-11-letter-spacing);
  --md-type-style-11-text-transform:var(--sm-type-style-11-text-transform);
  --md-type-style-12-family:var(--sm-type-style-12-family);
  --md-type-style-12-weight:var(--sm-type-style-12-weight);
  --md-type-style-12-size:var(--sm-type-style-12-size);
  --md-type-style-12-line-height:var(--sm-type-style-12-line-height);
  --md-type-style-12-letter-spacing:var(--sm-type-style-12-letter-spacing);
  --md-type-style-12-text-transform:var(--sm-type-style-12-text-transform);
  --lg-type-style-1-family:var(--md-type-style-1-family);
  --lg-type-style-1-weight:var(--md-type-style-1-weight);
  --lg-type-style-1-size:var(--md-type-style-1-size);
  --lg-type-style-1-line-height:var(--md-type-style-1-line-height);
  --lg-type-style-1-letter-spacing:var(--md-type-style-1-letter-spacing);
  --lg-type-style-1-text-transform:var(--md-type-style-1-text-transform);
  --lg-type-style-2-family:var(--md-type-style-2-family);
  --lg-type-style-2-weight:var(--md-type-style-2-weight);
  --lg-type-style-2-size:var(--md-type-style-2-size);
  --lg-type-style-2-line-height:var(--md-type-style-2-line-height);
  --lg-type-style-2-letter-spacing:var(--md-type-style-2-letter-spacing);
  --lg-type-style-2-text-transform:var(--md-type-style-2-text-transform);
  --lg-type-style-3-family:var(--md-type-style-3-family);
  --lg-type-style-3-weight:var(--md-type-style-3-weight);
  --lg-type-style-3-size:var(--md-type-style-3-size);
  --lg-type-style-3-line-height:var(--md-type-style-3-line-height);
  --lg-type-style-3-letter-spacing:var(--md-type-style-3-letter-spacing);
  --lg-type-style-3-text-transform:var(--md-type-style-3-text-transform);
  --lg-type-style-4-family:var(--md-type-style-4-family);
  --lg-type-style-4-weight:var(--md-type-style-4-weight);
  --lg-type-style-4-size:var(--md-type-style-4-size);
  --lg-type-style-4-line-height:var(--md-type-style-4-line-height);
  --lg-type-style-4-letter-spacing:var(--md-type-style-4-letter-spacing);
  --lg-type-style-4-text-transform:var(--md-type-style-4-text-transform);
  --lg-type-style-5-family:var(--md-type-style-5-family);
  --lg-type-style-5-weight:var(--md-type-style-5-weight);
  --lg-type-style-5-size:var(--md-type-style-5-size);
  --lg-type-style-5-line-height:var(--md-type-style-5-line-height);
  --lg-type-style-5-letter-spacing:var(--md-type-style-5-letter-spacing);
  --lg-type-style-5-text-transform:var(--md-type-style-5-text-transform);
  --lg-type-style-6-family:var(--md-type-style-6-family);
  --lg-type-style-6-weight:var(--md-type-style-6-weight);
  --lg-type-style-6-size:var(--md-type-style-6-size);
  --lg-type-style-6-line-height:var(--md-type-style-6-line-height);
  --lg-type-style-6-letter-spacing:var(--md-type-style-6-letter-spacing);
  --lg-type-style-6-text-transform:var(--md-type-style-6-text-transform);
  --lg-type-style-7-family:var(--md-type-style-7-family);
  --lg-type-style-7-weight:var(--md-type-style-7-weight);
  --lg-type-style-7-size:var(--md-type-style-7-size);
  --lg-type-style-7-line-height:var(--md-type-style-7-line-height);
  --lg-type-style-7-letter-spacing:var(--md-type-style-7-letter-spacing);
  --lg-type-style-7-text-transform:var(--md-type-style-7-text-transform);
  --lg-type-style-8-family:var(--md-type-style-8-family);
  --lg-type-style-8-weight:var(--md-type-style-8-weight);
  --lg-type-style-8-size:var(--md-type-style-8-size);
  --lg-type-style-8-line-height:var(--md-type-style-8-line-height);
  --lg-type-style-8-letter-spacing:var(--md-type-style-8-letter-spacing);
  --lg-type-style-8-text-transform:var(--md-type-style-8-text-transform);
  --lg-type-style-9-family:var(--md-type-style-9-family);
  --lg-type-style-9-weight:var(--md-type-style-9-weight);
  --lg-type-style-9-size:var(--md-type-style-9-size);
  --lg-type-style-9-line-height:var(--md-type-style-9-line-height);
  --lg-type-style-9-letter-spacing:var(--md-type-style-9-letter-spacing);
  --lg-type-style-9-text-transform:var(--md-type-style-9-text-transform);
  --lg-type-style-10-family:var(--md-type-style-10-family);
  --lg-type-style-10-weight:var(--md-type-style-10-weight);
  --lg-type-style-10-size:var(--md-type-style-10-size);
  --lg-type-style-10-line-height:var(--md-type-style-10-line-height);
  --lg-type-style-10-letter-spacing:var(--md-type-style-10-letter-spacing);
  --lg-type-style-10-text-transform:var(--md-type-style-10-text-transform);
  --lg-type-style-11-family:var(--md-type-style-11-family);
  --lg-type-style-11-weight:var(--md-type-style-11-weight);
  --lg-type-style-11-size:var(--md-type-style-11-size);
  --lg-type-style-11-line-height:var(--md-type-style-11-line-height);
  --lg-type-style-11-letter-spacing:var(--md-type-style-11-letter-spacing);
  --lg-type-style-11-text-transform:var(--md-type-style-11-text-transform);
  --lg-type-style-12-family:var(--md-type-style-12-family);
  --lg-type-style-12-weight:var(--md-type-style-12-weight);
  --lg-type-style-12-size:var(--md-type-style-12-size);
  --lg-type-style-12-line-height:var(--md-type-style-12-line-height);
  --lg-type-style-12-letter-spacing:var(--md-type-style-12-letter-spacing);
  --lg-type-style-12-text-transform:var(--md-type-style-12-text-transform);
}

a, abbr, article, aside, audio, b, big, blockquote, body, caption, center, code, dd, details, div, dl, dt, em, embed, figcaption, figure, footer, form, h1, h2, h3, h4, h5, h6, header, html, i, iframe, img, label, li, mark, menu, nav, object, ol, output, p, q, s, section, small, span, strike, strong, sub, sup, table, tbody, td, th, time, tr, tt, u, ul, var, video {
  border:0;
  font-size:100%;
  font:inherit;
  margin:0;
  padding:0;
  vertical-align:baseline;
}

body {
  line-height:1;
}

html {
  font-size:18px;
}

:root {
  --z1:1;
  --z2:2;
  --z3:3;
  --z4:4;
  --z5:5;
  --z6:6;
}

* {
  box-sizing:border-box;
}

a, button, input, textarea {
  -webkit-tap-highlight-color:rgba(0,0,0,0);
  -webkit-tap-highlight-color:transparent;
  color:inherit;
}

button:not(:disabled) {
  cursor:pointer;
}

input:-webkit-autofill, input:-webkit-autofill:active, input:-webkit-autofill:focus, input:-webkit-autofill:hover {
  -webkit-text-fill-color:var(--page-text)!important;
  background-color:#fff!important;
  background-color:var(--page-background)!important;
  box-shadow:inset 0 0 0 30px #fff!important;
  box-shadow:0 0 0 30px var(--page-background) inset!important;
  -webkit-box-shadow:inset 0 0 0 30px #fff!important;
  -webkit-box-shadow:0 0 0 30px var(--page-background) inset!important;
  color:var(--page-text)!important;
}

#CybotCookiebotDialogDetailFooter, #CybotCookiebotDialogPoweredbyLink {
  display:none!important;
}

#CybotCookiebotDialog * {
  box-sizing:border-box!important;
  color:var(--page-text);
}

#CybotCookiebotDialogDetailBodyContent * {
  color:#000;
  color:var(--black);
}

#CybotCookiebotDialogBodyContentText {
  max-width:70rem;
}

#CybotCookiebotDialog h2, #CybotCookiebotDialogBodyContentText, #CybotCookiebotDialogDetailBodyContentTextAbout {
  font:normal 1rem/1.8 SuisseIntl,sans-serif!important;
  font:var(--type-style-5-weight) var(--type-style-5-size) /var(--type-style-5-line-height) var(--type-style-5-family)!important;
  letter-spacing:.333rem!important;
  letter-spacing:var(--type-style-5-letter-spacing)!important;
}

#CybotCookiebotDialog h2 {
  margin-bottom:2rem!important;
  margin-top:0!important;
  text-transform:uppercase;
  text-transform:var(--type-style-5-text-transform);
}

#CybotCookiebotDialogBodyContentTitle {
  color:var(--page-text)!important;
}

#CybotCookiebotDialog {
  background-color:#fff!important;
  background-color:var(--page-background)!important;
  border-top:1px solid var(--page-border)!important;
  bottom:0!important;
  box-shadow:none!important;
  left:0!important;
  max-height:100vh!important;
  max-width:100vw!important;
  overflow:auto!important;
  padding-bottom:2rem!important;
  position:fixed!important;
  right:0!important;
  top:auto!important;
  transform:none!important;
  z-index:8!important;
}

#CybotCookiebotDialogDetailBodyContentTextOverview {
  max-width:100%!important;
}

#CybotCookiebotDialogDetail {
  background-color:#fff!important;
  background-color:var(--page-background)!important;
}

#CybotCookiebotDialogBodyButtons, #CybotCookiebotDialogBodyContent, #CybotCookiebotDialogBodyContentControls, #CybotCookiebotDialogBodyLevelWrapper {
  padding:0!important;
}

#CybotCookiebotDialogBodyButtons {
  align-items:baseline!important;
  display:flex!important;
  flex-wrap:wrap!important;
}

#CybotCookiebotDialogBodyContent {
  margin-top:2rem!important;
}

#CybotCookiebotDialogDetailBody {
  margin-left:0!important;
  margin-top:2rem!important;
  margin-top:var(--space-5)!important;
}

#CybotCookiebotDialogDetail, #CybotCookiebotDialogDetail * {
  font-family:SuisseIntl,sans-serif!important;
  font-family:var(--type-style-4-family)!important;
  font-weight:300!important;
  font-weight:var(--type-style-4-weight)!important;
  letter-spacing:.13rem!important;
  letter-spacing:var(--type-style-4-letter-spacing)!important;
  text-transform:none!important;
  text-transform:var(--type-style-4-text-transform)!important;
}

#CybotCookiebotDialogDetail {
  overflow:visible!important;
}

#CybotCookiebotDialogDetailBodyContent {
  border-width:1px!important;
}

#CybotCookiebotDialogBodyButtons {
  margin:0!important;
}

#CybotCookiebotDialogDetailBody {
  padding:0 2rem!important;
}

#CybotCookiebotDialogBodyButtonAccept, #CybotCookiebotDialogBodyButtonDetails, #CybotCookiebotDialogBodyLevelButtonLevelOptinAllowAll, #CybotCookiebotDialogBodyLevelButtonLevelOptinAllowallSelection, #CybotCookiebotDialogBodyLevelButtonLevelOptinDeclineAll {
  background:transparent!important;
  background-image:linear-gradient(to bottom,var(--page-border),var(--page-border)),linear-gradient(to bottom,currentColor,currentColor)!important;
  background-origin:content-box,content-box!important;
  background-position:100% 100%,100% 100%!important;
  background-repeat:no-repeat,no-repeat!important;
  background-size:100% .07em,0 .07em!important;
  border:0!important;
  color:var(--page-text)!important;
  float:left!important;
  font:normal 1rem/1.8 SuisseIntl,sans-serif!important;
  font:var(--type-style-5-weight) var(--type-style-5-size) /var(--type-style-5-line-height) var(--type-style-5-family)!important;
  letter-spacing:.333rem!important;
  letter-spacing:var(--type-style-5-letter-spacing)!important;
  margin:0!important;
  text-align:left!important;
  text-decoration:none!important;
  text-transform:uppercase!important;
  text-transform:var(--type-style-5-text-transform)!important;
  transition:background-size .6s cubic-bezier(.165,.84,.44,1)!important;
  width:auto!important;
}

#CybotCookiebotDialogBodyButtonAccept:hover, #CybotCookiebotDialogBodyButtonDetails:hover, #CybotCookiebotDialogBodyLevelButtonLevelOptinAllowAll:hover, #CybotCookiebotDialogBodyLevelButtonLevelOptinAllowallSelection:hover, #CybotCookiebotDialogBodyLevelButtonLevelOptinDeclineAll:hover {
  background-position:100% 100%,0 100%!important;
  background-size:100% .07em,100% .07em!important;
}

#CybotCookiebotDialogBodyContentText, #CybotCookiebotDialogBodyContentTitle {
  margin-bottom:2rem!important;
}

@media (min-width:640px) {
  #CybotCookiebotDialog {
    border-right:1px solid var(--page-border)!important;
    max-width:40rem!important;
  }

  #CybotCookiebotDialogBodyButtons, #CybotCookiebotDialogBodyContent, #CybotCookiebotDialogBodyContentControls, #CybotCookiebotDialogBodyLevelWrapper {
    padding:0!important;
  }

  #CybotCookiebotDialogBodyButtons {
    flex-direction:row!important;
  }
}

#CybotCookiebotDialogBody {
  padding:0 2rem!important;
}

@media (min-width:1024px) {
  #CybotCookiebotDialogDetailBody {
    padding:0 4rem!important;
  }

  #CybotCookiebotDialog {
    max-width:50rem!important;
  }

  #CybotCookiebotDialogBody {
    padding:1rem 4rem!important;
  }

  #CybotCookiebotDialog h2, #CybotCookiebotDialogBodyButtonAccept, #CybotCookiebotDialogBodyButtonDetails, #CybotCookiebotDialogBodyContentTitle, #CybotCookiebotDialogBodyLevelButtonLevelOptinAllowAll, #CybotCookiebotDialogBodyLevelButtonLevelOptinAllowallSelection, #CybotCookiebotDialogBodyLevelButtonLevelOptinDeclineAll {
    font:normal 1.2rem/1.66667 SuisseIntl,sans-serif!important;
    font:var(--md-type-style-5-weight) var(--md-type-style-5-size) /var(--md-type-style-5-line-height) var(--md-type-style-5-family)!important;
    letter-spacing:.4rem!important;
    letter-spacing:var(--md-type-style-5-letter-spacing)!important;
    text-transform:uppercase!important;
    text-transform:var(--md-type-style-5-text-transform)!important;
  }

  #CybotCookiebotDialog h2 {
    margin-bottom:2rem!important;
    margin-top:0!important;
  }

  #CybotCookiebotDialogBody>*, #CybotCookiebotDialogDetail>* {
    margin-left:0!important;
  }
}

@media (min-width:1480px) {
  #CybotCookiebotDialogBodyContentText, #CybotCookiebotDialogBodyContentTitle, #CybotCookiebotDialogDetail, #CybotCookiebotDialogDetail *, #CybotCookiebotDialogDetailBodyContentTextAbout {
    font-family:SuisseIntl,sans-serif!important;
    font-family:var(--lg-type-style-4-family)!important;
    font-size:1.6rem!important;
    font-size:var(--lg-type-style-4-size)!important;
    font-weight:300!important;
    font-weight:var(--lg-type-style-4-weight)!important;
    letter-spacing:.18rem!important;
    letter-spacing:var(--lg-type-style-4-letter-spacing)!important;
    text-transform:none!important;
    text-transform:var(--lg-type-style-4-text-transform)!important;
  }

  #CybotCookiebotDialog h2 {
    margin-bottom:2rem!important;
    margin-top:0!important;
  }

  #CybotCookiebotDialog h2, #CybotCookiebotDialogBodyButtonAccept, #CybotCookiebotDialogBodyButtonDetails, #CybotCookiebotDialogBodyLevelButtonLevelOptinAllowAll, #CybotCookiebotDialogBodyLevelButtonLevelOptinAllowallSelection, #CybotCookiebotDialogBodyLevelButtonLevelOptinDeclineAll {
    font:normal 1.2rem/1.66667 SuisseIntl,sans-serif!important;
    font:var(--lg-type-style-5-weight) var(--lg-type-style-5-size) /var(--lg-type-style-5-line-height) var(--lg-type-style-5-family)!important;
    letter-spacing:.4rem!important;
    letter-spacing:var(--lg-type-style-5-letter-spacing)!important;
  }

  #CybotCookiebotDialogBodyButtonAccept, #CybotCookiebotDialogBodyButtonDetails, #CybotCookiebotDialogBodyLevelButtonLevelOptinAllowAll, #CybotCookiebotDialogBodyLevelButtonLevelOptinAllowallSelection, #CybotCookiebotDialogBodyLevelButtonLevelOptinDeclineAll {
    margin-right:2rem!important;
    text-transform:uppercase!important;
    text-transform:var(--lg-type-style-5-text-transform)!important;
  }
}

[data-whatintent=keyboard] :focus:not([tabindex="-1"]) {
  outline:auto!important;
}

[hidden] {
  display:none!important;
}

:root {
  --black:#000;
  --white:#fff;
  --light-grey:#ccc;
  --light-yellow:#fef7ea;
  --light-pink:#fff3fc;
  --red:#ff8e8e;
  --page-background:#fff;
}

:root {
  --vh:1vh;
}

:root {
  --space-1:1px;
  --space-2:.5rem;
  --space-3:1rem;
  --space-4:1.5rem;
  --space-5:2rem;
  --space-6:3rem;
  --space-7:4rem;
  --space-8:5rem;
  --space-9:6rem;
  --space-10:8rem;
  --space-11:9rem;
  --space-12:10rem;
  --space-13:12rem;
  --space-14:16rem;
  --space-15:20rem;
  --space-16:25rem;
  --space-17:30rem;
}

@font-face {
  font-display:swap;
  font-family:SuisseIntl;
  font-style:normal;
  font-weight:400;
  src:url(/assets/fonts/SuisseIntl-Regular.woff) format("woff"),url(/assets/fonts/SuisseIntl-Regular.woff2) format("woff2");
}

@font-face {
  font-display:swap;
  font-family:SuisseIntl;
  font-style:normal;
  font-weight:300;
  src:url(/assets/fonts/SuisseIntl-Light.woff) format("woff"),url(/assets/fonts/SuisseIntl-Light.woff2) format("woff2");
}

@font-face {
  font-display:swap;
  font-family:GTF Upper;
  font-style:normal;
  font-weight:400;
  src:url(/assets/fonts/GTFUpper-Regular.woff) format("woff"),url(/assets/fonts/GTFUpper-Regular.woff2) format("woff2");
}

:root {
  --type-style-1-family:"SuisseIntl",sans-serif;
  --type-style-1-weight:300;
  --type-style-1-size:2.4rem;
  --type-style-1-line-height:1.25;
  --type-style-1-letter-spacing:.37rem;
  --type-style-1-text-transform:uppercase;
  --sm-type-style-1-family:"SuisseIntl",sans-serif;
  --sm-type-style-1-weight:300;
  --sm-type-style-1-size:3rem;
  --sm-type-style-1-line-height:1.26667;
  --sm-type-style-1-letter-spacing:.46rem;
  --sm-type-style-1-text-transform:uppercase;
  --md-type-style-1-family:"SuisseIntl",sans-serif;
  --md-type-style-1-weight:300;
  --md-type-style-1-size:4.5rem;
  --md-type-style-1-line-height:1.22222;
  --md-type-style-1-letter-spacing:.35rem;
  --md-type-style-1-text-transform:uppercase;
  --lg-type-style-1-family:"SuisseIntl",sans-serif;
  --lg-type-style-1-weight:300;
  --lg-type-style-1-size:8rem;
  --lg-type-style-1-line-height:1.25;
  --lg-type-style-1-letter-spacing:.6rem;
  --lg-type-style-1-text-transform:uppercase;
  --type-style-2-family:"GTF Upper",sans-serif;
  --type-style-2-weight:normal;
  --type-style-2-size:2.4rem;
  --type-style-2-line-height:1.08333;
  --type-style-2-letter-spacing:-.12rem;
  --type-style-2-text-transform:uppercase;
  --sm-type-style-2-family:"GTF Upper",sans-serif;
  --sm-type-style-2-weight:normal;
  --sm-type-style-2-size:3.3rem;
  --sm-type-style-2-line-height:1.09091;
  --sm-type-style-2-letter-spacing:-.25rem;
  --sm-type-style-2-text-transform:uppercase;
  --md-type-style-2-family:"GTF Upper",sans-serif;
  --md-type-style-2-weight:normal;
  --md-type-style-2-size:4.5rem;
  --md-type-style-2-line-height:1.15556;
  --md-type-style-2-letter-spacing:-.28rem;
  --md-type-style-2-text-transform:uppercase;
  --lg-type-style-2-family:"GTF Upper",sans-serif;
  --lg-type-style-2-weight:normal;
  --lg-type-style-2-size:8rem;
  --lg-type-style-2-line-height:1;
  --lg-type-style-2-letter-spacing:-.3rem;
  --lg-type-style-2-text-transform:uppercase;
  --type-style-3-family:"SuisseIntl",sans-serif;
  --type-style-3-weight:300;
  --type-style-3-size:1.7rem;
  --type-style-3-line-height:1.35294;
  --type-style-3-letter-spacing:.13rem;
  --type-style-3-text-transform:none;
  --md-type-style-3-family:"SuisseIntl",sans-serif;
  --md-type-style-3-weight:300;
  --md-type-style-3-size:2.2rem;
  --md-type-style-3-line-height:1.27273;
  --md-type-style-3-letter-spacing:.17rem;
  --md-type-style-3-text-transform:none;
  --type-style-4-family:"SuisseIntl",sans-serif;
  --type-style-4-weight:300;
  --type-style-4-size:1.4rem;
  --type-style-4-line-height:1.42857;
  --type-style-4-letter-spacing:.13rem;
  --type-style-4-text-transform:none;
  --md-type-style-4-family:"SuisseIntl",sans-serif;
  --md-type-style-4-weight:300;
  --md-type-style-4-size:1.6rem;
  --md-type-style-4-line-height:1.375;
  --md-type-style-4-letter-spacing:.18rem;
  --md-type-style-4-text-transform:none;
  --type-style-5-family:"SuisseIntl",sans-serif;
  --type-style-5-weight:normal;
  --type-style-5-size:1rem;
  --type-style-5-line-height:1.8;
  --type-style-5-letter-spacing:.333rem;
  --type-style-5-text-transform:uppercase;
  --md-type-style-5-family:"SuisseIntl",sans-serif;
  --md-type-style-5-weight:normal;
  --md-type-style-5-size:1.2rem;
  --md-type-style-5-line-height:1.66667;
  --md-type-style-5-letter-spacing:.4rem;
  --md-type-style-5-text-transform:uppercase;
}

html {
  font-size:62.5%;
  max-width:100%;
  overflow-x:hidden;
}

body {
  font-family:SuisseIntl,sans-serif;
  font-family:var(--type-style-4-family);
  font-size:1.4rem;
  font-size:var(--type-style-4-size);
  font-weight:300;
  font-weight:var(--type-style-4-weight);
  letter-spacing:.13rem;
  letter-spacing:var(--type-style-4-letter-spacing);
  line-height:1.42857;
  line-height:var(--type-style-4-line-height);
  text-transform:none;
  text-transform:var(--type-style-4-text-transform);
}

@media (min-width:640px) {
  html {
    max-width:auto;
    overflow-x:auto;
  }
}

@media (min-width:1024px) {
  body {
    font-family:SuisseIntl,sans-serif;
    font-family:var(--md-type-style-4-family);
    font-size:1.6rem;
    font-size:var(--md-type-style-4-size);
    font-weight:300;
    font-weight:var(--md-type-style-4-weight);
    letter-spacing:.18rem;
    letter-spacing:var(--md-type-style-4-letter-spacing);
    line-height:1.375;
    line-height:var(--md-type-style-4-line-height);
    text-transform:none;
    text-transform:var(--md-type-style-4-text-transform);
  }
}

@keyframes fadeIn {
  0% {
    opacity:0;
  }
  to {
    opacity:1;
  }
}

:root {
  --project-slider-heading-shift:-14%;
}

@media (min-width:640px) {
  :root {
    --project-slider-heading-shift:-28%;
  }
}

:root {
  --muted:.4;
}

/* ---- src/styles/20-utilities.css ---- */
/* src/styles/20-utilities.css
 * Every utility/module class rule from
 * _rebuild/capture/fingerprint/index.css whose selector contains at least
 * one class that appears in a class="..." attribute somewhere across
 * _rebuild/capture/html/*.html (359 classes in the used-class set).
 * Source order preserved (including original @media 640/1024/1480/1920
 * wrappers) so the mobile-first cascade stays correct -- see
 * scripts/port-css.mjs header for why order must not change.
 *
 * Generated by scripts/port-css.mjs. 398 rules ported.
 */

.form-field-reset {
  -webkit-appearance:none;
  background-color:transparent;
  background-image:none;
  border:0;
  border-radius:0;
  display:inline-block;
  height:auto;
  letter-spacing:inherit;
  line-height:inherit;
  margin:0;
  padding:0;
}

.form-field-reset, .form-field-reset:hover {
  text-decoration:none;
}

.form-field-reset:focus {
  box-shadow:none;
  outline:none;
}

.accessible-hide:not(:focus):not(:focus-within):not(:active) {
  clip:rect(0,0,0,0);
  border-width:0;
  height:1px;
  margin:-1px;
  overflow:hidden;
  padding:0;
  position:absolute;
  white-space:nowrap;
  width:1px;
}

@media (min-width:640px) {
  .sm-accessible-hide:not(:focus):not(:focus-within):not(:active) {
    clip:rect(0,0,0,0);
    border-width:0;
    height:1px;
    margin:-1px;
    overflow:hidden;
    padding:0;
    position:absolute;
    white-space:nowrap;
    width:1px;
  }
}

@media (min-width:1024px) {
  .md-accessible-hide:not(:focus):not(:focus-within):not(:active) {
    clip:rect(0,0,0,0);
    border-width:0;
    height:1px;
    margin:-1px;
    overflow:hidden;
    padding:0;
    position:absolute;
    white-space:nowrap;
    width:1px;
  }
}

.expand-interaction {
  position:relative;
}

.border-top {
  border-top-style:solid;
  border-top-width:1px;
  border-top-width:var(--border-width);
}

.black {
  color:#000;
  color:var(--black);
}

.white {
  color:#fff;
  color:var(--white);
}

.container {
  max-width:1440px;
  max-width:var(--container-width);
}

.cursor-pointer {
  cursor:pointer;
}

.flex-col {
  flex-direction:column;
}

.flex-row-reverse {
  flex-direction:row-reverse;
}

.flex-wrap {
  flex-wrap:wrap;
}

.flex-shrink-0 {
  flex-shrink:0;
}

.items-baseline {
  align-items:baseline;
}

.items-center {
  align-items:center;
}

.justify-center {
  justify-content:center;
}

.justify-end {
  justify-content:flex-end;
}

.self-start {
  align-self:flex-start;
}

.order-last {
  order:9999;
}

@media (min-width:640px) {
  .sm-flex-wrap {
    flex-wrap:wrap;
  }

  .sm-order-first {
    order:-9999;
  }
}

@media (min-width:1024px) {
  .md-flex-wrap {
    flex-wrap:wrap;
  }

  .md-justify-between {
    justify-content:space-between;
  }
}

.col {
  float:left;
}

.col {
  box-sizing:border-box;
}

.col-6 {
  width:50%;
}

.col-10 {
  width:83.33333%;
}

.col-12 {
  width:100%;
}

@media (min-width:640px) {
  .sm-col-3 {
    width:25%;
  }

  .sm-col-6 {
    width:50%;
  }

  .sm-col-7 {
    width:58.33333%;
  }

  .sm-col-9 {
    width:75%;
  }

  .sm-col-10 {
    width:83.33333%;
  }

  .sm-col-11 {
    width:91.66667%;
  }

  .sm-col-12 {
    width:100%;
  }
}

.overflow-hidden {
  overflow:hidden;
}

.overflow-x-hidden {
  overflow-x:hidden;
}

.clearfix:after, .clearfix:before {
  content:" ";
  display:table;
}

.clearfix:after {
  clear:both;
}

.opacity-0 {
  opacity:0;
}

.block {
  display:block;
}

.flex {
  display:flex;
}

.inline-block {
  display:inline-block;
}

.inline-flex {
  display:inline-flex;
}

.md-show {
  display:none;
}

.md-hide {
  display:block;
}

.sm-show {
  display:none;
}

.sm-hide {
  display:block;
}

.hide {
  display:none;
}

@media (min-width:640px) {
  .sm-flex {
    display:flex;
  }

  .md-show {
    display:none;
  }

  .md-hide {
    display:block;
  }

  .hide {
    display:none;
  }

  .sm-show {
    display:block;
  }

  .sm-hide {
    display:none;
  }
}

@media (min-width:1024px) {
  .md-flex {
    display:flex;
  }

  .hide {
    display:none;
  }

  .sm-show {
    display:block;
  }

  .sm-hide {
    display:none;
  }

  .md-show {
    display:block;
  }

  .md-hide {
    display:none;
  }
}

@media (min-width:1480px) {
  .hide {
    display:none;
  }

  .sm-show {
    display:block;
  }

  .sm-hide {
    display:none;
  }

  .md-show {
    display:block;
  }

  .md-hide {
    display:none;
  }
}

.absolute {
  position:absolute;
}

.fixed {
  position:fixed;
}

.relative {
  position:relative;
}

.sticky {
  position:sticky;
}

.bottom-0 {
  bottom:0;
}

.left-0 {
  left:0;
}

.right-0 {
  right:0;
}

.top-0 {
  top:0;
}

.p0 {
  padding:0;
}

.pr0, .px0 {
  padding-right:0;
}

.px0 {
  padding-left:0;
}

.m0 {
  margin:0;
}

.p2 {
  padding:.5rem;
  padding:var(--space-2);
}

.pt2 {
  padding-top:.5rem;
  padding-top:var(--space-2);
}

.mt2 {
  margin-top:.5rem;
  margin-top:var(--space-2);
}

.mb2 {
  margin-bottom:.5rem;
  margin-bottom:var(--space-2);
}

.ml2 {
  margin-left:.5rem;
  margin-left:var(--space-2);
}

.mr2 {
  margin-right:.5rem;
  margin-right:var(--space-2);
}

.pt3 {
  padding-top:1rem;
  padding-top:var(--space-3);
}

.pb3 {
  padding-bottom:1rem;
  padding-bottom:var(--space-3);
}

.pl3 {
  padding-left:1rem;
  padding-left:var(--space-3);
}

.pr3, .px3 {
  padding-right:1rem;
  padding-right:var(--space-3);
}

.px3 {
  padding-left:1rem;
  padding-left:var(--space-3);
}

.mt3 {
  margin-top:1rem;
  margin-top:var(--space-3);
}

.mb3 {
  margin-bottom:1rem;
  margin-bottom:var(--space-3);
}

.mr3 {
  margin-right:1rem;
  margin-right:var(--space-3);
}

.mln3 {
  margin-left:-1rem;
  margin-left:calc(var(--space-3)*-1);
}

.mtn3 {
  margin-top:-1rem;
  margin-top:calc(var(--space-3)*-1);
}

.py4 {
  padding-bottom:1.5rem;
  padding-bottom:var(--space-4);
}

.py4 {
  padding-top:1.5rem;
  padding-top:var(--space-4);
}

.mt4 {
  margin-top:1.5rem;
  margin-top:var(--space-4);
}

.mb4 {
  margin-bottom:1.5rem;
  margin-bottom:var(--space-4);
}

.pt5 {
  padding-top:2rem;
  padding-top:var(--space-5);
}

.pb5 {
  padding-bottom:2rem;
  padding-bottom:var(--space-5);
}

.pr5, .px5 {
  padding-right:2rem;
  padding-right:var(--space-5);
}

.px5 {
  padding-left:2rem;
  padding-left:var(--space-5);
}

.mt5 {
  margin-top:2rem;
  margin-top:var(--space-5);
}

.mb5 {
  margin-bottom:2rem;
  margin-bottom:var(--space-5);
}

.pt6 {
  padding-top:3rem;
  padding-top:var(--space-6);
}

.pr6 {
  padding-right:3rem;
  padding-right:var(--space-6);
}

.py6 {
  padding-bottom:3rem;
  padding-bottom:var(--space-6);
  padding-top:3rem;
  padding-top:var(--space-6);
}

.mt6 {
  margin-top:3rem;
  margin-top:var(--space-6);
}

.mb6 {
  margin-bottom:3rem;
  margin-bottom:var(--space-6);
}

.py7 {
  padding-bottom:4rem;
  padding-bottom:var(--space-7);
}

.py7 {
  padding-top:4rem;
  padding-top:var(--space-7);
}

.mt7 {
  margin-top:4rem;
  margin-top:var(--space-7);
}

.pb8 {
  padding-bottom:5rem;
  padding-bottom:var(--space-8);
}

.mt8 {
  margin-top:5rem;
  margin-top:var(--space-8);
}

.mb9 {
  margin-bottom:6rem;
  margin-bottom:var(--space-9);
}

.mt13 {
  margin-top:12rem;
  margin-top:var(--space-13);
}

.mt14 {
  margin-top:16rem;
  margin-top:var(--space-14);
}

.mr-auto {
  margin-right:auto;
}

.ml-auto {
  margin-left:auto;
}

@media (min-width:640px) {
  .sm-pt0 {
    padding-top:0;
  }

  .sm-px0 {
    padding-right:0;
  }

  .sm-px0 {
    padding-left:0;
  }

  .sm-mt0 {
    margin-top:0;
  }

  .sm-pt4 {
    padding-top:1.5rem;
    padding-top:var(--space-4);
  }

  .sm-px4 {
    padding-left:1.5rem;
    padding-left:var(--space-4);
    padding-right:1.5rem;
    padding-right:var(--space-4);
  }

  .sm-pr5 {
    padding-right:2rem;
    padding-right:var(--space-5);
  }

  .sm-mt5 {
    margin-top:2rem;
    margin-top:var(--space-5);
  }

  .sm-pt6 {
    padding-top:3rem;
    padding-top:var(--space-6);
  }

  .sm-pr6, .sm-px6 {
    padding-right:3rem;
    padding-right:var(--space-6);
  }

  .sm-px6 {
    padding-left:3rem;
    padding-left:var(--space-6);
  }

  .sm-py6 {
    padding-bottom:3rem;
    padding-bottom:var(--space-6);
    padding-top:3rem;
    padding-top:var(--space-6);
  }

  .sm-pt7 {
    padding-top:4rem;
    padding-top:var(--space-7);
  }

  .sm-mt7 {
    margin-top:4rem;
    margin-top:var(--space-7);
  }

  .sm-mb7 {
    margin-bottom:4rem;
    margin-bottom:var(--space-7);
  }

  .sm-pb9 {
    padding-bottom:6rem;
    padding-bottom:var(--space-9);
  }

  .sm-mtn12 {
    margin-top:-10rem;
    margin-top:calc(var(--space-12)*-1);
  }

  .sm-ml-auto {
    margin-left:auto;
  }
}

@media (min-width:1024px) {
  .md-pl0 {
    padding-left:0;
  }

  .md-m0 {
    margin:0;
  }

  .md-mt0 {
    margin-top:0;
  }

  .md-mb0 {
    margin-bottom:0;
  }

  .md-mt3 {
    margin-top:1rem;
    margin-top:var(--space-3);
  }

  .md-mt4 {
    margin-top:1.5rem;
    margin-top:var(--space-4);
  }

  .md-mr4 {
    margin-right:1.5rem;
    margin-right:var(--space-4);
  }

  .md-mt5 {
    margin-top:2rem;
    margin-top:var(--space-5);
  }

  .md-py6 {
    padding-top:3rem;
    padding-top:var(--space-6);
  }

  .md-py6 {
    padding-bottom:3rem;
    padding-bottom:var(--space-6);
  }

  .md-py7 {
    padding-bottom:4rem;
    padding-bottom:var(--space-7);
    padding-top:4rem;
    padding-top:var(--space-7);
  }

  .md-pt8 {
    padding-top:5rem;
    padding-top:var(--space-8);
  }

  .md-pt9 {
    padding-top:6rem;
    padding-top:var(--space-9);
  }

  .md-px9 {
    padding-right:6rem;
    padding-right:var(--space-9);
  }

  .md-px9 {
    padding-left:6rem;
    padding-left:var(--space-9);
  }

  .md-mt9 {
    margin-top:6rem;
    margin-top:var(--space-9);
  }

  .md-mb9 {
    margin-bottom:6rem;
    margin-bottom:var(--space-9);
  }

  .md-mt11 {
    margin-top:9rem;
    margin-top:var(--space-11);
  }

  .md-pt12 {
    padding-top:10rem;
    padding-top:var(--space-12);
  }

  .md-pb12 {
    padding-bottom:10rem;
    padding-bottom:var(--space-12);
  }

  .md-mtn14 {
    margin-top:-16rem;
    margin-top:calc(var(--space-14)*-1);
  }
}

@media (min-width:1480px) {
  .lg-mt9 {
    margin-top:6rem;
    margin-top:var(--space-9);
  }

  .lg-px10 {
    padding-right:8rem;
    padding-right:var(--space-10);
  }

  .lg-px10 {
    padding-left:8rem;
    padding-left:var(--space-10);
  }
}

.transition-opacity {
  transition:opacity .2s cubic-bezier(.45,.34,.65,.96);
}

.type-style-1 {
  font-family:SuisseIntl,sans-serif;
  font-family:var(--type-style-1-family);
  font-size:2.4rem;
  font-size:var(--type-style-1-size);
  font-weight:300;
  font-weight:var(--type-style-1-weight);
  letter-spacing:.37rem;
  letter-spacing:var(--type-style-1-letter-spacing);
  line-height:1.25;
  line-height:var(--type-style-1-line-height);
  text-transform:uppercase;
  text-transform:var(--type-style-1-text-transform);
}

.type-style-2 {
  font-family:GTF Upper,sans-serif;
  font-family:var(--type-style-2-family);
  font-size:2.4rem;
  font-size:var(--type-style-2-size);
  font-weight:400;
  font-weight:var(--type-style-2-weight);
  letter-spacing:-.12rem;
  letter-spacing:var(--type-style-2-letter-spacing);
  line-height:1.08333;
  line-height:var(--type-style-2-line-height);
  text-transform:uppercase;
  text-transform:var(--type-style-2-text-transform);
}

.type-style-4 {
  font-family:SuisseIntl,sans-serif;
  font-family:var(--type-style-4-family);
  font-size:1.4rem;
  font-size:var(--type-style-4-size);
  font-weight:300;
  font-weight:var(--type-style-4-weight);
  letter-spacing:.13rem;
  letter-spacing:var(--type-style-4-letter-spacing);
  line-height:1.42857;
  line-height:var(--type-style-4-line-height);
  text-transform:none;
  text-transform:var(--type-style-4-text-transform);
}

.type-style-5 {
  font-family:SuisseIntl,sans-serif;
  font-family:var(--type-style-5-family);
  font-size:1rem;
  font-size:var(--type-style-5-size);
  font-weight:400;
  font-weight:var(--type-style-5-weight);
  letter-spacing:.333rem;
  letter-spacing:var(--type-style-5-letter-spacing);
  line-height:1.8;
  line-height:var(--type-style-5-line-height);
  text-transform:uppercase;
  text-transform:var(--type-style-5-text-transform);
}

.text-decoration-reset {
  text-decoration:none;
}

.underline {
  text-decoration:underline;
}

.align-left {
  text-align:left;
}

.list-reset {
  list-style:none;
  padding-left:0;
}

.break-word {
  word-wrap:break-word;
}

.font-0 {
  font-size:0;
}

@media (min-width:640px) {
  .type-style-1 {
    font-family:SuisseIntl,sans-serif;
    font-family:var(--sm-type-style-1-family);
    font-size:3rem;
    font-size:var(--sm-type-style-1-size);
    font-weight:300;
    font-weight:var(--sm-type-style-1-weight);
    letter-spacing:.46rem;
    letter-spacing:var(--sm-type-style-1-letter-spacing);
    line-height:1.26667;
    line-height:var(--sm-type-style-1-line-height);
    text-transform:uppercase;
    text-transform:var(--sm-type-style-1-text-transform);
  }

  .type-style-2 {
    font-family:GTF Upper,sans-serif;
    font-family:var(--sm-type-style-2-family);
    font-size:3.3rem;
    font-size:var(--sm-type-style-2-size);
    font-weight:400;
    font-weight:var(--sm-type-style-2-weight);
    letter-spacing:-.25rem;
    letter-spacing:var(--sm-type-style-2-letter-spacing);
    line-height:1.09091;
    line-height:var(--sm-type-style-2-line-height);
    text-transform:uppercase;
    text-transform:var(--sm-type-style-2-text-transform);
  }

  .type-style-4 {
    font-family:SuisseIntl,sans-serif;
    font-family:var(--sm-type-style-4-family);
    font-size:1.4rem;
    font-size:var(--sm-type-style-4-size);
    font-weight:300;
    font-weight:var(--sm-type-style-4-weight);
    letter-spacing:.13rem;
    letter-spacing:var(--sm-type-style-4-letter-spacing);
    line-height:1.42857;
    line-height:var(--sm-type-style-4-line-height);
    text-transform:none;
    text-transform:var(--sm-type-style-4-text-transform);
  }

  .type-style-5 {
    font-family:SuisseIntl,sans-serif;
    font-family:var(--sm-type-style-5-family);
    font-size:1rem;
    font-size:var(--sm-type-style-5-size);
    font-weight:400;
    font-weight:var(--sm-type-style-5-weight);
    letter-spacing:.333rem;
    letter-spacing:var(--sm-type-style-5-letter-spacing);
    line-height:1.8;
    line-height:var(--sm-type-style-5-line-height);
    text-transform:uppercase;
    text-transform:var(--sm-type-style-5-text-transform);
  }

  .line-height-1 {
    line-height:1;
  }
}

@media (min-width:1024px) {
  .type-style-1 {
    font-family:SuisseIntl,sans-serif;
    font-family:var(--md-type-style-1-family);
    font-size:4.5rem;
    font-size:var(--md-type-style-1-size);
    font-weight:300;
    font-weight:var(--md-type-style-1-weight);
    letter-spacing:.35rem;
    letter-spacing:var(--md-type-style-1-letter-spacing);
    line-height:1.22222;
    line-height:var(--md-type-style-1-line-height);
    text-transform:uppercase;
    text-transform:var(--md-type-style-1-text-transform);
  }

  .type-style-2 {
    font-family:GTF Upper,sans-serif;
    font-family:var(--md-type-style-2-family);
    font-size:4.5rem;
    font-size:var(--md-type-style-2-size);
    font-weight:400;
    font-weight:var(--md-type-style-2-weight);
    letter-spacing:-.28rem;
    letter-spacing:var(--md-type-style-2-letter-spacing);
    line-height:1.15556;
    line-height:var(--md-type-style-2-line-height);
    text-transform:uppercase;
    text-transform:var(--md-type-style-2-text-transform);
  }

  .type-style-4 {
    font-family:SuisseIntl,sans-serif;
    font-family:var(--md-type-style-4-family);
    font-size:1.6rem;
    font-size:var(--md-type-style-4-size);
    font-weight:300;
    font-weight:var(--md-type-style-4-weight);
    letter-spacing:.18rem;
    letter-spacing:var(--md-type-style-4-letter-spacing);
    line-height:1.375;
    line-height:var(--md-type-style-4-line-height);
    text-transform:none;
    text-transform:var(--md-type-style-4-text-transform);
  }

  .type-style-5 {
    font-family:SuisseIntl,sans-serif;
    font-family:var(--md-type-style-5-family);
    font-size:1.2rem;
    font-size:var(--md-type-style-5-size);
    font-weight:400;
    font-weight:var(--md-type-style-5-weight);
    letter-spacing:.4rem;
    letter-spacing:var(--md-type-style-5-letter-spacing);
    line-height:1.66667;
    line-height:var(--md-type-style-5-line-height);
    text-transform:uppercase;
    text-transform:var(--md-type-style-5-text-transform);
  }

  .line-height-1 {
    line-height:1;
  }

  .md-align-right {
    text-align:right;
  }
}

@media (min-width:1480px) {
  .type-style-1 {
    font-family:SuisseIntl,sans-serif;
    font-family:var(--lg-type-style-1-family);
    font-size:8rem;
    font-size:var(--lg-type-style-1-size);
    font-weight:300;
    font-weight:var(--lg-type-style-1-weight);
    letter-spacing:.6rem;
    letter-spacing:var(--lg-type-style-1-letter-spacing);
    line-height:1.25;
    line-height:var(--lg-type-style-1-line-height);
    text-transform:uppercase;
    text-transform:var(--lg-type-style-1-text-transform);
  }

  .type-style-2 {
    font-family:GTF Upper,sans-serif;
    font-family:var(--lg-type-style-2-family);
    font-size:8rem;
    font-size:var(--lg-type-style-2-size);
    font-weight:400;
    font-weight:var(--lg-type-style-2-weight);
    letter-spacing:-.3rem;
    letter-spacing:var(--lg-type-style-2-letter-spacing);
    line-height:1;
    line-height:var(--lg-type-style-2-line-height);
    text-transform:uppercase;
    text-transform:var(--lg-type-style-2-text-transform);
  }

  .type-style-4 {
    font-family:SuisseIntl,sans-serif;
    font-family:var(--lg-type-style-4-family);
    font-size:1.6rem;
    font-size:var(--lg-type-style-4-size);
    font-weight:300;
    font-weight:var(--lg-type-style-4-weight);
    letter-spacing:.18rem;
    letter-spacing:var(--lg-type-style-4-letter-spacing);
    line-height:1.375;
    line-height:var(--lg-type-style-4-line-height);
    text-transform:none;
    text-transform:var(--lg-type-style-4-text-transform);
  }

  .type-style-5 {
    font-family:SuisseIntl,sans-serif;
    font-family:var(--lg-type-style-5-family);
    font-size:1.2rem;
    font-size:var(--lg-type-style-5-size);
    font-weight:400;
    font-weight:var(--lg-type-style-5-weight);
    letter-spacing:.4rem;
    letter-spacing:var(--lg-type-style-5-letter-spacing);
    line-height:1.66667;
    line-height:var(--lg-type-style-5-line-height);
    text-transform:uppercase;
    text-transform:var(--lg-type-style-5-text-transform);
  }

  .line-height-1 {
    line-height:1;
  }
}

.z1 {
  z-index:var(--z1);
}

.z2 {
  z-index:var(--z2);
}

.z3 {
  z-index:var(--z3);
}

.link-reset {
  color:inherit;
  text-decoration:none;
}

.button-reset {
  background-color:transparent;
  border:none;
}

.swiper-container {
  width:100%;
}

.swiper-wrapper {
  align-items:center;
  box-sizing:content-box;
  margin:0;
  padding:0;
  position:relative;
  transition-property:transform;
  width:100%;
  z-index:1;
}

.swiper-horizontal>.swiper-container>.swiper-wrapper {
  display:flex;
  height:100%;
}

.swiper-slide {
  flex-shrink:0;
  height:100%;
  position:relative;
  transition-property:transform;
}

.swiper-next-button {
  display:none;
}

.swiper-slide img.pixelated {
  visibility:hidden;
}

@media (min-width:1480px) {
  .swiper-horizontal>.swiper-container>.swiper-wrapper>.swiper-slide img {
    max-height:min(100vh,105rem);
  }
}

@media (min-width:640px) {
  .swiper-next-button {
    display:block;
    padding:0;
    transform:translateX(6rem);
    width:calc(32rem + 18.18182%);
  }
}

@media (min-width:1024px) and (hover:hover) {
  .swiper-slide {
    transition:transform .3s ease-out;
  }

  .swiper-next-button:hover~.swiper-container .swiper-slide-next {
    transform:translateX(-6rem);
  }
}

.sm-accessible-hide:active, .sm-accessible-hide:focus, .sm-accessible-hide:focus-within {
  clip:auto;
  -webkit-clip-path:unset;
  clip-path:unset;
  display:unset;
  height:auto;
  overflow:visible;
  position:static;
  white-space:normal;
  width:auto;
}

@media (min-width:640px) {
  .sm-accessible-hide:not(:focus):not(:focus-within):not(:active) {
    clip:rect(1px 1px 1px 1px);
    clip:rect(1px,1px,1px,1px);
    -webkit-clip-path:inset(1px);
    clip-path:inset(1px);
    display:block;
    height:1px;
    overflow:hidden;
    position:absolute;
    white-space:nowrap;
    width:1px;
  }
}

@media (min-width:1024px) {
  .md-accessible-hide:not(:focus):not(:focus-within):not(:active) {
    clip:rect(1px 1px 1px 1px);
    clip:rect(1px,1px,1px,1px);
    -webkit-clip-path:inset(1px);
    clip-path:inset(1px);
    display:block;
    height:1px;
    overflow:hidden;
    position:absolute;
    white-space:nowrap;
    width:1px;
  }
}

.accessible-hide[type=checkbox]:focus~label, .accessible-hide[type=radio]:focus~label {
  outline:3px solid currentColor;
}

.expand-interaction:not(.fixed):not(.absolute) {
  position:relative;
}

.expand-interaction .expand-interaction__action:before {
  bottom:0;
  content:"";
  display:block;
  left:0;
  position:absolute;
  right:0;
  top:0;
  z-index:1;
}

.expand-interaction a:not(.expand-interaction__action), .expand-interaction button:not(.expand-interaction__action) {
  position:relative;
  z-index:2;
}

.skip-link {
  background-color:#fff;
  border:1px solid #000;
  left:0;
  padding:.5rem 1rem;
  padding:var(--space-2) var(--space-3);
  position:absolute;
  top:0;
  transform:translate(-110%);
  transform:translate(calc(-100% - 1px));
  z-index:11;
}

.skip-link:focus {
  transform:translate(0);
}

.cursor-grab {
  cursor:grab;
}

.pointer-events-none {
  pointer-events:none;
}

.pointer-events-auto {
  pointer-events:auto;
}

.overflow-visible {
  overflow:visible;
}

.page-text {
  color:var(--page-text);
}

.bg-page-background, .hover-bg-page-background:hover {
  background-color:#fff;
  background-color:var(--page-background);
}

.border-page-border {
  border-color:var(--page-border);
}

.z0 {
  z-index:0;
}

.z1 {
  z-index:1;
}

.z2 {
  z-index:2;
}

.z3 {
  z-index:3;
}

.container {
  margin:0 auto;
  max-width:192rem;
}

.container-client-module {
  max-width:none;
}

.top-50 {
  top:50%;
}

.top-100 {
  top:100%;
}

.top-120px {
  top:12rem;
}

.left-50 {
  left:50%;
}

.absolute-center {
  left:50%;
  position:absolute;
  top:50%;
  transform:translate(-50%,-50%);
}

@media (min-width:1480px) {
  .lg-top-155px {
    top:15.5rem;
  }
}

.width-100 {
  width:100%;
}

.min-width-55px {
  min-width:5.5rem;
}

.height-100 {
  height:100%;
}

.height-30vh {
  height:30vh;
  height:calc(var(--vh)*30);
}

.height-100vh {
  height:100vh;
  height:-webkit-fill-available;
}

.min-height-15vh {
  min-height:15vh;
  min-height:calc(var(--vh)*15);
}

.min-height-100vh {
  min-height:100vh;
  min-height:-webkit-fill-available;
}

@media (min-width:1024px) {
  .md-min-height-0 {
    min-height:0;
  }
}

.transform-yn-50 {
  transform:translateY(-50%);
}

.rotate-90 {
  transform:rotate(90deg);
}

.flip {
  transform:scaleX(-1);
}

@media (min-width:640px) {
  .client-list {
    -moz-column-count:2;
    column-count:2;
  }
}

@media (min-width:1024px) {
  .client-list {
    -moz-column-count:3;
    column-count:3;
  }
}

@media (min-width:1480px) {
  .client-list {
    -moz-column-count:3;
    column-count:3;
  }
}

@media (min-width:1024px) {
  .md-push-left-22-5 {
    margin-left:22.72727%;
  }

  .md-push-left-22-7 {
    margin-left:31.81818%;
  }
}

@media (min-width:1480px) {
  .lg-push-left-22-6 {
    margin-left:27.27273%;
  }
}

@media (min-width:640px) {
  .sm-col-22-5 {
    width:22.72727%;
  }

  .sm-col-22-6 {
    width:27.27273%;
  }

  .sm-col-22-10 {
    width:45.45455%;
  }

  .sm-col-22-12 {
    width:54.54545%;
  }

  .sm-col-22-16 {
    width:72.72727%;
  }

  .sm-col-22-17 {
    width:77.27273%;
  }
}

@media (min-width:1024px) {
  .md-col-22-4 {
    width:18.18182%;
  }

  .md-col-22-5 {
    width:22.72727%;
  }

  .md-col-22-6 {
    width:27.27273%;
  }

  .md-col-22-7 {
    width:31.81818%;
  }

  .md-col-22-8 {
    width:36.36364%;
  }

  .md-col-22-10 {
    width:45.45455%;
  }

  .md-col-22-11 {
    width:50%;
  }

  .md-col-22-14 {
    width:63.63636%;
  }

  .md-col-22-16 {
    width:72.72727%;
  }
}

@media (min-width:1480px) {
  .lg-col-22-6 {
    width:27.27273%;
  }
}

.video-oembed {
  height:0;
  max-width:100%;
  overflow:hidden;
  padding-bottom:56.25%;
  position:relative;
}

.poster-oembed img, .video-oembed iframe {
  height:100%!important;
  max-height:min(90vh,70rem);
  max-width:min(90vw,100%);
  width:100%!important;
}

.video-oembed iframe {
  left:0;
  position:absolute;
  top:0;
}

.poster-oembed img {
  -o-object-fit:cover;
  object-fit:cover;
}

@media (min-width:1480px) {
  .poster-oembed img, .video-oembed iframe {
    max-height:min(90vh,105rem);
  }
}

.media-hover {
  font-size:0;
}

.media-hover img {
  height:auto;
  max-height:65vh;
  max-width:75vw;
  -o-object-fit:contain;
  object-fit:contain;
  -o-object-position:center;
  object-position:center;
  width:100%;
}

@media (min-width:1024px) {
  .media-hover img {
    height:auto;
    max-height:48rem;
    max-width:48rem;
    -o-object-fit:contain;
    object-fit:contain;
    -o-object-position:center;
    object-position:center;
    width:100%;
  }
}

.media-hover .pixelated {
  display:none;
}

.mt-auto {
  margin-top:auto;
}

.break-word {
  word-break:break-word;
}

.line-height-1 {
  line-height:1;
}

.line-height-1-2 {
  line-height:1.2;
}

.rich-text a {
  background-image:linear-gradient(to bottom,var(--page-border),var(--page-border)),linear-gradient(to bottom,currentColor,currentColor);
  background-origin:content-box;
  background-position:100% 115%,100% 115%;
  background-repeat:no-repeat;
  background-size:100% 1px,0 1px;
  padding-bottom:2px;
  transition:background-size .6s cubic-bezier(.165,.84,.44,1);
}

.rich-text a:hover {
  background-position:100% 115%,0 115%;
  background-size:100% 1px,100% 1px;
}

.rich-text {
  word-break:break-word;
}

.rich-text a {
  color:inherit;
  text-decoration:none;
}

.rich-text>h2, .rich-text>h3, .rich-text>h4, .rich-text>ol, .rich-text>p, .rich-text>ul {
  margin-top:2rem;
  margin-top:var(--space-5);
}

.rich-text:not(.rich-text--in-flow)>h2:first-child, .rich-text:not(.rich-text--in-flow)>h3:first-child, .rich-text:not(.rich-text--in-flow)>h4:first-child, .rich-text:not(.rich-text--in-flow)>ol:first-child, .rich-text:not(.rich-text--in-flow)>p:first-child, .rich-text:not(.rich-text--in-flow)>ul:first-child {
  margin-top:0;
}

@media (min-width:640px) {
  .rich-text>h2, .rich-text>h3, .rich-text>h4, .rich-text>ol, .rich-text>p, .rich-text>ul {
    margin-top:3rem;
    margin-top:var(--space-6);
  }

  .rich-text:not(.rich-text--in-flow)>h2:first-child, .rich-text:not(.rich-text--in-flow)>h3:first-child, .rich-text:not(.rich-text--in-flow)>h4:first-child, .rich-text:not(.rich-text--in-flow)>ol:first-child, .rich-text:not(.rich-text--in-flow)>p:first-child, .rich-text:not(.rich-text--in-flow)>ul:first-child {
    margin-top:0;
  }
}

.rich-text ol, .rich-text ul {
  list-style:none;
  margin-left:0;
  margin-right:0;
  padding:0;
}

.rich-text ol>li, .rich-text ul>li {
  display:flex;
  overflow:hidden;
}

.rich-text ol li+li, .rich-text ul li+li {
  margin-top:1.5rem;
  margin-top:var(--space-4);
}

.rich-text ol {
  counter-reset:item;
}

.rich-text ol>li {
  align-items:baseline;
}

.rich-text ol>li:before {
  content:counter(item) ".";
  counter-increment:item;
  display:inline-block;
  margin-right:1.5rem;
  margin-right:var(--space-4);
}

.rich-text ul>li {
  align-items:baseline;
}

.rich-text ul>li:before {
  background:#000;
  background:var(--black);
  content:"";
  display:inline-block;
  flex-shrink:0;
  height:1px;
  margin-right:1.5rem;
  margin-right:var(--space-4);
  position:relative;
  top:-.3em;
  width:.5em;
}

.footer-p>p {
  margin-top:12px;
}

.button {
  cursor:pointer;
}

.button:disabled {
  pointer-events:none;
}

.button:disabled:not(.button-blink) {
  opacity:.4;
  opacity:var(--muted);
}

.underline {
  background-image:linear-gradient(to bottom,var(--page-border),var(--page-border)),linear-gradient(to bottom,currentColor,currentColor);
  background-origin:content-box;
  background-position:100% 115%,100% 115%;
  background-repeat:no-repeat;
  background-size:100% 1px,0 1px;
  padding-bottom:4px;
  text-decoration:none;
  transition:background-size .6s cubic-bezier(.165,.84,.44,1);
}

.underline.white {
  background-image:linear-gradient(180deg,hsla(0,0%,100%,.5),hsla(0,0%,100%,.5)),linear-gradient(180deg,currentColor,currentColor);
}

#categories-collapsible .underline, #navigation-collapsible .underline, .nav-list .underline {
  background-image:linear-gradient(180deg,transparent,transparent),linear-gradient(180deg,currentColor,currentColor);
}

#categories-collapsible .underline.is-active, #navigation-collapsible .underline.is-active, .nav-list .underline.is-active, .underline.is-active, .underline:hover {
  background-position:100% 115%,0 115%;
  background-size:100% 1px,100% 1px;
}

@media (min-width:640px) {
  .underline {
    background-position:100% 115%,100% 115%;
    background-size:100% 1px,0 1px;
  }

  #categories-collapsible .underline, #navigation-collapsible .underline, .nav-list .underline {
    background-image:linear-gradient(to bottom,var(--page-border),var(--page-border)),linear-gradient(to bottom,currentColor,currentColor);
  }

  #categories-collapsible .underline.white, #navigation-collapsible .underline.white, .nav-list .underline.white {
    background-image:linear-gradient(180deg,hsla(0,0%,100%,.5),hsla(0,0%,100%,.5)),linear-gradient(180deg,currentColor,currentColor);
  }

  .underline.is-active, .underline:hover {
    background-position:100% 115%,0 115%;
    background-size:100% 1px,100% 1px;
  }
}

.scrollable-options {
  -webkit-overflow-scrolling:touch;
  max-height:min(30rem,60vh);
  overflow:auto;
}

.scope-reveal__action {
  opacity:0;
  pointer-events:none;
  scale:1;
  transform-origin:center;
  transition:scale .4s ease-out;
}

.active-scope-reveal .scope-reveal .scope-reveal__action {
  opacity:1;
  scale:.8;
  transition:scale .4s ease-out;
}

@media (min-width:1024px) {
  .module-editorial-list .active-scope-reveal .scope-reveal .scope-reveal__action, .module-editorial-list .scope-reveal__action, .module-editorial-relation-list .active-scope-reveal .scope-reveal .scope-reveal__action, .module-editorial-relation-list .scope-reveal__action, .module-service-list .active-scope-reveal .scope-reveal .scope-reveal__action, .module-service-list .scope-reveal__action, .module-social-media-banner .active-scope-reveal .scope-reveal .scope-reveal__action, .module-social-media-banner .scope-reveal__action {
    transition:none;
  }
}

.play-icon svg {
  color:#fff;
  color:var(--white);
  height:4rem;
  transition:color .3s ease-out;
  width:4rem;
}

.play-icon:hover svg, .scope-play-icon:hover svg {
  color:#222;
  color:var(--dark-grey);
}

.play-icon path {
  transition:fill .3s ease-out;
}

.play-icon:hover path, .scope-play-icon:hover path {
  fill:#fff;
  fill:var(--white);
}

@media (min-width:640px) {
  .play-icon svg {
    height:6rem;
    width:6rem;
  }
}

.field.has-value .label, .field.is-focused .label {
  transform:translateY(0);
}

.label {
  padding:0 0 .5rem;
  pointer-events:none;
  transform:translateY(100%);
  transition:transform .15s ease-out;
}

@media (min-width:1024px) {
  .label {
    padding:0 0 1rem;
  }
}

.input {
  -webkit-appearance:none;
  -moz-appearance:none;
  appearance:none;
  background-color:transparent;
  border:none;
  border-bottom:1px solid var(--page-border);
  padding:0 0 .5rem;
}

@media (min-width:1024px) {
  .input {
    padding:.5rem 0;
  }
}

.textarea {
  -webkit-appearance:none;
  -moz-appearance:none;
  appearance:none;
  background-color:transparent;
  border:none;
  border-bottom:1px solid var(--page-border);
  height:2.5rem;
  height:calc(var(--type-style-4-size)*var(--type-style-4-line-height) + .5rem);
  margin:0;
  max-height:2.5rem;
  max-height:calc(var(--type-style-4-size)*var(--type-style-4-line-height) + .5rem);
  max-width:100%;
  min-height:2.5rem;
  min-height:calc(var(--type-style-4-size)*var(--type-style-4-line-height) + .5rem);
  min-width:100%;
  padding:0 0 .5rem;
  transition:min-height .3s ease-out,max-height .3s ease-out;
  width:100%;
}

.field.has-value .textarea, .field.is-focused .textarea {
  max-height:none;
  min-height:10rem;
}

@media (min-width:1024px) {
  .textarea {
    height:3rem;
    height:calc(var(--type-style-4-size)*var(--type-style-4-line-height) + 1rem);
    max-height:3rem;
    max-height:calc(var(--type-style-4-size)*var(--type-style-4-line-height) + 1rem);
    min-height:3rem;
    min-height:calc(var(--type-style-4-size)*var(--type-style-4-line-height) + 1rem);
    padding:0 0 1rem;
  }
}

.scale-loading-transition, .scale-loading-transition-wait {
  opacity:0;
  transform:scale(1.1);
  transform-origin:center;
  transition:opacity .4s ease-out .4s,transform .4s ease-out .4s;
}

.page-content {
  transition:opacity .4s ease-out;
}

.page-content.is-visible .scale-loading-transition, .page-content.is-visible .scale-loading-transition-wait.is-visible {
  opacity:1;
  transform:scale(1);
  transition-delay:0ms;
}

.text-transition {
  opacity:0;
  transition:opacity 1s ease-out;
}

.page-content.is-visible .text-transition {
  opacity:1;
  transition-delay:.6s;
}

.default-veil {
  background:#fff;
  bottom:0;
  left:0;
  opacity:0;
  pointer-events:none;
  position:fixed;
  right:0;
  top:0;
  transition:opacity .4s ease-out;
  z-index:10;
}

.default-veil.is-visible {
  opacity:1;
  pointer-events:all;
}

.veil {
  align-items:start;
  background:#fff;
  bottom:0;
  display:flex;
  justify-content:space-between;
  left:0;
  opacity:0;
  padding:3rem 2rem;
  pointer-events:none;
  position:fixed;
  right:0;
  top:0;
  transition:opacity .3s ease-out .2s;
  z-index:11;
}

@media (min-width:640px) {
  .veil {
    align-items:center;
    justify-content:center;
    padding:0;
  }
}

.veil.is-visible {
  opacity:1;
  pointer-events:auto;
  transition:opacity .3s ease-out;
}

.veil__brand {
  position:relative;
}

.veil__brand-label {
  display:block;
  font-size:1.6rem!important;
  letter-spacing:.2px!important;
  line-height:3.6rem;
}

@media (min-width:1024px) {
  .veil__brand-label {
    font-size:2vw!important;
    letter-spacing:-.28rem!important;
    letter-spacing:var(--md-type-style-2-letter-spacing)!important;
    line-height:1.15556!important;
    line-height:var(--md-type-style-2-line-height)!important;
  }
}

.veil:not(.is-visible) .veil__brand-label {
  opacity:0;
  transform:scale(.9);
  transition:transform 4s ease-out,opacity 4s ease-out;
}

.veil__progress {
  bottom:0;
  font-size:1.3rem!important;
  font-weight:100!important;
  left:0;
  line-height:3.6rem!important;
  position:relative;
  top:0;
  transform:none;
}

@media (min-width:640px) {
  .veil__progress {
    bottom:10%;
    left:50%;
    position:absolute;
    top:auto;
    transform:translateX(-50%);
  }
}

@media (min-width:1024px) {
  .veil__progress {
    font-size:1.2rem!important;
    font-size:var(--md-type-style-5-size)!important;
    font-weight:400!important;
    font-weight:var(--md-type-style-5-weight)!important;
    line-height:1.66667!important;
    line-height:var(--md-type-style-5-line-height)!important;
  }
}

.title-over-image {
  container-type:inline-size;
  position:relative;
}

.title-over-image>.md-hide,
.title-over-image>.md-show {
  z-index:1;
}

.invert-clip {
  isolation:isolate;
  overflow:hidden;
  position:relative;
}

.module-social-media-banner {
  isolation:isolate;
  overflow:hidden;
}

.active-scope-reveal .scope-reveal .invert-clip .scope-reveal__action {
  scale:1;
}

.title-invert {
  color:#fff;
  left:50%;
  margin:0;
  mix-blend-mode:normal;
  opacity:0;
  pointer-events:none;
  position:absolute;
  top:50%;
  transform:translate(-50%,-50%);
  width:100cqw;
}

.active-scope-reveal .title-invert {
  mix-blend-mode:difference;
  opacity:1;
}

@media (min-width:1024px) {
  .md-show .title-invert {
    left:0;
    top:50%;
    transform:translateY(-50%) translateX(calc(-100cqw * 7 / 22));
    width:100cqw;
  }
}

.blend-mode-difference {
  color:#fff;
  color:var(--page-background);
  mix-blend-mode:difference;
}

.difference-effect {
  filter:invert(1);
  mix-blend-mode:difference;
}

/* Footer / Get in Touch: never inherit Connect-banner invert.
 * .title-invert { mix-blend-mode:difference } at opacity:0 still
 * double-paints following type (TOUCHH / filmm / COOKIESS). */
footer {
  isolation:isolate;
}
footer,
footer * {
  mix-blend-mode:normal !important;
}
footer .title-invert,
footer .blend-mode-difference,
footer .difference-effect {
  display:none !important;
}


.opacity-07 {
  opacity:.7;
}

.transition-bg {
  transition:background .3s ease-out;
}

.fade-in {
  animation:fadeIn .3s ease-out;
  animation-fill-mode:both;
  will-change:opacity;
}

.accelerate-gpu {
  transform:translateZ(1px);
}

.project-slider__slide img.pixelated {
  background-color:#ccc;
  background-color:var(--light-grey);
}

.project-slider__slide a, .project-slider__slide img {
  -webkit-user-drag:none;
  -webkit-user-select:none;
  -moz-user-select:none;
  user-select:none;
}

.project-slider__heading {
  left:0;
  max-width:48rem;
  opacity:0;
  position:absolute;
  top:50%;
  transform:translate3d(-14%,-50%,0);
  transform:translate3d(var(--project-slider-heading-shift),-50%,0);
  transition:opacity .3s ease-out;
}

@media (hover:none) {
  .project-slider__slide.is-active .project-slider__heading {
    opacity:1;
  }
}

.project-slider__slide:focus .project-slider__heading, .project-slider__slide:focus-within .project-slider__heading, .project-slider__slide:hover .project-slider__heading {
  opacity:1;
}

.swiper-slide-active>a .blend-mode-difference {
  opacity:1;
  transition:opacity .5s ease-in;
}

.swiper-slide-next>a .blend-mode-difference, .swiper-slide-prev>a .blend-mode-difference {
  opacity:0;
  transition:opacity .5s ease-in;
}

/* ---- src/styles/25-failsafe.css ---- */
/* src/styles/25-failsafe.css
 * Hand-written (not ported, not touched by scripts/port-css.mjs). Foundation
 * lane. Implements _rebuild/BRIEF-BUILD.md "Stage B isolation" > "The veil
 * fails open": if site JS throws or never runs at all, content must still
 * become visible -- a broken JS lane must never blank every page.
 *
 * Mechanism: src/layout.mjs's renderHead() emits a synchronous inline
 * <script> (before the stylesheet link, so it always wins the race) that
 * adds `js` to <html>'s class list. Every rule below is gated on
 * `html.js` -- so:
 *   - JS disabled/blocked entirely -> `js` class never lands -> the plain
 *     (non-`html.js`-scoped) rules below apply -> .default-veil never
 *     becomes opaque and .page-content is visible immediately. No blank
 *     page, ever, with zero reliance on JS running.
 *   - JS runs normally -> `html.js` present -> the veil shows and
 *     .page-content stays hidden exactly as before, pending 00-core.js's
 *     real reveal logic (see src/CONTRACT.md "Veil preloader").
 *   - JS runs but 00-core.js throws/hangs before reaching the reveal code
 *     -> the `animation: ... 4s forwards` on each `html.js`-scoped rule
 *     fires as a backstop 4s after load, forcing the same end-state
 *     00-core.js would have set. Both paths converge on the identical
 *     visual result, so whichever fires first is a no-op for the other --
 *     there is nothing for 00-core.js to coordinate with this file.
 *
 * Loaded after 20-utilities.css (build.mjs concatenates src/styles/*.css in
 * filename order) so these same-specificity overrides win by source order
 * where specificity alone doesn't already decide it (.default-veil.is-
 * visible in the ported CSS is itself a 2-class compound selector; ours
 * must load later, not just match harder, to win the cascade -- that's
 * deliberate, not an oversight, hence the file living here rather than
 * beside 00-tokens.css).
 */

/* .page-content.opacity-0 (0,2,0 specificity) already out-specifies the
 * plain .opacity-0 utility (0,1,0) regardless of load order -- this default
 * rule is the true no-JS state: visible immediately, full stop. */
.page-content.opacity-0 {
  opacity: 1;
}

html.js .page-content.opacity-0 {
  opacity: 0;
  animation: failsafe-reveal-content 0.01s 4s forwards;
}

@keyframes failsafe-reveal-content {
  to {
    opacity: 1;
  }
}

/* .default-veil.is-visible in 20-utilities.css is itself a 2-class compound
 * (0,2,0) -- match it exactly and rely on this file loading later. */
.default-veil.is-visible {
  opacity: 0;
  pointer-events: none;
}

html.js .default-veil.is-visible {
  opacity: 1;
  pointer-events: all;
  animation: failsafe-hide-veil 0.01s 4s forwards;
}

@keyframes failsafe-hide-veil {
  to {
    opacity: 0;
    pointer-events: none;
  }
}

/* prefers-reduced-motion: no functional difference here (these are timing
 * backstops, not decorative motion), but drop the animation properties so
 * a reduced-motion user agent that also zeroes animation-duration doesn't
 * end up stuck at the pre-4s state with no path to opacity:1. */
@media (prefers-reduced-motion: reduce) {
  html.js .page-content.opacity-0,
  html.js .default-veil.is-visible {
    animation-duration: 0.01s;
    animation-delay: 0s;
  }
}

/* ---- src/styles/26-header-dialog.css ---- */
/* src/styles/26-header-dialog.css
 * Hand-ported, not touched by scripts/port-css.mjs. Header lane (mobile
 * <header>/#header-dialog markup, src/layout.mjs + src/js/05-header.js).
 *
 * scripts/port-css.mjs's used-class scan only reads
 * _rebuild/capture/html/*.html (server-rendered HTML). The mobile
 * header-dialog markup is never server-rendered on the source either -- it
 * only exists in the post-hydration DOM (_rebuild/capture/dom/*.mobile.html)
 * -- so port-css.mjs's scan never saw these classes and never ported their
 * rules, the same gap src/CONTRACT.md section 3 documents for
 * .blink/.button-blink ("not ported... because JS-applied, never
 * server-rendered... port these two rules yourself... verbatim, unminified,
 * when you build the typewriter behaviour"). This file is that same
 * treatment applied to the header dialog: every rule below is transcribed
 * verbatim (including original @media wrappers, duplicate same-property
 * declarations where the source itself has a static fallback before a
 * var(--token) override, and duplicate --z5/--z6 blocks where the source
 * defines a var()-based value earlier and a literal-integer value later,
 * later-wins) from _rebuild/capture/fingerprint/index.css, by running
 * port-css.mjs's own tokenizer/classifier against a used-class set built
 * from the 18 classes in src/layout.mjs's mobile header/dialog markup that
 * had zero rule anywhere in src/styles/10-base.css or 20-utilities.css --
 * not hand-transcribed by eye. See scripts/check-mobile-header.mjs's
 * 142/142 pass for markup fidelity; this file is what makes that markup
 * render correctly rather than just diff correctly.
 *
 * Two classes used in the markup have NO rule in index.css at all, on the
 * live source either -- not an omission here:
 *   - icon-open (the mobile "Open menu" icon): styled purely via
 *     fill="currentColor" + inline style, same as the desktop chevron.
 *   - max-height-100 (on the dialog panel): the source itself ships this
 *     exact class with no matching rule; the panel's height is governed by
 *     `absolute inset + sm-bottom-auto + overflow-auto` alone. Inventing a
 *     `max-height:100%` rule here would be adding behaviour the source
 *     doesn't have, not porting it.
 *
 * Loaded after 20-utilities.css and 25-failsafe.css (build.mjs concatenates
 * src/styles/*.css in filename order) -- none of these selectors collide
 * with anything in those files (scripts/check-mobile-header.mjs's 142/142
 * confirms no other lane emits these classes), so load order doesn't matter
 * here, but the numbering keeps it grouped with the other hand-written
 * (non-port-css.mjs) files rather than between them.
 */

.overflow-auto {
  overflow: auto;
}

.mbn1 {
  margin-bottom: -1px;
  margin-bottom: calc(var(--space-1) * -1);
}

.p3 {
  padding: 1rem;
  padding: var(--space-3);
}

.pb4 {
  padding-bottom: 1.5rem;
  padding-bottom: var(--space-4);
}

.pb7 {
  padding-bottom: 4rem;
  padding-bottom: var(--space-7);
}

.mb7 {
  margin-bottom: 4rem;
  margin-bottom: var(--space-7);
}

.pr8 {
  padding-right: 5rem;
  padding-right: var(--space-8);
}

@media (min-width: 640px) {
  /* The source's tablet panel uses page colours and compact navigation;
     its full-screen green treatment applies only below the small breakpoint. */
  #header-dialog > .bg-page-background {
    background-color: var(--page-background) !important;
  }

  #header-dialog .page-text,
  #header-dialog strong,
  #header-dialog .icon-close {
    color: var(--page-text) !important;
  }

  #header-dialog .width-100.pr8 {
    position: static !important;
    top: auto !important;
  }

  #header-dialog a.type-style-1 {
    font: var(--type-style-5-weight) var(--type-style-5-size) / var(--type-style-5-line-height) var(--type-style-5-family) !important;
    letter-spacing: var(--type-style-5-letter-spacing) !important;
    text-transform: var(--type-style-5-text-transform) !important;
  }

  .sm-pr0 {
    padding-right: 0;
  }

  .sm-bottom-auto {
    bottom: auto;
  }
}

@media (min-width: 1024px) {
  .md-p4 {
    padding: 1.5rem;
    padding: var(--space-4);
  }

  .md-py8 {
    padding-top: 5rem;
    padding-top: var(--space-8);
  }

  .md-py8 {
    padding-bottom: 5rem;
    padding-bottom: var(--space-8);
  }

  .md-pb9 {
    padding-bottom: 6rem;
    padding-bottom: var(--space-9);
  }
}

.align-right {
  text-align: right;
}

.z5 {
  z-index: var(--z5);
}

.z6 {
  z-index: var(--z6);
}

.z5 {
  z-index: 5;
}

.z6 {
  z-index: 6;
}

.icon-close {
  height: 9px;
  width: 9px;
}

@media (min-width: 640px) {
  .icon-close {
    height: 11px;
    width: 11px;
  }
}

/* ---- src/styles/27-veil.css ---- */
/* Source index.css .veil__brand-image; the label supplies the clipping
 * rectangle through its existing .veil__brand positioned parent. */
.veil__brand-image {
  bottom: 0;
  height: 100%;
  left: 0;
  mix-blend-mode: screen;
  -o-object-fit: cover;
  object-fit: cover;
  -o-object-position: center;
  object-position: center;
  position: absolute;
  right: 0;
  top: 0;
  width: 100%;
}

/* ---- src/styles/28-footer-emails.css ---- */
/* Phone footer "Get in touch": click must paint the contact block.
 * mailto-in-DOM is not enough — [hidden] stays display:none until removed.
 */
[data-footer-emails-panel][hidden] {
  display: none !important;
}

[data-footer-emails-panel]:not([hidden]),
[data-footer-emails-panel].is-open {
  display: block !important;
}

/* One visible contact stack on phone: hide the unused md/sm copies
 * even if a later display utility fights the breakpoint. */
@media (max-width: 639px) {
  footer .sm-show {
    display: none !important;
  }
}

/* ---- src/styles/29-footer-type.css ---- */
/* Measured 16/09/2026 on https://www.upper.film/ (see
 * ai-sessions/.../UPPER-footer-type-upper.film-2026-09-16.md).
 * Locks Get in Touch / footer type-style-5 and CONNECT-banner EMAIL.
 * Listing .title-invert is not targeted.
 */

.module-social-media-banner .type-style-5,
footer,
footer .type-style-5,
footer .footer-p,
footer .footer-p p,
footer .footer-p a,
footer [data-footer-emails],
footer [data-footer-emails] span {
  font-family: SuisseIntl, sans-serif !important;
  font-weight: 400 !important;
  font-style: normal !important;
  text-transform: uppercase !important;
  font-feature-settings: normal !important;
  -webkit-text-stroke: 0 !important;
  mix-blend-mode: normal !important;
  color: #000 !important;
}

@media (max-width: 1023px) {
  .module-social-media-banner .type-style-5,
  footer,
  footer .type-style-5,
  footer .footer-p,
  footer .footer-p p,
  footer .footer-p a,
  footer [data-footer-emails],
  footer [data-footer-emails] span {
    font-size: 1rem !important;
    letter-spacing: .333rem !important;
    line-height: 1.8 !important;
  }
}

@media (min-width: 1024px) {
  .module-social-media-banner .type-style-5,
  footer,
  footer .type-style-5,
  footer .footer-p,
  footer .footer-p p,
  footer .footer-p a,
  footer [data-footer-emails],
  footer [data-footer-emails] span {
    font-size: 1.2rem !important;
    letter-spacing: .4rem !important;
    line-height: 1.66667 !important;
  }
}

footer {
  isolation: isolate;
}

footer,
footer * {
  mix-blend-mode: normal !important;
}

/* Source: one EMAIL word. Parent composites; the strong stays mix normal. */
.module-social-media-banner .blend-mode-difference {
  color: var(--page-background);
  mix-blend-mode: difference;
}

.module-social-media-banner .blend-mode-difference .type-style-1,
.module-social-media-banner .blend-mode-difference .type-style-1 a {
  font-family: SuisseIntl, sans-serif;
  font-weight: 300;
  font-style: normal;
  text-transform: uppercase;
  font-feature-settings: normal;
  -webkit-text-stroke: 0;
  mix-blend-mode: normal;
  color: inherit;
}

/* ---- src/styles/30-about.css ---- */
/* src/styles/30-about.css
 * About / Generic / 404 template module CSS (src/CONTRACT.md section 3).
 *
 * Checked every class src/templates/about.mjs, generic.mjs and notfound.mjs
 * emit against src/styles/20-utilities.css and
 * `node scripts/port-css.mjs --report`: .container-client-module,
 * .module-service-list, .client-list (+ its column-count breakpoints),
 * .media-hover, .scope-reveal / .scope-reveal__action,
 * .blend-mode-difference, .accessible-hide, .clearfix, .text-transition,
 * .rich-text / .rich-text--in-flow, .flex / .flex-col / .min-height-100vh
 * (404's extra flex-column wrapper, src/CONTRACT.md section 4), and every
 * spacing/grid utility (px5/md-px9/mt6/md-col-22-* /...) are all already
 * ported there.
 *
 * .module-image, .module-text and .container are module-wrapper classes
 * with no rule of their own in capture/fingerprint/index.css -- confirmed
 * on port-css.mjs's "used classes with NO ported rule" list, same as every
 * other module-* wrapper (CONTRACT.md section 3) -- their look comes
 * entirely from the utility classes on their children. Nothing to port for
 * this lane.
 */

/* ---- src/styles/30-home.css ---- */
/* src/styles/30-home.css
   Home template module rules. Checked against src/styles/20-utilities.css
   (generated by scripts/port-css.mjs from every class used in
   _rebuild/capture/html/*.html): every class src/templates/home.mjs emits
   (module-project-section, module-callout-section, module-featured-project,
   module-typewriter, expand-interaction, break-word, font-0,
   scale-loading-transition[-wait], text-transition, bg-page-background, the
   full col-* /sm-* /md-* grid + spacing set, etc.) already has its rule
   ported there, including the module-* wrapper classes themselves -- which
   verified against _rebuild/capture/fingerprint/index.css carry NO rule of
   their own (styling comes entirely from child utility classes, exactly as
   CONTRACT.md section 3 says to expect). Nothing left for this file to add. */

/* ---- src/styles/30-listing.css ---- */
/* src/styles/30-listing.css
   Category + Client template (src/templates/listing.mjs) module rules.

   Almost everything here is a plain utility class already ported into
   src/styles/20-utilities.css by scripts/port-css.mjs (it scanned
   _rebuild/capture/html/fashion.html and clients__nike.html -- the exact
   files this template's markup is derived from -- so the used-class set
   already includes everything the template emits: .sliding-list [no rule in
   the source -- pure JS/ARIA hook], .cursor-grab, .expand-interaction,
   .opacity-07, .project-slider__slide, .project-slider__heading[+--
   duplicate], .difference-effect, .scale-loading-transition, .top-120px,
   .lg-top-155px, .height-30vh, .accessible-hide, .mt14/.md-mt11, the
   push-left/col-22 grid utilities, etc). Confirmed via
   `node scripts/port-css.mjs --report`: the only "no rule" entries touching
   this template are the per-image `.project-slider__heading-<id>` selectors
   the template itself emits inline per slide (see listing.mjs's <style>
   block) and `.sliding-list`, both expected (CONTRACT.md §3: "most module
   classes... carry no rule of their own; styling comes from child utility
   classes").

   One real (non-ported) rule below: the slide's box size. The source ships
   the SSR <article> at `width:0px;padding-bottom:0px` and has client JS
   measure window.innerHeight/innerWidth post-hydration to set a real pixel
   box (see src/templates/listing.mjs's SLIDE_STYLE_BY_DISTANCE comment for
   the full derivation against _rebuild/capture/dom/fashion.{desktop,mobile}
   .html). Desktop there settles near height:51vh (459.6px measured at a
   900px-tall capture -- 459.6/900=0.51) with width driven off that by
   aspect-ratio; mobile settles near width:50vw (195.96px measured at 390px
   wide -- 195.96/390=0.502) with height driven off that. listing.mjs sets
   `aspect-ratio` per slide from the real listingImage dimensions (default
   4/5 for the rare null-image project); this rule supplies the one
   dimension CSS needs to derive the other from that ratio, entirely without
   JS -- so a slide's image is a real, correctly-shaped, visible box instead
   of the source's literal pre-measurement 0x0 stub. */
.project-slider__slide {
  height: 51vh;
}

@media (max-width: 1023px) {
  .project-slider__slide {
    height: auto;
    width: 50vw;
  }
}

/* ---- src/styles/30-project.css ---- */
/* src/styles/30-project.css
   Template lane "project" (src/templates/project.mjs) -- module classes not
   already covered by 20-utilities.css. Per CONTRACT.md S3 most module
   classes (module-image-gallery, module-editorial-relation-list, and every
   class the gallery/credits/related markup uses -- swiper-*, scope-reveal,
   media-hover, blend-mode-difference, text-transition, type-style-*, the
   grid/col utilities) already have a ported rule from index.css; confirmed
   via `node scripts/port-css.mjs --report` (module-image-gallery itself is
   listed under "used classes with NO ported rule" -- it's a mount point,
   not a styled element, matching CONTRACT.md's note).

   The one genuine gap: the source's gallery <img> carries an inline
   style="width:auto" (see _rebuild/capture/html/gucci-23.html, apc-fw-18,
   m-le-magazine-du-monde-feb-19 -- every gallery slide). scripts/lib/
   image.mjs's renderPicture() has no option to emit an inline style (and
   this run's rule is "reuse the shared image component and media rewrite
   for every image" -- not edit it), so the equivalent is ported here as a
   scoped rule instead of an inline style. Not a port from index.css (no
   selector there targets this combination) -- a template-owned equivalent
   of an inline style the shared component can't produce. */

.module-image-gallery .swiper-slide figure img {
  width: auto;
}

/* Source Swiper uses full-page clipping and a 60px gap below sm. The padded
   snap origin preserves content alignment as neighbours enter the page gutters. */
.module-image-gallery .gallery-track {
  --gallery-gutter: var(--space-5);
  column-gap: 60px;
  flex-shrink: 0;
  margin-left: calc(-1 * var(--gallery-gutter));
  scroll-padding-left: var(--gallery-gutter);
  width: calc(100% + 2 * var(--gallery-gutter));
}
@media (min-width: 640px) {
  .module-image-gallery .gallery-track {
    --gallery-gutter: var(--space-6);
    column-gap: 0;
  }
}
@media (min-width: 1024px) {
  .module-image-gallery .gallery-track {
    --gallery-gutter: var(--space-9);
  }
}
@media (min-width: 1480px) {
  .module-image-gallery .gallery-track {
    --gallery-gutter: var(--space-10);
  }
}

/* ---- src/styles/30-roster.css ---- */
/* src/styles/30-roster.css
 * Roster template module CSS (src/CONTRACT.md section 3).
 *
 * Checked every class the roster template emits against
 * src/styles/20-utilities.css and `node scripts/port-css.mjs --report`:
 * .field / .label / .input / .textarea / .button-reset / .button /
 * .accessible-hide / .text-transition / .line-height-1 / .mr-auto /
 * .ml-auto / .container / .md-flex / .flex-wrap / .items-baseline / .mt8 /
 * .lg-mt9 / .flex are all already ported there (element-level input/
 * textarea styling comes from src/styles/10-base.css's normalize block).
 * .input-reset, .min-height-150 and .resize-none are on port-css.mjs's
 * "used classes with NO ported rule" list -- they carry no rule anywhere in
 * capture/fingerprint/index.css (pure semantic hooks, same as the
 * module-* wrapper classes CONTRACT.md section 3 describes) -- nothing to
 * port for them.
 *
 * [data-roster-form-notice] needs no rule either: it starts `hidden` (the
 * native HTML attribute, not a class) and picks up type-style-5/mt6 from
 * 20-utilities.css once the JS lane clears `hidden` on submit -- see
 * src/CONTRACT.md section 5 "Roster form".
 */

/* ---- src/styles/40-motion.css ---- */
/* src/styles/40-motion.css
 * JS-lane CSS (src/CONTRACT.md section 3): state classes src/js/*.js add at
 * runtime that never appear in captured SSR output, so
 * scripts/port-css.mjs's used-class scan (which only reads
 * _rebuild/capture/html/*.html) never ports them into 10-base.css /
 * 20-utilities.css. Two kinds of rule live here:
 *
 *   1. Ported verbatim from _rebuild/capture/fingerprint/index.css --
 *      .blink / .button-blink and their @keyframes. Confirmed missing from
 *      Foundation's two files by grep before adding (they're not
 *      duplicated here): the elements they style are JS-created (the
 *      typewriter caret, src/js/10-typewriter.js) or JS-toggled (the
 *      roster "Sending..." submit state, src/js/00-core.js), never present
 *      in captured SSR markup at all.
 *   2. Our own additions for the vanilla image-gallery recode
 *      (src/js/20-gallery.js). The source's own CSS has no
 *      overflow-x/scroll-snap rules anywhere -- the real site gets that
 *      from Swiper's vendored runtime CSS, which this recode deliberately
 *      doesn't reinstall (BRIEF-BUILD.md rule 3, secscan-blocked). Scoped
 *      under .module-image-gallery so it can't affect an unrelated element
 *      that happens to reuse .swiper-slide's class name.
 */

/* ---- 1. Ported verbatim from index.css ---- */

.blink {
  animation: blink 0.4s 0.4s infinite;
}

.button-blink {
  animation: button-blink 0.3s 0.3s infinite;
}

@keyframes blink {
  0% {
    color: #000;
    color: var(--black);
  }
  50% {
    color: transparent;
  }
  to {
    color: #000;
    color: var(--black);
  }
}

@keyframes button-blink {
  0% {
    opacity: 1;
  }
  50% {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

/* Source parity: upper.film ignores prefers-reduced-motion. These overrides apply only when
   window.RF_RESPECT_REDUCED_MOTION is true and the OS asks for less motion (00-core.js then
   adds html.rf-reduce-motion). */
html.rf-reduce-motion .blink,
html.rf-reduce-motion .button-blink {
  animation: none;
}

/* ---- 2. Gallery scroll-snap plumbing (our own addition, not a port) ---- */

.module-image-gallery .gallery-track {
  touch-action: pan-y;
  -webkit-overflow-scrolling: touch;
  -ms-overflow-style: none;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
}

.module-image-gallery .gallery-track::-webkit-scrollbar {
  display: none;
  height: 0;
}

.module-image-gallery .swiper-slide {
  scroll-snap-align: start;
}

html.rf-reduce-motion .module-image-gallery .gallery-track {
  scroll-behavior: auto;
}

/* ---- src/styles/41-listing-slider.css ---- */
/* src/styles/41-listing-slider.css
   JS-runtime-only rule for src/js/25-listing-slider.js (Category/Client
   "sliding-list" carousel -- see src/CONTRACT.md "Out of scope: /fashion
   project-slider").

   Same category as src/CONTRACT.md section 3's `.blink`/`.button-blink`
   note for 40-motion.css: a class JS toggles at runtime that never appears
   in static SSR, so scripts/port-css.mjs's used-class scan (which only sees
   _rebuild/capture/html/*.html) never ports it into 20-utilities.css even
   though it exists verbatim in _rebuild/capture/fingerprint/index.css
   (found next to `.cursor-grab{cursor:grab}`, already ported since the SSR
   markup ships that class at rest). Ported unminified, byte-identical to
   the source rule. Toggled by 25-listing-slider.js on the drag-track div
   while a pointer/touch drag is active (mirrors the source's
   `s.isGrabbing ? "cursor-grabbing" : "cursor-grab"` class swap, found in
   _rebuild/capture/fingerprint/index.js's CategorySlidingList component). */
.cursor-grabbing {
  cursor: grabbing;
}
