:root {
    --ink: #050505;
    --paper: #f5f4f0;
    --signal: #ff382d;
    --ease: cubic-bezier(0.16, 1, 0.3, 1);
    --display: 'ariana-pro', 'Ariana', Arial, Helvetica, sans-serif;
    --opening-progress: 0;
    --work-progress: 0;
    --about-progress: 0;
    --contact-progress: 0;
}

* {
    box-sizing: border-box;
}

html {
    background: var(--ink);
}

body {
    margin: 0;
    overflow-x: hidden;
    background:
        linear-gradient(rgba(5, 5, 5, 0.4), rgba(5, 5, 5, 0.4)),
        url('../media/zig-zag-wool.png') top left / 400px 400px repeat;
    color: var(--paper);
    font-family: var(--display);
    font-style: oblique 10deg;
    letter-spacing: 0;
}

body::selection {
    background: var(--signal);
    color: var(--paper);
}

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

img,
video {
    display: block;
}

.hero-media video,
.media-card video,
.about-image video {
    -webkit-appearance: none;
    pointer-events: none;
}

.hero-media video::-webkit-media-controls,
.media-card video::-webkit-media-controls,
.about-image video::-webkit-media-controls,
.hero-media video::-webkit-media-controls-start-playback-button,
.media-card video::-webkit-media-controls-start-playback-button,
.about-image video::-webkit-media-controls-start-playback-button {
    display: none !important;
    opacity: 0 !important;
    -webkit-appearance: none;
}

.skip-link {
    position: fixed;
    top: 12px;
    left: 12px;
    z-index: 1000;
    padding: 10px 14px;
    background: var(--paper);
    color: var(--ink);
    transform: translateY(-160%);
}

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

.opening {
    position: relative;
    height: 190svh;
}

.opening-sticky,
.work-sticky,
.about-sticky,
.contact-sticky {
    position: sticky;
    top: 0;
    height: 100svh;
    min-height: 620px;
    overflow: hidden;
}

.opening-sticky {
    background: #000;
    isolation: isolate;
}

.hero-media,
.hero-media video,
.hero-exposure,
.hero-vignette {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
}

.hero-media {
    transform:
        scale(calc(1 + var(--opening-progress) * 0.19))
        translate3d(0, calc(var(--opening-progress) * -2.5vh), 0);
    transform-origin: 50% 54%;
    will-change: transform, filter;
}

.hero-media video {
    object-fit: cover;
    object-position: center;
    filter:
        brightness(calc(1 - var(--opening-progress) * 0.24))
        saturate(calc(1 - var(--opening-progress) * 0.18));
}

.hero-exposure {
    z-index: 2;
    background: rgba(255, 255, 255, 0.78);
    mix-blend-mode: screen;
    pointer-events: none;
    animation: signal-lock 1.25s var(--ease) both;
}

.hero-vignette {
    z-index: 3;
    background:
        radial-gradient(circle at 50% 54%, transparent 34%, rgba(0, 0, 0, 0.24) 67%, rgba(0, 0, 0, 0.72) 112%),
        linear-gradient(180deg, rgba(0, 0, 0, 0.14), transparent 34%, rgba(0, 0, 0, 0.46));
    opacity: calc(0.72 + var(--opening-progress) * 0.28);
}

.hero-title {
    position: absolute;
    z-index: 6;
    top: 80%;
    left: 50%;
    width: min(94vw, 1400px);
    text-align: center;
    transform:
        translate3d(-50%, calc(-50% + var(--opening-progress) * 13vh), 0)
        scale(calc(1 + var(--opening-progress) * 0.85));
    opacity: calc(1 - var(--opening-progress) * 1.38);
    filter: blur(calc(var(--opening-progress) * 8px));
    will-change: transform, opacity, filter;
}

.hero-title.awaiting-three h1,
.hero-title.awaiting-three p {
    opacity: 0 !important;
    animation: none !important;
}

.hero-title-static {
    position: absolute;
    z-index: 1;
    inset: 50% auto auto 50%;
    width: 100%;
    height: clamp(190px, 20vw, 330px);
    opacity: 1;
    pointer-events: none;
    transform: translate(-50%, -50%);
    transition: opacity 320ms ease;
}

.hero-title-static img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.hero-glass-canvas {
    position: absolute;
    z-index: 2;
    inset: 50% auto auto 50%;
    width: 100%;
    height: clamp(190px, 20vw, 330px);
    opacity: 0;
    outline: 0;
    pointer-events: none;
    transform: translate(-50%, -50%) scale(0.92);
    transition: opacity 450ms ease, transform 800ms var(--ease);
}

.hero-title.is-three-ready .hero-glass-canvas {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1);
}

.hero-title.is-three-ready .hero-title-static {
    opacity: 0;
}

