/* ═══════════════════════════════════════════════
   MOTEL GRAVY — main.css
   Studio Illicit, Exeter
   ═══════════════════════════════════════════════ */

/* ── Design Tokens ─────────────────────────────── */
:root {
    /* Colours — faded black & white, low contrast */
    --bg:        #111010;
    --fg:        #d0c9c0;
    --primary:   #b8b0a6;
    --secondary: #d0c9c0;
    --muted:     #6b6560;
    --white:     #e8e2d8;
    --black:     #111010;
    --rule:      rgba(208, 201, 192, 0.08);
    --fog:       rgba(17, 16, 16, 0.6);

    /* Typography */
    --sans: 'DM Sans', system-ui, sans-serif;

    /* Fluid type scale */
    --text-12:  clamp(10px,  0.8vw,  12px);
    --text-16:  clamp(14px,  1.1vw,  16px);
    --text-18:  clamp(15px,  1.2vw,  18px);
    --text-24:  clamp(18px,  1.6vw,  24px);
    --text-36:  clamp(24px,  2.4vw,  36px);
    --text-48:  clamp(30px,  3.2vw,  48px);
    --text-60:  clamp(36px,  4.0vw,  60px);
    --text-96:  clamp(52px,  6.4vw,  96px);

    /* Fluid spacing */
    --gap-2:   clamp(1px,   0.15vw,  2px);
    --gap-6:   clamp(4px,   0.4vw,   6px);
    --gap-12:  clamp(8px,   0.8vw,   12px);
    --gap-16:  clamp(12px,  1.1vw,   16px);
    --gap-24:  clamp(16px,  1.6vw,   24px);
    --gap-48:  clamp(28px,  3.2vw,   48px);
    --gap-96:  clamp(52px,  6.4vw,   96px);
    --gap-144: clamp(72px,  9.6vw,  144px);

    /* Easing */
    --ease-out: cubic-bezier(0.16, 1, 0.3, 1);

    /* Nav height */
    --nav-h: clamp(56px, 5vw, 72px);
}

/* ── Reset ─────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html {
    font-size: 100%;
    -webkit-text-size-adjust: 100%;
}

body {
    font-family: var(--sans);
    font-size: var(--text-18);
    line-height: 1.6;
    color: var(--fg);
    background: var(--bg);
    overflow-x: hidden;
}

/* Homepage: suppress native scroll — Lenis infinite is the only scroll */
body:has(.page-home),
html:has(.page-home) {
    overflow: hidden;
}

body:has(.page-home) .footer {
    display: none;
}

img, video { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }
ul, ol { list-style: none; }
button { background: none; border: none; font: inherit; color: inherit; cursor: pointer; }

/* ── Custom Cursors ─────────────────────────────── */
body,
body :is([data-cursor="default"], [data-cursor="default"] *),
body * {
    cursor: url('../img/cursors/cursor-default.svg') 2 2, auto;
}

body :is([data-cursor="text"], [data-cursor="text"] *),
body :is(p, h1, h2, h3, h4, h5, h6, input[type="text"], textarea) {
    cursor: url('../img/cursors/cursor-text.svg') 7 13, text;
}

body :is([data-cursor="pointer"], [data-cursor="pointer"] *),
body :is(a, a *, button, button *, select, input[type="submit"], input[type="button"], input[type="radio"], input[type="checkbox"]) {
    cursor: url('../img/cursors/cursor-pointer.svg') 10 3, pointer;
}

/* ── Film Grain ────────────────────────────────── */
body::before {
    content: '';
    position: fixed;
    inset: -50%;
    width: 200%;
    height: 200%;
    pointer-events: none;
    z-index: 9999;
    opacity: 0.055;
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
    animation: grain 0.35s steps(1) infinite;
}

@keyframes grain {
    0%   { transform: translate(0,    0); }
    14%  { transform: translate(-4%,  -7%); }
    28%  { transform: translate(-12%,  4%); }
    42%  { transform: translate(6%,  -10%); }
    57%  { transform: translate(-8%,   6%); }
    71%  { transform: translate(10%,  -3%); }
    85%  { transform: translate(-5%,   9%); }
    100% { transform: translate(7%,   -6%); }
}

/* ── Layout ────────────────────────────────────── */
.container {
    width: 100%;
    max-width: 1920px;
    margin-inline: auto;
    padding-inline: var(--gap-24);
}

.full-bleed {
    width: 100vw;
    margin-inline: calc(var(--gap-24) * -1);
}

/* ── Page Transition — Pixel Grid ─────────────── */
.mg-transition {
    position: fixed;
    inset: 0;
    z-index: 9990;
    pointer-events: none;
    overflow: clip;
}

.mg-transition__panel {
    opacity: 0;
    width: 100%;
    height: 100%;
    display: flex;
    flex-flow: row;
    position: absolute;
    top: 0;
    left: 0;
}

.mg-transition__col {
    display: flex;
    flex-flow: column;
    justify-content: center;
    align-items: stretch;
    width: 100%;
}

.mg-transition__pixel {
    aspect-ratio: 1;
    background-color: var(--fg);
    width: 100%;
}

/* ── Navigation — full-screen ────────────────────── */
.mg-nav {
    position: fixed;
    inset: 0;
    z-index: 800;
    pointer-events: none;
}

/* Bar — last in DOM so it paints above tile without z-index (no stacking context = blend mode works).
   Background/blur live on ::before so backdrop-filter never creates a stacking context on the bar itself. */
.mg-nav__bar {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1.25rem 1.75rem;
}

.mg-nav__bar::before {
    content: '';
    position: absolute;
    inset: 0;
    background: transparent;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    transition: background 0.4s var(--ease-out), backdrop-filter 0.4s;
    pointer-events: none;
}

.mg-nav.scrolled .mg-nav__bar::before {
    background: rgba(17, 16, 16, 0.85);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
}

.mg-nav__logo {
    pointer-events: auto;
    display: flex;
    align-items: center;
    color: var(--fg);
    text-decoration: none;
}

.mg-nav__wordmark {
    font-family: var(--sans);
    font-size: clamp(22px, 2.8vw, 38px);
    font-weight: 900;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    line-height: 1;
    white-space: nowrap;
    display: block;
    color: transparent; /* blend bar provides the visual */
}

/* ── Blend bar — body-level wordmark clone with mix-blend-mode: difference ──
   Lives outside the nav so backdrop-filter on .mg-nav__bar::before can't
   create a stacking context that would break the blend. */
.mg-blend-bar {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    padding: 1.25rem 1.75rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    pointer-events: none;
    z-index: 9999;
    mix-blend-mode: difference;
    color: #ffffff;
}

.mg-blend-bar__wordmark {
    font-family: var(--sans);
    font-size: clamp(22px, 2.8vw, 38px);
    font-weight: 900;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    line-height: 1;
    white-space: nowrap;
}

/* Hamburger — matches real nav dimensions and animation */
.mg-blend-bar__hamburger {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 3em;
    height: clamp(24px, 2.2vw, 36px);
    position: relative;
    overflow: hidden;
}

.mg-blend-bar__bar {
    background: currentColor;
    width: 2em;
    height: 2px;
    position: absolute;
    transform: translate(0, 0) rotate(0.001deg);
    transition: transform 0.5s cubic-bezier(0.7, 0, 0.3, 1), opacity 0.3s;
}

.mg-blend-bar__bar:nth-child(1) { transform: translate(0, -0.45em) scale(1, 1) rotate(0.001deg); }
.mg-blend-bar__bar:nth-child(3) { transform: translate(0,  0.45em) scale(1, 1) rotate(0.001deg); }

/* X state — driven by nav sibling selector, no JS needed */
.mg-nav[data-navigation-status="active"] ~ .mg-blend-bar .mg-blend-bar__bar:nth-child(1) {
    transform: translate(0, 0) rotate(45deg) scale(1, 1);
}
.mg-nav[data-navigation-status="active"] ~ .mg-blend-bar .mg-blend-bar__bar:nth-child(2) {
    transform: translate(-200%, 0) rotate(0.001deg) scale(1, 1);
}
.mg-nav[data-navigation-status="active"] ~ .mg-blend-bar .mg-blend-bar__bar:nth-child(3) {
    transform: translate(0, 0) rotate(-45deg) scale(1, 1);
}

/* Hamburger — 3 bars, height matches logo */
.mg-nav__hamburger {
    pointer-events: auto;
    background: none;
    border: none;
    cursor: pointer;
    display: flex;
    justify-content: center;
    align-items: center;
    width: 3em;
    height: clamp(24px, 2.2vw, 36px);
    position: relative;
    overflow: hidden;
    color: transparent; /* blend bar provides the visual */
    padding: 0;
}

.mg-nav__hamburger-bar {
    background: currentColor;
    width: 2em;
    height: 2px;
    position: absolute;
    transform: translate(0, 0) rotate(0.001deg);
    transition: transform 0.5s cubic-bezier(0.7, 0, 0.3, 1), opacity 0.3s;
}

.mg-nav__hamburger .mg-nav__hamburger-bar:nth-child(1) {
    transform: translate(0, -0.45em) scale(1, 1) rotate(0.001deg);
}
.mg-nav__hamburger .mg-nav__hamburger-bar:nth-child(3) {
    transform: translate(0, 0.45em) scale(1, 1) rotate(0.001deg);
}

/* Hamburger hover */
.mg-nav__hamburger:hover .mg-nav__hamburger-bar:nth-child(1) {
    transform: translate(0, -0.45em) scale(0.5, 1) rotate(0.001deg);
}
.mg-nav__hamburger:hover .mg-nav__hamburger-bar:nth-child(3) {
    transform: translate(0, 0.45em) scale(0.5, 1) rotate(0.001deg);
}

/* Hamburger open state → X */
[data-navigation-status="active"] .mg-nav__hamburger-bar:nth-child(1) {
    transform: translate(0, 0) rotate(45deg) scale(1, 1);
    opacity: 1;
}
[data-navigation-status="active"] .mg-nav__hamburger-bar:nth-child(2) {
    transform: translate(-200%, 0) rotate(0.001deg) scale(1, 1);
}
[data-navigation-status="active"] .mg-nav__hamburger-bar:nth-child(3) {
    transform: translate(0, 0) rotate(-45deg) scale(1, 1);
    opacity: 1;
}
[data-navigation-status="active"] .mg-nav__hamburger:hover .mg-nav__hamburger-bar:nth-child(1) {
    transform: translate(0, 0) rotate(45deg) scale(0.7, 1);
}
[data-navigation-status="active"] .mg-nav__hamburger:hover .mg-nav__hamburger-bar:nth-child(3) {
    transform: translate(0, 0) rotate(-45deg) scale(0.7, 1);
}

/* Tile — clip-path reveal. pointer-events: none when closed prevents a clipped element
   from intercepting clicks (clip-path doesn't clip events on older Safari/iOS). */
.mg-nav__tile {
    pointer-events: none;
    background: var(--bg);
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    clip-path: polygon(0% 0%, 100% 0%, 100% 0%, 0% 0%);
    transition: clip-path 0.9s cubic-bezier(0.9, 0, 0.1, 1);
}

[data-navigation-status="active"] .mg-nav__tile {
    clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);
    pointer-events: auto;
}

/* Nav list */
.mg-nav__ul {
    list-style: none;
    display: flex;
    flex-direction: column;
    align-items: center;
    margin: 0;
    padding: 0;
}

.mg-nav__li {
    display: flex;
    justify-content: center;
    align-items: center;
    position: relative;
    overflow: hidden;
    transition: opacity 0.5s cubic-bezier(0.7, 0, 0.3, 1);
}

.mg-nav__link {
    display: block;
    color: var(--fg);
    font-size: calc(4vw + 4vh);
    font-weight: 900;
    letter-spacing: -0.03em;
    line-height: 1.05;
    text-decoration: none;
    text-transform: uppercase;
    padding-inline: 0.075em;
    transform: translateY(100%) rotate(5deg);
    transition: transform 0.75s cubic-bezier(0.7, 0, 0.3, 1);
}

.mg-nav__link.is--current { color: var(--white); }

/* Stagger close */
.mg-nav__li:nth-child(1) .mg-nav__link { transition-delay: 0.25s; }
.mg-nav__li:nth-child(2) .mg-nav__link { transition-delay: 0.20s; }
.mg-nav__li:nth-child(3) .mg-nav__link { transition-delay: 0.15s; }
.mg-nav__li:nth-child(4) .mg-nav__link { transition-delay: 0.10s; }
.mg-nav__li:nth-child(5) .mg-nav__link { transition-delay: 0.05s; }
.mg-nav__li:nth-child(6) .mg-nav__link { transition-delay: 0.00s; }

/* Stagger open */
[data-navigation-status="active"] .mg-nav__link {
    transform: translateY(0%) rotate(0.001deg);
}
[data-navigation-status="active"] .mg-nav__li:nth-child(1) .mg-nav__link { transition-delay: 0.30s; }
[data-navigation-status="active"] .mg-nav__li:nth-child(2) .mg-nav__link { transition-delay: 0.35s; }
[data-navigation-status="active"] .mg-nav__li:nth-child(3) .mg-nav__link { transition-delay: 0.40s; }
[data-navigation-status="active"] .mg-nav__li:nth-child(4) .mg-nav__link { transition-delay: 0.45s; }
[data-navigation-status="active"] .mg-nav__li:nth-child(5) .mg-nav__link { transition-delay: 0.50s; }
[data-navigation-status="active"] .mg-nav__li:nth-child(6) .mg-nav__link { transition-delay: 0.55s; }

/* Hover — dim siblings */
.mg-nav__ul:has(.mg-nav__li:hover) .mg-nav__li        { opacity: 0.15; }
.mg-nav__ul:has(.mg-nav__li:hover) .mg-nav__li:hover  { opacity: 1; }

.mg-nav__link-text {
    display: block;
    position: relative;
}

/* Bottom bar — socials + tagline */
.mg-nav__bottom {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    display: flex;
    align-items: center;
    padding: 1.5rem 1.75rem;
    border-top: 1px solid var(--rule);
}

.mg-nav__socials {
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 100%;
    gap: 0;
}

.mg-nav__social-link {
    font-size: 10px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--fg);
    opacity: 0.35;
    text-decoration: none;
    transition: opacity 0.2s;
    white-space: nowrap;
}
.mg-nav__social-link:hover { opacity: 0.8; }

.mg-nav__social-sep {
    color: var(--muted);
    opacity: 0.3;
    font-size: 10px;
    user-select: none;
    flex-shrink: 0;
}

.mg-nav__socials-group {
    display: contents;
}

@media (max-width: 767px) {
    .mg-nav__bottom {
        flex-direction: column;
        align-items: center;
        gap: var(--gap-16);
        padding: var(--gap-24) var(--gap-16);
    }

    .mg-nav__tagline { display: none; }

    .mg-nav__socials {
        flex-direction: column;
        align-items: center;
        gap: var(--gap-16);
    }

    .mg-nav__socials-group {
        display: flex;
        justify-content: center;
        flex-wrap: wrap;
        gap: 1.25em;
    }

    .mg-nav__social-sep { display: none; }
}

.mg-nav__tagline { display: none; }

/* ── [data-reveal] ─────────────────────────────── */
[data-reveal] {
    opacity: 0;
    transform: translateY(20px);
}

/* ═══════════════════════════════════════════════
   TYPO-SCROLL / MARQUEE ROWS (Homepage)
   ═══════════════════════════════════════════════ */

.typo-scroll {
    width: 100vw;
    overflow: clip;
    position: relative;
    background: var(--bg);
    color: var(--fg);
}

.typo-scroll__collection {
    display: flex;
    flex-direction: column;
    width: 100%;
}

.typo-scroll__list {
    display: flex;
    flex-direction: column;
    width: 100%;
}

/* One row = one destination; fixed height so clones stack evenly */
.typo-row {
    height: calc(100dvh / 7);
    display: flex;
    align-items: center;
    overflow: hidden;
    border-bottom: 1px solid var(--rule);
    text-decoration: none;
    color: inherit;
    cursor: pointer;
    transition: background 0.35s var(--ease-out);
}

.typo-row:first-child { border-top: 1px solid var(--rule); }

.typo-row:hover { background: rgba(208, 201, 192, 0.04); }

/* The moving strip — width: max-content so it never wraps */
.typo-row__track {
    display: flex;
    align-items: center;
    white-space: nowrap;
    will-change: transform;
    flex-shrink: 0;
    position: relative;
    z-index: 2;
}

.typo-row--ltr .typo-row__track {
    animation: typo-ltr var(--dur, 30s) linear infinite;
}

.typo-row--rtl .typo-row__track {
    animation: typo-rtl var(--dur, 30s) linear infinite;
}

/* Pause on hover */
.typo-row:hover .typo-row__track {
    animation-play-state: paused;
}

/* LTR: strip moves left; RTL: strip moves right. Both loop seamlessly
   because 10 identical units means −50% looks identical to 0%. */
@keyframes typo-ltr {
    from { transform: translateX(0); }
    to   { transform: translateX(-50%); }
}

@keyframes typo-rtl {
    from { transform: translateX(-50%); }
    to   { transform: translateX(0); }
}

