/* ═══════════════════════════════════════════════════════════════
   CASEMIRO — Cyberpunk / Synthwave Theme  v2.1
   Deep black · Electric neon blue · Glassmorphism · Neon glow
   Accent color comes from the dashboard setting (--cl-accent).
   ═══════════════════════════════════════════════════════════════ */

:root {
  --cs-neon: rgb(var(--cl-accent));
  --cs-neon-soft: rgba(var(--cl-accent), 0.45);
  --cs-neon-faint: rgba(var(--cl-accent), 0.14);
  --cs-stroke: rgba(var(--cl-accent), 0.16);
  --cs-stroke-hi: rgba(var(--cl-accent), 0.45);
  --cs-glow-sm: 0 0 8px rgba(var(--cl-accent), .55);
  --cs-glow-md: 0 0 18px rgba(var(--cl-accent), .40), 0 0 48px rgba(47, 123, 255, .22);
  --cs-glow-lg: 0 0 30px rgba(var(--cl-accent), .55), 0 0 90px rgba(47, 123, 255, .32);
  --cs-display: 'Orbitron', sans-serif;
  /* clean, premium numerals for counters & data — Orbitron's octagonal
     digits read as "off" at large sizes, Space Grotesk stays crisp */
  --cs-numeric: 'Space Grotesk', 'Rajdhani', ui-sans-serif, system-ui, sans-serif;
  --cs-ease: cubic-bezier(.22, .61, .36, 1);
}

/* ───────── Global polish ───────── */
html {
  scroll-behavior: smooth;
}

::selection {
  background: rgba(var(--cl-accent), .3);
  color: #fff;
}

::-webkit-scrollbar {
  width: 10px;
}

::-webkit-scrollbar-track {
  background: rgb(var(--cl-background));
}

::-webkit-scrollbar-thumb {
  background: linear-gradient(180deg, var(--cs-neon), #2f7bff);
  border-radius: 99px;
  border: 2px solid rgb(var(--cl-background));
}

/* fixed neon ambience behind the page
   (soft falloff baked into the gradient — no filter:blur, huge perf win) */
.cs-bg-glow {
  position: fixed;
  z-index: -1;
  pointer-events: none;
  border-radius: 50%;
  transform: translateZ(0);
}

.cs-bg-glow--1 {
  width: 760px;
  height: 760px;
  top: -300px;
  right: -240px;
  background: radial-gradient(circle, rgba(47, 123, 255, .13) 0%, rgba(47, 123, 255, .06) 38%, transparent 68%);
}

.cs-bg-glow--2 {
  width: 680px;
  height: 680px;
  bottom: -260px;
  left: -220px;
  background: radial-gradient(circle, rgba(var(--cl-accent), .10) 0%, rgba(var(--cl-accent), .045) 38%, transparent 68%);
}

/* display font for headings */
h1,
h2,
h3,
.cs-btn {
  font-family: var(--cs-display);
  letter-spacing: .04em;
}

/* clean, aligned numerals for any stat/counter/data figure */
.cs-num {
  font-family: var(--cs-numeric) !important;
  font-variant-numeric: tabular-nums;
  font-feature-settings: 'tnum' 1;
  letter-spacing: -.01em;
}

/* ═══════════ GLASSMORPHISM CORE ═══════════ */
.cs-glass {
  background: rgba(var(--cl-card), .45);
  backdrop-filter: blur(18px) saturate(140%);
  -webkit-backdrop-filter: blur(18px) saturate(140%);
  border: 1px solid var(--cs-stroke);
  border-radius: 16px;
  position: relative;
}

/* ═══════════ BUTTONS ═══════════ */
.cs-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  font-weight: 700;
  font-size: 14px;
  letter-spacing: .1em;
  text-transform: uppercase;
  padding: 15px 32px;
  border-radius: 10px;
  text-decoration: none;
  transition: transform .3s var(--cs-ease), box-shadow .3s var(--cs-ease),
    background .3s, color .3s, border-color .3s;
  will-change: transform;
}

.cs-btn--primary {
  color: rgb(var(--cl-t-accent));
  background: linear-gradient(92deg, var(--cs-neon) 0%, #2f7bff 130%);
  box-shadow: 0 0 20px rgba(var(--cl-accent), .35), 0 4px 24px rgba(0, 0, 0, .5);
}

.cs-btn--primary:hover {
  transform: translateY(-3px);
  box-shadow: var(--cs-glow-lg), 0 10px 30px rgba(0, 0, 0, .55);
}

.cs-btn--ghost {
  color: var(--cs-neon);
  border: 1px solid var(--cs-stroke-hi);
  background: rgba(var(--cl-accent), .04);
}

.cs-btn--ghost:hover {
  background: rgba(var(--cl-accent), .1);
  box-shadow: var(--cs-glow-md);
  transform: translateY(-3px);
}

/* ═══════════ HEADER ═══════════ */
header.component>div.bg-card {
  background: rgba(var(--cl-card), .45) !important;
  backdrop-filter: blur(18px) saturate(140%);
  -webkit-backdrop-filter: blur(18px) saturate(140%);
  border-color: var(--cs-stroke) !important;
  border-radius: 16px;
  box-shadow: 0 8px 30px rgba(0, 0, 0, .35);
  position: relative;
  overflow: hidden;
}

header.component>div.bg-card::after {
  content: '';
  position: absolute;
  top: 0;
  left: 10%;
  right: 10%;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--cs-neon), transparent);
  opacity: .7;
}

header.component h1 {
  background: linear-gradient(92deg, var(--cs-neon) 10%, #7cc7ff 60%, #7a5cff 110%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 0 12px rgba(var(--cl-accent), .40));
  letter-spacing: .08em;
  text-transform: uppercase;
}

header.component img {
  filter: drop-shadow(0 0 10px rgba(var(--cl-accent), .45));
  max-height: 60px !important;
}

/* nav pills */
header.component nav a,
header.component nav button {
  font-family: var(--cs-display);
  font-size: 12px !important;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  background: rgba(var(--cl-card), .45) !important;
  border-color: var(--cs-stroke) !important;
  transition: color .25s, border-color .25s, box-shadow .25s, transform .25s var(--cs-ease), background .25s;
}

header.component nav a:hover,
header.component nav button:hover {
  color: var(--cs-neon) !important;
  border-color: var(--cs-stroke-hi) !important;
  box-shadow: var(--cs-glow-sm);
  transform: translateY(-2px);
  background: rgba(var(--cl-accent), .08) !important;
}

header.component nav a.bg-accent-500\/10,
header.component nav button.bg-accent-500\/10 {
  border-color: var(--cs-stroke-hi) !important;
  box-shadow: var(--cs-glow-sm), inset 0 0 16px rgba(var(--cl-accent), .10);
}

/* cart count badge — dark digit on the neon dot, optically centered */
.cs-cart-badge {
  position: absolute;
  top: -0.5rem;
  right: -0.5rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.15rem;
  height: 1.15rem;
  padding: 0 0.3rem;
  box-sizing: border-box;
  font-family: var(--cs-numeric);
  font-size: 0.66rem;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0;
  color: rgb(var(--cl-background));
  background: var(--cs-neon);
  border-radius: 999px;
  box-shadow: 0 0 10px rgba(var(--cl-accent), .65), 0 2px 6px rgba(0, 0, 0, .45);
  pointer-events: none;
  font-variant-numeric: tabular-nums;
}

/* ═══════════ HERO ═══════════ */
.cs-hero {
  margin-top: 1rem;
}

.cs-hero__panel {
  position: relative;
  overflow: hidden;
  border-radius: 20px;
  border: 1px solid var(--cs-stroke);
  background:
    radial-gradient(ellipse 90% 70% at 50% 100%, rgba(47, 123, 255, .10), transparent 65%),
    linear-gradient(180deg, rgba(var(--cl-card), .35), rgba(var(--cl-background), .9));
  min-height: 600px;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 20px 60px rgba(0, 0, 0, .45); /* inset-winieta usunieta — robila pionowe pasy na mobile */
}

.cs-hero__scene {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
}

.cs-hero__stars {
  position: absolute;
  inset: 0;
  background-image:
    radial-gradient(1.4px 1.4px at 15% 22%, rgba(232, 244, 255, .7), transparent),
    radial-gradient(1px 1px at 35% 12%, rgba(var(--cl-accent), .8), transparent),
    radial-gradient(1.3px 1.3px at 55% 28%, rgba(232, 244, 255, .55), transparent),
    radial-gradient(1px 1px at 72% 16%, rgba(122, 92, 255, .7), transparent),
    radial-gradient(1.3px 1.3px at 88% 32%, rgba(232, 244, 255, .6), transparent),
    radial-gradient(1px 1px at 8% 44%, rgba(var(--cl-accent), .6), transparent),
    radial-gradient(1px 1px at 92% 8%, rgba(232, 244, 255, .7), transparent),
    radial-gradient(1.3px 1.3px at 45% 6%, rgba(232, 244, 255, .45), transparent),
    radial-gradient(1px 1px at 63% 40%, rgba(var(--cl-accent), .5), transparent);
  animation: cs-twinkle 5s ease-in-out infinite alternate;
}

@keyframes cs-twinkle {
  from {
    opacity: .45;
  }

  to {
    opacity: .9;
  }
}

/* ─────────────────────────────────────────────────────────────
   DELIVERY CORE — a holographic power-core that visualises the
   shop's promise: an encrypted engine spinning up instant, automated
   deliveries. Light-packets ride tilted orbits around a glowing core.
   Everything animates on transform / opacity only (GPU compositor),
   so it stays buttery on scroll — no per-frame repaints.
   ───────────────────────────────────────────────────────────── */

/* living plasma bloom behind the core — two offset radials that
   slowly breathe; falloff is baked into the gradient (no filter:blur) */
.cs-hero__aurora {
  position: absolute;
  left: 50%;
  bottom: 12%;
  width: 760px;
  height: 760px;
  transform: translateX(-50%);
  background:
    radial-gradient(circle at 50% 52%, rgba(var(--cl-accent), .20) 0%, transparent 60%),
    radial-gradient(circle at 38% 44%, rgba(47, 123, 255, .16) 0%, transparent 55%),
    radial-gradient(circle at 62% 60%, rgba(122, 92, 255, .12) 0%, transparent 58%);
  opacity: .9;
  animation: cs-aurora 12s ease-in-out infinite alternate;
  will-change: transform, opacity;
}

@keyframes cs-aurora {
  from {
    transform: translateX(-50%) scale(1);
    opacity: .78;
  }

  to {
    transform: translateX(-50%) scale(1.12);
    opacity: 1;
  }
}

.cs-core {
  position: absolute;
  left: 50%;
  bottom: 16%;
  width: 300px;
  height: 300px;
  transform: translateX(-50%);
  perspective: 760px;
  transform-style: preserve-3d;
}

/* soft halo that pulses in time with the core's breath */
.cs-core__glow {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 240px;
  height: 240px;
  margin: -120px 0 0 -120px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(var(--cl-accent), .34) 0%, rgba(47, 123, 255, .14) 42%, transparent 68%);
  animation: cs-core-pulse 4.6s ease-in-out infinite;
  will-change: opacity, transform;
}

@keyframes cs-core-pulse {

  0%,
  100% {
    opacity: .55;
    transform: scale(.94);
  }

  50% {
    opacity: 1;
    transform: scale(1.06);
  }
}

