/* Continuous Linear Hue Cycle */
    @keyframes neonShift {
      0%   { filter: hue-rotate(0deg); }
      100% { filter: hue-rotate(360deg); }
    }

    /* Animation Classes */
    .animate-neon-glow {
      animation: neonShift 6s linear infinite;
    }
    .animate-hue-linear {
      animation: neonShift var(--anim-speed, 4s) infinite linear;
    }

    /* Glassmorphism Card Style */
    .glass-card {
      background: rgba(0, 0, 0, 0.4);
      backdrop-filter: blur(12px);
      -webkit-backdrop-filter: blur(12px);
      border: 1px solid rgba(255, 255, 255, 0.1);
    }

    /* Custom Scrollbar */
    ::-webkit-scrollbar {
      width: 8px;
      height: 8px;
    }
    ::-webkit-scrollbar-track {
      background: #090d16;
    }
    ::-webkit-scrollbar-thumb {
      background: #1e293b;
      border-radius: 4px;
    }
    ::-webkit-scrollbar-thumb:hover {
      background: #334155;
    }

    /* Keep the header visible while scrolling */
    #header {
    position: sticky;
    top: 0;
    z-index: 1000;
    }

    html,
    body {
    min-height: 100%;
    }

    body {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    }

    main {
    flex: 1;
    }

    /* Prevent English text appearing before translation */
    html:not(.language-ready) [data-i18n] {
    visibility: hidden;
    }

    /* Keep the sidebar and its backdrop above the header */
    #sidebar-backdrop {
    z-index: 1000;
    }

    #sidebar-drawer {
    z-index: 1001;
    }


/* ==========================================================
   FOOTER ANCHOR
   #footer is the direct flex child of <body>; the actual <footer> is injected
   inside it by components.js. Giving the host auto top margin is the reliable
   way to consume unused viewport height without stretching page content.
   ========================================================== */
body > #footer {
  margin-top: auto;
  flex: 0 0 auto;
}


/* V36 — header count badges: pulse only when components.js applies .quantity-updated */
.header-quantity-badge { transform-origin: center; }
.header-favourites-badge.quantity-updated {
  background:#00f0ff !important;
  box-shadow:0 0 12px rgb(0 240 255 / 90%);
  animation:header-quantity-pop 420ms ease-out;
}
.header-basket-badge.quantity-updated {
  background:#39ff14 !important;
  box-shadow:0 0 12px rgb(57 255 20 / 90%);
  animation:header-quantity-pop 420ms ease-out;
}
@keyframes header-quantity-pop {
  0% { transform:scale(1); }
  42% { transform:scale(1.45); }
  100% { transform:scale(1); }
}
@media (prefers-reduced-motion:reduce) {
  .header-favourites-badge.quantity-updated,
  .header-basket-badge.quantity-updated { animation:none; }
}


/* ==========================================================
   V44 — shared glitch treatment for Rubik Glitch / brand text
   Mirrors the V43 SHOP-title cyan/magenta offset.
   Excludes the header logo artwork itself.
   ========================================================== */
.font-brand,
.brand-font,
.brand-title,
.brand-heading,
.logo-text,
h1[class*="brand"],
h2[class*="brand"] {
  text-shadow:
    -2px 0 0 rgba(0,240,255,.72),
     2px 0 0 rgba(255,16,240,.68),
     0 0 16px rgba(255,255,255,.08);
  filter: contrast(1.08);
  animation: nt-brand-glitch 5.5s steps(1,end) infinite;
}