.hero-title.has-static-title h1,
.hero-title.has-static-title > p {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    overflow: hidden !important;
    border: 0 !important;
    padding: 0 !important;
    margin: -1px !important;
    clip: rect(0 0 0 0) !important;
    clip-path: inset(50%) !important;
    white-space: nowrap !important;
    opacity: 0 !important;
    animation: none !important;
}

.hero-title.is-three-ready h1,
.hero-title.is-three-ready p {
    opacity: 0 !important;
}

.hero-title:not(.is-three-ready) .hero-word {
    color: #fff;
    background: none;
    -webkit-text-stroke: 0;
    text-shadow: 0 8px 26px rgba(0, 0, 0, 0.7);
}

.hero-title:not(.is-three-ready) .hero-word::before,
.hero-title:not(.is-three-ready) .hero-word::after,
.hero-title:not(.is-three-ready) p::before,
.hero-title:not(.is-three-ready) p::after {
    display: none;
}

.hero-title h1 {
    display: flex;
    align-items: baseline;
    justify-content: center;
    gap: clamp(22px, 3.8vw, 66px);
    perspective: 900px;
    margin: 0;
    font-size: clamp(58px, 8.25vw, 150px);
    font-weight: 800;
    line-height: 0.78;
    text-transform: uppercase;
    transform:
        skewX(-9deg)
        rotateX(var(--glass-tilt-x, 0deg))
        rotateY(var(--glass-tilt-y, 0deg));
    transform-style: preserve-3d;
    transition: transform 480ms var(--ease);
}

.hero-word {
    position: relative;
    isolation: isolate;
    display: block;
    color: transparent;
    background:
        linear-gradient(
            165deg,
            rgba(255, 255, 255, 0.98) 0%,
            rgba(255, 255, 255, 0.58) 26%,
            rgba(255, 255, 255, 0.92) 46%,
            rgba(202, 213, 222, 0.54) 68%,
            rgba(255, 255, 255, 0.92) 100%
        );
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-stroke: 1.2px rgba(255, 255, 255, 0.9);
    text-shadow:
        0 1px 0 rgba(255, 255, 255, 0.82),
        0 0 16px rgba(255, 255, 255, 0.2),
        0 12px 28px rgba(0, 0, 0, 0.62);
    opacity: 0;
    filter: blur(18px);
    transform-style: preserve-3d;
}

.hero-word::before,
.hero-word::after,
.hero-title p::before,
.hero-title p::after {
    position: absolute;
    inset: 0;
    content: attr(data-text);
    pointer-events: none;
}

.hero-word::before {
    z-index: 2;
    color: transparent;
    background:
        linear-gradient(
            108deg,
            transparent 13%,
            rgba(255, 255, 255, 0.08) 34%,
            rgba(255, 255, 255, 0.98) 46%,
            rgba(255, 255, 255, 0.12) 56%,
            transparent 78%
        );
    background-size: 240% 100%;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-stroke: 0.7px rgba(255, 255, 255, 0.66);
    mix-blend-mode: screen;
    animation: glass-shimmer 5.6s 1.4s ease-in-out infinite;
}

.hero-word::after {
    z-index: -1;
    color: rgba(10, 15, 18, 0.24);
    -webkit-text-stroke: 1px rgba(255, 255, 255, 0.24);
    text-shadow:
        1px 1px 0 rgba(206, 220, 230, 0.3),
        2px 2px 0 rgba(132, 148, 158, 0.28),
        3px 3px 0 rgba(60, 70, 76, 0.4),
        4px 4px 0 rgba(24, 29, 33, 0.55),
        7px 10px 20px rgba(0, 0, 0, 0.72);
    transform: translate3d(7px, 9px, -18px);
}

.hero-word-first {
    transform: translate3d(-12vw, 36px, 0) scale(1.08);
    animation: word-lock-left 1.2s 0.25s var(--ease) forwards;
}

.hero-word-last {
    transform: translate3d(12vw, -32px, 0) scale(1.08);
    animation: word-lock-right 1.25s 0.36s var(--ease) forwards;
}

.hero-title p {
    position: relative;
    isolation: isolate;
    width: max-content;
    margin: clamp(26px, 3vw, 52px) auto 0;
    font-size: clamp(26px, 3.2vw, 52px);
    font-weight: 760;
    line-height: 1;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.82);
    -webkit-text-stroke: 0.65px rgba(255, 255, 255, 0.82);
    text-shadow:
        0 0 13px rgba(255, 255, 255, 0.16),
        0 7px 18px rgba(0, 0, 0, 0.7);
    transform: skewX(-9deg);
    opacity: 0;
    animation: director-lock 0.85s 1.05s var(--ease) forwards;
}

.hero-title p::before {
    z-index: 1;
    color: transparent;
    background: linear-gradient(105deg, transparent 15%, white 48%, transparent 76%);
    background-size: 230% 100%;
    -webkit-background-clip: text;
    background-clip: text;
    mix-blend-mode: screen;
    animation: glass-shimmer 5.6s 1.8s ease-in-out infinite;
}