/* One repeating unit: [icon] LABEL */
.typo-row__unit {
    display: inline-flex;
    align-items: center;
    gap: 0.4em;
    padding-inline: 0.35em;
    font-size: clamp(1.8rem, 7vh, 6rem);
    font-weight: 900;
    letter-spacing: -0.04em;
    text-transform: uppercase;
    line-height: 1;
    opacity: 0.4;
    transition: opacity 0.4s var(--ease-out);
    user-select: none;
}

.typo-row:hover .typo-row__unit { opacity: 1; }

/* SVG icon — same-cap-height as the label text */
.typo-icon {
    height: 0.7em;
    width: auto;
    flex-shrink: 0;
    display: block;
}

.typo-icon path,
.typo-icon circle,
.typo-icon rect,
.typo-icon polyline,
.typo-icon line,
.typo-icon ellipse {
    stroke-width: 1.5;
}

/* Hover image — fixed viewport-centred reveal, sits behind the text tracks */
.typo-row__media {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    pointer-events: none;
    overflow: hidden;
    z-index: 1;
    aspect-ratio: 3 / 4;
    width: 17.5vw;
    --po: 1.5em;
    opacity: 0;
    clip-path: polygon(
        calc(0% + var(--po)) calc(0% + var(--po)),
        calc(100% - var(--po)) calc(0% + var(--po)),
        calc(100% - var(--po)) calc(100% - var(--po)),
        calc(0% + var(--po)) calc(100% - var(--po))
    );
    transition: clip-path 1.2s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.15s ease;
}

.typo-row:hover .typo-row__media {
    clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);
    opacity: 1;
}

.typo-row__media.is--3-2 { aspect-ratio: 3 / 2; width: 25vw;   }
.typo-row__media.is--2-3 { aspect-ratio: 2 / 3; width: 16.5vw; }
.typo-row__media.is--1-1 { aspect-ratio: 1 / 1; width: 20vw;   }

.typo-row__img {
    object-fit: cover;
    width: 100%;
    height: 100%;
    display: block;
}

.typo-row__img.is--bw {
    filter: grayscale(0.6) contrast(0.9) brightness(0.9);
}

.typo-row__p {
    position: absolute;
    bottom: 1.5em;
    left: 50%;
    transform: translateX(-50%);
    white-space: nowrap;
    background: rgba(17, 16, 16, 0.4);
    -webkit-backdrop-filter: blur(1em);
    backdrop-filter: blur(1em);
    color: var(--white);
    padding: 0.25em 0.6em;
    font-family: 'Courier New', monospace;
    font-size: 0.7em;
    letter-spacing: 0.08em;
    opacity: 0.9;
    margin: 0;
}

@media (max-width: 991px) {
    .typo-row__media          { width: 52.5vw; }
    .typo-row__media.is--3-2  { width: 75vw;   }
    .typo-row__media.is--2-3  { width: 49.5vw; }
    .typo-row__media.is--1-1  { width: 60vw;   }
}

@media (hover: none) {
    .typo-row__media { display: none; }
}

@media (max-width: 767px) {
    .typo-row__unit { font-size: clamp(1rem, 3.5vh, 2rem); }
}

/* ═══════════════════════════════════════════════
   PAGE HEADER (shared)
   ═══════════════════════════════════════════════ */

.page-header {
    padding-top: calc(var(--nav-h) + var(--gap-96));
    padding-bottom: var(--gap-96);
    padding-inline: var(--gap-48);
    display: flex;
    flex-direction: column;
}

@media (max-width: 768px) {
    .page-header { padding-inline: var(--gap-24); }
}

.page-header__eyebrow {
    display: block;
    font-size: var(--text-12);
    letter-spacing: 0.25em;
    text-transform: uppercase;
    color: var(--muted);
    margin-bottom: var(--gap-24);
}

.page-header__headline {
    font-size: clamp(60px, 9vw, 144px);
    font-weight: 900;
    letter-spacing: -0.04em;
    line-height: 0.88;
}

.page-header__subtext {
    margin-top: var(--gap-24);
    font-size: var(--text-18);
    opacity: 0.45;
    max-width: 560px;
    line-height: 1.65;
}

/* ═══════════════════════════════════════════════
   PAGE: MUSIC
   ═══════════════════════════════════════════════ */

.releases {
    padding-block: var(--gap-96);
}

.releases__grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--gap-48);
}

@media (min-width: 768px)  { .releases__grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1280px) { .releases__grid { grid-template-columns: repeat(3, 1fr); } }

.release-card { display: flex; flex-direction: column; gap: var(--gap-24); }

.release-card__art {
    aspect-ratio: 1;
    overflow: hidden;
    background: rgba(255, 255, 255, 0.03);
}

.release-card__art img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: grayscale(0.5) contrast(0.9);
    transition: scale 0.6s var(--ease-out), filter 0.4s;
}

.release-card:hover .release-card__art img {
    scale: 1.04;
    filter: grayscale(0.2) contrast(0.95);
}

.release-card__info { display: flex; flex-direction: column; gap: var(--gap-12); }

.release-card__meta {
    display: flex;
    gap: var(--gap-12);
}

.release-card__type {
    font-size: var(--text-12);
    letter-spacing: 0.15em;
    text-transform: uppercase;
    opacity: 0.4;
}

.release-card__year {
    font-size: var(--text-12);
    opacity: 0.3;
}

.release-card__title {
    font-size: var(--text-36);
    font-weight: 700;
    letter-spacing: -0.03em;
    line-height: 1;
}

.release-card__desc {
    font-size: var(--text-16);
    opacity: 0.5;
    line-height: 1.6;
}

.release-card__links {
    display: flex;
    flex-wrap: wrap;
    gap: var(--gap-12);
    margin-top: var(--gap-6);
}

.release-link {
    display: inline-flex;
    align-items: center;
    gap: var(--gap-6);
    font-size: var(--text-12);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    padding: var(--gap-6) var(--gap-16);
    border: 1px solid var(--rule);
    opacity: 0.7;
    transition: opacity 0.2s, border-color 0.2s;
}

.release-link svg { width: 12px; height: 12px; flex-shrink: 0; }
.release-link:hover { opacity: 1; border-color: rgba(208, 201, 192, 0.3); }

/* ═══════════════════════════════════════════════
   PAGE: EVENTS
   ═══════════════════════════════════════════════ */

/* 6-column grid: Date | Venue | Location | Role | Doors | Actions
   --ev-gap must match .event-item__inner gap so headers align exactly */
.events-list {
    padding-bottom: var(--gap-96);
    --ev-cols: 140px 1fr minmax(110px, 160px) minmax(60px, 90px) 80px 160px;
    --ev-gap:  var(--gap-24);
}

.page-header--events { padding-bottom: var(--gap-48); }

/* ── Neon "LIVE" word ─────────────────────────── */
.neon-live {
    color: #ff2323;
    text-shadow:
        0 0 6px #ff2323,
        0 0 14px #ff2323,
        0 0 30px #ff1a1a,
        0 0 60px #ff0000,
        0 0 110px #ff0000;
    animation: neon-flicker 4s infinite;
}

@keyframes neon-flicker {
    0%, 18%, 20%, 50%, 70%, 72%, 100% {
        opacity: 1;
        text-shadow:
            0 0 6px #ff2323,
            0 0 14px #ff2323,
            0 0 30px #ff1a1a,
            0 0 60px #ff0000,
            0 0 110px #ff0000;
    }
    19% { opacity: 0.75; text-shadow: none; }
    51%, 71% { opacity: 0.88; }
}

/* ── Filter tabs ──────────────────────────────── */
.events-filter {
    display: flex;
    gap: 0;
    padding-inline: var(--gap-24);
    padding-bottom: var(--gap-24);
}

.events-filter__btn {
    font-size: var(--text-12);
    letter-spacing: 0.15em;
    text-transform: uppercase;
    padding: 0.35em 1em;
    border: 1px solid var(--rule);
    color: var(--fg);
    background: transparent;
    cursor: pointer;
    transition: border-color 0.2s, color 0.2s;
    opacity: 0.4;
}

.events-filter__btn + .events-filter__btn { margin-left: -1px; }
.events-filter__btn:first-child { border-radius: 2px 0 0 2px; }
.events-filter__btn:last-child  { border-radius: 0 2px 2px 0; }

.events-filter__btn.is--active {
    position: relative;
    z-index: 1;
    opacity: 1;
    border-color: rgba(208, 201, 192, 0.35);
}

/* ── Section label ────────────────────────────── */
.events-section-label {
    padding-inline: var(--gap-24);
    padding-bottom: var(--gap-16);
    font-size: var(--text-12);
    letter-spacing: 0.2em;
    text-transform: uppercase;
    opacity: 0.3;
    margin: 0;
}

/* ── Column headers ───────────────────────────── */
.event-cols-header {
    display: none;
}

@media (min-width: 768px) {
    .event-cols-header {
        display: grid;
        grid-template-columns: var(--ev-cols);
        gap: var(--ev-gap);
        align-items: center;
        padding-inline: var(--gap-24);
        padding-block: 0.6em;
        border-top: 1px solid var(--rule);
        border-bottom: 1px solid var(--rule);
    }
}

.event-cols-header__col {
    font-size: var(--text-12);
    letter-spacing: 0.15em;
    text-transform: uppercase;
    opacity: 0.2;
}

/* ── Event list ───────────────────────────────── */
.events-list__items {
    list-style: none;
    margin: 0;
    padding: 0;
    border-top: 1px solid var(--rule);
}

@media (min-width: 768px) {
    .events-list__items { border-top: none; }
}

/* Filtered: hidden attribute hides items */
.event-item[hidden] { display: none; }

.event-item {
    position: relative;
    z-index: 2;
    border-bottom: 1px solid var(--rule);
    transition: opacity 0.2s;
}

.event-item__inner {
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: center;
    gap: var(--gap-16);
    padding-block: clamp(1.2rem, 2.2vh, 1.8rem);
    padding-inline: var(--gap-24);
    position: relative;
    z-index: 350;
}

@media (min-width: 768px) {
    .event-item__inner {
        grid-template-columns: var(--ev-cols);
        gap: var(--ev-gap);
    }
}

.event-item__date {
    font-size: var(--text-16);
    opacity: 0.45;
    white-space: nowrap;
    transition: opacity 0.2s;
}

.event-item__venue {
    font-size: clamp(1rem, 1.3vw, 1.2rem);
    font-weight: 700;
    line-height: 1.15;
    transition: opacity 0.2s;
}

a.event-item__venue,
button.event-item__venue {
    color: inherit;
    text-decoration: none;
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    font: inherit;
    font-size: clamp(1rem, 1.3vw, 1.2rem);
    font-weight: 700;
    text-align: left;
}

a.event-item__venue:hover,
button.event-item__venue--archive:hover { text-decoration: underline; text-underline-offset: 0.2em; }

.event-item__location,
.event-item__detail,
.event-item__doors {
    font-size: var(--text-16);
    display: none;
    transition: opacity 0.2s;
}

.event-item__location { opacity: 0.5; }

.event-item__detail {
    font-size: var(--text-12);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    opacity: 0.3;
}

.event-item__doors {
    font-size: var(--text-12);
    opacity: 0.35;
    letter-spacing: 0.05em;
}

/* Brighter text on hovered row */
@media (hover: hover) and (min-width: 992px) {
    .event-item:hover .event-item__date     { opacity: 0.7; }
    .event-item:hover .event-item__venue    { opacity: 1; }
    .event-item:hover .event-item__location { opacity: 0.75; }
    .event-item:hover .event-item__detail   { opacity: 0.55; }
    .event-item:hover .event-item__doors    { opacity: 0.6; }
}

/* Meta wrapper is transparent on desktop so children sit in their own grid columns */
.event-item__meta { display: contents; }

@media (min-width: 768px) {
    .event-item__location,
    .event-item__detail,
    .event-item__doors { display: block; }

    .event-cols--hide-mobile { display: block; }
}

/* ── Actions column ───────────────────────────── */
.event-item__actions {
    display: flex;
    align-items: center;
    gap: var(--gap-16);
    justify-content: flex-end;
    position: relative;
    z-index: 400;
}

.event-item__tickets {
    display: inline-block;
    font-size: var(--text-12);
    letter-spacing: 0.12em;
    text-transform: uppercase;
    padding: 0.45em 1.2em;
    border: 1px solid rgba(208, 201, 192, 0.25);
    white-space: nowrap;
    line-height: 1.8;
    transition: border-color 0.2s;
}

.event-item__tickets:hover { border-color: rgba(208, 201, 192, 0.6); }

.event-item__door {
    font-size: var(--text-12);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    opacity: 0.5;
    white-space: nowrap;
}

.event-item__sold-out,
.event-item__free {
    font-size: var(--text-12);
    letter-spacing: 0.12em;
    text-transform: uppercase;
    opacity: 0.3;
    white-space: nowrap;
}

/* Instagram icon */
.event-item__ig {
    display: flex;
    align-items: center;
    color: var(--fg);
    opacity: 0.35;
    transition: opacity 0.2s;
}

.event-item__ig:hover { opacity: 0.75; }

.event-item__archive-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    background: none;
    border: none;
    padding: 0;
    color: var(--fg);
    opacity: 0.35;
    cursor: pointer;
    transition: opacity 0.2s;
}
.event-item__archive-btn svg { width: 1.1em; height: 1.1em; display: block; }
.event-item__archive-btn:hover { opacity: 0.75; }

/* ── Event archive modal ─────────────────────── */
.ev-modal {
    position: fixed;
    inset: 0;
    z-index: 850;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--gap-24);
    visibility: hidden;
    opacity: 0;
    pointer-events: none;
}

.ev-modal__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(17, 16, 16, 0.88);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    cursor: pointer;
}

.ev-modal__panel {
    position: relative;
    z-index: 1;
    background: var(--bg);
    width: min(860px, 100%);
    max-height: calc(100dvh - var(--gap-96));
    overflow-y: auto;
    overscroll-behavior: contain;
    border: 1px solid rgba(208, 201, 192, 0.1);
}

.ev-modal__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--gap-24);
    padding: var(--gap-24);
    border-bottom: 1px solid var(--rule);
    position: sticky;
    top: 0;
    background: var(--bg);
    z-index: 1;
}

.ev-modal__title {
    font-size: var(--text-24);
    font-weight: 700;
    letter-spacing: -0.03em;
    line-height: 1;
    margin: 0;
}

.ev-modal__meta {
    font-size: var(--text-12);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    opacity: 0.35;
    margin: var(--gap-6) 0 0;
}

.ev-modal__body {
    padding: var(--gap-32) var(--gap-32) var(--gap-48);
    display: flex;
    flex-direction: column;
    gap: var(--gap-32);
}

.ev-modal__notes {
    font-size: var(--text-16);
    line-height: 1.7;
    opacity: 0.65;
    margin: 0;
}

.ev-modal__video {
    position: relative;
    padding-bottom: 56.25%;
    height: 0;
    overflow: hidden;
    background: rgba(208, 201, 192, 0.04);
}
.ev-modal__video iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
}

.ev-modal__grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 2px;
}

.ev-modal__photo {
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    display: block;
    filter: grayscale(0.3) contrast(0.9);
    transition: filter 0.3s;
}
.ev-modal__photo:hover { filter: grayscale(0) contrast(1); }

@media (max-width: 600px) {
    .ev-modal__grid { grid-template-columns: repeat(2, 1fr); }
    .ev-modal__body { padding: var(--gap-24) var(--gap-16) var(--gap-32); }
}

.event-icon {
    width: 1.2em;
    height: 1.2em;
    display: block;
    color: var(--fg);
}

.event-icon path,
.event-icon circle,
.event-icon rect,
.event-icon polygon { fill: currentColor; stroke: none; }

/* Dim siblings on hover */
@media (hover: hover) and (min-width: 992px) {
    body:has(.event-item:hover) .event-item:not(:hover) { opacity: 0.35; }
}

.event-item--past { opacity: 0.4; }

/* ── Poster preload + reveal ──────────────────── */
.event-item__poster {
    position: absolute;
    left: -9999px;
    top: 0;
    width: 1px;
    height: 1px;
    overflow: hidden;
    pointer-events: none;
}

/* ── Follower cursor ──────────────────────────── */
.event-follower {
    position: fixed;
    inset: 0% auto auto 0%;
    pointer-events: none;
    z-index: 1;
    width: 18em;
    border-radius: 0.4em;
    overflow: hidden;
}

.event-follower__inner {
    width: 100%;
    position: relative;
    opacity: 0;
    transform: scale(0);
    transform-origin: center center;
    overflow: hidden;
    transition: opacity 0.1s ease, transform 0.55s cubic-bezier(0.65, 0.1, 0, 1);
}

body:has([data-follower-collection]:hover) .event-follower__inner {
    opacity: 1;
    transform: scale(1);
}

/* Cloned visuals — reset the hidden-preload positioning */
.event-follower [data-follower-visual] {
    display: block;
    position: relative;
    left: auto;
    top: auto;
    width: 100%;
    height: auto;
    overflow: hidden;
    line-height: 0;
    pointer-events: none;
}

