/* ==========================================================================
   COTA MUSIC GROUP — homepage prototype
   Base / components / sections. Breakpoints live in responsive.css.
   WordPress notes: tokens in :root map 1:1 to theme.json / customizer values.
   ========================================================================== */

:root {
  --bg: #050505;
  --surface: #11110f;
  --text: #f4f2ec;
  --muted: #a7a49c;
  --accent: #d8ff38;               /* ACID VINYL — used on < ~10% of the surface area */
  --border: rgba(255, 255, 255, .15);
  --border-s: rgba(255, 255, 255, .08);
  --container: 1440px;
  --gutter: clamp(20px, 3.4vw, 56px);
  --header-h: 88px;
  --f-display: "Inter Tight", "Helvetica Neue", Arial, sans-serif;
  --f-mono: "IBM Plex Mono", ui-monospace, Menlo, Consolas, monospace;
  --f-serif: "Instrument Serif", "Times New Roman", serif;
  --ease: cubic-bezier(.19, 1, .22, 1);
  --ease-io: cubic-bezier(.76, 0, .24, 1);
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: auto; }
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-stopped { overflow: hidden; }
body {
  margin: 0; background: var(--bg); color: var(--text);
  font-family: var(--f-display); font-size: 17px; line-height: 1.5;
  -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
  overflow-x: hidden;
}
img, svg, canvas { display: block; max-width: 100%; }
img { height: auto; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
ul, ol { list-style: none; margin: 0; padding: 0; }
h1, h2, h3, p { margin: 0; }
::selection { background: var(--accent); color: #050505; }

.mono { font-family: var(--f-mono); text-transform: uppercase; letter-spacing: .08em; font-weight: 400; }
.serif-i { font-family: var(--f-serif); font-style: italic; font-weight: 400; text-transform: none; letter-spacing: -.01em; }
.accent { color: var(--accent); }
.container { width: 100%; max-width: calc(var(--container) + var(--gutter) * 2); margin-inline: auto; padding-inline: var(--gutter); }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip-link { position: fixed; left: 12px; top: -60px; z-index: 11000; background: var(--accent); color: #050505; padding: 12px 18px; font-family: var(--f-mono); font-size: 13px; transition: top .2s; }
.skip-link:focus { top: 12px; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }

/* film grain */
.grain {
  position: fixed; inset: -10%; z-index: 9000; pointer-events: none; opacity: .06;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 .9 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
  animation: grain 1.2s steps(5) infinite; will-change: transform;
}
@keyframes grain { 0%{transform:translate(0,0)} 20%{transform:translate(-4%,3%)} 40%{transform:translate(3%,-5%)} 60%{transform:translate(-6%,-2%)} 80%{transform:translate(5%,4%)} 100%{transform:translate(0,0)} }

/* ---------- text-mask primitives ---------- */
.line-mask { display: block; overflow: hidden; padding-bottom: .1em; margin-bottom: -.1em; }
.line-mask > span { display: block; will-change: transform; }
.js-anim .line-mask > span { transform: translateY(112%); }
.js-anim [data-fade] { opacity: 0; transform: translateY(26px); }
.js-anim [data-stagger] > * { opacity: 0; transform: translateY(26px); }

/* ---------- type scale ---------- */
.display { font-size: clamp(44px, 7.4vw, 124px); line-height: .94; letter-spacing: -.045em; font-weight: 700; text-transform: uppercase; }
.display .serif-i { font-size: 1.04em; letter-spacing: -.02em; line-height: .9; }
.display--xl { font-size: clamp(52px, 10vw, 176px); }
.display--mega { font-size: clamp(60px, 13.5vw, 240px); line-height: .88; }
.display-m { font-size: clamp(34px, 4.6vw, 72px); line-height: .96; letter-spacing: -.04em; font-weight: 700; text-transform: uppercase; }
.display-s { font-size: clamp(26px, 2.6vw, 40px); line-height: 1; letter-spacing: -.035em; font-weight: 700; text-transform: uppercase; }
.label { font-family: var(--f-mono); font-size: 12px; letter-spacing: .16em; text-transform: uppercase; color: var(--muted); margin-bottom: clamp(20px, 3vw, 40px); }
.label span { color: var(--accent); }
.fine { font-size: 11px; color: var(--muted); letter-spacing: .1em; margin-top: 28px; }

/* ---------- roll link ---------- */
.roll { display: inline-block; overflow: hidden; line-height: 1.25; height: 1.25em; vertical-align: top; }
.roll > span { display: block; position: relative; transition: transform .55s var(--ease); }
.roll > span::after { content: attr(data-text); position: absolute; left: 0; top: 100%; white-space: nowrap; color: var(--accent); }
.roll:hover > span, .roll:focus-visible > span { transform: translateY(-100%); }

/* ---------- buttons ---------- */
.btn {
  display: inline-flex; align-items: center; gap: 14px; min-height: 52px; padding: 0 24px;
  border: 1px solid var(--text); font-family: var(--f-mono); font-size: 13px; letter-spacing: .1em; text-transform: uppercase;
  position: relative; overflow: hidden; isolation: isolate; white-space: nowrap;
  transition: color .45s var(--ease), border-color .45s var(--ease);
}
.btn::before { content: ""; position: absolute; inset: 0; background: var(--text); transform: translateY(101%); transition: transform .5s var(--ease); z-index: -1; }
.btn:hover::before, .btn:focus-visible::before { transform: translateY(0); }
.btn:hover, .btn:focus-visible { color: #050505; }
.btn svg { width: 18px; height: 18px; flex: none; transition: transform .45s var(--ease); }
.btn:hover svg { transform: translate(3px, -3px); }
.btn b { font-weight: 400; transition: transform .45s var(--ease); }
.btn:hover b { transform: translateY(3px); }
.btn--accent { background: var(--accent); border-color: var(--accent); color: #050505; }
.btn--accent::before { background: var(--text); }
.btn--ghost { border-color: var(--border); }
.btn--small { min-height: 44px; padding: 0 18px; font-size: 12px; }
.btn--large { min-height: 64px; padding: 0 32px; font-size: 14px; }

/* ========================== PRELOADER ========================== */
.preloader {
  position: fixed; inset: 0; z-index: 10000; background: #050505; display: grid; place-items: center; overflow: hidden;
  --r: 0px;
  animation: pre-failsafe .01s 7s forwards;
}
.preloader.is-opening {
  -webkit-mask-image: radial-gradient(circle at 50% 50%, transparent var(--r), #000 calc(var(--r) + 1px));
          mask-image: radial-gradient(circle at 50% 50%, transparent var(--r), #000 calc(var(--r) + 1px));
}
@keyframes pre-failsafe { to { visibility: hidden; } }
.pre-vinyl {
  position: absolute; width: min(92vmin, 880px); aspect-ratio: 1; border-radius: 50%; opacity: .5;
  background: repeating-radial-gradient(circle, rgba(255,255,255,.07) 0 1px, transparent 1px 7px);
  animation: spin 14s linear infinite;
  -webkit-mask-image: radial-gradient(circle, transparent 20%, #000 21%, #000 70%, transparent 71%); mask-image: radial-gradient(circle, transparent 20%, #000 21%, #000 70%, transparent 71%);
}
.pre-stage { position: relative; display: flex; flex-direction: column; align-items: center; gap: 22px; text-align: center; }
.pre-mark { width: clamp(150px, 22vw, 240px); overflow: visible; }
.pre-ring, .pre-t { stroke-dasharray: 1000; stroke-dashoffset: 1000; }
.pre-word { font-size: clamp(22px, 3vw, 34px); font-weight: 700; letter-spacing: -.02em; line-height: 1; }
.pre-word .line-mask:last-child { font-family: var(--f-mono); font-weight: 400; font-size: .42em; letter-spacing: .32em; margin-top: 12px; color: var(--muted); }
.pre-loc { font-size: 11px; color: var(--accent); letter-spacing: .3em; }
.pre-circle { position: absolute; left: 50%; top: 50%; width: 10px; height: 10px; margin: -5px 0 0 -5px; border: 1px solid rgba(255,255,255,.5); border-radius: 50%; opacity: 0; }
.pre-word .line-mask > span, .pre-loc .line-mask > span { transform: translateY(112%); }
@keyframes spin { to { transform: rotate(360deg); } }
/* if JS never runs the preloader should not trap the page */
html:not(.js) .preloader { display: none; }

/* ========================== HEADER ========================== */
.site-header {
  position: fixed; inset: 0 0 auto 0; z-index: 900; height: var(--header-h);
  display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 24px;
  padding-inline: var(--gutter);
  transition: background .5s var(--ease), border-color .5s, transform .6s var(--ease), height .5s var(--ease);
  border-bottom: 1px solid transparent;
}
.site-header.is-scrolled { background: rgba(5,5,5,.72); -webkit-backdrop-filter: blur(16px) saturate(1.2); backdrop-filter: blur(16px) saturate(1.2); border-color: var(--border-s); --header-h: 74px; height: 74px; }
.site-header.is-hidden { transform: translateY(-101%); }
.brand { display: inline-flex; align-items: center; gap: 14px; justify-self: start; min-height: 44px; }
.brand-mark { width: 62px; height: 62px; transition: transform .8s var(--ease); }
.brand:hover .brand-mark { transform: rotate(120deg); }
.brand-name { font-size: 10px; line-height: 1.25; letter-spacing: .22em; }
.primary-nav ul { display: flex; gap: clamp(18px, 2.4vw, 40px); }
.primary-nav a { font-family: var(--f-mono); font-size: 12px; letter-spacing: .14em; text-transform: uppercase; height: 44px; line-height: 44px; }
.header-actions { display: flex; align-items: center; gap: clamp(14px, 1.8vw, 28px); justify-self: end; }
.bag-link { font-size: 12px; letter-spacing: .14em; height: 44px; line-height: 44px; }
.bag-link b { font-weight: 400; }
.menu-toggle { display: none; width: 44px; height: 44px; position: relative; }
.menu-toggle i { position: absolute; left: 10px; right: 10px; height: 1.5px; background: var(--text); transition: transform .5s var(--ease), top .5s var(--ease); }
.menu-toggle i:first-child { top: 18px; } .menu-toggle i:last-child { top: 26px; }
.menu-toggle[aria-expanded="true"] i:first-child { top: 22px; transform: rotate(45deg); }
.menu-toggle[aria-expanded="true"] i:last-child { top: 22px; transform: rotate(-45deg); }

.mobile-menu { position: fixed; inset: 0; z-index: 850; background: var(--bg); padding: calc(var(--header-h) + 40px) var(--gutter) 40px; display: flex; flex-direction: column; justify-content: space-between; clip-path: inset(0 0 100% 0); }
.mobile-menu[hidden] { display: none; }
.mobile-menu ul { display: flex; flex-direction: column; }
.mobile-menu li { border-bottom: 1px solid var(--border-s); overflow: hidden; }
.mobile-menu li a { display: block; font-size: clamp(36px, 11vw, 64px); font-weight: 700; letter-spacing: -.04em; text-transform: uppercase; padding: 14px 0; }
.mobile-menu .btn { align-self: flex-start; }

/* ========================== CURSOR ========================== */
.cursor { position: fixed; left: 0; top: 0; z-index: 9500; pointer-events: none; width: 0; height: 0; display: none; }
.has-cursor .cursor { display: block; }
.has-cursor, .has-cursor a, .has-cursor button, .has-cursor [data-cursor] { cursor: none; }
.has-cursor input, .has-cursor textarea { cursor: text; }
.cursor::before { content: ""; position: absolute; left: 0; top: 0; width: 10px; height: 10px; margin: -5px 0 0 -5px; border-radius: 50%; background: var(--text); mix-blend-mode: difference; transition: width .45s var(--ease), height .45s var(--ease), margin .45s var(--ease), background .3s; }
.cursor.is-label::before { width: 92px; height: 92px; margin: -46px 0 0 -46px; background: var(--accent); mix-blend-mode: normal; }
.cursor.is-hover::before { width: 38px; height: 38px; margin: -19px 0 0 -19px; }
.cursor-label { position: absolute; left: 0; top: 0; transform: translate(-50%, -50%); font-size: 10px; letter-spacing: .12em; color: #050505; white-space: nowrap; opacity: 0; transition: opacity .25s; text-align: center; line-height: 1.15; max-width: 70px; }
.cursor.is-label .cursor-label { opacity: 1; }

/* ========================== HERO ========================== */
.hero { position: relative; }
.hero-pin { position: relative; height: 100vh; height: 100svh; overflow: hidden; background: var(--bg); }
.hero-gl { position: absolute; inset: 0; z-index: 1; }
.hero-gl canvas { position: absolute; inset: 0; width: 100%; height: 100%; }
.hero-fallback { display: none; position: absolute; inset: 0; place-items: center; }
.no-webgl .hero-fallback { display: grid; }
.hero-fallback-disc { width: min(62vmin, 560px); aspect-ratio: 1; border-radius: 50%; margin-left: 28vw; display: grid; place-items: center; animation: spin 24s linear infinite;
  background: radial-gradient(circle, #f4f2ec 0 17%, transparent 17.5%), conic-gradient(from 20deg, #0c0c0b, #2a2a27 12%, #0c0c0b 25%, #0c0c0b 50%, #262623 62%, #0c0c0b 75%), #0c0c0b; box-shadow: 0 0 0 1px var(--border); }
.hero-fallback-disc svg { width: 17%; color: #050505; }

.hero-content { position: absolute; inset: 0; z-index: 3; display: flex; flex-direction: column; justify-content: flex-end; padding: calc(var(--header-h) + 28px) var(--gutter) clamp(28px, 4.4vh, 52px); pointer-events: none; }
.hero-content a { pointer-events: auto; }
.hero-eyebrow { position: absolute; left: var(--gutter); top: calc(var(--header-h) + 34px); display: flex; align-items: center; gap: 14px; font-size: 11px; letter-spacing: .2em; color: var(--muted); }
.hero-eyebrow i { width: 24px; height: 1px; background: var(--border); }
.hero-title { font-size: clamp(46px, 12.1vw, 196px); line-height: .86; letter-spacing: -.055em; font-weight: 800; text-transform: uppercase; margin-bottom: clamp(22px, 4vh, 48px); }
.hero-line { will-change: transform; }
.hero-line--c { padding-left: .6em; }
.hero-line--c .serif-i { font-size: 1.05em; letter-spacing: -.03em; color: var(--accent); }
.hero-foot { display: flex; justify-content: space-between; align-items: flex-end; gap: 32px; border-top: 1px solid var(--border); padding-top: clamp(16px, 2.4vh, 26px); }
.hero-sub { max-width: 440px; color: var(--muted); font-size: clamp(15px, 1.2vw, 18px); line-height: 1.45; }
.hero-cta { display: flex; gap: 12px; flex-wrap: wrap; }
.hero-meta { position: absolute; top: calc(var(--header-h) + 34px); font-size: 11px; letter-spacing: .2em; color: var(--muted); }
.hero-meta--l { display: none; }
.hero-meta--r { right: var(--gutter); }

.hero-portal { position: absolute; inset: 0; z-index: 6; clip-path: circle(0px at 50% 50%); background: var(--bg); pointer-events: none; }
.hero-portal img { width: 100%; height: 100%; object-fit: cover; transform: scale(1.12); }
.portal-label { position: absolute; left: var(--gutter); bottom: 28px; font-size: 12px; letter-spacing: .2em; color: var(--text); }

/* ========================== 01 MANIFESTO ========================== */
.manifesto { position: relative; background: var(--bg); padding-top: 0; }
.manifesto-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: clamp(16px, 2vw, 32px); align-items: stretch; }
.manifesto-copy { grid-column: 1 / span 6; padding-block: clamp(100px, 18vh, 200px) clamp(100px, 24vh, 260px); display: flex; flex-direction: column; }
.manifesto-copy > * + * { margin-top: clamp(40px, 20vh, 230px); }
.manifesto-copy .label + .display { margin-top: 0; }
.manifesto-text p { font-size: clamp(20px, 2.1vw, 32px); line-height: 1.28; letter-spacing: -.02em; max-width: 24em; }
.manifesto-text p + p { color: var(--muted); margin-top: 1.2em; }
.principles li { display: flex; align-items: baseline; gap: 22px; border-top: 1px solid var(--border); padding: 18px 0; }
.principles li:last-child { border-bottom: 1px solid var(--border); }
.principles span { color: var(--accent); font-size: 11px; width: 28px; flex: none; }
.principles strong { font-size: clamp(26px, 3.4vw, 52px); letter-spacing: -.04em; font-weight: 700; line-height: 1; }
.manifesto-visual { grid-column: 8 / span 5; }
.manifesto-sticky { position: sticky; top: 0; height: 100vh; height: 100svh; padding-block: clamp(76px, 12vh, 120px) clamp(48px, 8vh, 84px); }
.tri-reveal { position: relative; height: 100%; overflow: hidden; background: var(--surface); }
.tri-reveal img { width: 100%; height: 100%; object-fit: cover; transform: scale(1.1); }
.tri-outline { position: absolute; left: -6%; right: -6%; top: 0; bottom: 0; width: 112%; height: 100%; color: var(--text); pointer-events: none; opacity: .9; }
.tri-outline polygon { stroke-dasharray: 1000; stroke-dashoffset: 0; }
.visual-cap { position: absolute; left: 0; bottom: 16px; font-size: 10px; letter-spacing: .18em; color: var(--muted); z-index: 4; }

/* ========================== MARQUEE ========================== */
.marquee { padding-block: clamp(36px, 7vw, 110px); border-block: 1px solid var(--border-s); overflow: hidden; background: var(--bg); }
.marquee-row { overflow: hidden; }
.marquee-row + .marquee-row { margin-top: .08em; }
.marquee-track { display: flex; width: max-content; will-change: transform; animation: marq 46s linear infinite; }
.marquee-row--b .marquee-track { animation-direction: reverse; animation-duration: 52s; }
.marquee-track span { flex: none; white-space: pre; font-size: clamp(54px, 10vw, 168px); font-weight: 800; line-height: 1; letter-spacing: -.05em; text-transform: uppercase; padding-right: .25em; }
.marquee-row--b .marquee-track span { color: transparent; -webkit-text-stroke: 1px rgba(244,242,236,.55); }
@keyframes marq { to { transform: translateX(-33.3333%); } }

/* ========================== 02 RECORDS ========================== */
.records { position: relative; background: var(--bg); }
.records-pin { min-height: 100vh; min-height: 100svh; display: flex; flex-direction: column; justify-content: center; gap: clamp(28px, 5vh, 56px); padding-block: clamp(80px, 11vh, 120px) clamp(24px, 4vh, 56px); }
.records-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 32px; }
.records-head .label { margin-bottom: 20px; }
.records-head .display { font-size: clamp(36px, min(6.6vw, 9.5vh), 112px); }
.records-viewport { overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; scroll-snap-type: x proximity; }
.records-viewport::-webkit-scrollbar { display: none; }
.records-viewport.is-h-scroll { overflow: hidden; scroll-snap-type: none; }
.records-track { display: flex; gap: clamp(40px, 8vw, 128px); padding-inline: var(--gutter); width: max-content; align-items: flex-start; }
.product-item { width: clamp(230px, min(27vw, calc(100svh - 585px)), 420px); flex: none; scroll-snap-align: start; scroll-margin-left: var(--gutter); }
.product-card { position: relative; }
.product-link { display: block; }
.product-media { position: relative; aspect-ratio: 1; }
.product-sleeve { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 2; box-shadow: 0 30px 60px -30px rgba(0,0,0,.9); border: 1px solid var(--border-s); }
.product-vinyl {
  position: absolute; z-index: 1; left: 3%; top: 3%; width: 94%; aspect-ratio: 1; border-radius: 50%;
  translate: 5% 0; transition: translate .8s var(--ease);
  background:
    radial-gradient(circle, #050505 0 2.2%, transparent 2.6%),
    conic-gradient(from 10deg, rgba(255,255,255,0) 0, rgba(255,255,255,.2) 6%, rgba(255,255,255,0) 14%, rgba(255,255,255,0) 50%, rgba(255,255,255,.16) 56%, rgba(255,255,255,0) 64%),
    repeating-radial-gradient(circle, #0d0d0c 0 2px, #171715 2px 3px);
  box-shadow: 0 0 0 1px rgba(255,255,255,.1);
}
.pv-label { position: absolute; left: 33%; top: 33%; width: 34%; height: 34%; border-radius: 50%; background: var(--text); display: grid; place-items: center; color: #050505; }
.pv-label svg { width: 70%; height: 70%; }
.pv-label::after { content: ""; position: absolute; width: 9%; height: 9%; border-radius: 50%; background: #050505; }
.product-card:hover .product-vinyl, .product-card:focus-within .product-vinyl { translate: 32% 0; animation: vspin 5s linear infinite; }
@keyframes vspin { to { rotate: 360deg; } }
.product-info { padding-top: clamp(12px, 2vh, 20px); }
.product-artist { font-size: 11px; color: var(--muted); letter-spacing: .16em; }
.product-title { font-size: clamp(24px, 2.2vw, 34px); font-weight: 700; letter-spacing: -.035em; line-height: 1.05; margin-top: 6px; }
.product-format { font-size: 11px; color: var(--muted); margin-top: 10px; letter-spacing: .12em; }
.product-foot { display: flex; align-items: center; gap: 10px; flex-wrap: nowrap; margin-top: clamp(10px, 1.6vh, 18px); padding-top: clamp(10px, 1.6vh, 16px); border-top: 1px solid var(--border-s); }
.product-price { font-size: 20px; font-weight: 600; letter-spacing: -.02em; }
.product-stock { font-size: 10px; letter-spacing: .14em; color: var(--text); display: inline-flex; align-items: center; gap: 8px; }
.product-stock::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--accent); }
.product-stock.is-low::before { background: #ff5a24; } .product-stock.is-pre::before { background: transparent; border: 1px solid var(--text); }
.add-to-bag { margin-left: auto; min-height: 44px; padding: 0 12px; white-space: nowrap; border: 1px solid var(--border); font-size: 10.5px; letter-spacing: .1em; transition: background .35s, color .35s, border-color .35s; }
.add-to-bag:hover, .add-to-bag.is-solid { background: var(--accent); color: #050505; border-color: var(--accent); }
.add-to-bag.is-added { background: var(--text); color: #050505; border-color: var(--text); }
.product-item--end { width: clamp(260px, 24vw, 380px); align-self: stretch; }
.records-end { height: 100%; min-height: 420px; border: 1px solid var(--border); display: flex; flex-direction: column; justify-content: space-between; align-items: flex-start; padding: 28px; gap: 28px; position: relative; overflow: hidden; }
.records-end > svg { width: 62%; align-self: center; color: var(--border); transition: transform 1s var(--ease), color .6s; }
.records-end:hover > svg { transform: rotate(60deg) scale(1.08); color: rgba(216,255,56,.6); }
.records-progress { height: 1px; background: var(--border); margin-inline: var(--gutter); position: relative; }
.records-progress i { position: absolute; left: 0; top: -1px; height: 3px; width: 100%; background: var(--accent); transform-origin: left; transform: scaleX(0); }

/* ========================== 03 SERVICES ========================== */
.services { padding-block: clamp(90px, 14vw, 200px); background: var(--bg); }
.section-head { margin-bottom: clamp(50px, 8vw, 110px); }
.section-lede { max-width: 34em; color: var(--muted); font-size: clamp(17px, 1.5vw, 22px); line-height: 1.4; margin-top: clamp(24px, 3vw, 40px); }
.services-layout { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 4.4fr); column-gap: clamp(40px, 7vw, 120px); align-items: start; }
.service-index { border-bottom: 1px solid var(--border); padding-bottom: 6vh; }
.service { position: relative; display: grid; grid-template-columns: clamp(36px, 4vw, 56px) minmax(0, 1.5fr) minmax(0, 1fr) 32px; align-items: center; column-gap: 28px; border-top: 1px solid var(--border); padding-block: clamp(22px, 3vw, 40px); min-height: 30vh; opacity: .3; transition: opacity .6s var(--ease); }
.service.is-active { opacity: 1; }
.service::after { content: ""; position: absolute; left: 0; top: -1px; height: 1px; width: 100%; background: var(--accent); transform: scaleX(0); transform-origin: left; transition: transform .8s var(--ease); }
.service.is-active::after { transform: scaleX(1); }
.service-num { font-size: 12px; color: var(--muted); letter-spacing: .14em; }
.service.is-active .service-num { color: var(--accent); }
.service-name { font-size: inherit; line-height: 1; }
.service-toggle { overflow-wrap: anywhere; text-align: left; min-height: 44px; font-size: clamp(26px, 3vw, 52px); font-weight: 700; letter-spacing: -.045em; line-height: .98; text-transform: uppercase; transition: transform .8s var(--ease), color .4s; display: block; width: 100%; }
.service.is-active .service-toggle { transform: translateX(clamp(4px, .6vw, 10px)); }
.service-panel { display: block; }
.service-desc { font-size: clamp(15px, 1.15vw, 17px); color: var(--muted); line-height: 1.45; max-width: 26em; }
.service.is-active .service-desc { color: var(--text); }
.service-thumb { display: none; }
.service-arrow { width: 28px; height: 28px; justify-self: end; transition: transform .6s var(--ease), color .4s; color: var(--muted); }
.service.is-active .service-arrow { transform: rotate(0); color: var(--accent); }
.service:not(.is-active) .service-arrow { transform: rotate(45deg); }

.service-preview { position: sticky; top: 14vh; align-self: start; }
.service-frame { position: relative; aspect-ratio: 4 / 5; overflow: hidden; background: var(--surface); border: 1px solid var(--border-s); }
.sp-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; clip-path: inset(100% 0 0 0); }
.sp-img.is-active { clip-path: inset(0); z-index: 2; }
.service-bignum { position: absolute; z-index: 5; left: -.06em; bottom: -.04em; font-size: clamp(90px, 13vw, 220px); height: 1em; overflow: hidden; line-height: 1; pointer-events: none; color: #fff; text-shadow: 0 2px 30px rgba(0,0,0,.5); }
.service-bignum-col span { display: block; height: 1em; font-weight: 800; letter-spacing: -.07em; }
.mono-num span { font-family: var(--f-display); font-variant-numeric: tabular-nums; }
.service-preview .visual-cap { position: static; margin-top: 12px; mix-blend-mode: normal; }

/* ========================== BRAND MOTION ========================== */
.brand-motion { position: relative; background: var(--bg); }
.brand-pin { position: relative; height: 100vh; height: 100svh; overflow: hidden; display: grid; place-items: center; }
.brand-label { position: absolute; top: calc(var(--header-h) + 24px); left: var(--gutter); margin: 0; z-index: 3; }
.brand-geo { position: absolute; left: 50%; top: 50%; width: min(115vw, 102vh); height: min(115vw, 102vh); transform: translate(-50%, -50%); color: var(--text); z-index: 2; overflow: visible; pointer-events: none; }
.brand-words { position: relative; z-index: 1; text-align: center; font-size: clamp(54px, 12.5vw, 220px); font-weight: 800; letter-spacing: -.06em; line-height: .88; text-transform: uppercase; }
.bw { overflow: hidden; padding-bottom: .08em; }
.bw span { display: block; }
.bw--2 span { font-family: var(--f-serif); font-style: italic; font-weight: 400; text-transform: none; letter-spacing: -.02em; color: var(--accent); }
.js-anim .bw span { transform: translateY(110%); }

/* ========================== CINEMATIC ========================== */
.cinematic { position: relative; height: 120vh; height: 120svh; overflow: hidden; display: flex; align-items: flex-end; background: #000; }
.cine-media { position: absolute; inset: -12% 0; }
.cine-media img { width: 100%; height: 100%; object-fit: cover; transform-origin: 50% 60%; }
.cine-shade { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(5,5,5,.9) 0, rgba(5,5,5,.2) 30%, rgba(5,5,5,.35) 60%, rgba(5,5,5,.92) 100%); }
.cine-title { position: relative; z-index: 3; padding: 0 var(--gutter) clamp(50px, 9vh, 110px); }
.cine-cap { left: var(--gutter); bottom: 18px; }

/* ========================== STORE ========================== */
.store { padding-block: clamp(100px, 14vw, 210px); background: var(--bg); position: relative; }
.store::before { content: ""; position: absolute; right: -10vw; top: 50%; width: 70vw; aspect-ratio: 1; transform: translateY(-50%); border-radius: 50%; background: repeating-radial-gradient(circle, rgba(255,255,255,.045) 0 1px, transparent 1px 9px); pointer-events: none; -webkit-mask-image: radial-gradient(circle, #000 0, transparent 68%); mask-image: radial-gradient(circle, #000 0, transparent 68%); }
.store-grid { position: relative; display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); column-gap: clamp(40px, 8vw, 140px); align-items: center; }
.store-text { font-size: clamp(20px, 2.1vw, 30px); line-height: 1.25; letter-spacing: -.02em; max-width: 18em; margin-block: clamp(26px, 4vw, 48px); }
.store-feature { justify-self: end; width: min(100%, 520px); padding-right: clamp(0px, 4vw, 70px); }
.product-card--feature .product-vinyl { translate: 22% 0; }

/* ========================== TYPE BREAK ========================== */
.typebreak { padding-block: clamp(90px, 16vw, 240px); background: var(--bg); overflow: hidden; }
.typebreak .container { position: relative; }
.tb-line { font-size: clamp(54px, 13vw, 232px); font-weight: 800; letter-spacing: -.06em; line-height: .86; text-transform: uppercase; overflow: hidden; padding-bottom: .1em; text-align: center; }
.tb-line span { display: block; }
.tb-line--i span { font-family: var(--f-serif); font-style: italic; font-weight: 400; letter-spacing: -.03em; text-transform: none; font-size: 1.05em; }
.tb-line--accent span { color: var(--accent); }
.tb-tri { width: clamp(46px, 6vw, 96px); height: clamp(46px, 6vw, 96px); margin: clamp(24px, 4vw, 60px) auto; color: var(--muted); }
.js-anim .tb-line span { transform: translateY(110%); }

/* ========================== 04 DISTRIBUTION ========================== */
.distribution { padding-block: clamp(80px, 12vw, 180px) clamp(70px, 10vw, 150px); background: var(--surface); position: relative; }
.dist-path { position: relative; margin-bottom: clamp(100px, 14vw, 200px); }
.dist-svg { width: 100%; height: clamp(150px, 15vw, 220px); overflow: visible; }
.dist-disc { position: absolute; left: 0; top: 0; width: clamp(40px, 4vw, 60px); aspect-ratio: 1; border-radius: 50%; margin: calc(clamp(40px, 4vw, 60px) / -2) 0 0 calc(clamp(40px, 4vw, 60px) / -2); z-index: 3; will-change: transform;
  background: radial-gradient(circle, var(--accent) 0 16%, #050505 17% 22%, transparent 23%), repeating-radial-gradient(circle, #0d0d0c 0 2px, #1e1e1b 2px 3px); box-shadow: 0 0 0 1px rgba(255,255,255,.35), 0 8px 24px rgba(0,0,0,.6); }
.dist-disc i { position: absolute; inset: 0; border-radius: 50%; background: conic-gradient(rgba(255,255,255,0) 0, rgba(255,255,255,.35) 8%, rgba(255,255,255,0) 18%, rgba(255,255,255,0) 50%, rgba(255,255,255,.3) 58%, rgba(255,255,255,0) 68%); }
.dist-steps { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); column-gap: clamp(16px, 2vw, 32px); margin-top: clamp(0px, 1vw, 20px); }
.dist-steps li { border-top: 1px solid var(--border); padding-top: 20px; }
.dist-steps li:nth-child(even) { margin-top: clamp(28px, 4vw, 64px); }
.dist-steps span { font-size: 11px; color: var(--accent); letter-spacing: .16em; }
.dist-steps h3 { font-size: clamp(22px, 2.4vw, 38px); font-weight: 700; letter-spacing: -.04em; margin: 12px 0 10px; }
.dist-steps p { font-size: 15px; color: var(--muted); line-height: 1.45; max-width: 16em; }

.apply { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); column-gap: clamp(40px, 7vw, 120px); padding-top: clamp(50px, 6vw, 90px); border-top: 1px solid var(--border); }
.apply-intro .label { margin-bottom: 22px; }
.apply-intro .btn { margin-top: clamp(28px, 4vw, 52px); }
.apply-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: clamp(20px, 3vw, 48px); row-gap: clamp(8px, 1.5vw, 18px); }
.field { position: relative; }
.field--wide { grid-column: 1 / -1; }
.field input, .field textarea { width: 100%; background: transparent; border: 0; border-bottom: 1px solid var(--border); border-radius: 0; color: var(--text); font: 500 clamp(18px, 1.8vw, 24px)/1.3 var(--f-display); letter-spacing: -.02em; padding: 30px 0 10px; resize: none; transition: border-color .4s; outline: none; }
.field textarea { min-height: 96px; }
.field label { position: absolute; left: 0; top: 30px; font-family: var(--f-mono); font-size: 12px; letter-spacing: .14em; color: var(--muted); pointer-events: none; transform-origin: left top; transition: transform .45s var(--ease), color .3s; }
.field input:focus + label, .field textarea:focus + label, .field input:not(:placeholder-shown) + label, .field textarea:not(:placeholder-shown) + label { transform: translateY(-26px) scale(.82); color: var(--accent); }
.field input:focus, .field textarea:focus { border-color: var(--accent); }
.field input:focus-visible, .field textarea:focus-visible { outline: none; }
.field.is-invalid input, .field.is-invalid textarea { border-color: #ff5a24; }
.field-submit { display: flex; align-items: center; gap: 24px; flex-wrap: wrap; margin-top: clamp(20px, 3vw, 36px); }
.form-status { font-size: 12px; color: var(--accent); letter-spacing: .1em; }

/* ========================== HOW IT WORKS ========================== */
.process { background: var(--bg); position: relative; }
.process-grid { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); column-gap: clamp(40px, 6vw, 100px); }
.process-sticky { position: sticky; top: 0; height: 100vh; height: 100svh; display: flex; flex-direction: column; justify-content: center; padding-block: 90px 50px; }
.process-sticky .label { margin-bottom: 26px; }
.process-sticky .display { font-size: clamp(38px, 5.4vw, 92px); }
.process-counter { display: flex; align-items: flex-end; gap: 16px; margin-top: clamp(24px, 5vh, 56px); }
.process-num { font-size: clamp(110px, 17vw, 280px); height: .84em; line-height: .84; overflow: hidden; font-weight: 800; letter-spacing: -.08em; }
.process-num #process-num-col span { display: block; height: .84em; line-height: .84; }
.process-total { font-size: 13px; color: var(--muted); padding-bottom: .6em; letter-spacing: .14em; }
.process-line { height: 2px; background: var(--border); margin-top: clamp(20px, 4vh, 40px); max-width: 520px; position: relative; overflow: hidden; }
.process-line i { position: absolute; inset: 0; background: var(--accent); transform-origin: left; transform: scaleX(.2); }
.process-steps { padding-block: 40vh 40vh; }
.pstep { min-height: 62vh; display: flex; flex-direction: column; justify-content: center; border-left: 1px solid var(--border); padding-left: clamp(24px, 3vw, 48px); opacity: .22; transition: opacity .6s var(--ease), border-color .6s; }
.pstep.is-active { opacity: 1; border-color: var(--accent); }
.pstep-n { font-size: 12px; color: var(--accent); letter-spacing: .16em; margin-bottom: 16px; }
.pstep h3 { font-size: clamp(26px, 3vw, 48px); font-weight: 700; letter-spacing: -.04em; line-height: 1; text-transform: uppercase; max-width: 11em; }
.pstep p { margin-top: 20px; color: var(--muted); max-width: 28em; font-size: clamp(16px, 1.25vw, 19px); line-height: 1.5; }

/* ========================== 05 CONTACT ========================== */
.contact { padding-block: clamp(100px, 14vw, 220px) clamp(80px, 10vw, 150px); background: var(--bg); border-top: 1px solid var(--border-s); position: relative; overflow: hidden; }
.contact .display--mega .serif-i { font-size: 1.02em; }
.contact-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 48px; align-items: end; margin-top: clamp(50px, 7vw, 100px); }
.contact-lede { font-size: clamp(22px, 2.6vw, 38px); line-height: 1.15; letter-spacing: -.03em; font-weight: 500; }
.contact-list { margin-top: 32px; font-size: 13px; letter-spacing: .08em; }
.contact-list li { display: flex; gap: 24px; padding: 12px 0; border-top: 1px solid var(--border-s); max-width: 520px; }
.contact-list li span { width: 100px; color: var(--muted); flex: none; }
.contact-list a { text-transform: none; letter-spacing: .02em; transition: color .3s; min-height: 24px; }
.contact-list a:hover { color: var(--accent); }
.contact-cta { display: flex; flex-direction: column; gap: 14px; align-items: stretch; }
.contact-cta .btn { justify-content: space-between; }

/* ========================== FOOTER ========================== */
.site-footer { position: relative; background: var(--bg); border-top: 1px solid var(--border); overflow: hidden; padding-top: clamp(60px, 8vw, 110px); }
.footer-inner { position: relative; z-index: 2; padding-bottom: 28px; }
.footer-top { display: flex; justify-content: space-between; gap: 48px; flex-wrap: wrap; padding-bottom: clamp(60px, 8vw, 120px); }
.footer-mark { width: clamp(84px, 9vw, 130px); height: auto; margin-bottom: 26px; overflow: visible; }
.fm-ring, .fm-t { stroke-dasharray: 1000; stroke-dashoffset: 0; }
.footer-name { font-size: clamp(32px, 4.4vw, 68px); font-weight: 800; letter-spacing: -.05em; line-height: .92; text-transform: uppercase; }
.footer-tag { font-size: 12px; color: var(--muted); margin-top: 22px; letter-spacing: .16em; line-height: 1.7; }
.footer-nav { display: flex; gap: clamp(40px, 8vw, 120px); }
.footer-nav li a { font-size: clamp(22px, 2.2vw, 34px); font-weight: 700; letter-spacing: -.035em; text-transform: uppercase; }
.footer-nav li { padding-block: 5px; }
.footer-social li a { font-size: 13px; font-weight: 400; letter-spacing: .12em; height: 32px; line-height: 32px; }
.footer-bottom { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 14px 32px; font-size: 11px; letter-spacing: .16em; color: var(--muted); border-top: 1px solid var(--border-s); padding-top: 22px; }
.footer-bottom a { color: var(--text); height: 44px; line-height: 44px; margin-block: -14px; }
.footer-bottom b { font-weight: 400; }

/* ========================== REDUCED MOTION ========================== */
.reduced-motion .grain, .reduced-motion .marquee-track, .reduced-motion .pre-vinyl { animation: none; }
.reduced-motion .preloader { display: none; }
.reduced-motion .hero-portal { display: none; }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; }
  .grain, .marquee-track { animation: none !important; }
  .product-card:hover .product-vinyl { animation: none; }
}

/* ---------- state helpers ---------- */
html.is-loading, html.is-loading body { overflow: hidden; }
.hero-portal::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(5,5,5,.35) 0, transparent 30%, transparent 70%, var(--bg) 100%); }
.js-anim .dist-steps li { opacity: .35; transition: opacity .7s var(--ease); }
.js-anim .dist-steps li.is-passed { opacity: 1; }

/* services: pinned, slowly gliding track (desktop, motion allowed) */
.services-layout.is-pinned-list { height: min(76svh, 740px); align-items: stretch; }
.is-pinned-list .service-window { height: 100%; overflow: hidden; position: relative; -webkit-mask-image: linear-gradient(180deg, transparent, #000 16%, #000 84%, transparent); mask-image: linear-gradient(180deg, transparent, #000 16%, #000 84%, transparent); }
.is-pinned-list .service-index { border-bottom: 0; padding: 0; will-change: transform; }
.is-pinned-list .service { min-height: 0; transition: none; padding-block: clamp(26px, 5svh, 48px); }
.is-pinned-list .service-preview { position: relative; top: 0; height: 100%; display: flex; flex-direction: column; }
.is-pinned-list .service-frame { flex: 1; aspect-ratio: auto; min-height: 0; }

.cine-eq { position: absolute; inset: 0; width: 100%; height: 100%; }