.hero-title p::after {
    z-index: -1;
    color: rgba(13, 17, 20, 0.28);
    -webkit-text-stroke: 0.6px rgba(255, 255, 255, 0.22);
    transform: translate3d(3px, 4px, -8px);
}

@keyframes glass-shimmer {
    0%,
    20% {
        background-position: 160% 0;
        opacity: 0.32;
    }

    42% {
        opacity: 0.94;
    }

    64%,
    100% {
        background-position: -90% 0;
        opacity: 0.28;
    }
}

.scroll-cue {
    position: absolute;
    z-index: 8;
    right: clamp(20px, 3vw, 50px);
    bottom: 30px;
    width: 19px;
    height: 44px;
    border: 1px solid rgba(255, 255, 255, 0.65);
    border-radius: 14px;
    opacity: calc(1 - var(--opening-progress) * 2.2);
}

.scroll-cue span {
    position: absolute;
    top: 8px;
    left: 7px;
    width: 3px;
    height: 8px;
    border-radius: 2px;
    background: #fff;
    animation: scroll-cue 1.65s ease-in-out infinite;
}

.discipline-band {
    position: relative;
    z-index: 12;
    overflow: hidden;
    height: 88px;
    margin-top: -1px;
    border-block: 1px solid rgba(255, 255, 255, 0.18);
    background: rgba(5, 5, 5, 0.96);
    backdrop-filter: none;
}

.discipline-glass-canvas {
    position: absolute;
    z-index: 2;
    inset: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    pointer-events: none;
    transition: opacity 700ms ease;
}

.discipline-band.is-three-ready .discipline-glass-canvas {
    opacity: 1;
}

.discipline-band.is-three-ready .discipline-track {
    opacity: 0;
}

.discipline-track {
    display: flex;
    width: max-content;
    height: 100%;
    align-items: center;
    gap: 0;
    padding: 0;
    opacity: 0;
    font-size: clamp(22px, 2.2vw, 38px);
    font-weight: 800;
    text-transform: uppercase;
    transform: translate3d(0, 0, 0) skewX(-9deg);
    will-change: transform;
    animation: discipline 26s linear infinite;
    transition: opacity 220ms ease;
}

.discipline-band.is-font-ready:not(.is-three-ready) .discipline-track {
    opacity: 1;
}

.discipline-set {
    display: flex;
    flex: none;
    height: 100%;
    align-items: center;
    gap: 44px;
    padding-inline: 22px;
}

.discipline-track span {
    display: inline-block;
    color: transparent;
    background:
        linear-gradient(
            165deg,
            #ffffff 0%,
            #aeb7bc 18%,
            #f8fbfc 38%,
            #79858c 55%,
            #eef3f5 72%,
            #8e989e 100%
        );
    background-size: 220% 100%;
    background-position: 20% 0;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-stroke: 0.65px rgba(255, 255, 255, 0.8);
    text-shadow:
        0 1px 0 #eaf0f2,
        1px 2px 0 #9da8ae,
        2px 3px 0 #657178,
        3px 5px 0 rgba(25, 30, 33, 0.96),
        5px 9px 16px rgba(0, 0, 0, 0.72),
        0 0 18px rgba(229, 239, 244, 0.18);
    animation: none;
}

.discipline-track i {
    display: block;
    flex: 0 0 auto;
    width: clamp(15px, 1.7vw, 22px);
    height: clamp(15px, 1.7vw, 22px);
    background: none;
    color: transparent;
    font-size: 0;
    font-style: normal;
    transform: skewX(9deg) translateY(-1px);
    animation: none;
}

@media (min-width: 821px) {
    .discipline-band.is-three-ready .discipline-track {
        visibility: hidden;
        animation: none;
        will-change: auto;
    }

    .discipline-band.is-three-ready .discipline-track i::after {
        animation: none;
        will-change: auto;
    }
}

.work-journey {
    position: relative;
    height: auto;
    background: #060606;
}

.work-sticky {
    position: relative;
    top: auto;
    height: clamp(780px, 112svh, 1040px);
    min-height: 780px;
    perspective: 1500px;
    background:
        radial-gradient(circle at 50% 50%, rgba(48, 48, 48, 0.36), transparent 50%),
        url('../media/zig-zag-wool.png') center / 400px 400px repeat;
}

.work-atmosphere {
    position: absolute;
    inset: 0;
    z-index: 1;
    background:
        radial-gradient(circle at 50% 50%, transparent 34%, rgba(0, 0, 0, 0.82) 110%),
        linear-gradient(180deg, rgba(0, 0, 0, 0.82), transparent 19%, transparent 82%, rgba(0, 0, 0, 0.88));
    pointer-events: none;
}

.media-tunnel {
    position: absolute;
    inset: 0;
    z-index: 2;
    transform-style: preserve-3d;
    transform: perspective(1500px);
    will-change: transform;
}