/* the bright energy core */
.cs-core__orb {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 96px;
  height: 96px;
  margin: -48px 0 0 -48px;
  border-radius: 50%;
  background:
    radial-gradient(circle at 50% 38%,
      #ffffff 0%, #d8f4ff 14%, var(--cs-neon) 42%, #2f7bff 74%, rgba(47, 123, 255, .25) 100%);
  box-shadow:
    0 0 42px 10px rgba(var(--cl-accent), .55),
    0 0 110px 34px rgba(47, 123, 255, .28),
    inset 0 -6px 22px rgba(4, 10, 25, .45),
    inset 0 6px 22px rgba(255, 255, 255, .55);
  animation: cs-core-breathe 4.6s ease-in-out infinite;
  will-change: transform;
  z-index: 3;
}

@keyframes cs-core-breathe {

  0%,
  100% {
    transform: scale(1);
  }

  50% {
    transform: scale(1.05);
  }
}

/* faint equator seam — reads as a holographic sphere, not a flat dot */
.cs-core__seam {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background: linear-gradient(180deg, transparent 46%, rgba(4, 10, 25, .35) 50%, transparent 54%);
  mix-blend-mode: multiply;
  opacity: .7;
}

/* segmented HUD reticle sitting in the screen plane, slowly turning */
.cs-core__reticle {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 232px;
  height: 232px;
  margin: -116px 0 0 -116px;
  border-radius: 50%;
  /* dashed tick-scale drawn as a masked ring of conic segments */
  background: repeating-conic-gradient(from 0deg,
      rgba(var(--cl-accent), .55) 0deg 1.4deg,
      transparent 1.4deg 9deg);
  -webkit-mask: radial-gradient(circle, transparent 0 108px, #000 109px 116px, transparent 117px);
  mask: radial-gradient(circle, transparent 0 108px, #000 109px 116px, transparent 117px);
  animation: cs-spin 26s linear infinite;
  will-change: transform;
  opacity: .8;
}

/* two orbit planes, tilted into 3D and gyroscopically crossed;
   each carries a glowing light-packet pinned to its rim */
.cs-core__orbit {
  position: absolute;
  top: 50%;
  left: 50%;
  border-radius: 50%;
  border: 1px solid rgba(var(--cl-accent), .18);
  box-shadow: 0 0 14px rgba(var(--cl-accent), .12) inset;
  transform-style: preserve-3d;
  will-change: transform;
}

.cs-core__orbit--1 {
  width: 260px;
  height: 260px;
  margin: -130px 0 0 -130px;
  transform: rotateX(72deg) rotateZ(0deg);
  animation: cs-orbit-a 13s linear infinite;
}

.cs-core__orbit--2 {
  width: 196px;
  height: 196px;
  margin: -98px 0 0 -98px;
  border-color: rgba(122, 92, 255, .22);
  transform: rotateX(70deg) rotateZ(64deg);
  animation: cs-orbit-b 9s linear infinite;
}

@keyframes cs-orbit-a {
  from {
    transform: rotateX(72deg) rotateZ(0deg);
  }

  to {
    transform: rotateX(72deg) rotateZ(360deg);
  }
}

@keyframes cs-orbit-b {
  from {
    transform: rotateX(70deg) rotateZ(64deg);
  }

  to {
    transform: rotateX(70deg) rotateZ(-296deg);
  }
}

.cs-core__packet {
  position: absolute;
  top: -5px;
  left: 50%;
  width: 10px;
  height: 10px;
  margin-left: -5px;
  border-radius: 50%;
  background: #eaf7ff;
  box-shadow:
    0 0 12px 3px rgba(var(--cl-accent), .95),
    0 0 26px 8px rgba(47, 123, 255, .5);
}

.cs-core__orbit--2 .cs-core__packet {
  background: #f1ecff;
  box-shadow:
    0 0 12px 3px rgba(122, 92, 255, .9),
    0 0 26px 8px rgba(47, 123, 255, .45);
}

@keyframes cs-spin {
  from {
    transform: rotate(0deg);
  }

  to {
    transform: rotate(360deg);
  }
}

.cs-hero__fade {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 30%;
  background: linear-gradient(to bottom, transparent, rgb(var(--cl-background)));
  z-index: 4;
}

.cs-hero__content {
  position: relative;
  z-index: 2;
  text-align: center;
  /* generous bottom padding reserves the lower band for the sunset + grid,
     which lifts the headline and copy up into the clear upper area */
  padding: 56px 24px 180px;
  max-width: 860px;
}

/* soft radial scrim directly behind the copy — keeps the neon title and the
   body text crisp no matter what the animated scene does behind them */
.cs-hero__content::before {
  content: '';
  position: absolute;
  inset: -6% -10% 14% -10%;
  z-index: -1;
  background: radial-gradient(ellipse 74% 60% at 50% 38%,
      rgba(var(--cl-background), .92) 0%,
      rgba(var(--cl-background), .82) 34%,
      rgba(var(--cl-background), .42) 64%,
      transparent 84%);
  pointer-events: none;
}

.cs-hero__badge {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: var(--cs-display);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .22em;
  color: var(--cs-neon);
  padding: 10px 22px;
  border: 1px solid var(--cs-stroke-hi);
  border-radius: 99px;
  background: rgba(var(--cl-accent), .05);
  backdrop-filter: blur(10px);
  box-shadow: inset 0 0 20px rgba(var(--cl-accent), .08), var(--cs-glow-sm);
  margin-bottom: 30px;
  text-transform: uppercase;
}

.cs-pulse {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--cs-neon);
  box-shadow: var(--cs-glow-sm);
  animation: cs-pulse 1.6s ease-in-out infinite;
}

@keyframes cs-pulse {

  0%,
  100% {
    opacity: 1;
    transform: scale(1);
  }

  50% {
    opacity: .35;
    transform: scale(.7);
  }
}

.cs-hero__title {
  font-weight: 900;
  font-size: clamp(38px, 6.4vw, 76px);
  line-height: 1.1;
  text-transform: uppercase;
  text-shadow: 0 0 40px rgba(var(--cl-accent), .18);
  margin-bottom: 22px;
}

.cs-hero__title .cs-neon {
  display: block;
}

.cs-neon {
  background: linear-gradient(92deg, var(--cs-neon) 10%, #2f7bff 60%, #7a5cff 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 0 14px rgba(var(--cl-accent), .45));
}

.cs-glitch {
  position: relative;
}

.cs-glitch::before,
.cs-glitch::after {
  content: attr(data-text);
  position: absolute;
  inset: 0;
  background: inherit;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  opacity: 0;
}

.cs-glitch::before {
  animation: cs-glitch-a 3.2s infinite steps(1);
}

.cs-glitch::after {
  animation: cs-glitch-b 3.2s infinite steps(1);
}

@keyframes cs-glitch-a {

  0%,
  92% {
    opacity: 0;
    transform: none;
  }

  93% {
    opacity: .8;
    transform: translate(-4px, 2px);
    clip-path: inset(10% 0 55% 0);
  }

  95% {
    opacity: 0;
  }

  96% {
    opacity: .8;
    transform: translate(3px, -2px);
    clip-path: inset(60% 0 15% 0);
  }

  97% {
    opacity: 0;
  }
}

@keyframes cs-glitch-b {

  0%,
  93.5% {
    opacity: 0;
    transform: none;
  }

  94.5% {
    opacity: .7;
    transform: translate(4px, 1px);
    clip-path: inset(40% 0 35% 0);
  }

  95.5% {
    opacity: 0;
  }
}

.cs-hero__sub {
  font-size: clamp(16px, 2vw, 20px);
  font-weight: 500;
  color: rgba(var(--cl-t-primary), .94);
  text-shadow: 0 1px 16px rgba(var(--cl-background), .95),
    0 0 30px rgba(var(--cl-background), .65);
  max-width: 620px;
  margin: 0 auto 38px;
}

.cs-hero__actions {
  display: flex;
  gap: 16px;
  justify-content: center;
  flex-wrap: wrap;
}

.cs-hero__scroll {
  position: absolute;
  bottom: 32px;
  left: 50%;
  transform: translate(-50%, 30px);
  opacity: 0;
  transition: opacity .8s var(--cs-ease), transform .8s var(--cs-ease);
  width: 26px;
  height: 44px;
  border: 1.5px solid var(--cs-stroke-hi);
  border-radius: 99px;
  display: flex;
  justify-content: center;
  box-shadow: inset 0 0 12px rgba(var(--cl-accent), .08);
  z-index: 10;
}

.cs-hero__scroll span {
  width: 3px;
  height: 9px;
  margin-top: 8px;
  border-radius: 3px;
  background: var(--cs-neon);
  box-shadow: var(--cs-glow-sm);
  animation: cs-scroll-hint 1.8s var(--cs-ease) infinite;
}

@keyframes cs-scroll-hint {
  0% {
    transform: translateY(0);
    opacity: 1;
  }

  70% {
    transform: translateY(16px);
    opacity: 0;
  }

  100% {
    transform: translateY(0);
    opacity: 0;
  }
}

/* ═══════════ FLOATING PARTICLES ═══════════ */
.cs-hero__particles {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
}

.cs-particle {
  position: absolute;
  width: 3px;
  height: 3px;
  border-radius: 50%;
  background: rgba(var(--cl-accent), .7);
  box-shadow: 0 0 6px rgba(var(--cl-accent), .5), 0 0 14px rgba(47, 123, 255, .3);
  animation: cs-float-up linear infinite;
  will-change: transform, opacity;
}

.cs-particle--1 {
  left: 38%;
  bottom: 12%;
  animation-duration: 6s;
  animation-delay: 0s;
  width: 2px;
  height: 2px;
}

.cs-particle--2 {
  left: 55%;
  bottom: 10%;
  animation-duration: 8s;
  animation-delay: -2s;
  width: 4px;
  height: 4px;
  background: rgba(122, 92, 255, .6);
  box-shadow: 0 0 8px rgba(122, 92, 255, .5), 0 0 18px rgba(122, 92, 255, .25);
}

.cs-particle--3 {
  left: 45%;
  bottom: 18%;
  animation-duration: 7s;
  animation-delay: -4s;
}

.cs-particle--4 {
  left: 62%;
  bottom: 14%;
  animation-duration: 9s;
  animation-delay: -1s;
  width: 2px;
  height: 2px;
  background: rgba(124, 199, 255, .6);
  box-shadow: 0 0 6px rgba(124, 199, 255, .5);
}

.cs-particle--5 {
  left: 35%;
  bottom: 20%;
  animation-duration: 10s;
  animation-delay: -5s;
  width: 2.5px;
  height: 2.5px;
}

.cs-particle--6 {
  left: 52%;
  bottom: 8%;
  animation-duration: 7.5s;
  animation-delay: -3s;
  width: 3px;
  height: 3px;
  background: rgba(122, 92, 255, .5);
  box-shadow: 0 0 8px rgba(122, 92, 255, .4);
}

@keyframes cs-float-up {
  0% {
    transform: translateY(0) scale(1);
    opacity: 0;
  }

  10% {
    opacity: .8;
  }

  50% {
    opacity: .6;
    transform: translateY(-120px) scale(.8);
  }

  90% {
    opacity: .15;
  }

  100% {
    transform: translateY(-260px) scale(.4);
    opacity: 0;
  }
}

/* ═══════════ PLANET HOVER INTERACTIVE GLOW ═══════════ */
.cs-core {
  transition: transform .5s var(--cs-ease);
}

.cs-core:hover {
  transform: translateX(-50%) scale(1.06);
}

.cs-core:hover .cs-core__orb {
  box-shadow:
    0 0 56px 14px rgba(var(--cl-accent), 0.7),
    0 0 130px 40px rgba(47, 123, 255, 0.35),
    inset 0 -6px 22px rgba(4, 10, 25, 0.45),
    inset 0 6px 22px rgba(255, 255, 255, 0.55);
}

.cs-core__orb {
  transition: box-shadow .5s var(--cs-ease);
}

/* ═══════════ STATS ═══════════ */
.cs-stats {
  margin-top: 1.5rem;
}

.cs-stats__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 18px;
}

.cs-stat {
  padding: 30px 22px;
  text-align: center;
  overflow: hidden;
  transition: transform .4s var(--cs-ease), border-color .4s, box-shadow .4s;
}

.cs-stat::after {
  content: '';
  position: absolute;
  top: 0;
  left: 10%;
  right: 10%;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--cs-neon), transparent);
  opacity: .6;
}

.cs-stat:hover {
  transform: translateY(-6px);
  border-color: var(--cs-stroke-hi);
  box-shadow: var(--cs-glow-md), 0 18px 40px rgba(0, 0, 0, .5);
}

.cs-stat__value {
  font-family: var(--cs-numeric);
  font-weight: 700;
  font-size: clamp(28px, 3.1vw, 40px);
  line-height: 1;
  letter-spacing: -.01em;
  font-variant-numeric: tabular-nums;
  font-feature-settings: 'tnum' 1;
  color: var(--cs-neon);
  text-shadow: var(--cs-glow-sm);
  margin-bottom: 8px;
}

.cs-stat__label {
  font-weight: 600;
  font-size: 13px;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: rgba(var(--cl-t-primary), .6);
}

/* ═══════════ SECTION HEADS (features + products title) ═══════════ */
.cs-section-head {
  text-align: center;
  max-width: 660px;
  margin: 0 auto 44px;
}

.cs-sectag {
  font-family: var(--cs-display);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .3em;
  color: var(--cs-neon);
  text-shadow: var(--cs-glow-sm);
  display: block;
  margin-bottom: 12px;
  text-transform: uppercase;
}

.cs-sectitle {
  font-weight: 900;
  font-size: clamp(26px, 4vw, 40px);
  text-transform: uppercase;
  margin-bottom: 12px;
}

.cs-secsub {
  color: rgba(var(--cl-t-primary), .65);
  font-size: 17px;
  font-weight: 500;
}

/* products section title (default theme h2 with accent border) */
h2.border-l-accent-500 {
  font-family: var(--cs-display);
  text-transform: uppercase;
  letter-spacing: .05em;
  border-left-width: 4px;
  text-shadow: 0 0 24px rgba(var(--cl-accent), .25);
  border-image: linear-gradient(to bottom, var(--cs-neon), transparent) 1;
}

/* ═══════════ SEARCHBAR ═══════════ */
section[data-component-id] .bg-card.focus-within\:border-accent-500,
section[data-component-id] div.bg-card.border {
  background: rgba(var(--cl-card), .45);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-color: var(--cs-stroke);
  transition: border-color .3s, box-shadow .3s;
}

section[data-component-id] .focus-within\:border-accent-500:focus-within {
  box-shadow: var(--cs-glow-sm);
}

/* ═══════════ PRODUCT CARDS ═══════════ */
a.block.h-full.bg-card {
  background: rgba(var(--cl-card), .45) !important;
  backdrop-filter: blur(16px) saturate(140%);
  -webkit-backdrop-filter: blur(16px) saturate(140%);
  border-color: var(--cs-stroke) !important;
  border-radius: 16px;
  overflow: hidden;
  transition: transform .45s var(--cs-ease), border-color .45s, box-shadow .45s;
  display: flex;
  flex-direction: column;
}

a.block.h-full.bg-card:hover {
  transform: translateY(-8px);
  border-color: var(--cs-stroke-hi) !important;
  box-shadow: var(--cs-glow-md), 0 26px 60px rgba(0, 0, 0, .6);
}

/* image zoom + scanline sweep */
a.block.h-full.bg-card .relative.overflow-hidden {
  border-color: var(--cs-stroke) !important;
  margin: 12px;
  border-radius: 12px;
}

a.block.h-full.bg-card .relative.overflow-hidden img {
  transition: transform .55s var(--cs-ease);
}

a.block.h-full.bg-card:hover .relative.overflow-hidden img {
  transform: scale(1.06);
}

a.block.h-full.bg-card .relative.overflow-hidden::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom, transparent 45%, rgba(var(--cl-accent), .14) 50%, transparent 55%);
  transform: translateY(-100%);
  opacity: 0;
  pointer-events: none;
  transition: opacity .2s;
}

a.block.h-full.bg-card:hover .relative.overflow-hidden::after {
  opacity: 1;
  animation: cs-scan 1.4s linear infinite;
}

@keyframes cs-scan {
  from {
    transform: translateY(-100%);
  }

  to {
    transform: translateY(100%);
  }
}

/* title + price glow */
a.block.h-full.bg-card .text-left.px-5.pb-5 {
  padding: 0 20px 20px;
  flex-grow: 1;
  display: flex;
  flex-direction: column;
}