@keyframes nt-brand-glitch {
  0%, 89%, 93%, 100% {
    transform: translate(0,0);
    text-shadow:-2px 0 0 rgba(0,240,255,.72),2px 0 0 rgba(255,16,240,.68),0 0 16px rgba(255,255,255,.08);
  }
  90% {
    transform: translate(-1px,1px);
    text-shadow:4px 0 0 rgba(0,240,255,.88),-4px 0 0 rgba(255,16,240,.88);
  }
  91% {
    transform: translate(2px,-1px);
    text-shadow:-5px 0 0 rgba(0,240,255,.88),4px 0 0 rgba(255,16,240,.88);
  }
  92% {
    transform: translate(-1px,0);
    text-shadow:2px 0 0 rgba(57,255,20,.62),-2px 0 0 rgba(255,16,240,.82);
  }
}

@media (prefers-reduced-motion: reduce) {
  .font-brand,
  .brand-font,
  .brand-title,
  .brand-heading,
  .logo-text,
  h1[class*="brand"],
  h2[class*="brand"] {
    animation: none !important;
  }
}


/* ==========================================================
   V47 — striking detailed tiger on the INDEX hero
   ========================================================== */
.index-tiger-stage {
  overflow: hidden !important;
  isolation: isolate;
  background:
    radial-gradient(circle at 50% 48%, rgba(255,16,240,.20), transparent 34%),
    radial-gradient(circle at 42% 42%, rgba(0,240,255,.18), transparent 42%),
    radial-gradient(circle at 58% 62%, rgba(124,58,237,.22), transparent 46%),
    #030711 !important;
  border-color: rgba(0,240,255,.30) !important;
  box-shadow:
    inset 0 0 45px rgba(0,0,0,.85),
    0 0 24px rgba(0,240,255,.10),
    0 0 42px rgba(255,16,240,.08) !important;
}

.index-tiger-stage::before,
.index-tiger-stage::after {
  content:"";
  position:absolute;
  inset:-30%;
  pointer-events:none;
  z-index:0;
}

.index-tiger-stage::before {
  background:
    conic-gradient(from 210deg,
      transparent 0 20%,
      rgba(0,240,255,.16) 25%,
      transparent 31% 48%,
      rgba(255,16,240,.18) 54%,
      transparent 61% 78%,
      rgba(57,255,20,.08) 84%,
      transparent 90%);
  filter: blur(16px);
  animation: nt-index-neon-orbit 12s linear infinite;
}

.index-tiger-stage::after {
  inset:0;
  background:
    linear-gradient(105deg, transparent 32%, rgba(0,240,255,.11) 43%, transparent 48%),
    linear-gradient(74deg, transparent 50%, rgba(255,16,240,.12) 58%, transparent 64%);
  mix-blend-mode:screen;
  animation: nt-index-beams 5s ease-in-out infinite alternate;
}

.index-tiger-wrap {
  position:relative;
  z-index:1;
}

.index-detailed-tiger {
  display:block;
  width:92% !important;
  height:92% !important;
  overflow:visible;
  filter:
    drop-shadow(-7px 0 5px rgba(0,240,255,.65))
    drop-shadow(7px 0 5px rgba(255,16,240,.62))
    drop-shadow(0 0 18px rgba(124,58,237,.62))
    drop-shadow(0 0 34px rgba(0,240,255,.25));
  animation: nt-index-tiger-pulse 4.5s ease-in-out infinite alternate;
}

.index-detailed-tiger path,
.index-detailed-tiger polygon,
.index-detailed-tiger polyline,
.index-detailed-tiger line {
  vector-effect: non-scaling-stroke;
}

@keyframes nt-index-tiger-pulse {
  from { transform:scale(.965); }
  to   { transform:scale(1.025); }
}

@keyframes nt-index-neon-orbit {
  to { transform:rotate(360deg); }
}

@keyframes nt-index-beams {
  from { opacity:.58; transform:translateX(-2%) scale(.98); }
  to   { opacity:1; transform:translateX(2%) scale(1.03); }
}

@media (prefers-reduced-motion: reduce) {
  .index-detailed-tiger,
  .index-tiger-stage::before,
  .index-tiger-stage::after { animation:none !important; }
}

@media (max-width:640px) {
  .index-detailed-tiger { width:96% !important; height:96% !important; }
}