.media-lane {
    --lane-scale: 1;
    --lane-opacity: 1;
    position: absolute;
    left: 0;
    display: flex;
    gap: 7px;
    width: max-content;
    transform:
        translate3d(var(--lane-x, 0px), 0, var(--lane-z, 0px))
        scale(var(--lane-scale));
    transform-origin: left center;
    opacity: var(--lane-opacity);
    filter:
        brightness(var(--lane-brightness, 1))
        saturate(var(--lane-saturation, 1))
        blur(var(--lane-blur, 0px));
    will-change: transform;
}

.media-lane-1 {
    top: 0;
    --lane-z: -18px;
    --lane-scale: 0.995;
    --lane-brightness: 0.94;
    --lane-saturation: 0.94;
}

.media-lane-2 {
    top: 25%;
    --lane-z: 12px;
    --lane-scale: 1.005;
    --lane-brightness: 1.03;
}

.media-lane-3 {
    top: 50%;
    --lane-z: 18px;
    --lane-scale: 1.008;
    --lane-brightness: 1.05;
}

.media-lane-4 {
    top: 75%;
    --lane-z: -14px;
    --lane-scale: 0.997;
    --lane-brightness: 0.95;
    --lane-saturation: 0.96;
}

.media-card {
    position: relative;
    flex: 0 0 clamp(260px, 25vw, 430px);
    aspect-ratio: 16 / 8.7;
    overflow: hidden;
    background: #111;
    box-shadow: 0 18px 58px rgba(0, 0, 0, 0.46);
    transition: filter 350ms ease, transform 650ms var(--ease);
}

.media-card-poster,
.media-card video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transform: translateZ(0);
    backface-visibility: hidden;
}

.media-card-poster {
    z-index: 0;
}

.media-card video {
    z-index: 1;
    filter: contrast(1.04);
    opacity: 0;
    transition: opacity 180ms linear;
}

.media-card.is-video-ready video {
    opacity: 1;
}

.media-card::after {
    position: absolute;
    inset: auto 0 0;
    height: 3px;
    background: linear-gradient(90deg, transparent, rgba(235, 242, 246, 0.9), transparent);
    opacity: 0;
    transform: scaleX(0.2);
    transition: opacity 240ms ease, transform 500ms var(--ease);
    content: '';
}

.media-card:hover {
    z-index: 3;
    filter: brightness(1.12) saturate(1.08);
    transform: scale(1.04);
}

.media-card:hover::after {
    opacity: 1;
    transform: scaleX(1);
}

.about-journey {
    position: relative;
    height: 168svh;
    background: #050505;
}

.about-sticky {
    isolation: isolate;
}

.about-image,
.about-image video,
.about-shade {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
}

.about-image {
    transform:
        scale(calc(1.12 - var(--about-progress) * 0.09))
        translate3d(calc((0.5 - var(--about-progress)) * 3vw), 0, 0);
    filter:
        saturate(calc(0.42 + var(--about-progress) * 0.4))
        brightness(calc(0.48 - var(--about-progress) * 0.12));
}

.about-image video {
    object-fit: cover;
}

.about-shade {
    z-index: 2;
    background:
        linear-gradient(90deg, rgba(0, 0, 0, 0.86), rgba(0, 0, 0, 0.16) 75%),
        linear-gradient(180deg, rgba(0, 0, 0, 0.42), transparent 35%, rgba(0, 0, 0, 0.68));
}

.about-copy {
    position: absolute;
    z-index: 3;
    top: 50%;
    left: clamp(20px, 5.2vw, 86px);
    width: min(82vw, 1080px);
    margin: 0;
    transform: translateY(-50%) skewX(-8deg);
    transform-origin: left center;
    font-family: var(--oblique-display, var(--display));
    font-size: clamp(30px, 2.9vw, 50px);
    font-style: oblique 14deg;
    font-weight: 650;
    line-height: 1.04;
    text-transform: none;
}

.about-copy span {
    display: block;
    margin-block: 0;
    clip-path: inset(0 calc((1 - var(--line-progress, 0)) * 100%) 0 0);
    transform: translate3d(calc((1 - var(--line-progress, 0)) * -1.5vw), 0, 0);
    opacity: var(--line-progress, 0);
    filter: blur(calc((1 - var(--line-progress, 0)) * 7px));
    will-change: clip-path, transform, opacity, filter;
}

.about-copy .about-accent {
    width: min(82vw, 1080px);
    margin-top: 0.46em;
    color: rgba(245, 244, 240, 0.82);
    font-size: 1em;
    font-style: oblique 14deg;
    font-weight: 650;
    line-height: 1.04;
}

