:root {
    --po-bg: #000;
    color-scheme: dark;
}

* {
    box-sizing: border-box;
}

html,
body {
    min-height: 100%;
    margin: 0;
    background: var(--po-bg);
    overflow: hidden;
}

.po-video-page {
    position: fixed;
    inset: 0;
    width: 100vw;
    height: 100vh;
    height: 100svh;
    overflow: hidden;
    background: var(--po-bg);
}

.po-hero-video {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center center;
    background: var(--po-bg);
}

/*
 * The intro videos contain a wide wordmark that must remain fully readable.
 * On phones, tablets and portrait viewports, covering the viewport would crop
 * the source at both sides. Black letterboxing is preferable to cutting the
 * logo, and blends into the deliberately black intro background.
 */
@media (max-width: 64rem), (orientation: portrait) {
    .po-hero-video {
        object-fit: contain;
    }
}

.po-audio-control {
    position: fixed;
    top: calc(var(--po-sticky-header-height, 5rem) + 1rem);
    right: max(1rem, env(safe-area-inset-right));
    z-index: 30;
}

.po-audio-control[hidden] {
    display: none;
}

.po-audio-dismiss {
    position: absolute;
    top: -0.55rem;
    right: -0.55rem;
    display: grid;
    width: 2rem;
    height: 2rem;
    padding: 0;
    border: 1px solid rgb(255 255 255 / 70%);
    border-radius: 50%;
    color: #fff;
    background: rgb(0 0 0 / 78%);
    box-shadow: 0 0.25rem 0.75rem rgb(0 0 0 / 45%);
    font: 700 1.4rem/1 Arial, Helvetica, sans-serif;
    cursor: pointer;
    place-items: center;
}

.po-audio-dismiss[hidden] {
    display: none;
}

.po-audio-dismiss:hover {
    background: #000;
}

.po-audio-dismiss:focus-visible {
    outline: 3px solid #f5d20a;
    outline-offset: 3px;
}

.po-hero-audio {
    display: block;
    width: min(22rem, calc(100vw - 2rem));
    height: 2.75rem;
}

.po-hero-audio[hidden] {
    display: none;
}

.po-turntable {
    display: block;
    width: 8.75rem;
    padding: 0;
    border: 0;
    color: #fff;
    background: transparent;
    filter: drop-shadow(0 0.6rem 1.25rem rgb(0 0 0 / 45%));
    cursor: pointer;
    transition: transform 180ms ease, filter 180ms ease;
}

.po-turntable[hidden] {
    display: none;
}

.po-turntable:hover {
    transform: translateY(-0.12rem) rotate(-1deg);
    filter: drop-shadow(0 0.75rem 1.5rem rgb(0 0 0 / 58%));
}

.po-turntable:focus-visible {
    border-radius: 0.65rem;
    outline: 3px solid #f5d20a;
    outline-offset: 5px;
}

.po-turntable svg {
    display: block;
    width: 100%;
    height: auto;
    overflow: visible;
}

.po-turntable__deck {
    stroke: #f7f7f3;
    stroke-width: 2;
}

.po-turntable__deck-edge {
    fill: none;
    stroke: rgb(255 255 255 / 52%);
    stroke-linecap: round;
    stroke-width: 1;
}

.po-turntable__platter-shadow {
    fill: #373837;
    filter: drop-shadow(0 0.15rem 0.16rem rgb(0 0 0 / 55%));
}

.po-turntable__platter-rim {
    fill: #a7a8a4;
    stroke: #292a29;
    stroke-dasharray: 1.4 2.1;
    stroke-linecap: round;
    stroke-width: 3.5;
}

.po-turntable__platter-edge {
    fill: #202120;
    stroke: #737570;
    stroke-width: 1;
}

.po-turntable__record {
    transform-box: view-box;
    transform-origin: 61px 59px;
}

.po-turntable[aria-pressed="true"] .po-turntable__record {
    animation: po-record-spin 1.8s linear infinite;
}

.po-turntable__vinyl {
    fill: #0d0e0e;
    stroke: #282a29;
    stroke-width: 1.5;
}

.po-turntable__groove {
    fill: none;
    stroke: #3d3f3e;
    stroke-width: 0.8;
}

.po-turntable__reflection {
    fill: none;
    stroke: rgb(255 255 255 / 24%);
    stroke-linecap: round;
    stroke-width: 3;
}

.po-turntable__label {
    fill: #d6b955;
    stroke: #7f6a24;
    stroke-width: 0.8;
}

.po-turntable__label-mark {
    fill: #191a19;
}

.po-turntable__label-dot {
    fill: #bd252d;
}

.po-turntable__spindle {
    fill: #e7e8e3;
}

.po-turntable__tonearm {
    transform-box: view-box;
    transform-origin: 128px 23px;
    transition: transform 420ms cubic-bezier(0.2, 0.8, 0.2, 1);
}

