/* VALLSTEIN CORPORATE WEBSITE
   ONE STYLESHEET FOR THE WHOLE SITE. NO BOOTSTRAP, NO DEVEXTREME.
   THE PALETTE IS THE ORIGINAL ONE. THE STRUCTURE IS BUILT WITH LIGHT AND SPACE
   INSTEAD OF RULES AND BOXES: NO GRID LINES, NO CELL DIVIDERS, NO OUTLINED CARDS. */

/* THE BRAND FACE. THREE COMPETING src LINES USED TO CANCEL EACH OTHER OUT, AND THE
   .eot FALLBACK ONLY EVER MATTERED FOR INTERNET EXPLORER. ONE DECLARATION IS ENOUGH.
   TO RUN THE WHOLE SITE ON IT, POINT --font AT --font-brand BELOW */
@font-face {
    font-family: 'RotisSansSerif';
    src: local('Rotis Semi Sans Std'),
         url('/fonts/Rotis SemiSans 55.otf') format('opentype'),
         url('/fonts/Rotis SemiSans 55.ttf') format('truetype');

    /* THE FILE CARRIES ONE WEIGHT ONLY, 500 BY ITS OWN OS/2 TABLE. DECLARING THE RANGE
       LETS THE BROWSER USE IT FOR EVERY WEIGHT THE DESIGN ASKS FOR AND SYNTHESISE THE
       BOLDER STEPS, INSTEAD OF FALLING BACK TO SEGOE UI ON EVERY HEADING */
    font-weight: 400 700;
    font-display: swap;
}

:root {
    --orange: #F47F24;

    /* THE SAME ORANGE, ONE STEP LIGHTER, FOR ORANGE USED AS TEXT. THE BRAND COLOUR IS
       6.8:1 ON THE NIGHT BACKGROUND, WHICH IS THIN FOR A 12px UPPERCASE LABEL. THIS TINT
       IS 8.5:1 AT THE SAME HUE AND SATURATION, SO IT READS AS THE SAME ORANGE.
       SURFACES, RULES, DOTS AND THE BUTTON GRADIENT KEEP --orange UNTOUCHED */
    --orange-text: #FF9A4D;
    --blue: #54ABCE;

    --night: #15171B;
    --night-2: #1A1D22;
    --raise: rgba(255,255,255,.045);
    --raise-2: rgba(255,255,255,.075);
    --edge: rgba(255,255,255,.07);
    --edge-2: rgba(255,255,255,.13);

    /* THE SECONDARY GREY. IT WAS #9C9894, 6.3:1 ON THE NIGHT BACKGROUND: INSIDE THE
       STANDARD, BUT READ AS TOO DARK. AT #D2CECA IT IS 11.5:1 AND STILL A STEP BELOW
       --text AT 15.2:1, WHICH IS WHAT KEEPS THE TWO LEVELS OF READING APART */
    --mute: #D2CECA;
    --text: #EEECE9;

    --max: 1240px;
    --pad: clamp(22px, 4vw, 44px);
    --r: 20px;
    --r-sm: 14px;
    --r-btn: 11px;
    --shadow: 0 40px 80px -52px rgba(0,0,0,.95);
    /* THE BRAND FACE RUNS THE WHOLE SITE, AS IT DID BEFORE THE REDESIGN.
       --font-system IS THE FALLBACK STACK, KEPT SO THE SWITCH IS ONE LINE EITHER WAY */
    --font-brand: "RotisSansSerif", "Segoe UI", Arial, sans-serif;
    --font-system: "Segoe UI", Inter, -apple-system, Arial, sans-serif;
    --font: var(--font-brand);
    --nav-h: 78px;
    --ease: cubic-bezier(.22,.61,.36,1);
}

* { box-sizing: border-box; }

html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }

body {
    margin: 0;
    background: var(--night);
    color: var(--text);
    font-family: var(--font);
    font-size: 17px;
    line-height: 1.62;
    -webkit-font-smoothing: antialiased;
    position: relative;

    /* clip, NOT hidden: overflow-x: hidden turns the body into a scroll container and
       that is the other classic way of killing position: sticky on the header */
    overflow-x: clip;
}

/* ---------- ATMOSPHERE: SLOW DRIFTING LIGHT, PLUS A FILM OF GRAIN ---------- */

.sky { position: fixed; inset: 0; z-index: 0; pointer-events: none; overflow: hidden; }

.sky i {
    position: absolute; display: block; border-radius: 50%;
    filter: blur(90px); opacity: .55; will-change: transform;
}

.sky i:nth-child(1) {
    width: 62vw; height: 62vw; left: -14vw; top: -22vw;
    background: radial-gradient(circle, rgba(244,127,36,.30), transparent 65%);
    animation: drift-a 34s var(--ease) infinite alternate;
}

.sky i:nth-child(2) {
    width: 54vw; height: 54vw; right: -16vw; top: -8vw;
    background: radial-gradient(circle, rgba(84,171,206,.24), transparent 66%);
    animation: drift-b 42s var(--ease) infinite alternate;
}

.sky i:nth-child(3) {
    width: 70vw; height: 70vw; left: 24vw; bottom: -46vw;
    background: radial-gradient(circle, rgba(84,171,206,.14), transparent 68%);
    animation: drift-c 50s var(--ease) infinite alternate;
}