a.block.h-full.bg-card h3 {
  font-family: var(--cs-display);
  font-size: 1.2rem;
  letter-spacing: .02em;
  margin-bottom: 8px;
  transition: color .3s;
  line-height: 1.3;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  line-height: 1.35;
}

a.block.h-full.bg-card:hover h3 {
  color: var(--cs-neon);
  text-shadow: var(--cs-glow-sm);
}

/* Price: toned-down glow — still neon but no longer eye-searing.
   Larger font, higher contrast so it reads cleanly at a glance. */
a.block.h-full.bg-card .text-accent-500 {
  /* soft glow only — use rgb() so opacity can be reduced */
  text-shadow: 0 0 8px rgba(var(--cl-accent), .30);
  font-family: var(--cs-numeric);
  font-variant-numeric: tabular-nums;
  font-feature-settings: 'tnum' 1;
  font-size: 1.05rem;
  font-weight: 700;
  letter-spacing: .01em;
}

/* badges */
a.block.h-full.bg-card .badges>div {
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border: 1px solid rgba(255, 255, 255, .18);
  box-shadow: 0 0 14px rgba(0, 0, 0, .35);
  font-family: var(--cs-display);
  font-size: .65rem !important;
  letter-spacing: .08em;
  text-transform: uppercase;
}

/* ═══════════ FEATURES ═══════════ */
.cs-features {
  margin: 3.5rem 0 1rem;
}

.cs-features__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 22px;
}

.cs-feature {
  padding: 32px 28px;
  overflow: hidden;
  transition: transform .4s var(--cs-ease), border-color .4s, box-shadow .4s;
}

.cs-feature::after {
  content: '';
  position: absolute;
  width: 140px;
  height: 140px;
  right: -60px;
  top: -60px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(var(--cl-accent), .14), transparent 70%);
  opacity: 0;
  transition: opacity .4s;
}

.cs-feature:hover {
  transform: translateY(-8px);
  border-color: var(--cs-stroke-hi);
  box-shadow: var(--cs-glow-md), 0 20px 46px rgba(0, 0, 0, .55);
}

.cs-feature:hover::after {
  opacity: 1;
}

.cs-feature__icon {
  width: 54px;
  height: 54px;
  display: grid;
  place-items: center;
  font-size: 21px;
  color: var(--cs-neon);
  border: 1px solid var(--cs-stroke-hi);
  border-radius: 14px;
  background: rgba(var(--cl-accent), .06);
  box-shadow: inset 0 0 16px rgba(var(--cl-accent), .1), var(--cs-glow-sm);
  margin-bottom: 20px;
  transition: transform .4s var(--cs-ease), box-shadow .4s;
}

.cs-feature:hover .cs-feature__icon {
  transform: scale(1.08) rotate(-4deg);
  box-shadow: var(--cs-glow-md);
}

.cs-feature__title {
  font-size: 15px;
  font-weight: 700;
  letter-spacing: .05em;
  text-transform: uppercase;
  margin-bottom: 8px;
}

.cs-feature__desc {
  color: rgba(var(--cl-t-primary), .65);
  font-size: 15px;
  line-height: 1.55;
}

/* ═══════════ FOOTER ═══════════ */
footer.bg-background {
  background: rgba(var(--cl-card), .35) !important;
  backdrop-filter: blur(18px) saturate(140%);
  -webkit-backdrop-filter: blur(18px) saturate(140%);
  border-color: var(--cs-stroke) !important;
  border-radius: 16px;
  position: relative;
  overflow: hidden;
  margin-top: 2rem;
}

footer.bg-background::before {
  content: '';
  position: absolute;
  top: 0;
  left: 20%;
  right: 20%;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--cs-neon), transparent);
  box-shadow: 0 0 16px 2px rgba(var(--cl-accent), .4);
}

footer.bg-background p.font-semibold {
  font-family: var(--cs-display);
  letter-spacing: .08em;
  text-transform: uppercase;
  background: linear-gradient(92deg, var(--cs-neon) 10%, #7cc7ff 60%, #7a5cff 110%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}

footer.bg-background a {
  transition: color .25s, text-shadow .25s, transform .25s var(--cs-ease);
}

footer.bg-background a:hover {
  color: var(--cs-neon) !important;
  text-shadow: 0 0 10px rgba(var(--cl-accent), .5);
}

/* ═══════════ GENERIC ACCENT BUTTON GLOW (product form, cart, etc.) ═══════════ */
button.bg-accent-500,
a.bg-accent-500,
button.bg-accent-600,
a.bg-accent-600 {
  box-shadow: 0 0 18px rgba(var(--cl-accent), .35);
  transition: box-shadow .3s, transform .3s var(--cs-ease), background-color .3s;
}

button.bg-accent-500:hover,
a.bg-accent-500:hover,
button.bg-accent-600:hover,
a.bg-accent-600:hover {
  box-shadow: var(--cs-glow-md);
  transform: translateY(-2px);
}

/* ═══════════ SCROLL REVEAL ═══════════ */
.cs-reveal {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity .8s var(--cs-ease), transform .8s var(--cs-ease);
}

.cs-d1 {
  transition-delay: .12s;
}

.cs-d2 {
  transition-delay: .24s;
}

.cs-d3 {
  transition-delay: .36s;
}

.cs-d4 {
  transition-delay: .48s;
}

.cs-reveal.cs-visible {
  opacity: 1;
  transform: translateY(0);
}

/* scroll indicator uses absolute+translateX, preserve that when revealed */
.cs-hero__scroll.cs-reveal.cs-visible {
  transform: translate(-50%, 0) !important;
}

/* if JS fails, everything stays visible */
.no-js .cs-reveal {
  opacity: 1;
  transform: none;
}

/* @media (prefers-reduced-motion: reduce) {
  .cs-hero__stars, .cs-hero__aurora,
  .cs-core__glow, .cs-core__orb, .cs-core__reticle,
  .cs-core__orbit--1, .cs-core__orbit--2,
  .cs-pulse, .cs-glitch::before, .cs-glitch::after,
  .cs-hero__scroll span, .cs-particle {
    animation: none !important;
  }
  .cs-core__orbit--1 { transform: rotateX(72deg) rotateZ(24deg); }
  .cs-core__orbit--2 { transform: rotateX(70deg) rotateZ(64deg); }
  .cs-reveal { opacity: 1 !important; transform: none !important; transition: none !important; }
} */

/* ═══════════ RESPONSIVE ═══════════ */
@media (max-width: 1024px) {
  .cs-stats__grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .cs-features__grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 640px) {
  .cs-hero__panel {
    min-height: 560px;
  }

  .cs-core {
    width: 232px;
    height: 232px;
    bottom: 12%;
  }

  .cs-core__orbit--1 {
    width: 208px;
    height: 208px;
    margin: -104px 0 0 -104px;
  }

  .cs-core__orbit--2 {
    width: 156px;
    height: 156px;
    margin: -78px 0 0 -78px;
  }

  .cs-core__reticle {
    width: 186px;
    height: 186px;
    margin: -93px 0 0 -93px;
    -webkit-mask: radial-gradient(circle, transparent 0 85px, #000 86px 93px, transparent 94px);
    mask: radial-gradient(circle, transparent 0 85px, #000 86px 93px, transparent 94px);
  }

  .cs-core__orb {
    width: 78px;
    height: 78px;
    margin: -39px 0 0 -39px;
  }

  .cs-core__glow {
    width: 190px;
    height: 190px;
    margin: -95px 0 0 -95px;
  }

  .cs-hero__aurora {
    width: 520px;
    height: 520px;
  }

  .cs-hero__content {
    padding: 44px 18px 176px;
  }

  .cs-hero__content::before {
    inset: -4% -6% 12% -6%;
  }

  .cs-hero__actions .cs-btn {
    width: 100%;
    max-width: 320px;
  }

  .cs-stats__grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
  }

  .cs-stat {
    padding: 22px 14px;
  }

  .cs-features__grid {
    grid-template-columns: 1fr;
  }
}

/* ═══════════ MOBILE PERFORMANCE MODE ═══════════
   Phones/tablets get the same look with the expensive effects removed:
   - backdrop-filter blur (the single biggest scroll-jank source) is
     replaced by more opaque solid backgrounds
   - glitch layers and the scroll-hint animation are paused
   - the ambient glows are shrunk and simplified                       */
@media (max-width: 768px) {

  .cs-glass,
  header.component>div.bg-card,
  footer.bg-background,
  a.block.h-full.bg-card,
  section[data-component-id] .bg-card.focus-within\:border-accent-500,
  section[data-component-id] div.bg-card.border,
  a.block.h-full.bg-card .badges>div,
  .cs-hero__badge {
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
  }

  .cs-glass,
  header.component>div.bg-card,
  a.block.h-full.bg-card {
    background: rgba(var(--cl-card), .88) !important;
  }

  footer.bg-background {
    background: rgba(var(--cl-card), .8) !important;
  }

  /* pure-decoration animations off on phones */
  .cs-glitch::before,
  .cs-glitch::after,
  .cs-hero__scroll span {
    animation: none !important;
  }

  /* particles too expensive on mobile */
  .cs-hero__particles {
    display: none;
  }

  /* one smaller ambient glow is enough on a phone screen */
  .cs-bg-glow--1 {
    width: 420px;
    height: 420px;
    top: -180px;
    right: -160px;
  }

  .cs-bg-glow--2 {
    display: none;
  }

  /* the reticle's conic tick-scale is the one costly layer on mobile —
     hide it and lean on the orbits + core, which stay cheap (transforms) */
  .cs-core__reticle {
    display: none;
  }

  .cs-core__orbit--1 {
    animation-duration: 18s;
  }

  .cs-core__orbit--2 {
    animation-duration: 13s;
  }

  /* hover-lift transitions do nothing on touch, so drop the reflow risk */
  a.block.h-full.bg-card:hover {
    transform: none;
  }
}

/* ═══════════════════════════════════════════════════════════════
   CURRENCY SELECTOR (Choices.js)
   The stock dropdown fought the theme: a blinding solid-cyan selected
   row, empty symbol boxes on codes with no glyph, and cramped rows.
   This rebuilds it as a glass panel that matches the nav — neon-tinted,
   blurred, a soft highlight instead of a hard block, and a fixed-width
   symbol slot so every row lines up even when a symbol is missing.
   !important is required to win over choices.min.css (CDN, loads late).
   ═══════════════════════════════════════════════════════════════ */

@media (min-width: 768px) {
/* ── collapsed pill: show the ISO code (USD), not a lone symbol ── */
.currency-selector .choices__inner {
  min-width: 90px !important;
  height: 38px !important;
  padding: 0 30px 0 13px !important;
  display: flex !important;
  align-items: center !important;
  border-radius: 10px !important;
  background: rgba(var(--cl-card), .55) !important;
  border: 1px solid var(--cs-stroke) !important;
  backdrop-filter: blur(10px) saturate(140%);
  -webkit-backdrop-filter: blur(10px) saturate(140%);
  transition: border-color .25s, box-shadow .25s, background .25s;
}

.currency-selector .choices:hover .choices__inner {
  border-color: var(--cs-stroke-hi) !important;
  box-shadow: var(--cs-glow-sm);
  background: rgba(var(--cl-accent), .06) !important;
}

.currency-selector .choices.is-open .choices__inner {
  border-color: var(--cs-stroke-hi) !important;
  box-shadow: var(--cs-glow-sm), inset 0 0 14px rgba(var(--cl-accent), .08) !important;
}

.currency-selector .choices__inner .choices__item {
  max-width: none !important;
  display: flex !important;
  align-items: center;
  font-family: var(--cs-display);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .08em;
}

.currency-selector .choices__inner .symbol,
.currency-selector .choices__inner .default {
  display: none !important;
}

.currency-selector .choices__inner .code {
  display: inline !important;
  color: var(--cs-neon) !important;
  text-shadow: var(--cs-glow-sm);
}

/* dropdown caret, tinted to the accent */
.currency-selector .choices[data-type*="select-one"]::after {
  border-color: rgba(var(--cl-accent), .85) transparent transparent transparent !important;
  right: 13px !important;
}

.currency-selector .choices[data-type*="select-one"].is-open::after {
  border-color: transparent transparent rgba(var(--cl-accent), .85) transparent !important;
  margin-top: -7.5px !important;
}

/* ── dropdown panel: glass, neon border, soft glow ── */
.currency-selector .choices__list.choices__list--dropdown {
  margin-top: 8px !important;
  margin-left: 0 !important;
  right: 0;
  left: auto;
  min-width: 14.5rem !important;
  max-width: calc(100vw - 2rem);
  padding: 6px !important;
  border-radius: 14px !important;
  border: 1px solid var(--cs-stroke-hi) !important;
  background: rgba(10, 16, 32, .92) !important;
  backdrop-filter: blur(20px) saturate(150%);
  -webkit-backdrop-filter: blur(20px) saturate(150%);
  box-shadow: var(--cs-glow-md), 0 22px 50px rgba(0, 0, 0, .55) !important;
  overflow: hidden;
}

/* search field */
.currency-selector .choices__list--dropdown .choices__input,
.currency-selector .choices__list[aria-expanded] .choices__input {
  margin: 2px 2px 8px !important;
  padding: 9px 12px !important;
  width: calc(100% - 4px) !important;
  border-radius: 9px !important;
  border: 1px solid var(--cs-stroke) !important;
  background: rgba(var(--cl-background), .6) !important;
  color: rgb(var(--cl-t-primary)) !important;
  font-size: 13px !important;
}

.currency-selector .choices__input::placeholder {
  color: rgba(var(--cl-t-primary), .42);
}

.currency-selector .choices__input:focus {
  border-color: var(--cs-stroke-hi) !important;
  box-shadow: 0 0 0 3px rgba(var(--cl-accent), .12);
  outline: none;
}

/* scroll area */
.currency-selector .choices__list--dropdown .choices__list {
  max-height: 258px;
  scrollbar-width: thin;
  scrollbar-color: rgba(var(--cl-accent), .5) transparent;
}

.currency-selector .choices__list--dropdown .choices__list::-webkit-scrollbar {
  width: 6px;
}

.currency-selector .choices__list--dropdown .choices__list::-webkit-scrollbar-thumb {
  background: rgba(var(--cl-accent), .45);
  border-radius: 99px;
}

.currency-selector .choices__list--dropdown .choices__list::-webkit-scrollbar-track {
  background: transparent;
}

/* option rows */
.currency-selector .choices__list--dropdown .choices__item--selectable,
.currency-selector .choices__list[aria-expanded] .choices__item--selectable {
  padding: 9px 12px !important;
  margin: 1px 0;
  border-radius: 9px !important;
  background: transparent !important;
  color: rgba(var(--cl-t-primary), .78) !important;
  transition: background .16s, color .16s, box-shadow .16s;
}

.currency-selector .choices__list--dropdown .choices__item>span {
  gap: 4px;
}

/* fixed-width symbol slot with no background box → rows always align,
   and codes without a glyph no longer show an empty box */
.currency-selector .choices__list--dropdown .symbol {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  min-width: 2.4rem !important;
  width: 2.4rem !important;
  margin-right: 6px !important;
  padding: 0 !important;
  background: transparent !important;
  color: rgba(var(--cl-accent), .85) !important;
  font-weight: 600;
  font-size: .82rem !important;
  letter-spacing: 0 !important;
  white-space: nowrap;
  overflow: hidden;
}

.currency-selector .choices__list--dropdown .code {
  display: inline !important;
  color: inherit !important;
  font-weight: 600;
  letter-spacing: .04em;
}

/* "Default" tag → neon pill */
.currency-selector .choices__list--dropdown .default {
  display: inline-flex !important;
  align-items: center;
  padding: 2px 8px;
  border-radius: 99px;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--cs-neon) !important;
  background: rgba(var(--cl-accent), .12);
  border: 1px solid var(--cs-stroke-hi);
}

/* highlighted row (hover / keyboard): soft tint + neon edge, no hard block */
.currency-selector .choices__list--dropdown .choices__item--selectable.is-highlighted,
.currency-selector .choices__list[aria-expanded] .choices__item--selectable.is-highlighted {
  background: rgba(var(--cl-accent), .12) !important;
  color: rgb(var(--cl-t-primary)) !important;
  box-shadow: inset 2px 0 0 var(--cs-neon);
}

.currency-selector .choices__list--dropdown .choices__item--selectable.is-highlighted .symbol {
  color: var(--cs-neon) !important;
}

/* the active currency */
.currency-selector .choices__list--dropdown .choices__item.is-selected {
  background: rgba(var(--cl-accent), .07) !important;
}
}

/* ═══════════════════════════════════════════════════════════════
   SHOW MORE / SHOW LESS — products component
   Controlled by properties.initial_count in schema (default: 9).
   ═══════════════════════════════════════════════════════════════ */

/* Bottom fade that hints at hidden content */
.cs-showmore-fade {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 140px;
  background: linear-gradient(to bottom, transparent, rgb(var(--cl-background)) 88%);
  pointer-events: none;
  z-index: 2;
}

/* Button wrapper */
.cs-showmore-wrap {
  display: flex;
  justify-content: center;
  margin-top: 28px;
  position: relative;
  z-index: 3;
}

/* The button itself — ghost style matching the hero secondary CTA */
.cs-showmore-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  font-family: var(--cs-display);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  padding: 14px 40px;
  border-radius: 10px;
  border: 1px solid var(--cs-stroke-hi);
  color: var(--cs-neon);
  background: rgba(var(--cl-accent), .04);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  box-shadow: inset 0 0 20px rgba(var(--cl-accent), .06);
  cursor: pointer;
  transition: transform .3s var(--cs-ease), box-shadow .3s var(--cs-ease),
    background .3s, border-color .3s;
  will-change: transform;
}

.cs-showmore-btn:hover {
  background: rgba(var(--cl-accent), .10);
  border-color: var(--cs-neon);
  box-shadow: var(--cs-glow-md);
  transform: translateY(-3px);
}

.cs-showmore-btn:focus-visible {
  outline: 2px solid var(--cs-neon);
  outline-offset: 4px;
}
/* ═══════════════════════════════════════════════════════════════
   MUSIC PLAYER — floating neon glass widget  (v2.2)
   Markup: snippets/music-player.njk · Logic: assets/music.js
   Playlist edytujesz w Dashboard → Theme Settings → Global.
   ═══════════════════════════════════════════════════════════════ */
.cs-music {
  position: fixed;
  bottom: 22px;
  z-index: 80;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 12px;
  font-family: inherit;
}

.cs-music--bottom-left  { left: 22px; }
.cs-music--bottom-right { right: 22px; align-items: flex-end; }

/* ── collapsed toggle: spinning neon disc ── */
.cs-music__toggle {
  position: relative;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  border: 1px solid var(--cs-stroke-hi);
  background:
    radial-gradient(circle at 32% 30%, rgba(var(--cl-accent), .28), transparent 60%),
    rgba(var(--cl-card), .82);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  color: var(--cs-neon);
  font-size: 20px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: var(--cs-glow-sm), 0 8px 26px rgba(0, 0, 0, .55);
  transition: transform .3s var(--cs-ease), box-shadow .3s var(--cs-ease), border-color .3s;
}

.cs-music__toggle:hover {
  transform: translateY(-3px) scale(1.05);
  border-color: var(--cs-neon);
  box-shadow: var(--cs-glow-md), 0 12px 30px rgba(0, 0, 0, .6);
}

.cs-music__disc {
  display: flex;
  align-items: center;
  justify-content: center;
}

.cs-music.is-playing .cs-music__disc {
  animation: cs-music-spin 4s linear infinite;
}

@keyframes cs-music-spin {
  to { transform: rotate(360deg); }
}

/* soft pulse ring while playing */
.cs-music__pulse {
  position: absolute;
  inset: -1px;
  border-radius: 50%;
  border: 1px solid rgba(var(--cl-accent), .55);
  opacity: 0;
  pointer-events: none;
}

.cs-music.is-playing .cs-music__pulse {
  animation: cs-music-pulse 2.2s ease-out infinite;
}

@keyframes cs-music-pulse {
  0%   { transform: scale(1);    opacity: .7; }
  70%  { transform: scale(1.55); opacity: 0; }
  100% { transform: scale(1.55); opacity: 0; }
}

/* ── expanded panel ── */
.cs-music__panel {
  width: 300px;
  max-width: calc(100vw - 44px);
  padding: 16px;
  border-radius: 16px;
  box-shadow: 0 18px 50px rgba(0, 0, 0, .6), inset 0 0 30px rgba(var(--cl-accent), .04);
  animation: cs-music-in .35s var(--cs-ease);
}

@keyframes cs-music-in {
  from { opacity: 0; transform: translateY(14px) scale(.97); }
  to   { opacity: 1; transform: none; }
}

/* top neon hairline, same signature as the header */
.cs-music__panel::after {
  content: '';
  position: absolute;
  top: 0;
  left: 12%;
  right: 12%;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--cs-neon), transparent);
  opacity: .7;
}