.event-item__poster-img {
    width: 100%;
    height: auto;
    display: block;
    filter: grayscale(0.25) contrast(0.9);
}

/* ── Mobile: always-visible poster card ───────── */
@media (max-width: 767px) {
    .event-follower { display: none; }

    /* Card is a flex row: poster on left, info on right */
    .event-item {
        display: flex;
        align-items: stretch;
        gap: var(--gap-12);
        padding-inline: var(--gap-16);
    }

    /* Pull poster out of the hidden preload position and place left */
    .event-item__poster {
        position: static;
        left: auto;
        top: auto;
        width: 110px;
        height: auto;
        overflow: hidden;
        flex-shrink: 0;
        align-self: stretch;
        pointer-events: auto;
        border-right: 1px solid var(--rule);
    }

    .event-item__poster-img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        object-position: center top;
        display: block;
        filter: grayscale(0.15) contrast(0.9);
    }

    /* Inner: column stack of all fields */
    .event-item__inner {
        flex: 1;
        display: flex;
        flex-direction: column;
        align-items: flex-start;
        gap: 0.22rem;
        padding-block: var(--gap-12);
        min-width: 0;
    }

    /* Show all fields */
    .event-item__location,
    .event-item__detail,
    .event-item__doors { display: block; }

    .event-item__venue { font-size: 1rem; margin-bottom: 0.1rem; }
    .event-item__date  { font-size: var(--text-12); }

    /* Meta: role + doors on one line */
    .event-item__meta {
        display: flex;
        gap: 0.5em;
        align-items: baseline;
    }

    .event-item__detail,
    .event-item__doors { font-size: var(--text-12); }

    /* Actions left-aligned, pushed down with auto top margin */
    .event-item__actions {
        justify-content: flex-start;
        margin-top: auto;
        padding-top: var(--gap-6);
    }
}

/* ═══════════════════════════════════════════════
   PAGE: CONTACT
   ═══════════════════════════════════════════════ */

.contact-layout {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--gap-96);
    padding-block: var(--gap-144);
}

@media (min-width: 1024px) {
    .contact-layout { grid-template-columns: 1fr 1fr; gap: var(--gap-144); }
    .contact-layout__left { position: sticky; top: 144px; align-self: flex-start; }
}

.contact-layout__subtext {
    margin-top: var(--gap-24);
    font-size: var(--text-18);
    opacity: 0.5;
    max-width: 480px;
    line-height: 1.7;
}

.contact-layout__details {
    margin-top: var(--gap-48);
    display: flex;
    flex-direction: column;
    gap: var(--gap-24);
}

/* ── Copy email button ── */
.copy-email-wrapper { display: flex; flex-direction: column; gap: 0.4em; }
.copy-email-button {
    display: inline-flex;
    align-items: center;
    gap: 0.75em;
    background: transparent;
    border: 1px solid var(--rule);
    padding: 0.55em 0.85em 0.55em 0.55em;
    cursor: pointer;
    color: var(--fg);
    transition: border-color 0.2s;
}
.copy-email-button:focus { outline: none; }
.copy-email-button:focus-visible { outline: 1px solid var(--fg); outline-offset: 2px; }
.copy-email-icon__wrap {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 2em;
    height: 2em;
    background: rgba(255,255,255,0.04);
    color: var(--fg);
    transition: background 0.2s, color 0.2s;
}
.copy-email-text__wrap {
    display: flex;
    flex-direction: column;
    height: 1.2em;
    font-size: var(--text-14, 14px);
    line-height: 1.2;
    overflow: hidden;
}
.copy-email-text__el {
    white-space: nowrap;
    font-size: 1em;
    transition: transform 0.45s cubic-bezier(0.65, 0, 0, 1);
}
@media (hover: hover) {
    .copy-email-button:hover { border-color: rgba(255,255,255,0.4); }
    .copy-email-button:hover .copy-email-text__el { transform: translateY(-100%); }
}
.copy-email-button:focus .copy-email-text__el { transform: translateY(-100%); }
[data-copy-button="copied"] .copy-email-icon__wrap { background: rgba(80,200,50,0.12) !important; color: #7fff20 !important; }
[data-copy-button="copied"] .copy-email-text__el { transform: translateY(-200%) !important; }

.contact-layout__social {
    display: flex;
    gap: var(--gap-24);
}

.contact-layout__social a {
    font-size: var(--text-12);
    letter-spacing: 0.15em;
    text-transform: uppercase;
    opacity: 0.3;
    transition: opacity 0.2s;
}

.contact-layout__social a:hover { opacity: 0.8; }

.contact-layout__form-placeholder {
    padding: var(--gap-48);
    border: 1px solid var(--rule);
    opacity: 0.4;
}

.contact-image {
    margin-top: var(--gap-96);
    overflow: hidden;
    position: relative;
    height: clamp(200px, 30vw, 500px);
}
.contact-image img {
    position: absolute;
    left: 0;
    width: 100%;
    height: 130%;
    top: -15%;
    object-fit: cover;
    filter: grayscale(0.6) contrast(0.85);
    will-change: transform;
    display: block;
}

/* ── Gravity Forms reset ────────────────────────── */
.gform_fields { display: flex; flex-direction: column; gap: var(--gap-24); }

.gfield label {
    display: block;
    font-size: var(--text-12);
    letter-spacing: 0.12em;
    text-transform: uppercase;
    opacity: 0.4;
    margin-bottom: var(--gap-6);
}

.gform-theme--foundation .gfield .ginput_password, .gform-theme--foundation .gfield input, .gform-theme--foundation .gfield select {
    padding-bottom: 0px !important;
}

.gfield input,
.gfield textarea,
.gfield select {
    width: 100%;
    background: transparent;
    border: none;
    border-bottom: 1px solid var(--rule);
    color: var(--fg);
    font-family: var(--sans);
    font-size: var(--text-18);
    padding: var(--gap-12) 0;
    transition: border-color 0.2s;
    outline: none;
}

.gfield select {
    appearance: none;
    -webkit-appearance: none;
    min-height: 52px;
    cursor: pointer;
}

.gfield input:focus,
.gfield textarea:focus { border-color: rgba(208, 201, 192, 0.4); }
.gfield textarea { resize: vertical; min-height: 120px; }

.gform_button {
    display: inline-block;
    font-size: var(--text-12);
    font-weight: 700;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    padding: var(--gap-16) var(--gap-48);
    border: 1px solid rgba(208, 201, 192, 0.3);
    color: var(--fg);
    cursor: pointer;
    transition: border-color 0.2s, opacity 0.2s;
    margin-top: var(--gap-24);
}

.gform_button:hover { border-color: rgba(208, 201, 192, 0.7); }

/* ═══════════════════════════════════════════════
   BLOG / ARCHIVE
   ═══════════════════════════════════════════════ */

.archive-grid { padding-block: var(--gap-48) var(--gap-144); }

.posts-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--gap-48);
}

@media (min-width: 768px)  { .posts-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1280px) { .posts-grid { grid-template-columns: repeat(3, 1fr); } }

.post-card { display: flex; flex-direction: column; gap: var(--gap-16); }

.post-card__thumb {
    display: block;
    aspect-ratio: 16 / 10;
    overflow: hidden;
    background: rgba(255, 255, 255, 0.03);
}

.post-card__thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: grayscale(0.5) contrast(0.9);
    transition: scale 0.5s var(--ease-out);
}

.post-card:hover .post-card__thumb img { scale: 1.04; }

.post-card__body { display: flex; flex-direction: column; gap: var(--gap-12); }

.post-card__meta time {
    font-size: var(--text-12);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    opacity: 0.3;
}

.post-card__title {
    font-size: var(--text-24);
    font-weight: 700;
    letter-spacing: -0.02em;
    line-height: 1.1;
}

.post-card__title a { transition: opacity 0.2s; }
.post-card__title a:hover { opacity: 0.7; }

.post-card__excerpt { font-size: var(--text-16); opacity: 0.45; line-height: 1.6; }

.post-card__read {
    font-size: var(--text-12);
    letter-spacing: 0.12em;
    text-transform: uppercase;
    opacity: 0.4;
    transition: opacity 0.2s;
}

.post-card__read:hover { opacity: 0.8; }

/* ── Single Post ────────────────────────────────── */
.post-header {
    padding-top: calc(var(--nav-h) + var(--gap-96));
    padding-bottom: var(--gap-48);
    max-width: 1080px;
    margin-inline: auto;
    padding-inline: var(--gap-48);
}

.post-header__meta {
    display: flex;
    align-items: center;
    gap: var(--gap-24);
    margin-bottom: var(--gap-24);
}

.post-header__meta time,
.post-header__readtime,
.post-header__back {
    font-size: var(--text-12);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    opacity: 0.3;
    transition: opacity 0.2s;
}

.post-header__back { margin-left: auto; }
.post-header__back:hover { opacity: 0.7; }

.post-header__title {
    font-size: var(--text-96);
    font-weight: 900;
    letter-spacing: -0.04em;
    line-height: 0.9;
}

.post-header__subtitle {
    margin-top: var(--gap-24);
    font-size: var(--text-24);
    opacity: 0.4;
}

/* ── Post-width alignment helper ──────────────── */
.post-width {
    width: 100%;
    max-width: 1080px;
    margin-inline: auto;
    padding-inline: var(--gap-48);
}
@media (max-width: 860px) {
    .post-width { padding-inline: var(--gap-24); }
}

/* ── Post layout: TOC sidebar + article ───────── */
.post-layout {
    display: flex;
    align-items: flex-start;
    gap: var(--gap-96);
    max-width: 1080px;
    margin-inline: auto;
    padding-inline: var(--gap-48);
    padding-top: var(--gap-48);
    padding-bottom: 0;
}

.post-toc {
    position: sticky;
    top: calc(var(--nav-h) + var(--gap-48));
    align-self: flex-start;
    width: 190px;
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    gap: var(--gap-12);
}

.post-toc__label {
    font-size: 10px;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    opacity: 0.25;
    margin: 0;
}

.post-toc__list {
    display: flex;
    flex-direction: column;
    width: 100%;
}

.post-toc__link {
    font-size: var(--text-12);
    color: var(--fg);
    opacity: 0.25;
    text-decoration: none;
    padding: 0.4em 0.5em 0.4em 1em;
    border-left: 1px solid var(--rule);
    transition: opacity 0.2s, border-color 0.2s;
    line-height: 1.4;
}

.post-toc__link[data-toc-depth="3"] {
    padding-left: 1.75em;
    font-size: 11px;
}

.post-toc__link[data-toc-status="active"] {
    opacity: 1;
    border-left-color: var(--fg);
}

.post-toc__link:hover { opacity: 0.65; }

@media (max-width: 860px) {
    .post-layout {
        flex-direction: column;
        gap: var(--gap-48);
        padding-inline: var(--gap-24);
    }
    .post-toc {
        position: relative;
        top: 0;
        width: 100%;
    }
}

/* ── 1:1 hero image ────────────────────────────── */
.post-hero {
    margin: 0 0 var(--gap-48);
    overflow: hidden;
    aspect-ratio: 1 / 1;
    max-width: 520px;
    border: 1px solid var(--rule);
}

.post-hero img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: grayscale(0.4) contrast(0.9);
    display: block;
    transition: transform 0.6s var(--ease-out);
}

.post-hero:hover img { transform: scale(1.02); }

/* ── Article column ────────────────────────────── */
.post-body {
    flex: 1;
    min-width: 0;
    padding-bottom: var(--gap-96);
}

.post-content { font-size: var(--text-18); line-height: 1.8; opacity: 0.85; }
.post-content p     { margin-bottom: var(--gap-24); }
.post-content h2 {
    font-size: var(--text-48);
    font-weight: 900;
    letter-spacing: -0.035em;
    line-height: 1;
    margin-block: var(--gap-72) var(--gap-24);
    padding-top: var(--gap-48);
    border-top: 1px solid var(--rule);
    opacity: 1;
}
.post-content h3 {
    font-size: var(--text-24);
    font-weight: 700;
    letter-spacing: -0.02em;
    margin-block: var(--gap-48) var(--gap-16);
    opacity: 1;
}
.post-content img   { margin-block: var(--gap-48); max-width: 100%; display: block; }
.post-content figure { margin-block: var(--gap-48); }
.post-content figcaption {
    font-size: var(--text-12);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    opacity: 0.35;
    margin-top: var(--gap-12);
}
.post-content a     { opacity: 0.7; text-decoration: underline; text-underline-offset: 3px; transition: opacity 0.2s; }
.post-content a:hover { opacity: 1; }
.post-content ul, .post-content ol { padding-left: var(--gap-24); margin-bottom: var(--gap-24); }
.post-content li    { margin-bottom: var(--gap-6); }
.post-content blockquote {
    border-left: 2px solid var(--fg);
    padding: var(--gap-24) var(--gap-32);
    margin-block: var(--gap-48);
    font-size: var(--text-24);
    font-weight: 400;
    line-height: 1.4;
    opacity: 0.55;
    font-style: italic;
}
.post-content code {
    font-family: 'Courier New', Courier, monospace;
    font-size: 0.875em;
    background: rgba(255, 255, 255, 0.06);
    border: 1px solid var(--rule);
    border-radius: 3px;
    padding: 0.1em 0.45em 0.15em;
    display: inline-block;
}
.post-content pre {
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid var(--rule);
    border-radius: 4px;
    padding: var(--gap-24);
    overflow-x: auto;
    margin-block: var(--gap-48);
    font-size: var(--text-14);
    line-height: 1.6;
}
.post-content hr {
    border: none;
    border-top: 1px solid var(--rule);
    margin-block: var(--gap-72);
}

.post-nav {
    padding-block: var(--gap-96);
    border-top: 1px solid var(--rule);
    max-width: 1080px;
    margin-inline: auto;
    padding-inline: var(--gap-48);
}
@media (max-width: 860px) {
    .post-header, .post-nav { padding-inline: var(--gap-24); }
}

.post-nav__inner {
    display: flex;
    justify-content: space-between;
    gap: var(--gap-24);
}

.post-nav__prev,
.post-nav__next {
    display: flex;
    align-items: center;
    gap: var(--gap-12);
    font-size: var(--text-16);
    opacity: 0.35;
    transition: opacity 0.2s;
    max-width: 45%;
}

.post-nav__prev:hover,
.post-nav__next:hover { opacity: 0.8; }

/* ── Pagination ──────────────────────────────────── */
.pagination { margin-top: var(--gap-96); text-align: center; }
.pagination .nav-links { display: flex; align-items: center; justify-content: center; gap: var(--gap-12); }

.pagination a,
.pagination .current {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    font-size: var(--text-12);
    border: 1px solid var(--rule);
    transition: border-color 0.2s, opacity 0.2s;
}

.pagination a:hover { border-color: rgba(208, 201, 192, 0.3); opacity: 0.8; }
.pagination .current { border-color: rgba(208, 201, 192, 0.3); opacity: 0.8; }

/* ═══════════════════════════════════════════════
   FOOTER
   ═══════════════════════════════════════════════ */

.footer {
    border-top: 1px solid var(--rule);
    padding-top: var(--gap-48);
    padding-bottom: 0;
}

/* Full-width wordmark */
.footer__wordmark-wrap {
    padding-inline: var(--gap-24);
    padding-bottom: var(--gap-24);
}

.footer__wordmark {
    display: inline-block;
    white-space: nowrap;
    font-weight: 900;
    letter-spacing: -0.04em;
    line-height: 0.9;
    text-transform: uppercase;
    opacity: 0.85;
    margin: 0;
}

.footer__char {
    display: inline-block;
    cursor: default;
    will-change: transform, opacity;
}

/* Bottom bar: nav | social | copyright */
.footer__bottom-bar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: var(--gap-16);
    padding-inline: var(--gap-24);
    padding-block: var(--gap-24) var(--gap-48);
    border-top: 1px solid var(--rule);
}

.footer__menu {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    gap: var(--gap-24);
}

.footer__menu a { font-size: var(--text-12); letter-spacing: 0.1em; text-transform: uppercase; opacity: 0.3; transition: opacity 0.2s; }
.footer__menu a:hover { opacity: 0.7; }

.footer__social { display: flex; gap: var(--gap-16); align-items: center; }

.footer__social-link {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    opacity: 0.3;
    transition: opacity 0.2s;
}

.footer__social-link svg { width: 16px; height: 16px; }
.footer__social-link:hover { opacity: 0.7; }

.footer__copyright {
    font-size: var(--text-12);
    opacity: 0.2;
    letter-spacing: 0.05em;
}

/* ── Utility ────────────────────────────────────── */
.archive-empty {
    text-align: center;
    padding-block: var(--gap-144);
    opacity: 0.25;
    font-size: var(--text-24);
    font-weight: 700;
}

/* ═══════════════════════════════════════════════
   PAGE: MUSIC — collection filter tabs
   ═══════════════════════════════════════════════ */

.music-filter {
    display: flex;
    flex-wrap: wrap;
    gap: 0;
    padding-inline: var(--gap-24);
    padding-bottom: var(--gap-48);
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
}
.music-filter::-webkit-scrollbar { display: none; }

