/*
Theme Name: REVOLVETTO
Theme URI: https://revolvetto.bandcamp.com
Author: REVOLVETTO
Description: Official REVOLVETTO block theme — cinematic noir, editorial typography, tarot-framed artwork and a layered, depth-driven scroll. Pair with the REVOLVETTO Core plugin for the music catalog and player.
Version: 1.1.0
Requires at least: 6.5
Tested up to: 7.1
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: revolvetto
Tags: block-patterns, full-site-editing, one-column, dark, custom-colors, translation-ready
*/

/* ---------------------------------------------------------------- Tokens */
:root {
  --rv-ink: #0b0c0d;
  --rv-char: #17191b;
  --rv-paper: #f1eee8;
  --rv-silver: #a9a7a2;
  --rv-brass: #b49a65;
  --rv-line: rgba(241, 238, 232, 0.14);
  --rv-line-strong: rgba(241, 238, 232, 0.28);
  --rv-display: var(--wp--preset--font-family--display, "Oswald", "Arial Narrow", sans-serif);
  --rv-body: var(--wp--preset--font-family--body, "Inter", Arial, sans-serif);
  --rv-gutter: clamp(1.25rem, 4.2vw, 3.75rem);
  --rv-max: 1320px;
  --rv-header-h: 72px;
  --rv-ease: cubic-bezier(0.2, 0.7, 0.1, 1);
  --rv-hero-p: 0;
  --px: 0;
  --py: 0;
  color-scheme: dark;
}