.signal-wall {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    padding: clamp(72px, 8vw, 116px) 0 clamp(76px, 8.5vw, 124px);
    background:
        radial-gradient(circle at 50% 44%, rgba(119, 131, 138, 0.13), transparent 44%),
        linear-gradient(180deg, rgba(4, 4, 4, 0.92), rgba(8, 8, 8, 0.98)),
        url('../media/zig-zag-wool.png') center / 400px 400px repeat;
}

.signal-wall::after {
    position: absolute;
    z-index: -1;
    inset: 0;
    background:
        linear-gradient(90deg, rgba(0, 0, 0, 0.92), transparent 13%, transparent 87%, rgba(0, 0, 0, 0.92)),
        linear-gradient(180deg, rgba(0, 0, 0, 0.72), transparent 24%, transparent 76%, rgba(0, 0, 0, 0.74));
    pointer-events: none;
    content: '';
}

.signal-wall.is-motion-ready {
    transform: none;
    opacity: 1;
    filter: none;
}

.signal-wall.is-motion-ready.is-visible {
    transform: translate3d(0, 0, 0);
    opacity: 1;
    filter: blur(0);
}

.signal-wall-heading {
    position: relative;
    z-index: 2;
    width: min(92vw, 1440px);
    margin: 0 auto clamp(38px, 4vw, 60px);
    text-align: center;
}

.signal-wall-heading h2 {
    margin: 0;
    color: rgba(236, 241, 243, 0.86);
    font-family: var(--oblique-display, var(--display));
    font-size: clamp(22px, 2.35vw, 39px);
    font-style: oblique 14deg;
    font-weight: 760;
    line-height: 1;
    text-transform: uppercase;
    transform: skewX(-7deg);
    text-shadow: 0 8px 28px rgba(0, 0, 0, 0.72);
}

.signal-logo-lanes {
    position: relative;
    z-index: 2;
    display: grid;
    gap: clamp(26px, 2.2vw, 34px);
}

.signal-logo-lane {
    --signal-logo-duration: 67s;
    position: relative;
    width: 100%;
    overflow: hidden;
}

.signal-logo-lane:nth-child(even) {
    --signal-logo-duration: 76s;
}

.signal-logo-lane::before,
.signal-logo-lane::after {
    content: '';
    position: absolute;
    z-index: 3;
    top: 0;
    bottom: 0;
    width: clamp(34px, 7vw, 150px);
    pointer-events: none;
}

.signal-logo-lane::before {
    left: 0;
    background: linear-gradient(90deg, rgba(3, 3, 3, 0.98), rgba(3, 3, 3, 0));
}

.signal-logo-lane::after {
    right: 0;
    background: linear-gradient(270deg, rgba(3, 3, 3, 0.98), rgba(3, 3, 3, 0));
}

.signal-logo-track {
    position: relative;
    z-index: 1;
    display: flex;
    flex-wrap: nowrap;
    width: max-content;
    transform: translate3d(0, 0, 0);
    backface-visibility: hidden;
    will-change: transform;
}

.signal-logo-set {
    display: grid;
    grid-auto-flow: column;
    grid-auto-columns: clamp(146px, 12vw, 204px);
    flex: 0 0 auto;
    align-items: center;
    width: max-content;
    min-width: max-content;
    gap: clamp(12px, 1vw, 18px);
    padding-right: clamp(12px, 1vw, 18px);
}

.signal-logo-item {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-width: 0;
    height: clamp(68px, 6.5vw, 92px);
    overflow: hidden;
    isolation: isolate;
}

.signal-logo-mark {
    display: block;
    width: auto;
    max-width: calc(100% - 44px);
    height: auto;
    max-height: calc(100% - 28px);
    object-fit: contain;
    opacity: 0.86;
    pointer-events: none;
    filter: none;
    transform: none;
    transition: opacity 180ms var(--ease);
}

@media (hover: hover) and (pointer: fine) {
    .signal-logo-item:hover .signal-logo-mark {
        opacity: 1;
    }
}

.contact-journey {
    position: relative;
    height: 158svh;
    background: #030303;
}

.contact-sticky {
    isolation: isolate;
    background: #030303;
}

.contact-background,
.contact-haze {
    position: absolute;
    inset: 0;
}

.contact-background {
    z-index: 0;
    overflow: hidden;
    background-position: center;
    background-size: cover;
    background-repeat: no-repeat;
    transform:
        scale(calc(1.12 - var(--contact-progress) * 0.08))
        translate3d(calc((0.5 - var(--contact-progress)) * 2vw), 0, 0);
    filter:
        brightness(calc(0.32 + var(--contact-progress) * 0.16))
        saturate(calc(0.64 + var(--contact-progress) * 0.28));
}

.contact-background img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}

.contact-haze {
    z-index: 1;
    background:
        radial-gradient(circle at 74% 48%, rgba(255, 255, 255, 0.12), transparent 24%),
        linear-gradient(90deg, rgba(0, 0, 0, 0.78), rgba(0, 0, 0, 0.08) 70%),
        linear-gradient(180deg, rgba(0, 0, 0, 0.26), transparent 42%, rgba(0, 0, 0, 0.48));
}