.music-filter__btn {
    display: flex;
    align-items: center;
    gap: 0.5em;
    font-size: var(--text-12);
    letter-spacing: 0.12em;
    text-transform: uppercase;
    padding: 0.35em 1em;
    border: 1px solid var(--rule);
    color: var(--fg);
    background: transparent;
    cursor: pointer;
    transition: border-color 0.2s, opacity 0.2s;
    opacity: 0.4;
    white-space: nowrap;
    flex-shrink: 0;
}
.music-filter__btn + .music-filter__btn { margin-left: -1px; }
.music-filter__btn:first-child { border-radius: 2px 0 0 2px; }
.music-filter__btn:last-child  { border-radius: 0 2px 2px 2px; }
.music-filter__btn:only-child  { border-radius: 2px; }

.music-filter__btn.is--active {
    position: relative;
    z-index: 1;
    opacity: 1;
    border-color: rgba(208, 201, 192, 0.35);
}

.music-filter__meta {
    font-size: var(--text-10);
    opacity: 0.45;
    letter-spacing: 0.08em;
}

.music-filter__btn--locked {
    color: #ff2323;
    border-color: rgba(185, 58, 58, 0.3);
    text-shadow: 0 0 8px rgba(255, 35, 35, 0.4);
}
.music-filter__btn--locked:hover,
.music-filter__btn--locked.is--active {
    border-color: rgba(185, 58, 58, 0.6);
    text-shadow: 0 0 12px rgba(255, 35, 35, 0.7);
    opacity: 1;
}

/* ── Music page unlock CTA ─────────────────────── */
.music-unlock-cta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--gap-24);
    padding: var(--gap-48) var(--gap-48);
    border-top: 1px solid var(--rule);
    text-decoration: none;
    color: var(--fg);
    transition: background 0.3s;
}
.music-unlock-cta:hover { background: rgba(208, 201, 192, 0.04); }

.music-unlock-cta__label {
    font-size: clamp(var(--text-18), 3vw, var(--text-32));
    font-weight: 700;
    letter-spacing: -0.02em;
    opacity: 0.55;
    transition: opacity 0.2s;
}
.music-unlock-cta:hover .music-unlock-cta__label { opacity: 1; }

.music-unlock-cta__arrow {
    width: clamp(32px, 4vw, 56px);
    height: clamp(32px, 4vw, 56px);
    flex-shrink: 0;
    opacity: 0.35;
    transition: opacity 0.2s, transform 0.3s var(--ease-out);
}
.music-unlock-cta:hover .music-unlock-cta__arrow {
    opacity: 1;
    transform: translateX(6px);
}

@media (max-width: 767px) {
    .music-unlock-cta { padding: var(--gap-32) var(--gap-16); }
}

/* ── Track info modal ─────────────────────────────── */
.track-modal {
    position: fixed;
    inset: 0;
    z-index: 850;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--gap-24);
    visibility: hidden;
    opacity: 0;
    pointer-events: none;
}

.track-modal__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(17, 16, 16, 0.88);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    cursor: pointer;
}

.track-modal__panel {
    position: relative;
    z-index: 1;
    background: var(--bg);
    width: min(680px, 100%);
    max-height: calc(100dvh - var(--gap-96));
    overflow-y: auto;
    overscroll-behavior: contain;
    border: 1px solid rgba(208, 201, 192, 0.1);
}

.track-modal__header {
    display: grid;
    grid-template-columns: 64px 1fr auto;
    align-items: center;
    gap: var(--gap-24);
    padding: var(--gap-24);
    border-bottom: 1px solid var(--rule);
    position: sticky;
    top: 0;
    background: var(--bg);
    z-index: 1;
}

.track-modal__art {
    width: 64px;
    height: 64px;
    object-fit: cover;
    display: block;
    filter: grayscale(0.4) contrast(0.9);
    flex-shrink: 0;
}

.track-modal__title-wrap { min-width: 0; }

.track-modal__title {
    font-size: var(--text-24);
    font-weight: 700;
    letter-spacing: -0.03em;
    line-height: 1;
    margin: 0;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

.track-modal__meta-line {
    font-size: var(--text-12);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    opacity: 0.35;
    margin: var(--gap-6) 0 0;
}

.track-modal__close {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    flex-shrink: 0;
    border: 1px solid var(--rule);
    color: var(--fg);
    opacity: 0.5;
    transition: opacity 0.2s;
    cursor: pointer;
}
.track-modal__close:hover { opacity: 1; }
.track-modal__close svg { width: 14px; height: 14px; }

.track-modal__body {
    padding: var(--gap-48) var(--gap-24);
    display: flex;
    flex-direction: column;
    gap: var(--gap-48);
}

.track-modal__section-label {
    font-size: var(--text-12);
    letter-spacing: 0.2em;
    text-transform: uppercase;
    opacity: 0.3;
    margin: 0 0 var(--gap-16);
}

.track-modal__lyrics {
    font-family: 'Courier New', monospace;
    font-size: var(--text-16);
    line-height: 2;
    white-space: pre-wrap;
    opacity: 0.7;
    margin: 0;
}

.track-modal__list {
    list-style: none;
    margin: 0; padding: 0;
    display: flex; flex-direction: column; gap: var(--gap-12);
}
.track-modal__list li { font-size: var(--text-16); opacity: 0.65; line-height: 1.4; }

.track-modal__text {
    font-size: var(--text-16);
    opacity: 0.65;
    line-height: 1.7;
    margin: 0;
    white-space: pre-wrap;
}

.track-modal__images {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: var(--gap-6);
}
.track-modal__image {
    width: 100%; aspect-ratio: 1; object-fit: cover; display: block;
    filter: grayscale(0.3) contrast(0.9);
    cursor: zoom-in;
    transition: filter 0.2s, opacity 0.2s;
}

.track-modal__image:hover { filter: grayscale(0) contrast(1); opacity: 0.9; }

/* ── Session image gallery lightbox ─────────── */
.mg-gallery {
    position: fixed;
    inset: 0;
    z-index: 10500;
    background: rgba(0, 0, 0, 0.96);
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.22s ease;
}

.mg-gallery.is--open {
    opacity: 1;
    pointer-events: auto;
}

.mg-gallery__img {
    max-width: min(90vw, 1200px);
    max-height: 88dvh;
    width: auto;
    height: auto;
    object-fit: contain;
    display: block;
    transition: opacity 0.12s ease;
    user-select: none;
    pointer-events: none;
}

.mg-gallery__img.is--fading { opacity: 0; }

.mg-gallery__nav {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    background: none;
    border: none;
    color: rgba(255, 255, 255, 0.4);
    cursor: pointer;
    padding: 1.25rem;
    transition: color 0.15s;
    line-height: 1;
}

.mg-gallery__nav:hover { color: #fff; }
.mg-gallery__prev { left: clamp(0.25rem, 2vw, 2rem); }
.mg-gallery__next { right: clamp(0.25rem, 2vw, 2rem); }

.mg-gallery__close {
    position: absolute;
    top: 1rem;
    right: 1rem;
    background: none;
    border: none;
    color: rgba(255, 255, 255, 0.4);
    cursor: pointer;
    padding: 0.5rem;
    transition: color 0.15s;
    line-height: 1;
}

.mg-gallery__close:hover { color: #fff; }

.mg-gallery__counter {
    position: absolute;
    bottom: 1.5rem;
    left: 50%;
    transform: translateX(-50%);
    font-size: var(--text-12);
    letter-spacing: 0.1em;
    color: rgba(255, 255, 255, 0.3);
    pointer-events: none;
    white-space: nowrap;
}

/* ── YouTube video modal ──────────────────────── */
.mg-yt-modal {
    position: fixed;
    inset: 0;
    z-index: 12000;
    background: rgba(0, 0, 0, 0.94);
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.22s ease;
    padding: var(--gap-24);
}

.mg-yt-modal.is--open {
    opacity: 1;
    pointer-events: auto;
}

.mg-yt-modal__inner {
    position: relative;
    width: 100%;
    max-width: 1000px;
}

.mg-yt-modal__close {
    position: absolute;
    top: -2.75rem;
    right: 0;
    background: none;
    border: none;
    color: rgba(255, 255, 255, 0.45);
    cursor: pointer;
    padding: 0.4rem;
    transition: color 0.15s;
    line-height: 1;
}

.mg-yt-modal__close:hover { color: #fff; }

.mg-yt-modal__ratio {
    position: relative;
    padding-bottom: 56.25%;
    height: 0;
    border-radius: 4px;
    overflow: hidden;
    background: #000;
}

.mg-yt-modal__iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
}

/* ═══════════════════════════════════════════════
   PAGE: MUSIC — audio track list
   ═══════════════════════════════════════════════ */

/* Search bar */
.music-search {
    border-bottom: 1px solid var(--rule);
}

.music-search__input {
    display: block;
    width: 100%;
    background: none;
    border: none;
    outline: none;
    color: var(--fg);
    font-family: inherit;
    font-size: clamp(var(--text-16), 2vw, var(--text-24));
    font-weight: 500;
    letter-spacing: -0.01em;
    padding: var(--gap-16) var(--gap-24);
    caret-color: var(--fg);
    transition: opacity 0.2s;
}

.music-search__input::placeholder { opacity: 0.25; }
.music-search__input:focus         { opacity: 1; }

.music-noresults {
    padding: var(--gap-48) var(--gap-24);
    font-size: var(--text-14);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    opacity: 0.3;
}

.music-list {
    padding-bottom: var(--gap-144);
}

.track-item {
    position: relative;
    isolation: isolate;
    display: grid;
    grid-template-columns: clamp(80px, 12vw, 180px) 1fr auto;
    align-items: center;
    column-gap: var(--gap-24);
    padding-block: var(--gap-24);
    padding-inline: var(--gap-24);
    border-bottom: 1px solid var(--rule);
    cursor: pointer;
    transition: background 0.3s var(--ease-out);
}

.track-viz {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    z-index: -1;
    opacity: 0;
    transition: opacity 0.8s ease;
}

.track-viz.is--active { opacity: 1; }

.track-item:first-child { border-top: 1px solid var(--rule); }

.track-item:hover {
    background: rgba(208, 201, 192, 0.03);
}

.track-item[data-playing] {
    background: rgba(208, 201, 192, 0.05);
}

.track-item__art {
    aspect-ratio: 1;
    overflow: hidden;
    flex-shrink: 0;
}

.track-item__img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: grayscale(0.5) contrast(0.9);
    transition: filter 0.4s var(--ease-out), scale 0.4s var(--ease-out);
    display: block;
}

.track-item:hover .track-item__img,
.track-item[data-playing] .track-item__img {
    filter: grayscale(0.1) contrast(0.95);
    scale: 1.03;
}

.track-item__body {
    display: flex;
    flex-direction: column;
    gap: var(--gap-6);
    min-width: 0;
}

.track-item__title {
    font-size: clamp(var(--text-24), 3.5vw, var(--text-60));
    font-weight: 900;
    letter-spacing: -0.04em;
    line-height: 0.95;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    transition: opacity 0.2s;
}

.track-item[data-playing] .track-item__title { opacity: 1; }

.track-item__meta {
    font-size: var(--text-12);
    letter-spacing: 0.12em;
    text-transform: uppercase;
    opacity: 0.35;
}

.track-item__stream {
    font-size: var(--text-12);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    opacity: 0.3;
    transition: opacity 0.2s;
    margin-top: var(--gap-6);
    align-self: flex-start;
}

.track-item__stream:hover { opacity: 0.8; }

/* Locked track */
.track-item--locked { opacity: 0.5; }
.track-item--locked:hover { opacity: 1; }

.track-item__unlock-cta {
    font-size: var(--text-12);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    margin-top: var(--gap-6);
    align-self: flex-start;
    text-decoration: none;
    color: #ff2323;
    text-shadow:
        0 0 6px #ff2323,
        0 0 14px #ff2323,
        0 0 30px #ff1a1a,
        0 0 60px #ff0000;
    animation: neon-flicker 4s infinite;
}

.track-item__unlocked-badge {
    display: inline-block;
    margin-top: var(--gap-6);
    align-self: flex-start;
    font-size: var(--text-12);
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #ff2323;
    background: rgba(185, 58, 58, 0.15);
    border: 1px solid rgba(185, 58, 58, 0.35);
    padding: 0.2em 0.6em;
    text-shadow:
        0 0 6px #ff2323,
        0 0 14px #ff2323,
        0 0 30px #ff1a1a;
}

.track-item__lock {
    display: flex;
    align-items: center;
    justify-content: center;
    width: clamp(48px, 5vw, 80px);
    height: clamp(48px, 5vw, 80px);
    flex-shrink: 0;
    background: none;
    border: 1px solid var(--rule);
    color: var(--fg);
    opacity: 0.25;
    transition: opacity 0.2s, border-color 0.2s;
    text-decoration: none;
}
.track-item--locked:hover .track-item__lock {
    opacity: 0.7;
    border-color: rgba(208, 201, 192, 0.3);
}
.track-item__lock svg { width: 38%; height: 38%; }

/* Times — inside the body column, below meta */
.track-item__times {
    display: flex;
    align-items: center;
    gap: 4px;
    font-family: monospace;
    font-size: var(--text-12);
    letter-spacing: 0.05em;
    opacity: 0.3;
    transition: opacity 0.2s;
    white-space: nowrap;
}

.track-item[data-track-state] .track-item__times { opacity: 0.65; }
.track-item__time-sep { opacity: 0.5; }

/* Player — absolutely pinned to bottom edge, full width, zero gap */
.track-item__player {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
}

.track-item__timeline {
    display: block;
    cursor: pointer;
    padding-top: 10px;
    padding-bottom: 0;
}

.track-item__tl-rail {
    position: relative;
    height: 1px;
    background: rgba(208, 201, 192, 0.15);
    transition: height 0.2s var(--ease-out), background 0.2s;
}

.track-item__timeline:hover .track-item__tl-rail,
.track-item[data-track-state] .track-item__tl-rail {
    height: 2px;
    background: rgba(208, 201, 192, 0.25);
}

.track-item__tl-fill {
    position: absolute;
    left: 0;
    top: 0;
    height: 100%;
    width: 0%;
    background: var(--fg);
    pointer-events: none;
}

.track-item__tl-thumb {
    position: absolute;
    top: 50%;
    left: 0%;
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--fg);
    transform: translate(-50%, -50%);
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.2s, transform 0.15s;
}

.track-item__timeline:hover .track-item__tl-thumb,
.track-item[data-track-state] .track-item__tl-thumb {
    opacity: 1;
}

.track-item__timeline:hover .track-item__tl-thumb {
    transform: translate(-50%, -50%) scale(1.3);
}

/* Actions wrapper — info icon + play button */
.track-item__actions {
    display: flex;
    align-items: center;
    gap: var(--gap-12);
    align-self: center;
    flex-shrink: 0;
}

/* Info icon button */
.track-item__info-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    width: clamp(48px, 5vw, 80px);
    height: clamp(48px, 5vw, 80px);
    flex-shrink: 0;
    background: none;
    border: 1px solid var(--rule);
    color: var(--fg);
    opacity: 0.35;
    transition: opacity 0.2s, border-color 0.2s;
    cursor: pointer;
}
.track-item__info-btn svg { width: 40%; height: 40%; }
.track-item:hover .track-item__info-btn,
.track-item[data-track-state] .track-item__info-btn {
    opacity: 0.7;
    border-color: rgba(208, 201, 192, 0.3);
}
.track-item__info-btn:hover { opacity: 1 !important; }

/* Play/pause button */
.track-item__play {
    display: flex;
    align-items: center;
    justify-content: center;
    width: clamp(48px, 5vw, 80px);
    height: clamp(48px, 5vw, 80px);
    flex-shrink: 0;
    background: none;
    border: 1px solid var(--rule);
    color: var(--fg);
    opacity: 0.35;
    transition: opacity 0.2s, border-color 0.2s;
    cursor: pointer;
}

.track-item:hover .track-item__play,
.track-item[data-track-state] .track-item__play {
    opacity: 1;
    border-color: rgba(208, 201, 192, 0.3);
}

.track-item__play svg { width: 40%; height: 40%; }

.track-item--no-audio .track-item__play { display: none; }

.track-item__video-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    width: clamp(48px, 5vw, 80px);
    height: clamp(48px, 5vw, 80px);
    flex-shrink: 0;
    background: none;
    border: 1px solid var(--rule);
    color: var(--fg);
    opacity: 0.35;
    transition: opacity 0.2s, border-color 0.2s;
    cursor: pointer;
}

.track-item:hover .track-item__video-btn { opacity: 1; border-color: rgba(208, 201, 192, 0.3); }
.track-item__video-btn:hover { opacity: 1 !important; }
.track-item__video-btn svg { width: 44%; height: 44%; }

@media (max-width: 768px) {
    .track-item {
        grid-template-columns: clamp(64px, 20vw, 100px) 1fr auto;
        gap: var(--gap-16);
        padding-inline: var(--gap-16);
    }

    .track-item__title {
        white-space: normal;
        line-height: 1;
    }
}

/* ═══════════════════════════════════════════════
   PAGE: ARCHIVE — infinite draggable grid
   ═══════════════════════════════════════════════ */