.po-turntable[aria-pressed="true"] .po-turntable__tonearm {
    transform: rotate(20deg);
}

.po-turntable__pivot {
    fill: #323331;
    stroke: #878984;
    stroke-width: 3.5;
}

.po-turntable__arm {
    fill: none;
    stroke: #e3e4df;
    stroke-linecap: round;
    stroke-linejoin: round;
    stroke-width: 4;
    filter: drop-shadow(1px 1px 0 #4c4d4a);
}

.po-turntable__needle {
    fill: #252625;
    stroke: #d1d2cd;
    stroke-width: 0.8;
}

.po-turntable__status {
    fill: #6a5c52;
    transition: fill 180ms ease, filter 180ms ease;
}

.po-turntable[aria-pressed="true"] .po-turntable__status {
    fill: #70e073;
    filter: drop-shadow(0 0 0.25rem #70e073);
}

.po-turntable__power circle,
.po-turntable__start-stop rect,
.po-turntable__speed-controls rect {
    fill: #242523;
    stroke: #777873;
    stroke-width: 0.8;
}

.po-turntable__power path {
    fill: none;
    stroke: #d8d9d4;
    stroke-linecap: round;
    stroke-width: 1.2;
}

.po-turntable__target-light {
    fill: #d9c4a3;
    stroke: #5d5e59;
    stroke-width: 1;
}

.po-turntable__start-stop text,
.po-turntable__speed-controls text {
    fill: #dedfd9;
    font: 700 3.8px/1 Arial, Helvetica, sans-serif;
    text-anchor: middle;
}

.po-turntable__pitch text,
.po-turntable__drive-label,
.po-turntable__model-label {
    fill: #3c3d39;
    font: 700 5px/1 Arial, Helvetica, sans-serif;
    letter-spacing: 0.45px;
    text-anchor: middle;
}

.po-turntable__pitch-track {
    fill: #343532;
}

.po-turntable__pitch-handle {
    fill: #d9dad5;
    stroke: #555651;
    stroke-width: 0.8;
}

.po-turntable__pitch path {
    fill: none;
    stroke: #555651;
    stroke-width: 0.8;
}

.po-turntable__model-label {
    font-size: 3.6px;
    font-weight: 600;
    letter-spacing: 0.7px;
}

@keyframes po-record-spin {
    to { transform: rotate(360deg); }
}

.po-name-rotator {
    position: fixed;
    inset-inline: 0;
    bottom: max(2rem, env(safe-area-inset-bottom));
    z-index: 2;
    pointer-events: none;
}

/* Compact landscape screens have no vertical room for both the logo and the
 * decorative name rotator. Keep the intro wordmark unobstructed there. */
@media (max-width: 64rem) and (orientation: landscape) {
    .po-name-rotator {
        display: none;
    }
}

.po-featured-name {
    position: absolute;
    bottom: 0;
    display: block;
    max-width: min(34rem, calc(100vw - 2rem));
    padding: 0.1em 0;
    color: var(--po-name-color, #fff);
    font-size: clamp(2rem, 8vw, 5.5rem);
    font-weight: 700;
    line-height: 0.95;
    letter-spacing: 0;
    overflow-wrap: anywhere;
    text-wrap: balance;
    text-shadow: 0 0.08em 0.35em rgb(0 0 0 / 55%);
    opacity: 0;
    transform: translateY(0.5rem);
    transition:
        opacity 450ms ease,
        transform 450ms ease;
}

.po-featured-role {
    display: block;
    margin-bottom: 0.35rem;
    font-family: Arial, Helvetica, sans-serif;
    font-size: clamp(0.85rem, 2.1vw, 1.35rem);
    font-weight: 700;
    line-height: 1;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.po-featured-person {
    display: block;
}

.po-featured-name[data-side="left"] {
    left: max(1rem, env(safe-area-inset-left));
    text-align: left;
}

.po-featured-name[data-side="right"] {
    right: max(1rem, env(safe-area-inset-right));
    text-align: right;
}

.po-featured-name.is-visible {
    opacity: 1;
    transform: translateY(0);
}

.po-featured-name--display {
    font-family: Impact, Haettenschweiler, "Arial Narrow Bold", sans-serif;
    text-transform: uppercase;
}

.po-featured-name--serif {
    font-family: Georgia, "Times New Roman", serif;
}

.po-featured-name--sans {
    font-family: Arial, Helvetica, sans-serif;
}

.po-featured-name--mono {
    font-family: "Courier New", Courier, monospace;
}

@media (prefers-reduced-motion: reduce) {
    .po-hero-video {
        display: none;
    }

    .po-featured-name {
        transition: none;
    }

    .po-turntable,
    .po-turntable__tonearm {
        transition: none;
    }

    .po-turntable[aria-pressed="true"] .po-turntable__record {
        animation: none;
    }
}