.contact-beam {
    position: absolute;
    z-index: 2;
    width: 42vw;
    height: 130vh;
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.16), transparent 64%);
    filter: blur(22px);
    opacity: calc(var(--contact-progress) * 0.62);
    transform-origin: top center;
    pointer-events: none;
}

.contact-beam-left {
    top: -54vh;
    left: 6vw;
    transform: rotate(calc(-17deg + var(--contact-progress) * 13deg));
}

.contact-beam-right {
    top: -48vh;
    right: -5vw;
    transform: rotate(calc(20deg - var(--contact-progress) * 14deg));
}

.contact-copy {
    position: absolute;
    z-index: 5;
    top: 47%;
    left: clamp(22px, 4.2vw, 70px);
    width: 40vw;
    transform:
        translate3d(calc((1 - var(--contact-progress)) * -4vw), -50%, 0)
        scale(calc(0.96 + var(--contact-progress) * 0.04));
    opacity: clamp(0, calc(var(--contact-progress) * 1.35), 1);
}

.contact-glass-canvas {
    position: absolute;
    z-index: 2;
    top: -34px;
    left: -8%;
    width: 116%;
    height: clamp(230px, 22vw, 350px);
    opacity: 0;
    pointer-events: none;
    transform: translate3d(0, 18px, 0) scale(0.96);
    transition: opacity 720ms ease, transform 1100ms var(--ease);
}

.contact-copy.is-three-ready .contact-glass-canvas {
    opacity: 1;
    transform: translate3d(0, 0, 0) scale(1);
}

.contact-copy.is-three-ready h2 {
    opacity: 0;
}

.contact-copy h2 {
    margin: 0 0 46px;
    font-size: clamp(60px, 8vw, 136px);
    font-weight: 800;
    line-height: 0.74;
    transform: skewX(-9deg);
}

.contact-copy h2 span {
    color: var(--signal);
    text-shadow: 0 0 22px rgba(255, 56, 45, 0.72);
    animation: tally-copy 2.6s ease-in-out infinite alternate;
}

.contact-copy a {
    display: inline-block;
    font-size: clamp(18px, 2vw, 30px);
    font-weight: 760;
    transform: skewX(-9deg);
}

.contact-laptop {
    position: absolute;
    z-index: 4;
    top: 50%;
    right: -1vw;
    width: min(67vw, 1080px);
    transform:
        perspective(1500px)
        translate3d(calc((1 - var(--contact-progress)) * 10vw), calc(-46% + (1 - var(--contact-progress)) * 4.5vh), -80px)
        rotateY(calc(-10deg + var(--contact-progress) * 7deg))
        rotateX(calc(4deg - var(--contact-progress) * 3deg))
        scale(calc(0.94 + var(--contact-progress) * 0.06));
    opacity: clamp(0, calc((var(--contact-progress) - 0.04) * 1.5), 1);
    filter: blur(calc((1 - var(--contact-progress)) * 4px));
    transform-origin: right center;
    will-change: transform, opacity, filter;
}

.contact-laptop > img {
    width: 100%;
    height: auto;
}

.contact-form {
    position: absolute;
    top: 21%;
    right: 13.8%;
    bottom: auto;
    left: 14%;
    display: grid;
    gap: clamp(5px, 0.58vw, 10px);
    padding: clamp(4px, 0.45vw, 8px);
    background: rgba(255, 255, 255, 0.94);
    color: #111;
    font-family: Arial, Helvetica, sans-serif;
    font-style: normal;
}

.contact-form label {
    display: grid;
    gap: 2px;
    font-size: clamp(7px, 0.68vw, 11px);
}

.contact-form input,
.contact-form textarea {
    width: 100%;
    border: 0;
    border-bottom: 1px solid rgba(0, 0, 0, 0.16);
    border-radius: 0;
    outline: none;
    background: transparent;
    color: #111;
    font: inherit;
    resize: none;
}

.contact-form input {
    height: clamp(18px, 2vw, 32px);
}

.contact-form textarea {
    height: clamp(50px, 6vw, 96px);
}

.contact-form button {
    justify-self: end;
    border: 0;
    padding: 8px 10px;
    background: #151515;
    color: #fff;
    font: 700 clamp(7px, 0.66vw, 11px) Arial, Helvetica, sans-serif;
    text-transform: uppercase;
}

footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 30px;
    min-height: 84px;
    padding: 24px clamp(20px, 3.4vw, 54px);
    background: #050505;
    font-size: 13px;
    font-weight: 760;
    text-transform: uppercase;
}

@keyframes signal-lock {
    0% { opacity: 0.88; }
    18% { opacity: 0.08; }
    28% { opacity: 0.3; }
    46% { opacity: 0; }
    58% { opacity: 0.12; }
    100% { opacity: 0; }
}