.infinite-grid {
    touch-action: none;
    width: 100%;
    height: 100svh;
    position: relative;
    overflow: clip;
    cursor: grab;
    transition: opacity 0.5s ease;
    opacity: 1;
}

.infinite-grid[data-infinite-grid-status="loading"] { opacity: 0; }
.infinite-grid[data-infinite-grid-status="dragging"] { cursor: grabbing; }

.infinite-grid__collection {
    will-change: transform;
    width: 100%;
    height: 100%;
    position: absolute;
}

.infinite-grid__list {
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0;
    left: 0;
}

.infinite-grid__item {
    aspect-ratio: 1;
    will-change: transform;
    backface-visibility: hidden;
    justify-content: center;
    align-items: center;
    width: 13em;
    padding: 2.25em;
    font-size: clamp(1.5em, 2vw, 3em);
    display: flex;
    position: absolute;
    top: 0;
    left: 0;
}

.infinite-grid__card {
    -webkit-user-select: none;
    user-select: none;
    will-change: transform;
    backface-visibility: hidden;
    border-radius: 0.125em;
    width: 100%;
    height: 100%;
    position: relative;
    display: block;
    overflow: hidden;
}

.infinite-grid__card-img {
    pointer-events: none;
    object-fit: cover;
    border-radius: inherit;
    width: 100%;
    height: 100%;
    position: absolute;
    filter: grayscale(0.5) contrast(0.9) brightness(0.85);
    transition: filter 0.4s;
}

.infinite-grid__card:hover .infinite-grid__card-img {
    filter: grayscale(0.1) contrast(0.95) brightness(0.95);
}

/* Archive: full viewport, no footer */
body:has(.page-archive),
html:has(.page-archive) {
    overflow: hidden;
}

body:has(.page-archive) .footer { display: none; }

/* Infinite grid card — title overlay */
.infinite-grid__card-title {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    padding: 0.9em 0.85em 0.7em;
    font-family: var(--sans);
    font-size: 0.55em;
    font-weight: 500;
    line-height: 1.15;
    letter-spacing: -0.01em;
    color: var(--fg);
    background: linear-gradient(to top, rgba(17,16,16,0.88) 0%, transparent 100%);
    opacity: 0.35;
    transform: translateY(3px);
    transition: opacity 0.3s, transform 0.3s;
    pointer-events: none;
}

.infinite-grid__card:hover .infinite-grid__card-title {
    opacity: 1;
    transform: translateY(0);
}

::selection { background: var(--fg); color: var(--bg); }

::-webkit-scrollbar { width: 2px; }
::-webkit-scrollbar-track { background: var(--bg); }
::-webkit-scrollbar-thumb { background: rgba(208, 201, 192, 0.15); }

/* ═══════════════════════════════════════════════
   NAV — Cart icon
   ═══════════════════════════════════════════════ */
.mg-nav__account {
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    pointer-events: auto;
    margin-left: auto;
    margin-right: var(--gap-16);
    opacity: 0.7;
    transition: opacity 0.2s;
}
.mg-nav__account:hover { opacity: 1; }
.mg-nav__account svg {
    width: clamp(22px, 2vw, 28px);
    height: clamp(22px, 2vw, 28px);
}

.mg-nav__cart {
    display: flex;
    align-items: center;
    position: relative;
    color: #fff;
    pointer-events: auto;
    margin-right: var(--gap-24);
    opacity: 0.7;
    transition: opacity 0.2s;
}
.mg-nav__cart:hover { opacity: 1; }

.mg-nav__cart svg {
    width: clamp(20px, 1.8vw, 26px);
    height: clamp(20px, 1.8vw, 26px);
}

.mg-nav__cart-count {
    display: none;
    position: absolute;
    top: -6px;
    right: -8px;
    background: var(--fg);
    color: var(--bg);
    font-size: 10px;
    font-weight: 700;
    line-height: 1;
    min-width: 16px;
    height: 16px;
    border-radius: 8px;
    padding: 0 4px;
    align-items: center;
    justify-content: center;
}

.mg-nav__cart-count.is--active { display: flex; }

/* Music page download button */
.track-item__download {
    display: flex;
    align-items: center;
    justify-content: center;
    width: clamp(48px, 5vw, 80px);
    height: clamp(48px, 5vw, 80px);
    flex-shrink: 0;
    background: none;
    border: 1px solid var(--rule);
    color: var(--fg);
    opacity: 0.35;
    transition: opacity 0.2s, border-color 0.2s;
    text-decoration: none;
}
.track-item__download svg { width: 40%; height: 40%; }
.track-item:hover .track-item__download { opacity: 0.7; border-color: rgba(208, 201, 192, 0.3); }
.track-item__download:hover { opacity: 1 !important; border-color: rgba(208, 201, 192, 0.5) !important; }

/* ═══════════════════════════════════════════════
   SHARED BUTTONS
   ═══════════════════════════════════════════════ */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--gap-12);
    font-family: var(--sans);
    font-size: var(--text-16);
    font-weight: 500;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    border: 1px solid transparent;
    padding: 0.9em 2em;
    transition: background 0.25s var(--ease-out), color 0.25s var(--ease-out), border-color 0.25s var(--ease-out);
    cursor: pointer;
    text-decoration: none;
    white-space: nowrap;
}

.btn--primary {
    background: var(--fg);
    color: var(--bg);
    border-color: var(--fg);
}
.btn--primary:hover { background: var(--white); border-color: var(--white); }

.btn--outline {
    background: transparent;
    color: var(--fg);
    border-color: rgba(208, 201, 192, 0.3);
}
.btn--outline:hover { border-color: var(--fg); }

.btn:disabled,
.btn[disabled] {
    opacity: 0.35;
    pointer-events: none;
}

/* ═══════════════════════════════════════════════
   SHOP — Product archive
   ═══════════════════════════════════════════════ */
.page-shop {
    padding-block-end: var(--gap-144);
}

.shop-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1px;
    background: var(--rule);
}

@media (max-width: 960px)  { .shop-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px)  { .shop-grid { grid-template-columns: 1fr; } }

/* Featured licence card */
@keyframes shop-glow-red {
    0%, 100% { box-shadow: 0 0 0 1px rgba(192,57,43,0.55), 0 0 28px rgba(192,57,43,0.14); }
    50%       { box-shadow: 0 0 0 1px rgba(192,57,43,0.9),  0 0 52px rgba(192,57,43,0.28); }
}
@keyframes shop-glow-green {
    0%, 100% { box-shadow: 0 0 0 1px rgba(39,174,96,0.55), 0 0 28px rgba(39,174,96,0.14); }
    50%       { box-shadow: 0 0 0 1px rgba(39,174,96,0.9),  0 0 52px rgba(39,174,96,0.28); }
}

.shop-card--featured {
    position: relative;
    z-index: 1;
}
.shop-card--featured-locked {
    animation: shop-glow-red 2.8s ease-in-out infinite;
}
.shop-card--featured-locked .shop-card__price .woocommerce-Price-amount {
    color: #c0392b;
}
.shop-card--featured-owned {
    animation: shop-glow-green 2.8s ease-in-out infinite;
}
.shop-card--featured-owned .shop-card__price .woocommerce-Price-amount {
    color: #27ae60;
}

.shop-card__featured-badge {
    position: absolute;
    top: var(--gap-16);
    left: var(--gap-16);
    z-index: 3;
    font-size: 9px;
    font-weight: 700;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: #0d0c0c;
    padding: 0.35em 1em;
    pointer-events: none;
}
.shop-card--featured-locked .shop-card__featured-badge { background: #c0392b; }
.shop-card--featured-owned  .shop-card__featured-badge { background: #27ae60; }


/* Card */
.shop-card { position: relative; }

.shop-card__link { display: block; text-decoration: none; color: inherit; }

.shop-card__media {
    position: relative;
    overflow: hidden;
    aspect-ratio: 4 / 5;
    background: rgba(208, 201, 192, 0.04);
}

.shop-card__img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.7s var(--ease-out), filter 0.5s, opacity 0.35s ease;
    filter: grayscale(0.3) contrast(0.9);
}

.shop-card__img.is--vid-hidden { opacity: 0; }

.shop-card__hover-video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: 0;
    transition: opacity 0.35s ease;
    pointer-events: none;
    z-index: 1;
    filter: grayscale(0.45) contrast(0.88) brightness(0.85);
}

.shop-card__hover-video.is--active { opacity: 1; }

.shop-card:hover .shop-card__img {
    transform: scale(1.04);
    filter: grayscale(0) contrast(1);
}

.shop-card__overlay {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: flex-end;
    padding: var(--gap-24);
    opacity: 0;
    transition: opacity 0.3s;
    background: linear-gradient(to top, rgba(17,16,16,0.7) 0%, transparent 60%);
    z-index: 2;
}

.shop-card:hover .shop-card__overlay { opacity: 1; }

.shop-card__cta {
    font-size: var(--text-12);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--fg);
    border-bottom: 1px solid rgba(208,201,192,0.5);
    padding-bottom: 2px;
}

.shop-card__info {
    padding: var(--gap-16) var(--gap-24);
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: var(--gap-12);
    background: var(--bg);
}

.shop-card__title {
    font-size: var(--text-18);
    font-weight: 400;
    color: var(--fg);
}

.shop-card__price {
    font-size: var(--text-16);
    color: var(--muted);
    white-space: nowrap;
}

.shop-card__price .woocommerce-Price-amount { color: var(--fg); }
.shop-card__price del .woocommerce-Price-amount { color: var(--muted); }

.shop-empty {
    text-align: center;
    color: var(--muted);
    padding: var(--gap-96);
}

/* WC pagination (archive) */
.woocommerce-pagination {
    display: flex;
    justify-content: center;
    gap: var(--gap-12);
    padding: var(--gap-48) var(--gap-48) 0;
}
.woocommerce-pagination a,
.woocommerce-pagination span {
    font-size: var(--text-16);
    color: var(--muted);
    padding: 0.4em 0.8em;
    border: 1px solid var(--rule);
    transition: border-color 0.2s, color 0.2s;
}
.woocommerce-pagination a:hover { border-color: var(--fg); color: var(--fg); }
.woocommerce-pagination .current { border-color: rgba(208,201,192,0.4); color: var(--fg); }

/* ═══════════════════════════════════════════════
   SHOP — Single product
   ═══════════════════════════════════════════════ */
.page-product {
    padding-block-end: var(--gap-144);
}

/* ── Licence product page ─────────────────────── */
.page-product--licence {
    padding-block-end: 0;
}

.licence-marquee {
    overflow: hidden;
    border-bottom: 1px solid var(--rule);
    padding-top: calc(var(--nav-h) + var(--gap-48));
}

.licence-marquee__row {
    display: flex;
    white-space: nowrap;
    padding-block: 0.25em;
    will-change: transform;
    backface-visibility: hidden;
    transform: translateZ(0);
}

.licence-marquee__row--ltr  { animation: typo-ltr 18s linear infinite; }
.licence-marquee__row--rtl  { animation: typo-rtl 22s linear infinite; }

/* Borders sit outside the animated rows so they don't flicker */
.licence-marquee__row + .licence-marquee__row {
    border-top: 1px solid var(--rule);
}

.licence-marquee__unit {
    display: inline-flex;
    align-items: center;
    gap: 0.4em;
    padding-inline: 0.5em;
    font-size: clamp(2.5rem, 7vw, 6.5rem);
    font-weight: 900;
    letter-spacing: -0.04em;
    line-height: 1;
    text-transform: uppercase;
    opacity: 0.12;
}

.licence-marquee__arrow {
    height: 0.7em;
    width: auto;
    flex-shrink: 0;
}

/* Featured image hero */
.licence-hero {
    width: 100%;
    max-height: 75vh;
    overflow: hidden;
    border-bottom: 1px solid var(--rule);
}

.licence-hero__img {
    width: 100%;
    height: 75vh;
    object-fit: cover;
    object-position: center;
    display: block;
}

.licence-panel {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1px;
    border-bottom: 1px solid var(--rule);
    background: var(--rule);
}

.licence-panel__copy,
.licence-panel__buy {
    background: var(--bg);
    padding: var(--gap-144) var(--gap-96);
}

.licence-panel__copy {
    position: sticky;
    top: var(--nav-h);
    align-self: start;
    z-index: 2;
    background: var(--bg);
}

.licence-panel__eyebrow {
    display: block;
    font-size: var(--text-12);
    letter-spacing: 0.25em;
    text-transform: uppercase;
    color: var(--muted);
    margin-bottom: var(--gap-32);
}

.licence-panel__title {
    font-size: clamp(2.5rem, 5vw, 5rem);
    font-weight: 900;
    letter-spacing: -0.04em;
    line-height: 1;
    margin: 0 0 var(--gap-48);
}

.licence-panel__desc {
    font-size: var(--text-16);
    line-height: 1.8;
    opacity: 0.55;
    max-width: 42ch;
}

.licence-panel__price {
    font-size: clamp(3rem, 6vw, 6.5rem);
    font-weight: 900;
    letter-spacing: -0.04em;
    line-height: 1;
    margin-bottom: var(--gap-48);
}

.licence-panel__btn {
    width: 100%;
    font-size: var(--text-14);
    padding: 1.25em 2em;
    margin-bottom: var(--gap-48);
}

.licence-panel__owned {
    font-size: var(--text-14);
    margin-bottom: var(--gap-48);
    line-height: 1.6;
}
.licence-panel__owned-flag {
    color: #e02020;
    font-weight: 700;
}
.licence-panel__owned a {
    color: var(--fg);
    opacity: 0.6;
}

.licence-panel__perks {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: var(--gap-16);
}

.licence-panel__perks li {
    font-size: var(--text-14);
    opacity: 0.45;
    padding-left: 1.6em;
    position: relative;
    line-height: 1.5;
}
.licence-panel__perks li::before {
    content: '→';
    position: absolute;
    left: 0;
    opacity: 0.5;
}

/* Promo video */
.licence-video {
    border-bottom: 1px solid var(--rule);
    padding: var(--gap-96) var(--gap-48);
    background: var(--bg);
}

.licence-video__wrap {
    position: relative;
    padding-bottom: 56.25%;
    height: 0;
    overflow: hidden;
    max-width: 1100px;
    margin: 0 auto;
}

.licence-video__wrap iframe {
    position: absolute;
    top: 0; left: 0;
    width: 100%;
    height: 100%;
    border: 0;
}

@media (max-width: 768px) {
    .licence-panel { grid-template-columns: 1fr; }
    .licence-panel__copy,
    .licence-panel__buy { padding: var(--gap-96) var(--gap-24); }
    .licence-hero__img { height: 50vw; min-height: 220px; }
    .licence-video { padding: var(--gap-48) var(--gap-24); }
}

/* ── In-game leaderboard (game over overlay) ── */
.game-lb {
    width: 100%;
    max-width: 300px;
    margin-top: clamp(0.75rem, 2dvh, 1.5rem);
    pointer-events: auto;
}
.game-lb__title {
    font-family: var(--sans, sans-serif);
    font-size: 9px;
    font-weight: 500;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: #d0c9c0;
    opacity: 0.28;
    text-align: center;
    margin: 0 0 0.6rem;
}
.game-lb__list {
    list-style: none;
    padding: 0;
    margin: 0 0 0.5rem;
    border-top: 1px solid rgba(208,201,192,0.08);
}
.game-lb__row {
    display: flex;
    align-items: baseline;
    gap: 0.5rem;
    padding: 0.3rem 0;
    border-bottom: 1px solid rgba(208,201,192,0.06);
    font-family: var(--sans, sans-serif);
}
.game-lb__rank {
    font-size: 8px;
    font-weight: 700;
    letter-spacing: 0.1em;
    color: #d0c9c0;
    opacity: 0.3;
    width: 1.2em;
    flex-shrink: 0;
}
.game-lb__name {
    font-size: var(--text-12, 12px);
    color: #d0c9c0;
    opacity: 0.55;
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.game-lb__score {
    font-size: var(--text-12, 12px);
    font-weight: 700;
    color: #d0c9c0;
    opacity: 0.55;
    letter-spacing: -0.02em;
}
.game-lb__loading,
.game-lb__empty {
    font-family: var(--sans, sans-serif);
    font-size: var(--text-12, 12px);
    color: #d0c9c0;
    opacity: 0.2;
    padding: 0.4rem 0;
    text-align: center;
}
.game-lb__link {
    display: block;
    text-align: center;
    font-family: var(--sans, sans-serif);
    font-size: 9px;
    font-weight: 500;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: #d0c9c0;
    opacity: 0.25;
    text-decoration: none;
    transition: opacity 0.2s;
    margin-top: 0.4rem;
}
.game-lb__link:hover { opacity: 0.7; }

/* ── Leaderboard page ────────────────────────── */
.page-leaderboard {
    min-height: 100dvh;
    padding-block-end: var(--gap-144);
}

.lb-header {
    padding-top: calc(var(--nav-h) + var(--gap-96));
    padding-bottom: var(--gap-96);
    padding-inline: var(--gap-48);
    border-bottom: 1px solid var(--rule);
}

.lb-header__row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--gap-24);
}

.lb-header__eyebrow {
    font-size: var(--text-12);
    letter-spacing: 0.25em;
    text-transform: uppercase;
    color: var(--muted);
    margin: 0;
}

