/*
Theme Name: Godlike CFD
Theme URI: https://godlike.cfd
Author: Godlike Musicverse
Description: Obsidian Editorial — cinematic classic PHP theme. Champagne on obsidian. No blocks.
Version: 4.1.1
Requires at least: 6.6
Tested up to: 6.8
Requires PHP: 8.1
Text Domain: godlike-cfd
*/

/* ---- Self-hosted fonts ---- */
@font-face { font-family:"Cinzel"; src:url("assets/fonts/cinzel-700.woff2") format("woff2"); font-weight:700; font-display:swap; }
@font-face { font-family:"Cinzel"; src:url("assets/fonts/cinzel-500.woff2") format("woff2"); font-weight:500; font-display:swap; }
@font-face { font-family:"JetBrains Mono"; src:url("assets/fonts/jbmono-400.woff2") format("woff2"); font-weight:400; font-display:swap; }
@font-face { font-family:"JetBrains Mono"; src:url("assets/fonts/jbmono-600.woff2") format("woff2"); font-weight:600; font-display:swap; }

:root {
  /* Obsidian Editorial surface ramp */
  --gx-void:    #08080a;
  --gx-bg:      #0b0b0d;
  --gx-surface: #15161a;
  --gx-raised:  #1e1f24;
  --gx-inset:   #252629;

  /* Foreground */
  --gx-fg:      #f2f0ea;
  --gx-fg-dim:  #b8b4ab;
  --gx-fg-mute: #7a7770;

  /* Champagne accent */
  --gx-champagne:      #cbb892;
  --gx-champagne-dim:  rgba(203,184,146,0.65);
  --gx-champagne-glow: rgba(203,184,146,0.15);
  --gx-glass-border:   rgba(203,184,146,0.18);

  /* Semantics */
  --gx-border:  rgba(242,240,234,0.08);
  --gx-success: #3fb950;
  --gx-danger:  #f85149;

  /* Spacing (4px base) */
  --gx-xs:4px; --gx-sm:8px; --gx-md:12px; --gx-lg:16px; --gx-xl:24px; --gx-2xl:40px; --gx-3xl:64px;

  /* Fluid type scale */
  --gx-step--1: clamp(0.83rem, 0.79rem + 0.2vw, 0.94rem);
  --gx-step-0:  clamp(1rem, 0.95rem + 0.25vw, 1.13rem);
  --gx-step-1:  clamp(1.2rem, 1.1rem + 0.5vw, 1.5rem);
  --gx-step-2:  clamp(1.44rem, 1.3rem + 0.9vw, 2rem);
  --gx-step-3:  clamp(1.73rem, 1.5rem + 1.4vw, 2.66rem);
  --gx-step-4:  clamp(2.07rem, 1.7rem + 2.2vw, 3.55rem);
  --gx-step-5:  clamp(2.49rem, 1.9rem + 3.3vw, 4.74rem);
  --gx-step-6:  clamp(2.99rem, 2rem + 5vw, 6rem);

  /* Radii + elevation */
  --gx-radius:    12px;
  --gx-radius-lg: 18px;
  --gx-shadow-1: 0 6px 20px rgba(0,0,0,0.50);
  --gx-shadow-2: 0 12px 40px rgba(0,0,0,0.60);

  /* Motion */
  --gx-ease: cubic-bezier(0.22, 1, 0.36, 1);
  --gx-dur:  0.18s;

  /* Z-index */
  --gx-z-header: 50; --gx-z-drawer: 60; --gx-z-overlay: 70;

  /* Fonts */
  --gx-font-display: "Cinzel", Georgia, serif;
  --gx-font-mono:    "JetBrains Mono", ui-monospace, "Cascadia Code", Menlo, monospace;
  --gx-font-body:    system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin:0; background:var(--gx-bg); color:var(--gx-fg);
  font-family:var(--gx-font-body); font-size:var(--gx-step-0); line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,.gx-display { font-family:var(--gx-font-display); font-weight:700; letter-spacing:0.5px; line-height:1.12; }
a { color:var(--gx-fg-dim); text-decoration:none; }
a:hover { color:var(--gx-champagne); }
:focus-visible { outline:2px solid var(--gx-champagne); outline-offset:2px; border-radius:4px; }
img { max-width:100%; height:auto; display:block; }
.gx-skip-link { position:absolute; left:-9999px; }
.gx-skip-link:focus { left:var(--gx-md); top:var(--gx-md); z-index:var(--gx-z-overlay); background:var(--gx-raised); padding:var(--gx-sm) var(--gx-md); }

/* ---- Container ---- */
.gx-wrap { max-width:1480px; margin-inline:auto; padding-inline:var(--gx-lg); }

/* ---- Full-bleed filmstrip hero ---- */
.gx-hero { position:relative; min-height:80vh; display:flex; align-items:center; overflow:clip;
  background:var(--gx-void); border-bottom:1px solid var(--gx-border); }
.gx-hero__filmstrip { position:absolute; inset:0; z-index:0; }
.gx-hero__frame { position:absolute; inset:0; background-size:cover; background-position:center;
  opacity:0; transition:opacity 1.2s var(--gx-ease); }
.gx-hero__frame.is-active { opacity:1; }
.gx-hero::after { content:''; position:absolute; inset:0; z-index:1;
  background:linear-gradient(180deg, rgba(8,8,10,0.50) 0%, rgba(8,8,10,0.82) 100%); }
.gx-hero__content { position:relative; z-index:2; padding:var(--gx-3xl) var(--gx-lg); max-width:660px; }
.gx-hero__content h1 { font-size:var(--gx-step-6); color:var(--gx-champagne); margin:0 0 var(--gx-md);
  text-shadow:0 0 40px rgba(203,184,146,0.35),0 2px 16px rgba(8,8,10,0.9); }
.gx-hero__content p { color:var(--gx-fg); font-size:var(--gx-step-1); max-width:54ch; }
.gx-hero__ctas { display:flex; flex-wrap:wrap; gap:var(--gx-md); margin-top:var(--gx-xl); }
.gx-hero--category .gx-hero__content { max-width:860px; }

/* ---- Category section ---- */
.gx-category-section { padding:var(--gx-3xl) 0; border-bottom:1px solid var(--gx-border); }
.gx-category-header { display:flex; justify-content:space-between; align-items:flex-end;
  flex-wrap:wrap; gap:var(--gx-lg); margin-bottom:var(--gx-xl); }
.gx-section-title { font-size:var(--gx-step-3); margin:0 0 var(--gx-xs); color:var(--gx-fg); }

/* ---- Product / category grid ---- */
.gx-category-grid { display:grid; grid-template-columns:1fr; gap:var(--gx-lg); }
.gx-card { background:var(--gx-surface); border:1px solid var(--gx-border); border-radius:var(--gx-radius);
  overflow:clip; display:flex; flex-direction:column; }
.gx-card img { aspect-ratio:4/5; object-fit:cover; width:100%; }
.gx-card__title { font-family:var(--gx-font-display); font-size:var(--gx-step-1);
  padding:var(--gx-sm) var(--gx-md) 0; margin:0; }
.gx-card__price { font-family:var(--gx-font-mono); color:var(--gx-champagne);
  padding:var(--gx-xs) var(--gx-md) var(--gx-md); display:block; }
.gx-card a { color:inherit; }
.gx-card a:hover { color:var(--gx-champagne); }

/* ---- WooCommerce default loop compat ---- */
.woocommerce-Price-amount, .price { font-family:var(--gx-font-mono); color:var(--gx-champagne); }
.woocommerce ul.products { display:grid; gap:var(--gx-lg); margin:0; padding:0; list-style:none; }
.woocommerce ul.products li.product { background:var(--gx-surface); border:1px solid var(--gx-border);
  border-radius:var(--gx-radius); overflow:clip; display:flex; flex-direction:column; }
.woocommerce ul.products li.product img { aspect-ratio:4/5; object-fit:cover; width:100%; }

/* ---- Bento grid (Pantheon / bands page) ---- */
.gx-bento { display:grid; gap:var(--gx-lg); grid-template-columns:1fr; }
.gx-bento__cell { background:var(--gx-surface); border:1px solid var(--gx-border);
  border-radius:var(--gx-radius-lg); padding:var(--gx-xl); }
.gx-bento__cell--feature { aspect-ratio:16/10; }

/* ============== RESPONSIVE ============== */
@media (min-width:481px) {
  .gx-category-grid { grid-template-columns:repeat(2,1fr); }
  .woocommerce ul.products { grid-template-columns:repeat(2,1fr); }
  .gx-bento { grid-template-columns:repeat(2,1fr); }
}
@media (min-width:769px) {
  .gx-category-grid { grid-template-columns:repeat(4,1fr); gap:var(--gx-xl); }
  .woocommerce ul.products { grid-template-columns:repeat(4,1fr); gap:var(--gx-xl); }
  .gx-bento { grid-template-columns:repeat(4,1fr); grid-auto-rows:minmax(120px,auto); }
  .gx-bento__cell--feature { grid-column:span 2; grid-row:span 2; }
}

/* ---- Glassmorphism — always visible, prominent, champagne hairline ---- */
.gx-glass {
  background: rgba(21,22,26,0.72);
  backdrop-filter: blur(24px) saturate(120%);
  -webkit-backdrop-filter: blur(24px) saturate(120%);
  border: 1px solid rgba(203,184,146,0.18);
  box-shadow: inset 0 1px 0 rgba(242,240,234,0.06), var(--gx-shadow-2);
}
/* Hero panel is more transparent so background image seeps through */
.gx-hero__content.gx-glass {
  background: rgba(21,22,26,0.40);
  backdrop-filter: blur(36px) saturate(150%);
  -webkit-backdrop-filter: blur(36px) saturate(150%);
}

/* ---- Header ---- */
.gx-header { position:sticky; top:0; z-index:var(--gx-z-header);
  display:flex; gap:var(--gx-lg); align-items:center; justify-content:space-between;
  padding:var(--gx-md) var(--gx-lg); }
.gx-brand { font-family:var(--gx-font-display); color:var(--gx-champagne);
  font-size:var(--gx-step-1); font-weight:700; }
.gx-brand:hover { color:var(--gx-fg); }
.gx-nav ul { list-style:none; margin:0; padding:0; display:flex; gap:var(--gx-xl); }
.gx-nav li { position:relative; }
.gx-nav a { font-family:var(--gx-font-mono); font-size:var(--gx-step--1);
  text-transform:uppercase; letter-spacing:1px; color:var(--gx-fg-dim); }
.gx-nav a:hover { color:var(--gx-champagne); }
/* ---- Dropdown submenu ---- */
.gx-nav ul ul {
  position:absolute; top:calc(100% + 8px); left:0; z-index:200;
  display:none; flex-direction:column; gap:0;
  min-width:210px; padding:var(--gx-sm) 0;
  background:rgba(21,22,26,0.96); backdrop-filter:blur(24px); -webkit-backdrop-filter:blur(24px);
  border:1px solid var(--gx-border); border-radius:var(--gx-radius);
  box-shadow:var(--gx-shadow-2); }
.gx-nav li:hover > ul,
.gx-nav li:focus-within > ul { display:flex; }
.gx-nav ul ul li { width:100%; }
.gx-nav ul ul a { display:block; width:100%; padding:var(--gx-sm) var(--gx-lg);
  white-space:nowrap; text-transform:none; letter-spacing:0; font-size:var(--gx-step--1); }
.gx-cart-link { font-family:var(--gx-font-mono); font-size:var(--gx-step--1); color:var(--gx-fg-dim); }
.gx-cart-link:hover { color:var(--gx-champagne); }

/* ---- Buttons ---- */
.gx-btn { display:inline-block; font-family:var(--gx-font-mono); font-weight:600; letter-spacing:0.5px;
  padding:var(--gx-sm) var(--gx-xl); border-radius:var(--gx-radius);
  background:var(--gx-champagne); color:var(--gx-void); border:1px solid transparent;
  transition:transform var(--gx-dur) var(--gx-ease), box-shadow var(--gx-dur) var(--gx-ease); }
.gx-btn:hover { transform:translateY(-1px); box-shadow:0 6px 20px var(--gx-champagne-glow); color:var(--gx-void); }
.gx-btn--secondary { background:transparent; color:var(--gx-champagne);
  border:1px solid rgba(203,184,146,0.40); }
.gx-btn--secondary:hover { background:var(--gx-champagne-glow); color:var(--gx-champagne); transform:none; }

/* WooCommerce button compat */
.woocommerce a.button, .woocommerce button.button, .woocommerce input.button,
.single_add_to_cart_button, .add_to_cart_button {
  background:var(--gx-champagne) !important; color:var(--gx-void) !important;
  font-family:var(--gx-font-mono) !important; border:none !important;
  border-radius:var(--gx-radius) !important; transition:opacity var(--gx-dur) !important; }
.woocommerce a.button:hover, .woocommerce button.button:hover { opacity:0.85 !important; color:var(--gx-void) !important; }

/* ---- Chips ---- */
.gx-chip { display:inline-flex; align-items:center; gap:var(--gx-xs); font-family:var(--gx-font-mono);
  font-size:0.7rem; font-weight:700; text-transform:uppercase; letter-spacing:1px;
  padding:2px var(--gx-sm); border-radius:999px; }
.gx-chip--new     { background:rgba(203,184,146,0.15); color:var(--gx-champagne); }
.gx-chip--limited { background:rgba(203,184,146,0.10); color:var(--gx-champagne-dim); }
.gx-chip--sale    { background:rgba(248,81,73,0.18);   color:#f85149; }
.gx-chip--sold    { background:rgba(242,240,234,0.08); color:var(--gx-fg-mute); }

/* ---- Archival metadata ledger ---- */
.gx-ledger { font-family:var(--gx-font-mono); font-size:var(--gx-step--1); color:var(--gx-fg-mute); }
.gx-ledger dt { text-transform:uppercase; letter-spacing:1px; }
.gx-ledger dd { color:var(--gx-fg-dim); margin:0; }

/* ---- Single product ---- */
.single-product .woocommerce-product-gallery { background:var(--gx-inset);
  padding:clamp(12px,4vw,40px); border:1px solid rgba(203,184,146,0.12);
  border-radius:var(--gx-radius); box-shadow:inset 0 0 0 6px rgba(0,0,0,0.25), var(--gx-shadow-2); }
.single-product .price { font-size:var(--gx-step-2); color:var(--gx-champagne); }
.gx-buy-panel { position:sticky; top:84px; padding:var(--gx-xl); border-radius:var(--gx-radius-lg); }
.single-product .quantity input, .single-product .variations select {
  background:var(--gx-raised); color:var(--gx-fg); border:1px solid var(--gx-border);
  border-radius:8px; padding:var(--gx-sm) var(--gx-md); font-family:var(--gx-font-mono); }

/* ---- Footer ---- */
.gx-footer { background:var(--gx-void); border-top:1px solid var(--gx-border);
  padding:var(--gx-3xl) var(--gx-lg); color:var(--gx-fg-dim);
  display:grid; grid-template-columns:1fr; gap:var(--gx-lg); text-align:center; }
.gx-footer ul { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:var(--gx-sm); }
.gx-footer a { color:var(--gx-fg-mute); }
.gx-footer a:hover { color:var(--gx-champagne); }
@media (min-width:481px) { .gx-footer { grid-template-columns:repeat(3,1fr); text-align:left; } }
@media (min-width:769px)  { .gx-footer { grid-template-columns:repeat(4,1fr); } }

/* ---- Reduced motion ---- */
@media (prefers-reduced-motion: reduce) { * { transition:none !important; scroll-behavior:auto !important; } }

/* ============================================================
   v4.1.0 EDITORIAL ADDITIONS
   ============================================================ */

/* ---- Click-through hardening ----
   Stale optimizer CSS (LiteSpeed critical CSS cached from a prior theme)
   injected a full-surface .gx-glass::before overlay that swallowed every
   click on the header nav/brand/cart. Decorative pseudos must never
   intercept the pointer, and header controls always stack above them. */
.gx-glass::before, .gx-glass::after { pointer-events:none; }
.gx-header::before, .gx-header::after { content:none !important; }
.gx-header .gx-brand, .gx-header .gx-nav, .gx-header .gx-cart-link { position:relative; z-index:2; }
.gx-hero::after { pointer-events:none; }

/* ---- Ornamental divider  == * == ---- */
.gx-orn { display:flex; align-items:center; justify-content:center; gap:18px;
  color:var(--gx-champagne); margin:var(--gx-2xl) auto; }
.gx-orn::before, .gx-orn::after { content:''; height:1px; width:min(180px,24vw); }
.gx-orn::before { background:linear-gradient(90deg, transparent, var(--gx-champagne-dim)); }
.gx-orn::after  { background:linear-gradient(90deg, var(--gx-champagne-dim), transparent); }
.gx-orn span { font-size:13px; letter-spacing:0.4em; }

.gx-kicker { display:flex; align-items:center; justify-content:center; gap:14px;
  font-family:var(--gx-font-mono); font-size:0.72rem; letter-spacing:0.24em;
  text-transform:uppercase; color:var(--gx-champagne); margin-bottom:var(--gx-lg); }
.gx-kicker::before, .gx-kicker::after { content:''; height:1px; width:44px; background:var(--gx-champagne-dim); }

/* ---- Editorial masthead (front page) ---- */
.gx-masthead { min-height:92vh; justify-content:center; text-align:center; }
.gx-masthead .gx-hero__frame.is-active { opacity:0.26; }
.gx-masthead::after { background:radial-gradient(90% 70% at 50% 0%, rgba(8,8,10,0.30), rgba(8,8,10,0.88) 75%); }
.gx-masthead__rays { position:absolute; inset:0; z-index:1; pointer-events:none; opacity:0.55; }
.gx-masthead__rays svg { width:100%; height:100%; display:block; }
.gx-masthead__frame { position:absolute; inset:18px; z-index:1; pointer-events:none;
  border:1px solid rgba(203,184,146,0.14); }
.gx-masthead__inner { position:relative; z-index:2; max-width:1000px; margin-inline:auto;
  padding:var(--gx-3xl) var(--gx-lg); }
.gx-masthead__vol { letter-spacing:0.22em; text-transform:uppercase; margin:0 0 var(--gx-xl); }
.gx-masthead__title { font-size:clamp(4rem, 12vw, 10.5rem); font-weight:700; letter-spacing:0.06em;
  line-height:0.95; margin:0 0 var(--gx-lg); color:var(--gx-champagne); text-transform:uppercase;
  text-shadow:0 0 60px rgba(203,184,146,0.22); }
.gx-masthead__sub { font-family:var(--gx-font-mono); font-size:clamp(0.75rem, 2vw, 1.2rem);
  letter-spacing:clamp(0.5em, 1.6vw, 0.92em); text-indent:clamp(0.5em, 1.6vw, 0.92em);
  text-transform:uppercase; color:var(--gx-fg); margin:0 0 var(--gx-xl); }
.gx-masthead__tagline { color:var(--gx-fg-dim); font-size:var(--gx-step-1);
  max-width:560px; margin:0 auto var(--gx-2xl); }
.gx-masthead .gx-hero__ctas { justify-content:center; }

/* ---- Band ticker marquee ---- */
.gx-ticker { border-block:1px solid var(--gx-glass-border); background:var(--gx-void);
  overflow:hidden; padding:14px 0; }
.gx-ticker__track { display:flex; width:max-content; animation:gx-ticker 46s linear infinite; }
.gx-ticker:hover .gx-ticker__track { animation-play-state:paused; }
.gx-ticker span { font-family:var(--gx-font-display); font-size:0.95rem; letter-spacing:0.3em;
  text-transform:uppercase; color:var(--gx-fg-dim); white-space:nowrap; padding:0 18px; }
.gx-ticker span::after { content:'*'; color:var(--gx-champagne-dim); margin-left:36px; }
@keyframes gx-ticker { to { transform:translateX(-50%); } }

/* ---- Pantheon niche cards (arch frames) ---- */
.gx-pantheon-grid { display:grid; gap:var(--gx-xl); grid-template-columns:1fr; }
@media (min-width:600px)  { .gx-pantheon-grid { grid-template-columns:repeat(2,1fr); } }
@media (min-width:1024px) { .gx-pantheon-grid { grid-template-columns:repeat(4,1fr); } }

.gx-niche { position:relative; border-radius:150px 150px 14px 14px; overflow:hidden;
  display:flex; flex-direction:column;
  transition:transform var(--gx-dur) var(--gx-ease), border-color var(--gx-dur), box-shadow var(--gx-dur); }
.gx-niche:hover { transform:translateY(-4px); border-color:var(--gx-champagne-dim);
  box-shadow:var(--gx-shadow-2), 0 0 34px -8px var(--gx-champagne-glow); }
.gx-niche__art { position:relative; aspect-ratio:4/5; background:var(--gx-void);
  border-radius:146px 146px 0 0; overflow:hidden; }
.gx-niche__art svg { width:100%; height:100%; display:block; }
.gx-niche__art .gx-sig-1 { stroke:var(--tint, var(--gx-champagne)); }
.gx-niche__art .gx-sig-2 { stroke:var(--tint2, var(--gx-fg-dim)); }
.gx-niche__art .gx-sig-fill { fill:var(--tint, var(--gx-champagne)); }
.gx-niche__art .gx-sig-num { fill:var(--tint, var(--gx-champagne)); opacity:0.1;
  font-family:var(--gx-font-display); font-weight:700; letter-spacing:6px; }
.gx-niche__num { position:absolute; top:16px; left:50%; transform:translateX(-50%);
  font-family:var(--gx-font-display); font-size:0.8rem; letter-spacing:0.3em;
  color:var(--gx-champagne-dim); }
.gx-niche__body { padding:var(--gx-xl); text-align:center; display:flex;
  flex-direction:column; gap:var(--gx-sm); flex:1; }
.gx-niche__body h3 { font-size:var(--gx-step-1); letter-spacing:0.08em; margin:0; }
.gx-niche__genre { font-family:var(--gx-font-mono); font-size:0.66rem; letter-spacing:0.18em;
  text-transform:uppercase; color:var(--gx-fg-mute); }
.gx-niche__lore { font-size:0.86rem; color:var(--gx-fg-dim); margin:0; flex:1; }
.gx-niche__actions { display:flex; flex-direction:column; align-items:center;
  gap:var(--gx-sm); margin-top:var(--gx-sm); }
.gx-chip--soon { background:transparent; color:var(--gx-fg-mute);
  border:1px dashed var(--gx-glass-border); }

/* ---- Discography ledger ---- */
.gx-disc-band { padding:var(--gx-2xl) 0; }
.gx-disc-band__head { display:flex; flex-wrap:wrap; align-items:baseline; gap:var(--gx-lg);
  padding-bottom:var(--gx-lg); margin-bottom:var(--gx-lg);
  border-bottom:1px solid var(--gx-glass-border); }
.gx-disc-band__head h2 { font-size:var(--gx-step-2); letter-spacing:0.08em; margin:0; }
.gx-disc-band__head .gx-ledger { margin-left:auto; }
.gx-release { display:grid; grid-template-columns:72px 1fr auto auto; gap:var(--gx-lg);
  align-items:center; padding:var(--gx-md) var(--gx-lg); border-radius:var(--gx-radius);
  border:1px solid transparent; transition:background var(--gx-dur), border-color var(--gx-dur); }
.gx-release:hover { background:var(--gx-surface); border-color:var(--gx-glass-border); }
.gx-release + .gx-release { margin-top:6px; }
.gx-release__art { width:72px; height:72px; border-radius:8px; overflow:hidden;
  background:var(--gx-void); border:1px solid var(--gx-border); }
.gx-release__art img { width:100%; height:100%; object-fit:cover; aspect-ratio:1; }
.gx-release__main b { display:block; font-family:var(--gx-font-display);
  font-size:var(--gx-step-0); font-weight:700; letter-spacing:0.05em; color:var(--gx-fg); }
.gx-release__main span { font-family:var(--gx-font-mono); font-size:0.68rem;
  letter-spacing:0.12em; text-transform:uppercase; color:var(--gx-fg-mute); }
.gx-release__fmt { display:flex; gap:6px; }
.gx-release__buy { display:flex; align-items:center; gap:var(--gx-lg); }
.gx-release__buy .price, .gx-release__buy .woocommerce-Price-amount { white-space:nowrap; }
@media (max-width:768px) {
  .gx-release { grid-template-columns:56px 1fr auto; }
  .gx-release__art { width:56px; height:56px; }
  .gx-release__fmt { display:none; }
}
.gx-disc-note { margin-top:var(--gx-2xl); padding:var(--gx-xl);
  border:1px dashed var(--gx-glass-border); border-radius:var(--gx-radius-lg);
  color:var(--gx-fg-dim); font-size:0.9rem; text-align:center; }
.gx-disc-note b { color:var(--gx-champagne); }

/* ---- Principles (wabi-sabi / POD) ---- */
.gx-principles { display:grid; gap:var(--gx-lg); grid-template-columns:1fr; }
@media (min-width:769px) { .gx-principles { grid-template-columns:repeat(3,1fr); } }
.gx-principle { padding:var(--gx-2xl) var(--gx-xl); border-radius:var(--gx-radius-lg); text-align:center; }
.gx-principle__num { font-family:var(--gx-font-display); font-size:1.8rem;
  color:var(--gx-champagne); display:block; margin-bottom:var(--gx-lg); }
.gx-principle__num::after { content:''; display:block; width:34px; height:1px;
  background:var(--gx-champagne-dim); margin:14px auto 0; }
.gx-principle h3 { font-size:var(--gx-step-1); letter-spacing:0.08em; margin:0 0 var(--gx-sm); }
.gx-principle p { color:var(--gx-fg-dim); font-size:0.9rem; margin:0; }

/* ---- Page hero (subpage editorial) ---- */
.gx-page-hero { padding:var(--gx-3xl) var(--gx-lg); text-align:center; }
.gx-page-hero h1 { font-size:var(--gx-step-5); letter-spacing:0.06em;
  color:var(--gx-champagne); margin:0 0 var(--gx-md);
  text-shadow:0 0 46px rgba(203,184,146,0.18); }
.gx-page-hero p { color:var(--gx-fg-dim); font-size:var(--gx-step-1);
  max-width:620px; margin:0 auto; }
.gx-page-hero .gx-ledger { display:block; margin-top:var(--gx-lg); }
.gx-page-hero__cta { margin-top:var(--gx-xl); display:flex; flex-direction:column;
  align-items:center; gap:var(--gx-md); }
.gx-page-hero .gx-page-hero__note { font-family:var(--gx-font-mono); font-size:0.8rem;
  letter-spacing:0.02em; color:var(--gx-fg-mute); max-width:480px; margin:0; }

/* ============================================================
   MUSIC PREVIEW PLAYER (.gx-player)
   ============================================================ */
.gx-player { display:flex; align-items:center; gap:12px; min-width:170px; }
.gx-player__btn { width:40px; height:40px; border-radius:50%; flex:none;
  background:var(--gx-champagne); color:var(--gx-void); border:0; cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  transition:transform var(--gx-dur) var(--gx-ease), box-shadow var(--gx-dur); }
.gx-player__btn:hover { transform:scale(1.07); box-shadow:0 4px 18px var(--gx-champagne-glow); }
.gx-player__btn svg { width:16px; height:16px; }
.gx-player .gx-ic-pause { display:none; }
.gx-player.is-playing .gx-ic-pause { display:block; }
.gx-player.is-playing .gx-ic-play { display:none; }
.gx-player__track { flex:1; min-width:70px; height:5px; border-radius:3px;
  background:var(--gx-inset); cursor:pointer; overflow:hidden; }
.gx-player__bar { width:0%; height:100%; border-radius:3px; background:var(--gx-champagne); }
.gx-player__time { font-family:var(--gx-font-mono); font-size:11px; color:var(--gx-fg-mute);
  min-width:34px; text-align:right; }

/* single-product preview block */
.gx-preview-block { margin:var(--gx-lg) 0; padding:var(--gx-lg);
  border:1px solid var(--gx-glass-border); border-radius:var(--gx-radius); background:var(--gx-raised); }
.gx-preview-block__header { display:flex; align-items:center; gap:10px;
  font-family:var(--gx-font-mono); font-size:11px; letter-spacing:0.16em;
  text-transform:uppercase; color:var(--gx-champagne); margin-bottom:var(--gx-md); }
.gx-preview-block__header svg { width:17px; height:17px; }
.gx-preview-block__caption { font-family:var(--gx-font-mono); font-size:11px;
  color:var(--gx-fg-mute); margin:var(--gx-md) 0 0; }
.gx-album-crosslink { display:flex; align-items:center; gap:var(--gx-lg);
  margin:0 0 var(--gx-lg); padding:var(--gx-md) var(--gx-lg);
  border:1px solid var(--gx-border); border-radius:var(--gx-radius);
  color:var(--gx-fg-dim); transition:border-color var(--gx-dur); }
.gx-album-crosslink:hover { border-color:var(--gx-champagne-dim); color:var(--gx-champagne); }
.gx-album-crosslink__body { flex:1; display:flex; flex-direction:column; }
.gx-album-crosslink__body strong { color:var(--gx-fg); font-size:0.92rem; }
.gx-album-crosslink__body span { font-size:0.78rem; color:var(--gx-fg-mute); }

/* album tracklist */
.gx-tracklist { margin-top:var(--gx-2xl); padding:var(--gx-xl); border-radius:var(--gx-radius-lg); }
.gx-tracklist__header { display:flex; flex-wrap:wrap; align-items:baseline; gap:var(--gx-lg);
  border-bottom:1px solid var(--gx-glass-border); padding-bottom:var(--gx-md); margin-bottom:var(--gx-sm); }
.gx-tracklist__header h2 { font-size:var(--gx-step-1); letter-spacing:0.06em; margin:0; }
.gx-tracklist__header .gx-ledger { margin-left:auto; }
.gx-track-row { display:grid; grid-template-columns:34px minmax(0,1fr) minmax(170px,240px) 46px auto;
  gap:var(--gx-lg); align-items:center; padding:10px var(--gx-sm);
  border-bottom:1px solid var(--gx-border); }
.gx-track-row:last-child { border-bottom:0; }
.gx-track-row__num { font-family:var(--gx-font-mono); font-size:12px; color:var(--gx-fg-mute); }
.gx-track-row__title { font-family:var(--gx-font-display); font-size:0.98rem;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.gx-track-row__dur { font-family:var(--gx-font-mono); font-size:12px; color:var(--gx-fg-mute); text-align:right; }
.gx-track-row__buy { font-family:var(--gx-font-mono); font-size:11.5px; letter-spacing:0.08em;
  text-transform:uppercase; color:var(--gx-champagne); white-space:nowrap; }
.gx-tracklist__cta { margin:var(--gx-lg) 0 0; text-align:center; }
@media (max-width:700px) {
  .gx-track-row { grid-template-columns:30px minmax(0,1fr) 46px; }
  .gx-track-row .gx-player { grid-column:1 / -1; }
  .gx-track-row__buy { grid-column:1 / -1; }
}

/* discography ledger playable rows */
.gx-release--playable { grid-template-columns:72px minmax(0,1fr) minmax(180px,230px) auto auto; }
.gx-release__play:empty { display:none; }
@media (max-width:1020px) {
  .gx-release--playable { grid-template-columns:72px minmax(0,1fr) minmax(170px,220px) auto; }
  .gx-release--playable .gx-release__fmt { display:none; }
}
@media (max-width:700px) {
  .gx-release--playable { grid-template-columns:56px minmax(0,1fr) auto; }
  .gx-release--playable .gx-release__play { grid-column:1 / -1; }
}

/* ============================================================
   PRODUCT PAGE — centered gallery, orderly thumbnail rows
   ============================================================ */
.gx-product-layout { display:grid; gap:var(--gx-xl); grid-template-columns:1fr;
  max-width:920px; margin-inline:auto; }
.single-product .woocommerce-product-gallery { max-width:680px; margin-inline:auto; float:none; width:100%; }
.woocommerce-product-gallery .woocommerce-product-gallery__wrapper { margin:0; }
.woocommerce-product-gallery .woocommerce-product-gallery__image img,
.woocommerce-product-gallery .flex-viewport img { margin-inline:auto; }
.woocommerce-product-gallery ol.flex-control-thumbs { display:flex; flex-wrap:wrap;
  justify-content:center; gap:10px; margin:14px 0 0; padding:0; list-style:none; }
.woocommerce-product-gallery ol.flex-control-thumbs li { width:82px; height:82px; margin:0; float:none; }
.woocommerce-product-gallery ol.flex-control-thumbs li img { width:100%; height:100%;
  object-fit:cover; border-radius:8px; border:1px solid var(--gx-border);
  cursor:pointer; opacity:0.55; transition:opacity var(--gx-dur), border-color var(--gx-dur); }
.woocommerce-product-gallery ol.flex-control-thumbs li img.flex-active,
.woocommerce-product-gallery ol.flex-control-thumbs li img:hover { opacity:1; border-color:var(--gx-champagne-dim); }
.gx-buy-panel { max-width:680px; margin-inline:auto; width:100%; }

/* ============================================================
   ARTICLE (single.php) — editorial reading experience
   ============================================================ */
.gx-article__hero-img { max-width:880px; }
.gx-article__hero-img img { border-radius:var(--gx-radius-lg); border:1px solid var(--gx-border); width:100%; }
.gx-article__body { max-width:72ch; margin-inline:auto; padding-block:var(--gx-xl) var(--gx-2xl);
  color:var(--gx-fg-dim); font-size:1.06rem; line-height:1.75; }
.gx-article__body h2, .gx-article__body h3 { color:var(--gx-fg); margin:1.6em 0 0.6em; }
.gx-article__body a { color:var(--gx-champagne); text-decoration:underline; text-underline-offset:3px; }
.gx-article__body img { border-radius:var(--gx-radius); margin-block:var(--gx-lg); }
.gx-article__body blockquote { border-left:2px solid var(--gx-champagne-dim);
  margin:var(--gx-lg) 0; padding:var(--gx-xs) var(--gx-lg); color:var(--gx-fg); font-style:italic; }
.gx-article__body .tldr-box { margin:var(--gx-2xl) 0 0; padding:var(--gx-lg);
  border:1px dashed var(--gx-glass-border); border-radius:var(--gx-radius);
  background:var(--gx-surface); font-size:0.95rem; }
.gx-article__body .tldr-box strong { color:var(--gx-champagne); }
.gx-article__body .key-takeaways { border:1px solid var(--gx-border); border-radius:var(--gx-radius);
  padding:var(--gx-lg) var(--gx-lg) var(--gx-lg) var(--gx-2xl); background:var(--gx-surface); }
.gx-article__body .key-takeaways li { margin-bottom:6px; }
.gx-article__nav { display:flex; justify-content:space-between; gap:var(--gx-lg);
  max-width:72ch; margin:0 auto; padding-bottom:var(--gx-3xl);
  font-family:var(--gx-font-mono); font-size:12.5px; }
.gx-article__nav a { color:var(--gx-fg-dim); }
.gx-article__nav a:hover { color:var(--gx-champagne); }

/* ---- Reduced motion: kill marquee ---- */
@media (prefers-reduced-motion: reduce) {
  .gx-ticker__track { animation:none !important; }
}

/* ---- Cross-document view transitions (PE) ---- */
@view-transition { navigation: auto; }

/* ---- Scroll-driven reveals (only when supported AND motion allowed) ---- */
@media (prefers-reduced-motion: no-preference) {
  @supports (animation-timeline: view()) {
    .gx-reveal { animation: gx-rise linear both; animation-timeline: view(); animation-range: entry 0% cover 30%; }
    @keyframes gx-rise { from { opacity:0; transform:translateY(24px); } to { opacity:1; transform:none; } }
    .gx-leyline { position:fixed; inset-block-start:0; inset-inline-start:0; block-size:2px; inline-size:100%;
      transform-origin:0 50%;
      background:linear-gradient(90deg, var(--gx-champagne), var(--gx-champagne-dim));
      animation:gx-ley linear both; animation-timeline:scroll(root block); z-index:var(--gx-z-overlay); }
    @keyframes gx-ley { from { transform:scaleX(0); } to { transform:scaleX(1); } }
  }
}

/* ---- Micro-interactions + JS-fallback reveal ---- */
.gx-pulse { animation: gx-pulse 0.42s var(--gx-ease); }
@keyframes gx-pulse { 0%{box-shadow:0 0 0 0 var(--gx-champagne-glow);} 100%{box-shadow:0 0 0 16px transparent;} }
.gx-reveal.is-in { opacity:1; transform:none; transition:opacity .5s var(--gx-ease), transform .5s var(--gx-ease); }
.gx-reveal:not(.is-in) { will-change: opacity, transform; }

/* ---- Hero filmstrip auto-cycle (JS progressive) ---- */
.gx-hero__frame { transition:opacity 1.2s var(--gx-ease); }

/* ---- Hard off-switch ---- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation:none !important; transition:none !important; scroll-behavior:auto !important; }
  .gx-reveal { opacity:1 !important; transform:none !important; }
  @view-transition { navigation: none; }
}