@keyframes word-lock-left {
    to {
        opacity: 1;
        filter: blur(0);
        transform: translate3d(0, 0, 0) scale(1);
    }
}

@keyframes word-lock-right {
    to {
        opacity: 1;
        filter: blur(0);
        transform: translate3d(0, 0, 0) scale(1);
    }
}

@keyframes director-lock {
    from {
        opacity: 0;
        filter: blur(8px);
        transform: translateY(22px) skewX(-9deg);
    }
    to {
        opacity: 1;
        filter: blur(0);
        transform: translateY(0) skewX(-9deg);
    }
}

@keyframes scroll-cue {
    0%, 100% { opacity: 0.3; transform: translateY(0); }
    50% { opacity: 1; transform: translateY(18px); }
}

@keyframes discipline {
    from { transform: translate3d(0, 0, 0) skewX(-9deg); }
    to { transform: translate3d(-50%, 0, 0) skewX(-9deg); }
}

@keyframes discipline-silver {
    from { background-position: 20% 0; }
    to { background-position: 86% 0; }
}

@keyframes tally-copy {
    from { text-shadow: 0 0 12px rgba(255, 56, 45, 0.46); }
    to { text-shadow: 0 0 34px rgba(255, 56, 45, 0.9); }
}

@media (max-width: 820px) {
    .opening,
    .about-journey,
    .contact-journey {
        height: 138svh;
    }

    .work-journey {
        height: auto;
    }

    .opening-sticky,
    .about-sticky,
    .contact-sticky {
        position: sticky;
        top: 0;
        height: 100svh;
        min-height: 560px;
    }

    .opening-sticky {
        height: 100svh;
    }

    .hero-media {
        background: #000 url('../media/hero-poster-mobile-v5.webp') center / cover no-repeat;
        transform:
            scale(calc(1.04 + var(--opening-progress) * 0.1))
            translate3d(0, calc(var(--opening-progress) * -1.5vh), 0);
    }

    .hero-title {
        top: 82.5%;
        width: calc(100% - 28px);
        transform:
            translate3d(-50%, calc(-50% + var(--opening-progress) * 7vh), 0)
            scale(calc(1 + var(--opening-progress) * 0.24));
        opacity: calc(1 - var(--opening-progress) * 1.45);
        filter: blur(calc(var(--opening-progress) * 5px));
    }

    .hero-title h1 {
        flex-direction: column;
        gap: 8px;
        align-items: center;
        font-size: clamp(48px, 16vw, 76px);
        line-height: 0.86;
    }

    .hero-title p {
        margin-top: 26px;
        font-size: 25px;
    }

    .hero-title-static {
        height: 240px;
    }

    .discipline-band {
        height: 64px;
    }

    .discipline-glass-canvas {
        display: none;
    }

    .discipline-band.is-three-ready .discipline-track,
    .discipline-band.is-font-ready .discipline-track {
        opacity: 1;
    }

    .discipline-track {
        font-size: clamp(17px, 5vw, 21px);
        animation-duration: 22s;
    }

    .discipline-set {
        gap: 20px;
        padding-inline: 12px;
    }

    .discipline-track i {
        font-size: 0.65em;
    }

    .discipline-track span {
        -webkit-text-stroke-width: 0.42px;
        text-shadow:
            0 1px 0 #eaf0f2,
            1px 2px 0 #7c878d,
            2px 3px 0 rgba(25, 30, 33, 0.9),
            3px 6px 11px rgba(0, 0, 0, 0.68);
    }

    .work-sticky {
        position: relative;
        top: auto;
        height: 760px;
        min-height: 0;
        padding-block: 8px;
    }

    .media-tunnel {
        transform: none;
    }

    .media-lane {
        left: 0;
        gap: 5px;
        transform: translate3d(var(--lane-x, 0px), 0, 0);
        opacity: 1;
        filter: none;
    }

    .media-lane-1 { top: 1%; }
    .media-lane-2 { top: 25%; }
    .media-lane-3 { top: 49%; }
    .media-lane-4 { top: 73%; }

    .media-card {
        flex-basis: min(76vw, 330px);
    }

    .about-sticky {
        height: 100svh;
        min-height: 620px;
    }

    .about-image {
        transform:
            scale(calc(1.11 - var(--about-progress) * 0.06))
            translate3d(calc((0.5 - var(--about-progress)) * 2vw), 0, 0);
        filter:
            saturate(calc(0.42 + var(--about-progress) * 0.28))
            brightness(calc(0.43 - var(--about-progress) * 0.05));
    }

    .about-copy {
        left: 22px;
        width: calc(100% - 44px);
        transform: translateY(-50%);
        font-size: clamp(22px, 6.2vw, 25px);
        font-weight: 620;
        line-height: 1.08;
    }

    .about-copy span {
        clip-path: none;
        transform: translate3d(calc((1 - var(--line-progress, 0)) * -18px), 0, 0);
        opacity: var(--line-progress, 0);
        filter: blur(calc((1 - var(--line-progress, 0)) * 5px));
    }

    .about-copy .about-accent {
        width: 100%;
        margin-top: 0.58em;
        font-size: 1em;
        line-height: 1.08;
    }

    .signal-wall {
        padding: 48px 0 54px;
    }

    .signal-wall-heading {
        width: calc(100% - 32px);
        margin-bottom: 30px;
    }

    .signal-wall-heading h2 {
        font-size: clamp(16px, 4.4vw, 19px);
        line-height: 1.12;
    }

    .signal-logo-lanes {
        gap: 12px;
    }

    .signal-logo-lane {
        --signal-logo-duration: 43s;
        --signal-strip-width: 2480px;
        height: 58px;
        overflow: hidden;
        background-image: url('../media/logos/broadcasters/strips/mobile-row-1-v0854.png');
        background-repeat: repeat-x;
        background-position: 0 center;
        background-size: var(--signal-strip-width) 58px;
        animation: signal-logo-strip-forward var(--signal-logo-duration) linear infinite;
        animation-play-state: paused;
    }

    .signal-logo-lane:nth-child(even) {
        --signal-logo-duration: 49s;
        --signal-strip-width: 2604px;
        background-image: url('../media/logos/broadcasters/strips/mobile-row-2-v0854.png');
        background-size: var(--signal-strip-width) 58px;
        animation-name: signal-logo-strip-reverse;
    }

    .signal-wall.is-visible .signal-logo-lane {
        animation-play-state: running;
    }

    .signal-logo-lane::before,
    .signal-logo-lane::after {
        width: 24px;
    }

    .signal-logo-set {
        gap: 8px;
        padding-right: 8px;
    }

    .signal-logo-track {
        display: none;
    }

    .signal-logo-item {
        flex-basis: 116px;
        height: 58px;
    }

    .signal-logo-mark {
        max-width: calc(100% - 28px);
        max-height: calc(100% - 20px);
    }

    .contact-sticky {
        height: 100svh;
        min-height: 720px;
    }

    .contact-copy {
        top: 11%;
        left: 20px;
        width: calc(100% - 40px);
        transform:
            translate3d(0, calc((1 - var(--contact-progress)) * 24px), 0)
            scale(calc(0.96 + var(--contact-progress) * 0.04));
        opacity: clamp(0, calc(var(--contact-progress) * 1.5), 1);
    }

    .contact-copy h2 {
        margin-bottom: 0;
        font-size: clamp(66px, 20vw, 100px);
    }

    .contact-glass-canvas {
        top: -12px;
        left: -4%;
        width: 108%;
        height: 232px;
    }

    .contact-copy a {
        position: absolute;
        top: 75svh;
        left: 0;
        font-size: clamp(18px, 5.2vw, 22px);
        white-space: nowrap;
    }

    .contact-laptop {
        top: 64%;
        right: auto;
        left: 50%;
        width: 108%;
        margin: 0;
        transform:
            translate(-50%, -50%)
            translate3d(0, calc((1 - var(--contact-progress)) * 58px), 0)
            scale(calc(0.94 + var(--contact-progress) * 0.06));
        opacity: clamp(0, calc((var(--contact-progress) - 0.03) * 1.65), 1);
        filter: blur(calc((1 - var(--contact-progress)) * 4px));
    }

    .contact-form {
        top: 20%;
        right: 14%;
        left: 14%;
        gap: 4px;
        padding: 3px;
    }

    .contact-form textarea {
        height: 58px;
    }

    footer {
        flex-direction: column;
        align-items: flex-start;
    }
}

@keyframes signal-logo-strip-forward {
    from { background-position: 0 center; }
    to { background-position: calc(-1 * var(--signal-strip-width)) center; }
}

@keyframes signal-logo-strip-reverse {
    from { background-position: calc(-1 * var(--signal-strip-width)) center; }
    to { background-position: 0 center; }
}

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        scroll-behavior: auto !important;
        animation-duration: 1ms !important;
        animation-iteration-count: 1 !important;
    }

    .hero-media,
    .hero-title,
    .media-tunnel,
    .signal-wall,
    .contact-copy,
    .contact-laptop {
        transform: none;
        opacity: 1;
        filter: none;
    }

    .signal-logo-lane {
        animation: none !important;
        overflow-x: auto;
        scrollbar-width: none;
        background-image: none;
    }

    .signal-logo-lane::before,
    .signal-logo-lane::after {
        display: none;
    }

    .signal-logo-lane::-webkit-scrollbar {
        display: none;
    }

    .signal-logo-track {
        display: flex;
        animation: none !important;
        transform: none;
    }

    .signal-logo-set[aria-hidden='true'] {
        display: none;
    }
}