.lb-header__back {
    font-size: var(--text-12);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--fg);
    opacity: 0.35;
    text-decoration: none;
    transition: opacity 0.2s;
}
.lb-header__back:hover { opacity: 0.8; }

.lb-header__title {
    font-size: clamp(4rem, 12vw, 12rem);
    font-weight: 900;
    letter-spacing: -0.04em;
    line-height: 0.88;
    margin: 0;
}

.lb-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1px;
    background: var(--rule);
    border-bottom: 1px solid var(--rule);
}

.lb-game {
    background: var(--bg);
    padding: var(--gap-48) var(--gap-48) var(--gap-96);
}

.lb-game__header {
    display: flex;
    align-items: center;
    gap: var(--gap-16);
    margin-bottom: var(--gap-32);
    padding-bottom: var(--gap-24);
    border-bottom: 1px solid var(--rule);
}

.lb-game__icon {
    font-size: 1.5rem;
    opacity: 0.25;
    line-height: 1;
    font-style: normal;
}

.lb-game__meta {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    flex: 1;
}

.lb-game__name {
    font-size: clamp(1.25rem, 2.5vw, 2rem);
    font-weight: 900;
    letter-spacing: -0.04em;
    line-height: 1;
    margin: 0;
}

.lb-game__play {
    font-size: var(--text-12);
    font-weight: 500;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--fg);
    opacity: 0.3;
    text-decoration: none;
    transition: opacity 0.2s;
}
.lb-game__play:hover { opacity: 0.8; }

.lb-game__cols {
    display: flex;
    justify-content: space-between;
    margin-bottom: var(--gap-12);
}

.lb-col-label {
    font-size: 9px;
    font-weight: 500;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--muted);
    opacity: 0.6;
}
.lb-col-label--right { text-align: right; }

.lb-table {
    list-style: none;
    padding: 0;
    margin: 0;
    border-top: 1px solid var(--rule);
}

.lb-row {
    display: grid;
    grid-template-columns: 2rem 1fr auto;
    align-items: baseline;
    gap: var(--gap-12);
    padding: var(--gap-12) 0;
    border-bottom: 1px solid var(--rule);
}

.lb-row--top .lb-row__score { color: #c0392b; }

.lb-row--you { background: rgba(255,255,255,0.035); border-radius: 3px; }
.lb-row--you .lb-row__name { opacity: 1; font-weight: 600; }
.lb-row--you .lb-row__rank { opacity: 0.6; }
.lb-row__you-tag {
    font-style: normal;
    font-size: var(--text-10);
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    opacity: 0.45;
    margin-left: 0.4em;
}

.lb-game__you {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    padding: var(--gap-12) 0 0;
    margin-top: var(--gap-8);
    border-top: 1px solid var(--rule);
}
.lb-game__you-label {
    font-size: var(--text-12);
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    opacity: 0.35;
}
.lb-game__you-score {
    font-size: var(--text-14);
    font-weight: 700;
    letter-spacing: -0.02em;
    opacity: 0.7;
}
.lb-row--empty,
.lb-row--loading {
    grid-template-columns: 1fr;
    font-size: var(--text-14);
    opacity: 0.25;
    text-align: center;
    padding: var(--gap-24) 0;
}
.lb-row--empty a { color: var(--fg); }

.lb-row__rank {
    font-size: var(--text-12);
    font-weight: 700;
    opacity: 0.25;
}
.lb-row__name {
    font-size: var(--text-14);
    opacity: 0.7;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.lb-row__score {
    font-size: var(--text-14);
    font-weight: 700;
    letter-spacing: -0.02em;
}

@media (max-width: 900px) { .lb-grid { grid-template-columns: 1fr; } }
@media (max-width: 600px) {
    .lb-header { padding-top: calc(var(--nav-h) + var(--gap-48)); padding-bottom: var(--gap-48); padding-inline: var(--gap-24); }
    .lb-header__title { font-size: clamp(3.5rem, 18vw, 7rem); }
    .lb-game { padding: var(--gap-32) var(--gap-24) var(--gap-48); }
}

/* ── Leaderboard profile card ─────────────────── */
.lb-profile {
    display: flex;
    flex-direction: column;
}
.lb-profile__inner {
    display: flex;
    flex-direction: column;
    flex: 1;
}
.lb-profile__inner--out .lb-profile__signin-link,
.lb-profile__inner--in  .lb-profile__change-btn {
    margin-top: auto;
}

.lb-profile__signed-in-label {
    font-size: var(--text-12);
    font-weight: 700;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    opacity: 0.35;
    margin: 0;
}
.lb-profile__name-hint {
    font-size: var(--text-12);
    opacity: 0.28;
    margin: -0.6rem 0 var(--gap-32);
    line-height: 1.4;
}
.lb-profile__eyebrow {
    font-size: 9px;
    font-weight: 500;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    opacity: 0.35;
    margin: 0 0 0.4rem;
}
.lb-profile__name {
    font-size: clamp(1.6rem, 3vw, 2.4rem);
    font-weight: 900;
    letter-spacing: -0.04em;
    line-height: 1;
    margin: 0 0 var(--gap-32);
}
.lb-profile__change-btn {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    font-size: var(--text-12);
    font-weight: 500;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--fg);
    opacity: 0.3;
    transition: opacity 0.2s;
}
.lb-profile__change-btn:hover { opacity: 0.8; }
.lb-profile__change-btn.is--hidden { display: none; }

/* Edit form */
.lb-profile__edit-wrap { margin-bottom: var(--gap-16); }
.lb-profile__edit-wrap.is--hidden { display: none; }
.lb-profile__input {
    width: 100%;
    background: transparent;
    border: none;
    border-bottom: 1px solid var(--fg);
    outline: none;
    padding: 0.4em 0;
    font-size: clamp(1.2rem, 2.5vw, 2rem);
    font-weight: 700;
    letter-spacing: -0.03em;
    color: var(--fg);
    margin-bottom: var(--gap-12);
}
.lb-profile__hint {
    font-size: 9px;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    opacity: 0.25;
    margin: 0 0 var(--gap-16);
}
.lb-profile__actions {
    display: flex;
    gap: var(--gap-12);
    margin-bottom: var(--gap-12);
}
.lb-profile__btn {
    background: none;
    border: 1px solid var(--rule);
    padding: 0.35em 1em;
    cursor: pointer;
    font-size: var(--text-12);
    font-weight: 500;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--fg);
    opacity: 0.6;
    transition: opacity 0.2s, border-color 0.2s;
}
.lb-profile__btn:hover { opacity: 1; border-color: var(--fg); }
.lb-profile__btn:disabled { opacity: 0.3; cursor: default; }
.lb-profile__btn--save { opacity: 1; border-color: var(--fg); }
.lb-profile__msg {
    font-size: var(--text-12);
    letter-spacing: 0.06em;
    min-height: 1.4em;
    margin: 0;
}
.lb-profile__msg--ok    { color: #4adf70; }
.lb-profile__msg--error { color: #c0392b; }

/* Guest / not-logged-in state */
.lb-profile__guest-heading {
    font-size: clamp(1.1rem, 2.2vw, 1.6rem);
    font-weight: 900;
    letter-spacing: -0.03em;
    line-height: 1.1;
    margin: 0 0 var(--gap-16);
}
.lb-profile__guest-sub {
    font-size: var(--text-14);
    opacity: 0.45;
    line-height: 1.5;
    margin: 0 0 var(--gap-32);
}
.lb-profile__signin-link {
    display: inline-block;
    font-size: var(--text-12);
    font-weight: 500;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--fg);
    opacity: 0.5;
    text-decoration: none;
    transition: opacity 0.2s;
}
.lb-profile__signin-link:hover { opacity: 1; }

/* ── Signup page ─────────────────────────────── */
.page-signup {
    padding-top: calc(var(--nav-h) + var(--gap-96));
    padding-bottom: var(--gap-144);
    padding-inline: var(--gap-24);
}
.signup-wrap {
    max-width: 480px;
    margin: 0 auto;
}
.signup-header { margin-bottom: var(--gap-48); }
.signup-header__title {
    font-size: clamp(2.5rem, 6vw, 4.5rem);
    font-weight: 900;
    letter-spacing: -0.04em;
    line-height: 0.95;
    margin: 0.2em 0 0.5em;
}
.signup-header__sub {
    font-size: var(--text-14);
    opacity: 0.45;
    line-height: 1.55;
    margin: 0;
}

/* Form */
.signup-form { display: flex; flex-direction: column; gap: var(--gap-24); }
.signup-form__hp {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
    opacity: 0;
    pointer-events: none;
}
.signup-form__field { display: flex; flex-direction: column; gap: 0.4em; }
.signup-form__label {
    font-size: 9px;
    font-weight: 700;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    opacity: 0.4;
}
.signup-form__input {
    width: 100%;
    background: transparent;
    border: none;
    border-bottom: 1px solid var(--rule);
    outline: none;
    padding: 0.55em 0;
    font-size: var(--text-16, 16px);
    color: var(--fg);
    transition: border-color 0.2s;
}
.signup-form__input:focus { border-color: rgba(255,255,255,0.5); }
.signup-form__input::placeholder { opacity: 0.2; }
.signup-form__field-hint {
    font-size: 9px;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    opacity: 0.2;
}

/* Password toggle */
.signup-form__password-wrap { position: relative; }
.signup-form__password-wrap .signup-form__input { padding-right: 2.5em; }
.signup-form__pw-toggle {
    position: absolute;
    right: 0;
    top: 50%;
    transform: translateY(-50%);
    background: none;
    border: none;
    padding: 0.3em;
    cursor: pointer;
    color: var(--fg);
    opacity: 0.25;
    transition: opacity 0.2s;
}
.signup-form__pw-toggle:hover,
.signup-form__pw-toggle[aria-pressed="true"] { opacity: 0.7; }

/* Mailchimp opt-in */
.signup-form__mailchimp {
    display: flex;
    align-items: flex-start;
    gap: 0.65em;
    cursor: pointer;
    padding-top: var(--gap-6);
}
.signup-form__mailchimp input[type="checkbox"] {
    flex-shrink: 0;
    width: 14px;
    height: 14px;
    margin-top: 0.2em;
    accent-color: var(--fg);
    cursor: pointer;
}
.signup-form__mailchimp-text {
    font-size: var(--text-13, 13px);
    opacity: 0.45;
    line-height: 1.45;
    transition: opacity 0.2s;
}
.signup-form__mailchimp:has(:checked) .signup-form__mailchimp-text { opacity: 0.85; }

/* Error */
.signup-form__error {
    font-size: var(--text-13, 13px);
    color: #c0392b;
    min-height: 1.4em;
    margin: 0;
}

/* Submit button */
.signup-form__submit {
    position: relative;
    background: var(--fg);
    border: none;
    padding: 1em 2em;
    font-size: var(--text-14);
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--bg);
    cursor: pointer;
    transition: opacity 0.2s;
    align-self: flex-start;
    min-width: 180px;
    text-align: center;
}
.signup-form__submit:hover { opacity: 0.85; }
.signup-form__submit:disabled { opacity: 0.5; cursor: default; }
.signup-form__submit-loading { display: none; }
.signup-form__submit.is--loading .signup-form__submit-text { visibility: hidden; }
.signup-form__submit.is--loading .signup-form__submit-loading {
    display: block;
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
}

/* Log in link */
.signup-form__login-link {
    font-size: var(--text-13, 13px);
    opacity: 0.35;
    margin: 0;
}
.signup-form__login-link a { color: var(--fg); opacity: 1; transition: opacity 0.2s; }
.signup-form__login-link a:hover { opacity: 0.7; }

/* Link on WC login page */
.mg-wc-signup-link {
    margin-top: var(--gap-24);
    font-size: var(--text-13, 13px);
    opacity: 0.45;
}
.mg-wc-signup-link a { color: var(--fg); }

/* ── Games page ─────────────────────────────── */
.page-games {
    min-height: 100dvh;
    padding-block-end: var(--gap-144);
}

.games-header {
    padding-top: calc(var(--nav-h) + var(--gap-96));
    padding-bottom: var(--gap-96);
    padding-inline: var(--gap-48);
    border-bottom: 1px solid var(--rule);
}

.games-header__row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--gap-16);
}

.games-header__eyebrow {
    font-size: var(--text-12);
    letter-spacing: 0.25em;
    text-transform: uppercase;
    color: var(--muted);
    margin: 0;
}

.games-header__lb-link {
    font-size: var(--text-12);
    font-weight: 500;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--fg);
    opacity: 0.35;
    text-decoration: none;
    transition: opacity 0.2s;
}
.games-header__lb-link:hover { opacity: 0.9; }

.games-header__title {
    font-size: clamp(4rem, 12vw, 12rem);
    font-weight: 900;
    letter-spacing: -0.04em;
    line-height: 0.88;
    margin: 0;
}

.games-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1px;
    background: var(--rule);
    border-bottom: 1px solid var(--rule);
}

.game-card {
    display: flex;
    flex-direction: column;
    background: var(--bg);
    text-decoration: none;
    color: var(--fg);
    overflow: hidden;
    transition: background 0.3s;
}
.game-card:hover { background: #131211; }

.game-card__media {
    position: relative;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    background: #111010;
    display: flex;
    align-items: center;
    justify-content: center;
    border-bottom: 1px solid var(--rule);
}

.game-card__img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: 0.6;
    transition: opacity 0.4s, transform 0.55s var(--ease-out);
}
.game-card:hover .game-card__img { opacity: 0.8; transform: scale(1.04); }

.game-card__icon {
    font-size: clamp(2.5rem, 6vw, 5rem);
    opacity: 0.13;
    line-height: 1;
    position: relative;
    z-index: 1;
    pointer-events: none;
    transition: opacity 0.25s, transform 0.3s;
    font-style: normal;
}
.game-card:hover .game-card__icon { opacity: 0.3; transform: scale(1.12); }

.game-card__info {
    padding: var(--gap-48) var(--gap-48) var(--gap-96);
    display: flex;
    flex-direction: column;
    gap: var(--gap-12);
    flex: 1;
}

.game-card__title {
    font-size: clamp(1.5rem, 3vw, 3rem);
    font-weight: 900;
    letter-spacing: -0.04em;
    line-height: 0.92;
    margin: 0;
}

.game-card__desc {
    font-size: var(--text-14);
    line-height: 1.6;
    opacity: 0.45;
    margin: 0;
    max-width: 36ch;
}

.game-card__play {
    display: inline-block;
    font-size: var(--text-12);
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    opacity: 0.35;
    margin-top: auto;
    padding-top: var(--gap-16);
    transition: opacity 0.2s;
}
.game-card:hover .game-card__play { opacity: 0.8; }

@media (max-width: 900px) {
    .games-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 600px) {
    .games-grid { grid-template-columns: 1fr; }
    .games-header { padding-top: calc(var(--nav-h) + var(--gap-48)); padding-bottom: var(--gap-48); padding-inline: var(--gap-24); }
    .games-header__title { font-size: clamp(3.5rem, 18vw, 7rem); }
    .game-card__media { aspect-ratio: 16 / 9; }
    .game-card__info { padding: var(--gap-24) var(--gap-24) var(--gap-48); }
}

/* Big headline above the 2-col product layout */
.product-headline {
    padding-top: calc(var(--nav-h) + var(--gap-96));
    padding-bottom: var(--gap-96);
    padding-inline: var(--gap-48);
    border-bottom: 1px solid var(--rule);
}

@media (max-width: 768px) {
    .product-headline { padding-inline: var(--gap-24); }
}

.product-headline__cat {
    display: block;
    font-size: var(--text-12);
    letter-spacing: 0.25em;
    text-transform: uppercase;
    color: var(--muted);
    margin-bottom: var(--gap-24);
}

.product-headline__title {
    font-size: clamp(48px, 7vw, 120px);
    font-weight: 900;
    letter-spacing: -0.04em;
    line-height: 0.9;
    max-width: 100%;
}

.product-layout {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0;
    align-items: start;
}

.product-layout > * {
    padding: var(--gap-96) var(--gap-48);
}

@media (max-width: 900px) {
    .product-layout { grid-template-columns: 1fr; }
    .product-layout > * { padding: var(--gap-48) var(--gap-24); }
}

/* Gallery */
.product-gallery {}

.product-gallery__main {
    position: relative;
    aspect-ratio: 4 / 5;
    overflow: hidden;
    background: rgba(208, 201, 192, 0.04);
}

.product-gallery__img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: grayscale(0.2) contrast(0.9);
    transition: opacity 0.3s;
}

.product-gallery__thumbs {
    display: flex;
    gap: var(--gap-12);
    margin-top: var(--gap-12);
    flex-wrap: wrap;
}

.product-gallery__thumb {
    width: 72px;
    height: 72px;
    overflow: hidden;
    border: 1px solid var(--rule);
    cursor: pointer;
    transition: border-color 0.2s;
    flex-shrink: 0;
    padding: 0;
}

.product-gallery__thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: grayscale(0.3);
    transition: filter 0.2s;
}

.product-gallery__thumb:hover img,
.product-gallery__thumb.is--active img { filter: none; }
.product-gallery__thumb.is--active { border-color: rgba(208,201,192,0.5); }