/* ---------------------------------------------------------------- Base */
html { overflow-x: clip; scroll-behavior: smooth; scroll-padding-top: calc(var(--rv-header-h) + 1rem); }
body {
  margin: 0; overflow-x: clip; background: var(--rv-ink); color: var(--rv-paper);
  -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility;
}
/* Fixed ambient light and film grain behind every page. Static — never animated. */
body::before {
  content: ""; position: fixed; inset: 0; z-index: -2; pointer-events: none;
  background:
    radial-gradient(60vw 50vh at 85% -10%, rgba(180, 154, 101, 0.10), transparent 70%),
    radial-gradient(70vw 60vh at -10% 110%, rgba(169, 167, 162, 0.07), transparent 70%),
    var(--rv-ink);
}
body::after {
  content: ""; position: fixed; inset: -50%; z-index: 100; pointer-events: none; opacity: 0.06;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
::selection { background: var(--rv-brass); color: var(--rv-ink); }
img { max-width: 100%; height: auto; }
a { text-underline-offset: 0.3em; text-decoration-thickness: 1px; }
p { margin: 0 0 1.1em; }
:focus-visible { outline: 2px solid var(--rv-brass); outline-offset: 3px; }
.skip-link.screen-reader-text:focus { clip: auto; clip-path: none; width: auto; height: auto; z-index: 1000; top: 8px; left: 8px; padding: 0.8em 1.2em; background: var(--rv-paper); color: var(--rv-ink); }

.wp-site-blocks { display: flex; flex-direction: column; min-height: 100vh; }
.wp-site-blocks > .rv-main, .wp-site-blocks > main { flex: 1; }
:where(.wp-site-blocks) > * { margin-block-start: 0; }
:where(.rv-main .wp-block-post-content) > * { margin-block-start: 0; }

/* ---------------------------------------------------------------- Type */
.rv-display, h2.rv-display, .is-style-rv-display {
  margin: 0 0 1.25rem; font: 600 clamp(2.6rem, 7.4vw, 6.4rem)/0.9 var(--rv-display); text-transform: uppercase; letter-spacing: 0.005em;
  overflow-wrap: anywhere; hyphens: auto;
}
.rv-page-title {
  margin: 0; font: 600 clamp(3rem, 11vw, 9rem)/0.88 var(--rv-display); text-transform: uppercase; letter-spacing: 0;
  overflow-wrap: anywhere; hyphens: auto;
}
.rv-page-heading { margin: 0 0 1.5rem; font: 600 clamp(2.6rem, 8.5vw, 7rem)/0.9 var(--rv-display); text-transform: uppercase; overflow-wrap: anywhere; }
.rv-lead { max-width: 30ch; margin: 1.6rem 0 0; font: 300 clamp(1.5rem, 3.4vw, 2.6rem)/1.15 var(--rv-display); letter-spacing: 0.01em; color: var(--rv-paper); }
.rv-section__intro { max-width: 36ch; color: var(--rv-silver); font-size: 1.08rem; }
.rv-prose { max-width: 62ch; }
.rv-prose p { font-size: 1.08rem; line-height: 1.75; }
.rv-signoff { font: 400 1.4rem/1.3 var(--rv-display) !important; letter-spacing: 0.02em; color: var(--rv-paper); }
.rv-rule, hr.wp-block-separator.rv-rule {
  width: 100%; max-width: 7rem; height: 0; margin: 2rem 0; border: 0; border-top: 1px solid var(--rv-brass); opacity: 1; background: none;
}

/* ---------------------------------------------------------------- Buttons (core) */
.wp-block-buttons.rv-actions { display: flex; flex-wrap: wrap; gap: 0.75rem; margin: 1.8rem 0 0; }
.wp-block-button .wp-block-button__link { border-radius: 2px; min-height: 48px; display: inline-flex; align-items: center; transition: background 220ms var(--rv-ease), color 220ms var(--rv-ease), border-color 220ms var(--rv-ease); }
.wp-block-button.is-style-rv-primary .wp-block-button__link { background: var(--rv-paper); color: var(--rv-ink); border: 1px solid var(--rv-paper); }
.wp-block-button.is-style-rv-primary .wp-block-button__link:hover { background: #fff; color: var(--rv-ink); }
.wp-block-button.is-style-rv-ghost .wp-block-button__link { background: transparent; color: var(--rv-paper); border: 1px solid var(--rv-line-strong); }
.wp-block-button.is-style-rv-ghost .wp-block-button__link:hover { border-color: var(--rv-paper); color: var(--rv-paper); }
.rv-listen .wp-block-button__link::before {
  content: ""; width: 0; height: 0; margin-right: 0.7em; border-style: solid; border-width: 0.42em 0 0.42em 0.68em; border-color: transparent transparent transparent currentColor;
}

/* ---------------------------------------------------------------- Header */
.rv-site-header {
  position: fixed; inset: 0 0 auto; z-index: 80; height: var(--rv-header-h);
  transition: background 360ms var(--rv-ease), border-color 360ms var(--rv-ease), transform 360ms var(--rv-ease);
  border-bottom: 1px solid transparent;
}
html.rv-scrolled .rv-site-header, body:not(.home) .rv-site-header {
  background: rgba(11, 12, 13, 0.82); border-bottom-color: var(--rv-line);
  -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
}
.admin-bar .rv-site-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .rv-site-header { top: 46px; } }
.rv-header {
  height: 100%; max-width: 1440px; margin: 0 auto; padding: 0 var(--rv-gutter);
  display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 1rem;
}
.rv-brand { margin: 0; font: 600 1.25rem/1 var(--rv-display); letter-spacing: 0.14em; text-transform: uppercase; }
.rv-brand a { color: var(--rv-paper); text-decoration: none; }
.rv-brand .rv-logo { display: block; max-height: 36px; width: auto; }
.rv-nav { justify-self: center; }
.rv-nav .wp-block-navigation__container { gap: 2.2rem; }
.rv-nav .wp-block-navigation-item__content { color: var(--rv-silver); text-decoration: none; padding: 0.6rem 0; transition: color 220ms; }
.rv-nav .wp-block-navigation-item__content:hover, .rv-nav .current-menu-item > .wp-block-navigation-item__content, .rv-nav [aria-current="page"] { color: var(--rv-paper); }
.rv-nav [aria-current="page"] { box-shadow: 0 1px 0 var(--rv-brass); }
.rv-header .rv-header-actions { display: flex; align-items: center; gap: 1.25rem; justify-self: end; }
.rv-header-actions__buy { font-size: 0.72rem !important; }

/* Mobile menu (core navigation overlay) */
.rv-nav .wp-block-navigation__responsive-container-open,
.rv-nav .wp-block-navigation__responsive-container-close { width: 44px; height: 44px; place-items: center; color: var(--rv-paper); }
.rv-nav .wp-block-navigation__responsive-container-close { display: inline-grid; }
@media (max-width: 599px) { .rv-nav .wp-block-navigation__responsive-container-open { display: inline-grid; } }
.rv-nav .wp-block-navigation__responsive-container.is-menu-open {
  background: var(--rv-ink) !important; color: var(--rv-paper) !important; padding: calc(var(--rv-header-h) + 1rem) var(--rv-gutter) 2rem;
}
.rv-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container { gap: 0; align-items: flex-start; width: 100%; }
.rv-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item { width: 100%; border-bottom: 1px solid var(--rv-line); }
.rv-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
  display: block; width: 100%; padding: 1rem 0; font: 600 clamp(2rem, 9vw, 3rem)/1 var(--rv-display); letter-spacing: 0.02em; color: var(--rv-paper);
}
@media (max-width: 599px) {
  .rv-header { grid-template-columns: 1fr auto auto; }
  .rv-nav { order: 3; justify-self: end; }
  .rv-header-actions__buy { display: none !important; }
  .rv-btn--listen span { display: none; }
  .rv-btn--listen { width: 44px; height: 44px; padding: 0; min-height: 44px; border-radius: 50%; }
}
@media (min-width: 600px) and (max-width: 899px) {
  .rv-header-actions__buy { display: none !important; }
}