.cs-music__top {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 12px;
}

.cs-music__label {
  font-family: var(--cs-display);
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--cs-neon);
  opacity: .85;
  margin-bottom: 2px;
}

.cs-music__meta { flex: 1; min-width: 0; }

.cs-music__title {
  font-size: 14px;
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  position: relative;
  -webkit-mask-image: linear-gradient(90deg, #000 82%, transparent);
  mask-image: linear-gradient(90deg, #000 82%, transparent);
}

.cs-music__title span { display: inline-block; padding-right: 34px; }

/* long titles drift like a marquee, but only while playing */
.cs-music.is-playing .cs-music__title span {
  animation: cs-music-marquee 12s linear infinite;
}

@keyframes cs-music-marquee {
  0%, 18% { transform: translateX(0); }
  82%, 100% { transform: translateX(min(0px, calc(216px - 100%))); }
}

/* ── equalizer bars ── */
.cs-music__eq {
  display: flex;
  align-items: flex-end;
  gap: 3px;
  width: 20px;
  height: 20px;
  flex-shrink: 0;
}

.cs-music__eq i {
  flex: 1;
  height: 30%;
  border-radius: 2px;
  background: linear-gradient(180deg, var(--cs-neon), #2f7bff);
  box-shadow: 0 0 6px rgba(var(--cl-accent), .5);
  transition: height .4s;
}

.cs-music.is-playing .cs-music__eq i          { animation: cs-eq .9s ease-in-out infinite alternate; }
.cs-music.is-playing .cs-music__eq i:nth-child(2) { animation-duration: .7s; animation-delay: .15s; }
.cs-music.is-playing .cs-music__eq i:nth-child(3) { animation-duration: 1.1s; animation-delay: .05s; }
.cs-music.is-playing .cs-music__eq i:nth-child(4) { animation-duration: .8s; animation-delay: .25s; }

@keyframes cs-eq {
  from { height: 22%; }
  to   { height: 100%; }
}

/* ── seek + time ── */
.cs-music__seek {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 12px;
}

.cs-music__time {
  font-size: 11px;
  opacity: .75;
  min-width: 32px;
  text-align: center;
}

/* ── neon range inputs (seek + volume) ── */
.cs-music__range {
  -webkit-appearance: none;
  appearance: none;
  flex: 1;
  height: 4px;
  border-radius: 99px;
  background:
    linear-gradient(90deg, var(--cs-neon) var(--fill, 0%), rgba(var(--cl-accent), .16) var(--fill, 0%));
  outline: none;
  cursor: pointer;
}

.cs-music__range::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: var(--cs-neon);
  border: 2px solid rgb(var(--cl-background));
  box-shadow: 0 0 8px rgba(var(--cl-accent), .8);
  transition: transform .2s var(--cs-ease);
}

.cs-music__range::-webkit-slider-thumb:hover { transform: scale(1.3); }

.cs-music__range::-moz-range-thumb {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: var(--cs-neon);
  border: 2px solid rgb(var(--cl-background));
  box-shadow: 0 0 8px rgba(var(--cl-accent), .8);
}

.cs-music__range::-moz-range-track {
  height: 4px;
  border-radius: 99px;
  background: rgba(var(--cl-accent), .16);
}

.cs-music__range::-moz-range-progress {
  height: 4px;
  border-radius: 99px;
  background: var(--cs-neon);
}

/* ── transport controls ── */
.cs-music__controls {
  display: flex;
  align-items: center;
  gap: 8px;
}

.cs-music__icon-btn {
  width: 32px;
  height: 32px;
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 9px;
  border: 1px solid transparent;
  background: transparent;
  color: rgba(var(--cl-t-primary), .75);
  font-size: 13px;
  cursor: pointer;
  transition: color .25s, background .25s, border-color .25s, box-shadow .25s;
}

.cs-music__icon-btn:hover,
.cs-music__icon-btn.is-active {
  color: var(--cs-neon);
  background: rgba(var(--cl-accent), .10);
  border-color: var(--cs-stroke);
  box-shadow: var(--cs-glow-sm);
}

.cs-music__play {
  width: 42px;
  height: 42px;
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  border: none;
  font-size: 15px;
  color: rgb(var(--cl-t-accent));
  background: linear-gradient(92deg, var(--cs-neon) 0%, #2f7bff 130%);
  box-shadow: 0 0 16px rgba(var(--cl-accent), .4), 0 4px 16px rgba(0, 0, 0, .5);
  cursor: pointer;
  transition: transform .25s var(--cs-ease), box-shadow .25s var(--cs-ease);
}

.cs-music__play:hover {
  transform: scale(1.08);
  box-shadow: var(--cs-glow-md), 0 6px 20px rgba(0, 0, 0, .55);
}

.cs-music__play i { margin-left: 1px; }

.cs-music__vol {
  display: flex;
  align-items: center;
  gap: 6px;
  flex: 1;
  min-width: 0;
  margin-left: 4px;
}

.cs-music__vol .cs-music__range { min-width: 0; }

/* ── playlist ── */
.cs-music__list {
  max-height: 168px;
  overflow-y: auto;
  margin: 0 0 12px;
  padding: 4px;
  border: 1px solid var(--cs-stroke);
  border-radius: 12px;
  background: rgba(var(--cl-background), .5);
}

.cs-music__list-item {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 8px 10px;
  border: none;
  border-radius: 8px;
  background: transparent;
  color: rgba(var(--cl-t-primary), .8);
  font-family: inherit;
  font-size: 12.5px;
  font-weight: 600;
  text-align: left;
  cursor: pointer;
  transition: background .2s, color .2s;
}

.cs-music__list-item i {
  font-size: 10px;
  color: rgba(var(--cl-t-primary), .4);
  width: 14px;
  flex-shrink: 0;
}

.cs-music__list-item span {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.cs-music__list-item:hover {
  background: rgba(var(--cl-accent), .08);
  color: var(--cs-neon);
}

.cs-music__list-item.is-active {
  background: rgba(var(--cl-accent), .12);
  color: var(--cs-neon);
}

.cs-music__list-item.is-active i {
  color: var(--cs-neon);
  text-shadow: var(--cs-glow-sm);
}

/* mobile: keep it compact, drop the blur (perf mode convention) */
@media (max-width: 768px) {
  .cs-music { bottom: 16px; }
  .cs-music--bottom-left  { left: 16px; }
  .cs-music--bottom-right { right: 16px; }

  .cs-music__toggle {
    width: 50px;
    height: 50px;
    font-size: 18px;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    background: rgba(var(--cl-card), .94);
  }

  .cs-music__panel { width: 272px; }
}

/* ═══════════════════════════════════════════════════════════════
   v2.2 POLISH — additive visual upgrades
   1. Shine sweep on primary buttons
   2. Page fade-in
   3. Consistent neon keyboard focus
   ═══════════════════════════════════════════════════════════════ */

/* 1 — light sweep across the primary CTA on hover */
.cs-btn--primary {
  position: relative;
  overflow: hidden;
}

.cs-btn--primary::after {
  content: '';
  position: absolute;
  top: 0;
  left: -80%;
  width: 55%;
  height: 100%;
  background: linear-gradient(105deg, transparent, rgba(255, 255, 255, .35), transparent);
  transform: skewX(-20deg);
  transition: left .55s var(--cs-ease);
  pointer-events: none;
}

.cs-btn--primary:hover::after { left: 130%; }

/* 2 — the page settles in instead of popping */
#app {
  animation: cs-page-in .3s var(--cs-ease) both;
  will-change: opacity, transform;
}

@keyframes cs-page-in {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: none; }
}

/* ===========================
   DESKTOP NAVIGATION IMPROVEMENTS
   =========================== */
/* Navigation links smooth transitions */
header nav a,
header nav button {
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  position: relative;
  overflow: hidden;
}

header nav a:hover,
header nav button:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

header nav a:active,
header nav button:active {
  transform: translateY(0);
}

/* Active state glow effect */
header nav a.bg-accent-500\/10,
header nav button.bg-accent-500\/10 {
  box-shadow: 0 0 20px rgba(139, 92, 246, 0.3);
}

/* Cart button enhanced hover */
header a[href*="/cart"] {
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}

header a[href*="/cart"]:hover {
  transform: translateY(-2px) scale(1.05);
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
}

header a[href*="/cart"]:hover .cs-cart-badge {
  animation: cs-badge-pulse 0.6s ease-in-out;
}

@keyframes cs-badge-pulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.2); }
}