.sky::after {
    content: ""; position: absolute; inset: 0; opacity: .05; mix-blend-mode: overlay;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

@keyframes drift-a { from { transform: translate3d(0,0,0) scale(1); } to { transform: translate3d(7vw,5vw,0) scale(1.16); } }
@keyframes drift-b { from { transform: translate3d(0,0,0) scale(1.06); } to { transform: translate3d(-6vw,8vw,0) scale(1); } }
@keyframes drift-c { from { transform: translate3d(0,0,0) scale(1); } to { transform: translate3d(-9vw,-6vw,0) scale(1.2); } }

/* THE CONTENT SITS ABOVE THE DRIFTING LIGHT. THE HEADER IS LEFT OUT ON PURPOSE:
   body > .top BEATS .top ON SPECIFICITY AND WOULD OVERRIDE ITS position: sticky */
body > main, body > .bottom { position: relative; z-index: 1; }

img { max-width: 100%; height: auto; }

.wrap { max-width: var(--max); margin: 0 auto; padding: 0 var(--pad); }

/* ---------- NAV ---------- */

/* A NAVIGATION BAR IS NOT A DOCUMENT: CLICKING OR DRAGGING ON IT SHOULD NOT PLACE A
   TEXT CARET NOR SELECT THE LABELS. THE CONTENT OF THE PAGE STAYS SELECTABLE */
.top {
    position: sticky; top: 0; z-index: 60;
    user-select: none; -webkit-user-select: none;
    cursor: default;
    transition: background .3s, backdrop-filter .3s, box-shadow .3s;
}

.top a, .top button { cursor: pointer; }

.top.scrolled {
    background: rgba(21,23,27,.72);
    backdrop-filter: blur(16px) saturate(150%);
    box-shadow: 0 1px 0 var(--edge), 0 18px 40px -34px rgba(0,0,0,.9);
}

.nav { display: flex; align-items: center; height: var(--nav-h); gap: 44px; transition: height .3s var(--ease); }
.top.scrolled .nav { height: 66px; }

/* THE LOGO IS DRAWN FOR A DARK BACKGROUND ALREADY: WHITE WORDMARK, COLOURED BALL.
   NEVER FILTER IT TO WHITE, THAT IS WHAT KILLS THE BALL */
.nav .logo { height: 44px; display: block; transition: transform .3s var(--ease), height .3s var(--ease); }
.top.scrolled .nav .logo { height: 36px; }
.nav a:hover .logo { transform: scale(1.04); }

/* THE <nav> IS THE FLEX CHILD NOW, SO IT IS THE ONE THAT HAS TO PUSH TO THE RIGHT.
   LEAVING margin-left: auto ON THE LIST INSIDE IT DID NOTHING AND THE MENU ENDED UP
   GLUED TO THE LOGO */
.menu-wrap { margin-left: auto; }
.menu { display: flex; gap: 34px; list-style: none; margin: 0; padding: 0; align-items: center; }
.menu > li { position: relative; }

.menu a, .menu .label {
    color: var(--mute); text-decoration: none; font-size: 14px; font-weight: 500;
    letter-spacing: .01em; padding: 8px 0; display: inline-block;
    background: none; border: none; font-family: inherit; cursor: pointer; transition: color .2s;
}

.menu a:hover, .menu .label:hover, .menu a.on, .menu .on { color: var(--text); }

.menu > li > a.on::after, .menu > li > .label.on::after {
    content: ""; position: absolute; left: 0; bottom: 2px; width: 100%; height: 2px;
    border-radius: 2px; background: var(--orange);
}

/* DROPDOWN: A FLOATING SURFACE, NOT A BORDERED BOX */

.drop > .panel-list {
    position: absolute; top: 100%; left: -20px; min-width: 244px;
    background: rgba(26,29,34,.96); backdrop-filter: blur(18px);
    border-radius: var(--r-sm); box-shadow: var(--shadow), 0 0 0 1px var(--edge);
    padding: 10px; margin: 12px 0 0; list-style: none;
    opacity: 0; visibility: hidden; transform: translateY(-8px) scale(.98); transform-origin: top left;
    transition: opacity .2s var(--ease), transform .2s var(--ease), visibility .2s;
}

.drop:hover > .panel-list, .drop:focus-within > .panel-list { opacity: 1; visibility: visible; transform: none; }
.panel-list a { display: block; padding: 11px 14px; border-radius: 9px; width: 100%; font-size: 14.5px; }
.panel-list a:hover { background: var(--raise); color: var(--text); }

/* THE LANGUAGE IS A PREFERENCE, NOT AN ACTION: IT READS LIKE THE OTHER MENU ITEMS AND
   CARRIES NO BOX, SO THE ONLY BUTTON IN THE HEADER IS THE ONE THAT ASKS FOR SOMETHING.
   SPACE, NOT A RULE, SEPARATES IT FROM THE PAGES.
   NOT .lang: THAT CLASS IS THE EN/DE/NL BADGE ON THE PRESS ROWS, AND THE MENU ITEM WAS
   INHERITING ITS BORDER */
.lang-pick { margin-left: 10px; }

.lang-pick > .label {
    display: inline-flex; align-items: center; gap: 7px;
    font-size: 13.5px; font-weight: 600; letter-spacing: .08em; color: var(--mute);
}

.lang-pick > .label::after {
    content: ""; width: 6px; height: 6px; margin-top: -3px;
    border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor;
    transform: rotate(45deg); transition: transform .22s var(--ease);
}

.lang-pick > .label:hover { color: var(--text); }
.lang-pick:hover > .label::after, .lang-pick:focus-within > .label::after { transform: rotate(-135deg); margin-top: 2px; }

.lang-pick > .panel-list { left: auto; right: -10px; min-width: 190px; transform-origin: top right; }
.lang-pick .panel-list b { display: inline-block; width: 32px; color: var(--mute); font-weight: 700; letter-spacing: .08em; }
.lang-pick .panel-list a.on, .lang-pick .panel-list a.on b { color: var(--orange-text); }

/* ---------- BUTTONS ---------- */

.btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 10px;
    border: 1px solid var(--edge-2); background: var(--raise); color: var(--text);
    padding: 13px 24px; border-radius: var(--r-btn); font-size: 14.5px; font-family: inherit; font-weight: 500;
    text-decoration: none; cursor: pointer; text-align: center; position: relative; overflow: hidden;
    transition: transform .22s var(--ease), background .22s, border-color .22s, box-shadow .22s, color .22s;
}

/* A LIGHT SWEEPS ACROSS THE BUTTON ON HOVER */
.btn::after {
    content: ""; position: absolute; top: 0; bottom: 0; left: -60%; width: 40%;
    background: linear-gradient(100deg, transparent, rgba(255,255,255,.22), transparent);
    transform: skewX(-18deg); opacity: 0; pointer-events: none;
}

.btn:hover::after { animation: sweep .7s var(--ease); }

@keyframes sweep {
    from { left: -60%; opacity: 1; }
    to { left: 120%; opacity: 0; }
}

.btn:hover { background: var(--raise-2); border-color: var(--edge-2); transform: translateY(-2px); }
.btn:active { transform: translateY(0) scale(.985); }