/* ---------------------------------------------------------------- Layout */
.rv-section {
  position: relative; padding: clamp(5rem, 12vw, 10rem) var(--rv-gutter);
}
.rv-section > * { max-width: var(--rv-max); margin-left: auto; margin-right: auto; }
.rv-main { padding-top: 0; }
.rv-page__head { padding-top: calc(var(--rv-header-h) + clamp(3rem, 9vw, 7rem)); padding-bottom: clamp(2rem, 5vw, 4rem); }
.rv-page__body:not(.rv-page__head) { padding-top: 0; }
.rv-page__content > * { max-width: var(--rv-max); }
.rv-section--top { padding-top: calc(var(--rv-header-h) + clamp(2.5rem, 7vw, 6rem)); }

/* Section index: a fine brass rule with a counter, giving the scroll a continuous editorial rhythm. */
.rv-home { counter-reset: rvsec; }
.rv-home > .rv-section { counter-increment: rvsec; }
.rv-home > .rv-section::before {
  content: counter(rvsec, decimal-leading-zero); position: absolute; top: clamp(2rem, 5vw, 3.5rem); left: var(--rv-gutter); right: var(--rv-gutter);
  max-width: var(--rv-max); margin: 0 auto; padding-bottom: 0.9rem;
  font: 500 0.72rem/1 var(--rv-display); letter-spacing: 0.3em; color: var(--rv-brass);
  border-bottom: 1px solid var(--rv-line);
}

/* Hide catalog-dependent sections until published music exists. */
.rv-needs-catalog:not(:has(.rv-feature, .rv-tracks)) { display: none; }
.rv-section--video:not(:has(.rv-video)) { display: none; }
.rv-section--follow:not(:has(.rv-follow)) { display: none; }
body:not(:has(script[data-rv-playlist])) .rv-listen { display: none; }

.rv-section__head { display: grid; gap: 1rem 4rem; margin-bottom: clamp(2rem, 5vw, 4rem) !important; align-items: end; }
@media (min-width: 900px) { .rv-section__head { grid-template-columns: 7fr 5fr; } .rv-section__head .rv-display { margin: 0; } .rv-section__head .rv-section__intro { margin: 0; } }