/* Currency selector enhanced interaction */
.cs-currency-btn {
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}

.cs-currency-btn:hover {
  transform: scale(1.05);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

.cs-currency-btn:active {
  transform: scale(0.98);
}

/* Desktop currency selector dropdown */
.currency-selector select {
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  cursor: pointer;
}

.currency-selector:hover select {
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

/* ===========================
   PRODUCT CARDS IMPROVEMENTS
   =========================== */
/* Enhanced product card hover effects */
.cs-product-card {
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  position: relative;
}

.cs-product-card:hover {
  transform: translateY(-8px);
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3), 0 0 30px rgba(139, 92, 246, 0.15);
  border-color: rgba(139, 92, 246, 0.3);
}

.cs-product-card:active {
  transform: translateY(-4px);
}

/* Product image hover effects */
.cs-product-card img {
  transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.cs-product-card:hover img {
  transform: scale(1.08);
}

/* Product card shimmer effect on hover */
.cs-product-card::before {
  content: '';
  position: absolute;
  top: 0;
  left: -100%;
  width: 100%;
  height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.08), transparent);
  transition: left 0.6s cubic-bezier(0.4, 0, 0.2, 1);
  pointer-events: none;
  z-index: 1;
}

.cs-product-card:hover::before {
  left: 100%;
}

/* Price highlight on hover */
.cs-product-card .text-accent-500 {
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}

.cs-product-card:hover .text-accent-500 {
  text-shadow: 0 0 20px rgba(139, 92, 246, 0.6);
  transform: scale(1.05);
  display: inline-block;
}

/* Badge animation on hover */
.cs-product-card .badges > div {
  transition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}

.cs-product-card:hover .badges > div {
  transform: scale(1.05);
}

/* Image loading skeleton */
.cs-product-card img {
  background: linear-gradient(90deg, rgba(255, 255, 255, 0.03) 25%, rgba(255, 255, 255, 0.05) 50%, rgba(255, 255, 255, 0.03) 75%);
  background-size: 200% 100%;
  animation: cs-skeleton-loading 1.5s ease-in-out infinite;
}

.cs-product-card img[src] {
  animation: none;
  background: transparent;
}

@keyframes cs-skeleton-loading {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* Out of stock overlay */
.cs-product-card[data-stock="0"] {
  opacity: 0.7;
}

.cs-product-card[data-stock="0"]::after {
  content: 'OUT OF STOCK';
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: rgba(0, 0, 0, 0.85);
  color: #ef4444;
  padding: 12px 24px;
  border-radius: 8px;
  font-weight: bold;
  font-size: 14px;
  letter-spacing: 1px;
  z-index: 2;
  border: 2px solid #ef4444;
  box-shadow: 0 4px 20px rgba(239, 68, 68, 0.4);
  pointer-events: none;
}

.cs-product-card[data-stock="0"]:hover {
  transform: translateY(-4px);
}

/* 3 — keyboard focus that matches the theme everywhere */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible {
  outline: 2px solid var(--cs-neon);
  outline-offset: 3px;
  border-radius: 4px;
}

/* Enhanced focus for interactive elements */
.cs-product-card:focus-visible {
  outline: 3px solid var(--cs-neon);
  outline-offset: 4px;
  box-shadow: 0 0 0 4px rgba(139, 92, 246, 0.2);
}

header nav a:focus-visible,
header nav button:focus-visible {
  outline: 2px solid var(--cs-neon);
  outline-offset: 2px;
  box-shadow: 0 0 0 3px rgba(139, 92, 246, 0.15);
}

/* accessibility: honour reduced motion for everything added above */
@media (prefers-reduced-motion: reduce) {
  #app { animation: none; }

  .cs-music.is-playing .cs-music__disc,
  .cs-music.is-playing .cs-music__pulse,
  .cs-music.is-playing .cs-music__eq i,
  .cs-music.is-playing .cs-music__title span,
  .cs-music__panel {
    animation: none !important;
  }

  .cs-btn--primary::after { display: none; }
  
  /* Disable all new animations for reduced motion */
  .cs-product-card::before,
  .cs-product-card img,
  .cs-cart-badge,
  header nav a,
  header nav button,
  .cs-currency-btn,
  .currency-selector select {
    animation: none !important;
    transition-duration: 0.05s !important;
  }
  
  /* Keep hover states but remove complex animations */
  .cs-hero__particles,
  .cs-core,
  .cs-hero__stars,
  .cs-hero__aurora {
    animation: none !important;
    opacity: 0.3 !important;
  }
}

/* High contrast mode improvements */
@media (prefers-contrast: high) {
  .cs-product-card {
    border: 2px solid currentColor;
  }
  
  header nav a,
  header nav button {
    border: 2px solid currentColor;
  }
  
  .cs-cart-badge {
    border: 2px solid currentColor;
  }
}

/* ===========================
   HERO SECTION PERFORMANCE OPTIMIZATION
   =========================== */
/* Use CSS containment for better performance */
.cs-hero {
  contain: layout style paint;
}

.cs-hero__scene {
  will-change: auto;
  contain: layout style paint;
}

/* Optimize particle animations with GPU acceleration */
.cs-hero__particles {
  transform: translateZ(0);
  backface-visibility: hidden;
}

.cs-particle {
  will-change: transform, opacity;
  transform: translateZ(0);
}

/* Optimize core animations */
.cs-core {
  will-change: auto;
  transform: translateX(-50%) translateZ(0);
  backface-visibility: hidden;
}

/* Reduce animation complexity on mobile */
@media (max-width: 768px) {
  .cs-hero__particles {
    opacity: 0.5;
  }
  
  .cs-particle:nth-child(n+4) {
    display: none;
  }
  
  .cs-hero__stars {
    animation-duration: 8s;
  }
  
  .cs-hero__aurora {
    animation-duration: 15s;
  }
}

/* Optimize for lower-end devices */
@media (prefers-reduced-motion: no-preference) and (hover: none) {
  .cs-hero__particles {
    animation-duration: 12s;
  }
}

/* ===========================
   IMAGE LOADING IMPROVEMENTS
   =========================== */
/* Blur placeholder effect for images while loading */
img:not([src]):not([srcset]) {
  background: linear-gradient(90deg, rgba(255, 255, 255, 0.03) 25%, rgba(255, 255, 255, 0.05) 50%, rgba(255, 255, 255, 0.03) 75%);
  background-size: 200% 100%;
  animation: cs-img-loading 1.5s ease-in-out infinite;
}

@keyframes cs-img-loading {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* Blur-up effect when image loads */
img {
  transition: filter 0.3s ease-out, opacity 0.3s ease-out;
}

img[loading="lazy"]:not([src*="data:"]) {
  filter: blur(10px);
  opacity: 0.6;
}

img[loading="lazy"][src]:not([src=""]) {
  filter: blur(0);
  opacity: 1;
}

/* Fade in effect for loaded images */
@keyframes cs-img-fadein {
  from {
    opacity: 0;
    filter: blur(5px);
  }
  to {
    opacity: 1;
    filter: blur(0);
  }
}

/* Apply fade-in to product images */
.cs-product-card img[src] {
  animation: cs-img-fadein 0.4s ease-out;
}

/* Aspect ratio containers to prevent layout shift */
.cs-product-card img,
.cs-hero img,
header img {
  display: block;
  max-width: 100%;
  height: auto;
}

/* Low quality image placeholder (LQIP) support */
img[data-src] {
  filter: blur(20px);
  transform: scale(1.1);
  transition: filter 0.5s ease-out, transform 0.5s ease-out;
}

img[data-src].loaded {
  filter: blur(0);
  transform: scale(1);
}

/* Progressive image loading states */
.img-container {
  position: relative;
  overflow: hidden;
  background: rgba(255, 255, 255, 0.03);
}

.img-container::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(255, 255, 255, 0.05) 50%,
    transparent 100%
  );
  animation: cs-shimmer 2s infinite;
  pointer-events: none;
}

.img-container.loaded::before {
  display: none;
}

@keyframes cs-shimmer {
  0% { transform: translateX(-100%); }
  100% { transform: translateX(100%); }
}

/* Optimize images on slower connections */
@media (prefers-reduced-data: reduce) {
  img[loading="lazy"] {
    content-visibility: auto;
  }
}

/* ═══════════════════════════════════════════════════════════════
   MOBILE UX FIXES  (v2.3)
   Konkretne poprawki działania strony na telefonie:
   - blokada przypadkowego bocznego scrolla
   - brak szarego "flasha" przy tapnięciu + brak opóźnienia double-tap
   - inputy ≥16px → iOS nie robi zoomu przy fokusie na wyszukiwarce
   - większe pola dotyku w nawigacji
   - player i FX szanują notch / home-indicator (safe-area)
   - lżejsza wersja FX na telefonach (mniej warstw, ta sama estetyka)
   ═══════════════════════════════════════════════════════════════ */

/* accidental horizontal scroll can never happen */
html,
body {
  overflow-x: clip;
}

/* native tap feel: no grey highlight, no 300ms double-tap delay */
a,
button,
[role="button"],
input,
select,
textarea,
label {
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
}

@media (max-width: 768px) {

  /* iOS zooms into any focused input below 16px — prevent it on the
     search bar, filters and forms without changing desktop sizing */
  input[type="text"],
  input[type="search"],
  input[type="email"],
  input[type="number"],
  input[type="password"],
  select,
  textarea {
    font-size: 16px !important;
  }

  /* comfier thumb targets for the scrollable nav pills */
  header.component nav a,
  header.component nav button {
    padding-top: 10px !important;
    padding-bottom: 10px !important;
  }

}


/* music player clears the iPhone home-indicator / curved edges */
.cs-music {
  bottom: calc(22px + env(safe-area-inset-bottom, 0px));
}

.cs-music--bottom-left  { left:  calc(22px + env(safe-area-inset-left, 0px)); }
.cs-music--bottom-right { right: calc(22px + env(safe-area-inset-right, 0px)); }

@media (max-width: 768px) {
  .cs-music {
    bottom: calc(16px + env(safe-area-inset-bottom, 0px));
  }

  .cs-music--bottom-left  { left:  calc(16px + env(safe-area-inset-left, 0px)); }
  .cs-music--bottom-right { right: calc(16px + env(safe-area-inset-right, 0px)); }
}

/* ═══════════ MUSIC PLAYER — YouTube mini-view (v2.4) ═══════════
   Widoczny mały podgląd wideo w panelu, gdy gra utwór z YouTube
   (oficjalne IFrame API). Dla plików mp3 sekcja jest schowana.   */
.cs-music__video {
  display: none;
  aspect-ratio: 16 / 9;
  margin-bottom: 12px;
  border: 1px solid var(--cs-stroke);
  border-radius: 12px;
  overflow: hidden;
  background: #000;
  box-shadow: inset 0 0 20px rgba(0, 0, 0, .6);
}

.cs-music.is-yt .cs-music__video {
  display: block;
}

.cs-music__video iframe {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
}

/* ═══════════ MUSIC PLAYER — fabs + quick mute + wybór utworu (v2.5) ═══════════ */
.cs-music__fabs {
  display: flex;
  align-items: center;
  gap: 10px;
}

.cs-music--bottom-right .cs-music__fabs {
  flex-direction: row-reverse;
}

/* mały satelitarny przycisk mute obok krążka — bez otwierania panelu */
.cs-music__mini {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  border: 1px solid var(--cs-stroke);
  background: rgba(var(--cl-card), .82);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  color: rgba(var(--cl-t-primary), .8);
  font-size: 13px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 6px 18px rgba(0, 0, 0, .5);
  transition: transform .25s var(--cs-ease), color .25s, border-color .25s, box-shadow .25s;
}

.cs-music__mini:hover {
  transform: translateY(-2px);
  color: var(--cs-neon);
  border-color: var(--cs-stroke-hi);
  box-shadow: var(--cs-glow-sm), 0 8px 20px rgba(0, 0, 0, .55);
}

.cs-music__mini.is-muted {
  color: rgb(var(--cs-fx-violet));
  border-color: rgba(var(--cs-fx-violet), .55);
  box-shadow: 0 0 10px rgba(var(--cs-fx-violet), .35), 0 6px 18px rgba(0, 0, 0, .5);
}

/* lista utworów widoczna domyślnie — przy 11 utworach musi mieć oddech */
.cs-music__list {
  max-height: 236px;
}

/* delikatny neonowy scrollbar w liście */
.cs-music__list::-webkit-scrollbar {
  width: 6px;
}

.cs-music__list::-webkit-scrollbar-thumb {
  background: rgba(var(--cl-accent), .35);
  border-radius: 99px;
  border: none;
}