/* Details — sticky on desktop, stacks normally on mobile */
.product-details {
    display: flex;
    flex-direction: column;
    gap: var(--gap-24);
}

@media (min-width: 901px) {
    .product-details {
        position: sticky;
        top: 144px;
        align-self: start;
    }
}

.product-details__meta {
    display: flex;
    gap: var(--gap-12);
}

.product-details__cat {
    font-size: var(--text-12);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--muted);
}

.product-details__title {
    font-size: var(--text-48);
    font-weight: 400;
    line-height: 1.05;
    color: var(--fg);
}

.product-details__price {
    font-size: var(--text-36);
    color: var(--fg);
}
.product-details__price .woocommerce-Price-amount { color: var(--fg); }
.product-details__price del .woocommerce-Price-amount { color: var(--muted); }

.product-details__description {
    font-size: var(--text-18);
    color: var(--primary);
    line-height: 1.65;
    border-top: 1px solid var(--rule);
    padding-top: var(--gap-24);
}

.product-details__long-description {
    font-size: var(--text-16);
    color: var(--muted);
    line-height: 1.65;
    border-top: 1px solid var(--rule);
    padding-top: var(--gap-24);
}
.product-details__long-description p + p { margin-top: 1em; }

/* Variations */
.product-variations {
    display: flex;
    flex-direction: column;
    gap: var(--gap-16);
    border-top: 1px solid var(--rule);
    padding-top: var(--gap-24);
}

.product-variation-group {}

.product-variation-group__label {
    display: block;
    font-size: var(--text-12);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--muted);
    margin-bottom: var(--gap-12);
}

.product-variation-group__btns {
    display: flex;
    flex-wrap: wrap;
    gap: var(--gap-6);
}

.product-variation-btn {
    padding: 0.5em 1.1em;
    font-size: var(--text-16);
    font-weight: 400;
    border: 1px solid var(--rule);
    color: var(--fg);
    background: transparent;
    transition: border-color 0.2s, background 0.2s, color 0.2s;
    cursor: pointer;
}
.product-variation-btn:hover { border-color: rgba(208,201,192,0.4); }
.product-variation-btn.is--selected {
    background: var(--fg);
    color: var(--bg);
    border-color: var(--fg);
}
.product-variation-btn.is--disabled {
    opacity: 0.25;
    pointer-events: none;
    text-decoration: line-through;
}

/* Qty */
.product-qty {
    border-top: 1px solid var(--rule);
    padding-top: var(--gap-24);
}

.product-qty__label {
    display: block;
    font-size: var(--text-12);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--muted);
    margin-bottom: var(--gap-12);
}

.product-qty__wrap {
    display: inline-flex;
    align-items: center;
    border: 1px solid var(--rule);
}

.product-qty__btn {
    width: 44px;
    height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    line-height: 1;
    color: var(--fg);
    background: none;
    border: none;
    transition: color 0.2s;
    cursor: pointer;
}
.product-qty__btn:hover { color: var(--white); }

.product-qty__input {
    width: 60px;
    text-align: center;
    font-size: var(--text-18);
    font-family: var(--sans);
    color: var(--fg);
    background: transparent;
    border: none;
    border-left: 1px solid var(--rule);
    border-right: 1px solid var(--rule);
    height: 44px;
    -moz-appearance: textfield;
}
.product-qty__input::-webkit-inner-spin-button,
.product-qty__input::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }

/* Actions */
.product-actions {
    display: flex;
    gap: var(--gap-16);
    flex-wrap: wrap;
    border-top: 1px solid var(--rule);
    padding-top: var(--gap-24);
}

.product-actions__add {
    flex: 1;
    min-width: 160px;
}

/* Shipping note */
.product-shipping-note {
    display: flex;
    align-items: center;
    gap: var(--gap-12);
    font-size: var(--text-16);
    color: var(--muted);
    border-top: 1px solid var(--rule);
    padding-top: var(--gap-16);
}
.product-shipping-note svg {
    width: 16px;
    height: 16px;
    flex-shrink: 0;
    opacity: 0.6;
}

.product-out-of-stock {
    font-size: var(--text-16);
    color: var(--muted);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    border-top: 1px solid var(--rule);
    padding-top: var(--gap-24);
}

/* Gallery hover — crossfade between main + alt image */
.product-gallery__main {
    cursor: crosshair;
}

.product-gallery__alt {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: 0;
    transition: opacity 0.4s var(--ease-out);
    pointer-events: none;
}

.product-gallery__main:hover .product-gallery__alt,
.product-gallery__main.is--alt .product-gallery__alt {
    opacity: 1;
}

/* Hide thumbs when hover-swap is active (2-image products) */
.product-gallery[data-hover-gallery] .product-gallery__thumbs {
    display: none;
}

/* ── Related products slider ─────────────────── */
.product-related {
    border-top: 1px solid var(--rule);
    padding-top: var(--gap-96);
    padding-bottom: var(--gap-144);
}

.product-related__header {
    padding-inline: var(--gap-48);
    margin-bottom: var(--gap-48);
    display: flex;
    align-items: baseline;
    justify-content: space-between;
}

@media (max-width: 768px) {
    .product-related__header { padding-inline: var(--gap-24); }
}

.product-related__title {
    font-size: var(--text-12);
    letter-spacing: 0.25em;
    text-transform: uppercase;
    color: var(--muted);
    font-weight: 400;
}

.product-related__slider {
    display: flex;
    gap: 1px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    cursor: grab;
    user-select: none;
}

.product-related__slider::-webkit-scrollbar { display: none; }
.product-related__slider.is--dragging { cursor: grabbing; }

.product-related__card {
    flex: 0 0 calc(33.333% - 1px);
    min-width: 280px;
    scroll-snap-align: start;
    text-decoration: none;
    color: inherit;
    display: flex;
    flex-direction: column;
}

@media (max-width: 768px) {
    .product-related__card { flex: 0 0 72vw; }
}

.product-related__card-media {
    aspect-ratio: 4 / 5;
    overflow: hidden;
    background: rgba(208, 201, 192, 0.04);
    position: relative;
}

.product-related__card-media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: grayscale(0.2) contrast(0.9);
    transition: transform 0.6s var(--ease-out), filter 0.4s;
}

.product-related__card:hover .product-related__card-media img {
    transform: scale(1.04);
    filter: grayscale(0) contrast(1);
}

.product-related__card-info {
    padding: var(--gap-16) var(--gap-24);
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: var(--gap-12);
    background: var(--bg);
    border-top: 1px solid var(--rule);
}

.product-related__card-name {
    font-size: var(--text-16);
    color: var(--fg);
}

.product-related__card-price {
    font-size: var(--text-14);
    color: var(--muted);
    white-space: nowrap;
}

.product-related__card-price .woocommerce-Price-amount { color: var(--fg); }

/* ── Archive: shop toolbar ───────────────────── */
.shop-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding-inline: var(--gap-48);
    padding-block: var(--gap-24);
    border-bottom: 1px solid var(--rule);
    gap: var(--gap-24);
}

@media (max-width: 768px) {
    .shop-toolbar { padding-inline: var(--gap-24); }
}

.shop-toolbar .woocommerce-result-count {
    font-size: var(--text-12);
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--muted);
    margin: 0;
}

.shop-toolbar form.woocommerce-ordering {
    margin: 0 0 0 auto;
    display: flex;
    align-items: center;
}

.shop-toolbar select.orderby {
    font-family: var(--sans);
    font-size: var(--text-12);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--fg);
    background: transparent;
    border: 1px solid var(--rule);
    padding: 0.5em 2.4em 0.5em 0.9em;
    cursor: pointer;
    appearance: none;
    -webkit-appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%23d0c9c0'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0.8em center;
    transition: border-color 0.2s;
}

.shop-toolbar select.orderby:hover { border-color: rgba(208,201,192,0.6); }
.shop-toolbar select.orderby option { background: var(--bg); }

/* ── Empty cart ──────────────────────────────── */
.mg-cart-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: var(--gap-144) var(--gap-48);
    gap: var(--gap-32);
}

.mg-cart-empty__label {
    font-size: var(--text-12);
    letter-spacing: 0.25em;
    text-transform: uppercase;
    color: var(--muted);
    margin: 0;
}

.mg-cart-empty__heading {
    font-size: clamp(40px, 7vw, 96px);
    font-weight: 900;
    letter-spacing: -0.04em;
    line-height: 1;
    color: var(--fg);
    opacity: 0.15;
    margin: 0;
}

/* ═══════════════════════════════════════════════
   SHOP — Cart / Checkout / My Account (page-woo)
   ═══════════════════════════════════════════════ */
.page-woo {
    padding-block: var(--gap-96);
    padding-inline: var(--gap-48);
    min-height: 60vh;
}

.woo-wrap {
    max-width: 960px;
    margin-inline: auto;
}

@media (max-width: 768px) {
    .page-woo { padding-inline: var(--gap-24); }
}

/* WooCommerce global resets */
.woocommerce-notices-wrapper { margin-bottom: var(--gap-24); }
.woocommerce-message,
.woocommerce-error,
.woocommerce-info {
    list-style: none;
    padding: var(--gap-16) var(--gap-24);
    border-left: 2px solid var(--fg);
    font-size: var(--text-16);
    color: var(--fg);
    background: rgba(208,201,192,0.04);
    margin-bottom: var(--gap-16);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--gap-12);
}
.woocommerce-message::before,
.woocommerce-info::before { display: none; }
.woocommerce-error { border-color: #c05d5d; }

.woocommerce-error li { color: var(--fg); }
.woocommerce-message .button,
.woocommerce-info .button {
    font-size: var(--text-12);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    border: 1px solid var(--rule);
    padding: 0.4em 0.8em;
    color: var(--fg);
    transition: border-color 0.2s;
}
.woocommerce-message .button:hover,
.woocommerce-info .button:hover { border-color: var(--fg); }

/* Cart table */
.woocommerce table.shop_table {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--text-16);
}

.woocommerce table.shop_table th {
    font-size: var(--text-12);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--muted);
    font-weight: 400;
    padding: 0 0 var(--gap-16);
    border-bottom: 1px solid var(--rule);
    text-align: left;
}

.woocommerce table.shop_table td {
    padding: var(--gap-24) 0;
    border-bottom: 1px solid var(--rule);
    color: var(--fg);
    vertical-align: middle;
}

.woocommerce table.shop_table .product-thumbnail {
    width: 80px;
}

.woocommerce table.shop_table .product-thumbnail img {
    width: 64px;
    height: 64px;
    object-fit: cover;
    filter: grayscale(0.2);
}

.woocommerce table.shop_table .product-name a {
    color: var(--fg);
    font-size: var(--text-18);
}

.woocommerce table.shop_table .product-remove a {
    color: var(--muted);
    font-size: 18px;
    text-decoration: none;
    transition: color 0.2s;
}
.woocommerce table.shop_table .product-remove a:hover { color: var(--fg); }

.woocommerce .quantity .qty {
    width: 60px;
    text-align: center;
    background: transparent;
    border: 1px solid var(--rule);
    color: var(--fg);
    font-family: var(--sans);
    font-size: var(--text-16);
    padding: 0.4em;
    -moz-appearance: textfield;
}
.woocommerce .quantity .qty::-webkit-inner-spin-button,
.woocommerce .quantity .qty::-webkit-outer-spin-button { -webkit-appearance: none; }

/* Cart collaterals (totals) */
.cart-collaterals {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--gap-48);
    margin-top: var(--gap-48);
}

@media (max-width: 600px) { .cart-collaterals { grid-template-columns: 1fr; } }

.cart_totals h2,
.cross-sells h2 {
    font-size: var(--text-24);
    font-weight: 400;
    color: var(--fg);
    margin-bottom: var(--gap-24);
    border-bottom: 1px solid var(--rule);
    padding-bottom: var(--gap-16);
}

.cart_totals table.shop_table.shop_table_responsive th { color: var(--muted); }
.cart_totals table.shop_table.shop_table_responsive td { color: var(--fg); }

.woocommerce .wc-proceed-to-checkout { margin-top: var(--gap-24); }
.woocommerce .wc-proceed-to-checkout .checkout-button {
    display: block;
    width: 100%;
    text-align: center;
    background: var(--fg);
    color: var(--bg);
    font-family: var(--sans);
    font-size: var(--text-16);
    font-weight: 500;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    padding: 1em;
    border: none;
    transition: background 0.25s;
    cursor: pointer;
    text-decoration: none;
}
.woocommerce .wc-proceed-to-checkout .checkout-button:hover { background: var(--white); }

.woocommerce .cart-totals .cart_totals_coupon_field {
    display: flex;
    gap: var(--gap-12);
    margin-bottom: var(--gap-24);
}
.woocommerce .cart-totals input.input-text {
    flex: 1;
    background: transparent;
    border: 1px solid var(--rule);
    color: var(--fg);
    font-family: var(--sans);
    font-size: var(--text-16);
    padding: 0.5em 0.8em;
}
.woocommerce .cart-totals button[name="apply_coupon"],
.woocommerce a.button {
    font-family: var(--sans);
    font-size: var(--text-16);
    padding: 0.5em 1.2em;
    border: 1px solid var(--rule);
    color: var(--fg);
    background: transparent;
    cursor: pointer;
    transition: border-color 0.2s;
    text-decoration: none;
}
.woocommerce .cart-totals button[name="apply_coupon"]:hover,
.woocommerce a.button:hover { border-color: var(--fg); }

/* Cart update button */
.woocommerce button[name="update_cart"] {
    font-family: var(--sans);
    font-size: var(--text-12);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    padding: 0.5em 1em;
    border: 1px solid var(--rule);
    color: var(--muted);
    background: transparent;
    cursor: pointer;
    transition: color 0.2s, border-color 0.2s;
}
.woocommerce button[name="update_cart"]:hover { color: var(--fg); border-color: rgba(208,201,192,0.3); }

/* Checkout */
.woocommerce form .form-row { margin-bottom: var(--gap-16); }

.woocommerce form .form-row label {
    display: block;
    font-size: var(--text-12);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--muted);
    margin-bottom: 6px;
}

.woocommerce form .form-row input.input-text,
.woocommerce form .form-row select,
.woocommerce form .form-row textarea {
    width: 100%;
    background: transparent;
    border: 1px solid var(--rule);
    color: var(--fg);
    font-family: var(--sans);
    font-size: var(--text-16);
    padding: 0.6em 0.9em;
    outline: none;
    transition: border-color 0.2s;
    -webkit-appearance: none;
}
.woocommerce form .form-row input.input-text:focus,
.woocommerce form .form-row select:focus,
.woocommerce form .form-row textarea:focus { border-color: rgba(208,201,192,0.5); }
.woocommerce form .form-row select option { background: var(--bg); color: var(--fg); }
.woocommerce form .form-row textarea { resize: vertical; min-height: 100px; }

/* ── Mailchimp standalone form ── */
.mg-mailchimp-form__hp {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
    opacity: 0;
    pointer-events: none;
}
.mg-mailchimp-form__row {
    display: flex;
    gap: 0;
    border: 1px solid var(--rule);
    transition: border-color 0.2s;
}
.mg-mailchimp-form__row:focus-within { border-color: rgba(255,255,255,0.4); }
.mg-mailchimp-form__input {
    flex: 1;
    background: transparent;
    border: none;
    outline: none;
    padding: 0.75em 1em;
    font-size: var(--text-14, 14px);
    color: var(--fg);
    min-width: 0;
}
.mg-mailchimp-form__input::placeholder { opacity: 0.3; }
.mg-mailchimp-form__btn {
    flex-shrink: 0;
    background: var(--fg);
    border: none;
    padding: 0.75em 1.25em;
    font-size: var(--text-12, 12px);
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--bg);
    cursor: pointer;
    transition: opacity 0.2s;
    position: relative;
}
.mg-mailchimp-form__btn:hover { opacity: 0.85; }
.mg-mailchimp-form__btn:disabled { opacity: 0.5; cursor: default; }
.mg-mailchimp-form__btn-loading { display: none; }
.mg-mailchimp-form__btn.is--loading .mg-mailchimp-form__btn-text { visibility: hidden; }
.mg-mailchimp-form__btn.is--loading .mg-mailchimp-form__btn-loading {
    display: block;
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
}
.mg-mailchimp-form__msg {
    margin: 0.6em 0 0;
    font-size: var(--text-12, 12px);
    letter-spacing: 0.04em;
    min-height: 1.4em;
}
.mg-mailchimp-form__msg--ok    { color: #4adf70; }
.mg-mailchimp-form__msg--error { color: #c0392b; }

/* ── Mailchimp opt-in checkbox ── */
.mg-mailchimp-optin-row { margin-top: var(--gap-24) !important; }
.mg-mailchimp-optin__label {
    display: flex !important;
    align-items: flex-start;
    gap: 0.65em;
    cursor: pointer;
    line-height: 1.45;
}
.mg-mailchimp-optin__checkbox {
    flex-shrink: 0;
    width: 14px;
    height: 14px;
    margin-top: 0.18em;
    accent-color: var(--fg);
    cursor: pointer;
}
.mg-mailchimp-optin__text {
    font-size: var(--text-13, 13px);
    opacity: 0.55;
    transition: opacity 0.2s;
}
.mg-mailchimp-optin__label:has(:checked) .mg-mailchimp-optin__text { opacity: 0.9; }

.woocommerce-checkout #payment {
    background: rgba(208,201,192,0.03);
    border: 1px solid var(--rule);
    padding: var(--gap-24);
    margin-top: var(--gap-24);
}

.woocommerce-checkout #payment ul.payment_methods li {
    padding: var(--gap-16) 0;
    border-bottom: 1px solid var(--rule);
    color: var(--fg);
    font-size: var(--text-16);
    display: flex;
    align-items: center;
    gap: var(--gap-16);
}