/* ---------------------------------------------------------------- Hero */
.rv-hero {
  position: relative; isolation: isolate; overflow: clip;
  min-height: 100svh; display: flex; flex-direction: column; justify-content: flex-end;
  padding: calc(var(--rv-header-h) + 2rem) var(--rv-gutter) clamp(2.5rem, 6vw, 4.5rem);
  perspective: 1200px;
}
.rv-hero > * { width: 100%; max-width: 1440px; margin-left: auto; margin-right: auto; }
.rv-backdrop { position: absolute; inset: 0; z-index: -1; max-width: none; overflow: hidden; pointer-events: none; }
.rv-backdrop [data-rv-layer] {
  position: absolute; inset: 0;
  transform: translate3d(calc(var(--px) * var(--f, 0) * 40px), calc(var(--py) * var(--f, 0) * 26px + var(--rv-hero-p) * var(--f, 0) * 30vh), 0);
  will-change: transform;
}
.rv-backdrop__plate { inset: -6% !important; }
.rv-backdrop__img, .rv-backdrop__video {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 60%;
  filter: saturate(0.75) contrast(1.08) brightness(0.62);
  transform: scale(calc(1.04 + var(--rv-hero-p) * 0.14));
  animation: rv-plate-in 1600ms var(--rv-ease) both;
}
@keyframes rv-plate-in { from { opacity: 0; transform: scale(1.14); } to { opacity: 1; } }
.rv-backdrop__shade {
  position: absolute; inset: 0;
  background:
    linear-gradient(180deg, rgba(11, 12, 13, 0.75) 0%, rgba(11, 12, 13, 0.15) 30%, rgba(11, 12, 13, 0.35) 55%, var(--rv-ink) 100%),
    linear-gradient(90deg, rgba(11, 12, 13, 0.85) 0%, rgba(11, 12, 13, 0.2) 55%, rgba(11, 12, 13, 0.55) 100%);
}
.rv-backdrop__ghost {
  display: grid; place-items: start center; padding-top: 14vh;
  font: 700 31vw/0.8 var(--rv-display); letter-spacing: -0.01em; white-space: nowrap;
  color: transparent; -webkit-text-stroke: 1px rgba(241, 238, 232, 0.07);
  transform-origin: center;
}
.rv-smoke { mix-blend-mode: screen; opacity: 0.55; }
.rv-smoke__wisp {
  position: absolute; border-radius: 50%; filter: blur(48px);
  background: radial-gradient(closest-side, rgba(226, 222, 214, 0.32), rgba(226, 222, 214, 0) 70%);
  animation: rv-drift 26s ease-in-out infinite alternate;
}
.rv-smoke__wisp--1 { width: 60vw; height: 34vw; left: 30%; top: 8%; }
.rv-smoke__wisp--2 { width: 42vw; height: 26vw; left: 52%; top: 32%; animation-duration: 34s; animation-delay: -8s; opacity: 0.8; }
.rv-smoke__wisp--3 { width: 36vw; height: 22vw; left: 8%; top: 46%; animation-duration: 40s; animation-delay: -16s; opacity: 0.6; }
.rv-smoke__wisp--4 { width: 30vw; height: 30vw; left: 66%; top: -4%; animation-duration: 30s; animation-delay: -4s; background: radial-gradient(closest-side, rgba(180, 154, 101, 0.20), transparent 70%); }
@keyframes rv-drift {
  0% { transform: translate3d(0, 0, 0) scale(1) rotate(0deg); }
  50% { transform: translate3d(-6vw, -4vh, 0) scale(1.18) rotate(8deg); }
  100% { transform: translate3d(5vw, -9vh, 0) scale(0.92) rotate(-6deg); }
}
html.rv-motion-paused .rv-smoke__wisp, html.rv-motion-paused .rv-hero::after { animation-play-state: paused; }