@media (max-width: 768px) {
  .cs-music__mini {
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    background: rgba(var(--cl-card), .94);
  }

  .cs-music__list {
    max-height: 190px;
  }
}

/* ═══════════════════════════════════════════════════════════════
   AURORA SKY  (v2.7) — całkiem nowa scena tła
   Zamiast retro-siatki: żywe niebo z zorzą polarną w barwach strony
   (cyjan → lodowy błękit → fiolet). Trzy wstęgi zorzy falują w
   różnych rytmach nad gwiaździstym niebem, dół strony domyka miękka
   toń światła, a co kilkanaście sekund przelatuje kometa.
   Wyłącznie transform/opacity — zero repaintów, zero kosztu scrolla.
   ═══════════════════════════════════════════════════════════════ */
:root {
  --cs-fx-ice: 124, 199, 255;    /* #7cc7ff — z gradientu hero */
  --cs-fx-violet: 122, 92, 255;  /* #7a5cff — z gradientu hero */
  --cs-fx-blue: 47, 123, 255;
}

.cs-fx {
  position: fixed;
  inset: 0;
  z-index: -1;
  overflow: hidden;
  pointer-events: none;
}

/* ── głębia: winieta + delikatny nocny gradient nieba ── */
.cs-fx__depth {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(120% 90% at 50% -10%, rgba(var(--cs-fx-blue), .07), transparent 55%),
    radial-gradient(140% 100% at 50% 115%, rgba(var(--cs-fx-violet), .06), transparent 55%),
    radial-gradient(90% 90% at 50% 50%, transparent 55%, rgba(0, 0, 0, .35) 100%);
}