.btn-solid {
    background: linear-gradient(180deg, #FF9040, var(--orange));
    border-color: transparent; color: #17140F; font-weight: 600;
    box-shadow: 0 14px 30px -16px rgba(244,127,36,.85);
}

.btn-solid:hover {
    background: linear-gradient(180deg, #FFA45E, #F98B31);
    box-shadow: 0 20px 40px -16px rgba(244,127,36,.95);
    color: #17140F;
}

/* A BUTTON IN THE HEADER IS STILL AN <a> IN .nav, SO IT HAS TO OPT OUT OF THE MENU RULES */
.nav a.btn { color: var(--text); padding: 11px 22px; }
.nav a.btn.btn-solid { color: #17140F; }

/* ---------- HERO ---------- */

.hero { position: relative; padding: clamp(72px, 12vw, 150px) 0 clamp(60px, 9vw, 116px); }
.hero .wrap { position: relative; z-index: 2; }

.eyebrow {
    display: inline-flex; align-items: center; gap: 11px; margin-bottom: 32px;
    background: var(--raise); border: 1px solid var(--edge); border-radius: 100px;
    padding: 8px 18px 8px 13px; font-size: 13.5px; color: var(--mute); letter-spacing: .02em;
}

.dot { width: 7px; height: 7px; border-radius: 50%; background: var(--orange); box-shadow: 0 0 0 4px rgba(244,127,36,.18); }
.dot.beat { animation: beat 3.4s ease-in-out infinite; }

@keyframes beat {
    0%, 100% { box-shadow: 0 0 0 4px rgba(244,127,36,.18); }
    50% { box-shadow: 0 0 0 9px rgba(244,127,36,.03); }
}

h1 {
    margin: 0 0 28px; max-width: 14em;
    font-size: clamp(40px, 6vw, 92px); line-height: .98; letter-spacing: -.038em; font-weight: 600;
}

/* FLAT SECOND LINE ON PURPOSE: THE HEADLINE IS SPLIT INTO LETTERS FOR THE ENTRANCE,
   AND A CLIPPED GRADIENT CANNOT SURVIVE BEING CUT INTO ONE BOX PER CHARACTER.
   IT WAS #ADA8A0, 7.6:1, THE DIMMEST THING ON THE PAGE AT THE LARGEST SIZE. AT
   #C9C4BD IT IS 10.4:1 AND STILL READS AS THE SECOND TONE UNDER THE WHITE */
h1 span { color: #C9C4BD; }

.lead { font-size: clamp(17px, 2vw, 21px); color: var(--mute); max-width: 32em; margin: 0 0 42px; }
.hero-actions { display: flex; gap: 14px; flex-wrap: wrap; }

/* ---------- PAGE HEADER ---------- */

.page-head { position: relative; padding: clamp(56px, 8vw, 104px) 0 clamp(30px, 4vw, 46px); }
.page-head .wrap { position: relative; z-index: 2; }
.page-head h1 { font-size: clamp(36px, 5vw, 68px); margin-bottom: 20px; max-width: 17em; }
.page-head .lead { margin-bottom: 0; }

/* ---------- SECTIONS ---------- */

.block { padding: clamp(56px, 8vw, 104px) 0; position: relative; }
.block-tight { padding: clamp(40px, 5vw, 68px) 0; }

/* TONE CHANGE INSTEAD OF A BORDER */
.block-alt::before {
    content: ""; position: absolute; inset: 0; z-index: -1;
    background: linear-gradient(180deg, transparent, rgba(255,255,255,.028) 12%, rgba(255,255,255,.028) 88%, transparent);
}

.tagline {
    display: inline-flex; align-items: center; gap: 11px;
    color: var(--orange-text); font-size: 12.5px; letter-spacing: .2em;
    text-transform: uppercase; font-weight: 700; margin-bottom: 20px;
}

.tagline::before { content: ""; width: 22px; height: 2px; border-radius: 2px; background: currentColor; }
.center .tagline::before { display: none; }

h2 { margin: 0 0 20px; font-size: clamp(28px, 3.6vw, 50px); line-height: 1.08; letter-spacing: -.03em; font-weight: 600; }
h3 { font-size: clamp(20px, 2.2vw, 26px); font-weight: 600; letter-spacing: -.018em; }
.sub { margin: 0; color: var(--mute); font-size: clamp(16px, 1.8vw, 19px); }
.head { max-width: 42em; margin-bottom: clamp(34px, 4.5vw, 54px); }
.center { margin-left: auto; margin-right: auto; text-align: center; }

/* ---------- SURFACES ---------- */

/* ONE CHIP, USED EVERYWHERE. THE RAISED LOOK IS THE RESTING STATE: NOBODY SHOULD HAVE
   TO FIND IT WITH THE POINTER. HOVER ONLY ADDS MOVEMENT ON TOP */
.surface, .card, .aside, .diagram, .address, .person, .award, .next-card {
    background: linear-gradient(168deg, rgba(255,255,255,.055), rgba(255,255,255,.018) 58%, rgba(255,255,255,.012));
    border-radius: var(--r);
    box-shadow: var(--shadow), inset 0 1px 0 rgba(255,255,255,.09);
}

.card:hover, .address:hover, .person:hover, .award:hover, .next-card:hover {
    box-shadow: 0 46px 90px -50px rgba(0,0,0,.98), inset 0 1px 0 rgba(255,255,255,.12);
}

/* ---------- AWARDS ---------- */

.awards { padding: clamp(30px, 4vw, 44px) 0 clamp(44px, 6vw, 64px); }

.awards-head {
    display: flex; align-items: baseline; gap: 16px; flex-wrap: wrap; margin-bottom: 26px;
    font-size: 12.5px; letter-spacing: .2em; text-transform: uppercase; color: var(--mute);
}

.awards-head b { color: var(--orange-text); font-weight: 700; }
.awards-head .more { margin-left: auto; letter-spacing: .01em; text-transform: none; font-size: 14.5px; }
.awards-head a { color: var(--mute); text-decoration: none; transition: color .2s; }
.awards-head a:hover { color: var(--orange-text); }

.awards-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; }

/* THE RAISED LOOK IS THE RESTING STATE, NOT SOMETHING THE POINTER HAS TO FIND.
   HOVER ONLY ADDS THE MOVEMENT ON TOP OF IT */
/* THE CARD IS A BUTTON: IT OPENS THE AWARD AT READING SIZE */
.award {
    padding: 28px 26px 30px; display: flex; gap: 18px; align-items: flex-start;
    width: 100%; text-align: left; font: inherit; color: inherit; border: none; cursor: pointer;
    transition: transform .3s var(--ease), box-shadow .3s var(--ease), background .3s;
}

.award > span { display: block; }
.award .award-title { display: block; font-size: 16.5px; font-weight: 600; line-height: 1.25; letter-spacing: -.012em; margin-bottom: 7px; }
.award .award-text { display: block; font-size: 13.5px; color: var(--mute); line-height: 1.5; }

.award:hover {
    transform: translateY(-4px);
    background: linear-gradient(168deg, rgba(255,255,255,.085), rgba(255,255,255,.03) 58%, rgba(255,255,255,.02));
}

.award img {
    width: 60px; height: 60px; object-fit: contain; border-radius: 50%; flex: none;
    background: #FFFFFF; padding: 3px; transition: transform .35s var(--ease);
}

.award:hover img { transform: scale(1.07) rotate(-3deg); }
.award img.sq { border-radius: 12px; }
.award b { display: block; font-size: 12px; letter-spacing: .18em; color: var(--orange-text); margin-bottom: 8px; }

/* ---------- THE AWARD, AT READING SIZE ---------- */

.award-modal {
    width: min(560px, calc(100vw - 40px)); max-height: calc(100vh - 60px);
    padding: clamp(32px, 4vw, 52px); border: none; border-radius: var(--r);
    background: linear-gradient(168deg, #23262C, #191B20 62%);
    box-shadow: 0 60px 120px -50px rgba(0,0,0,1), inset 0 1px 0 rgba(255,255,255,.1);
    color: var(--text); text-align: center; position: relative; overflow: auto;
}

.award-modal::backdrop { background: rgba(10,11,13,.74); backdrop-filter: blur(6px); }
.award-modal[open] { animation: modalIn .32s var(--ease) both; }

@keyframes modalIn {
    from { opacity: 0; transform: translateY(16px) scale(.97); }
    to { opacity: 1; transform: none; }
}

.award-modal img {
    width: 132px; height: 132px; object-fit: contain; border-radius: 50%;
    background: #FFFFFF; padding: 6px; margin: 0 auto 26px;
    box-shadow: 0 0 0 1px rgba(255,255,255,.12), 0 0 0 10px rgba(244,127,36,.10);
}

.award-modal img.sq { border-radius: 18px; }
.award-modal b { display: block; font-size: 12px; letter-spacing: .2em; text-transform: uppercase; color: var(--orange-text); margin-bottom: 14px; }
.award-modal h2 { margin: 0 0 18px; font-size: clamp(21px, 2.8vw, 30px); letter-spacing: -.02em; }
.award-modal p { margin: 0 auto; max-width: 32em; font-size: clamp(16px, 1.9vw, 19px); line-height: 1.55; color: var(--text); }

.award-close {
    position: absolute; top: 14px; right: 16px; width: 42px; height: 42px;
    background: transparent; border: none; border-radius: 50%; cursor: pointer;
    color: var(--mute); font-size: 30px; line-height: 1; font-family: inherit;
    transition: background .2s, color .2s;
}

.award-close:hover { background: var(--raise); color: var(--text); }

/* ---------- CARDS ---------- */

.cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }

.card {
    padding: 38px 34px 34px; display: flex; flex-direction: column; position: relative; overflow: hidden;
    transition: transform .3s var(--ease), box-shadow .3s var(--ease);
}

/* A SOFT GLOW FOLLOWS THE CARD UP, INSTEAD OF A HARD RULE ON TOP */
.card::after {
    content: ""; position: absolute; left: 50%; top: -60%; width: 120%; height: 120%;
    transform: translateX(-50%); pointer-events: none; opacity: 0; transition: opacity .35s;
    background: radial-gradient(closest-side, rgba(244,127,36,.16), transparent 70%);
}

.card:hover { transform: translateY(-6px); }
.card:hover::after { opacity: 1; }
.card h3, .card h2 { margin: 0 0 14px; position: relative; font-size: clamp(20px, 2.2vw, 26px); font-weight: 600; letter-spacing: -.018em; }
.card h3 sup, .card h2 sup { font-size: 11px; color: var(--mute); }
.card p { margin: 0 0 28px; color: var(--mute); font-size: 15.5px; position: relative; }
.card .go { margin-top: auto; color: var(--text); text-decoration: none; font-size: 14px; font-weight: 600; position: relative; }
.card .go em { font-style: normal; color: var(--orange-text); display: inline-block; transition: transform .25s var(--ease); }
.card:hover .go em { transform: translateX(6px); }

/* ---------- PROSE ---------- */

.prose { max-width: 44em; }
.prose > * { margin: 0 0 24px; }
.prose p, .prose h5 { font-size: clamp(16px, 1.8vw, 18.5px); font-weight: 400; color: var(--text); line-height: 1.7; }
.prose h4 { font-size: clamp(19px, 2vw, 24px); font-weight: 600; letter-spacing: -.018em; margin-top: 44px; }
.prose h6 { font-size: 16px; font-weight: 400; color: var(--mute); line-height: 1.65; }
.prose h6 .bold, .prose h6 span.bold { display: block; color: var(--text); font-weight: 600; font-size: 17px; margin-bottom: 5px; }
.prose a { color: var(--blue); text-decoration: none; border-bottom: 1px solid rgba(84,171,206,.35); }
.prose a:hover { color: var(--orange-text); border-bottom-color: var(--orange-text); }
.prose ul { padding-left: 20px; color: var(--mute); }
.prose > :last-child { margin-bottom: 0; }

/* FIRST PARAGRAPH LEADS THE PAGE */
.prose > h5:first-child, .prose > p:first-child { font-size: clamp(18px, 2.1vw, 22px); line-height: 1.5; letter-spacing: -.012em; }

.split { display: grid; grid-template-columns: 1.2fr .8fr; gap: clamp(36px, 5vw, 76px); align-items: start; }
.split .prose { max-width: none; }

.aside { padding: 30px 28px; position: sticky; top: calc(var(--nav-h) + 22px); }
.aside h4 { margin: 0 0 18px; font-size: 12px; letter-spacing: .18em; text-transform: uppercase; color: var(--mute); }
.aside ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; }
.aside a { color: var(--text); text-decoration: none; font-size: 15.5px; display: flex; gap: 12px; padding: 9px 10px; border-radius: 10px; transition: background .2s, color .2s; }
.aside a em { font-style: normal; color: var(--orange-text); transition: transform .25s var(--ease); }
.aside a:hover { background: var(--raise); }
.aside a:hover em { transform: translateX(4px); }

/* ---------- THE BRM WHEEL ---------- */

/* SAME RESTING ELEVATION AS THE AWARDS. NO HOVER STATE: THE DIAGRAM IS NOT A CONTROL */
.diagram {
    padding: clamp(20px, 3vw, 44px); position: relative; overflow: hidden;
    box-shadow: var(--shadow), inset 0 1px 0 rgba(255,255,255,.09);
}

.diagram::before {
    content: ""; position: absolute; left: 50%; top: 46%; width: 74%; aspect-ratio: 1; transform: translate(-50%,-50%);
    background: radial-gradient(closest-side, rgba(244,127,36,.16), transparent 72%);
    filter: blur(30px); pointer-events: none;
}

.diagram img { display: block; width: 100%; height: auto; position: relative; }

/* THE SOLUTION WORDMARKS WERE DRAWN FOR WHITE PAPER AND CARRY THREE INKS:
   #000000 FOR THE LOCKUP, #383838 FOR THE MAIN WORD AND #54ABCE FOR THE BRAND BLUE.
   THE FIRST TWO HAVE TO BE LIFTED OR THE MAIN WORD ALL BUT DISAPPEARS ON THE DARK PAGE.
   THE TWO TONE HIERARCHY IS KEPT: THE NAME IS THE BRIGHTEST THING IN THE LOCKUP */
.wordmark svg { height: clamp(66px, 9.5vw, 112px); width: auto; max-width: 100%; }

/* BASE: EVERY DARK INK BECOMES THE SUPPORTING TONE */
.wordmark svg path[fill="#000000"],
.wordmark svg path[fill="#383838"] { fill: #BFBBB4; stroke: #BFBBB4; }

/* THE BRAND BLUE STAYS BLUE */
.wordmark svg path[fill="#54ABCE"] { fill: var(--blue); stroke: var(--blue); }

/* THE PRODUCT NAME IS THE BRIGHTEST THING IN THE LOCKUP. WHICH PATH HOLDS THE NAME
   CHANGES PER PRODUCT, AND SO DOES ITS ORIGINAL INK, SO THIS GOES BY IDENTIFIER:
   ON INTEREST MARGIN THE NAME IS #000000 WHILE THE WalletSizing LOCKUP IS #383838,
   WHICH IS EXACTLY THE INVERSE OF THE OTHER TWO PAGES */
.theme-wallet .wordmark svg path[id="WalletSizing"],
.theme-wallet .wordmark svg path[id="Enterprise"],
.theme-fee .wordmark svg path[id="Bank Fee"],
.theme-margin .wordmark svg path[id="INTEREST MARGIN"] { fill: #FFFFFF; stroke: #FFFFFF; }

/* ============ THE THREE SOLUTIONS, EACH WITH ITS OWN AIR ============ */

/* WALLETSIZING CARRIES A BLUE CIRCLE IN ITS WORDMARK, SO THE PAGE LEANS BLUE.
   BANK FEE LEANS ORANGE. INTEREST MARGIN SITS BETWEEN THE TWO */
.theme-wallet .sky i:nth-child(1) { background: radial-gradient(circle, rgba(84,171,206,.26), transparent 66%); }
.theme-wallet .sky i:nth-child(2) { background: radial-gradient(circle, rgba(244,127,36,.16), transparent 66%); }

.theme-fee .sky i:nth-child(1) { background: radial-gradient(circle, rgba(244,127,36,.30), transparent 64%); left: auto; right: -18vw; }
.theme-fee .sky i:nth-child(2) { background: radial-gradient(circle, rgba(84,171,206,.16), transparent 66%); right: auto; left: -12vw; top: 6vw; }

.theme-margin .sky i:nth-child(1) { width: 78vw; height: 78vw; left: 11vw; top: -34vw; background: radial-gradient(circle, rgba(244,127,36,.22), transparent 62%); }
.theme-margin .sky i:nth-child(2) { background: radial-gradient(circle, rgba(84,171,206,.22), transparent 66%); }

.solution-head { padding-bottom: clamp(20px, 3vw, 32px); }

/* WALLETSIZING: THE ARGUMENT UNFOLDS IN NUMBERED MOVEMENTS */

.steps { display: grid; gap: clamp(34px, 5vw, 58px); max-width: 62em; }

.step { display: grid; grid-template-columns: minmax(96px, 132px) 1fr; gap: clamp(20px, 3vw, 44px); align-items: start; }
.step:nth-child(even) { margin-left: auto; }

/* THE NUMBERS ARE DRAWN AS OUTLINES. THE FIRST STROKE WAS SO FAINT THAT THEY READ AS
   MISSING RATHER THAN QUIET, SO THE RESTING STATE IS FIRMER AND POINTING AT A STEP
   FILLS IT IN. THE RESTING STATE HAS TO CARRY THE PAGE ON ITS OWN: A PHONE HAS NO HOVER */

.step b {
    font-size: clamp(52px, 8vw, 104px); line-height: .8; font-weight: 600; letter-spacing: -.05em;
    color: transparent; -webkit-text-stroke: 1px rgba(255,255,255,.55);
    transition: color .35s var(--ease), -webkit-text-stroke-color .35s var(--ease);
}

.step:nth-child(odd) b { -webkit-text-stroke-color: rgba(244,127,36,.85); }

.step:hover b { color: rgba(255,255,255,.12); -webkit-text-stroke-color: #FFFFFF; }
.step:nth-child(odd):hover b { color: rgba(244,127,36,.20); -webkit-text-stroke-color: var(--orange); }

/* EVERY STEP CARRIES THE SAME WEIGHT OF ARGUMENT, SO EVERY STEP READS THE SAME.
   THE RHYTHM COMES FROM THE OFFSET ABOVE, NOT FROM DIMMING HALF THE TEXT */
.step p { margin: 0; font-size: clamp(16px, 1.9vw, 19px); line-height: 1.68; color: var(--text); }

/* BANK FEE: THE PROMISE STANDS ON THE LEFT WHILE THE CASE SCROLLS ON THE RIGHT */

.claim-grid { display: grid; grid-template-columns: .95fr 1.05fr; gap: clamp(36px, 6vw, 84px); align-items: start; }

.claim {
    margin: 0; position: sticky; top: calc(var(--nav-h) + 40px);
    font-size: clamp(24px, 3.2vw, 40px); line-height: 1.2; letter-spacing: -.03em; font-weight: 600;
}

.claim::before { content: ""; display: block; width: 46px; height: 3px; border-radius: 3px; background: var(--orange); margin-bottom: 26px; }
.claim-body p { margin: 0 0 26px; font-size: clamp(16px, 1.8vw, 18px); line-height: 1.7; color: var(--mute); }
.claim-body p:first-child { color: var(--text); }
.claim-body p:last-child { margin-bottom: 0; }

/* A CENTRED COMPOSITION, USED WHERE A PAGE IS ONE STATEMENT */

.solo { text-align: center; padding: clamp(72px, 13vw, 172px) 0 clamp(48px, 7vw, 92px); }
.solo .wrap { max-width: 54em; }
.solo .tagline { margin-bottom: 30px; }
.statement { font-size: clamp(22px, 3.4vw, 40px); line-height: 1.28; letter-spacing: -.03em; margin: 0 auto 46px; max-width: 20em; }

/* INTEREST MARGIN: THE ONE SOLUTION THAT LIVES ON ANOTHER SITE, SO THE PAGE IS A DOOR */

.launch {
    display: grid; grid-template-columns: 1.15fr .85fr; align-items: center;
    gap: clamp(28px, 4vw, 60px); padding: clamp(32px, 4.5vw, 60px);
    border-radius: var(--r); position: relative; overflow: hidden;
    background: linear-gradient(168deg, rgba(255,255,255,.06), rgba(255,255,255,.018) 58%, rgba(255,255,255,.012));
    box-shadow: var(--shadow), inset 0 1px 0 rgba(255,255,255,.09);
}

.launch::before {
    content: ""; position: absolute; right: -10%; top: -60%; width: 60%; aspect-ratio: 1;
    background: radial-gradient(closest-side, rgba(244,127,36,.20), transparent 70%);
    filter: blur(20px); pointer-events: none;
}

.launch-text {
    margin: 0; position: relative;
    font-size: clamp(19px, 2.5vw, 30px); line-height: 1.34; letter-spacing: -.024em;
}

.launch-door {
    position: relative; display: block; text-decoration: none; color: inherit;
    padding: 26px 28px; border-radius: var(--r-sm);
    background: rgba(255,255,255,.05); border: 1px solid var(--edge);
    transition: transform .28s var(--ease), background .28s, border-color .28s;
}

.launch-door:hover { transform: translateY(-4px); background: rgba(244,127,36,.14); border-color: rgba(244,127,36,.55); }
.launch-label { display: block; font-size: 12px; letter-spacing: .2em; text-transform: uppercase; color: var(--orange-text); font-weight: 700; margin-bottom: 12px; }
.launch-url { display: flex; align-items: center; gap: 12px; font-size: clamp(15px, 1.8vw, 19px); font-weight: 600; letter-spacing: -.01em; word-break: break-word; }
.launch-url em { font-style: normal; color: var(--orange-text); font-size: 22px; transition: transform .28s var(--ease); }
.launch-door:hover .launch-url em { transform: translate(4px, -4px); }

/* ============ ONE SHAPE PER PAGE ============ */

/* ABOUT US: THE MISSION STANDS ALONE, THEN THE STORY HANGS OFF THE FOUNDING YEAR */

.theme-about .sky i:nth-child(1) { background: radial-gradient(circle, rgba(244,127,36,.24), transparent 66%); }
.theme-about .sky i:nth-child(2) { background: radial-gradient(circle, rgba(84,171,206,.22), transparent 66%); }

.mission { padding-bottom: clamp(30px, 4vw, 46px); }
.mission h1 { font-size: clamp(30px, 4vw, 54px); margin: 0 auto 26px; }

.era { display: grid; grid-template-columns: minmax(180px, 260px) 1fr; gap: clamp(30px, 5vw, 76px); align-items: start; }
.era-mark b { display: block; font-size: clamp(56px, 8vw, 108px); line-height: .82; font-weight: 600; letter-spacing: -.05em; color: transparent; -webkit-text-stroke: 1px rgba(244,127,36,.6); }
.era-mark span { display: block; margin-top: 14px; font-size: 12px; letter-spacing: .2em; text-transform: uppercase; color: var(--mute); }
.era-body p { margin: 0 0 26px; font-size: clamp(17px, 2vw, 21px); line-height: 1.6; }
.era-body p:last-child { margin-bottom: 0; color: var(--mute); }

/* BRM: THE WHEEL LEADS, THE TEXT ANSWERS IN TWO COLUMNS */

.theme-brm .sky i:nth-child(1) { background: radial-gradient(circle, rgba(84,171,206,.28), transparent 66%); left: auto; right: -10vw; }
.theme-brm .sky i:nth-child(2) { background: radial-gradient(circle, rgba(244,127,36,.20), transparent 66%); right: auto; left: -14vw; }

.brm-top { padding: clamp(46px, 7vw, 90px) 0 clamp(20px, 3vw, 34px); }
.brm-grid { display: grid; grid-template-columns: .88fr 1.12fr; gap: clamp(30px, 5vw, 64px); align-items: center; }
.brm-intro h1 { font-size: clamp(32px, 4.2vw, 60px); max-width: 9em; }
.brm-intro .lead { margin-bottom: 0; }

.duo { columns: 2; column-gap: clamp(34px, 5vw, 72px); max-width: 62em; }
.duo p { margin: 0 0 24px; break-inside: avoid; font-size: clamp(16px, 1.8vw, 18px); line-height: 1.7; color: var(--mute); }
.duo p:first-child { color: var(--text); }

/* LEGAL AND PRIVACY: PLAIN TEXT SET LIKE A DOCUMENT, NOT LIKE A LANDING PAGE */

.theme-legal .sky i:nth-child(1) { opacity: .3; }
.theme-legal .sky i:nth-child(2) { background: radial-gradient(circle, rgba(84,171,206,.18), transparent 66%); }

.narrow-head h1 { max-width: 12em; }
.narrow-head .lead { max-width: 40em; }

.columns { columns: 2; column-gap: clamp(34px, 5vw, 72px); }
.columns p { margin: 0 0 24px; break-inside: avoid; font-size: 16.5px; line-height: 1.72; color: var(--mute); }
.columns p:first-child { color: var(--text); }

.qa-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 18px; }

.qa {
    padding: 28px 30px 30px; border-radius: var(--r);
    background: linear-gradient(168deg, rgba(255,255,255,.055), rgba(255,255,255,.018) 58%, rgba(255,255,255,.012));
    box-shadow: var(--shadow), inset 0 1px 0 rgba(255,255,255,.09);
    transition: transform .3s var(--ease), box-shadow .3s var(--ease);
}

.qa:hover { transform: translateY(-3px); box-shadow: 0 46px 90px -50px rgba(0,0,0,.98), inset 0 1px 0 rgba(255,255,255,.12); }
.qa h2 { margin: 0 0 10px; font-size: 17.5px; font-weight: 600; letter-spacing: -.01em; }
.qa p { margin: 0; color: var(--mute); font-size: 15.5px; line-height: 1.6; }

/* THE REMAINING PAGES KEEP THEIR OWN LIGHT TOO, SO NO TWO FEEL THE SAME */

.theme-press .sky i:nth-child(1) { background: radial-gradient(circle, rgba(84,171,206,.22), transparent 66%); top: -30vw; }
.theme-press .sky i:nth-child(2) { background: radial-gradient(circle, rgba(244,127,36,.18), transparent 66%); }

.theme-people .sky i:nth-child(1) { background: radial-gradient(circle, rgba(244,127,36,.20), transparent 66%); left: auto; right: -20vw; }
.theme-people .sky i:nth-child(2) { background: radial-gradient(circle, rgba(84,171,206,.20), transparent 66%); right: auto; left: -16vw; top: 10vw; }

.theme-partners .sky i:nth-child(1) { width: 74vw; height: 74vw; background: radial-gradient(circle, rgba(84,171,206,.20), transparent 64%); }
.theme-partners .sky i:nth-child(2) { background: radial-gradient(circle, rgba(244,127,36,.22), transparent 66%); }

/* CONTACTS: THE EMAIL IS THE HEADLINE */

.theme-contacts .sky i:nth-child(1) { background: radial-gradient(circle, rgba(244,127,36,.26), transparent 66%); }
.theme-contacts .sky i:nth-child(3) { background: radial-gradient(circle, rgba(84,171,206,.20), transparent 68%); }

/* THE THREE OFFICES ARE THE POINT OF THIS PAGE, SO THE OPENING GIVES UP HEIGHT UNTIL
   THEY FIT ON THE FIRST SCREEN */
.contact-top { padding-top: clamp(40px, 5vw, 72px); padding-bottom: clamp(18px, 2vw, 26px); }
.contact-top h1 { font-size: clamp(30px, 4vw, 52px); margin: 0 auto 20px; }
.contact-top .tagline { margin-bottom: 18px; }
.theme-contacts .block { padding-top: clamp(28px, 3vw, 44px); }
.mailto { margin: 0 0 12px; font-size: clamp(19px, 2.4vw, 30px); letter-spacing: -.02em; font-weight: 600; }
.mailto a { color: var(--text); text-decoration: none; border-bottom: 2px solid var(--orange); padding-bottom: 3px; transition: color .2s; }
.mailto a:hover { color: var(--orange-text); }
.phone { margin: 0; color: var(--mute); font-size: clamp(15px, 1.7vw, 18px); font-variant-numeric: tabular-nums; }

/* THREE OFFICES, THREE IDENTICAL CHIPS: SAME COLUMN, SAME PADDING, SAME HEIGHT */
.offices { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; align-items: stretch; }

.office {
    padding: 32px 30px 34px; border-radius: var(--r); display: flex; flex-direction: column;
    background: linear-gradient(168deg, rgba(255,255,255,.055), rgba(255,255,255,.018) 58%, rgba(255,255,255,.012));
    box-shadow: var(--shadow), inset 0 1px 0 rgba(255,255,255,.09);
    transition: transform .3s var(--ease), box-shadow .3s var(--ease);
}

.office:hover { transform: translateY(-4px); box-shadow: 0 46px 90px -50px rgba(0,0,0,.98), inset 0 1px 0 rgba(255,255,255,.12); }
.office b { display: block; font-size: 12px; letter-spacing: .18em; text-transform: uppercase; color: var(--orange-text); margin-bottom: 16px; }
.office h2 { margin: 0 0 14px; font-size: clamp(20px, 2.2vw, 26px); font-weight: 600; letter-spacing: -.018em; }
.office p { margin: 0; color: var(--mute); font-size: 15.5px; line-height: 1.66; }

/* THE HEADQUARTERS IS SIGNALLED BY ITS TEXT COLOUR, NOT BY BEING A DIFFERENT SIZE */
.lead-office p { color: var(--text); }

/* THE WAY OUT OF EVERY SOLUTION PAGE */

.next { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.next-three { grid-template-columns: repeat(3, 1fr); }

.next-card {
    padding: 30px 32px 34px; text-decoration: none; color: inherit;
    transition: transform .3s var(--ease), box-shadow .3s var(--ease), background .3s;
}

/* THE LABEL IS THE SMALL LINE ABOVE THE TITLE. WRITTEN AS .next-card span IT CLAIMED
   THE TITLE TOO, WHICH CAME OUT IN UPPERCASE AND IN THE SECONDARY GREY */
.next-card span:not(.next-title) { display: block; font-size: 12px; letter-spacing: .18em; text-transform: uppercase; color: var(--mute); margin-bottom: 12px; }
.next-card .next-title { display: flex; align-items: center; gap: 12px; font-size: clamp(20px, 2.2vw, 26px); font-weight: 600; letter-spacing: -.018em; color: var(--text); }
.next-card em { font-style: normal; color: var(--orange-text); transition: transform .25s var(--ease); }
.next-card:hover { transform: translateY(-4px); }
.next-card:hover em { transform: translateX(6px); }

/* ---------- PEOPLE ---------- */

.people { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
.person { padding: 0 0 32px; overflow: hidden; transition: transform .3s var(--ease), box-shadow .3s var(--ease); }
.person:hover { transform: translateY(-5px); }

.person figure { margin: 0; position: relative; }

.person figure::after {
    content: ""; position: absolute; inset: 0;
    background: linear-gradient(180deg, transparent 45%, rgba(21,23,27,.72));
}

.person img {
    width: 100%; aspect-ratio: 4 / 3; object-fit: cover; object-position: center top; display: block;
    filter: grayscale(1) contrast(1.03); transition: filter .45s var(--ease), transform .6s var(--ease);
}

.person:hover img { filter: grayscale(0); transform: scale(1.03); }
.person .who { padding: 26px 30px 0; }
.person h2 { margin: 0 0 3px; font-size: clamp(20px, 2.2vw, 26px); font-weight: 600; letter-spacing: -.018em; }
.person .role { color: var(--orange-text); font-size: 12.5px; letter-spacing: .14em; text-transform: uppercase; font-weight: 600; margin-bottom: 20px; }
.person p { margin: 0 0 14px; color: var(--mute); font-size: 15px; line-height: 1.62; }
.person p:last-child { margin-bottom: 0; }

/* ---------- PARTNER LOGOS ---------- */

/* PARTNER LOGOS ARE PART OF AN AGREEMENT: ALWAYS VISIBLE, IN THEIR OWN COLOURS, WITH
   NO HOVER NEEDED. THEY ONLY READ CORRECTLY ON A LIGHT PLATE, SO EACH ONE GETS ONE.
   INSTEAD OF FOUR EQUAL CELLS, EACH PARTNER TAKES A BAND OF THE PAGE AND THE PLATES
   ALTERNATE SIDES AS YOU SCROLL */

.bands { display: grid; gap: clamp(18px, 2.4vw, 28px); }

.band {
    display: grid; grid-template-columns: minmax(240px, 340px) 1fr; align-items: center;
    gap: clamp(24px, 4vw, 56px); padding: clamp(18px, 2.2vw, 26px);
    border-radius: var(--r); text-decoration: none; color: inherit; position: relative; overflow: hidden;
    background: linear-gradient(168deg, rgba(255,255,255,.055), rgba(255,255,255,.018) 58%, rgba(255,255,255,.012));
    box-shadow: var(--shadow), inset 0 1px 0 rgba(255,255,255,.09);
    transition: transform .3s var(--ease), box-shadow .3s var(--ease), background .3s;
}

.band:nth-child(even) { direction: rtl; }
.band:nth-child(even) > * { direction: ltr; }

.band::before {
    content: ""; position: absolute; inset: 0; opacity: 0; transition: opacity .35s;
    background: radial-gradient(60% 120% at 20% 50%, rgba(244,127,36,.14), transparent 70%);
}

.band:hover { transform: translateY(-4px); box-shadow: 0 46px 90px -50px rgba(0,0,0,.98), inset 0 1px 0 rgba(255,255,255,.12); }
.band:hover::before { opacity: 1; }

.band-plate {
    display: flex; align-items: center; justify-content: center;
    background: #FFFFFF; border-radius: var(--r-sm); padding: 34px 30px; min-height: 168px;
    position: relative; transition: transform .35s var(--ease);
}

.band-plate img { max-height: 78px; width: auto; }
.band:hover .band-plate { transform: scale(1.02); }

.band-name { position: relative; display: block; padding-right: clamp(8px, 2vw, 24px); }

/* WHEN THE PLATE MOVES TO THE RIGHT, THE NAME HAS TO FOLLOW IT AND SIT AGAINST IT.
   LEFT ALIGNED IT WOULD DRIFT TO THE FAR EDGE AND THE PAIR WOULD READ AS TWO THINGS */
.band:nth-child(even) .band-name { text-align: right; padding-right: 0; padding-left: clamp(8px, 2vw, 24px); }
.band-name b { display: block; font-size: clamp(22px, 3vw, 38px); font-weight: 600; letter-spacing: -.03em; line-height: 1.1; margin-bottom: 14px; }
.band-name i { font-style: normal; display: inline-flex; align-items: center; gap: 10px; color: var(--mute); font-size: 15.5px; }
.band-name em { font-style: normal; color: var(--orange-text); font-size: 19px; transition: transform .28s var(--ease); }
.band:hover .band-name i { color: var(--text); }
.band:hover .band-name em { transform: translate(4px, -4px); }

/* ---------- PRESS ---------- */

.filters { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 30px; align-items: center; }
.filters .count { margin-left: auto; color: var(--mute); font-size: 14px; }

.filters .search { flex: 1 1 260px; max-width: 340px; }

.filters input[type=search], .filters select {
    width: 100%; border: 1px solid var(--edge); background: var(--raise); color: var(--text);
    padding: 11px 16px; border-radius: var(--r-btn); font-size: 14px; font-family: inherit;
    transition: border-color .2s, background .2s;
}

.filters select { width: auto; cursor: pointer; }
.filters select option { background: #1E2126; color: var(--text); }
.filters input[type=search]::placeholder { color: var(--mute); }
.filters input[type=search]:hover, .filters select:hover { border-color: var(--edge-2); }
.filters input[type=search]:focus, .filters select:focus { outline: none; border-color: var(--orange); background: var(--raise-2); }

.chip {
    border: 1px solid var(--edge); background: var(--raise); color: var(--mute);
    padding: 10px 18px; border-radius: var(--r-btn); font-size: 14px; font-family: inherit; cursor: pointer;
    transition: .2s var(--ease);
}

.chip:hover { color: var(--text); border-color: var(--edge-2); }
.chip.on { background: rgba(244,127,36,.16); border-color: rgba(244,127,36,.55); color: #FFB273; }

/* THE BROWSER HIDES [hidden] WITH display: none, BUT THAT RULE LOSES TO ANY CLASS THAT
   SETS A DISPLAY OF ITS OWN. THE FILTER WAS SETTING doc.hidden AND THE ROWS STAYED ON
   SCREEN: THE COUNTER SAID 8, THE LIST SHOWED 55 */
[hidden] { display: none !important; }

.press { display: grid; gap: 6px; }

.doc {
    padding: 22px 24px; display: grid; grid-template-columns: 76px 1fr auto; gap: 26px; align-items: center;
    text-decoration: none; color: inherit; border-radius: var(--r-sm); position: relative;
    transition: background .25s, transform .25s var(--ease);
}

.doc:hover { background: var(--raise); transform: translateX(4px); }
.doc time { color: var(--mute); font-variant-numeric: tabular-nums; font-size: 14.5px; }
.doc h3 { margin: 0 0 5px; font-weight: 500; font-size: clamp(16px, 1.8vw, 18.5px); font-weight: 500; letter-spacing: -.014em; }
.doc p { margin: 0; color: var(--mute); font-size: 14.5px; }
.doc .side { display: flex; align-items: center; gap: 18px; }
.doc em { font-style: normal; color: var(--orange-text); font-size: 19px; display: inline-block; opacity: 0; transform: translateX(-6px); transition: .25s var(--ease); }
.doc:hover em { opacity: 1; transform: none; }
/* THE TWO MARKS A DOCUMENT CARRIES, WHAT IT IS AND WHAT LANGUAGE IT IS IN, SHARE ONE
   SHAPE. THE LANGUAGE IS A CODE AND IS SET IN CAPITALS; THE CATEGORY IS A WORD AND
   IS LEFT AS ONE, WHICH IS WHAT TELLS THEM APART AT A GLANCE */
.lang, .cat {
    font-size: 11px; color: var(--mute); border: 1px solid var(--edge);
    padding: 5px 10px; border-radius: 7px; white-space: nowrap;
}

.lang { letter-spacing: .12em; text-transform: uppercase; }
.cat { font-size: 11.5px; letter-spacing: .02em; }
.press-more { margin-top: 36px; }
.no-docs { padding: 40px 24px; color: var(--mute); }

/* SOME DESCRIPTIONS CARRY A BARE URL: WITHOUT THIS THE COLUMN GROWS AND THE PAGE
   SCROLLS SIDEWAYS ON A PHONE */
.doc > div { min-width: 0; }
.doc h4, .doc p, .prose a { overflow-wrap: anywhere; }

/* ---------- ADDRESSES ---------- */

.addresses { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.address { padding: 34px 32px; transition: transform .3s var(--ease), box-shadow .3s var(--ease); }
.address:hover { transform: translateY(-4px); }
.address b { display: block; font-size: 12px; letter-spacing: .18em; text-transform: uppercase; color: var(--orange-text); margin-bottom: 16px; }
.address h3 { margin: 0 0 14px; }
.address p { margin: 0 0 14px; color: var(--mute); font-size: 15.5px; line-height: 1.62; }
.address a { color: var(--blue); text-decoration: none; }
.address a:hover { color: var(--orange-text); }

/* ---------- CLOSING BAND ---------- */

.close { text-align: center; padding: clamp(70px, 10vw, 128px) 0; position: relative; }
.close .wrap { position: relative; z-index: 2; max-width: 52em; }
.close h2 { max-width: 15em; margin: 0 auto 22px; }
.close p { color: var(--text); font-size: clamp(18px, 2.2vw, 24px); line-height: 1.5; letter-spacing: -.014em; margin: 0 auto 38px; }
.close .btn { margin: 0 auto; }

/* ---------- FOOTER ---------- */

.bottom { padding: 64px 0 40px; color: var(--mute); font-size: 14.5px; position: relative; }
.bottom::before { content: ""; position: absolute; top: 0; left: 50%; transform: translateX(-50%); width: min(var(--max), calc(100% - var(--pad) * 2)); height: 1px; background: linear-gradient(90deg, transparent, var(--edge) 20%, var(--edge) 80%, transparent); }
.foot { display: grid; grid-template-columns: 1.7fr repeat(3, 1fr); gap: 44px; }
.bottom .logo { height: 30px; margin-bottom: 20px; }
.foot-blurb { margin: 0; max-width: 26em; }
.accent { color: var(--orange-text); }
.bottom .foot-title { color: var(--text); font-size: 12px; letter-spacing: .16em; text-transform: uppercase; margin: 0 0 18px; font-weight: 600; }
.bottom ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 11px; }
.bottom a { color: var(--mute); text-decoration: none; transition: color .2s; }
.bottom a:hover { color: var(--orange-text); }
/* THE COPYRIGHT LINE WAS DIMMED TWICE, BY THE MUTED COLOUR AND BY opacity, AND FELL
   UNDER THE MINIMUM CONTRAST. THE SIZE STAYS SMALL, THE COLOUR CARRIES THE STEP BACK */
.foot-end { margin-top: 48px; display: flex; justify-content: space-between; gap: 20px; font-size: 12.5px; color: var(--mute); }

/* ---------- ACCESSIBILITY ---------- */

.visually-hidden {
    position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0;
    overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

.skip {
    position: absolute; left: 50%; top: 8px; transform: translate(-50%, -160%);
    z-index: 90; background: var(--orange); color: #17140F; font-weight: 600;
    padding: 12px 22px; border-radius: var(--r-btn); text-decoration: none;
    transition: transform .22s var(--ease);
}

.skip:focus { transform: translate(-50%, 0); }

/* ---------- FOCUS ---------- */

a:focus-visible, button:focus-visible, .chip:focus-visible, .btn:focus-visible {
    outline: 2px solid var(--orange); outline-offset: 3px; border-radius: var(--r-btn);
}

::selection { background: rgba(244,127,36,.32); color: #FFFFFF; }

/* ---------- MOTION ---------- */

/* A THIN READING PROGRESS LINE, THE ONLY RULE LEFT ON THE PAGE AND IT EARNS ITS PLACE */
.progress {
    position: fixed; top: 0; left: 0; height: 2px; width: 0; z-index: 70;
    background: linear-gradient(90deg, var(--orange), #FFB273);
    box-shadow: 0 0 14px rgba(244,127,36,.6);
    transition: width .12s linear;
}

/* HEADLINES ARRIVE LETTER BY LETTER, SECTION TITLES WORD BY WORD */

/* .wd IS THE WORD BOX: IT KEEPS THE LETTERS OF ONE WORD TOGETHER, SO THE LINE CAN
   ONLY BREAK BETWEEN WORDS LIKE IN ANY NORMAL PARAGRAPH */
.wd { display: inline-block; white-space: nowrap; }
.ch, .w { display: inline-block; will-change: transform, opacity; }

.letters .ch { animation: charIn .62s var(--ease) both; animation-delay: calc(var(--i) * 26ms + var(--base, 0ms)); }

@keyframes charIn {
    from { opacity: 0; transform: translateY(.42em) rotate(2deg); filter: blur(5px); }
    to { opacity: 1; transform: none; filter: none; }
}

.reveal-on .words .w { opacity: 0; transform: translateY(.36em); filter: blur(5px); }

.reveal-on .words.in .w {
    animation: wordIn .68s var(--ease) both;
    animation-delay: calc(var(--i) * 42ms);
}

@keyframes wordIn {
    from { opacity: 0; transform: translateY(.36em); filter: blur(5px); }
    to { opacity: 1; transform: none; filter: none; }
}

/* THE LITTLE ORANGE RULE OF EACH TAGLINE DRAWS ITSELF */
.reveal-on .reveal .tagline::before, .reveal-on .tagline.reveal::before { width: 0; transition: width .6s var(--ease) .2s; }
.reveal-on .reveal.in .tagline::before, .reveal-on .tagline.reveal.in::before { width: 22px; }

/* PRESS ROWS ARRIVE ONE AFTER THE OTHER */
.reveal-on .stagger.in .doc { animation: rowIn .55s var(--ease) both; animation-delay: calc(var(--i) * 55ms); }

@keyframes rowIn {
    from { opacity: 0; transform: translateY(14px); }
    to { opacity: 1; transform: none; }
}

/* CONTENT IS VISIBLE BY DEFAULT AND ONLY HIDES ONCE THE SCRIPT TAKES OVER, SO A
   SCRIPT THAT NEVER RUNS CANNOT HIDE THE PAGE */
.reveal-on .reveal {
    opacity: 0; transform: translateY(26px); filter: blur(6px);
    transition: opacity .85s var(--ease), transform .85s var(--ease), filter .85s var(--ease);
}

.reveal-on .reveal.in { opacity: 1; transform: none; filter: none; }
.reveal-on .reveal.d1 { transition-delay: .09s; }
.reveal-on .reveal.d2 { transition-delay: .18s; }
.reveal-on .reveal.d3 { transition-delay: .27s; }
.reveal-on .reveal.d4 { transition-delay: .36s; }

.rise { animation: rise .9s var(--ease) both; }
.rise.d1 { animation-delay: .1s; }
.rise.d2 { animation-delay: .2s; }
.rise.d3 { animation-delay: .3s; }

@keyframes rise { from { opacity: 0; transform: translateY(24px); filter: blur(7px); } to { opacity: 1; transform: none; filter: none; } }

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    .reveal, .rise, .ch, .w { opacity: 1 !important; transform: none !important; filter: none !important; animation: none !important; transition: none !important; }
    .sky i { animation: none !important; }
    .progress { display: none; }
    * { animation-duration: .001ms !important; transition-duration: .001ms !important; }
}

/* ---------- RESPONSIVE ---------- */

@media (min-width: 1500px) {
    :root { --max: 1340px; --nav-h: 86px; }
    body { font-size: 17.5px; }
}

@media (min-width: 1800px) {
    :root { --max: 1420px; }
}

@media (max-width: 1100px) {
    .awards-grid { grid-template-columns: 1fr 1fr; }
    .people { grid-template-columns: 1fr; }
    .person img { aspect-ratio: 16 / 7; }
}

@media (max-width: 1100px) {
    .qa-grid { grid-template-columns: 1fr 1fr; }
    .offices { grid-template-columns: 1fr 1fr; }
    .next-three { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 900px) {
    .split, .claim-grid, .next, .next-three, .brm-grid, .era, .qa-grid, .offices, .launch, .band { grid-template-columns: 1fr; }

    /* STACKED, THE ALTERNATION HAS NOTHING TO ALTERNATE: THE PLATE ALWAYS LEADS */
    .band:nth-child(even) { direction: ltr; }
    .band:nth-child(even) .band-name { text-align: left; padding-left: 0; }
    .band-name { padding-right: 0; }
    .duo, .columns { columns: 1; }
    .era-mark b { -webkit-text-stroke-width: 1px; }
    .aside, .claim { position: static; }
    .claim { margin-bottom: 8px; }
    .step { grid-template-columns: 1fr; gap: 6px; }
    .step:nth-child(even) { margin-left: 0; }
    .cards, .addresses { grid-template-columns: 1fr; }
    .foot { grid-template-columns: 1fr 1fr; gap: 34px; }

    /* THE MENU PANEL IS FIXED TO THE VIEWPORT ON A PHONE, WHICH LEAVES ITS WRAPPER AS AN
       EMPTY BOX. LEFT IN THE FLOW THE BOX STILL COLLECTED ITS 44px SHARE OF THE ROW GAP
       AND HELD THE BUTTON 66px OFF AN EDGE THE LOGO SITS 22px FROM */
    .menu-wrap { position: absolute; }

    .burger { display: block; margin-left: auto; }

    .menu {
        position: fixed; left: 0; right: 0; top: var(--nav-h); margin: 0;
        flex-direction: column; align-items: stretch; gap: 0;
        background: rgba(21,23,27,.97); backdrop-filter: blur(18px);
        box-shadow: 0 1px 0 var(--edge), var(--shadow);
        padding: 10px var(--pad) 26px; max-height: calc(100vh - var(--nav-h)); overflow-y: auto;
        transform: translateY(-14px); opacity: 0; visibility: hidden;
        transition: opacity .24s var(--ease), transform .24s var(--ease), visibility .24s;
    }

    .top.open .menu { opacity: 1; visibility: visible; transform: none; }
    .menu > li + li { border-top: 1px solid var(--edge); }
    .menu a, .menu .label { display: block; width: 100%; padding: 16px 0; font-size: 16.5px; color: var(--text); }
    .menu > li > a.on::after, .menu > li > .label.on::after { display: none; }

    .drop > .panel-list {
        position: static; opacity: 1; visibility: visible; transform: none;
        box-shadow: none; background: transparent; margin: 0 0 10px; padding: 0 0 0 14px;
        display: none; min-width: 0;
    }

    .drop.open > .panel-list { display: block; }
    .panel-list a { padding: 12px 0; color: var(--mute); font-size: 15.5px; }
    .menu .label { display: flex; align-items: center; justify-content: space-between; }
    .menu .label::before { content: "+"; order: 2; color: var(--orange-text); font-size: 21px; line-height: 1; }
    .drop.open > .label::before { content: "–"; }

    .nav .btn-header { display: none; }
}

/* THE HIDING RULE SITS AFTER THE MEDIA QUERY THAT SHOWS THE BUTTON, AND WITH EQUAL
   SPECIFICITY THE LAST ONE WINS: ON A PHONE THERE WAS A MENU BUT NO WAY TO OPEN IT.
   HIDING IS NOW SCOPED TO THE WIDTHS THAT REALLY DO NOT NEED IT */
.burger {
    margin-left: auto; width: 46px; height: 46px; padding: 0;
    background: var(--raise); border: 1px solid var(--edge); border-radius: var(--r-btn); cursor: pointer;
}

@media (min-width: 901px) {
    .burger { display: none; }
}

.burger span, .burger span::before, .burger span::after { display: block; width: 18px; height: 1.5px; background: var(--text); margin: 0 auto; transition: .24s var(--ease); }
.burger span { position: relative; }
.burger span::before, .burger span::after { content: ""; position: absolute; left: 0; }
.burger span::before { top: -6px; }
.burger span::after { top: 6px; }
.top.open .burger span { background: transparent; }
.top.open .burger span::before { top: 0; transform: rotate(45deg); }
.top.open .burger span::after { top: 0; transform: rotate(-45deg); }

@media (max-width: 640px) {
    .awards-grid, .foot { grid-template-columns: 1fr; }
    .doc { grid-template-columns: 1fr; gap: 10px; padding: 20px 18px; }
    .doc .side { justify-content: flex-start; }
    .doc em { opacity: 1; transform: none; }
    .foot-end { flex-direction: column; gap: 8px; }
    .hero-actions .btn { flex: 1 1 100%; }
    .award { padding: 24px 22px; }
    .band-plate { min-height: 132px; padding: 26px 22px; }
    .sky i { filter: blur(60px); }
}