.woocommerce-checkout #payment .place-order {
    margin-top: var(--gap-24);
}

.woocommerce-checkout #payment #place_order {
    display: block;
    width: 100%;
    background: var(--fg);
    color: var(--bg);
    font-family: var(--sans);
    font-size: var(--text-16);
    font-weight: 500;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    padding: 1em;
    border: none;
    cursor: pointer;
    transition: background 0.25s;
}
.woocommerce-checkout #payment #place_order:hover { background: var(--white); }

.woocommerce-checkout .woocommerce-billing-fields h3,
.woocommerce-checkout .woocommerce-shipping-fields h3,
.woocommerce-checkout #order_review_heading {
    font-size: var(--text-24);
    font-weight: 400;
    color: var(--fg);
    margin-bottom: var(--gap-24);
    border-bottom: 1px solid var(--rule);
    padding-bottom: var(--gap-16);
}

/* Order review */
.woocommerce-checkout-review-order table { font-size: var(--text-16); }

/* My Account */
.woocommerce-MyAccount-navigation {
    margin-bottom: var(--gap-48);
}

.woocommerce-MyAccount-navigation ul {
    display: flex;
    flex-wrap: wrap;
    gap: var(--gap-6);
    list-style: none;
}

.woocommerce-MyAccount-navigation ul li a {
    display: block;
    font-size: var(--text-12);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    padding: 0.5em 1em;
    border: 1px solid var(--rule);
    color: var(--muted);
    transition: color 0.2s, border-color 0.2s;
    text-decoration: none;
}
.woocommerce-MyAccount-navigation ul li.is-active a,
.woocommerce-MyAccount-navigation ul li a:hover {
    color: var(--fg);
    border-color: rgba(208,201,192,0.4);
}

.woocommerce-MyAccount-content {
    font-size: var(--text-16);
    color: var(--primary);
    line-height: 1.65;
}

.woocommerce-MyAccount-content h2 {
    font-size: var(--text-24);
    font-weight: 400;
    color: var(--fg);
    margin-bottom: var(--gap-24);
}

.woocommerce-MyAccount-content .woocommerce-orders-table,
.woocommerce-MyAccount-content .woocommerce-downloads-table,
.woocommerce-MyAccount-content .woocommerce-address-fields {
    margin-top: var(--gap-24);
}

/* Downloadable files table */
.woocommerce-downloads-table td,
.woocommerce-downloads-table th { padding: var(--gap-12) 0; border-bottom: 1px solid var(--rule); }
.woocommerce-downloads-table .download-product { color: var(--fg); }
.woocommerce-downloads-table .download-file a {
    font-size: var(--text-12);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--muted);
    text-decoration: none;
    border-bottom: 1px solid var(--rule);
    padding-bottom: 2px;
    transition: color 0.2s, border-color 0.2s;
}
.woocommerce-downloads-table .download-file a:hover { color: var(--fg); border-color: var(--fg); }

/* Order confirmation */
.woocommerce-order-received h2,
.woocommerce-order-details h2 {
    font-size: var(--text-24);
    font-weight: 400;
    color: var(--fg);
    margin-bottom: var(--gap-24);
}

.woocommerce-bacs-bank-details,
.woocommerce-order-overview { margin-top: var(--gap-24); }

/* WC form row inline (col2-set) — checkout etc. */
.woocommerce .col2-set {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--gap-24);
}
@media (max-width: 680px) { .woocommerce .col2-set { grid-template-columns: 1fr; } }

/* ── My Account login page — match /signup style ── */
body.woocommerce-account:not(.logged-in) .woo-wrap {
    max-width: 480px;
}

/* Single column — hide register (custom /signup page handles it) */
body.woocommerce-account:not(.logged-in) .woocommerce .col2-set {
    display: block;
}
body.woocommerce-account:not(.logged-in) .u-column2,
body.woocommerce-account:not(.logged-in) .woocommerce-column--2 {
    display: none;
}
body.woocommerce-account:not(.logged-in) .u-column1,
body.woocommerce-account:not(.logged-in) .woocommerce-column--1 {
    width: 100%;
    float: none;
}

/* Heading */
body.woocommerce-account:not(.logged-in) .woocommerce-form-login > h2 {
    font-size: clamp(2.5rem, 6vw, 4.5rem);
    font-weight: 900;
    letter-spacing: -0.04em;
    line-height: 0.95;
    margin: 0 0 var(--gap-48);
}

/* Labels */
body.woocommerce-account:not(.logged-in) .woocommerce-form-login .form-row label {
    font-size: 9px !important;
    letter-spacing: 0.2em !important;
    text-transform: uppercase !important;
    opacity: 0.4 !important;
    color: var(--fg) !important;
    font-weight: 700 !important;
    margin-bottom: 0.4em !important;
}

/* Inputs — underline only, matching signup */
body.woocommerce-account:not(.logged-in) .woocommerce-form-login .form-row input.input-text {
    border: none !important;
    border-bottom: 1px solid var(--rule) !important;
    padding: 0.55em 0 !important;
    font-size: var(--text-16, 16px) !important;
    background: transparent !important;
}
body.woocommerce-account:not(.logged-in) .woocommerce-form-login .form-row input.input-text:focus {
    border-color: rgba(255,255,255,0.5) !important;
}

/* Submit button */
body.woocommerce-account:not(.logged-in) .woocommerce-form-login .woocommerce-form-login__submit {
    background: var(--fg) !important;
    color: var(--bg) !important;
    border: none !important;
    padding: 1em 2em !important;
    font-size: var(--text-14) !important;
    font-weight: 700 !important;
    letter-spacing: 0.1em !important;
    text-transform: uppercase !important;
    cursor: pointer !important;
    transition: opacity 0.2s !important;
}
body.woocommerce-account:not(.logged-in) .woocommerce-form-login .woocommerce-form-login__submit:hover {
    opacity: 0.85 !important;
    background: var(--fg) !important;
}

/* Lost password link */
body.woocommerce-account:not(.logged-in) .woocommerce-LostPassword {
    font-size: var(--text-13, 13px);
    opacity: 0.35;
    margin-top: var(--gap-12);
}
body.woocommerce-account:not(.logged-in) .woocommerce-LostPassword a { color: var(--fg); }

/* Loading spinner */
.blockUI.blockOverlay::after {
    content: '';
    display: block;
    width: 24px;
    height: 24px;
    border: 2px solid var(--rule);
    border-top-color: var(--fg);
    border-radius: 50%;
    animation: wc-spin 0.7s linear infinite;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

@keyframes wc-spin { to { transform: translate(-50%, -50%) rotate(360deg); } }

/* ─── Click-to-zoom lightbox ──────────────────── */
[data-click-zoom-lightbox] {
    position: fixed;
    inset: 0;
    z-index: 10000;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(0, 0, 0, 0.92);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.3s ease;
    cursor: zoom-out;
    padding: var(--gap-48);
}
[data-click-zoom-lightbox].is--active {
    opacity: 1;
    pointer-events: auto;
}
[data-click-zoom-lightbox] img.is--zoomed {
    max-width: 100%;
    max-height: 100%;
    width: auto;
    height: auto;
    object-fit: contain;
    cursor: zoom-out;
}
[data-click-zoom-article] img,
img[data-click-zoom] {
    cursor: zoom-in;
}

/* ─── Homepage loader ─────────────────────────── */
.mg-loader {
    position: fixed;
    inset: 0;
    z-index: 99999;
    background: var(--bg);
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}
.mg-loader__word {
    font-family: var(--sans);
    font-size: clamp(28px, 5.5vw, 88px);
    font-weight: 900;
    letter-spacing: -0.04em;
    line-height: 1;
    color: var(--fg);
    text-transform: uppercase;
    text-align: center;
    margin: 0;
    padding-inline: var(--gap-48);
    opacity: 0;
    white-space: nowrap;
}
@media (max-width: 600px) {
    .mg-loader__word {
        font-size: clamp(22px, 8vw, 48px);
        white-space: normal;
    }
}

/* ─── WC Block: Empty cart ────────────────────── */
.wp-block-woocommerce-empty-cart-block {
    padding: var(--gap-48) var(--gap-48) var(--gap-96);
    max-width: 860px;
    margin-inline: auto;
}

.wc-block-cart__empty-cart__title {
    font-family: var(--sans) !important;
    font-size: clamp(22px, 2.8vw, 36px) !important;
    font-weight: 900 !important;
    letter-spacing: -0.02em !important;
    line-height: 1.1 !important;
    color: var(--fg) !important;
    opacity: 0.12;
    text-align: center !important;
    margin-bottom: var(--gap-48) !important;
}

/* Remove the WC separator, add our own rule */
.wp-block-woocommerce-empty-cart-block .wp-block-separator {
    display: none;
}

.wp-block-woocommerce-empty-cart-block h2.wp-block-heading:not(.wc-block-cart__empty-cart__title) {
    font-family: var(--sans) !important;
    font-size: var(--text-12) !important;
    font-weight: 400 !important;
    letter-spacing: 0.14em !important;
    text-transform: uppercase !important;
    opacity: 0.35;
    margin-bottom: var(--gap-48) !important;
    padding-top: var(--gap-48);
    border-top: 1px solid var(--rule);
    text-align: left !important;
}

/* Empty cart — hide WC's sad-face SVG icon */
.wc-block-cart__empty-cart__title.with-empty-cart-icon::before {
    display: none !important;
}

/* Empty cart product grid — matches our shop-grid style */
.wc-block-grid.wp-block-product-new {
    margin: 0 !important;
}

.wc-block-grid__products {
    display: grid !important;
    grid-template-columns: repeat(4, 1fr) !important;
    gap: 1px !important;
    background: var(--rule) !important;
    list-style: none !important;
    padding: 0 !important;
    margin: 0 !important;
}

@media (max-width: 700px) {
    .wc-block-grid__products { grid-template-columns: repeat(2, 1fr) !important; }
}

/*
 * WC all-products.css sets flex:1 0 25%; max-width:25% on .has-4-columns .wc-block-grid__product
 * and adds transparent-border gutters via border-left/right/bottom. Inside our CSS grid these
 * cause extremely narrow cells. Reset them here at equal specificity (loads after WC's CSS).
 */
.wc-block-grid.has-4-columns .wc-block-grid__product,
.wc-block-grid.has-3-columns .wc-block-grid__product,
.wc-block-grid.has-2-columns .wc-block-grid__product {
    flex: none !important;
    max-width: none !important;
    width: 100% !important;
    border-left: none !important;
    border-right: none !important;
    border-bottom: none !important;
    box-sizing: border-box !important;
}

.wc-block-grid__product {
    background: var(--bg);
    display: flex !important;
    flex-direction: column !important;
}

.wc-block-grid__product-link {
    display: block;
    text-decoration: none;
}

.wc-block-grid__product-image {
    overflow: hidden;
    aspect-ratio: 1 / 1;
}

.wc-block-grid__product-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.4s var(--ease-out);
}

.wc-block-grid__product:hover .wc-block-grid__product-image img {
    transform: scale(1.04);
}

.wc-block-grid__product-title {
    font-family: var(--sans) !important;
    font-size: var(--text-14) !important;
    font-weight: 500 !important;
    color: var(--fg) !important;
    padding: var(--gap-12) var(--gap-16) 0 !important;
}

.wc-block-grid__product-price {
    font-family: var(--sans) !important;
    font-size: var(--text-12) !important;
    color: var(--fg) !important;
    opacity: 0.4;
    padding: var(--gap-6) var(--gap-16) var(--gap-12) !important;
}

.wc-block-grid__product-add-to-cart {
    padding: 0 var(--gap-16) var(--gap-16) !important;
    margin-top: auto !important;
}

.wp-block-button__link.add_to_cart_button,
.wp-block-button__link {
    display: inline-block !important;
    font-family: var(--sans) !important;
    font-size: 11px !important;
    font-weight: 500 !important;
    letter-spacing: 0.12em !important;
    text-transform: uppercase !important;
    color: var(--fg) !important;
    background: transparent !important;
    border: 1px solid var(--rule) !important;
    border-radius: 0 !important;
    padding: 0.6em 1.2em !important;
    text-decoration: none !important;
    transition: background 0.2s, color 0.2s !important;
    cursor: pointer !important;
}

.wp-block-button__link.add_to_cart_button:hover,
.wp-block-button__link:hover {
    background: var(--fg) !important;
    color: var(--bg) !important;
}

/* ─── Gravity Forms ────────────────────────────── */
.gform_wrapper {
    margin: 0 !important;
}

.gform_wrapper .gfield {
    margin-bottom: var(--gap-24) !important;
}

.gform_wrapper .gfield_label {
    font-family: var(--sans) !important;
    font-size: 10px !important;
    font-weight: 500 !important;
    letter-spacing: 0.14em !important;
    text-transform: uppercase !important;
    color: var(--fg) !important;
    opacity: 0.4;
    margin-bottom: 0.5em !important;
}

.gform_wrapper input[type="text"],
.gform_wrapper input[type="email"],
.gform_wrapper input[type="tel"],
.gform_wrapper input[type="url"],
.gform_wrapper input[type="number"],
.gform_wrapper select,
.gform_wrapper textarea {
    font-family: var(--sans) !important;
    font-size: var(--text-16) !important;
    font-weight: 400 !important;
    color: var(--fg) !important;
    background: transparent !important;
    border: none !important;
    border-bottom: 1px solid var(--rule) !important;
    border-radius: 0 !important;
    padding: 0.6em 0 !important;
    width: 100% !important;
    box-shadow: none !important;
    outline: none !important;
    appearance: none !important;
    -webkit-appearance: none !important;
    transition: border-color 0.2s !important;
}

.gform_wrapper input[type="text"]:focus,
.gform_wrapper input[type="email"]:focus,
.gform_wrapper input[type="tel"]:focus,
.gform_wrapper select:focus,
.gform_wrapper textarea:focus {
    border-bottom-color: var(--fg) !important;
    outline: none !important;
    background: transparent !important;
}

.gform_wrapper input::placeholder,
.gform_wrapper textarea::placeholder {
    color: var(--fg) !important;
    opacity: 0.2 !important;
}

.gform_wrapper select {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23d0c9c0' stroke-width='1.5'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") !important;
    background-repeat: no-repeat !important;
    background-position: right 0 center !important;
    background-size: 18px !important;
    padding-right: 24px !important;
    cursor: pointer !important;
}

.gform_wrapper select option {
    background: var(--bg);
    color: var(--fg);
}

.gform_wrapper textarea {
    resize: vertical !important;
    min-height: 120px !important;
}

/* Validation error */
.gform_wrapper .gfield_error input,
.gform_wrapper .gfield_error select,
.gform_wrapper .gfield_error textarea {
    border-bottom-color: #e05a5a !important;
}

.gform_wrapper .validation_message,
.gform_wrapper .gfield_description.validation_message {
    font-size: 11px !important;
    letter-spacing: 0.08em !important;
    text-transform: uppercase !important;
    color: #e05a5a !important;
    margin-top: 0.4em !important;
}

.gform_wrapper .gform_validation_errors,
.gform_wrapper .validation_error {
    display: none !important;
}

/* Submit button */
.gform_wrapper .gform_footer,
.gform_wrapper .gform_page_footer {
    padding: 0 !important;
    margin-top: var(--gap-32) !important;
}

.gform_wrapper input[type="submit"],
.gform_wrapper button[type="submit"] {
    font-family: var(--sans) !important;
    font-size: var(--text-12) !important;
    font-weight: 500 !important;
    letter-spacing: 0.16em !important;
    text-transform: uppercase !important;
    color: var(--bg) !important;
    background: var(--fg) !important;
    border: 1px solid var(--fg) !important;
    border-radius: 0 !important;
    padding: 1em 2.5em !important;
    cursor: pointer !important;
    transition: background 0.2s, color 0.2s !important;
    box-shadow: none !important;
}

.gform_wrapper input[type="submit"]:hover,
.gform_wrapper button[type="submit"]:hover {
    background: transparent !important;
    color: var(--fg) !important;
}

/* Confirmation message */
.gform_confirmation_message {
    font-family: var(--sans) !important;
    font-size: clamp(28px, 3.5vw, 56px) !important;
    font-weight: 900 !important;
    letter-spacing: -0.03em !important;
    line-height: 1 !important;
    color: var(--fg) !important;
    padding-block: var(--gap-48) !important;
}

/* Required indicator */
.gform_wrapper .gfield_required {
    color: var(--fg) !important;
    opacity: 0.3;
}