/* ── gwiaździste niebo ── */
.cs-fx__stars {
  position: absolute;
  inset: 0;
  background-image:
    radial-gradient(1.4px 1.4px at 12% 18%, rgba(232, 244, 255, .65), transparent),
    radial-gradient(1px 1px   at 28% 9%,  rgba(var(--cl-accent), .75), transparent),
    radial-gradient(1.2px 1.2px at 44% 24%, rgba(232, 244, 255, .5), transparent),
    radial-gradient(1px 1px   at 58% 7%,  rgba(var(--cs-fx-ice), .7), transparent),
    radial-gradient(1.4px 1.4px at 71% 19%, rgba(232, 244, 255, .6), transparent),
    radial-gradient(1px 1px   at 84% 11%, rgba(var(--cs-fx-violet), .7), transparent),
    radial-gradient(1.2px 1.2px at 93% 27%, rgba(232, 244, 255, .5), transparent),
    radial-gradient(1px 1px   at 7% 38%,  rgba(var(--cl-accent), .55), transparent),
    radial-gradient(1px 1px   at 22% 48%, rgba(232, 244, 255, .4), transparent),
    radial-gradient(1.3px 1.3px at 37% 36%, rgba(var(--cs-fx-ice), .55), transparent),
    radial-gradient(1px 1px   at 52% 44%, rgba(232, 244, 255, .45), transparent),
    radial-gradient(1px 1px   at 66% 33%, rgba(var(--cl-accent), .5), transparent),
    radial-gradient(1.2px 1.2px at 79% 47%, rgba(232, 244, 255, .5), transparent),
    radial-gradient(1px 1px   at 90% 39%, rgba(var(--cs-fx-violet), .55), transparent),
    radial-gradient(1px 1px   at 16% 62%, rgba(232, 244, 255, .35), transparent),
    radial-gradient(1.2px 1.2px at 48% 58%, rgba(var(--cs-fx-ice), .4), transparent),
    radial-gradient(1px 1px   at 74% 64%, rgba(232, 244, 255, .35), transparent);
  -webkit-mask-image: linear-gradient(to bottom, #000 55%, transparent 85%);
  mask-image: linear-gradient(to bottom, #000 55%, transparent 85%);
  animation: cs-fx-twinkle 7s ease-in-out infinite alternate;
}

@keyframes cs-fx-twinkle {
  from { opacity: .5; }
  to   { opacity: 1; }
}

/* ── wstęgi zorzy: miękkie, dwubarwne, falujące ── */
.cs-fx__ribbon {
  position: absolute;
  left: -25vw;
  width: 150vw;
  height: 38vh;
  will-change: transform;
}

.cs-fx__ribbon--1 {
  top: -9vh;
  background:
    radial-gradient(48% 52% at 34% 50%, rgba(var(--cl-accent), .12), transparent 72%),
    radial-gradient(46% 50% at 64% 44%, rgba(var(--cs-fx-ice), .10), transparent 72%);
  animation: cs-fx-sway-1 75s ease-in-out infinite alternate;
}

.cs-fx__ribbon--2 {
  top: 6vh;
  height: 34vh;
  background:
    radial-gradient(46% 50% at 58% 52%, rgba(var(--cs-fx-violet), .11), transparent 72%),
    radial-gradient(42% 46% at 28% 46%, rgba(var(--cs-fx-blue), .08), transparent 72%);
  animation: cs-fx-sway-2 100s ease-in-out infinite alternate;
}

.cs-fx__ribbon--3 {
  top: -16vh;
  height: 26vh;
  background:
    radial-gradient(44% 50% at 50% 50%, rgba(var(--cs-fx-ice), .09), transparent 70%);
  animation: cs-fx-sway-3 58s ease-in-out infinite alternate;
}

@keyframes cs-fx-sway-1 {
  from { transform: translate3d(-4vw, 0, 0) rotate(-7deg) scaleY(1); }
  to   { transform: translate3d(4vw, 1.5vh, 0) rotate(-5deg) scaleY(1.12); }
}

@keyframes cs-fx-sway-2 {
  from { transform: translate3d(3vw, 0, 0) rotate(-3.5deg) scaleY(1.08); }
  to   { transform: translate3d(-4vw, -1.5vh, 0) rotate(-5.5deg) scaleY(.96); }
}

@keyframes cs-fx-sway-3 {
  from { transform: translate3d(-3vw, 0, 0) rotate(-10deg) scaleY(.94); }
  to   { transform: translate3d(3vw, 2vh, 0) rotate(-8.5deg) scaleY(1.1); }
}

/* ── toń światła na dole strony ── */
.cs-fx__glow {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 34vh;
  background:
    radial-gradient(70% 100% at 50% 110%, rgba(var(--cs-fx-violet), .10), transparent 70%),
    radial-gradient(45% 80% at 18% 115%, rgba(var(--cl-accent), .07), transparent 70%),
    radial-gradient(45% 80% at 82% 115%, rgba(var(--cs-fx-blue), .07), transparent 70%);
  animation: cs-fx-glowbreathe 12s ease-in-out infinite alternate;
  will-change: opacity;
}

@keyframes cs-fx-glowbreathe {
  from { opacity: .75; }
  to   { opacity: 1; }
}

/* ── komety ── */
.cs-fx__comet {
  position: absolute;
  width: 110px;
  height: 2px;
  border-radius: 99px;
  background: linear-gradient(90deg, transparent, rgba(var(--cs-fx-ice), .7), #f2faff);
  filter: drop-shadow(0 0 6px rgba(var(--cl-accent), .8));
  opacity: 0;
  transform: rotate(154deg);
  will-change: transform, opacity;
}

.cs-fx__comet--1 { top: 9%;  left: 74%; animation: cs-fx-comet 15s linear 3s infinite; }
.cs-fx__comet--2 { top: 24%; left: 97%; animation: cs-fx-comet 22s linear 10s infinite; }
.cs-fx__comet--3 { top: 4%;  left: 40%; animation: cs-fx-comet 28s linear 17s infinite; }

@keyframes cs-fx-comet {
  0%   { transform: rotate(154deg) translate3d(0, 0, 0); opacity: 0; }
  1.5% { opacity: .9; }
  9%   { transform: rotate(154deg) translate3d(58vw, 0, 0); opacity: 0; }
  100% { transform: rotate(154deg) translate3d(58vw, 0, 0); opacity: 0; }
}

/* ── mobile: pełna estetyka, lżejszy profil ── */
@media (max-width: 768px) {
  .cs-fx__ribbon--3,
  .cs-fx__comet--3 {
    display: none;
  }

  .cs-fx__ribbon--1 { animation-duration: 105s; }
  .cs-fx__ribbon--2 { animation-duration: 130s; }

  .cs-fx__stars {
    animation-duration: 10s;
  }
}

@media (prefers-reduced-motion: reduce) {
  .cs-fx__stars,
  .cs-fx__ribbon,
  .cs-fx__glow {
    animation: none !important;
  }

  .cs-fx__comet {
    display: none;
  }
}

/* ═══════════════════════════════════════════════════════════════
   MUSIC PLAYER — piękniejszy pasek postępu  (v2.7)
   Wypełnienie przechodzi przez pełny gradient strony
   (cyjan → lód → fiolet), suwak to świecąca perła z białym rdzeniem.
   ═══════════════════════════════════════════════════════════════ */
.cs-music .cs-music__range {
  height: 6px;
  background-color: rgba(var(--cl-accent), .12);
  background-image: linear-gradient(90deg,
    rgb(var(--cl-accent)),
    rgb(var(--cs-fx-ice)) 55%,
    rgb(var(--cs-fx-violet)));
  background-size: var(--fill, 0%) 100%;
  background-repeat: no-repeat;
  box-shadow: inset 0 0 4px rgba(0, 0, 0, .45);
}

.cs-music .cs-music__range::-webkit-slider-thumb {
  width: 14px;
  height: 14px;
  background: radial-gradient(circle at 50% 45%, #fff 0 3px, rgb(var(--cl-accent)) 4px);
  border: 2px solid rgb(var(--cl-background));
  box-shadow: 0 0 10px rgba(var(--cl-accent), .9), 0 0 22px rgba(var(--cs-fx-violet), .4);
}

.cs-music .cs-music__range::-webkit-slider-thumb:hover {
  transform: scale(1.25);
}

.cs-music .cs-music__range::-moz-range-thumb {
  width: 14px;
  height: 14px;
  background: radial-gradient(circle at 50% 45%, #fff 0 3px, rgb(var(--cl-accent)) 4px);
  border: 2px solid rgb(var(--cl-background));
  box-shadow: 0 0 10px rgba(var(--cl-accent), .9), 0 0 22px rgba(var(--cs-fx-violet), .4);
}

.cs-music .cs-music__range::-moz-range-track {
  height: 6px;
  background: rgba(var(--cl-accent), .12);
}

.cs-music .cs-music__range::-moz-range-progress {
  height: 6px;
  background: linear-gradient(90deg, rgb(var(--cl-accent)), rgb(var(--cs-fx-ice)) 55%, rgb(var(--cs-fx-violet)));
  border-radius: 99px;
}

/* głośność zostaje smuklejsza, żeby hierarchia była czytelna */
.cs-music .cs-music__vol .cs-music__range {
  height: 4px;
}

.cs-music .cs-music__vol .cs-music__range::-moz-range-track,
.cs-music .cs-music__vol .cs-music__range::-moz-range-progress {
  height: 4px;
}

/* ═══════════════════════════════════════════════════════════════
   v2.8 — HEADER BAR, TYPOGRAFIA LICZB, KOLORY, WARIANTY PRODUKTU
   1. Górny pasek: bogatsze szkło z barwnym tintem, świetlna smuga
      sunąca po dolnej krawędzi, separatory i gradientowe liczby.
   2. Liczby na całej stronie (statystyki, ceny) — gradient strony
      cyjan → lód → fiolet zamiast płaskiej bieli.
   3. Globalny font-smoothing — czcionki renderują się ostrzej.
   4. Wybór wariantów produktu (np. 1 / 2 / 6 miesięcy) jako
      eleganckie kafelki z ptaszkiem na aktywnym.
   ═══════════════════════════════════════════════════════════════ */

/* ── 3. ostrzejszy rendering czcionek wszędzie ── */
body {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

/* ── 1. górny pasek ── */
header.component > div.bg-card {
  background:
    radial-gradient(130% 180% at 0% 0%, rgba(var(--cl-accent), .085), transparent 46%),
    radial-gradient(130% 180% at 100% 110%, rgba(var(--cs-fx-violet), .08), transparent 46%),
    rgba(var(--cl-card), .5) !important;
}

/* świetlna smuga wędrująca po dolnej krawędzi paska */
header.component > div.bg-card::before {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  width: 200%;
  height: 1px;
  background: linear-gradient(90deg,
    transparent 15%,
    rgba(var(--cl-accent), .6) 35%,
    rgba(var(--cs-fx-ice), .65) 50%,
    rgba(var(--cs-fx-violet), .6) 65%,
    transparent 85%);
  animation: cs-hdr-slide 7s ease-in-out infinite alternate;
  opacity: .85;
  pointer-events: none;
}

@keyframes cs-hdr-slide {
  from { transform: translateX(-50%); }
  to   { transform: translateX(0); }
}

header.component img {
  filter: drop-shadow(0 0 12px rgba(var(--cl-accent), .6));
}

/* gradientowe liczby statystyk + subtelne separatory */
header.component .grid .cs-num {
  background: linear-gradient(115deg, rgb(var(--cl-accent)) 5%, rgb(var(--cs-fx-ice)) 55%, rgb(var(--cs-fx-violet)) 105%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 0 10px rgba(var(--cl-accent), .35));
}

header.component .grid p.uppercase {
  color: rgba(var(--cl-t-primary), .55) !important;
  letter-spacing: .24em;
}

/* aktywny pill nawigacji z barwnym tintem */
header.component nav a.bg-accent-500\/10,
header.component nav button.bg-accent-500\/10 {
  background: linear-gradient(135deg, rgba(var(--cl-accent), .16), rgba(var(--cs-fx-violet), .10)) !important;
}

/* ── 2. liczby: statystyki sekcji i ceny produktów ── */
.cs-stat__value {
  background: linear-gradient(115deg, rgb(var(--cl-accent)) 5%, rgb(var(--cs-fx-ice)) 55%, rgb(var(--cs-fx-violet)) 105%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  text-shadow: none;
  filter: drop-shadow(0 0 12px rgba(var(--cl-accent), .35));
}

a.block.h-full.bg-card .text-accent-500 {
  background: linear-gradient(100deg, rgb(var(--cl-accent)), rgb(var(--cs-fx-ice)) 90%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  text-shadow: none;
  filter: drop-shadow(0 0 8px rgba(var(--cl-accent), .35));
  font-size: 1.12rem;
}

/* ── 4. warianty produktu: kafelki wyboru okresu ── */
.cs-variant {
  position: relative;
  border: 1px solid rgba(255, 255, 255, .07) !important;
  background: rgba(var(--cl-card), .5) !important;
  border-radius: 12px !important;
  padding: 13px 16px !important;
  transition: transform .25s var(--cs-ease), border-color .3s, box-shadow .3s, background .3s !important;
}

.cs-variant:hover:not(:disabled) {
  transform: translateY(-2px);
  border-color: var(--cs-stroke-hi) !important;
  box-shadow: var(--cs-glow-sm);
  background: rgba(var(--cl-accent), .05) !important;
}

.cs-variant p.text-base {
  font-family: var(--cs-display);
  font-size: .92rem;
  font-weight: 700;
  letter-spacing: .05em;
  text-transform: uppercase;
}

/* cena wariantu — wyraźna, numeryczna, neonowa */
.cs-variant > span {
  font-family: var(--cs-numeric);
  font-variant-numeric: tabular-nums;
  font-weight: 700;
  font-size: 1.02rem;
  color: var(--cs-neon);
  text-shadow: 0 0 8px rgba(var(--cl-accent), .35);
  white-space: nowrap;
}

/* aktywny kafelek: barwny tint + neonowa ramka + ptaszek w rogu */
.cs-variant.\!border-accent-500 {
  border-color: var(--cs-neon) !important;
  background: linear-gradient(135deg, rgba(var(--cl-accent), .13), rgba(var(--cs-fx-violet), .09)) !important;
  box-shadow: inset 0 0 22px rgba(var(--cl-accent), .08), var(--cs-glow-sm);
}

.cs-variant.\!border-accent-500::after {
  content: '\f00c';
  font-family: 'Font Awesome 6 Free';
  font-weight: 900;
  position: absolute;
  top: -8px;
  right: -8px;
  width: 21px;
  height: 21px;
  font-size: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: rgb(var(--cl-t-accent));
  background: linear-gradient(135deg, var(--cs-neon), #2f7bff);
  border-radius: 50%;
  box-shadow: 0 0 10px rgba(var(--cl-accent), .6), 0 2px 6px rgba(0, 0, 0, .5);
}

.cs-variant:disabled {
  opacity: .4;
  filter: grayscale(.5);
}

@media (prefers-reduced-motion: reduce) {
  header.component > div.bg-card::before {
    animation: none;
  }
}

/* ═══════════════════════════════════════════════════════════════
   v2.9 — CIĄGŁOŚĆ MUZYKI + AURA KURSORA + SHIMMER NAZWY
   1. Podpowiedź "kliknij, aby włączyć dźwięk" gdy przeglądarka
      zablokuje dźwięk po nawigacji (muzyka gra wtedy wyciszona,
      utwór płynie dalej — gest gościa tylko przywraca głośność).
   2. Neonowy krąg przy kliknięciu (aura za kursorem usunięta).
   3. Nazwa sklepu w headerze delikatnie mieni się gradientem.
   ═══════════════════════════════════════════════════════════════ */

/* ── 1. pill z podpowiedzią + pulsujący mini-mute ── */
.cs-music__hint {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 9px 14px;
  border-radius: 99px;
  border: 1px solid var(--cs-stroke-hi);
  background: rgba(var(--cl-card), .88);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .02em;
  color: rgba(var(--cl-t-primary), .92);
  box-shadow: var(--cs-glow-sm), 0 8px 22px rgba(0, 0, 0, .5);
  animation: cs-hint-in .4s var(--cs-ease), cs-hint-bob 2.4s ease-in-out .4s infinite alternate;
  white-space: nowrap;
  max-width: calc(100vw - 44px);
  cursor: pointer;
}

.cs-music__hint i {
  color: var(--cs-neon);
  font-size: 12px;
}

@keyframes cs-hint-in {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: none; }
}

@keyframes cs-hint-bob {
  from { transform: translateY(0); }
  to   { transform: translateY(-4px); }
}

/* mini-mute pulsuje, dopóki dźwięk czeka na odciszenie */
.cs-music.is-mutedauto .cs-music__mini {
  color: var(--cs-neon);
  border-color: var(--cs-neon);
  animation: cs-mini-pulse 1.6s ease-in-out infinite;
}

@keyframes cs-mini-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(var(--cl-accent), .5), 0 6px 18px rgba(0, 0, 0, .5); }
  60%      { box-shadow: 0 0 0 9px rgba(var(--cl-accent), 0), 0 6px 18px rgba(0, 0, 0, .5); }
}

@media (max-width: 768px) {
  .cs-music__hint {
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    background: rgba(var(--cl-card), .96);
    font-size: 11px;
  }
}

/* ── 2. krąg kliknięcia ── */
.cs-ripple {
  position: fixed;
  z-index: 95;
  width: 10px;
  height: 10px;
  margin: -5px 0 0 -5px;
  border-radius: 50%;
  border: 1.5px solid rgba(var(--cl-accent), .75);
  box-shadow: 0 0 10px rgba(var(--cl-accent), .5);
  pointer-events: none;
  animation: cs-ripple .65s cubic-bezier(.2, .6, .35, 1) forwards;
}

@keyframes cs-ripple {
  from { transform: scale(1);   opacity: .85; }
  to   { transform: scale(8.5); opacity: 0; }
}

/* ── 3. mieniąca się nazwa sklepu ── */
header.component h1 {
  background-size: 220% 100%;
  animation: cs-name-shimmer 7s ease-in-out infinite alternate;
}

@keyframes cs-name-shimmer {
  from { background-position: 0% 0; }
  to   { background-position: 100% 0; }
}

@media (prefers-reduced-motion: reduce) {
  header.component h1,
  .cs-music__hint,
  .cs-music.is-mutedauto .cs-music__mini {
    animation: none !important;
  }

  .cs-ripple {
    display: none;
  }
}

/* ═══════════════════════════════════════════════════════════════
   v3.0 — WĘDRUJĄCY NEON NA RAMKACH
   Ramka headera to teraz żywy neon: dwa świetlne łuki (cyjan→lód
   i fiolet→błękit) krążą po obwodzie w nieskończonej pętli na tle
   delikatnej stałej obwódki. Ten sam efekt dostają karty produktów
   po najechaniu — obwódka "zapala się" i kolory ruszają w podróż.
   Technika: conic-gradient + animowany kąt (@property) + maska
   pierścienia. Starsze przeglądarki bez @property widzą statyczny
   gradientowy neon (pełna gracja degradacji).
   ═══════════════════════════════════════════════════════════════ */
@property --cs-ring {
  syntax: '<angle>';
  initial-value: 0deg;
  inherits: false;
}

@keyframes cs-ring-travel {
  to { --cs-ring: 360deg; }
}

/* ── header: neon krąży po obwodzie ── */
header.component > div.bg-card {
  border-color: transparent !important;
}

/* statyczny hairline i smuga z v2.8 ustępują miejsca pełnemu neonowi */
header.component > div.bg-card::after {
  display: none;
}

header.component > div.bg-card > * {
  position: relative;
  z-index: 1;
}

header.component > div.bg-card::before {
  content: '';
  position: absolute;
  inset: 0;
  width: auto;
  height: auto;
  border-radius: inherit;
  padding: 1.5px;
  background:
    conic-gradient(from var(--cs-ring),
      transparent 0deg 25deg,
      rgba(var(--cl-accent), .95) 60deg,
      rgba(var(--cs-fx-ice), 1) 82deg,
      transparent 118deg 205deg,
      rgba(var(--cs-fx-violet), .95) 240deg,
      rgba(var(--cs-fx-blue), .9) 262deg,
      transparent 298deg 360deg),
    linear-gradient(rgba(var(--cl-accent), .16), rgba(var(--cl-accent), .16));
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  mask-composite: exclude;
  filter: drop-shadow(0 0 6px rgba(var(--cl-accent), .35));
  opacity: 1;
  animation: cs-ring-travel 7s linear infinite;
  pointer-events: none;
}

/* ── karty produktów: neon rusza w podróż po najechaniu ── */
a.block.h-full.bg-card::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 2;
  border-radius: inherit;
  padding: 1.5px;
  background:
    conic-gradient(from var(--cs-ring),
      transparent 0deg 30deg,
      rgba(var(--cl-accent), 1) 65deg,
      rgba(var(--cs-fx-ice), 1) 85deg,
      transparent 120deg 210deg,
      rgba(var(--cs-fx-violet), 1) 245deg,
      rgba(var(--cs-fx-blue), .95) 265deg,
      transparent 300deg 360deg),
    linear-gradient(rgba(var(--cl-accent), .28), rgba(var(--cl-accent), .28));
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  mask-composite: exclude;
  opacity: 0;
  transition: opacity .3s var(--cs-ease);
  pointer-events: none;
}

a.block.h-full.bg-card:hover {
  border-color: transparent !important;
}

a.block.h-full.bg-card:hover::before {
  opacity: 1;
  animation: cs-ring-travel 3.2s linear infinite;
}

/* mobile: neon headera krąży wolniej (oszczędza baterię) */
@media (max-width: 768px) {
  header.component > div.bg-card::before {
    animation-duration: 10s;
    filter: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  header.component > div.bg-card::before,
  a.block.h-full.bg-card:hover::before {
    animation: none !important;
  }
}

/* ═══════════════════════════════════════════════════════════════
   v3.2 — CZYSTE STATYSTYKI + OSTRZEJSZE LOGO
   1. Zero pionowych kresek przy statystykach: znikają separatory
      między SALES / BUYERS / RATING oraz linia oddzielająca cały
      blok statystyk od logo (markupowy md:border-l).
   2. Logo: wymuszony rendering na GPU + tryb wyostrzania skalowania
      w Chrome — animowany obrazek wygląda maksymalnie czysto na
      tyle, na ile pozwala wgrany plik.
   ═══════════════════════════════════════════════════════════════ */

/* ── 1. kreski precz ── */
header.component .grid.grid-cols-3 {
  border-left-width: 0 !important;
}

header.component .grid.grid-cols-3 > div {
  border-left: 0 !important;
  border-right: 0 !important;
}

/* ── 2. logo ── */
header.component img {
  max-height: 64px !important;
  transform: translateZ(0);              /* pelne piksele, zero subpikselowego rozmycia */
  image-rendering: auto;
  image-rendering: -webkit-optimize-contrast; /* Chrome: ostrzejsze skalowanie bitmap */
  backface-visibility: hidden;
}

/* ═══════════════════════════════════════════════════════════════
   v3.3 — LOGO BEZ CZARNEGO TŁA + PRZYCISK "DO GÓRY"
   1. mix-blend-mode: screen sprawia, że czerń w pliku logo staje
      się niewidoczna na ciemnym tle — nawet obecny GIF traci
      czarny kwadrat od zaraz. Nowe przezroczyste logo (PNG) też
      wygląda z tym idealnie. Drop-shadow zdjęty, bo obrysowywał
      kwadrat pliku zamiast samego znaku.
   2. Neonowy przycisk powrotu na górę — pojawia się po zescrollowaniu.
   ═══════════════════════════════════════════════════════════════ */

/* ── 1. logo ── */
header.component img {
  mix-blend-mode: screen;   /* czern znika na ciemnym tle */
  filter: none !important;
  border-radius: 0;
  background: transparent;
}

/* ── 2. back to top ── */
.cs-btt {
  position: fixed;
  right: calc(22px + env(safe-area-inset-right, 0px));
  bottom: calc(22px + env(safe-area-inset-bottom, 0px));
  z-index: 79;
  width: 46px;
  height: 46px;
  border-radius: 50%;
  border: 1px solid var(--cs-stroke-hi);
  background: rgba(var(--cl-card), .82);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  color: var(--cs-neon);
  font-size: 15px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: var(--cs-glow-sm), 0 8px 22px rgba(0, 0, 0, .55);
  opacity: 0;
  transform: translateY(14px);
  pointer-events: none;
  transition: opacity .3s var(--cs-ease), transform .3s var(--cs-ease), box-shadow .3s, border-color .3s;
}

.cs-btt.is-visible {
  opacity: 1;
  transform: none;
  pointer-events: auto;
}

.cs-btt:hover {
  transform: translateY(-3px);
  border-color: var(--cs-neon);
  box-shadow: var(--cs-glow-md), 0 12px 28px rgba(0, 0, 0, .6);
}

@media (max-width: 768px) {
  .cs-btt {
    right: calc(16px + env(safe-area-inset-right, 0px));
    bottom: calc(16px + env(safe-area-inset-bottom, 0px));
    width: 42px;
    height: 42px;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    background: rgba(var(--cl-card), .94);
  }
}

/* ═══════════════════════════════════════════════════════════════
   v3.4 — SMUKLEJSZY PASEK HEADERA
   Mniejsze pionowe paddingi, logo 44px, nazwa i liczby statystyk
   odrobinę mniejsze — pasek schodzi z ~110px do ~72px wysokości,
   nie tracąc nic z czytelności ani z krążącego neonu.
   ═══════════════════════════════════════════════════════════════ */
header.component a.p-4.md\:p-6 {
  padding-top: 14px !important;
  padding-bottom: 14px !important;
}

header.component img {
  max-height: 52px !important;
}

header.component h1 {
  font-size: 1.42rem !important;
}

header.component .grid.grid-cols-3 {
  padding-left: 26px !important;
  padding-right: 26px !important;
}

header.component .grid.grid-cols-3 .cs-num {
  font-size: 1.62rem !important;
  margin-bottom: 3px !important;
}

header.component .grid.grid-cols-3 p.uppercase {
  font-size: .66rem !important;
}

@media (max-width: 767px) {
  header.component .grid.grid-cols-3 {
    padding-top: 10px !important;
    padding-bottom: 10px !important;
  }
}

/* ═══════════════════════════════════════════════════════════════
   v3.5 — POPRAWKI BŁĘDÓW + FOOTER  (finał na dziś)
   1. FIX: atrybut [hidden] przegrywał z author-CSS (display:flex),
      przez co pill z podpowiedzią muzyki i widget mogły być widoczne,
      gdy miały być schowane — twardy guard z !important.
   2. FIX: player (z-80) i back-to-top pływały NAD modalami logowania
      (z-50) — schodzą pod modale.
   3. Footer: neonowy gradientowy hairline u góry + linki i socials
      reagują neonem na hover — spójnie z resztą strony.
   ═══════════════════════════════════════════════════════════════ */

/* ── 1. hidden zawsze znaczy hidden ── */
.cs-music[hidden],
.cs-music__panel[hidden],
.cs-music__list[hidden],
.cs-music__hint[hidden],
.cs-music__video[hidden] {
  display: none !important;
}

/* ── 2. warstwy: modale (z-50) zawsze nad widgetami ── */
.cs-music {
  z-index: 45;
}

.cs-btt {
  z-index: 44;
}

.cs-ripple {
  z-index: 46;
}

/* ── 3. footer ── */
footer.bg-background {
  position: relative;
  overflow: hidden;
  border-color: var(--cs-stroke) !important;
  border-radius: 16px;
}

footer.bg-background::before {
  content: '';
  position: absolute;
  top: 0;
  left: 10%;
  right: 10%;
  height: 1px;
  background: linear-gradient(90deg,
    transparent,
    rgba(var(--cl-accent), .55) 35%,
    rgba(var(--cs-fx-ice), .5) 55%,
    rgba(var(--cs-fx-violet), .5) 72%,
    transparent);
  opacity: .8;
  pointer-events: none;
}

footer.bg-background a {
  transition: color .25s, text-shadow .25s, transform .25s var(--cs-ease);
}

footer.bg-background a:hover {
  color: var(--cs-neon) !important;
  text-shadow: var(--cs-glow-sm);
}

/* ═══════════════════════════════════════════════════════════════
   v3.6 — PASKI W HERO: ROZWIĄZANIE OSTATECZNE + KOLORY
   Na mobile KAŻDA warstwa hero z poziomym gradientem (eliptyczne
   tło panelu, eliptyczny scrim za tekstem, prześwit wstęg zorzy
   przez półprzezroczysty top) zostaje zastąpiona wersją jednolitą
   w poziomie — pionowe pasy są od teraz fizycznie niemożliwe.
   Desktop bez zmian (tam wyglądało dobrze).
   Plus: neonowy focus inputów i cieplejszy hover przycisków.
   ═══════════════════════════════════════════════════════════════ */
@media (max-width: 768px) {
  /* tło panelu: czysty pionowy gradient, bez bocznego falloffu elipsy */
  .cs-hero__panel {
    background: linear-gradient(180deg, rgba(var(--cl-card), .6), rgba(var(--cl-background), .94)) !important;
  }

  /* scrim za tekstem: pionowy, wychodzi poza krawędzie panelu */
  .cs-hero__content::before {
    inset: -8% -20% 8% -20%;
    background: linear-gradient(180deg,
      rgba(var(--cl-background), .85),
      rgba(var(--cl-background), .5) 62%,
      transparent);
  }

  /* aurora sceny hero delikatniejsza — jej okrąg nie rysuje krawędzi */
  .cs-hero__aurora {
    opacity: .55;
  }
}

/* ── kolory: neonowy focus pól tekstowych ── */
input[type="text"]:focus,
input[type="search"]:focus,
input[type="email"]:focus,
input[type="number"]:focus,
textarea:focus {
  border-color: var(--cs-neon) !important;
  box-shadow: 0 0 0 3px rgba(var(--cl-accent), .14), var(--cs-glow-sm);
  outline: none;
}

/* ghost button: hover z domieszką fioletu zamiast płaskiego cyjanu */
.cs-btn--ghost:hover {
  background: linear-gradient(135deg, rgba(var(--cl-accent), .12), rgba(var(--cs-fx-violet), .09));
}

/* przekreślona stara cena wariantu — przygaszona, bez neonu */
.cs-variant span.line-through {
  color: rgba(var(--cl-t-primary), .4) !important;
  text-shadow: none !important;
  font-size: .8rem !important;
}

/* ═══════════ MOBILE MUSIC PLAYER HIDING ═══════════ */
@media (max-width: 767px) {
  #cs-music,
  .cs-music {
    display: none !important;
  }
}

/* ═══════════ MOBILE BOTTOM NAVIGATION DOCK ═══════════ */
.cs-mobile-nav {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 99;
  background: rgba(var(--cl-background), 0.88);
  backdrop-filter: blur(20px) saturate(160%);
  -webkit-backdrop-filter: blur(20px) saturate(160%);
  border-top: 1px solid var(--cs-stroke-hi);
  box-shadow: 0 -8px 32px rgba(0, 0, 0, 0.6), 0 0 20px rgba(var(--cl-accent), 0.15);
  padding-bottom: max(6px, env(safe-area-inset-bottom));
  padding-top: 6px;
  transition: transform 0.3s var(--cs-ease);
}

.cs-mobile-nav__container {
  display: flex;
  align-items: center;
  justify-content: space-around;
  max-width: 500px;
  margin: 0 auto;
  padding: 0 4px;
}

.cs-mobile-nav__item {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  flex: 1;
  padding: 8px 0;
  color: rgba(var(--cl-t-primary), 0.65);
  text-decoration: none;
  border: none;
  background: none;
  cursor: pointer;
  position: relative;
  transition: color 0.25s ease, transform 0.2s ease;
  -webkit-tap-highlight-color: transparent;
}

/* Animowana kreska nad aktywnym elementem */
.cs-mobile-nav__item::before {
  content: '';
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%) scaleX(0);
  width: 28px;
  height: 3px;
  background: linear-gradient(90deg, var(--cs-neon), rgb(var(--cs-fx-ice)));
  border-radius: 0 0 3px 3px;
  transition: transform 0.3s var(--cs-ease);
  box-shadow: 0 2px 8px rgba(var(--cl-accent), 0.5);
}

.cs-mobile-nav__item.is-active::before {
  transform: translateX(-50%) scaleX(1);
}

.cs-mobile-nav__icon-wrap {
  position: relative;
  font-size: 18px;
  height: 24px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform 0.25s var(--cs-ease);
}

.cs-mobile-nav__label {
  font-family: var(--cs-display);
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
  line-height: 1.2;
}

.cs-mobile-nav__item.is-active {
  color: var(--cs-neon);
}

.cs-mobile-nav__item.is-active .cs-mobile-nav__icon-wrap {
  filter: drop-shadow(0 0 8px rgba(var(--cl-accent), 0.6));
  transform: scale(1.08);
}

/* Haptic feedback przy kliknięciu */
.cs-mobile-nav__item:active {
  transform: scale(0.92);
}

.cs-mobile-nav__item:active .cs-mobile-nav__icon-wrap {
  transform: scale(0.88);
}

.cs-mobile-nav__badge {
  top: -6px !important;
  right: -10px !important;
}

/* Back-to-top position adjustment on mobile to clear bottom dock */
@media (max-width: 767px) {
  .cs-btt {
    bottom: 80px !important;
    right: 16px !important;
  }
}

/* ═══════════ MOBILE STICKY BUY BAR FOR PRODUCT PAGE ═══════════ */
.cs-mobile-sticky-buy {
  position: fixed;
  bottom: calc(56px + env(safe-area-inset-bottom));
  left: 0;
  right: 0;
  z-index: 98;
  background: rgba(var(--cl-card), 0.92);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  border-top: 1px solid var(--cs-stroke);
  padding: 10px 16px;
  box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.4);
}

/* ═══════════ MOBILE RESPONSIVE POLISH ═══════════ */
@media (max-width: 767px) {
  .cs-table-responsive {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    margin-left: -0.5rem;
    margin-right: -0.5rem;
    padding-left: 0.5rem;
    padding-right: 0.5rem;
  }

  /* Make mobile buttons touch friendly */
  .cs-variant {
    min-height: 48px;
    padding: 10px 14px !important;
  }

  /* Completely hide desktop Choices.js currency selector on mobile */
  .currency-selector,
  .currency-selector .choices,
  .currency-selector .choices__list--dropdown {
    display: none !important;
    visibility: hidden !important;
    pointer-events: none !important;
  }
}

/* ═══════════ MOBILE NATIVE CURRENCY SELECTOR ═══════════ */
.cs-mobile-currency-select {
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  background: rgba(var(--cl-card), 0.85);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid var(--cs-stroke-hi);
  border-radius: 8px;
  color: var(--cs-neon);
  font-family: var(--cs-display);
  font-weight: 700;
  font-size: 11px;
  letter-spacing: 0.05em;
  padding: 4px 20px 4px 10px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%2300f0ff'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2.5' d='M19 9l-7 7-7-7'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 6px center;
  background-size: 10px;
  outline: none;
  box-shadow: 0 0 10px rgba(var(--cl-accent), 0.2);
  cursor: pointer;
  max-width: 68px !important;
  width: auto !important;
  min-width: 56px !important;
  height: 32px !important;
  line-height: 1 !important;
  flex-shrink: 0 !important;
}

.cs-mobile-currency-select option {
  background: #090e1a;
  color: #ffffff;
  font-family: sans-serif;
  font-size: 13px;
}

/* ═══════════ MOBILE CURRENCY MODAL BUTTON ═══════════ */
@media (max-width: 767px) {
  .cs-currency-btn {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    background: rgba(var(--cl-card), 0.85);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border: 1px solid var(--cs-stroke-hi);
    border-radius: 8px;
    color: var(--cs-neon);
    font-family: var(--cs-numeric);
    font-weight: 700;
    font-size: 11px;
    letter-spacing: 0.05em;
    padding: 5px 10px;
    line-height: 1;
    box-shadow: 0 0 10px rgba(var(--cl-accent), 0.2);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
    cursor: pointer;
    height: 30px;
  }

  .cs-currency-btn:active {
    transform: scale(0.96);
    box-shadow: var(--cs-glow-sm);
  }
}

@media (min-width: 768px) {
  .cs-currency-btn {
    display: none !important;
  }
}

/* ═══════════ DESKTOP CHOICES.JS CURRENCY DROPDOWN FIX ═══════════ */
.currency-selector .choices__list--dropdown,
.currency-selector .choices__list[aria-expanded],
.choices .choices__list--dropdown,
.choices .choices__list[aria-expanded] {
  background: #0d1322 !important;
  border: 1px solid rgba(var(--cl-accent), 0.4) !important;
  border-radius: 12px !important;
  box-shadow: 0 12px 35px rgba(0, 0, 0, 0.85), 0 0 20px rgba(var(--cl-accent), 0.25) !important;
  overflow: hidden !important;
  z-index: 1000 !important;
  backdrop-filter: blur(20px) !important;
  -webkit-backdrop-filter: blur(20px) !important;
}

.choices .choices__list--dropdown .choices__item,
.choices .choices__list[aria-expanded] .choices__item {
  background: #0d1322 !important;
  color: rgba(255, 255, 255, 0.9) !important;
  font-weight: 500;
}

.choices .choices__list--dropdown .choices__item--selectable.is-highlighted,
.choices .choices__list[aria-expanded] .choices__item--selectable.is-highlighted {
  background: rgba(var(--cl-accent), 0.22) !important;
  color: var(--cs-neon) !important;
}

.currency-selector .choices__list--dropdown .choices__input,
.choices[data-type*="select-one"] .choices__list.choices__list--dropdown .choices__input {
  background: #141d30 !important;
  color: #ffffff !important;
  border: none !important;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1) !important;
  padding: 8px 12px !important;
  margin: 0 !important;
}

/* ═══════════ MOBILE CURRENCY MODAL SOLID CARD ═══════════ */
.cs-mobile-currency-modal-card {
  background: #070c18 !important;
  background-image: radial-gradient(circle at top right, rgba(var(--cl-accent), 0.15), transparent 70%) !important;
  border: 1px solid rgba(var(--cl-accent), 0.4) !important;
  box-shadow: 0 25px 60px rgba(0, 0, 0, 0.98), 0 0 30px rgba(var(--cl-accent), 0.25) !important;
  opacity: 1 !important;
  max-width: 280px !important;
  margin: auto !important;
}

/* Lepsze wyrównanie i touch targets w mobile currency modal */
.cs-mobile-currency-modal-card .grid.grid-cols-4 button {
  min-height: 36px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 8px 6px !important;
  font-size: 11px !important;
  font-weight: 700 !important;
  letter-spacing: 0.05em !important;
  transition: all 0.2s ease !important;
}

.cs-mobile-currency-modal-card .grid.grid-cols-4 button:active {
  transform: scale(0.94) !important;
}

.cs-mobile-currency-modal-card .space-y-1 button {
  min-height: 44px !important;
  display: flex !important;
  align-items: center !important;
  padding: 10px 12px !important;
  font-size: 12px !important;
  line-height: 1.4 !important;
  transition: all 0.2s ease !important;
}

.cs-mobile-currency-modal-card .space-y-1 button:active {
  transform: scale(0.97) !important;
}

.cs-mobile-currency-modal-card .space-y-1 button span:first-child {
  font-weight: 700 !important;
  letter-spacing: 0.08em !important;
  min-width: 42px !important;
}

.cs-mobile-currency-modal-card .space-y-1 button span:last-child {
  margin-left: auto !important;
  opacity: 0.6 !important;
}

.cs-mobile-currency-modal-card input[type="text"] {
  min-height: 36px !important;
  font-size: 12px !important;
}

.cs-mobile-currency-modal-card .max-h-\[110px\] {
  max-height: 140px !important;
}