.rv-wordmark {
  position: relative; margin: 0 0 clamp(1.5rem, 4vw, 3rem) !important;
  font: 600 clamp(3.2rem, 15.4vw, 18.5rem)/0.8 var(--rv-display) !important; letter-spacing: 0.012em !important;
  text-transform: uppercase; white-space: nowrap; color: var(--rv-paper);
  transform-origin: 0% 100%;
  transform: translate3d(0, calc(var(--rv-hero-p) * -14vh), calc(var(--rv-hero-p) * 140px)) rotateX(calc(var(--rv-hero-p) * 10deg));
  text-shadow: 0 0.04em 0.12em rgba(0, 0, 0, 0.35);
  animation: rv-word-in 1400ms var(--rv-ease) 120ms both;
}
@keyframes rv-word-in {
  from { clip-path: inset(0 0 100% 0); translate: 0 0.18em; letter-spacing: 0.12em; }
  to { clip-path: inset(-10% -5% -10% -5%); translate: 0 0; }
}
.rv-hero__grid {
  display: grid; gap: 2.5rem; align-items: end;
  transform: translate3d(0, calc(var(--rv-hero-p) * -8vh), 0);
  animation: rv-fade-up 1000ms var(--rv-ease) 520ms both;
}
@keyframes rv-fade-up { from { opacity: 0; translate: 0 24px; } to { opacity: 1; translate: 0 0; } }
@media (min-width: 900px) { .rv-hero__grid { grid-template-columns: minmax(0, 6fr) minmax(0, 4fr); gap: 4rem; } .rv-hero-release { justify-self: end; max-width: 420px; } }
.rv-hero__copy { max-width: 36rem; }
.rv-hero__headline { margin: 0 0 1rem; font: 400 clamp(1.9rem, 4.6vw, 3.6rem)/1 var(--rv-display); text-transform: uppercase; letter-spacing: 0.02em; }
.rv-hero__lede { max-width: 40ch; margin: 0; color: #c9c6c0; font-size: clamp(1rem, 1.4vw, 1.12rem); }
.rv-hero .rv-purchase--link { margin-top: 1rem; }
.rv-hero-release { padding: 1.25rem; background: linear-gradient(140deg, rgba(23, 25, 27, 0.78), rgba(11, 12, 13, 0.55)); border: 1px solid var(--rv-line); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
/* Scroll cue */
.rv-hero::after {
  content: ""; position: absolute; left: 50%; bottom: 0; width: 1px; height: clamp(2rem, 6vh, 4rem); background: linear-gradient(var(--rv-brass), transparent);
  transform-origin: top; animation: rv-cue 2.4s var(--rv-ease) infinite;
}
@keyframes rv-cue { 0% { transform: scaleY(0); opacity: 1; } 70% { transform: scaleY(1); opacity: 1; } 100% { transform: scaleY(1); opacity: 0; } }

.rv-motion-toggle {
  position: absolute; z-index: 3; right: var(--rv-gutter); bottom: 1rem; width: auto !important;
  min-height: 36px; padding: 0.4em 0.8em; background: rgba(11, 12, 13, 0.5); color: var(--rv-silver);
  border: 1px solid var(--rv-line); font: 500 0.66rem/1 var(--rv-body); letter-spacing: 0.16em; text-transform: uppercase; cursor: pointer;
}
.rv-motion-toggle:hover { color: var(--rv-paper); border-color: var(--rv-line-strong); }
.rv-motion-toggle[hidden], .rv-motion-toggle [hidden] { display: none; }

/* ---------------------------------------------------------------- Featured release */
.rv-section--feature { padding-top: clamp(6rem, 13vw, 11rem); }
.rv-section--feature .rv-feature__stage { perspective: 1600px; }
.rv-feature__frame { transform-style: preserve-3d; }

/* ---------------------------------------------------------------- About (editorial) */
.rv-about, .rv-about-page { display: grid; gap: clamp(2.5rem, 6vw, 6rem); align-items: center; }
@media (min-width: 900px) {
  .rv-about { grid-template-columns: 7fr 5fr; }
  .rv-about-page { grid-template-columns: 7fr 5fr; align-items: start; }
}
.rv-about__copy .rv-display { font-size: clamp(3rem, 9vw, 7.5rem); }
.rv-about__text { max-width: 44ch; font-size: clamp(1.1rem, 1.6vw, 1.3rem); line-height: 1.6; color: #d6d3cc; }
.rv-about__art, .rv-about-page__art {
  position: relative; margin: 0; overflow: hidden; aspect-ratio: 4 / 5; border: 1px solid rgba(180, 154, 101, 0.4);
  box-shadow: 0 50px 90px -40px rgba(0, 0, 0, 0.9);
}
.rv-about__art::after, .rv-about-page__art::after { content: ""; position: absolute; inset: 10px; border: 1px solid rgba(180, 154, 101, 0.22); pointer-events: none; }
.rv-about__art img, .rv-about-page__art img { width: 100%; height: 118%; object-fit: cover; object-position: 30% 50%; filter: saturate(0.8) brightness(0.85); }
.rv-about-page__art { position: sticky; top: calc(var(--rv-header-h) + 2rem); }
.rv-page .rv-lead + .rv-rule { margin-top: 3rem; }

/* ---------------------------------------------------------------- Support */
.rv-section--support { overflow: clip; }
.rv-section--support::after {
  content: ""; position: absolute; inset: 10% 0; z-index: -1; max-width: none;
  background: url("assets/images/smoke-strip.webp") center / cover no-repeat;
  opacity: 0.22; filter: grayscale(0.4) brightness(0.8);
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 25%, #000 75%, transparent), linear-gradient(transparent, #000 30%, #000 70%, transparent);
  mask-image: linear-gradient(90deg, transparent, #000 25%, #000 75%, transparent);
}
.rv-section--support .rv-display { max-width: 12ch; font-size: clamp(3rem, 9vw, 8rem); }
.rv-section--support .rv-section__intro { color: #cfccc5; max-width: 40ch; margin-left: auto; margin-right: 0; }
.rv-section--support .rv-purchase { margin-left: auto; margin-right: 0; max-width: 40ch; }
@media (max-width: 899px) { .rv-section--support .rv-section__intro, .rv-section--support .rv-purchase { margin-left: 0; } }

/* ---------------------------------------------------------------- Follow */
.rv-section--follow .rv-follow { display: grid; gap: 0 4rem; }
@media (min-width: 900px) { .rv-section--follow .rv-follow { grid-template-columns: 7fr 5fr; align-items: end; } .rv-follow__heading { grid-row: span 3; margin: 0; } }

/* ---------------------------------------------------------------- Pages */
.rv-404__code { margin: 0 0 1rem; font: 500 0.8rem/1 var(--rv-display); letter-spacing: 0.4em; color: var(--rv-brass); }
.rv-detail { display: grid; gap: clamp(3rem, 6vw, 6rem); padding-top: 0; }
.rv-detail > * { max-width: none; margin: 0; }
@media (min-width: 960px) { .rv-detail { grid-template-columns: minmax(0, 8fr) minmax(0, 4fr); max-width: calc(var(--rv-max) + 2 * var(--rv-gutter)); margin: 0 auto; } }
.rv-detail__main > * + *, .rv-detail__side > * + * { margin-top: 3.5rem; }
.rv-detail__main .rv-tracks__heading { font: 500 0.78rem/1.2 var(--rv-body); letter-spacing: 0.24em; text-transform: uppercase; color: var(--rv-silver); }
.rv-detail__side .rv-links { margin-top: 0; }
.rv-detail__side .rv-links__list { flex-direction: column; }
.rv-detail__side .rv-links + .rv-links { margin-top: 2.5rem; }
.rv-single .rv-section--music .rv-tracks__heading { font: 500 0.78rem/1.2 var(--rv-body); letter-spacing: 0.24em; text-transform: uppercase; color: var(--rv-silver); }
.rv-posts .wp-block-post { padding: 2rem 0; border-bottom: 1px solid var(--rv-line); }
.rv-posts__title { font-size: clamp(1.8rem, 4vw, 2.8rem); }
.rv-posts__title a { text-decoration: none; }
.rv-posts__date { color: var(--rv-silver); font-size: 0.85rem; }
.rv-page--plain .rv-page__head { padding-bottom: clamp(5rem, 10vw, 8rem); }
.rv-page--plain .rv-lead { max-width: 34ch; margin-bottom: 2.5rem; }
.rv-page--plain .rv-social { margin-top: 2.5rem; }

/* ---------------------------------------------------------------- Footer */
.rv-site-footer { position: relative; margin-top: clamp(3rem, 8vw, 6rem); border-top: 1px solid var(--rv-line); overflow: clip; }
.rv-footer { max-width: 1440px; margin: 0 auto; padding: clamp(3rem, 7vw, 5rem) var(--rv-gutter) 1.5rem; }
.rv-footer__top { display: grid; gap: 2rem; }
@media (min-width: 900px) { .rv-footer__top { grid-template-columns: 5fr 3fr 4fr; align-items: start; } }
.rv-footer__tagline { max-width: 18ch; margin: 0; font: 400 clamp(1.5rem, 2.6vw, 2.2rem)/1.1 var(--rv-display); text-transform: uppercase; letter-spacing: 0.02em; }
.rv-footer__nav .wp-block-navigation__container { gap: 0.2rem; }
.rv-footer__nav .wp-block-navigation-item__content { color: var(--rv-silver); text-decoration: none; padding: 0.55rem 0; display: inline-block; }
.rv-footer__nav .wp-block-navigation-item__content:hover { color: var(--rv-paper); }
.rv-footer__actions .rv-purchase { margin-top: 0; }
.rv-footer__actions .rv-social { margin-top: 1rem; }
.rv-footer__wordmark {
  margin: clamp(3rem, 8vw, 6rem) 0 0; font: 600 min(16.4vw, 22rem)/0.78 var(--rv-display); transform-origin: 50% 100%; letter-spacing: 0.01em; text-transform: uppercase;
  white-space: nowrap; color: var(--rv-paper); text-align: center; user-select: none;
}
@supports ((-webkit-background-clip: text) or (background-clip: text)) {
  .rv-footer__wordmark {
    background: linear-gradient(180deg, var(--rv-paper) 15%, rgba(241, 238, 232, 0.12) 92%);
    -webkit-background-clip: text; background-clip: text; color: transparent;
  }
}
.rv-footer__legal { margin: 1.5rem 0 0; padding-top: 1rem; border-top: 1px solid var(--rv-line); font-size: 0.78rem; letter-spacing: 0.16em; color: var(--rv-silver); }

/* ---------------------------------------------------------------- Scroll depth (CSS scroll-driven, progressive) */
@media (prefers-reduced-motion: no-preference) {
  @supports (animation-timeline: view()) {
    .rv-home > .rv-section > *,
    .rv-detail > *,
    .rv-section--releases > *,
    .rv-page__body:not(.rv-page__head) > * {
      animation: rv-depth-in linear both;
      animation-timeline: view();
      animation-range: entry 0% entry 45%;
      transform-origin: 50% 100%;
    }
    @keyframes rv-depth-in {
      from { opacity: 0.2; transform: perspective(1200px) translate3d(0, 70px, -120px) rotateX(10deg); }
      to { opacity: 1; transform: none; }
    }
    .rv-feature__frame {
      animation: rv-card-turn linear both;
      animation-timeline: view();
      animation-range: entry 0% exit 100%;
    }
    @keyframes rv-card-turn {
      0% { transform: rotateY(-22deg) rotateX(10deg) translateZ(-80px); }
      45%, 55% { transform: rotateY(0deg) rotateX(0deg) translateZ(0); }
      100% { transform: rotateY(14deg) rotateX(-8deg) translateZ(-60px); }
    }
    .rv-about__art img, .rv-about-page__art img {
      animation: rv-parallax linear both; animation-timeline: view(); animation-range: cover;
    }
    @keyframes rv-parallax { from { transform: translateY(-12%); } to { transform: translateY(0%); } }
    .rv-footer__wordmark {
      animation: rv-assemble linear both; animation-timeline: view(); animation-range: entry 0% entry 100%;
    }
    @keyframes rv-assemble { from { transform: perspective(900px) translate3d(0, 18%, -80px) rotateX(28deg); opacity: 0.25; } to { transform: none; opacity: 1; } }
  }
}
/* JS fallback for browsers without scroll timelines: motion.js adds .rv-io and .is-in */
@media (prefers-reduced-motion: no-preference) {
  html.rv-io .rv-reveal { opacity: 0.2; transform: perspective(1200px) translate3d(0, 60px, -100px) rotateX(9deg); transition: opacity 700ms var(--rv-ease), transform 900ms var(--rv-ease); }
  html.rv-io .rv-reveal.is-in { opacity: 1; transform: none; }
}

/* ---------------------------------------------------------------- Reduced motion & touch */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; scroll-behavior: auto !important; }
  .rv-smoke, .rv-backdrop__video, .rv-hero::after { display: none; }
  .rv-backdrop [data-rv-layer], .rv-wordmark, .rv-hero__grid, .rv-backdrop__img { transform: none !important; }
  .rv-wordmark { clip-path: none !important; }
}
@media (hover: none), (pointer: coarse) {
  .rv-tarot__art { transform: none !important; }
}

/* ---------------------------------------------------------------- Small screens */
@media (max-width: 599px) {
  :root { --rv-header-h: 64px; }
  .rv-hero { min-height: 92svh; }
  .rv-hero-release { grid-template-columns: 88px 1fr; padding: 1rem; }
  .rv-motion-toggle { order: 10; position: relative; right: auto; bottom: auto; display: block; margin: 1.25rem 0 0 auto !important; }
  .rv-motion-toggle[hidden] { display: none; }
  .rv-backdrop__img { object-position: 38% 60%; }
  .rv-tarot { padding: 12px; }
  .rv-tarot__caption { font-size: 0.6rem; letter-spacing: 0.2em; }
}

/* ---------------------------------------------------------------- «Сквозь дым»: continuous WebGL scene (assets/js/scene.js) */
.rv-scene {
  position: fixed; inset: 0; z-index: -1; width: 100%; height: 100%; display: block; pointer-events: none;
  opacity: 0; transition: opacity 1400ms var(--rv-ease);
}
html.rv-scene-on .rv-scene { opacity: 1; }
html.rv-scene-on body::before { display: none; }
/* The hero photograph dissolves into the 3D smoke as the camera moves forward. */
html.rv-scene-on .rv-backdrop {
  opacity: calc(1 - var(--rv-hero-p, 0) * 1.35);
  -webkit-mask-image: linear-gradient(180deg, #000 50%, transparent 98%); mask-image: linear-gradient(180deg, #000 50%, transparent 98%);
}
html.rv-scene-on .rv-backdrop__shade {
  background:
    linear-gradient(180deg, rgba(11, 12, 13, 0.7) 0%, rgba(11, 12, 13, 0.12) 32%, rgba(11, 12, 13, 0.3) 60%, rgba(11, 12, 13, 0) 100%),
    linear-gradient(90deg, rgba(11, 12, 13, 0.85) 0%, rgba(11, 12, 13, 0.18) 55%, rgba(11, 12, 13, 0.5) 100%);
}
html.rv-scene-on .rv-smoke, html.rv-scene-on .rv-hero::after { display: none; }
/* No seams: sections float in the same space instead of stacking as bands. */
html.rv-scene-on .rv-home > .rv-section::before { border-bottom: 0; padding-bottom: 0; opacity: 0.7; }
html.rv-scene-on .rv-section--support::after { display: none; }
html.rv-scene-on .rv-home > .rv-section > * { animation: none !important; transition: none !important; will-change: transform, opacity; transform-origin: 50% 100%; }
html.rv-scene-on .rv-home p, html.rv-scene-on .rv-home .rv-display { text-shadow: 0 1px 18px rgba(11, 12, 13, 0.85); }
html.rv-scene-on .rv-site-footer { border-top: 0; background: linear-gradient(180deg, rgba(11, 12, 13, 0) 0%, rgba(11, 12, 13, 0.82) 38%, rgba(11, 12, 13, 0.94) 100%); }
html.rv-scene-on .rv-tracks__row, html.rv-scene-on .rv-track { -webkit-backdrop-filter: none; backdrop-filter: none; }
