/* ============================================================
   MAISON DE L'AS - Luxury Casino Events Stylesheet
   Theme: Midnight Black · Charcoal · Silver (#aaa9ad) · Crimson Glow
   ============================================================ */

:root {
  color-scheme: dark;          /* tells Edge/Firefox: this site is dark - don't force light backgrounds */
  --midnight: #0a0a0f;
  --charcoal: #14141c;
  --graphite: #1c1c26;
  --silver: #aaa9ad;
  --silverlight: #d4d3d8;
  --crimson: #2f2c79;
  --crimsonGlow: #2f2c79;
  --goldleaf: #c9a96a;
}

* { -webkit-font-smoothing: antialiased; }

html {
  scroll-behavior: smooth;
  /* #mobile-overflow: CLIP (no hidden) — clip recorta el desborde SIN crear
     scroll-container: el position:fixed sigue anclado al viewport (bug ficha
     19/09) y el layout-viewport móvil NO se infla (bug navbar APK 19/09:
     hidden en html+body convertía html en contenedor de scroll y TODOS los
     fixed internos renderizaban en coords de documento). */
  overflow-x: clip;
  max-width: 100vw;
}

body {
  overflow-x: clip;
  max-width: 100vw;
}

/* ============================================================
   CONTENT PROTECTION - anti-copie / anti-sélection
   ============================================================ */
/* Allow text selection for good UX (copy order numbers, addresses, etc.)
   but prevent dragging images. */
img {
  -webkit-user-drag: none;
  user-select: none;
}
input, textarea, select, [contenteditable] {
  -webkit-user-select: text;
  -moz-user-select: text;
  -ms-user-select: text;
  user-select: text;
}
/* Empêcher le glisser-déposer d'images */
img {
  -webkit-user-drag: none;
  user-select: none;
  pointer-events: auto;
}
/* Désactiver l'impression (page vide si impression) */
@media print {
  body { display: none!important; }
}

/* Section kicker labels (reactive blue glow) */
.kicker {
  color: #6a66c4;
  text-shadow: 0 0 6px rgba(106,102,196,0.35);
  transition: color 0.4s ease, text-shadow 0.4s ease, letter-spacing 0.4s ease;
  cursor: default;
  display: inline-block;
}
.kicker:hover {
  color: #8a86d8;
  text-shadow: 0 0 8px rgba(106,102,196,0.45),
              0 0 20px rgba(106,102,196,0.30),
              0 0 40px rgba(106,102,196,0.18);
  letter-spacing: 0.5em;
}

body {
  background: var(--midnight);
  background-image:
    radial-gradient(ellipse at 20% 0%, rgba(47,44,121,0.12), transparent 50%),
    radial-gradient(ellipse at 80% 100%, rgba(170,169,173,0.06), transparent 50%);
}

::selection { background: var(--crimsonGlow); color: #fff; }

/* Scrollbar */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: var(--midnight); }
::-webkit-scrollbar-thumb {
  background: linear-gradient(var(--silver), var(--graphite));
  border-radius: 10px;
  border: 2px solid var(--midnight);
}
::-webkit-scrollbar-thumb:hover { background: var(--silverlight); }

/* ============================================================
   PRELOADER
   ============================================================ */
#preloader.gone { opacity: 0; pointer-events: none; }

.preloader-ace {
  font-family: 'Cormorant Garamond', serif;
  font-size: 4rem;
  color: var(--silver);
  letter-spacing: 0.1em;
  animation: acePulse 1.4s ease-in-out infinite;
}
@keyframes acePulse {
  0%, 100% { opacity: 0.4; transform: scale(0.95); text-shadow: 0 0 0 transparent; }
  50% { opacity: 1; transform: scale(1.05); text-shadow: 0 0 30px rgba(47,44,121,0.6); }
}
.preloader-text {
  margin-top: 1rem;
  font-size: 0.75rem;
  letter-spacing: 0.5em;
  color: var(--silver);
  text-transform: uppercase;
  animation: textFade 1.4s ease-in-out infinite;
}
@keyframes textFade { 0%,100% { opacity: 0.3; } 50% { opacity: 1; } }

/* ============================================================
   NAVBAR (glassmorphism + shrink on scroll)
   ============================================================ */
.nav-glass {
  background: rgba(20, 20, 28, 0.55);
  backdrop-filter: blur(18px) saturate(140%);
  -webkit-backdrop-filter: blur(18px) saturate(140%);
  border: 1px solid rgba(170, 169, 173, 0.12);
  box-shadow: 0 8px 32px rgba(0,0,0,0.4);
  transition: border-color 0.4s ease, box-shadow 0.4s ease;
}
.nav-glass:hover {
  border-color: rgba(47,44,121,0.75);
  box-shadow: 0 8px 32px rgba(0,0,0,0.4),
              0 0 22px rgba(47,44,121,0.45),
              0 0 45px rgba(47,44,121,0.22),
              inset 0 0 14px rgba(47,44,121,0.10);
}
#navbar.scrolled .nav-glass:hover {
  border-color: rgba(47,44,121,0.75);
  box-shadow: 0 8px 32px rgba(0,0,0,0.6),
              inset 0 1px 0 rgba(170,169,173,0.1),
              0 0 22px rgba(47,44,121,0.45),
              0 0 45px rgba(47,44,121,0.22);
}
#navbar.scrolled .nav-glass {
  background: rgba(10, 10, 15, 0.85);
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
  box-shadow: 0 8px 32px rgba(0,0,0,0.6), inset 0 1px 0 rgba(170,169,173,0.1);
}
#navbar.scrolled .logo-mark { font-size: 1.5rem; }

.nav-link {
  position: relative;
  color: var(--silverlight);
  text-decoration: none;
  padding-bottom: 4px;
  transition: color 0.3s ease;
}
.nav-link::after {
  content: '';
  position: absolute;
  left: 0; bottom: 0;
  width: 0; height: 1px;
  background: linear-gradient(90deg, var(--silver), var(--crimsonGlow));
  transition: width 0.4s ease;
}
.nav-link:hover { color: #fff; }
.nav-link:hover::after { width: 100%; }

/* ============================================================
   BUTTONS - Silver shimmer / liquid flow
   ============================================================ */
.btn-shimmer {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.85rem 2rem;
  font-size: 0.8rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--midnight);
  background: linear-gradient(110deg, #888 0%, var(--silverlight) 25%, #fff 50%, var(--silverlight) 75%, #888 100%);
  background-size: 200% 100%;
  border: 1px solid var(--silverlight);
  border-radius: 999px;
  text-decoration: none;
  font-weight: 500;
  overflow: hidden;
  transition: all 0.4s ease;
  box-shadow: 0 4px 20px rgba(170,169,173,0.2);
  cursor: pointer;
}
.btn-shimmer span { position: relative; z-index: 2; }
.btn-shimmer:hover {
  background-position: -100% 0;
  box-shadow: 0 8px 30px rgba(212,211,216,0.5), 0 0 20px rgba(47,44,121,0.3);
  transform: translateY(-2px);
}
/* liquid shine sweep */
.btn-shimmer::before {
  content: '';
  position: absolute;
  top: 0; left: -100%;
  width: 50%; height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.6), transparent);
  transform: skewX(-20deg);
  transition: left 0.7s ease;
}
.btn-shimmer:hover::before { left: 150%; }

.btn-ghost {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.85rem 2rem;
  font-size: 0.8rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--silverlight);
  background: transparent;
  border: 1px solid rgba(170,169,173,0.4);
  border-radius: 999px;
  text-decoration: none;
  transition: all 0.4s ease;
  cursor: pointer;
}
.btn-ghost:hover {
  border-color: var(--silverlight);
  background: rgba(170,169,173,0.08);
  box-shadow: inset 0 0 20px rgba(170,169,173,0.1);
}
.btn-lg { padding: 1rem 2.4rem; font-size: 0.85rem; }

/* ============================================================
   HERO
   ============================================================ */
/* Wrapper div around the logo img - pseudo-elements work here (not on <img>). */
.hero-logo-wrap {
  position: relative;
  width: 240px;
  height: 240px;
  margin-top: 3rem;
  margin-bottom: 2.5rem;
  border-radius: 50%;
}
/* Two glow layers behind the logo, cross-faded via opacity on hover. */
.hero-logo-wrap::before,
.hero-logo-wrap::after {
  content: '';
  position: absolute;
  inset: -10px;
  border-radius: 50%;
  pointer-events: none;
  transition: opacity 3s cubic-bezier(0.22,0.61,0.36,1), transform 3s cubic-bezier(0.22,0.61,0.36,1);
}
/* Violet glow - visible by default */
.hero-logo-wrap::before {
  background: radial-gradient(circle, rgba(47,44,121,0.55) 30%, transparent 70%);
  opacity: 0.8;
  transform: scale(0.9);
  z-index: 0;
}
/* Silver glow - invisible by default, fades in on hover */
.hero-logo-wrap::after {
  background: radial-gradient(circle, rgba(212,211,216,0.5) 30%, transparent 70%);
  opacity: 0;
  transform: scale(0.9);
  z-index: 0;
}
.hero-logo-wrap:hover::before {
  opacity: 0;
  transform: scale(1.3);
}
.hero-logo-wrap:hover::after {
  opacity: 1;
  transform: scale(1.3);
}
.hero-logo {
  width: 240px;
  height: 240px;
  padding: 15px;
  background: #0a0a0f;
  border: 2px solid rgba(212,211,216,0.4);
  position: relative;
  z-index: 1;
  box-shadow: inset 0 0 20px rgba(10,10,15,0.5);
  transition: transform 3s cubic-bezier(0.22,0.61,0.36,1), border-color 3s cubic-bezier(0.22,0.61,0.36,1);
  object-fit: contain;
  border-radius: 50%;
}
.hero-logo-wrap:hover .hero-logo {
  transform: scale(1.05);
  border-color: rgba(212,211,216,0.7);
}
@media (max-width: 640px) {
  .hero-logo-wrap { width: 160px; height: 160px; margin-top: 2rem; margin-bottom: 1.5rem; }
  .hero-logo { width: 160px; height: 160px; padding: 10px; margin-top: 0; margin-bottom: 0; }
}
.hero-bg {
  background:
    radial-gradient(ellipse at center, rgba(47,44,121,0.25), transparent 60%),
    linear-gradient(180deg, #0a0a0f 0%, #14141c 50%, #0a0a0f 100%);
  will-change: transform;
}
.hero-overlay {
  background:
    radial-gradient(circle at 50% 40%, transparent, rgba(10,10,15,0.7) 80%),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='60'%3E%3Cpath d='M30 0v60M0 30h60' stroke='%23aaa9ad' stroke-width='0.3' opacity='0.15'/%3E%3C/svg%3E");
}
.hero-grid-lines {
  background-image:
    linear-gradient(rgba(170,169,173,0.04) 1px, transparent 1px),
    linear-gradient(90deg, rgba(170,169,173,0.04) 1px, transparent 1px);
  background-size: 60px 60px;
  mask-image: radial-gradient(ellipse at center, black 30%, transparent 70%);
}

/* Floating cards & dice */
.float-card, .float-dice, .float-chip {
  position: absolute;
  user-select: none;
  will-change: transform;
}

/* --- Ghost playing cards (semi-transparent, colorless) --- */
.float-card {
  position: absolute;
  width: 84px; height: 118px;
  background: linear-gradient(145deg, rgba(28,28,38,0.6), rgba(10,10,15,0.5));
  border: 1px solid rgba(170,169,173,0.4);
  border-radius: 9px;
  padding: 0;
  color: var(--silverlight);
  font-family: 'Cormorant Garamond', serif;
  box-shadow: 0 10px 30px rgba(0,0,0,0.5),
              0 0 18px rgba(47,44,121,0.35),
              inset 0 0 12px rgba(47,44,121,0.10);
  opacity: 0.55;
  transition: box-shadow 0.4s ease;
}
.float-card:hover {
  box-shadow: 0 10px 30px rgba(0,0,0,0.6),
              0 0 26px rgba(47,44,121,0.55),
              0 0 50px rgba(47,44,121,0.25),
              inset 0 0 14px rgba(47,44,121,0.12);
}
.float-card .fc-corner {
  position: absolute;
  font-size: 0.9rem;
  font-weight: 600;
  line-height: 1;
}
.float-card .fc-corner.tl { top: 7px; left: 8px; }
.float-card .fc-corner.br { bottom: 7px; right: 8px; transform: rotate(180deg); }
.float-card .fc-center {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  font-size: 2.6rem;
  line-height: 1;
}

.card-1 { top: 16%; left: 7%; animation: float1 9s ease-in-out infinite; transform: rotate(-12deg); }
.card-2 { top: 58%; left: 13%; animation: float2 11s ease-in-out infinite; transform: rotate(8deg); }
.card-3 { top: 22%; right: 9%; animation: float1 10s ease-in-out infinite 1s; transform: rotate(15deg); }

/* --- Dice --- */
.float-dice {
  font-size: 3.2rem;
  color: var(--silver);
  text-shadow: 0 0 18px rgba(170,169,173,0.3), 0 4px 8px rgba(0,0,0,0.6);
  opacity: 0.2;
  filter: drop-shadow(0 0 1px rgba(170,169,173,0.4));
}
.dice-1 { top: 68%; right: 15%; animation: float2 8s ease-in-out infinite; }
.dice-2 { bottom: 24%; left: 16%; animation: float1 12s ease-in-out infinite 2s; }
.dice-3 { top: 44%; right: 6%; animation: float2 10s ease-in-out infinite 0.5s; opacity: 0.16; font-size: 2.4rem; }
.dice-4 { top: 80%; left: 8%; animation: float1 14s ease-in-out infinite 1s; opacity: 0.15; font-size: 2.2rem; }
.dice-5 { bottom: 14%; right: 18%; animation: float2 11s ease-in-out infinite 1.8s; opacity: 0.18; font-size: 2.8rem; }

/* --- Casino chips (semi-transparent, colorless) with logo/values --- */
.float-chip {
  width: 56px; height: 56px;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  border: none;
  position: absolute;
  font-size: 0.6rem;
  font-weight: 700;
  font-family: 'Cormorant Garamond', serif;
  letter-spacing: 0.02em;
  box-shadow: 0 8px 22px rgba(0,0,0,0.5),
              0 0 18px rgba(47,44,121,0.35),
              inset 0 0 12px rgba(47,44,121,0.10);
  background:
    radial-gradient(circle, rgba(28,28,38,0.5) 0%, rgba(28,28,38,0.5) 38%, transparent 38%),
    conic-gradient(from 0deg, rgba(170,169,173,0.5) 0deg 45deg, transparent 45deg 90deg, rgba(170,169,173,0.5) 90deg 135deg, transparent 135deg 180deg, rgba(170,169,173,0.5) 180deg 225deg, transparent 225deg 270deg, rgba(170,169,173,0.5) 270deg 315deg, transparent 315deg 360deg);
  color: var(--silverlight);
  opacity: 0.55;
  transition: box-shadow 0.4s ease;
}
.float-chip:hover {
  box-shadow: 0 8px 22px rgba(0,0,0,0.6),
              0 0 26px rgba(47,44,121,0.55),
              0 0 50px rgba(47,44,121,0.25),
              inset 0 0 14px rgba(47,44,121,0.12);
}
.float-chip span {
  position: relative;
  z-index: 2;
  background: rgba(10,10,15,0.4);
  width: 34px; height: 34px;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  border: 1.5px dashed rgba(170,169,173,0.5);
  color: var(--silverlight);
  font-size: 0.78rem;
}
.chip-1 { top: 22%; left: 4%; animation: float1 13s ease-in-out infinite; }
.chip-2 { top: 38%; right: 5%; animation: float2 14s ease-in-out infinite 1.5s; }
.chip-3 { top: 56%; left: 5%; animation: float1 15s ease-in-out infinite 0.8s; }
.chip-4 { top: 72%; right: 4%; animation: float2 12s ease-in-out infinite 2s; }
.chip-5 { top: 30%; left: 14%; animation: float1 16s ease-in-out infinite 1.2s; }
.chip-6 { bottom: 14%; left: 10%; animation: float2 13s ease-in-out infinite 0.3s; }
.chip-7 { top: 50%; right: 14%; animation: float1 17s ease-in-out infinite 2.5s; }
.chip-8 { bottom: 10%; right: 12%; animation: float2 18s ease-in-out infinite 1.6s; }

@keyframes float1 {
  0%, 100% { transform: translateY(0) rotate(-12deg); }
  50% { transform: translateY(-30px) rotate(-6deg); }
}
@keyframes float2 {
  0%, 100% { transform: translateY(0) rotate(8deg); }
  50% { transform: translateY(-25px) rotate(14deg); }
}

/* Scroll indicator mouse */
.scroll-indicator { transition: color 0.3s; }
.mouse {
  width: 22px; height: 36px;
  border: 1.5px solid currentColor;
  border-radius: 12px;
  position: relative;
}
.wheel {
  position: absolute;
  top: 7px; left: 50%;
  width: 3px; height: 7px;
  margin-left: -1.5px;
  background: currentColor;
  border-radius: 2px;
  animation: wheel 1.8s ease infinite;
}
@keyframes wheel {
  0% { opacity: 1; top: 7px; }
  100% { opacity: 0; top: 18px; }
}

/* ============================================================
   MARQUEE STRIP
   ============================================================ */
.marquee-track {
  animation: marquee 40s linear infinite;
}
@keyframes marquee {
  0% { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}

/* ============================================================
   SECTION ORNAMENT
   ============================================================ */
.ornament {
  display: block;
  width: 120px;
  height: 2px;
  background: linear-gradient(90deg, transparent, var(--silver), transparent);
  position: relative;
  margin: 0.4rem auto 1.2rem;
  transform: none;
}
.ornament::after {
  content: none;
  line-height: 1;
}

/* Utilitaire d'alignement à droite - Tailwind JIT local ne génère
   pas toujours `text-right` pour les nouvelles classes ajoutées
   après compilation. Cette règle garantit l'alignement partout. */
.align-right,
.align-right * {
  text-align: right!important;
}

/* ============================================================
   SÉPARATEUR ANIMÉ - entre les blocs Héritage / Philosophie
   ============================================================ */
.section-divider {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1rem;
  padding: 2.5rem 0;
  margin: 1.5rem 0;
  position: relative;
}
.section-divider .sd-suits {
  display: flex;
  gap: 1.75rem;
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-size: 1.75rem;
  line-height: 1;
}
.section-divider .sd-suits span {
  opacity: 0;
  display: inline-block;
}
.section-divider .sd-suits .red { color: var(--silverlight); }
.section-divider .sd-suits .silver { color: var(--silver); }
/* Animations déclenchées quand le séparateur devient visible */
.section-divider.visible .sd-suits span {
  animation: sdSuitIn 0.6s ease-out forwards;
}
.section-divider.visible .sd-suits span:nth-child(1) { animation-delay: 0.05s; }
.section-divider.visible .sd-suits span:nth-child(2) { animation-delay: 0.25s; }
.section-divider.visible .sd-suits span:nth-child(3) { animation-delay: 0.45s; }
.section-divider.visible .sd-suits span:nth-child(4) { animation-delay: 0.65s; }
@keyframes sdSuitIn {
  from { opacity: 0; transform: translateY(14px) scale(0.7); }
  to   { opacity: 0.85; transform: translateY(0) scale(1); }
}
/* Réduit la préférence de mouvement */
@media (prefers-reduced-motion: reduce) {
  .section-divider .sd-suits span {
    animation: none!important;
    opacity: 0.85!important;
    transform: none!important;
  }
}

/* ============================================================
   FLIP CARDS (Services)
   ============================================================ */
.flip-card { perspective: 1200px; cursor: pointer; }
.flip-inner {
  position: relative; width: 100%; height: 100%;
  transition: transform 0.7s cubic-bezier(0.4,0.2,0.2,1);
  transform-style: preserve-3d;
}
.flip-card.active .flip-inner { transform: rotateY(180deg); }
/* Hover-flip ONLY where a real pointer can hover (mouse). On touch,
   :hover sticks after the first tap and visually LOCKS the flipped
   face - tap flipping must come from .active alone. */
@media (hover: hover) {
  .flip-card:hover .flip-inner { transform: rotateY(180deg); }
}
.flip-face {
  position: absolute; inset: 0;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
  border-radius: 16px;
  padding: 2rem;
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  text-align: center;
  border: 1px solid rgba(170,169,173,0.15);
}
.service-front {
  background: linear-gradient(160deg, var(--graphite), var(--charcoal));
  transition: border-color 0.4s, box-shadow 0.4s;
}
.flip-card:hover .service-front {
  border-color: rgba(170,169,173,0.5);
  box-shadow: 0 20px 50px rgba(0,0,0,0.5), 0 0 30px rgba(170,169,173,0.15);
}
.service-back {
  background: linear-gradient(160deg, var(--charcoal), var(--midnight));
  transform: rotateY(180deg);
  border-color: rgba(47,44,121,0.3);
  text-align: left;
  align-items: flex-start;
  transition: border-color 0.4s ease, box-shadow 0.4s ease;
}
.flip-card:hover .service-back,
.flip-card.active .service-back {
  border-color: rgba(47,44,121,0.8);
  box-shadow: 0 0 22px rgba(47,44,121,0.40),
              0 0 48px rgba(47,44,121,0.20),
              inset 0 0 16px rgba(47,44,121,0.10);
}
.service-icon {
  font-size: 3rem;
  margin-bottom: 1rem;
  color: var(--silver);
  text-shadow: 0 0 20px rgba(170,169,173,0.3);
  transition: transform 0.4s;
}
.flip-card:hover .service-icon { transform: scale(1.15) translateY(-4px); }

.link-underline {
  color: var(--silverlight);
  font-size: 0.8rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  text-decoration: none;
  border-bottom: 1px solid rgba(140,130,220,0.6);
  padding-bottom: 2px;
  transition: color 0.3s;
}
.link-underline:hover { color: #fff; }

/* ============================================================
   ELITE DIFFERENCE
   ============================================================ */
.elite-bg {
  background:
    radial-gradient(ellipse at 70% 50%, rgba(47,44,121,0.15), transparent 50%),
    linear-gradient(180deg, transparent, rgba(20,20,28,0.5));
}
.stat-box {
  text-align: center;
  padding: 1.2rem 0.5rem;
  background: rgba(28,28,38,0.5);
  border: 1px solid rgba(170,169,173,0.1);
  border-radius: 12px;
  backdrop-filter: blur(8px);
}
.stat-num {
  font-family: 'Cormorant Garamond', serif;
  font-size: 2.4rem;
  color: var(--silverlight);
  line-height: 1;
}
.stat-label {
  font-size: 0.65rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--silver);
  margin-top: 0.4rem;
}

.elite-card {
  width: 100%;
  max-width: 320px;
  padding: 1.6rem;
  border-radius: 16px;
  background: linear-gradient(160deg, var(--graphite), var(--charcoal));
  border: 1px solid rgba(170,169,173,0.2);
  box-shadow: 0 10px 30px rgba(0,0,0,0.4);
  backdrop-filter: blur(10px);
  transition: border-color 0.4s ease, box-shadow 0.4s ease;
}
.elite-card:hover {
  border-color: rgba(47,44,121,0.8);
  box-shadow: 0 10px 30px rgba(0,0,0,0.5),
              0 0 22px rgba(47,44,121,0.35),
              0 0 48px rgba(47,44,121,0.15);
}
.elite-card-1 { align-self: flex-end; animation: cardFloat 6s ease-in-out infinite; }
.elite-card-2 { align-self: flex-start; animation: cardFloat 7s ease-in-out infinite 1s; }
.elite-card-3 { align-self: flex-end; animation: cardFloat 8s ease-in-out infinite 0.5s; }
@keyframes cardFloat {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-14px); }
}
@media (max-width: 768px) {
  .elite-card { width: 220px; }
}

/* Elite / philosophie cards as FLIP cards (recto: icône + titre,
   verso: texte). Renderer in index.html adds .elite-flip to dynamic
   cards; the static fallback markup stays non-flip. */
.elite-flip {
  perspective: 1200px;
  cursor: pointer;
  height: 280px;            /* faces are absolute: the card needs a fixed height */
}
.elite-inner {
  position: relative;
  width: 100%;
  height: 100%;
  transform-style: preserve-3d;
  transition: transform 0.7s cubic-bezier(0.4,0.2,0.2,1);
}
.elite-flip.active .elite-inner { transform: rotateY(180deg); }
/* Hover-flip only with a real mouse - on touch, sticky:hover would
   lock the card on its back face after the first tap. */
@media (hover: hover) {
  .elite-flip:hover .elite-inner { transform: rotateY(180deg); }
}
.elite-face {
  position: absolute;
  inset: 0;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
  border-radius: 16px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  text-align: center;
  padding: 1.6rem;
}
.elite-face-back {
  transform: rotateY(180deg);
  background: linear-gradient(160deg, var(--charcoal), var(--midnight));
  border: 1px solid rgba(47,44,121,0.8);
  box-shadow: 0 0 22px rgba(47,44,121,0.40),
              0 0 48px rgba(47,44,121,0.20),
              inset 0 0 16px rgba(47,44,121,0.10);
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}

/* ============================================================
   LE JOURNAL (Blog) - chips, cards, buttons, cta, share
   ============================================================ */
/* Botón dorado genérico (reusable) */
.btn {
  display: inline-block;
  background: linear-gradient(110deg, var(--goldleaf), var(--silverlight));
  color: var(--midnight);
  padding: 0.7rem 1.8rem;
  border-radius: 999px;
  font-weight: 600;
  font-size: 0.78rem;
  text-transform: uppercase;
  text-decoration: none;
  letter-spacing: 0.1em;
  border: none;
  cursor: pointer;
  font-family: inherit;
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.btn:hover { transform: translateY(-2px); box-shadow: 0 8px 24px rgba(201,169,106,0.35); }
.btn-gold {
  background: linear-gradient(110deg, var(--goldleaf), #e0c989);
  color: var(--midnight);
}

/* Chips de categorías */
.blog-chips { flex-wrap: wrap; gap: 0.5rem; }
.blog-chip {
  display: inline-block;
  padding: 0.4rem 1rem;
  border-radius: 999px;
  font-size: 0.75rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--silverlight);
  background: rgba(170,169,173,0.08);
  border: 1px solid rgba(170,169,173,0.18);
  text-decoration: none;
  transition: all 0.25s ease;
}
.blog-chip:hover {
  background: rgba(199,201,204,0.15);
  border-color: #C7C9CC;
  color: #C7C9CC;
  transform: translateY(-1px);
}
.blog-chip.active {
  background: linear-gradient(110deg, #C7C9CC, #E0E3E6);
  color: var(--midnight);
  border-color: #C7C9CC;
}

/* Cards del blog */
.blog-card {
  display: block;
  background: rgba(28,28,38,0.5);
  border: 1px solid rgba(170,169,173,0.1);
  border-radius: 14px;
  overflow: hidden;
  text-decoration: none;
  transition: transform 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease;
}
.blog-card:hover {
  transform: translateY(-4px);
  border-color: rgba(201,169,106,0.4);
  box-shadow: 0 14px 40px rgba(0,0,0,0.45);
}
.blog-card-img {
  height: 180px;
  overflow: hidden;
  background: linear-gradient(135deg, var(--graphite), var(--midnight));
  position: relative;
}
.blog-card-img img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.4s ease; }
.blog-card:hover .blog-card-img img { transform: scale(1.05); }
.blog-card-img::after {
  content: '';
  position: absolute; inset: 0;
  background: linear-gradient(180deg, transparent 60%, rgba(10,10,15,0.4));
  pointer-events: none;
}
.blog-card-body { padding: 1.2rem; }
.blog-card-cat {
  font-size: 0.62rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--goldleaf);
  margin-bottom: 0.4rem;
}
.blog-card-title {
  font-family: 'Cormorant Garamond', serif;
  font-size: 1.3rem;
  color: var(--silverlight);
  margin-bottom: 0.5rem;
  line-height: 1.3;
}
.blog-card-excerpt {
  font-size: 0.85rem;
  color: var(--silver);
  line-height: 1.5;
  margin-bottom: 0.8rem;
}
.blog-card-date {
  font-size: 0.72rem;
  color: #8b8b8b;
}

/* Article vedette (featured hero) - aparición grande arriba de la grille */
.blog-hero {
  display: grid;
  grid-template-columns: 1fr;
  border-radius: 18px;
  overflow: hidden;
  background: rgba(28,28,38,0.6);
  border: 1px solid rgba(201,169,106,0.3);
  box-shadow: 0 0 40px rgba(201,169,106,0.08);
  text-decoration: none;
  transition: transform 0.3s ease, box-shadow 0.3s ease;
  margin-bottom: 2.5rem;
}
.blog-hero:hover {
  transform: translateY(-3px);
  box-shadow: 0 18px 50px rgba(0,0,0,0.5), 0 0 30px rgba(201,169,106,0.15);
}
@media(min-width:768px){
  .blog-hero { grid-template-columns: 1.2fr 1fr; }
}
.blog-hero-img {
  min-height: 280px;
  overflow: hidden;
  background: linear-gradient(135deg, var(--graphite), var(--midnight));
  position: relative;
}
.blog-hero-img img { width:100%; height:100%; object-fit:cover; transition: transform 0.5s ease; min-height: 280px; }
.blog-hero:hover .blog-hero-img img { transform: scale(1.04); }
.blog-hero-body { padding: 2rem 2.2rem; display:flex; flex-direction:column; justify-content:center; }
.blog-hero-badge {
  display: inline-flex; align-items: center; gap: 0.3rem;
  font-size: 0.62rem; text-transform: uppercase; letter-spacing: 0.12em;
  color: var(--midnight);
  background: linear-gradient(110deg, #c9a96a, #e0c887);
  padding: 3px 10px; border-radius: 999px; font-weight: 700;
  width: fit-content; margin-bottom: 0.8rem;
}
.blog-hero-cat {
  font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.1em;
  color: var(--goldleaf); margin-bottom: 0.5rem;
}
.blog-hero-title {
  font-family: 'Cormorant Garamond', serif;
  font-size: 1.8rem; line-height: 1.2;
  color: var(--silverlight); margin-bottom: 0.6rem;
}
@media(min-width:768px){ .blog-hero-title { font-size: 2.2rem; } }
.blog-hero-excerpt {
  font-size: 0.92rem; color: var(--silver); line-height: 1.6; margin-bottom: 1rem;
}
.blog-hero-meta {
  font-size: 0.72rem; color: #8b8b8b; display:flex; gap:0.8rem; align-items:center;
}
.blog-hero-meta .dot { width:3px; height:3px; border-radius:50%; background:#64748b; }

/* Badge vedette dentro del artículo */
.post-vedette-badge {
  display: inline-flex; align-items: center; gap: 0.3rem;
  font-size: 0.62rem; text-transform: uppercase; letter-spacing: 0.12em;
  color: var(--midnight);
  background: linear-gradient(110deg, #c9a96a, #e0c887);
  padding: 3px 10px; border-radius: 999px; font-weight: 700;
  margin-bottom: 0.8rem;
}

/* Stats del artículo (vues, lecture, date) */
.post-meta-row {
  display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center;
  font-size: 0.72rem; color: var(--silver);
  margin-bottom: 1.5rem; padding-bottom: 1rem;
  border-bottom: 1px solid rgba(170,169,173,0.12);
}
.post-meta-row .meta-item { display: inline-flex; align-items: center; gap: 0.3rem; }
.post-meta-row .dot { width:3px; height:3px; border-radius:50%; background:#64748b; }

/* CTA box */
.cta-box {
  padding: 1.8rem;
  background: linear-gradient(160deg, rgba(28,28,38,0.7), rgba(20,20,28,0.7));
  border: 1px solid rgba(201,169,106,0.3);
  border-radius: 16px;
  text-align: center;
  box-shadow: 0 0 28px rgba(201,169,106,0.08);
}

/* Navbar active link para el blog */
.nav-link-active {
  color: var(--goldleaf)!important;
  border-bottom: 1px solid var(--goldleaf);
}

/* Titre: exactement 2 lignes (une phrase par ligne), jamais de wrap */
.philo-title {
  white-space: nowrap;
}
.philo-title span {
  white-space: nowrap;
}
/* Tailles responsives pour que chaque phrase tienne sur une ligne */
@media (max-width: 1024px) {
  .philo-title { font-size: clamp(1.75rem, 4vw, 3rem)!important; }
}
@media (max-width: 640px) {
  .philo-title { font-size: clamp(1.1rem, 5.5vw, 1.5rem)!important; }
}
.philo-text {
  margin-bottom: 3rem;
}
/* Conteneur des 3 cartes en fila horizontale, légèrement superposées */
.philo-cards {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: stretch;
  flex-wrap: nowrap;
  max-width: 1100px;
  margin: 0 auto;
}
.philo-cards .elite-card {
  flex: 0 1 320px;
  max-width: 320px;
  margin-left: 0.75rem;        /* separated, no overlap */
  margin-right: 0.75rem;
  transition: transform 0.45s cubic-bezier(0.34, 1.56, 0.64, 1),
              box-shadow 0.45s ease,
              opacity 0.35s ease,
              border-color 0.4s ease;
}
.philo-cards .elite-card:first-child { margin-left: 0; }
.philo-cards .elite-card:last-child  { margin-right: 0; }
/* Annule l'animation cardFloat et l'align-self hérités (bloque Héritage) */
.philo-cards .elite-card-1,
.philo-cards .elite-card-2,
.philo-cards .elite-card-3 {
  align-self: stretch;
  animation: none;
}
/* Effet "carte tirée" au survol d'une carte - lift without overlapping neighbors.
   Scoped to real pointers AND desktop width: on touch, sticky:hover on the
   container made .elite-card:not(:hover) REPLACE the deck stack transforms
   (scale(.97) beats .deck-2's specificity) - the behind cards jumped aside
   and faded on the first tap. Below 769px the philo cards are a deck, so
   the dim/lift must never apply there - mouse or not. */
@media (hover: hover) and (min-width: 769px) {
  .philo-cards .elite-card:hover {
    transform: translateY(-10px);
    z-index: 10;
    border-color: rgba(201, 169, 106, 0.7);   /* doré */
    box-shadow: 0 22px 44px rgba(0, 0, 0, 0.55),
                0 0 28px rgba(201, 169, 106, 0.30),
                0 0 60px rgba(201, 169, 106, 0.12);
  }
  /* Les autres cartes s'estompent quand l'une est survolée */
  .philo-cards:hover .elite-card:not(:hover) {
    opacity: 0.55;
    transform: scale(0.97);
  }
}
/* Mobile: les cartes repassent en colonne, sans superposition */
@media (max-width: 900px) {
  .philo-cards {
    flex-direction: column;
    align-items: center;
    gap: 1.5rem;
  }
  .philo-cards .elite-card {
    margin-left: 0;
    margin-right: 0;
  }
}
@media (prefers-reduced-motion: reduce) {
  .philo-cards .elite-card,
  .philo-cards:hover .elite-card:not(:hover) {
    transition: none!important;
  }
}

/* ============================================================
   GAMES
   ============================================================ */
.chip-display {
  display: inline-flex; align-items: center; justify-content: center;
  width: 64px; height: 64px;
  border-radius: 50%;
  color: #fff;
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  border: 4px dashed rgba(255,255,255,0.4);
  box-shadow: 0 6px 20px rgba(0,0,0,0.4), inset 0 2px 8px rgba(255,255,255,0.2);
  transition: transform 0.3s;
}
.chip-display:hover { transform: scale(1.15) rotate(10deg); }

.games-slider {
  scrollbar-width: thin;
  scrollbar-color: var(--silver) transparent;
  padding-top: 1.5rem;
}
.games-slider::-webkit-scrollbar { height: 6px; }

.game-card {
  position: relative;
  height: 420px;
  border-radius: 16px;
  perspective: 1200px;
  cursor: pointer;
  transition: transform 0.4s ease;
}
/* Desktop-grid hover lift. Gated like the philo dim: below 769px the cards
   are a deck - a sticky:hover on a card that flew to deck-rest would beat
   .deck-rest's specificity, drop the translateX(-50%) centring and leave
   the card jutting out behind the stack. */
@media (hover: hover) and (min-width: 769px) {
  .game-card:hover { transform: translateY(-6px); }
}
.game-inner {
  position: relative;
  width: 100%;
  height: 100%;
  transform-style: preserve-3d;
  transition: transform 0.7s cubic-bezier(0.4,0.2,0.2,1);
}
.game-card.active .game-inner { transform: rotateY(180deg); }
/* Hover-flip only with a real mouse - see the .flip-card note above. */
@media (hover: hover) {
  .game-card:hover .game-inner { transform: rotateY(180deg); }
}
.game-front, .game-back {
  position: absolute;
  inset: 0;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
  border-radius: 16px;
  border: 1px solid rgba(170,169,173,0.15);
  transition: border-color 0.4s ease, box-shadow 0.4s ease;
}
.game-front {
  background: linear-gradient(160deg, var(--graphite), var(--charcoal));
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.game-back {
  background: linear-gradient(160deg, var(--charcoal), var(--midnight));
  transform: rotateY(180deg);
  padding: 1.5rem;
  display: flex;
  flex-direction: column;
  justify-content: center;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
  scrollbar-color: rgba(47,44,121,0.7) transparent;
}
.game-back::-webkit-scrollbar { width: 5px; }
.game-back::-webkit-scrollbar-thumb {
  background: rgba(47,44,121,0.7);
  border-radius: 5px;
}
.game-card:hover .game-front,
.game-card:hover .game-back,
.game-card.active .game-front,
.game-card.active .game-back {
  border-color: rgba(47,44,121,0.8);
  box-shadow: 0 0 22px rgba(47,44,121,0.40),
              0 0 48px rgba(47,44,121,0.20),
              inset 0 0 16px rgba(47,44,121,0.10);
}
.game-flip-hint {
  display: inline-block;
  margin-top: 0.9rem;
  font-size: 0.75rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--silverlight);
  border: 1px solid rgba(212,211,216,0.5);
  border-radius: 999px;
  padding: 0.2rem 0.7rem;
}
.game-history-label {
  font-size: 0.6rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--silverlight);
  margin-bottom: 0.5rem;
}
.game-visual {
  height: 160px;
  position: relative;
  overflow: hidden;
  display: flex; align-items: center; justify-content: center;
}
.game-visual::after {
  content: '';
  position: absolute; inset: 0;
  background: linear-gradient(180deg, transparent 40%, rgba(10,10,15,0.9));
}
.game-roulette { background: radial-gradient(circle at 50% 50%, var(--crimson) 0%, var(--charcoal) 70%); }
.game-blackjack { background: linear-gradient(135deg, #0d3b1f, var(--charcoal)); }
.game-blackjack22 { background: linear-gradient(135deg, #1f4d2e, var(--charcoal)); }
.game-uth { background: linear-gradient(135deg, #1a1a2e, var(--charcoal)); }
.game-boule { background: linear-gradient(135deg, #3d2817, var(--charcoal)); }
.game-chuck { background: linear-gradient(135deg, #4a1a2e, var(--charcoal)); }
.game-roue { background: linear-gradient(135deg, #2d1b3d, var(--charcoal)); }
.game-rouemulti { background: linear-gradient(135deg, #4a1a3d, var(--charcoal)); }
.game-poker { background: linear-gradient(135deg, #1c1c26, var(--charcoal)); }
.game-bingo { background: linear-gradient(135deg, #1f2d1a, var(--charcoal)); }
.game-visual .game-emoji {
  position: relative; z-index: 2;
  font-size: 3rem;
  color: var(--silverlight);
  text-shadow: 0 4px 20px rgba(0,0,0,0.6);
}
.game-body {
  padding: 1.4rem 1.5rem;
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
}

.slider-arrow {
  position: absolute;
  top: 80px;
  width: 48px; height: 48px;
  border-radius: 50%;
  background: rgba(20,20,28,0.8);
  backdrop-filter: blur(10px);
  border: 1px solid rgba(170,169,173,0.3);
  color: var(--silverlight);
  font-size: 1.8rem;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer;
  z-index: 5;
  transition: all 0.3s;
  opacity: 0;
  margin-top: 1.5rem;
}
.games-slider:hover ~ .slider-arrow,
#games:hover .slider-arrow { opacity: 1; }
.slider-arrow:hover { background: var(--silver); color: var(--midnight); }
.slider-arrow-left { left: -10px; }
.slider-arrow-right { right: -10px; }
@media (max-width: 768px) { .slider-arrow { display: none; } }

/* ============================================================
   TESTIMONIALS
   ============================================================ */
.testi-bg {
  background:
    radial-gradient(ellipse at 30% 50%, rgba(47,44,121,0.12), transparent 50%),
    linear-gradient(180deg, transparent, rgba(20,20,28,0.4));
}
.client-logo {
  font-family: 'Cormorant Garamond', serif;
  font-size: 1.3rem;
  letter-spacing: 0.15em;
  color: var(--silver);
  transition: all 0.4s;
}
.client-logo:hover { color: var(--silverlight); transform: scale(1.08); }

.testi-slide {
  min-width: 100%;
  padding: 0 1rem;
  text-align: center;
  box-sizing: border-box;
}

.testi-dot {
  width: 10px; height: 10px;
  border-radius: 50%;
  border: 1px solid var(--silver);
  background: transparent;
  cursor: pointer;
  transition: all 0.3s;
}
.testi-dot.active {
  background: var(--silver);
  box-shadow: 0 0 10px rgba(170,169,173,0.6);
  width: 28px; border-radius: 5px;
}

/* ============================================================
   CONTACT FORM
   ============================================================ */
.glass-panel {
  background: rgba(28,28,38,0.6);
  backdrop-filter: blur(20px) saturate(140%);
  -webkit-backdrop-filter: blur(20px) saturate(140%);
  border: 1px solid rgba(170,169,173,0.15);
  border-radius: 20px;
  box-shadow: 0 20px 60px rgba(0,0,0,0.5);
}
.field-group { display: flex; flex-direction: column; gap: 0.4rem; }
.field-group label {
  font-size: 0.7rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--silver);
}
.field-group input,
.field-group select,
.field-group textarea {
  background: rgba(10,10,15,0.6);
  border: 1px solid rgba(170,169,173,0.2);
  border-radius: 10px;
  padding: 0.8rem 1rem;
  color: var(--silverlight);
  font-size: 0.95rem;
  font-family: inherit;
  transition: all 0.3s;
}
.field-group input::placeholder,
.field-group textarea::placeholder { color: rgba(170,169,173,0.4); }
.field-group input:focus,
.field-group select:focus,
.field-group textarea:focus {
  outline: none;
  border-color: var(--silver);
  box-shadow: 0 0 0 3px rgba(170,169,173,0.12);
  background: rgba(10,10,15,0.85);
}
.field-group select option { background: var(--charcoal); }
.field-group input[type="date"]::-webkit-calendar-picker-indicator { filter: invert(0.8); cursor: pointer; }

.contact-ico {
  width: 44px; height: 44px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 50%;
  background: rgba(170,169,173,0.1);
  border: 1px solid rgba(170,169,173,0.2);
  color: var(--silverlight);
  font-size: 1.1rem;
  flex-shrink: 0;
}

/* ============================================================
   FOOTER
   ============================================================ */
.footer-title {
  font-size: 0.75rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--silverlight);
  margin-bottom: 1.2rem;
  padding-bottom: 0.6rem;
  border-bottom: 1px solid rgba(170,169,173,0.15);
}
.footer-links { list-style: none; padding: 0; display: flex; flex-direction: column; gap: 0.7rem; }
.footer-links a {
  color: rgba(212,211,216,0.55);
  text-decoration: none;
  font-size: 0.9rem;
  transition: all 0.3s;
}
.footer-links a:hover { color: var(--silverlight); padding-left: 6px; }

.social-ico {
  width: 40px; height: 40px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 50%;
  background: rgba(170,169,173,0.08);
  border: 1px solid rgba(170,169,173,0.2);
  color: var(--silverlight);
  text-decoration: none;
  font-weight: 600;
  font-size: 0.95rem;
  transition: all 0.4s;
}
.social-ico:hover {
  background: var(--silver);
  color: var(--midnight);
  transform: translateY(-3px);
  box-shadow: 0 8px 20px rgba(170,169,173,0.3);
}

/* ============================================================
   WHATSAPP BUTTON
   ============================================================ */
#whatsappBtn {
  background: #25D366;
  transition: transform 0.3s;
}
#whatsappBtn:hover { transform: scale(1.1); }
.whatsapp-pulse::before {
  content: '';
  position: absolute; inset: 0;
  border-radius: 50%;
  background: #25D366;
  z-index: -1;
  animation: waPulse 2s ease-out infinite;
}
@keyframes waPulse {
  0% { transform: scale(1); opacity: 0.6; }
  100% { transform: scale(1.8); opacity: 0; }
}

/* ============================================================
   AI CHATBOT
   ============================================================ */
.chat-toggle-anim { animation: chatBob 3s ease-in-out infinite; }
@keyframes chatBob {
  0%,100% { transform: translateY(0); }
  50% { transform: translateY(-6px); }
}
.chat-badge {
  position: absolute;
  top: -4px; right: -4px;
  background: var(--crimsonGlow);
  color: #fff;
  font-size: 0.55rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  padding: 2px 5px;
  border-radius: 6px;
}
.chat-window {
  transform: translateY(20px) scale(0.95);
  opacity: 0;
  pointer-events: none;
  transition: all 0.35s cubic-bezier(0.4,0.2,0.2,1);
  transform-origin: bottom right;
  /* iOS Safari: keep the popup inside the real viewport (accounts for the
     dynamic toolbar + notch via dvh). Cap total height so it never overflows
     under Safari's chrome on small screens like iPhone X. */
  max-height: calc(100dvh - 12rem);
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.chat-window.open {
  transform: translateY(0) scale(1);
  opacity: 1;
  pointer-events: auto;
}
.chat-header {
  background: linear-gradient(135deg, var(--charcoal), var(--graphite));
  border: 1px solid rgba(170,169,173,0.2);
  border-bottom: none;
  border-radius: 18px 18px 0 0;
  padding: 1rem 1.2rem;
  display: flex; align-items: center; justify-content: space-between;
}
.chat-avatar {
  width: 40px; height: 40px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--silver), var(--silverlight));
  color: var(--midnight);
  display: flex; align-items: center; justify-content: center;
  font-family: 'Cormorant Garamond', serif;
  font-weight: 700;
  font-size: 1.1rem;
}
.chat-avatar-img {
  width: 40px; height: 40px;
  border-radius: 50%;
  object-fit: cover;
  border: 1px solid rgba(170,169,173,0.3);
  flex-shrink: 0;
}
.logo-img {
  border: 1px solid rgba(170,169,173,0.25);
}
#navbar.scrolled .logo-img { height: 2rem; width: 2rem; }
.online-dot {
  width: 7px; height: 7px;
  border-radius: 50%;
  background: #22c55e;
  box-shadow: 0 0 8px #22c55e;
}
.chat-body {
  background: var(--charcoal);
  border-left: 1px solid rgba(170,169,173,0.2);
  border-right: 1px solid rgba(170,169,173,0.2);
  /* Flexible height: take available space inside the capped chat-window,
     but cap at 320px on larger screens. Was: height: 320px (fixed, broke iOS). */
  height: 320px;
  max-height: 50vh;
  overflow-y: auto;
  padding: 1.2rem;
  display: flex; flex-direction: column; gap: 0.8rem;
  scrollbar-width: thin;
}
.chat-quick {
  background: var(--charcoal);
  border-left: 1px solid rgba(170,169,173,0.2);
  border-right: 1px solid rgba(170,169,173,0.2);
  padding: 0.6rem 1rem;
  display: flex; flex-wrap: wrap; gap: 0.4rem;
}
.chat-quick button {
  font-size: 0.7rem;
  padding: 0.35rem 0.7rem;
  border-radius: 999px;
  background: rgba(170,169,173,0.1);
  border: 1px solid rgba(170,169,173,0.25);
  color: var(--silverlight);
  cursor: pointer;
  transition: all 0.3s;
}
.chat-quick button:hover { background: rgba(170,169,173,0.25); }
.chat-form {
  background: var(--graphite);
  border: 1px solid rgba(170,169,173,0.2);
  border-top: 1px solid rgba(170,169,173,0.1);
  border-radius: 0 0 18px 18px;
  padding: 0.7rem;
  display: flex; align-items: center; gap: 0.5rem;
}
.chat-form input {
  flex: 1;
  background: rgba(10,10,15,0.6);
  border: 1px solid rgba(170,169,173,0.15);
  border-radius: 999px;
  padding: 0.7rem 1rem;
  color: var(--silverlight);
  font-size: 0.9rem;
}
.chat-form input:focus { outline: none; border-color: var(--silver); }
.chat-form button {
  width: 40px; height: 40px;
  border-radius: 50%;
  background: var(--silver);
  color: var(--midnight);
  font-size: 1rem;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer;
  transition: transform 0.2s;
}
.chat-form button:hover { transform: scale(1.1); }

/* Chat bubbles */
.chat-msg { max-width: 80%; padding: 0.7rem 1rem; border-radius: 14px; font-size: 0.88rem; line-height: 1.5; animation: msgIn 0.3s ease; }
@keyframes msgIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
.chat-msg.bot {
  align-self: flex-start;
  background: rgba(28,28,38,0.9);
  border: 1px solid rgba(170,169,173,0.15);
  color: var(--silverlight);
  border-bottom-left-radius: 4px;
}
.chat-msg.user {
  align-self: flex-end;
  background: linear-gradient(135deg, var(--silver), var(--silverlight));
  color: var(--midnight);
  border-bottom-right-radius: 4px;
}
.chat-typing { display: flex; gap: 4px; padding: 0.7rem 1rem; }
.chat-typing span {
  width: 7px; height: 7px; border-radius: 50%;
  background: var(--silver);
  animation: typing 1.2s infinite;
}
.chat-typing span:nth-child(2) { animation-delay: 0.2s; }
.chat-typing span:nth-child(3) { animation-delay: 0.4s; }
@keyframes typing {
  0%,60%,100% { transform: translateY(0); opacity: 0.4; }
  30% { transform: translateY(-6px); opacity: 1; }
}

/* ============================================================
   CHAT - MOBILE REFINEMENT (iPhone Safari / small screens)
   ------------------------------------------------------------
   Desktop sizes above are tuned for larger viewports. On iPhone X
   (375px wide) those sizes crowd the popup, forcing a manual text
   zoom. This block tightens everything for <=480px so the chat is
   clean at 100% Safari text size. Does NOT affect desktop.
   ============================================================ */
@media (max-width: 480px) {
  .chat-window { right: 0.75rem!important; bottom: 5.5rem!important; width: calc(100vw - 1.5rem)!important; }
  .chat-header { padding: 0.7rem 0.9rem; }
  .chat-header .font-serif { font-size: 0.95rem; }      /* "Concierge de l'AS" title */
  .chat-header .text-xs { font-size: 0.62rem; }          /* "En ligne" subtitle */
  .chat-avatar, .chat-avatar-img { width: 32px; height: 32px; }
  .chat-body { padding: 0.85rem; gap: 0.6rem; }
  .chat-msg { font-size: 0.8rem; padding: 0.55rem 0.8rem; line-height: 1.45; }
  .chat-quick { padding: 0.5rem 0.75rem; gap: 0.35rem; }
  .chat-quick button { font-size: 0.62rem; padding: 0.3rem 0.6rem; }
  .chat-form { padding: 0.5rem 0.6rem; }
  .chat-form input { font-size: 0.82rem; padding: 0.55rem 0.85rem; }
  .chat-form button { width: 34px; height: 34px; font-size: 0.9rem; }
}

/* ============================================================
   SCROLL REVEAL ANIMATIONS
   ============================================================ */
.reveal-up, .reveal-left, .reveal-right {
  opacity: 0;
  transition: opacity 0.9s ease, transform 0.9s cubic-bezier(0.2,0.7,0.3,1);
  transition-delay: var(--delay, 0s);
}
.reveal-up { transform: translateY(16px); }
.reveal-left { transform: translateX(-20px); }
.reveal-right { transform: translateX(20px); }
.reveal-up.visible, .reveal-left.visible, .reveal-right.visible {
  opacity: 1;
  transform: none;   /* none = no compositing layer = no subpixel distortion */
}

/* ============================================================
   LEGAL PAGES TYPOGRAPHY
   ============================================================ */
.legal-content h2 {
  font-family: 'Cormorant Garamond', serif;
  font-size: 1.6rem;
  color: var(--silverlight);
  margin-top: 2.2rem;
  margin-bottom: 0.8rem;
}
.legal-content h3 {
  color: var(--silver);
  font-size: 1.05rem;
  margin-top: 1.5rem;
  margin-bottom: 0.5rem;
}
.legal-content p { margin-bottom: 1rem; line-height: 1.8; }
.legal-content ul { list-style: none; padding-left: 0; margin-bottom: 1rem; }
.legal-content ul li {
  position: relative;
  padding-left: 1.5rem;
  margin-bottom: 0.5rem;
  line-height: 1.7;
}
.legal-content ul li::before {
  content: '◆';
  position: absolute; left: 0;
  color: var(--crimsonGlow);
  font-size: 0.6rem;
  top: 0.55rem;
}
.legal-content a { color: var(--silverlight); text-decoration: underline; }
.legal-content a:hover { color: #fff; }

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width: 640px) {
  .hero-grid-lines { opacity: 0.15; }
  .float-card { width: 60px; height: 84px; font-size: 1.6rem; }
  .float-dice { font-size: 2.5rem; }
  .elite-card { width: 180px; padding: 1.2rem; }
  .elite-card-1 { right: 0; }
  .elite-card-2 { left: 0; }
  .elite-card-3 { right: 5%; }
  .stat-num { font-size: 1.8rem; }
}

/* Card-deck controls - injected by main.js, visible only in deck mode (≤768px) */
.deck-controls { display: none; }
@media (prefers-reduced-motion: reduce) {
  .deck-top, .deck-2, .deck-3, .deck-rest,
  .deck-drag, .deck-ghost { transition: none!important; }
}

/* ============================================================
   MOBILE CAROUSELS - horizontal swipe on phones (≤768px)
   ------------------------------------------------------------
   Converts card grids/rows into horizontal snap carousels so
   mobile users swipe sideways instead of scrolling endlessly.
   Desktop layout (≥769px) is untouched.
   ============================================================ */
@media (max-width: 768px) {

  /* =====================================================================
     1. STACKED CARD DECKS (main de croupier) - games, services, héritage
     (elite) et philosophie. No horizontal scroll: swipe ← → ↑ or the
     arrows advance the deck. Behaviour driven by the CardDeck factory
     (js/main.js). Desktop layout (≥769px) is untouched.
     ===================================================================== */

  /* Shared stack positions - every card is centred via translateX(-50%) */
  .deck-top  { transform: translateX(-50%); z-index: 5; touch-action: pan-y; cursor: grab; }
  .deck-top:active { cursor: grabbing; }
  /* pan-y: vertical drags stay NATIVE (page scroll / card back scroll),
     horizontal swipes stream to the CardDeck drag - flipped or not. */
  .deck-2    { transform: translateX(-50%) translateY(-16px) scale(.96) rotate(2.5deg); z-index: 4; pointer-events: none; }
  .deck-3    { transform: translateX(-50%) translateY(-30px) scale(.92) rotate(-2deg);  z-index: 3; pointer-events: none; }
  .deck-rest { transform: translateX(-50%) translateY(-30px) scale(.92) rotate(-2deg);  z-index: 1; pointer-events: none; }
  .deck-drag  { transition: none!important; z-index: 6; }
  .deck-ghost { pointer-events: none; }
  /* cardFloat / hover-lift animations would fight the stack transforms */
  .deck-top, .deck-2, .deck-3, .deck-rest { animation: none!important; }
  /* BOTH faces must drag identically: no scrollable backs (the browser
     steals touches over scroll containers) and no text selection
     stealing horizontal swipes on the back face. */
  .deck-top, .deck-2, .deck-3, .deck-rest {
    -webkit-user-select: none; user-select: none;
    -webkit-touch-callout: none;
  }
  .deck-top .game-back,
  .deck-top .flip-back,
  .deck-top .elite-face-back { overflow: visible!important; }
  /* The héritage grid has no column template below lg - with absolute
     deck cards its implicit column collapses to ~0px (cards shrink to
     49px). Force one full-width column. */
  #heritageGrid { grid-template-columns: 1fr!important; }
  #gamesGrid > .deck-top:hover, #servicesGrid > .deck-top:hover,
  #eliteCards > .deck-top:hover, #philoCards > .deck-top:hover { transform: translateX(-50%); }
  #gamesGrid > .deck-2:hover, #servicesGrid > .deck-2:hover,
  #eliteCards > .deck-2:hover, #philoCards > .deck-2:hover {
    transform: translateX(-50%) translateY(-16px) scale(.96) rotate(2.5deg);
  }
  #gamesGrid > .deck-3:hover, #servicesGrid > .deck-3:hover,
  #eliteCards > .deck-3:hover, #philoCards > .deck-3:hover {
    transform: translateX(-50%) translateY(-30px) scale(.92) rotate(-2deg);
  }

  /* GAMES deck - cards 440px */
  #gamesGrid {
    display: block!important;
    position: relative;
    height: 490px;                    /* 34px headroom for the peek + 440px card */
    padding: 0;
    margin: 0;
    overflow: visible!important;
  }
  #gamesGrid > .game-card {
    position: absolute;
    top: 34px;
    left: 50%;
    width: min(85%, 340px)!important;
    max-width: min(85%, 340px);
    height: 440px!important;
    margin: 0!important;
    transition: transform .45s cubic-bezier(.22,1,.36,1), opacity .35s ease;
    will-change: transform;
  }

  /* SERVICES deck - flip cards 320px */
  #servicesGrid {
    display: block!important;
    position: relative;
    height: 390px;                    /* 34px peek + 320px card + rotation slack */
    padding: 0;
    margin: 0;
    overflow: visible!important;
  }
  #servicesGrid > .flip-card {
    position: absolute;
    top: 34px;
    left: 50%;
    width: min(85%, 340px)!important;
    max-width: min(85%, 340px);
    height: 320px!important;
    margin: 0!important;
    transition: transform .45s cubic-bezier(.22,1,.36,1), opacity .35s ease;
    will-change: transform;
  }

  /* ELITE + PHILOSOPHIE decks - compact elite-cards 280px.
     NB: margin auto is FORBIDDEN here - #eliteCards is a grid item and
     auto margins disable the stretch fill (width collapses to content). */
  #eliteCards, #philoCards {
    display: block!important;
    position: relative;
    height: 350px;                    /* 34px peek + 280px card + rotation slack */
    padding: 0;
    margin: 0;
    max-width: none!important;
    overflow: visible!important;
  }
  #eliteCards > .elite-card, #philoCards > .elite-card {
    position: absolute;
    top: 34px;
    left: 50%;
    width: min(85%, 320px)!important;
    max-width: min(85%, 320px);
    height: 280px!important;
    margin: 0!important;
    padding: 2rem 1.5rem!important;
    box-sizing: border-box!important;
    display: flex!important;
    flex-direction: column!important;
    justify-content: center!important;
    align-self: auto!important;
    transition: transform .45s cubic-bezier(.22,1,.36,1), opacity .35s ease,
                border-color .4s ease, box-shadow .4s ease;
    will-change: transform;
  }

  /* Deck controls (built by main.js under each deck) */
  .deck-controls {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1.4rem;
    margin-top: 1rem;
  }
  .deck-controls button {
    width: 44px; height: 44px;
    border-radius: 999px;
    border: 1px solid rgba(212,211,216,0.4);
    background: rgba(20,20,28,0.6);
    color: var(--silverlight);
    font-size: 1.35rem;
    line-height: 1;
    display: flex; align-items: center; justify-content: center;
    cursor: pointer;
    transition: border-color .3s ease, color .3s ease, box-shadow .3s ease;
  }
  .deck-controls button:hover,
  .deck-controls button:focus-visible {
    border-color: var(--goldleaf);
    color: var(--goldleaf);
    box-shadow: 0 0 16px rgba(201,169,106,0.25);
    outline: none;
  }
  .deck-counter {
    font-size: 0.72rem;
    letter-spacing: 0.35em;
    text-transform: uppercase;
    color: rgba(212,211,216,0.65);
    min-width: 96px;
    text-align: center;
  }

  /* 2/3/4. Services, philosophie and héritage (elite) carousels were
     replaced by the stacked decks above (same swipe pattern as games). */
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms!important;
    transition-duration: 0.01ms!important;
  }
  .reveal-up, .reveal-left, .reveal-right { opacity: 1!important; transform: none!important; }
}

/* ============================================================
   BOUTIQUE - La Boutique de l'AS
   ============================================================ */

/* --- Navbar boutique link highlight --- */
.nav-link-boutique {
  position: relative;
  color: #8c82dc;
}
.nav-link-boutique:hover { color: #b8b0f0; }

/* --- Language switch (compartido index + boutique) --- */
.lang-switch {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  font-size: 0.75rem;
  letter-spacing: 0.12em;
  font-weight: 600;
  padding: 0.35rem 0.7rem;
  border-radius: 999px;
  border: 1px solid rgba(170,169,173,0.25);
  background: rgba(10,10,15,0.4);
}
.lang-btn {
  background: none;
  border: none;
  cursor: pointer;
  color: var(--silver);
  font: inherit;
  letter-spacing: inherit;
  padding: 0.45rem 0.3rem;
  position: relative;
  transition: color 0.3s;
}
/* Zone tactile elargie (mobile ~44px) sans grossir la pilule */
.lang-btn::before {
  content: "";
  position: absolute;
  inset: -0.6rem -0.7rem;
}
#menuToggle {
  padding: 0.6rem;
}
#menuToggle .ico-close { display: none; }
#menuToggle.menu-open .ico-burger { display: none; }
#menuToggle.menu-open .ico-close { display: block; }
.lang-btn.active,
.lang-btn[aria-pressed="true"] { color: var(--silverlight); }
.lang-btn:hover { color: #fff; }
.lang-sep { color: rgba(170,169,173,0.4); }

/* --- Filter bar --- */
.shop-filter-bar {
  background: rgba(10,10,15,0.92);
  backdrop-filter: blur(16px) saturate(140%);
  -webkit-backdrop-filter: blur(16px) saturate(140%);
}
.shop-filter-group {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
}
.shop-filter-label {
  font-size: 0.6rem;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--silver);
}
.shop-select, .shop-search {
  background: rgba(10,10,15,0.6);
  border: 1px solid rgba(170,169,173,0.2);
  border-radius: 999px;
  padding: 0.5rem 1rem;
  color: var(--silverlight);
  font-size: 0.85rem;
  font-family: inherit;
  transition: all 0.3s;
  min-width: 130px;
}
.shop-select:focus, .shop-search:focus {
  outline: none;
  border-color: var(--silver);
  box-shadow: 0 0 0 3px rgba(170,169,173,0.12);
  background: rgba(10,10,15,0.85);
}
.shop-select option { background: var(--charcoal); }
.shop-search::placeholder { color: rgba(170,169,173,0.4); }
.shop-search-group .shop-search { min-width: 180px; }
.shop-results { white-space: nowrap; }
@media (max-width: 768px) {
  .shop-results { display: none; }
  .shop-search-group { width: 100%; }
  .shop-search-group .shop-search { width: 100%; }
}

/* --- Tag filters (custom chips) --- */
.tag-filters {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.5rem;
  max-width: 1280px;
  margin: 0.8rem auto 0;
  padding: 0 1.5rem;
}
.tag-filters:empty { display: none; }
.tag-chip {
  font-size: 0.68rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--silver);
  background: rgba(28,28,38,0.6);
  border: 1px solid rgba(170,169,173,0.25);
  border-radius: 999px;
  padding: 0.35rem 0.9rem;
  cursor: pointer;
  transition: all 0.25s;
  font-family: inherit;
}
.tag-chip:hover {
  border-color: var(--goldleaf);
  color: var(--goldleaf);
  transform: translateY(-1px);
}
.tag-chip.active {
  background: var(--goldleaf);
  color: var(--midnight);
  border-color: var(--goldleaf);
  box-shadow: 0 0 12px rgba(201,169,106,0.4);
}

/* ============================================================
   PRICE RANGE SLIDER (dual-handle)
   ============================================================ */
.shop-price-group { min-width: 200px; }
.price-slider-wrap {
  position: relative;
  height: 28px;
  display: flex;
  align-items: center;
}
.price-range {
  position: absolute;
  width: 100%;
  height: 28px;
  -webkit-appearance: none;
  appearance: none;
  background: transparent;
  pointer-events: none;
  z-index: 2;
  margin: 0;
}
.price-range::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: var(--goldleaf);
  border: 2px solid #0a0a0f;
  cursor: pointer;
  pointer-events: auto;
  box-shadow: 0 2px 6px rgba(0,0,0,0.4);
  transition: transform 0.15s;
}
.price-range::-webkit-slider-thumb:hover { transform: scale(1.2); }
.price-range::-moz-range-thumb {
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--goldleaf);
  border: 2px solid #0a0a0f;
  cursor: pointer;
  pointer-events: auto;
  box-shadow: 0 2px 6px rgba(0,0,0,0.4);
}
.price-range::-webkit-slider-runnable-track { background: transparent; }
.price-range::-moz-range-track { background: transparent; }

/* Track (background bar) */
.price-track {
  position: absolute;
  left: 0; right: 0;
  height: 4px;
  background: rgba(170,169,173,0.2);
  border-radius: 2px;
  z-index: 1;
}
.price-track-fill {
  position: absolute;
  height: 4px;
  background: linear-gradient(90deg, var(--goldleaf), #e0c989);
  border-radius: 2px;
  z-index: 1;
}
.price-display {
  font-size: 0.7rem;
  color: var(--silver);
  letter-spacing: 0.05em;
  text-align: center;
  margin-top: 0.2rem;
  white-space: nowrap;
}
@media(max-width:768px) {
  .shop-price-group { width: 100%; }
  .price-slider-wrap { max-width: 300px; margin: 0 auto; }
}

/* ============================================================
   CART + CHECKOUT
   ============================================================ */
.cart-trigger { margin-left: 0.2rem; }
.cart-badge { background: var(--goldleaf)!important; color: var(--midnight)!important; }

/* Add-to-cart button on card */
.product-actions { display: flex; align-items: center; gap: 0.5rem; flex: 1 1 auto; }
/* Primary "Ajouter au panier" button - silver gradient, matches chat toggle style. */
.product-add-cart {
  width: 100%;
  padding: 0.6rem 0.9rem;
  border-radius: 10px;
  border: none;
  background: linear-gradient(110deg, var(--silver), var(--silverlight));
  color: var(--midnight);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: all 0.25s;
  flex: 1 1 auto;   /* fill the actions row width */
}
.product-add-cart:hover {
  filter: brightness(1.08);
  transform: translateY(-2px);
  box-shadow: 0 6px 18px rgba(201,169,106,0.45);
}
.product-add-cart:active { transform: translateY(0); }
/* on_quote (sur devis) variant - gold outline to signal "needs a quote". */
.product-add-cart.product-quote {
  background: transparent;
  border: 1px solid rgba(201,169,106,0.6);
  color: var(--goldleaf);
}
.product-add-cart.product-quote:hover {
  background: rgba(201,169,106,0.15);
  filter: none;
}

/* Cart panel specific */
.cart-panel { width: min(400px, 92vw); }
.cart-footer {
  padding: 1.2rem 1.4rem;
  border-top: 1px solid rgba(170,169,173,0.15);
}
.cart-footer.hidden { display: none; }
.cart-totals { font-size: 0.88rem; color: var(--silverlight); margin-bottom: 0.8rem; }
.cart-line { display: flex; justify-content: space-between; padding: 0.3rem 0; color: var(--silver); }
.cart-total-line { border-top: 1px solid rgba(201,169,106,0.3); margin-top: 0.4rem; padding-top: 0.6rem; }
.cart-total-line strong { font-family: 'Cormorant Garamond', serif; font-size: 1.3rem; color: var(--goldleaf); }

/* Cart items */
.cart-item {
  display: flex; align-items: center; gap: 0.8rem;
  padding: 0.8rem;
  border-radius: 10px;
  background: rgba(28,28,38,0.5);
  border: 1px solid rgba(170,169,173,0.1);
  animation: favItemIn 0.3s ease;
}
.cart-item-mini {
  width: 48px; height: 48px;
  border-radius: 8px;
  overflow: hidden;
  background: linear-gradient(145deg, var(--graphite), var(--midnight));
  border: 1px solid rgba(201,169,106,0.3);
  display: flex; align-items: center; justify-content: center;
  font-family: 'Cormorant Garamond', serif;
  color: var(--goldleaf);
  flex-shrink: 0;
}
.cart-item-mini img { width: 100%; height: 100%; object-fit: cover; }
.cart-item-info { flex: 1 1 auto; min-width: 0; }
.cart-item-info h4 { font-family: 'Cormorant Garamond', serif; font-size: 1rem; color: var(--silverlight); margin: 0 0 0.2rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cart-item-price { font-size: 0.75rem; color: var(--goldleaf); }
.cart-qty { display: flex; align-items: center; gap: 0.5rem; margin-top: 0.4rem; }
.qty-btn {
  width: 24px; height: 24px;
  border-radius: 6px;
  background: rgba(10,10,15,0.6);
  border: 1px solid rgba(170,169,173,0.3);
  color: var(--silverlight);
  cursor: pointer;
  font-size: 0.85rem;
  display: flex; align-items: center; justify-content: center;
  transition: all 0.2s;
}
.qty-btn:hover { background: var(--goldleaf); color: var(--midnight); border-color: var(--goldleaf); }
.qty-val { min-width: 22px; text-align: center; font-size: 0.85rem; color: var(--silverlight); }
.cart-item-remove {
  background: none; border: none; color: var(--silver); font-size: 1.3rem;
  cursor: pointer; padding: 0.3rem; transition: color 0.2s; flex-shrink: 0;
}
.cart-item-remove:hover { color: var(--crimsonGlow); }

/* Checkout box (overlay reutiliza .shop-modal-overlay) */
.checkout-box {
  width: min(540px, 92vw);
  max-height: 90vh;
  overflow-y: auto;
  padding: 2rem 1.8rem;
  margin: 5vh auto;
  animation: modalIn 0.35s cubic-bezier(0.2,0.7,0.3,1);
}
.checkout-summary {
  margin: 1.2rem 0;
  padding: 1rem;
  background: rgba(28,28,38,0.5);
  border: 1px solid rgba(201,169,106,0.2);
  border-radius: 10px;
}
.checkout-sum-line { display: flex; justify-content: space-between; padding: 0.25rem 0; font-size: 0.88rem; color: var(--silver); }
.checkout-sum-total { border-top: 1px solid rgba(201,169,106,0.3); margin-top: 0.4rem; padding-top: 0.5rem; }
.checkout-sum-total strong { font-family: 'Cormorant Garamond', serif; font-size: 1.2rem; color: var(--goldleaf); }

/* --- Code promo (checkout) --- */
.promo-field { margin: 1rem 0 0; }
.promo-field label { font-size: 0.68rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--silver); display: block; margin-bottom: 0.4rem; }
.promo-field input {
  background: rgba(10,10,15,0.6); border: 1px solid rgba(170,169,173,0.2); border-radius: 8px;
  padding: 0.55rem 0.8rem; color: var(--silverlight); font-size: 0.88rem; font-family: inherit;
}
.promo-field input:focus { outline: none; border-color: var(--goldleaf); box-shadow: 0 0 0 2px rgba(201,169,106,0.15); }
.promo-msg { margin-top: 0.5rem; font-size: 0.78rem; padding: 0.5rem 0.7rem; border-radius: 6px; }
.promo-msg.promo-ok { background: rgba(34,197,94,0.12); border: 1px solid rgba(34,197,94,0.3); color: #22c55e; }
.promo-msg.promo-error { background: rgba(139,0,0,0.2); border: 1px solid rgba(139,0,0,0.4); color: #f0c8cf; }
.promo-msg.promo-checking { color: var(--silver); }

/* ============================================================
   VU RÉCEMMENT + RECHERCHE PRÉDICTIVE
   ============================================================ */
.recent-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(140px,1fr)); gap:1rem; }
.recent-mini { cursor:pointer; border-radius:12px; overflow:hidden; background:rgba(28,28,38,0.5); border:1px solid rgba(170,169,173,0.1); transition:all 0.3s; }
.recent-mini:hover { transform:translateY(-4px); border-color:rgba(201,169,106,0.5); box-shadow:0 10px 30px rgba(0,0,0,0.4); }
.recent-mini-img { height:100px; overflow:hidden; display:flex; align-items:center; justify-content:center; background:linear-gradient(180deg,var(--charcoal),var(--midnight)); }
.recent-mini-img img { width:100%; height:100%; object-fit:cover; }
.recent-mini-img .recent-ph { display:flex; align-items:center; justify-content:center; width:100%; height:100%; }
.recent-mini-name { padding:0.5rem 0.6rem 0.1rem; font-size:0.78rem; color:var(--silverlight); font-family:'Cormorant Garamond',serif; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.recent-mini-price { padding:0 0.6rem 0.5rem; font-size:0.7rem; color:var(--goldleaf); }

/* Search dropdown (predictive) */
.search-dropdown { position:absolute; top:100%; left:0; right:0; margin-top:0.5rem; background:rgba(20,20,28,0.97); backdrop-filter:blur(14px); border:1px solid rgba(201,169,106,0.3); border-radius:12px; box-shadow:0 20px 50px rgba(0,0,0,0.6); z-index:600; overflow:hidden; }
.sd-item { display:flex; gap:0.7rem; padding:0.6rem 0.8rem; cursor:pointer; transition:background 0.2s; border-bottom:1px solid rgba(170,169,173,0.06); }
.sd-item:hover { background:rgba(201,169,106,0.1); }
.sd-item:last-child { border-bottom:none; }
.sd-img { width:42px; height:42px; border-radius:6px; overflow:hidden; background:var(--charcoal); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.sd-img img { width:100%; height:100%; object-fit:cover; }
.sd-img .sd-ph { color:var(--goldleaf); font-family:'Cormorant Garamond',serif; font-size:1rem; }
.sd-info { flex:1; min-width:0; display:flex; flex-direction:column; justify-content:center; }
.sd-name { font-size:0.82rem; color:var(--silverlight); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.sd-price { font-size:0.72rem; color:var(--goldleaf); }

@keyframes shake {
  0%,100% { transform: translateX(0); }
  25% { transform: translateX(-6px); }
  75% { transform: translateX(6px); }
}

/* --- Collection banners --- */
.collection-banner {
  position: relative;
  padding: 1.8rem 1.6rem;
  border-radius: 16px;
  background: linear-gradient(160deg, var(--graphite), var(--charcoal));
  border: 1px solid rgba(170,169,173,0.15);
  overflow: hidden;
  transition: border-color 0.4s ease, box-shadow 0.4s ease, transform 0.4s ease;
}
.collection-banner:hover {
  transform: translateY(-4px);
  border-color: rgba(201,169,106,0.5);
  box-shadow: 0 14px 40px rgba(0,0,0,0.5), 0 0 22px rgba(201,169,106,0.18);
}
/* Collection-specific border colors are now inline (from DB accent_color) */
.coll-tag {
  display: inline-block;
  font-size: 0.6rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--silver);
  margin-bottom: 0.6rem;
}

/* --- Product card --- */
.product-card {
  position: relative;
  display: flex;
  flex-direction: column;
  border-radius: 16px;
  background: linear-gradient(160deg, var(--graphite), var(--charcoal));
  border: 1px solid rgba(212,211,216,0.25);   /* unified silver border */
  overflow: hidden;
  transition: border-color 0.4s ease, box-shadow 0.4s ease, transform 0.4s ease;
}
.product-card:hover {
  transform: translateY(-6px);
  border-color: rgba(212,211,216,0.6);
  box-shadow: 0 20px 50px rgba(0,0,0,0.5), 0 0 26px rgba(212,211,216,0.15);
}
.product-card-flagship {
  border-color: rgba(212,211,216,0.4);
  background: linear-gradient(160deg, #1f1c14, var(--charcoal));
}
.product-card-flagship:hover {
  border-color: rgba(201,169,106,0.8);
  box-shadow: 0 20px 50px rgba(0,0,0,0.5), 0 0 30px rgba(201,169,106,0.25);
}

/* Favorite heart */
.product-fav {
  position: absolute;
  top: 0.7rem; right: 0.7rem;
  z-index: 5;
  width: 34px; height: 34px;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  background: rgba(10,10,15,0.6);
  border: 1px solid rgba(170,169,173,0.25);
  color: var(--silver);
  font-size: 1rem;
  cursor: pointer;
  transition: all 0.3s;
  user-select: none;
}
.product-fav:hover { color: var(--crimsonGlow); border-color: var(--crimsonGlow); }
.product-fav.is-fav { color: var(--crimsonGlow); border-color: var(--crimsonGlow); }

/* Product visual placeholder area */
.product-visual {
  height: 180px;
  display: flex; align-items: center; justify-content: center;
  position: relative;
  overflow: hidden;
  background:
    radial-gradient(ellipse at center, rgba(47,44,121,0.18), transparent 65%),
    linear-gradient(180deg, var(--charcoal), var(--midnight));
  border-bottom: 1px solid rgba(170,169,173,0.1);
}
.product-visual::after {
  content: '';
  position: absolute; inset: 0;
  background-image:
    linear-gradient(rgba(170,169,173,0.04) 1px, transparent 1px),
    linear-gradient(90deg, rgba(170,169,173,0.04) 1px, transparent 1px);
  background-size: 30px 30px;
  -webkit-mask-image: radial-gradient(ellipse at center, black 20%, transparent 75%);
  mask-image: radial-gradient(ellipse at center, black 20%, transparent 75%);
}

/* --- Dice visual --- */
.pv-die {
  position: relative;
  z-index: 2;
  width: 56px; height: 56px;
  border-radius: 12px;
  background: linear-gradient(145deg, #f4f3f5, #c9c8cc);
  color: var(--midnight);
  display: flex; align-items: center; justify-content: center;
  font-size: 1.8rem;
  font-weight: 700;
  box-shadow: 0 8px 22px rgba(0,0,0,0.5), inset 0 -3px 6px rgba(0,0,0,0.15);
  transform: rotate(-12deg);
  margin-right: -10px;
}
.pv-die-2 {
  background: linear-gradient(145deg, #e8d9b8, var(--goldleaf));
  transform: rotate(10deg);
  margin-right: 0;
}
.pv-dice-vg .pv-die { background: linear-gradient(145deg, #f0c8cf, var(--crimsonGlow)); color: #fff; }

/* --- Cards visual --- */
.pv-card-deck {
  position: relative;
  z-index: 2;
  font-family: 'Cormorant Garamond', serif;
  font-size: 2.4rem;
  color: var(--silverlight);
  display: flex; align-items: center; justify-content: center;
  width: 90px; height: 126px;
  border-radius: 10px;
  background: linear-gradient(145deg, var(--graphite), var(--midnight));
  border: 1px solid rgba(201,169,106,0.5);
  box-shadow:
    -10px 10px 0 -4px rgba(201,169,106,0.4),
    -18px 14px 0 -8px rgba(170,169,173,0.3),
    0 10px 26px rgba(0,0,0,0.5);
}
.pv-cards-vg .pv-card-deck { color: #f0c8cf; border-color: rgba(196,30,58,0.5);
  box-shadow: -10px 10px 0 -4px rgba(196,30,58,0.4), -18px 14px 0 -8px rgba(170,169,173,0.3), 0 10px 26px rgba(0,0,0,0.5); }
.pv-cards-cr .pv-card-deck { color: #cfe0f0; border-color: rgba(106,143,184,0.5);
  box-shadow: -10px 10px 0 -4px rgba(106,143,184,0.4), -18px 14px 0 -8px rgba(170,169,173,0.3), 0 10px 26px rgba(0,0,0,0.5); }
.pv-limited {
  position: absolute;
  bottom: 14px; right: 18px;
  z-index: 3;
  font-size: 0.55rem;
  letter-spacing: 0.2em;
  color: var(--goldleaf);
  background: rgba(10,10,15,0.7);
  padding: 2px 6px;
  border-radius: 4px;
}

/* --- Chip visual --- */
.pv-chip-disc {
  position: relative;
  z-index: 2;
  width: 80px; height: 80px;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-family: 'Cormorant Garamond', serif;
  font-weight: 700;
  font-size: 0.9rem;
  color: #fff;
  background:
    radial-gradient(circle, var(--crimsonGlow) 0 35%, var(--midnight) 35% 45%, var(--crimsonGlow) 45% 55%, var(--midnight) 55% 65%, var(--crimsonGlow) 65% 100%);
  box-shadow: 0 8px 22px rgba(0,0,0,0.5), inset 0 0 12px rgba(0,0,0,0.3);
  border: 3px dashed rgba(255,255,255,0.3);
}
.pv-chip-disc span {
  width: 38px; height: 38px;
  border-radius: 50%;
  background: var(--midnight);
  display: flex; align-items: center; justify-content: center;
  color: var(--silverlight);
}
.pv-chip-2 {
  background: radial-gradient(circle, var(--goldleaf) 0 35%, var(--midnight) 35% 45%, var(--goldleaf) 45% 55%, var(--midnight) 55% 65%, var(--goldleaf) 65% 100%);
  margin-left: -28px;
  transform: translateY(14px);
}
.pv-chip-stack .pv-chip-disc { margin-right: -18px; }
.pv-chip-custom .pv-chip-disc, .pv-btn .pv-chip-disc {
  background: radial-gradient(circle, var(--silver) 0 35%, var(--midnight) 35% 45%, var(--silver) 45% 55%, var(--midnight) 55% 65%, var(--silver) 65% 100%);
}
.pv-btn .pv-chip-disc { border-color: var(--goldleaf); }
.pv-btn .pv-chip-disc span { color: var(--goldleaf); }

/* --- Mat visual --- */
.pv-mat {
  position: relative;
}
.pv-mat-ace {
  position: relative;
  z-index: 2;
  font-family: 'Cormorant Garamond', serif;
  font-size: 2rem;
  color: var(--goldleaf);
  text-shadow: 0 2px 12px rgba(0,0,0,0.6);
}
.pv-mat-label {
  position: absolute;
  bottom: 16px; left: 50%;
  transform: translateX(-50%);
  z-index: 2;
  font-size: 0.6rem;
  letter-spacing: 0.2em;
  color: var(--silver);
  text-transform: uppercase;
  background: rgba(10,10,15,0.6);
  padding: 2px 8px;
  border-radius: 4px;
}
.pv-mat-oval { background:
  radial-gradient(ellipse 70% 50% at center, rgba(196,30,58,0.25), transparent 70%),
  radial-gradient(ellipse at center, rgba(47,44,121,0.18), transparent 65%),
  linear-gradient(180deg, var(--charcoal), var(--midnight)); }
.pv-mat-custom { background:
  radial-gradient(ellipse at center, rgba(106,143,184,0.22), transparent 65%),
  linear-gradient(180deg, var(--charcoal), var(--midnight)); }

/* --- Sabot visual --- */
.pv-sabot-body {
  position: relative;
  z-index: 2;
  display: flex; align-items: center; justify-content: center;
  width: 110px; height: 60px;
  border-radius: 8px 8px 22px 22px;
  background: linear-gradient(160deg, #3d2817, #1a1208);
  color: var(--goldleaf);
  font-family: 'Cormorant Garamond', serif;
  font-size: 1.4rem;
  border: 1px solid rgba(201,169,106,0.4);
  box-shadow: 0 10px 26px rgba(0,0,0,0.5), inset 0 -4px 8px rgba(0,0,0,0.4);
}

/* --- Case visual --- */
.pv-case-ace {
  position: relative;
  z-index: 2;
  display: flex; align-items: center; justify-content: center;
  width: 120px; height: 80px;
  border-radius: 10px;
  background: linear-gradient(145deg, #2a2a36, #0e0e14);
  border: 2px solid var(--goldleaf);
  color: var(--goldleaf);
  font-family: 'Cormorant Garamond', serif;
  font-size: 1.6rem;
  box-shadow: 0 10px 26px rgba(0,0,0,0.5), inset 0 0 14px rgba(201,169,106,0.15);
}

/* --- Apparel visual --- */
.pv-apparel-ace {
  position: relative;
  z-index: 2;
  display: flex; align-items: center; justify-content: center;
  width: 90px; height: 90px;
  border-radius: 50%;
  background: linear-gradient(145deg, var(--graphite), var(--midnight));
  border: 1px solid rgba(201,169,106,0.4);
  color: var(--goldleaf);
  font-family: 'Cormorant Garamond', serif;
  font-size: 1.4rem;
  box-shadow: 0 8px 22px rgba(0,0,0,0.5);
}
.pv-cap .pv-apparel-ace { border-radius: 50% 50% 8px 8px; }

/* --- Mug visual --- */
.pv-mug-ace {
  position: relative;
  z-index: 2;
  display: flex; align-items: center; justify-content: center;
  width: 76px; height: 86px;
  border-radius: 10px 10px 22px 22px;
  background: linear-gradient(145deg, #1c1c26, var(--midnight));
  border: 1px solid rgba(201,169,106,0.4);
  color: var(--goldleaf);
  font-family: 'Cormorant Garamond', serif;
  font-size: 1.2rem;
  box-shadow: 0 10px 22px rgba(0,0,0,0.5);
}
.pv-mug-ace::after {
  content: '';
  position: absolute;
  right: -16px; top: 18px;
  width: 16px; height: 40px;
  border: 3px solid var(--silver);
  border-left: none;
  border-radius: 0 14px 14px 0;
}

/* --- Bundle visual --- */
.pv-bundle {
  position: relative;
}
.pv-bundle-tag {
  position: absolute;
  bottom: 16px; left: 50%;
  transform: translateX(-50%);
  z-index: 2;
  font-size: 0.55rem;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  color: var(--midnight);
  background: var(--goldleaf);
  padding: 3px 10px;
  border-radius: 999px;
  font-weight: 600;
}

/* --- Product body --- */
.product-body {
  padding: 1.2rem 1.3rem 1.3rem;
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
}
.product-coll {
  font-size: 0.58rem;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  font-weight: 600;
  padding: 2px 8px;
  border-radius: 999px;
}
.product-coll-mc { color: var(--goldleaf); border: 1px solid rgba(201,169,106,0.4); }
.product-coll-vg { color: var(--crimsonGlow); border: 1px solid rgba(196,30,58,0.4); }
.product-coll-cr { color: #8fb8d8; border: 1px solid rgba(143,184,216,0.4); }
.product-coll-all { color: var(--midnight); background: var(--goldleaf); border: 1px solid var(--goldleaf); }
.product-cat {
  font-size: 0.58rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--silver);
}
.product-desc {
  font-size: 0.82rem;
  color: rgba(212,211,216,0.6);
  line-height: 1.5;
  margin: 0.5rem 0 1rem;
  flex: 1 1 auto;
}
.product-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  flex-wrap: wrap;
  border-top: 1px solid rgba(170,169,173,0.1);
  padding-top: 0.9rem;
}
.product-footer strong {
  font-family: 'Cormorant Garamond', serif;
  font-size: 1.4rem;
  color: var(--silverlight);
}
.product-price {
  font-size: 0.62rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--silver);
}
.product-cta {
  font-size: 0.68rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--midnight);
  background: linear-gradient(110deg, var(--silver), var(--silverlight));
  border: none;
  border-radius: 999px;
  padding: 0.5rem 1.1rem;
  cursor: pointer;
  transition: all 0.3s;
}
.product-cta:hover {
  box-shadow: 0 6px 18px rgba(212,211,216,0.4);
  transform: translateY(-1px);
}

/* --- Guarantees --- */
.guarantee-ico {
  font-size: 2rem;
  color: var(--silverlight);
  text-shadow: 0 0 16px rgba(212,211,216,0.2);
}

/* --- Product modal --- */
.shop-modal {
  position: fixed;
  inset: 0;
  z-index: 2000;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 1rem;
}
.shop-modal.open { display: flex; }
.shop-modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(5,5,8,0.8);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}
.shop-modal-box {
  position: relative;
  z-index: 2;
  width: 100%;
  max-width: 520px;
  max-height: 90vh;
  overflow-y: auto;
  padding: 2.2rem 2rem;
  animation: modalIn 0.35s cubic-bezier(0.2,0.7,0.3,1);
}
@keyframes modalIn {
  from { opacity: 0; transform: translateY(20px) scale(0.96); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
.shop-modal-close {
  position: absolute;
  top: 0.8rem; right: 1rem;
  background: none;
  border: none;
  color: var(--silverlight);
  font-size: 2rem;
  line-height: 1;
  cursor: pointer;
  transition: color 0.3s;
}
.shop-modal-close:hover { color: #fff; }

/* ===== Product detail panel (inside modal, for priced products) ===== */
.modal-product-detail { padding: 0.5rem 0; }
.modal-qty-input {
  width: 60px;
  background: rgba(10,10,15,0.6);
  border: 1px solid rgba(170,169,173,0.25);
  border-radius: 8px;
  padding: 0.4rem 0.6rem;
  color: #d4d3d8;
  font-family: 'Jost', sans-serif;
  font-size: 0.95rem;
  text-align: center;
}
.modal-qty-input:focus {
  outline: none;
  border-color: #c9a96a;
  box-shadow: 0 0 0 3px rgba(201,169,106,0.15);
}
.product-feature-tag {
  display: inline-block;
  background: rgba(201,169,106,0.12);
  border: 1px solid rgba(201,169,106,0.25);
  color: #c9a96a;
  font-size: 0.7rem;
  letter-spacing: 0.05em;
  padding: 0.2rem 0.6rem;
  border-radius: 999px;
  margin: 0 0.3rem 0.4rem 0;
  text-transform: uppercase;
}
.price-promo-badge {
  display: inline-block;
  background: rgba(196,30,58,0.2);
  border: 1px solid rgba(196,30,58,0.4);
  color: #ff6b85;
  font-size: 0.65rem;
  padding: 0.1rem 0.5rem;
  border-radius: 999px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

/* Product card hidden by filter */
.product-card.filtered-out { display: none; }

/* --- Responsive boutique --- */
@media (max-width: 640px) {
  .product-visual { height: 130px; }
  .shop-modal-box { padding: 1.6rem 1.2rem; }
  /* Compactar cards en cuadrícula móvil 2 columnas */
  .product-body { padding: 0.7rem 0.7rem 0.8rem; }
  .product-body h3 { font-size: 0.92rem!important; line-height: 1.15; }
  .product-desc {
    font-size: 0.7rem;
    line-height: 1.35;
    margin: 0.3rem 0 0.5rem;
    /* Limitar a 2 líneas */
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }
  .product-coll, .product-cat { font-size: 0.5rem; padding: 1px 5px; }
  .product-footer { padding-top: 0.6rem; gap: 0.3rem; flex-wrap: wrap; }
  .product-footer strong { font-size: 1.05rem; }
  .product-price { font-size: 0.52rem; }
  .product-cta { font-size: 0.55rem; padding: 0.4rem 0.7rem; }
  .product-add-cart { width: 100%; height: auto; padding: 0.5rem 0.7rem; font-size: 0.6rem; }
  .product-fav { width: 28px; height: 28px; font-size: 0.85rem; top: 0.4rem; right: 0.4rem; }
  .product-actions { gap: 0.3rem; }
  .stock-badge { font-size: 0.5rem; padding: 2px 6px; }
  .photo-count { font-size: 0.5rem; padding: 2px 6px; bottom: 0.4rem; right: 0.4rem; }
}
@media (max-width: 380px) {
  /* Móviles muy pequeños: seguir en 2 columnas pero más compacto */
  .product-body h3 { font-size: 0.82rem!important; }
  .product-desc { -webkit-line-clamp: 1; }
  .product-cta { padding: 0.35rem 0.5rem; }
}

/* ============================================================
   PRODUCT PHOTOS (real images from DB)
   ============================================================ */
.product-visual-photo {
  background: linear-gradient(180deg, var(--charcoal), var(--midnight));
}
.product-photo {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.6s cubic-bezier(0.2,0.7,0.3,1);
}
.product-card:hover .product-photo {
  transform: scale(1.06);
}
.photo-count {
  position: absolute;
  bottom: 0.6rem; right: 0.6rem;
  z-index: 5;
  font-size: 0.6rem;
  letter-spacing: 0.08em;
  color: var(--silverlight);
  background: rgba(10,10,15,0.75);
  backdrop-filter: blur(6px);
  padding: 3px 8px;
  border-radius: 999px;
  border: 1px solid rgba(201,169,106,0.3);
}

/* --- Stock badges on card --- */
.stock-on-photo { position: absolute; top: 0.6rem; left: 0.6rem; z-index: 5; }
.stock-badge {
  display: inline-block;
  font-size: 0.58rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  font-weight: 700;
  padding: 3px 9px;
  border-radius: 999px;
  backdrop-filter: blur(6px);
}
.stock-low {
  background: rgba(245,158,11,0.9);
  color: #1a1208;
  box-shadow: 0 2px 10px rgba(245,158,11,0.4);
  animation: stockPulse 2s ease-in-out infinite;
}
.stock-out {
  background: rgba(139,0,0,0.9);
  color: #fff;
}
@keyframes stockPulse {
  0%,100% { transform: scale(1); }
  50% { transform: scale(1.06); }
}

/* --- Price promo (strikethrough + badge) --- */
.price-strike {
  font-family: 'Cormorant Garamond', serif;
  font-size: 1rem;
  color: rgba(212,211,216,0.4);
  text-decoration: line-through;
  text-decoration-color: var(--crimsonGlow);
  text-decoration-thickness: 2px;
}
.price-promo-badge {
  font-size: 0.5rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  font-weight: 700;
  color: #1a1208;
  background: var(--goldleaf);
  padding: 2px 6px;
  border-radius: 4px;
  vertical-align: middle;
  margin-left: 0.2rem;
}

/* --- Modal gallery --- */
.modal-gallery {
  margin-bottom: 1.5rem;
}
.mg-main {
  width: 100%;
  aspect-ratio: 4 / 3;
  border-radius: 12px;
  overflow: hidden;
  background: var(--charcoal);
  border: 1px solid rgba(170,169,173,0.15);
}
.mg-main img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
}
.mg-thumbs {
  display: flex;
  gap: 0.5rem;
  margin-top: 0.6rem;
  overflow-x: auto;
  padding-bottom: 0.3rem;
  scrollbar-width: thin;
}
.mg-thumb {
  flex: 0 0 60px;
  width: 60px; height: 60px;
  border-radius: 8px;
  overflow: hidden;
  border: 2px solid transparent;
  background: var(--charcoal);
  cursor: pointer;
  padding: 0;
  transition: border-color 0.2s, transform 0.2s;
}
.mg-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.mg-thumb:hover { transform: translateY(-2px); }
.mg-thumb.active { border-color: var(--goldleaf); box-shadow: 0 0 10px rgba(201,169,106,0.4); }
.mg-thumbs::-webkit-scrollbar { height: 5px; }
.mg-thumbs::-webkit-scrollbar-thumb { background: rgba(140,130,220,0.5); border-radius: 5px; }

/* ============================================================
   LIGHTBOX - full-screen photo viewer (overlay CSS, z-index 6000 > modal)
   ============================================================ */
.lightbox-overlay {
  position: fixed;
  inset: 0;
  z-index: 6000;
  background: rgba(5,5,8,0.97);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  display: none;
  align-items: center;
  justify-content: center;
}
.lightbox-overlay.open { display: flex; }
.lb-img {
  max-width: 90vw;
  max-height: 85vh;
  object-fit: contain;
  border-radius: 8px;
  box-shadow: 0 20px 80px rgba(0,0,0,0.8);
  user-select: none;
  animation: lbIn 0.3s ease;
}
@keyframes lbIn { from { opacity: 0; transform: scale(0.96); } to { opacity: 1; transform: scale(1); } }
.lb-close, .lb-prev, .lb-next {
  position: absolute;
  background: rgba(28,28,38,0.7);
  backdrop-filter: blur(8px);
  border: 1px solid rgba(201,169,106,0.4);
  color: var(--silverlight);
  border-radius: 50%;
  width: 52px; height: 52px;
  display: flex; align-items: center; justify-content: center;
  font-size: 2rem;
  cursor: pointer;
  z-index: 3001;
  transition: all 0.25s;
  user-select: none;
}
.lb-close:hover, .lb-prev:hover, .lb-next:hover {
  background: rgba(201,169,106,0.85);
  color: var(--midnight);
  transform: scale(1.1);
}
.lb-close { top: 1.5rem; right: 1.5rem; }
.lb-prev  { left: 1.5rem; top: 50%; transform: translateY(-50%); font-size: 2.4rem; }
.lb-next  { right: 1.5rem; top: 50%; transform: translateY(-50%); font-size: 2.4rem; }
.lb-prev:hover, .lb-next:hover { transform: translateY(-50%) scale(1.1); }
.lb-counter {
  position: absolute;
  top: 1.8rem; left: 50%;
  transform: translateX(-50%);
  color: var(--silver);
  font-size: 0.8rem;
  letter-spacing: 0.15em;
  background: rgba(28,28,38,0.7);
  padding: 0.4rem 1rem;
  border-radius: 999px;
  border: 1px solid rgba(201,169,106,0.3);
  z-index: 3001;
}
@media (max-width: 640px) {
  .lb-close { top: 0.8rem; right: 0.8rem; width: 44px; height: 44px; }
  .lb-prev, .lb-next { width: 44px; height: 44px; font-size: 1.8rem; }
  .lb-prev { left: 0.5rem; }
  .lb-next { right: 0.5rem; }
}

/* --- "Voir plus" load-more button --- */
.load-more-btn {
  display: flex;
  margin: 2.5rem auto 0;
  align-items: center;
  justify-content: center;
}
.load-more-btn:hover {
  border-color: var(--goldleaf);
  color: var(--goldleaf);
  box-shadow: 0 0 18px rgba(201,169,106,0.25);
}

/* ============================================================
   BOUTIQUE ENHANCEMENTS - Animations, Drawer, Cursor, a11y
   ============================================================ */

/* --- Visually hidden (sr-only) utility --- */
.sr-only {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  white-space: nowrap;
  border: 0;
}

/* --- Skip link (a11y) --- */
.skip-link {
  position: absolute;
  inset-inline-start: -999px;
  top: 0;
  z-index: 9999;
  background: var(--midnight);
  color: var(--silverlight);
  padding: 1rem 1.5rem;
  border-radius: 0 0 12px 0;
  border: 1px solid var(--goldleaf);
  text-decoration: none;
  font-size: 0.85rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}
.skip-link:focus {
  inset-inline-start: 0;
}

/* --- Global focus-visible (a11y) --- */
*:focus-visible {
  outline: 2px solid var(--goldleaf);
  outline-offset: 2px;
  border-radius: 4px;
}
@media (forced-colors: active) {
  *:focus-visible { outline: 3px solid LinkText; }
}

/* --- Scroll progress bar --- */
.scroll-progress {
  position: fixed;
  top: 0; left: 0;
  width: 0%;
  height: 3px;
  background: linear-gradient(90deg, rgba(140,130,220,0.8) 0%, rgba(90,80,180,0.9) 50%, rgba(47,44,121,1) 100%);
  z-index: 9000;
  transition: width 0.1s linear;
  box-shadow: 0 0 8px rgba(201,169,106,0.6);
}

/* --- Cursor spade (REPLACES native cursor, desktop only) ---
   Scoped to body.cursor-spade-active - only the page that contains
   the #cursorHalo element hides the native cursor. Other pages keep it. */
@media (hover: hover) and (pointer: fine) {
  body.cursor-spade-active,
  body.cursor-spade-active a,
  body.cursor-spade-active button,
  body.cursor-spade-active input,
  body.cursor-spade-active select,
  body.cursor-spade-active textarea,
  body.cursor-spade-active label,
  body.cursor-spade-active [role="button"],
  body.cursor-spade-active .product-card,
  body.cursor-spade-active .product-fav,
  body.cursor-spade-active .fav-trigger,
  body.cursor-spade-active .lang-btn,
  body.cursor-spade-active .nav-link,
  body.cursor-spade-active .btn-shimmer,
  body.cursor-spade-active .btn-ghost,
  body.cursor-spade-active .product-cta { cursor: none; }
}
.cursor-spade {
  position: fixed;
  top: 0; left: 0;
  width: 0; height: 0;
  pointer-events: none;
  z-index: 9998;
  opacity: 0;
  transition: opacity 0.3s;
}
.cursor-spade.active { opacity: 1; }
.cursor-spade .spade-inner {
  position: absolute;
  display: block;
  font-family: 'Cormorant Garamond', serif;
  font-size: 2.2rem;
  line-height: 1;
  color: var(--goldleaf);
  /* Queremos que la PUNTA SUPERIOR de la pica coincida con el cursor.
     El símbolo ♤ es alto: con font-size 2.2rem mide aprox 35px de alto.
     La punta superior está arriba del todo. Queremos que ese punto = (0,0).
     Sin rotación: la punta superior queda directamente sobre el cursor. */
  transform: translate(-17px, 5px);
  text-shadow:
    0 0 6px rgba(201,169,106,0.8),
    0 0 18px rgba(201,169,106,0.45),
    0 2px 4px rgba(0,0,0,0.6);
  transition: color 0.2s, text-shadow 0.2s;
}
/* Grow + tint on interactive hover */
.cursor-spade.over-interactive .spade-inner {
  transform: translate(-17px, 5px) scale(1.4);
  color: var(--crimsonGlow);
  text-shadow:
    0 0 8px rgba(47,44,121,0.9),
    0 0 24px rgba(47,44,121,0.5),
    0 2px 4px rgba(0,0,0,0.6);
}
/* Click state */
.cursor-spade.clicking .spade-inner {
  transform: translate(-17px, 5px) scale(0.8);
}
@media (hover: none), (pointer: coarse) {
  .cursor-spade { display: none; }
  body, a, button, input, select, textarea { cursor: auto; }
}
@media (prefers-reduced-motion: reduce) {
  .cursor-spade { display: none!important; }
  body, a, button, input, select, textarea { cursor: auto; }
}

/* --- Page fade transition --- */
.page-fade {
  position: fixed;
  inset: 0;
  background: var(--midnight);
  z-index: 9999;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.35s ease;
}
.page-fade.out { opacity: 1; }
body.is-fading { opacity: 0; transition: opacity 0.3s ease; }

/* ============================================================
   PRODUCT CARD - Tilt 3D + Shine sweep + Stagger reveal
   ============================================================ */
.product-card {
  transform-style: preserve-3d;
  will-change: transform;
}
.product-card .product-body,
.product-card .product-visual,
.product-card .product-fav {
  transform: translateZ(40px);
}

/* Shine sweep layer */
.product-card .shine-sweep {
  position: absolute;
  inset: 0;
  background: linear-gradient(105deg, transparent 40%, rgba(201,169,106,0.18) 48%, rgba(255,255,255,0.25) 50%, rgba(201,169,106,0.18) 52%, transparent 60%);
  opacity: 0;
  transition: opacity 0.3s;
  pointer-events: none;
  z-index: 4;
  border-radius: 16px;
}
.product-card:hover .shine-sweep { opacity: 1; animation: shineSweep 0.9s ease; }
@keyframes shineSweep {
  0% { transform: translateX(-100%); }
  100% { transform: translateX(100%); }
}

/* Tilt active state */
.product-card.tilting {
  transition: none;
  box-shadow: 0 30px 60px rgba(0,0,0,0.6), 0 0 30px rgba(47,44,121,0.25);
}

/* Stagger reveal on grid */
.product-card.stagger-in {
  opacity: 0;
  transform: translateY(30px);
  animation: staggerIn 0.6s cubic-bezier(0.2,0.7,0.3,1) forwards;
  animation-delay: var(--stagger, 0s);
}
@keyframes staggerIn {
  to { opacity: 1; transform: translateY(0); }
}

/* Glow on product CTA hover */
.product-cta:hover {
  box-shadow: 0 6px 20px rgba(212,211,216,0.5), 0 0 16px rgba(201,169,106,0.4);
  background: linear-gradient(110deg, var(--silverlight), #fff);
}

/* --- Ripple effect (buttons) --- */
.ripple {
  position: relative;
  overflow: hidden;
}
.ripple::after {
  content: '';
  position: absolute;
  border-radius: 50%;
  background: rgba(255,255,255,0.4);
  width: 8px; height: 8px;
  top: 50%; left: 50%;
  opacity: 0;
  transform: translate(-50%,-50%) scale(0);
  pointer-events: none;
}
.ripple.rippling::after {
  animation: ripple 0.6s ease-out;
}
@keyframes ripple {
  0% { opacity: 0.5; transform: translate(-50%,-50%) scale(0); }
  100% { opacity: 0; transform: translate(-50%,-50%) scale(40); }
}

/* ============================================================
   CONFETTI - burst on favorite add
   ============================================================ */
.confetti-piece {
  position: fixed;
  width: 8px; height: 8px;
  z-index: 9990;
  pointer-events: none;
  opacity: 1;
  animation: confettiFall 2s cubic-bezier(0.2,0.6,0.4,1) forwards;
}
/* Card-suit confetti variant: renders ♠♥♦♣ glyphs instead of dots. */
.confetti-suit {
  width: auto; height: auto;
  font-size: 1.1rem;
  font-weight: 700;
  line-height: 1;
  background: transparent!important;
  text-shadow: 0 1px 3px rgba(0,0,0,0.4);
}
@keyframes confettiFall {
  0% { opacity: 1; transform: translate(0,0) rotate(0deg); }
  100% { opacity: 0; transform: translate(var(--dx), var(--dy)) rotate(720deg); }
}

/* ============================================================
   FAVORITES TRIGGER + BADGE
   ============================================================ */
.fav-trigger {
  position: relative;
  width: 40px; height: 40px;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  background: rgba(10,10,15,0.5);
  border: 1px solid rgba(170,169,173,0.25);
  color: var(--silverlight);
  font-size: 1.1rem;
  cursor: pointer;
  transition: all 0.3s;
}
.fav-trigger:hover {
  border-color: var(--crimsonGlow);
  color: var(--crimsonGlow);
  transform: translateY(-2px);
}
.fav-badge {
  position: absolute;
  top: -4px; right: -4px;
  min-width: 18px; height: 18px;
  padding: 0 4px;
  border-radius: 999px;
  background: var(--crimsonGlow);
  color: #fff;
  font-size: 0.6rem;
  font-weight: 700;
  display: flex; align-items: center; justify-content: center;
  opacity: 0;
  transform: scale(0);
  transition: all 0.3s cubic-bezier(0.2,0.7,0.3,1);
}
.fav-badge.visible {
  opacity: 1;
  transform: scale(1);
}
.fav-badge.pop {
  animation: badgePop 0.4s ease;
}
@keyframes badgePop {
  0%,100% { transform: scale(1); }
  50% { transform: scale(1.4); }
}

/* ============================================================
   FAVORITES DRAWER
   ============================================================ */
.fav-drawer {
  position: fixed;
  inset: 0;
  z-index: 2500;
  visibility: hidden;
}
.fav-drawer.open { visibility: visible; }
.fav-drawer-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(5,5,8,0.75);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  opacity: 0;
  transition: opacity 0.35s ease;
}
.fav-drawer.open .fav-drawer-backdrop { opacity: 1; }
.fav-drawer-panel {
  position: absolute;
  top: 0; right: 0; bottom: 0;
  width: min(380px, 90vw);
  border-radius: 0;
  display: flex;
  flex-direction: column;
  transform: translateX(100%);
  transition: transform 0.4s cubic-bezier(0.2,0.7,0.3,1);
  border-left: 1px solid rgba(201,169,106,0.3);
}
.fav-drawer.open .fav-drawer-panel { transform: translateX(0); }
.fav-drawer-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1.5rem 1.6rem;
  border-bottom: 1px solid rgba(170,169,173,0.15);
}
.fav-drawer-close {
  background: none;
  border: none;
  color: var(--silverlight);
  font-size: 2rem;
  line-height: 1;
  cursor: pointer;
  transition: color 0.3s;
}
.fav-drawer-close:hover { color: #fff; }
.fav-drawer-body {
  flex: 1 1 auto;
  overflow-y: auto;
  padding: 1.2rem 1.4rem;
  display: flex;
  flex-direction: column;
  gap: 0.8rem;
}
.fav-empty {
  text-align: center;
  color: var(--silver);
  font-style: italic;
  padding: 3rem 1rem;
  font-size: 0.9rem;
}
.fav-item {
  display: flex;
  align-items: center;
  gap: 0.9rem;
  padding: 0.9rem;
  border-radius: 12px;
  background: rgba(28,28,38,0.6);
  border: 1px solid rgba(170,169,173,0.12);
  animation: favItemIn 0.3s ease;
}
@keyframes favItemIn {
  from { opacity: 0; transform: translateX(20px); }
  to { opacity: 1; transform: translateX(0); }
}
.fav-item-mini {
  width: 44px; height: 44px;
  border-radius: 8px;
  background: linear-gradient(145deg, var(--graphite), var(--midnight));
  border: 1px solid rgba(201,169,106,0.3);
  display: flex; align-items: center; justify-content: center;
  font-family: 'Cormorant Garamond', serif;
  font-size: 0.8rem;
  color: var(--goldleaf);
  flex-shrink: 0;
}
.fav-item-info { flex: 1 1 auto; min-width: 0; }
.fav-item-info h4 {
  font-family: 'Cormorant Garamond', serif;
  font-size: 1rem;
  color: var(--silverlight);
  margin: 0 0 0.15rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.fav-item-info .fav-item-ref {
  font-size: 0.62rem;
  letter-spacing: 0.1em;
  color: var(--silver);
  text-transform: uppercase;
}
.fav-item-remove {
  background: none;
  border: none;
  color: var(--silver);
  font-size: 1.1rem;
  cursor: pointer;
  padding: 0.3rem;
  transition: color 0.3s;
  flex-shrink: 0;
}
.fav-item-remove:hover { color: var(--crimsonGlow); }
.fav-drawer-footer {
  padding: 1.2rem 1.4rem;
  border-top: 1px solid rgba(170,169,173,0.15);
}
.fav-drawer-footer button:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

/* ============================================================
   PARALLAX HERO (enhanced multi-layer)
   ============================================================ */
.hero-bg, .hero-overlay { will-change: transform; }
.float-card[data-depth], .float-dice[data-depth], .float-chip[data-depth] {
  transition: transform 0.4s ease-out;
}

/* --- Native <dialog> modal styling (ELIMINADO - ahora overlay CSS puro) --- */
.shop-modal-overlay {
  position: fixed;
  inset: 0;
  z-index: 5000;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 1rem;
}
.shop-modal-overlay.open { display: flex; }
.shop-modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(5,5,8,0.85);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  z-index: 1;
}
.shop-modal-overlay .shop-modal-box {
  position: relative;
  z-index: 2;
  animation: modalIn 0.35s cubic-bezier(0.2,0.7,0.3,1);
}
.checkout-overlay { z-index: 7000; }
/* Fix: el checkout-box debe estar por encima del backdrop (z-index 1) */
.shop-modal-overlay .checkout-box {
  position: relative;
  z-index: 2;
}

/* --- scroll-margin for anchor offset (navbar) ---
   On the boutique, a sticky filter bar sits under the navbar (~88px +
   ~56px ≈ 160px), so sections must clear both when anchor-jumped. */
section[id], main[id] { scroll-margin-top: 90px; }
body.shop section[id], body.shop main[id] { scroll-margin-top: 160px; }
/* Ensure the collection section content paints ABOVE the promo banner
   during scroll so the title is never visually covered by the DEFILER
   animation. position:relative + z-index creates a stacking context. */
body.shop #collections { position: relative; z-index: 2; }

/* --- Responsive enhancements --- */
@media (max-width: 640px) {
  .fav-drawer-panel { width: 100vw; }
  .fav-item-mini { width: 38px; height: 38px; }
}

/* --- Reduced motion: disable new animations too --- */
@media (prefers-reduced-motion: reduce) {
  .cursor-halo, .scroll-progress { display: none!important; }
  .product-card.stagger-in { animation: none; opacity: 1; transform: none; }
  .product-card .shine-sweep { display: none; }
  .confetti-piece { display: none; }
  .fav-badge.pop { animation: none; }
  .fav-drawer-panel { transition: none; }
  .page-fade { display: none; }
}

/* ============================================================
   PROMOTIONAL BANNER - Style C: Card Carousel
   Replaces the old decorative marquee strip on boutique.html.
   Each offer is a distinct rounded card scrolling horizontally.
   ============================================================ */
.promo-strip {
  background: #0a0a0f;
  border-top: 1px solid #2a2a36;
  border-bottom: 1px solid #2a2a36;
  padding: 16px 0;
  overflow: hidden;
  white-space: nowrap;
  position: relative;
}
.promo-strip[hidden] { display: none; }
.promo-track {
  display: inline-flex;
  gap: 14px;
  /* L'animation est définie dynamiquement par le JS (promo-wave-*) car sa
     durée dépend du nombre de cartes. Le pause-on-hover est géré en JS
     (event listeners) car le style inline a une spécificité supérieure. */
}
@media (prefers-reduced-motion: reduce) {
  .promo-track { animation: none!important; transform: none!important; padding-left: 1rem; flex-wrap: wrap; white-space: normal; justify-content: center; opacity: 1!important; }
  .promo-strip { overflow-x: auto; }
}

.promo-card {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  background: linear-gradient(135deg, #1c1c26, #14141c);
  border: 1px solid rgba(201,169,106,0.25);
  border-radius: 10px;
  padding: 10px 16px;
  min-width: 240px;
  cursor: pointer;
  transition: transform 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease;
  text-decoration: none;
}
.promo-card[data-clickable="false"] { cursor: default; }
.promo-card:hover {
  transform: translateY(-3px);
  border-color: rgba(201,169,106,0.6);
  box-shadow: 0 8px 24px rgba(0,0,0,0.5), 0 0 18px rgba(201,169,106,0.2);
}
.promo-card .pc-icon { font-size: 1.4rem; flex-shrink: 0; }
.promo-card .pc-body { display: flex; flex-direction: column; }
.promo-card .pc-title {
  font-family: 'Cormorant Garamond', serif;
  color: #d4d3d8;
  font-size: 0.9rem;
  line-height: 1.1;
}
.promo-card .pc-sub { font-size: 0.72rem; color: #8b8b94; }
.promo-card .pc-sub .pc-old { text-decoration: line-through; color: #6b6b73; margin-right: 4px; }
.promo-card .pc-sub .pc-new { color: #c9a96a; font-weight: 600; }
.promo-card .pc-code-pill {
  background: #c9a96a; color: #0a0a0f; padding: 1px 7px;
  border-radius: 3px; font-size: 0.65rem; font-family: monospace; font-weight: 700;
  margin-right: 4px;
}
/* Countdown de scarcity - stimule la conversion (FOMO) */
.promo-card .pc-countdown {
  display: inline-block;
  margin-top: 4px;
  font-family: monospace;
  font-size: 0.68rem;
  font-weight: 700;
  color: #c9a96a;
  background: rgba(201,169,106,0.12);
  border: 1px solid rgba(201,169,106,0.3);
  border-radius: 4px;
  padding: 1px 6px;
  letter-spacing: 0.5px;
  white-space: nowrap;
}
/* Urgence: dernière heure → rouge + clignotement subtil */
.promo-card .pc-countdown.pc-countdown-urgent {
  color: #ff6b6b;
  background: rgba(255,75,75,0.15);
  border-color: rgba(255,75,75,0.4);
  animation: pc-blink 1s ease-in-out infinite;
}
.promo-card .pc-countdown.pc-countdown-expired {
  color: #6b6b73;
  background: rgba(107,107,115,0.1);
  border-color: rgba(107,107,115,0.3);
  animation: none;
}
@keyframes pc-blink {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.55; }
}
@media (prefers-reduced-motion: reduce) {
  .promo-card .pc-countdown.pc-countdown-urgent { animation: none; }
}

/* Toast notification for promo-code copy */
.pc-toast {
  position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%);
  background: #14141c; border: 1px solid #c9a96a; color: #d4d3d8;
  padding: 10px 20px; border-radius: 8px; font-size: 0.85rem; z-index: 9999;
  box-shadow: 0 8px 32px rgba(0,0,0,0.6); animation: pc-toast-in 0.3s ease;
}

/* ============================================================
   QUOTE REQUEST - Upload zone + thumbnails (sur devis products)
   ============================================================ */
.quote-upload-zone {
  border: 2px dashed rgba(201,169,106,0.4);
  border-radius: 12px;
  padding: 1.2rem;
  text-align: center;
  background: rgba(201,169,106,0.05);
  cursor: pointer;
  transition: all 0.25s;
}
.quote-upload-zone:hover {
  border-color: var(--goldleaf);
  background: rgba(201,169,106,0.1);
}
.quote-upload-zone.dragover {
  border-color: var(--goldleaf);
  background: rgba(201,169,106,0.15);
}
.quote-thumbs {
  display: flex;
  gap: 0.5rem;
  margin-top: 0.6rem;
  flex-wrap: wrap;
}
.quote-thumb {
  position: relative;
  width: 64px; height: 64px;
  border-radius: 8px;
  border: 1px solid rgba(201,169,106,0.3);
  overflow: hidden;
}
.quote-thumb img {
  width: 100%; height: 100%;
  object-fit: cover;
}
.quote-thumb .qt-remove {
  position: absolute; top: 2px; right: 2px;
  background: rgba(196,30,58,0.85);
  color: #fff; border: none; border-radius: 50%;
  width: 18px; height: 18px; font-size: 0.65rem;
  cursor: pointer; display: flex; align-items: center; justify-content: center;
  line-height: 1; font-family: 'Jost', sans-serif;
}
@keyframes pc-toast-in {
  from { opacity: 0; transform: translate(-50%, 10px); }
  to   { opacity: 1; transform: translate(-50%, 0); }
}

/* ============================================================
   CONCIERGE v2: Table selector cards + volume badge
   ============================================================ */
.wiz-tables-wrap { margin:8px 0; }
.wiz-table-card {
  display:inline-flex; align-items:center; justify-content:space-between;
  background:#1c1c26; border:1px solid rgba(201,169,106,0.3);
  border-radius:10px; padding:8px 14px; margin:4px; min-width:170px;
}
.wiz-table-card .wtc-label { font-family:Georgia,serif; color:#d4d3d8; font-size:0.85rem; }
.wiz-table-card .wtc-stock { font-size:0.7rem; color:#aaa9ad; margin-left:6px; font-style:italic; }
.wiz-table-card .wtc-qty { display:flex; align-items:center; gap:8px; }
.wiz-table-card .wtc-minus, .wiz-table-card .wtc-plus {
  background:#c9a96a; color:#0a0a0f; border:none; width:24px; height:24px;
  border-radius:5px; cursor:pointer; font-weight:700; font-size:0.9rem;
  transition:transform 0.1s;
}
.wiz-table-card .wtc-minus:hover, .wiz-table-card .wtc-plus:hover { transform:scale(1.1); }
.wiz-table-card .wtc-num { color:#c9a96a; font-family:monospace; font-size:1rem; min-width:20px; text-align:center; }
.wiz-tables-total {
  margin:8px 4px; padding:8px 12px; background:rgba(201,169,106,0.1);
  border-radius:6px; font-size:0.85rem; color:#d4d3d8;
  display:flex; flex-wrap:wrap; gap:8px; justify-content:space-between; align-items:center;
}
.wiz-tables-total .wtc-estim { color:#c9a96a; font-family:monospace; }
.wiz-tables-total .wtc-vol { color:#15803d; font-weight:600; font-size:0.75rem; }
.wtc-vol-hint { margin:4px; font-size:0.72rem; color:#c9a96a; font-style:italic; }
.wiz-tables-continue {
  display:block; width:calc(100% - 8px); margin:8px 4px; text-align:center;
  background:#c9a96a; color:#0a0a0f; border:none; border-radius:999px;
  padding:10px; font-weight:700; cursor:pointer; transition:opacity 0.2s;
  font-family:inherit; font-size:0.9rem;
}
.wiz-tables-continue:disabled { cursor:not-allowed; }
@media (prefers-reduced-motion: reduce) {
  .wiz-table-card .wtc-minus, .wiz-table-card .wtc-plus { transition:none; }
  .wiz-tables-continue { transition:none; }
}

/* ============================================================
   HERO SCENE - La Table Vive (Fase 1, solo index)
   Motor: js/hero-scene.js | Especificacion: docs/superpowers/specs/2026-08-16-hero-table-vive-design.md
   Scope bajo .hero-scene para no tocar la boutique.
   ============================================================ */
.hero-scene .float-card,
.hero-scene .float-chip,
.hero-scene .hero-die { animation: none; }
.hero-scene .float-card,
.hero-scene .hero-die {
  pointer-events: auto;
  cursor: pointer;
  will-change: transform;
}
.hero-scene .float-card { opacity: 0.72; }
.hero-scene .float-dice { display: none; }

/* Posiciones de las 5 cartas (10 J Q K A de picas) */
.hs-card-1 { top: 30%; left: 6%;  --base-rot: -14deg; }
.hs-card-2 { top: 62%; left: 12%; --base-rot: 7deg; }
.hs-card-3 { top: 16%; left: 46%; --base-rot: -3deg; }
.hs-card-4 { top: 26%; right: 10%; --base-rot: 12deg; }
.hs-card-5 { top: 58%; right: 6%; --base-rot: -8deg; }

/* Dados reales con pips (reemplazan a los unicode) */
.hero-die {
  touch-action: none;   /* dado agarrable en movil (sobrevive reversion mazo) */
  position: absolute;
  width: 54px; height: 54px;
  border-radius: 12px;
  background: linear-gradient(145deg, rgba(28,28,38,0.75), rgba(10,10,15,0.65));
  border: none;   /* sin borde: el filo dorado se leia como linea cortada al rotar (Alex 25/08) */
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: repeat(3, 1fr);
  padding: 7px; gap: 2px;
  opacity: 0.8;
  box-shadow: 0 10px 26px rgba(0,0,0,0.5);   /* inset violeta retirado: se leia como contorno (Alex 25/08) */
}
.hero-die .pip {
  border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, #f0e6d2, #c9a96a 70%);
  box-shadow: inset 0 -1px 2px rgba(0,0,0,0.35);
  visibility: hidden;
}
.hero-die[data-face="1"] .pip:nth-child(5),
.hero-die[data-face="2"] .pip:nth-child(1), .hero-die[data-face="2"] .pip:nth-child(9),
.hero-die[data-face="3"] .pip:nth-child(1), .hero-die[data-face="3"] .pip:nth-child(5), .hero-die[data-face="3"] .pip:nth-child(9),
.hero-die[data-face="4"] .pip:nth-child(1), .hero-die[data-face="4"] .pip:nth-child(3), .hero-die[data-face="4"] .pip:nth-child(7), .hero-die[data-face="4"] .pip:nth-child(9),
.hero-die[data-face="5"] .pip:nth-child(1), .hero-die[data-face="5"] .pip:nth-child(3), .hero-die[data-face="5"] .pip:nth-child(5), .hero-die[data-face="5"] .pip:nth-child(7), .hero-die[data-face="5"] .pip:nth-child(9),
.hero-die[data-face="6"] .pip:nth-child(1), .hero-die[data-face="6"] .pip:nth-child(3), .hero-die[data-face="6"] .pip:nth-child(4), .hero-die[data-face="6"] .pip:nth-child(6), .hero-die[data-face="6"] .pip:nth-child(7), .hero-die[data-face="6"] .pip:nth-child(9)
{ visibility: visible; }
.hs-die-1 { top: 70%; left: 20%; }
.hs-die-2 { top: 76%; right: 22%; }

/* Badge ROYAL FLUSH - debajo del abanico */
.royal-badge {
  position: absolute; left: 50%; top: 84%;
  transform: translate(-50%, -50%) scale(0.6);
  opacity: 0;
  font-family: 'Cormorant Garamond', serif;
  letter-spacing: 0.32em; text-transform: uppercase;
  color: #0a0a0f;
  background: linear-gradient(120deg, #e6cf9a, #c9a96a 45%, #f5e7c1 55%, #c9a96a);
  background-size: 220% 100%;
  padding: 0.8rem 2.2rem 0.75rem;
  border-radius: 999px;
  font-size: clamp(1rem, 2.6vw, 1.6rem);
  box-shadow: 0 14px 40px rgba(201,169,106,0.35), 0 0 24px rgba(201,169,106,0.25);
  pointer-events: none; z-index: 5;
  transition: opacity 0.5s ease, transform 0.5s cubic-bezier(0.2, 0.9, 0.3, 1.18);
}
.royal-badge.on {
  opacity: 1;
  transform: translate(-50%, -50%) scale(1);
  animation: badge-shine 2.6s linear infinite;
}
.royal-badge small {
  display: block;
  font-family: Jost, sans-serif;
  letter-spacing: 0.18em; text-transform: none;
  font-size: 0.52em; color: rgba(10,10,15,0.75);
  margin-top: 0.2rem;
}
@keyframes badge-shine { 0% { background-position: 0% 0; } 100% { background-position: 220% 0; } }

/* --- La Table Vive 1.7 (07/09): color de los dados ESTACIONAL desde el editor
   (CMS key dice_color → main.js pisa estas 4 variables). Defaults = Goldleaf
   exacto vigente; sin variables o hex invalido = el look de siempre. Solo COLOR:
   blur, luz fingida de las caras y formas intactas (orden Alex).
   ⚠️ Los defaults viven en :root, NO en .hero-scene: una custom property
   definida en el propio elemento pisa la herencia y el inline del CMS no
   ganaria jamas. --- */
:root {
  --de-c1: #c9a96a;         /* color principal: borde, aura, brillo de pips */
  --de-c1rgb: 201,169,106;  /* el mismo en tripleta para las rgba() */
  --de-c2: #f0e0b4;         /* highlight palido (pips + inset superior) */
  --de-c2rgb: 240,224,180;
}

/* Etiqueta resultado de dados */
.dice-label {
  position: absolute; left: 50%; bottom: 7%;
  transform: translateX(-50%);
  opacity: 0; transition: opacity 0.4s ease;
  font-family: Jost, sans-serif;
  letter-spacing: 0.25em; text-transform: uppercase;
  font-size: 0.72rem; color: var(--silverlight);
  background: rgba(10,10,15,0.6);
  border: 1px solid rgba(var(--de-c1rgb),0.35);
  padding: 0.45rem 1.2rem; border-radius: 999px;
  pointer-events: none; z-index: 5;
  white-space: nowrap;
}
.dice-label.on { opacity: 1; }

/* Sheen dorado al voltear cada carta durante el acto */
.hero-scene .float-card.flipping::after {
  content: '';
  position: absolute; inset: 0; border-radius: 9px;
  background: linear-gradient(115deg, transparent 30%, rgba(230,207,154,0.5) 46%, rgba(245,231,193,0.85) 50%, rgba(230,207,154,0.5) 54%, transparent 70%);
  background-size: 260% 100%;
  animation: card-sheen 0.9s linear forwards;
  pointer-events: none;
}
@keyframes card-sheen { from { background-position: 120% 0; } to { background-position: -140% 0; } }

/* Disparador accesible por teclado (fuera del contenedor aria-hidden) */
.sr-trigger {
  position: absolute; width: 1px; height: 1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap;
}

@media (prefers-reduced-motion: reduce) {
  .hero-scene .float-card, .hero-scene .float-chip, .hero-scene .hero-die { animation: none!important; }
  .royal-badge, .dice-label { transition: none; }
  .royal-badge.on { animation: none; }
}

/* --- La Table Vive 1.1: escena a primera vista + dados full-screen --- */
.hero-scene .float-card.staged {
  z-index: 20;
  opacity: 0.96;
  filter: none;   /* Royal Flush nitido: al subir a escena se pierde el blur de profundidad (Alex 23/08) */
  border-color: rgba(201,169,106,0.7);
  box-shadow: 0 16px 44px rgba(0,0,0,0.6), 0 0 30px rgba(201,169,106,0.28),
              inset 0 0 14px rgba(47,44,121,0.12);
}
.hero-scene .hero-die.flying {
  z-index: 20;
  opacity: 0.95;
}
.royal-badge { z-index: 25; }
.dice-label { z-index: 25; }
.hero-content { transition: opacity 0.45s ease, filter 0.45s ease; }
.hero-content.scene-focus { opacity: 0.12; filter: blur(2px); }
@media (prefers-reduced-motion: reduce) { .hero-content { transition: none; } }

/* --- La Table Vive 1.2: dados 3D (cubo CSS) + agarrables --- */
.hero-scene .hero-die {
  background: none;
  border: none;
  padding: 0;
  perspective: 340px;
  touch-action: none;
  cursor: grab;
  /* Alex 26/08 (marco cuadrado, cierre definitivo): sombra y aura SIGUEN el
     perfil del elemento - sin radius, el glow dibuja 4 bandas rectas = marco.
     Con radius el halo es REDONDO como el resplandor de un dado real. */
  border-radius: 38%;
  box-shadow: 0 12px 26px rgba(0,0,0,0.55),
              0 0 20px rgba(var(--de-c1rgb),0.32);
}
.hero-scene .hero-die.grabbed { cursor: grabbing; }
.die-cube {
  width: 100%; height: 100%;
  position: relative;
  transform-style: preserve-3d;
}
.die-face {
  position: absolute; inset: 0;
  border-radius: 12px;
  background: linear-gradient(145deg, rgba(28,28,38,0.88), rgba(10,10,15,0.8));
  border: none;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: repeat(3, 1fr);
  padding: 7px; gap: 2px;
  box-shadow: none;
  backface-visibility: hidden;
}
.die-face .pip { visibility: visible; }

/* Alex 26/08: cara plana de reposo — el dado reposa como UNA cara 2D perfecta
   (hermana del cubo; mismo CSS de .die-face). El render 3D solo existe en
   vuelo: en reposo no hay perspectiva, cantos ni espejos que pintar de mas. */
.hero-scene .die-flat { position: absolute; inset: 0; }

/* --- DADOS GOLDLEAF (look DEFINITIVO elegido por Alex 26/08: "bordes dorados,
     preciosos") --- la regla "obsidiana + goldleaf" de mas abajo (border 2px
     #c9a96a + halos) es la vigente. La linea delgada del reposo en 6 NO se
     arregla matando el borde: la arregla el inset:1px del final del archivo
     (caras 1px menores, no asoman del perfil). Este bloque "caras limpias"
     vivio muerto (pisado en cascada) desde el 25/08 y al activarlo 26/08
     mato el look dorado por error - ELIMINADO por orden de Alex. --- */
/* Luz fingida: la cara que mira al frente mas clara, las que giran hacia atras mas oscuras */
.hero-scene .die-face:nth-child(1) { filter: brightness(1.22); }
.hero-scene .die-face:nth-child(3) { filter: brightness(1.10); }
.hero-scene .die-face:nth-child(2) { filter: brightness(1.00); }
.hero-scene .die-face:nth-child(5) { filter: brightness(0.92); }
.hero-scene .die-face:nth-child(4) { filter: brightness(0.86); }
.hero-scene .die-face:nth-child(6) { filter: brightness(0.78); }
/* Alex 26/08 («compara los dos, son diferentes»): la luz fingida es para el
   GIRO — en reposo dejaba la cara 6 un 22% mas oscura que la 1 y cada dado
   con un brillo segun QUE cara cayera. En reposo: brillo unico para todas. */
.hero-scene .hero-die.resting .die-face { filter: none; }
.hero-scene .die-face .pip {
  box-shadow: 0 0 5px rgba(201,169,106,0.75), inset 0 -1px 2px rgba(0,0,0,0.4);
}

/* --- La Table Vive 1.4: dados de marfil - legibilidad maxima estilo casino --- */
.hero-scene .die-face {
  background:
    linear-gradient(145deg, rgba(255,255,255,0.35), rgba(207,201,189,0.18) 60%),
    linear-gradient(145deg, #efece4, #cfc9bd);
  border: 1.5px solid rgba(160,124,60,0.9);
  box-shadow: inset 0 0 0 1px rgba(201,169,106,0.45),
              inset -3px -4px 10px rgba(90,70,35,0.35),
              inset 2px 3px 8px rgba(255,255,255,0.55),
              0 0 16px rgba(201,169,106,0.18);
}
.hero-scene .die-face .pip {
  background: radial-gradient(circle at 35% 30%, #2a2a36, #0a0a0f 75%);
  box-shadow: inset 0 1px 2px rgba(255,255,255,0.4), 0 1px 1px rgba(255,255,255,0.3);
}

/* --- La Table Vive 1.5: obsidiana + goldleaf (estilo marca, legible) y dados siempre jugables --- */
.hero-scene .hero-die { z-index: 15; }
.hero-scene .die-face {
  background:
    linear-gradient(145deg, rgba(var(--de-c1rgb),0.28), rgba(16,16,24,0.9) 55%),
    linear-gradient(145deg, #262634, #12121a);
  border: 2px solid var(--de-c1);
  /* Alex 26/08: SIN outer-glow aqui - con perspective, las caras de canto lo
     proyectan como marco cuadrado alrededor del dado al reposar. El aura vive
     UNA sola vez en .hero-die (mismo color y radio). Inset interiores intactos. */
  box-shadow: inset 0 0 0 1.5px rgba(var(--de-c2rgb),0.5),
              inset -3px -4px 12px rgba(0,0,0,0.55),
              inset 2px 3px 9px rgba(var(--de-c1rgb),0.3);
}
.hero-scene .die-face .pip {
  /* Alex 26/08 («puntos reflejados» en el 6, visto en su panel): el highlight
     del gradiente vivia ARRIBA-IZQUIERDA (35% 30%) y en un pip pequeno se
     leia como un SEGUNDO punto junto al dorado - seis ecos en la cara 6.
     Brillo CONCENTRICO: un solo punto pulido, inseparable. */
  background: radial-gradient(circle at 50% 45%, var(--de-c2) 0 24%, var(--de-c1) 62%);
  box-shadow: inset 0 -1px 2px rgba(0,0,0,0.35);
}

/* --- La Table Vive 1.6: FIX RAIZ - el wrapper heredaba display:grid 3x3 del dado plano
   y el cubo quedaba aplastado en una celda de 17px; las caras deben vivir en un bloque --- */
.hero-scene .hero-die {
  display: block;
  grid-template-columns: none;
  grid-template-rows: none;
}

/* --- La Table Vive 1.7: dados companeros de scroll (fixed, carriles laterales) --- */
.hero-scene .hero-die {
  position: fixed;
  z-index: 15;
}

/* --- La Table Vive 1.8: label de dados fijo al viewport (companeros de scroll) --- */
.hero-scene .dice-label { position: fixed; left: 50%; }

/* --- La Table Vive 1.9: taps atraviesan el texto del hero hacia las cartas + dados moviles --- */
#hero .hero-content { pointer-events: none; }
#hero .hero-content a, #hero .hero-content button { pointer-events: auto; }
@media (max-width: 680px) {
  .hero-scene .hero-die { width: 40px; height: 40px; }
  .hero-scene .die-face { padding: 5px; border-radius: 9px; border-width: 1.5px; }
  .hero-scene .die-cube { perspective: 260px; }
}

/* --- La Table Vive 2.0: calls de crupier + ronda con point --- */
.hero-scene .dice-label.win {
  border-color: rgba(var(--de-c1rgb),0.95);
  color: var(--de-c2);
  box-shadow: 0 0 22px rgba(var(--de-c1rgb),0.45), 0 0 44px rgba(var(--de-c1rgb),0.2);
}
.hero-scene .dice-label.craps {
  border-color: rgba(196,30,58,0.85);
  color: #e8838f;
  box-shadow: 0 0 20px rgba(196,30,58,0.4);
}
.hero-scene .dice-label.point {
  border-color: rgba(var(--de-c1rgb),0.7);
}
.point-badge {
  position: fixed;
  left: 50%; transform: translateX(-50%);
  top: 74%;
  opacity: 0; transition: opacity 0.4s ease;
  font-family: 'Cormorant Garamond', serif;
  letter-spacing: 0.3em;
  font-size: 0.95rem; color: var(--de-c2, #e6cf9a);
  background: rgba(10,10,15,0.6);
  border: 1px solid rgba(var(--de-c1rgb,201,169,106),0.55);
  padding: 0.35rem 1.1rem 0.3rem;
  border-radius: 999px;
  pointer-events: none; z-index: 25;
  white-space: nowrap;
}
.point-badge.on { opacity: 1; }

/* --- La Table Vive 2.1: chip del POINT acoplado al dock flotante (sobre el boton IA) --- */
.hero-scene .point-badge, .point-badge {
  left: auto; top: auto; transform: none;
  right: 24px; bottom: 176px;
  font-family: Jost, sans-serif;
  font-size: 0.66rem; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--de-c2, #e6cf9a);
  background: rgba(10,10,15,0.65);
  border: 1px solid rgba(var(--de-c1rgb,201,169,106),0.65);
  box-shadow: 0 8px 24px rgba(0,0,0,0.5), 0 0 18px rgba(var(--de-c1rgb,201,169,106),0.22);
  padding: 0.45rem 0.95rem 0.4rem;
  border-radius: 999px;
  pointer-events: auto;
  cursor: pointer;
  transform: translateX(14px);
  transition: opacity 0.4s ease, transform 0.4s cubic-bezier(0.2, 0.8, 0.3, 1.1), box-shadow 0.3s ease;
  z-index: 880;
}
.point-badge.on { transform: translateX(0); }
.point-badge:hover {
  box-shadow: 0 8px 24px rgba(0,0,0,0.55), 0 0 26px rgba(var(--de-c1rgb,201,169,106),0.45);
  border-color: rgba(var(--de-c1rgb,201,169,106),0.95);
}

/* ============================================================
   BLACKJACK 22 - LA TABLE DE L'AS (Fase 1.5)
   ============================================================ */
.bj22-table {
  position: fixed; inset: 0; z-index: 840;
  display: none; flex-direction: column;
  background: radial-gradient(ellipse at 50% 28%, rgba(47,44,121,0.55) 0%, rgba(16,16,24,0.92) 62%, #0a0a0f 100%);
  opacity: 0; transition: opacity 0.45s ease;
  font-family: Jost, sans-serif; color: #d4d3d8;
  overflow: hidden;
}
.bj22-table.open { display: flex; opacity: 1; }
.bj22-felt-arc {
  position: absolute; left: 50%; top: 34%;
  width: min(150vw, 1100px); height: min(110vw, 780px);
  transform: translateX(-50%);
  border: 1px solid rgba(201,169,106,0.22);
  border-radius: 50% 50% 46% 46%;
  pointer-events: none;
}
.bj22-felt-arc.inner { top: 40%; width: min(120vw, 880px); height: min(88vw, 620px); border-color: rgba(212,211,216,0.14); }
.bj22-top { display: flex; align-items: center; justify-content: space-between; padding: 0.9rem 1.4rem 0.4rem; z-index: 2; }
.bj22-title { display: flex; align-items: center; gap: 0.8rem; }
.bj22-title img { width: 34px; height: 34px; border-radius: 50%; border: 1px solid rgba(201,169,106,0.6); padding: 2px; }
.bj22-title h2 {
  font-family: 'Cormorant Garamond', serif; font-weight: 600;
  font-size: 1.35rem; letter-spacing: 0.22em; text-transform: uppercase;
  color: #d4d3d8; margin: 0;
}
.bj22-title h2 em { font-style: normal; color: #c9a96a; }
.bj22-close {
  background: rgba(10,10,15,0.5); border: 1px solid rgba(212,211,216,0.3);
  color: #d4d3d8; border-radius: 999px; padding: 0.35rem 1rem;
  font-family: Jost, sans-serif; font-size: 0.7rem; letter-spacing: 0.25em;
  cursor: pointer; transition: border-color 0.25s, color 0.25s;
}
.bj22-close:hover { border-color: #c9a96a; color: #e6cf9a; }
.bj22-shoe, .bj22-discard {
  position: absolute; top: 4.6rem; width: 54px; height: 74px;
  border-radius: 7px; background: linear-gradient(145deg, #14141c, #0a0a0f);
  border: 1px solid rgba(201,169,106,0.4);
  box-shadow: 0 8px 20px rgba(0,0,0,0.5);
  display: flex; align-items: center; justify-content: center;
  font-size: 0.55rem; letter-spacing: 0.2em; color: rgba(201,169,106,0.75);
  text-transform: uppercase; z-index: 1;
}
.bj22-shoe { left: 1.6rem; }
.bj22-discard { right: 1.6rem; }
.bj22-msg {
  text-align: center; z-index: 2; min-height: 2.4rem;
  font-family: 'Cormorant Garamond', serif; font-style: italic;
  font-size: clamp(1.05rem, 2.4vw, 1.5rem); color: #e6cf9a;
  text-shadow: 0 0 18px rgba(201,169,106,0.35);
  padding: 0.2rem 1rem 0.4rem;
}
.bj22-zone {
  flex: 1; display: flex; flex-direction: column;
  align-items: center; justify-content: space-evenly; z-index: 2;
  padding: 0.4rem 1rem; gap: 0.4rem;
}
.bj22-cards-row { display: flex; gap: 0.5rem; min-height: 96px; align-items: center; justify-content: center; position: relative; }
.bj22-label { font-size: 0.6rem; letter-spacing: 0.3em; text-transform: uppercase; color: rgba(212,211,216,0.55); }
.bj22-total {
  position: absolute; right: -44px; top: 50%; transform: translateY(-50%);
  min-width: 36px; text-align: center;
  font-family: 'Cormorant Garamond', serif; font-size: 1.1rem;
  color: #0a0a0f; background: rgba(201,169,106,0.9);
  border-radius: 999px; padding: 0.1rem 0.45rem;
}
.bj22-total.bust { background: rgba(196,30,58,0.92); color: #fff; }
.bj22-total.bj { background: linear-gradient(120deg, #e6cf9a, #c9a96a); }
.bj22-card {
  width: 64px; height: 90px; border-radius: 7px; position: relative;
  background: linear-gradient(160deg, #f4f1e8, #ddd8cb);
  border: 1px solid rgba(160,124,60,0.55);
  box-shadow: 0 6px 16px rgba(0,0,0,0.45);
  color: #101018; font-family: 'Cormorant Garamond', serif;
  animation: bj22-deal 0.5s cubic-bezier(0.2, 0.8, 0.3, 1) backwards;
}
.bj22-card.red { color: #a3122e; }
.bj22-card .idx { position: absolute; top: 4px; left: 6px; font-size: 0.95rem; font-weight: 700; line-height: 1.05; text-align: center; }
.bj22-card .idx.b { top: auto; left: auto; bottom: 4px; right: 6px; transform: rotate(180deg); }
.bj22-card .pip-big { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 1.9rem; }
.bj22-card.back {
  background: radial-gradient(circle at 50% 42%, rgba(201,169,106,0.32) 0%, transparent 55%), repeating-linear-gradient(45deg, #14141c 0 6px, #101018 6px 12px);
  border-color: rgba(201,169,106,0.75);
}
.bj22-card.back::after {
  content: 'MA'; position: absolute; top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  font-size: 0.85rem; letter-spacing: 0.2em; color: #c9a96a;
  border: 1px solid rgba(201,169,106,0.7); border-radius: 6px; padding: 0.25rem 0.5rem;
}
@keyframes bj22-deal {
  from { transform: translateY(-56px) rotate(6deg) scale(0.85); opacity: 0; }
  to { transform: none; opacity: 1; }
}
.bj22-hands { display: flex; gap: 1.6rem; justify-content: center; align-items: flex-end; flex-wrap: wrap; }
.bj22-hand { position: relative; padding: 0.4rem 0.6rem 0.5rem; border-radius: 14px; transition: box-shadow 0.3s, background 0.3s; }
.bj22-hand.active { background: rgba(201,169,106,0.07); box-shadow: 0 0 0 1px rgba(201,169,106,0.55), 0 0 26px rgba(201,169,106,0.18); }
.bj22-hand-stake { font-size: 0.62rem; letter-spacing: 0.18em; color: #c9a96a; text-align: center; margin-bottom: 0.25rem; text-transform: uppercase; }
.bj22-hand-result {
  position: absolute; top: -10px; left: 50%; transform: translateX(-50%);
  font-size: 0.62rem; letter-spacing: 0.25em; padding: 0.2rem 0.7rem;
  border-radius: 999px; white-space: nowrap; font-weight: 600;
}
.bj22-hand-result.win { background: linear-gradient(120deg, #e6cf9a, #c9a96a); color: #0a0a0f; }
.bj22-hand-result.lose { background: rgba(196,30,58,0.9); color: #fff; }
.bj22-hand-result.push { background: rgba(212,211,216,0.25); color: #d4d3d8; }
.bj22-spots { display: flex; gap: 1.8rem; align-items: center; justify-content: center; }
.bj22-spot {
  width: 86px; height: 86px; border-radius: 50%;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  cursor: pointer; position: relative; transition: box-shadow 0.3s, transform 0.15s;
  background: rgba(10,10,15,0.35);
}
.bj22-spot.main { border: 2px solid rgba(201,169,106,0.75); box-shadow: 0 0 18px rgba(201,169,106,0.14); }
.bj22-spot.side { border: 1.5px solid rgba(212,211,216,0.45); width: 70px; height: 70px; }
.bj22-spot:hover { transform: scale(1.05); }
.bj22-spot .sname { font-size: 0.52rem; letter-spacing: 0.16em; text-transform: uppercase; color: rgba(212,211,216,0.75); text-align: center; }
.bj22-spot.main .sname { color: #e6cf9a; }
.bj22-spot .sval { font-family: 'Cormorant Garamond', serif; font-size: 1.05rem; color: #d4d3d8; margin-top: 0.1rem; }
.bj22-bottom { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 0.5rem 1.4rem 0.9rem; z-index: 2; flex-wrap: wrap; }
.bj22-bank { font-family: 'Cormorant Garamond', serif; font-size: 1.2rem; color: #e6cf9a; letter-spacing: 0.06em; }
.bj22-bank small { display: block; font-family: Jost, sans-serif; font-size: 0.55rem; letter-spacing: 0.3em; text-transform: uppercase; color: rgba(212,211,216,0.5); }
.bj22-rack { display: flex; gap: 0.55rem; align-items: center; }
.bj22-chip {
  width: 46px; height: 46px; border-radius: 50%; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  font-family: 'Cormorant Garamond', serif; font-weight: 700; font-size: 0.92rem;
  border: 2px dashed rgba(255,255,255,0.55);
  box-shadow: 0 6px 14px rgba(0,0,0,0.5);
  transition: transform 0.18s, box-shadow 0.25s; position: relative;
  color: #f4f1e8;
}
.bj22-chip.c10 { background: repeating-conic-gradient(#1c1c26 0 30deg, #2a2a38 30deg 60deg); border-color: rgba(212,211,216,0.5); }
.bj22-chip.c25 { background: repeating-conic-gradient(#5c1526 0 30deg, #7a1c32 30deg 60deg); }
.bj22-chip.c50 { background: repeating-conic-gradient(#16323f 0 30deg, #1e4455 30deg 60deg); }
.bj22-chip.c100 { background: repeating-conic-gradient(#23252f 0 30deg, #343746 30deg 60deg); }
.bj22-chip.c500 { background: repeating-conic-gradient(#6b4a12 0 30deg, #8a5f1a 30deg 60deg); }
.bj22-chip.c1000 { background: repeating-conic-gradient(#8a6d2f 0 30deg, #c9a96a 30deg 60deg); color: #0a0a0f; }
.bj22-chip.sel { transform: translateY(-7px) scale(1.12); box-shadow: 0 12px 22px rgba(0,0,0,0.55), 0 0 18px rgba(201,169,106,0.55); border-color: #e6cf9a; }
.bj22-chip:disabled { opacity: 0.35; cursor: not-allowed; }
.bj22-actions { display: flex; gap: 0.6rem; align-items: center; flex-wrap: wrap; justify-content: center; }
.bj22-btn {
  font-family: Jost, sans-serif; font-size: 0.72rem; letter-spacing: 0.28em;
  text-transform: uppercase; cursor: pointer;
  background: rgba(10,10,15,0.55); color: #e6cf9a;
  border: 1px solid rgba(201,169,106,0.65); border-radius: 999px;
  padding: 0.6rem 1.4rem 0.55rem;
  transition: all 0.25s;
}
.bj22-btn:hover:not(:disabled) { background: rgba(201,169,106,0.16); box-shadow: 0 0 18px rgba(201,169,106,0.3); }
.bj22-btn.primary { background: linear-gradient(120deg, #c9a96a, #e6cf9a 55%, #c9a96a); color: #0a0a0f; font-weight: 600; border-color: transparent; }
.bj22-btn:disabled { opacity: 0.3; cursor: not-allowed; }
.bj22-btn.ghost { border-color: rgba(212,211,216,0.3); color: #d4d3d8; }
@media (max-width: 680px) {
  .bj22-card { width: 50px; height: 71px; }
  .bj22-card .pip-big { font-size: 1.4rem; }
  .bj22-card .idx { font-size: 0.8rem; }
  .bj22-spot { width: 70px; height: 70px; }
  .bj22-spot.side { width: 58px; height: 58px; }
  .bj22-chip { width: 40px; height: 40px; font-size: 0.8rem; }
  .bj22-shoe, .bj22-discard { display: none; }
  .bj22-hands { gap: 0.9rem; }
  .bj22-total { right: -34px; font-size: 0.9rem; }
  .bj22-bottom { justify-content: center; }
  .bj22-btn { padding: 0.5rem 0.9rem 0.45rem; font-size: 0.62rem; letter-spacing: 0.2em; }
}
/* --- BJ22 1.1: modal pleno (z-950 sobre nav y dock), fondo mas oscuro, cierre prominente, movil --- */
.bj22-table {
  z-index: 950;
  background: radial-gradient(ellipse at 50% 26%, rgba(47,44,121,0.42) 0%, rgba(12,12,18,0.96) 55%, #060609 100%);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
}
.bj22-felt-arc { border-color: rgba(201,169,106,0.3); }
.bj22-close {
  background: linear-gradient(120deg, #c9a96a, #e6cf9a 55%, #c9a96a);
  color: #0a0a0f; font-weight: 600; font-size: 0.78rem;
  padding: 0.55rem 1.3rem 0.5rem; border: none;
  box-shadow: 0 8px 22px rgba(201,169,106,0.35);
}
.bj22-close:hover { filter: brightness(1.08); color: #0a0a0f; }
@media (max-width: 680px) {
  .bj22-top { padding: 0.7rem 0.9rem 0.3rem; }
  .bj22-title h2 { font-size: 1.05rem; letter-spacing: 0.14em; }
  .bj22-title img { width: 28px; height: 28px; }
  .bj22-msg { font-size: 0.95rem; min-height: 1.9rem; }
  .bj22-cards-row { min-height: 76px; }
  .bj22-spots { gap: 1rem; }
  .bj22-bottom { flex-direction: column; gap: 0.6rem; padding: 0.4rem 0.8rem 0.8rem; }
  .bj22-bank { text-align: center; }
  .bj22-rack { flex-wrap: wrap; justify-content: center; gap: 0.45rem; }
  .bj22-actions { width: 100%; display: grid; grid-template-columns: repeat(4, 1fr); gap: 0.45rem; }
  .bj22-btn { width: 100%; padding: 0.55rem 0.25rem 0.5rem; letter-spacing: 0.1em; font-size: 0.58rem; }
}
/* nav=1000 y dock=900: la mesa por encima de todo (z 1100) */
.bj22-table { z-index: 1100; }
/* --- BJ22 1.2: toast de pagos + boton ayuda con reglas/payouts --- */
.bj22-toast {
  position: absolute; left: 50%; top: 24%;
  transform: translate(-50%, -50%) scale(0.75);
  opacity: 0; pointer-events: none; z-index: 5;
  font-family: 'Cormorant Garamond', serif; font-size: clamp(1.15rem, 3vw, 1.7rem);
  color: #0a0a0f; white-space: nowrap;
  background: linear-gradient(120deg, #e6cf9a, #c9a96a 55%, #f5e7c1);
  padding: 0.7rem 2rem 0.6rem; border-radius: 999px;
  box-shadow: 0 16px 42px rgba(0,0,0,0.55), 0 0 30px rgba(201,169,106,0.5);
  letter-spacing: 0.06em;
  transition: opacity 0.35s ease, transform 0.35s cubic-bezier(0.2, 0.9, 0.3, 1.2);
}
.bj22-toast.on { opacity: 1; transform: translate(-50%, -50%) scale(1); }
.bj22-help-btn {
  width: 34px; height: 34px; border-radius: 50%; cursor: pointer;
  border: 1px solid rgba(201,169,106,0.7); color: #e6cf9a;
  background: rgba(10,10,15,0.55); font-family: 'Cormorant Garamond', serif;
  font-size: 1.05rem; line-height: 1;
  transition: all 0.25s; margin-right: 0.6rem;
}
.bj22-help-btn:hover { background: rgba(201,169,106,0.18); box-shadow: 0 0 16px rgba(201,169,106,0.3); }
.bj22-help {
  position: absolute; inset: 0; z-index: 10;
  background: rgba(6,6,9,0.82); backdrop-filter: blur(8px);
  display: none; align-items: center; justify-content: center; padding: 1rem;
}
.bj22-help.on { display: flex; }
.bj22-help-card {
  max-width: 520px; width: 100%; max-height: 86vh; overflow-y: auto;
  background: linear-gradient(160deg, #14141c, #0a0a0f);
  border: 1px solid rgba(201,169,106,0.55); border-radius: 18px;
  padding: 1.4rem 1.6rem;
  font-family: Jost, sans-serif; color: #d4d3d8;
}
.bj22-help-card h3 {
  font-family: 'Cormorant Garamond', serif; color: #e6cf9a;
  letter-spacing: 0.18em; text-transform: uppercase; font-size: 1.05rem;
  margin: 0 0 0.4rem;
}
.bj22-help-card h3:not(:first-child) { margin-top: 1.1rem; }
.bj22-help-card p, .bj22-help-card li { font-size: 0.78rem; line-height: 1.55; }
.bj22-help-card ul { margin: 0.2rem 0 0; padding-left: 1.1rem; }
.bj22-help-card table { width: 100%; border-collapse: collapse; font-size: 0.75rem; margin-top: 0.3rem; }
.bj22-help-card td { padding: 0.22rem 0.4rem; border-bottom: 1px solid rgba(212,211,216,0.12); }
.bj22-help-card td:last-child { text-align: right; color: #e6cf9a; font-family: 'Cormorant Garamond', serif; font-size: 0.9rem; }
/* --- Dados: posiciones iniciales en esquinas libres (nunca sobre el texto) --- */
.hs-die-1 { top: 17%; left: auto; right: 6%; }
.hs-die-2 { top: 52%; left: 4%; right: auto; }
/* (Le Stick du Croupier retirado el 22/08 a petición de Alex - los dados quedan donde caen) */
/* ============================================================
   LA ROULETTE DE L'AS (Fase 2)
   ============================================================ */
.rl-table {
  position: fixed; inset: 0; z-index: 1100;
  display: none; flex-direction: column;
  background: radial-gradient(ellipse at 50% 30%, rgba(47,44,121,0.4) 0%, rgba(12,12,18,0.96) 55%, #060609 100%);
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  font-family: Jost, sans-serif; color: #d4d3d8; overflow: hidden;
  opacity: 0; transition: opacity 0.45s ease;
}
.rl-table.open { display: flex; opacity: 1; }
.rl-top { display: flex; align-items: center; justify-content: space-between; padding: 0.9rem 1.4rem 0.3rem; z-index: 2; }
.rl-title { display: flex; align-items: center; gap: 0.8rem; }
.rl-title img { width: 34px; height: 34px; border-radius: 50%; border: 1px solid rgba(201,169,106,0.6); padding: 2px; }
.rl-title h2 { font-family: 'Cormorant Garamond', serif; font-weight: 600; font-size: 1.35rem; letter-spacing: 0.22em; text-transform: uppercase; color: #d4d3d8; margin: 0; }
.rl-title h2 em { font-style: normal; color: #c9a96a; }
.rl-msg {
  text-align: center; z-index: 2; min-height: 2.2rem;
  font-family: 'Cormorant Garamond', serif; font-style: italic;
  font-size: clamp(1.05rem, 2.4vw, 1.5rem); color: #e6cf9a;
  text-shadow: 0 0 18px rgba(201,169,106,0.35); padding: 0.2rem 1rem 0.3rem;
}
.rl-toast {
  position: absolute; left: 50%; top: 16%;
  transform: translate(-50%, -50%) scale(0.75);
  opacity: 0; pointer-events: none; z-index: 6;
  font-family: 'Cormorant Garamond', serif; font-size: clamp(1.15rem, 3vw, 1.7rem);
  color: #0a0a0f; white-space: nowrap;
  background: linear-gradient(120deg, #e6cf9a, #c9a96a 55%, #f5e7c1);
  padding: 0.7rem 2rem 0.6rem; border-radius: 999px;
  box-shadow: 0 16px 42px rgba(0,0,0,0.55), 0 0 30px rgba(201,169,106,0.5);
  letter-spacing: 0.06em;
  transition: opacity 0.35s ease, transform 0.35s cubic-bezier(0.2, 0.9, 0.3, 1.2);
}
.rl-toast.on { opacity: 1; transform: translate(-50%, -50%) scale(1); }
.rl-zone { flex: 1; display: flex; align-items: center; justify-content: center; gap: 2rem; z-index: 2; padding: 0.4rem 1rem; flex-wrap: wrap; }
.rl-wheel-wrap {
  position: relative;
  width: min(46vmin, 420px); height: min(46vmin, 420px);
  border-radius: 50%;
  background: radial-gradient(circle, #1a1a24 0 58%, #101018 58% 100%);
  border: 6px solid rgba(201,169,106,0.75);
  box-shadow: 0 24px 60px rgba(0,0,0,0.6), 0 0 40px rgba(201,169,106,0.18), inset 0 0 30px rgba(0,0,0,0.55);
  touch-action: none;
}
.rl-wheel { position: absolute; inset: 10px; border-radius: 50%; will-change: transform; }
.rl-num {
  position: absolute; left: 50%; top: 0;
  transform-origin: 50% calc(50% - 0px);
  font-size: clamp(0.5rem, 1.6vmin, 0.78rem); font-weight: 600;
  pointer-events: none; text-align: center;
}
.rl-ball {
  position: absolute; width: 7.5%; height: 7.5%;
  border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, #ffffff, #cfc9bd 70%);
  box-shadow: 0 3px 8px rgba(0,0,0,0.6), 0 0 10px rgba(255,255,255,0.35);
  left: 46.25%; top: 46.25%;
  cursor: grab; will-change: transform;
}
.rl-ball.grabbed { cursor: grabbing; transform-origin: center; }
.rl-hub {
  position: absolute; inset: 36%; border-radius: 50%;
  background: radial-gradient(circle at 40% 35%, #262634, #101018);
  border: 2px solid rgba(201,169,106,0.55);
  display: flex; align-items: center; justify-content: center;
  font-family: 'Cormorant Garamond', serif; color: #c9a96a;
  font-size: 1rem; letter-spacing: 0.12em; pointer-events: none;
}
.rl-bets { display: flex; flex-direction: column; gap: 0.7rem; min-width: min(320px, 92vw); }
.rl-bet-row { display: flex; gap: 0.5rem; justify-content: center; flex-wrap: wrap; }
.rl-bet {
  flex: 1; min-width: 68px; cursor: pointer; text-align: center;
  border-radius: 12px; padding: 0.5rem 0.5rem 0.4rem;
  background: rgba(10,10,15,0.5); border: 1px solid rgba(212,211,216,0.35);
  transition: all 0.25s; font-family: Jost, sans-serif;
}
.rl-bet:hover { border-color: rgba(201,169,106,0.8); }
.rl-bet.rouge { border-color: rgba(163,18,46,0.75); }
.rl-bet.noir { border-color: rgba(212,211,216,0.55); }
.rl-bet .bn { font-size: 0.58rem; letter-spacing: 0.22em; text-transform: uppercase; color: #d4d3d8; display: block; }
.rl-bet.rouge .bn { color: #e8838f; }
.rl-bet .bv { font-family: 'Cormorant Garamond', serif; font-size: 1rem; color: #e6cf9a; display: block; min-height: 1.1rem; }
.rl-grid {
  display: grid; grid-template-columns: repeat(13, 1fr); gap: 2px;
}
.rl-cell {
  aspect-ratio: 1; display: flex; align-items: center; justify-content: center;
  font-size: 0.52rem; font-weight: 600; border-radius: 4px; cursor: pointer;
  border: 1px solid rgba(212,211,216,0.2);
}
.rl-cell.r { background: rgba(163,18,46,0.55); color: #fff; }
.rl-cell.n { background: rgba(10,10,15,0.7); color: #d4d3d8; }
.rl-cell.z { background: rgba(20,80,45,0.6); color: #fff; }
.rl-cell.sel { outline: 2px solid #e6cf9a; outline-offset: 1px; box-shadow: 0 0 12px rgba(201,169,106,0.5); }
.rl-bottom { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 0.5rem 1.4rem 0.9rem; z-index: 2; flex-wrap: wrap; }
.rl-bank { font-family: 'Cormorant Garamond', serif; font-size: 1.2rem; color: #e6cf9a; }
.rl-bank small { display: block; font-family: Jost, sans-serif; font-size: 0.55rem; letter-spacing: 0.3em; text-transform: uppercase; color: rgba(212,211,216,0.5); }
.rl-rack { display: flex; gap: 0.5rem; align-items: center; }
.rl-actions { display: flex; gap: 0.6rem; flex-wrap: wrap; justify-content: center; }
.rl-btn {
  font-family: Jost, sans-serif; font-size: 0.72rem; letter-spacing: 0.28em; text-transform: uppercase; cursor: pointer;
  background: rgba(10,10,15,0.55); color: #e6cf9a;
  border: 1px solid rgba(201,169,106,0.65); border-radius: 999px; padding: 0.6rem 1.4rem 0.55rem;
  transition: all 0.25s;
}
.rl-btn:hover:not(:disabled) { background: rgba(201,169,106,0.16); box-shadow: 0 0 18px rgba(201,169,106,0.3); }
.rl-btn.primary { background: linear-gradient(120deg, #c9a96a, #e6cf9a 55%, #c9a96a); color: #0a0a0f; font-weight: 600; border-color: transparent; }
.rl-btn:disabled { opacity: 0.3; cursor: not-allowed; }
.rl-btn.ghost { border-color: rgba(212,211,216,0.3); color: #d4d3d8; }
.rl-help-btn {
  width: 34px; height: 34px; border-radius: 50%; cursor: pointer;
  border: 1px solid rgba(201,169,106,0.7); color: #e6cf9a;
  background: rgba(10,10,15,0.55); font-family: 'Cormorant Garamond', serif; font-size: 1.05rem;
  transition: all 0.25s; margin-right: 0.6rem;
}
.rl-help-btn:hover { background: rgba(201,169,106,0.18); }
.rl-help { position: absolute; inset: 0; z-index: 10; background: rgba(6,6,9,0.85); display: none; align-items: center; justify-content: center; padding: 1rem; }
.rl-help.on { display: flex; }
.rl-help-card {
  max-width: 500px; width: 100%; max-height: 86vh; overflow-y: auto;
  background: linear-gradient(160deg, #14141c, #0a0a0f);
  border: 1px solid rgba(201,169,106,0.55); border-radius: 18px; padding: 1.4rem 1.6rem;
  font-family: Jost, sans-serif; color: #d4d3d8;
}
.rl-help-card h3 { font-family: 'Cormorant Garamond', serif; color: #e6cf9a; letter-spacing: 0.18em; text-transform: uppercase; font-size: 1.05rem; margin: 0 0 0.4rem; }
.rl-help-card h3:not(:first-child) { margin-top: 1.1rem; }
.rl-help-card p, .rl-help-card li { font-size: 0.78rem; line-height: 1.55; }
.rl-help-card ul { margin: 0.2rem 0 0; padding-left: 1.1rem; }
.rl-help-card table { width: 100%; border-collapse: collapse; font-size: 0.75rem; margin-top: 0.3rem; }
.rl-help-card td { padding: 0.22rem 0.4rem; border-bottom: 1px solid rgba(212,211,216,0.12); }
.rl-help-card td:last-child { text-align: right; color: #e6cf9a; font-family: 'Cormorant Garamond', serif; font-size: 0.9rem; }
/* mini ruleta del hero */
.rl-mini {
  position: fixed; width: 74px; height: 74px; border-radius: 50%;
  bottom: 20%; left: 3%;
  border: 3px solid rgba(201,169,106,0.7);
  box-shadow: 0 10px 26px rgba(0,0,0,0.55), 0 0 20px rgba(201,169,106,0.2);
  cursor: pointer; z-index: 15; will-change: transform;
  background: radial-gradient(circle, #1a1a24 0 58%, #101018 58% 100%);
}
.rl-mini::after {
  content: ''; position: absolute; inset: 30%;
  border-radius: 50%; border: 1.5px solid rgba(201,169,106,0.6);
  background: radial-gradient(circle at 40% 35%, #262634, #101018);
}
@media (max-width: 680px) {
  .rl-zone { flex-direction: column; gap: 0.8rem; }
  .rl-wheel-wrap { width: min(72vmin, 320px); height: min(72vmin, 320px); }
  .rl-bets { min-width: 94vw; }
  .rl-bottom { flex-direction: column; gap: 0.6rem; }
  .rl-bank { text-align: center; }
  .rl-rack { flex-wrap: wrap; justify-content: center; }
  .rl-actions { width: 100%; }
  .rl-grid { grid-template-columns: repeat(10, 1fr); }
  .rl-mini { width: 58px; height: 58px; bottom: 26%; }
}
/* --- ROULETTE 2: tableau frances autentico + numeros del cilindro en anillo --- */
.rl-num { position: absolute; inset: 0; display: flex; justify-content: center; transform-origin: 50% 50%; pointer-events: none; }
.rl-num span { margin-top: 3.2%; font-size: clamp(0.5rem, 1.7vmin, 0.82rem); font-weight: 700; }
.rl-board-wrap { overflow-x: auto; padding-bottom: 0.4rem; max-width: 100%; }
.rl-board {
  display: grid;
  grid-template-columns: 1.1fr repeat(12, 1fr) 1.7fr;
  gap: 3px; min-width: 520px;
  font-family: Jost, sans-serif;
}
.rl-tc {
  position: relative; display: flex; align-items: center; justify-content: center;
  border-radius: 5px; cursor: pointer; aspect-ratio: 1 / 1.15;
  font-size: clamp(0.5rem, 1.5vmin, 0.72rem); font-weight: 600;
  border: 1px solid rgba(212,211,216,0.22);
  transition: box-shadow 0.2s, transform 0.15s;
}
.rl-tc:hover { transform: scale(1.06); }
.rl-tc.r { background: rgba(163,18,46,0.6); color: #fff; }
.rl-tc.n { background: rgba(10,10,15,0.75); color: #d4d3d8; }
.rl-tc.z { background: rgba(20,80,45,0.65); color: #fff; grid-row: span 3; aspect-ratio: auto; font-size: 1.2rem; }
.rl-tc.dz { background: rgba(47,44,121,0.45); color: #e6cf9a; border-color: rgba(201,169,106,0.5); font-size: clamp(0.5rem,1.4vmin,0.68rem); letter-spacing: 0.1em; }
.rl-tc.sel { outline: 2px solid #e6cf9a; outline-offset: 1px; box-shadow: 0 0 14px rgba(201,169,106,0.6); }
.rl-tc em {
  position: absolute; bottom: 0; left: 0; right: 0;
  font-style: normal; color: #e6cf9a; font-size: 0.52rem; font-weight: 700;
  text-shadow: 0 1px 2px #000;
}
.rl-simples {
  grid-column: 2 / span 12;
  display: grid; grid-template-columns: repeat(6, 1fr); gap: 3px;
}
.rl-simples .rl-tc { aspect-ratio: auto; padding: 0.5rem 0.2rem; font-size: clamp(0.52rem, 1.4vmin, 0.7rem); letter-spacing: 0.14em; text-transform: uppercase; }
.rl-diamond { display: inline-block; width: 9px; height: 9px; transform: rotate(45deg); margin: 0 0.28rem 0 0; border-radius: 1px; }
.rl-diamond.r { background: #a3122e; }
.rl-diamond.n { background: #1a1a22; border: 1px solid rgba(212,211,216,0.4); }
/* --- ROULETTE 2.1: bola blanca en pista exterior + horizontal sin scroll + gira-dispositivo --- */
.rl-ball {
  width: 9%; height: 9%; left: 45.5%; top: 45.5%;
  background: radial-gradient(circle at 35% 30%, #ffffff, #eceade 60%, #c9c4b6);
  box-shadow: 0 2px 10px rgba(0,0,0,0.6), 0 0 16px rgba(255,255,255,0.55), inset -2px -3px 5px rgba(90,85,70,0.35);
}
.rl-board-wrap { overflow: visible; }
.rl-board { min-width: 0; width: 100%; }
/* movil en vertical: se pide girar el dispositivo */
.rl-rotate { display: none; }
@media (orientation: portrait) and (max-width: 900px) {
  .rl-rotate {
    display: flex; position: absolute; inset: 0; z-index: 30;
    background: rgba(6,6,9,0.97);
    flex-direction: column; align-items: center; justify-content: center;
    gap: 1.1rem; text-align: center; padding: 2rem;
    font-family: 'Cormorant Garamond', serif; color: #e6cf9a;
    font-size: 1.25rem; letter-spacing: 0.12em;
  }
  .rl-rotate small { font-family: Jost, sans-serif; font-size: 0.68rem; letter-spacing: 0.25em; text-transform: uppercase; color: rgba(212,211,216,0.7); }
  .rl-phone {
    width: 44px; height: 74px; border: 2.5px solid #c9a96a; border-radius: 8px;
    animation: rl-tip 2.2s ease-in-out infinite;
  }
  @keyframes rl-tip {
    0%, 20% { transform: rotate(0deg); }
    55%, 80% { transform: rotate(90deg); }
    100% { transform: rotate(90deg); }
  }
}
/* horizontal (movil apaisado y pantallas bajas): todo encaja sin scroll */
@media (orientation: landscape) and (max-height: 620px) {
  .rl-top { padding: 0.35rem 0.9rem 0.15rem; }
  .rl-title h2 { font-size: 1rem; }
  .rl-title img { width: 26px; height: 26px; }
  .rl-msg { min-height: 1.5rem; font-size: 0.95rem; padding: 0 1rem 0.1rem; }
  .rl-zone { gap: 1rem; padding: 0.2rem 0.6rem; }
  .rl-wheel-wrap { width: min(56vh, 40vw); height: min(56vh, 40vw); }
  .rl-num span { font-size: clamp(0.42rem, 1.9vh, 0.7rem); }
  .rl-tc { aspect-ratio: 1 / 1; font-size: clamp(0.42rem, 1.8vh, 0.66rem); }
  .rl-tc.z { font-size: 1rem; }
  .rl-simples .rl-tc { padding: 0.3rem 0.15rem; font-size: clamp(0.42rem, 1.7vh, 0.6rem); }
  .rl-bottom { padding: 0.25rem 0.8rem 0.45rem; flex-wrap: nowrap; gap: 0.6rem; }
  .rl-bank { font-size: 1rem; }
  .rl-rack { gap: 0.35rem; }
  .bj22-chip { width: 34px; height: 34px; font-size: 0.68rem; }
  .rl-btn { padding: 0.45rem 0.85rem 0.4rem; font-size: 0.6rem; letter-spacing: 0.18em; }
  .rl-help-btn { width: 28px; height: 28px; }
}
/* encaje exacto horizontal: bottom envuelve, zona en fila sin min-width heredado */
@media (orientation: landscape) and (max-height: 620px) {
  .rl-zone { flex-wrap: nowrap; }
  .rl-zone .rl-bets { min-width: 0; flex: 1 1 40%; }
  .rl-bottom { flex-wrap: wrap; }
  .rl-rack { flex-wrap: wrap; justify-content: center; }
  .rl-actions { flex: 1 1 100%; justify-content: center; }
}
/* fr tracks con min 0: el tableau encoge exactamente al espacio disponible */
.rl-board { grid-template-columns: 1fr minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) 1.4fr; }
.rl-simples { grid-template-columns: repeat(6, minmax(0, 1fr)); }
/* --- ROULETTE 3: tableau denso + colonnes/docenas en su sitio + zonas inside + fichas visibles --- */
.rl-board { gap: 2px; }
.rl-tc { aspect-ratio: 1 / 1; }
.rl-tc.z { font-size: 1rem; }
/* zonas de apuesta inside: bordes e intersecciones de las celdas */
.rlz {
  position: absolute; z-index: 3; background: transparent; cursor: pointer;
  border-radius: 3px; touch-action: manipulation;
}
.rlz:hover, .rlz.has { background: rgba(201,169,106,0.4); box-shadow: 0 0 0 1px #e6cf9a inset; }
.rlz-r { top: 15%; right: -8px; width: 16px; height: 70%; }
.rlz-b { bottom: -8px; left: 15%; height: 16px; width: 70%; }
.rlz-c { bottom: -9px; right: -9px; width: 18px; height: 18px; border-radius: 50%; }
.rlz-lu { top: 15%; left: -8px; width: 16px; height: 34%; }
.rlz-ll { bottom: 15%; left: -8px; width: 16px; height: 34%; }
/* fichas visibles sobre el tableau */
.rl-chip-slot { position: absolute; inset: 0; display: none; align-items: center; justify-content: center; z-index: 4; pointer-events: none; }
.rl-chip-slot.on { display: flex; }
.rl-mchip {
  min-width: 20px; height: 20px; border-radius: 50%;
  border: 2px dashed rgba(255,255,255,0.7);
  display: flex; align-items: center; justify-content: center;
  font-size: 0.5rem; font-weight: 700; color: #f4f1e8;
  box-shadow: 0 2px 6px rgba(0,0,0,0.6), 0 0 10px rgba(201,169,106,0.35);
  padding: 0 2px;
}
.rl-mchip.t10 { background: #23252f; } .rl-mchip.t25 { background: #5c1526; }
.rl-mchip.t50 { background: #16323f; } .rl-mchip.t100 { background: #2f2c79; }
.rl-mchip.t500 { background: #6b4a12; } .rl-mchip.t1000 { background: #8a6d2f; color: #0a0a0f; }
/* colonnes a la derecha, docenas abajo */
.rl-tc.co { background: rgba(201,169,106,0.14); color: #e6cf9a; border-color: rgba(201,169,106,0.55); font-size: clamp(0.5rem, 1.4vmin, 0.66rem); letter-spacing: 0.08em; }
.rl-dozen { grid-column: 2 / span 4; }
.rl-ball { width: 6.5%; height: 6.5%; left: 46.75%; top: 46.75%; }
/* --- ROULETTE 4: tableau orientacion referencia (cero arriba, docenas izq, 2:1 abajo, chances vertical) --- */
.rl-board { grid-template-columns: 1.15fr 1.15fr minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr); grid-template-rows: 0.62fr 1fr 1fr 1fr 0.85fr; }
.rl-zero-top { grid-area: 1 / 3 / 2 / 15; }
.rl-chances-col { grid-area: 2 / 1 / 5 / 2; display: grid; grid-template-rows: repeat(6, minmax(0,1fr)); gap: 2px; }
.rl-dozen-col { grid-area: 2 / 2 / 5 / 3; display: grid; grid-template-rows: repeat(3, minmax(0,1fr)); gap: 2px; }
.rl-tc.twoo { font-size: clamp(0.5rem, 1.4vmin, 0.68rem); letter-spacing: 0.12em; }
/* --- ROULETTE 4b: plantilla corregida 14 columnas + zonas orientacion referencia --- */
.rl-board { grid-template-columns: 1.15fr 1.15fr repeat(12, minmax(0, 1fr)); }
.rl-board .rl-tc.rl-zero-top { grid-area: 1 / 3 / 2 / 15; aspect-ratio: auto; border-color: rgba(201,169,106,0.55); }
.rlz-sh { top: 15%; right: -8px; width: 16px; height: 70%; }
.rlz-sv { bottom: -8px; left: 6%; height: 16px; width: 24%; }
.rlz-t  { top: -8px; right: 6%; width: 28%; height: 16px; }
.rlz-x  { top: -8px; right: 38%; width: 28%; height: 16px; }
/* --- ROULETTE 5: plantilla CLASICA (0 izq, 12 columnas de trios, 2:1 der, strips abajo) --- */
.rl-board { grid-template-columns: 0.85fr repeat(12, minmax(0, 1fr)) 1.1fr; grid-template-rows: repeat(3, minmax(0, 1fr)) 0.8fr 0.8fr; }
.rlz-xl { top: -8px; left: -9px; width: 18px; height: 16px; }
/* --- ROULETTE 6: tapis HORIZONTAL proporciones referencia (ancho, celdas mas anchas que altas) --- */
.rl-board .rl-tc { aspect-ratio: auto; border-color: rgba(226,226,233,0.45); }
.rl-board { width: 100%; aspect-ratio: 3.35 / 1; }
.rl-zone .rl-bets { flex: 1 1 46%; }
@media (orientation: landscape) and (max-height: 620px) {
  .rl-wheel-wrap { width: min(52vh, 34vw); height: min(52vh, 34vw); }
  .rl-zone .rl-bets { min-width: 0; flex: 1 1 58%; }
  .rl-tc { aspect-ratio: auto; }
  .rl-simples .rl-tc { padding: 0.1rem 0.1rem; }
}
/* --- ROULETTE 7: transversales mas grandes + zona Premiere Quatre en el 0 --- */
.rlz-t { top: -9px; left: 26%; right: 4%; width: auto; height: 18px; }
.rlz-f { top: 33%; right: -10px; width: 20px; height: 34%; }
/* --- ROULETTE 8: borde del 0 - transversales 0-2-3 / 0-1-2 + Quatre centrado --- */
.rlz-z1 { top: calc(33.3% - 9px); right: -10px; width: 20px; height: 18px; }
.rlz-f  { top: calc(50% - 9px);   right: -10px; width: 20px; height: 18px; }
.rlz-z2 { top: calc(66.6% - 9px); right: -10px; width: 20px; height: 18px; }
.rlz .rl-mchip { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); margin: 0; }
/* --- ROULETTE 9: borde del 0 real - quatre esquina superior + splits 0-3/0-2/0-1 + transversales --- */
.rlz-f   { top: -8px;              right: -10px; width: 20px; height: 16px; }
.rlz-sp3 { top: calc(16.7% - 7px); right: -10px; width: 20px; height: 14px; }
.rlz-z1  { top: calc(33.3% - 7px); right: -10px; width: 20px; height: 14px; }
.rlz-sp2 { top: calc(50% - 7px);   right: -10px; width: 20px; height: 14px; }
.rlz-z2  { top: calc(66.6% - 7px); right: -10px; width: 20px; height: 14px; }
.rlz-sp1 { top: calc(83.3% - 7px); right: -10px; width: 20px; height: 14px; }
/* --- ROULETTE 10: rl-mini con aspecto de cilindro (bolsillos conic + aro plate + cero verde) --- */
.rl-mini {
  border: 2px solid #c9a96a;
  background:
    radial-gradient(circle, transparent 0 17%, transparent 17%),
    conic-gradient(from 3deg, #14502d 0 12deg, transparent 12deg),
    radial-gradient(circle, transparent 0 70%, #a8acb6 70% 83%, #c9a96a 83% 87%, transparent 87%),
    repeating-conic-gradient(#8e1b30 0 15deg, #17171f 15deg 30deg);
}
.rl-mini::after {
  inset: 36%;
  border: 1px solid rgba(201,169,106,0.75);
  background: radial-gradient(circle at 40% 35%, #2a2740, #14121d);
}
/* la mini-roue perdida (Alex 22/08): pequeña, semitransparente, posición
   ALEATORIA en los laterales - misma familia Where's Wally que la 6♥ y la ficha.
   El loop de roulette.js la hace girar sola; el destello la delata cada 12s. */
.rl-mini {
  position: absolute; z-index: 400;
  top: auto; bottom: auto; left: auto;
  width: 34px; height: 34px; cursor: pointer;
  opacity: 0.17; transition: opacity 0.3s, box-shadow 0.3s, filter 0.3s;
  animation: pb-glimmer 12s ease-in-out infinite;
}
.rl-mini:hover {
  animation: none; opacity: 1;
  box-shadow: 0 8px 22px rgba(0,0,0,0.45), 0 0 20px rgba(201,169,106,0.55);
  filter: brightness(1.2);
}
@keyframes bj-corner-float { 0%, 100% { transform: rotate(6deg) translateY(0); } 50% { transform: rotate(6deg) translateY(-6px); } }
  
/* --- ROULETTE 11: piste ovale des annonces (racetrack) --- */
.rl-racetrack { width: min(100%, 340px); flex: 0 0 auto; margin-top: 0.55rem; }
.rl-racetrack svg { display: block; width: 100%; height: auto; }
.rl-rt-band { fill: none; stroke-width: 26; stroke-linecap: round; stroke-linejoin: round; cursor: pointer; }
.rl-rt-band.v { stroke: rgba(201,169,106,0.26); }
.rl-rt-band.t { stroke: rgba(106,102,196,0.28); }
.rl-rt-band.o { stroke: rgba(163,18,46,0.30); }
.rl-rt-band:hover { filter: brightness(1.7); }
.rl-rt-band.has { filter: drop-shadow(0 0 5px rgba(230,207,154,0.85)); }
.rl-rt-lbl { cursor: pointer; font-family: Jost, sans-serif; font-size: 9px; font-weight: 700; letter-spacing: 0.13em; fill: #d4d3d8; opacity: 0.92; }
.rl-rt-lbl:hover { fill: #e6cf9a; }
.rl-rt-lbl.has { fill: #e6cf9a; }
@media (orientation: landscape) and (max-height: 620px) {
  .rl-racetrack { width: min(100%, 236px); margin-top: 0.4rem; }
}
/* --- ROULETTE 12: encaje movil apaisado - rack y Lancer SIEMPRE visibles --- */
.rl-table { overflow: hidden; }
.rl-zone { min-height: 0; }
.rl-zone .rl-bets { min-height: 0; }
.rl-board-wrap { flex: 0 0 auto; max-width: 100%; }
.rl-racetrack { flex: 0 1 auto; min-height: 40px; display: flex; justify-content: center; }
.rl-racetrack svg { max-width: 100%; max-height: 100%; width: auto; height: auto; }
@media (orientation: landscape) and (max-height: 620px) {
  .rl-wheel-wrap { width: min(42vh, 30vw); height: min(42vh, 30vw); }
  .rl-board-wrap { max-width: calc((100vh - 260px) * 3.35); }
  .rl-racetrack { width: 100%; max-height: calc(100vh - 325px); }
}
/* --- NAV: links SIEMPRE en una sola linea (empate 662/661px los partia en dos) --- */
.nav-glass .nav-link { white-space: nowrap; }
.nav-glass ul { gap: clamp(0.75rem, 1.5vw, 1.2rem); }
@media (max-width: 1339px) {
  /* +la lupa de recherche (21/08): el wordmark se esconde un poco antes */
  .nav-glass > a span { display: none; }
}
/* nav estrecho (1024-1130): el bloque derecho no sale de la pildora */
@media (max-width: 1130px) {
  .nav-glass { padding-left: 1rem; padding-right: 1rem; gap: 0.75rem; }
}

@media (min-width: 1024px) {
  .nav-glass { padding-left: 1.4rem; padding-right: 1.4rem; }
}
/* recherche: la lupa vive en el pill desktop; en movil ya esta en el menu */
@media (max-width: 640px) {
  .nav-glass .nav-lupa { display: none; }
  .nav-glass { gap: 0.35rem; padding-left: 0.8rem; padding-right: 0.8rem; }
}

/* hub de la ruleta: logo real (favicon ligero) en vez del texto MA */
.rl-hub img { width: 72%; height: 72%; border-radius: 50%; object-fit: cover; }
/* badge royal: subtitulo largo centrado y con ancho contenido */
.royal-badge small { max-width: min(340px, 62vw); margin-left: auto; margin-right: auto; text-align: center; line-height: 1.5; }
/* badge royal: titulo centrado sobre el subtitulo */
.royal-badge { text-align: center; }
/* badge royal: en movil, centrado en pantalla (las cartas abren debajo) */
@media (max-width: 768px) {
  .royal-badge { top: 50%; }
}
/* badge royal movil: anclado al viewport (el hero apilado es mas alto que la pantalla) */
@media (max-width: 768px) {
  .royal-badge { position: fixed; top: 50%; left: 50%; }
}
/* badge royal movil: algo por encima del centro geometrico (pantallas altas) */
@media (max-width: 768px) {
  .royal-badge { top: 44%; }
}

/* ============ BOUCLE D'AVIS - #testimonials (20/08) ============ */
/* Teaser jour 1: compteur réel, aucun avis inventé */
.av-compteur { text-align: center; }
.av-compteur-n {
  display: block;
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-size: clamp(2.6rem, 6vw, 4rem);
  color: var(--gold, #c9a96a);
  line-height: 1;
}
.av-compteur-l {
  display: block;
  margin-top: .6rem;
  font-size: .72rem;
  letter-spacing: .32em;
  text-transform: uppercase;
  color: #aaa9ad;
}
/* Bandeau stats (≥1 avis publié) */
.av-bandeau {
  max-width: 46rem;
  margin: 0 auto 2.4rem;
  padding: .85rem 1.2rem;
  border-top: 1px solid rgba(201, 169, 106, .3);
  border-bottom: 1px solid rgba(201, 169, 106, .3);
  text-align: center;
  color: #c9a96a;
  font-size: .82rem;
  letter-spacing: .18em;
  text-transform: uppercase;
}
.av-sep { margin: 0 1rem; color: rgba(201, 169, 106, .5); }
/* Carrusel scroll-snap (swipe natif móvil) */
.av-wrap {
  position: relative;
  max-width: 72rem;
  margin: 0 auto;
}
.av-track {
  display: flex;
  gap: 1.25rem;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  padding: .5rem .25rem 1.25rem;
  scrollbar-width: none; /* Firefox */
}
.av-track::-webkit-scrollbar { display: none; }
.av-card {
  scroll-snap-align: center;
  flex: 0 0 min(21rem, 82vw);
  background: rgba(20, 20, 28, .55);
  border: 1px solid rgba(201, 169, 106, .22);
  border-radius: 1rem;
  padding: 1.6rem 1.5rem;
  display: flex;
  flex-direction: column;
}
.av-stars { color: #c9a96a; letter-spacing: .18em; font-size: 1rem; }
.av-title {
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-size: 1.3rem;
  color: #e8e8ee;
  margin: .7rem 0 .5rem;
}
.av-body {
  color: #aaa9ad;
  font-size: .88rem;
  line-height: 1.65;
  font-style: italic;
  flex: 1;
}
.av-sign {
  margin-top: 1rem;
  padding-top: .8rem;
  border-top: 1px solid rgba(201, 169, 106, .18);
}
.av-author {
  display: block;
  font-size: .72rem;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: #c9a96a;
}
.av-event {
  display: block;
  margin-top: .25rem;
  font-size: .68rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: #64748b;
}
.av-arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 5;
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 50%;
  border: 1px solid rgba(201, 169, 106, .4);
  background: rgba(10, 10, 15, .8);
  color: #c9a96a;
  font-size: 1rem;
  cursor: pointer;
  transition: border-color .2s, color .2s;
}
.av-arrow:hover { border-color: #c9a96a; color: #e0c98a; }
.av-arrow-l { left: -1rem; }
.av-arrow-r { right: -1rem; }
@media (max-width: 900px) {
  .av-arrow { display: none; } /* móvil: swipe natif */
}
@media (prefers-reduced-motion: reduce) {
  .av-track { scroll-behavior: auto; }
}
/* Boucle d'avis - subline expérience (15 ans de mains, Maison jeune) */
.av-compteur-sub {
  display: block;
  max-width: 34rem;
  margin: 1rem auto 0;
  font-size: .78rem;
  line-height: 1.6;
  letter-spacing: .02em;
  color: #64748b;
  font-style: italic;
}
/* Boucle d'avis - double stat (15 ans / 60 événements) */
.av-compteur-grid {
  display: flex;
  justify-content: center;
  gap: clamp(2.5rem, 8vw, 5.5rem);
  flex-wrap: wrap;
}
.av-compteur-grid .av-compteur-l { margin-top: .5rem; }

/* Bola roulette: más pequeña + color blindado (Edge "modo oscuro forzado"
   invierte fondos claros — fallback sólido + color muy luminoso). */
.rl-ball {
  width: 5.5%; height: 5.5%;
  left: 47.25%; top: 47.25%;
  background-color: #f7f4ec;
  background-image: radial-gradient(circle at 35% 30%, #ffffff, #eceade 60%, #c9c4b6);
  box-shadow: 0 2px 8px rgba(0,0,0,0.55), 0 0 14px rgba(255,255,255,0.6), inset -2px -2px 4px rgba(90,85,70,0.3);
}

/* BJ22: apuesta visible como FICHA (mismo lenguaje que la roulette) —
   pura CSS: el .sval pasa de vacío a ficha cuando hay apuesta. */
.bj22-spot .sval:not(:empty) {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 30px; height: 30px; padding: 0 6px; margin-top: 5px;
  border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, #f2ecdc, #dcc9a0 65%, #b99e6b);
  border: 2px dashed rgba(122, 96, 52, 0.55);
  color: #1c1508; font-family: 'Cormorant Garamond', serif; font-weight: 700;
  font-size: 0.82rem; line-height: 1;
  box-shadow: 0 3px 8px rgba(0, 0, 0, 0.55), 0 0 10px rgba(230, 207, 154, 0.35);
  animation: bjChipDrop 0.22s ease-out;
}
@keyframes bjChipDrop {
  from { transform: scale(1.5); opacity: 0; }
  to { transform: scale(1); opacity: 1; }
}

/* Calendrier maison de disponibilité (section Contact) */
.av-cal{background:rgba(20,20,28,.55);border:1px solid rgba(201,169,106,.25);border-radius:14px;padding:1rem;margin-top:4px}
.av-cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.7rem}
.av-cal-title{font-family:'Cormorant Garamond',serif;font-size:1.15rem;color:#e6cf9a;letter-spacing:.04em;text-transform:capitalize}
.av-cal-nav{background:none;border:1px solid rgba(201,169,106,.4);color:#c9a96a;border-radius:50%;width:28px;height:28px;cursor:pointer;font-size:.8rem}
.av-cal-nav:hover{background:rgba(201,169,106,.12)}
.av-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.av-dow{text-align:center;font-size:.58rem;letter-spacing:.15em;text-transform:uppercase;color:#64748b;padding:2px 0}
.av-day{position:relative;background:transparent;border:none;color:#d4d3d8;font-family:'Jost',sans-serif;font-size:.82rem;padding:.42rem 0;border-radius:8px;cursor:pointer;transition:background .15s}
.av-day:hover:not(:disabled){background:rgba(201,169,106,.18)}
.av-day.rsv{color:#64748b}
.av-day.rsv::after{content:'';position:absolute;bottom:3px;left:50%;transform:translateX(-50%);width:5px;height:5px;border-radius:50%;background:#a3122e}
.av-day:not(.rsv)::after{content:'';position:absolute;bottom:3px;left:50%;transform:translateX(-50%);width:5px;height:5px;border-radius:50%;background:rgba(34,197,94,.75)}
.av-day.past{opacity:.25;cursor:default}
.av-day.past::after{display:none}
.av-day.sel{background:linear-gradient(110deg,#c9a96a,#e0c98a);color:#0a0a0f;font-weight:700;box-shadow:0 0 12px rgba(201,169,106,.45)}
.av-day.sel::after{display:none}
.av-cal-legend{display:flex;gap:1.2rem;justify-content:center;margin-top:.6rem;font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:#64748b}
.av-dot{display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:5px;vertical-align:middle}
.av-dot.ok{background:rgba(34,197,94,.8)}
.av-dot.rsv{background:#a3122e}
.av-cal-verdict{min-height:1.4em;text-align:center;margin-top:.5rem;font-size:.85rem}
.av-cal-verdict .v-ok{color:#22c55e}
.av-cal-verdict .v-warn{color:#f59e0b}

/* ============================================================
   POKER À TROIS CARTES (tcp) - tercera mesa secreta (21/08)
   ============================================================ */
.tcp-table .bj22-title h2 em { color: #c9a96a; }
.tcp-zone { gap: 1rem; }
.tcp-player-row { text-align: center; }
.tcp-result { min-height: 1.5rem; font-size: 1.02rem; letter-spacing: 0.04em; font-weight: 600; margin-top: 0.4rem; }
.tcp-result.win { color: #c9a96a; }
.tcp-result.lose { color: #c46a6a; }
.tcp-result.push { color: #d4d3d8; }
.tcp-qualify { display: inline-block; margin-left: 0.55rem; font-size: 0.7rem; letter-spacing: 0.08em; text-transform: uppercase; padding: 0.12rem 0.55rem; border-radius: 999px; vertical-align: middle; }
.tcp-qualify:empty { display: none; }
.tcp-qualify.yes { border: 1px solid rgba(201,169,106,0.7); color: #c9a96a; }
.tcp-qualify.no { border: 1px solid rgba(196,30,58,0.8); color: #d4d3d8; }
.tcp-qualify.none { border: 1px solid rgba(212,211,216,0.3); color: #aaa9ad; }
.tcp-play-spot { opacity: 0.7; pointer-events: none; }
.tcp-conseil { font-size: 0.8rem; color: #aaa9ad; margin-top: 0.8rem; line-height: 1.5; }
.tcp-table .bj22-btn.danger { border-color: rgba(196,30,58,0.75); }
.tcp-table .bj22-btn.danger:hover { border-color: #c41e3a; }
@keyframes tcpFlip { 0% { transform: rotateY(88deg); } 100% { transform: rotateY(0deg); } }
.bj22-card.reveal { animation: tcpFlip 0.3s ease; }

/* La 3♠ secreta del hero: escondida tras el As (hs-card-5: top 58% right 6% rot -8)
   — asoma por abajo-izquierda; empuja el As con el puntero y la encontrarás */
/* La 3♠ perdida (Where's Wally, Alex 22/08): pequeña, semitransparente, posición
   ALEATORIA en los laterales - misma familia que la 6♥ y la mini-roue.
   La crea three-card-poker.js (ya no vive tras el As del hero). */.hs-card-tcp {
  position: absolute; z-index: 400;
  width: 32px; height: 45px; border-radius: 4px;
  background: linear-gradient(160deg, #f4f1e8, #ddd8cb);
  border: 1px solid rgba(160,124,60,0.45);
  box-shadow: 0 3px 9px rgba(0,0,0,0.25);
  color: #101018; font-family: 'Cormorant Garamond', serif;
  cursor: pointer; opacity: 0.17;
  transform: rotate(var(--rot, 0deg));
  transition: opacity 0.3s, box-shadow 0.3s, transform 0.3s;
  animation: pb-glimmer 12s ease-in-out infinite;
}
.hs-card-tcp:hover {
  animation: none;
  opacity: 1;
  transform: rotate(var(--rot, 0deg)) scale(1.25);
  box-shadow: 0 8px 22px rgba(0,0,0,0.45), 0 0 20px rgba(201,169,106,0.55);
  border-color: #c9a96a;
}
.hs-card-tcp .fc-corner { position: absolute; top: 2px; left: 3px; font-size: 0.56rem; font-weight: 700; line-height: 1.05; }
.hs-card-tcp .fc-corner.br { top: auto; left: auto; bottom: 2px; right: 3px; transform: rotate(180deg); }
.hs-card-tcp .fc-center { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 1rem; }

/* ============================================================
   ULTIMATE TEXAS HOLD'EM (uth) - cuarta mesa, la ficha olvidada (21/08)
   ============================================================ */
.uth-table .bj22-title h2 { font-size: 1.08rem; letter-spacing: 0.14em; }
.uth-zone { gap: 0.8rem; }
.uth-play-spot { opacity: 0.7; pointer-events: none; }
/* Círculos como la mesa real (patrón imagen Alex 21/08):
   TRIPS arriba centrado · ANTE y BLIND lado a lado · PLAY abajo delante del jugador.
   El bloque [cartas + columna] queda centrado en la mesa. */
.uth-zone {
  display: grid; grid-template-columns: auto auto;
  justify-content: center;
  align-content: space-evenly;
  align-items: center; justify-items: center;
  row-gap: 0.45rem; column-gap: 1.4rem;
}
.uth-zone > div:nth-child(1) { grid-column: 1 / -1; }  /* croupier */
.uth-zone > div:nth-child(2) { grid-column: 1 / -1; }  /* tableau */
.uth-zone > div:nth-child(3) { grid-column: 1; }       /* vos cartes */
.uth-zone .bj22-spots {
  grid-column: 2;
  display: grid; grid-template-columns: auto auto;
  justify-items: center; align-items: center; gap: 0.4rem;
}
.uth-zone .bj22-spots [data-spot="trips"],
.uth-zone .bj22-spots [data-spot="play"] { grid-column: 1 / -1; }
.uth-table .bj22-spot.main { width: 68px; height: 68px; }
.uth-table .bj22-spot.side { width: 58px; height: 58px; }
.uth-board-row { text-align: center; }
.uth-board { display: flex; gap: 0.5rem; min-height: 96px; align-items: center; justify-content: center; margin-top: 0.3rem; }
.uth-slot {
  width: 64px; height: 90px; border-radius: 7px; position: relative;
  border: 1px dashed rgba(201,169,106,0.38);
  background: rgba(10,10,15,0.32);
}
.uth-slot.dealt { border-color: transparent; background: none; }
.uth-slot .bj22-card { position: absolute; inset: 0; width: 100%; height: 100%; }
.uth-handname {
  display: inline-block; margin-left: 0.5rem;
  font-family: 'Cormorant Garamond', serif; font-style: italic;
  font-size: 0.85rem; letter-spacing: 0.05em; text-transform: none; color: #c9a96a;
}
.uth-handname:empty { display: none; }
/* botones contextuales por calle: la mesa lleva data-phase,
   solo se muestran Check/Miser/Se coucher de la ronda activa */
.uth-table .bj22-actions .bj22-btn[data-act="check"],
.uth-table .bj22-actions .bj22-btn[data-act="bet4"],
.uth-table .bj22-actions .bj22-btn[data-act="bet3"],
.uth-table .bj22-actions .bj22-btn[data-act="bet2"],
.uth-table .bj22-actions .bj22-btn[data-act="bet1"],
.uth-table .bj22-actions .bj22-btn[data-act="fold"] { display: none; }
.uth-table[data-phase="preflop"] .bj22-actions [data-act="check"],
.uth-table[data-phase="preflop"] .bj22-actions [data-act="bet4"],
.uth-table[data-phase="preflop"] .bj22-actions [data-act="bet3"],
.uth-table[data-phase="flop"] .bj22-actions [data-act="check"],
.uth-table[data-phase="flop"] .bj22-actions [data-act="bet2"],
.uth-table[data-phase="river"] .bj22-actions [data-act="bet1"],
.uth-table[data-phase="river"] .bj22-actions [data-act="fold"] { display: inline-block; }
@media (max-width: 680px) {
  .uth-table .bj22-title h2 { font-size: 0.92rem; letter-spacing: 0.08em; }
  .uth-slot { width: 50px; height: 71px; }
  .uth-board { gap: 0.35rem; min-height: 76px; }
  .uth-zone { column-gap: 0.6rem; row-gap: 0.3rem; }
  .uth-table .bj22-spot.main { width: 48px; height: 48px; }
  .uth-table .bj22-spot.side { width: 42px; height: 42px; }
  .uth-table .bj22-spot .sname { font-size: 0.42rem; letter-spacing: 0.1em; }
  .uth-table .bj22-spot .sval { font-size: 0.95rem; margin-top: 0; }
}
/* La ficha olvidada del footer: el cuarto acceso secreto.
   Medio caída, medio dormida - al acariciarla se endereza. */
.uth-chip {
  width: 34px; height: 34px; border-radius: 50%; flex: none;
  border: 2px dashed rgba(201,169,106,0.75);
  background: repeating-conic-gradient(#23252f 0 30deg, #343746 30deg 60deg);
  cursor: pointer; padding: 0;
  display: inline-flex; align-items: center; justify-content: center;
  opacity: 0.38; transform: rotate(14deg) translateY(2px);
  box-shadow: 0 4px 12px rgba(0,0,0,0.35);
  transition: opacity 0.3s, transform 0.3s, box-shadow 0.3s, border-color 0.3s;
}
.uth-chip img { width: 21px; height: 21px; border-radius: 50%; display: block; }
.uth-chip:hover, .uth-chip:focus-visible {
  opacity: 1; transform: rotate(0deg) scale(1.12);
  border-color: #e6cf9a;
  box-shadow: 0 8px 22px rgba(0,0,0,0.5), 0 0 20px rgba(201,169,106,0.45);
}

/* ============================================================
   PUNTO BANCO SUPER 6 (pb) - quinta mesa, la carta 6♥ perdida (22/08)
   ============================================================ */
.pb-duel { display: flex; align-items: center; justify-content: center; gap: clamp(1rem, 5vw, 3.5rem); flex-wrap: wrap; }
.pb-side { text-align: center; }
.pb-vs {
  font-size: 0.6rem; letter-spacing: 0.25em; text-transform: uppercase;
  color: rgba(212,211,216,0.5); text-align: center; line-height: 1.8;
  border: 1px solid rgba(212,211,216,0.18); border-radius: 999px;
  padding: 0.55rem 0.9rem;
}
.pb-total {
  min-width: 44px; margin: 0.35rem auto 0; text-align: center;
  font-family: 'Cormorant Garamond', serif; font-size: 1.3rem;
  color: #d4d3d8; background: rgba(10,10,15,0.5);
  border: 1px solid rgba(212,211,216,0.25);
  border-radius: 999px; padding: 0.08rem 0.55rem;
  transition: color 0.3s, border-color 0.3s, box-shadow 0.3s;
}
.pb-total:empty { visibility: hidden; }
.pb-total.win {
  color: #0a0a0f; background: linear-gradient(120deg, #e6cf9a, #c9a96a);
  border-color: transparent; box-shadow: 0 0 18px rgba(201,169,106,0.35);
}
.pb-result { min-height: 1.5rem; font-size: 1.02rem; letter-spacing: 0.04em; font-weight: 600; margin-top: 0.4rem; }
.pb-egalite-spot .sname { color: #c9a96a; }
.pb-six-spot { border-color: rgba(166,18,46,0.65); }
.pb-six-spot .sname { color: #d4a0a8; }
/* La carta 6♥ perdida: escondida estilo Where's Wally (Alex 22/08) -
   pequeñita y casi invisible en los laterales, un destello mágico cada
   ~12s la delata un instante; el puntero la revela. */
.pb-six-card {
  position: absolute; z-index: 400;
  width: 32px; height: 45px; border-radius: 4px;
  background: linear-gradient(160deg, #f4f1e8, #ddd8cb);
  border: 1px solid rgba(160,124,60,0.45);
  box-shadow: 0 3px 9px rgba(0,0,0,0.25);
  color: #a3122e; font-family: 'Cormorant Garamond', serif;
  cursor: pointer; opacity: 0.17;
  transform: rotate(var(--rot, 0deg));
  transition: opacity 0.3s, box-shadow 0.3s, transform 0.3s;
  animation: pb-glimmer 12s ease-in-out infinite;
}
@keyframes pb-glimmer {
  0%, 90%, 100% { opacity: 0.17; }
  95% { opacity: 0.55; }
}
.pb-six-card .idx { position: absolute; top: 2px; left: 3px; font-size: 0.56rem; font-weight: 700; line-height: 1.05; text-align: center; }
.pb-six-card .idx.b { top: auto; left: auto; bottom: 2px; right: 3px; transform: rotate(180deg); }
.pb-six-card .pip-big { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 1rem; }
.pb-six-card:hover {
  animation: none;
  opacity: 1;
  transform: rotate(var(--rot, 0deg)) scale(1.25);
  box-shadow: 0 8px 22px rgba(0,0,0,0.45), 0 0 20px rgba(201,169,106,0.55);
  border-color: #c9a96a;
}
@media (prefers-reduced-motion: reduce) { .pb-six-card { animation: none; } }
@media (max-width: 680px) {
  .pb-vs { display: none; }
  .pb-total { font-size: 1.1rem; }
}

/* ============================================================
   LA LEÇON DU CROUPIER (crg) - carte explicative des mesas (21/08)
   ============================================================ */
.crg-card {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  bottom: 138px;
  z-index: 60;
  width: calc(100% - 36px);
  max-width: 420px;
  background: linear-gradient(150deg, rgba(20,20,28,0.97), rgba(10,10,15,0.97));
  border: 1px solid rgba(201,169,106,0.55);
  border-radius: 14px;
  box-shadow: 0 18px 50px rgba(0,0,0,0.65), 0 0 30px rgba(201,169,106,0.10);
  animation: crgIn 0.3s ease;
  overflow: hidden;
}
@keyframes crgIn { from { opacity: 0; transform: translateX(-50%) translateY(14px); } to { opacity: 1; transform: translateX(-50%) translateY(0); } }
.crg-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 0.5rem 0.9rem;
  border-bottom: 1px solid rgba(201,169,106,0.25);
}
.crg-brand { font-size: 0.68rem; letter-spacing: 0.22em; text-transform: uppercase; color: #c9a96a; }
.crg-x {
  background: none; border: 1px solid rgba(212,211,216,0.25); border-radius: 8px;
  color: #aaa9ad; font-size: 0.8rem; padding: 0.1rem 0.45rem; cursor: pointer;
}
.crg-x:hover { border-color: #c9a96a; color: #e6cf9a; }
.crg-body { padding: 0.85rem 1rem 1rem; text-align: center; }
.crg-cards { display: flex; justify-content: center; gap: 0.45rem; margin-bottom: 0.65rem; }
.crg-card .bj22-card { width: 38px; height: 54px; border-radius: 5px; font-size: 0.8rem; }
.crg-card .bj22-card .idx { font-size: 0.7rem; top: 2px; left: 4px; }
.crg-card .bj22-card .idx.b { bottom: 2px; right: 4px; }
.crg-card .bj22-card .pip-big { font-size: 1.05rem; }
.crg-title { font-family: 'Cormorant Garamond', serif; font-size: 1.15rem; color: #d4d3d8; letter-spacing: 0.03em; }
.crg-pay {
  display: inline-block; margin-left: 0.4rem; font-size: 0.72rem; letter-spacing: 0.14em;
  color: #c9a96a; border: 1px solid rgba(201,169,106,0.55); border-radius: 999px; padding: 0.08rem 0.5rem;
  vertical-align: middle; text-transform: uppercase;
}
.crg-say { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 0.98rem; line-height: 1.5; color: #aaa9ad; margin: 0.55rem 0 0.4rem; }
.crg-math { font-size: 0.82rem; letter-spacing: 0.05em; color: #d4d3d8; margin-bottom: 0.7rem; }
.crg-math strong { color: #c9a96a; font-weight: 600; }
.crg-ok {
  font-family: inherit; cursor: pointer; letter-spacing: 0.18em; text-transform: uppercase;
  font-size: 0.72rem; padding: 0.45rem 1.4rem; border-radius: 999px;
  color: #0a0a0f; background: linear-gradient(145deg, #e6cf9a, #c9a96a);
  border: none;
}
.crg-ok:hover { filter: brightness(1.08); }
.crg-toggle {
  background: none; border: 1px solid rgba(212,211,216,0.25); border-radius: 8px;
  width: 26px; height: 26px; margin-right: 0.45rem; cursor: pointer;
  font-size: 0.85rem; line-height: 1; opacity: 0.45; filter: grayscale(1);
  transition: opacity 0.25s, filter 0.25s;
}
.crg-toggle.on { opacity: 1; filter: none; border-color: rgba(201,169,106,0.6); }
@media (max-width: 640px) {
  .crg-card { bottom: 118px; }
}
@media (prefers-reduced-motion: reduce) {
  .crg-card { animation: none; }
}

/* ============================================================
   RECHERCHE PUBLIQUE + nav-lupa (21/08)
   ============================================================ */
.nav-lupa {
  display: inline-flex; align-items: center; justify-content: center;
  width: 30px; height: 30px; border-radius: 50%;
  color: rgba(212,211,216,0.75); transition: color .25s, background .25s;
}
.nav-lupa:hover { color: #c9a96a; background: rgba(201,169,106,0.10); }

.rch-hero { max-width: 640px; margin: 0 auto; }
.rch-hero .shop-search { width: 100%; min-width: 0; font-size: 1.02rem; padding: .85rem 1.1rem; }
.rch-group { margin-top: 2.6rem; }
.rch-group-title {
  font-family: 'Cormorant Garamond', serif; font-size: 1.35rem; color: #d4d3d8;
  letter-spacing: .03em; display: flex; align-items: center; gap: .6rem; margin-bottom: 1rem;
}
.rch-badge {
  font-family: 'Jost', sans-serif; font-size: .62rem; letter-spacing: .18em; text-transform: uppercase;
  color: #c9a96a; border: 1px solid rgba(201,169,106,0.55); border-radius: 999px; padding: .14rem .55rem;
}
.rch-card {
  display: block; padding: 1rem 1.2rem; border: 1px solid rgba(212,211,216,0.14);
  border-radius: 12px; margin-bottom: .7rem; background: rgba(20,20,28,0.55);
  transition: border-color .25s, transform .25s;
}
.rch-card:hover { border-color: rgba(201,169,106,0.6); transform: translateY(-2px); }
.rch-card h3 { font-family: 'Cormorant Garamond', serif; font-size: 1.12rem; color: #d4d3d8; margin: 0 0 .25rem; }
.rch-card p { margin: 0; font-size: .84rem; color: rgba(170,169,173,0.85); line-height: 1.55; }
.rch-card .rch-where { font-size: .68rem; letter-spacing: .12em; text-transform: uppercase; color: rgba(201,169,106,0.75); }
.rch-empty {
  text-align: center; padding: 4rem 1rem; font-family: 'Cormorant Garamond', serif;
  font-style: italic; font-size: 1.3rem; color: rgba(212,211,216,0.65); line-height: 1.7;
}

/* ============================================================
   LE TEMPLE DE L'AS (spec 22/08) - capas de profundidad del hero
   ============================================================
   Capa FONDO: cartas y fichas decorativas existentes, recolocadas
   a la franja inferior-lateral, más pequeñas (scale por profundidad
   en el motor) y difusas - nunca sobre el título ni el logo.
   Capa MEDIO: contenido. Capa FRENTE: los dados, intocables. */
.hs-blur { filter: blur(1.3px); }
.hs-blur-2 { filter: blur(2px); }



/* La carte BJ perdida (Where's Wally, Alex 22/08): misma familia que la 3♠ -
   la crea blackjack-22.js; ya no vive fija en #elite */
.hs-card-bj {
  position: absolute; z-index: 400;
  width: 32px; height: 45px; border-radius: 4px;
  background: linear-gradient(160deg, #f4f1e8, #ddd8cb);
  border: 1px solid rgba(160,124,60,0.45);
  box-shadow: 0 3px 9px rgba(0,0,0,0.25);
  color: #101018; font-family: 'Cormorant Garamond', serif;
  cursor: pointer; opacity: 0.17;
  transform: rotate(var(--rot, 0deg));
  transition: opacity 0.3s, box-shadow 0.3s, transform 0.3s;
  animation: pb-glimmer 12s ease-in-out infinite;
}
.hs-card-bj:hover {
  animation: none; opacity: 1;
  transform: rotate(var(--rot, 0deg)) scale(1.25);
  box-shadow: 0 8px 22px rgba(0,0,0,0.45), 0 0 20px rgba(201,169,106,0.55);
  border-color: #c9a96a;
}
.hs-card-bj .fc-corner { position: absolute; top: 2px; left: 3px; font-size: 0.5rem; font-weight: 700; line-height: 1.05; }
.hs-card-bj .fc-corner.br { top: auto; left: auto; bottom: 2px; right: 3px; transform: rotate(180deg); }
.hs-card-bj .fc-center { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 1rem; }

/* --- Apuestas en VERTICAL como las mesas reales (Alex 22/08) --- */
/* TCP: Paire Plus arriba · Ante en medio · Play abajo (columna) */
.tcp-table .bj22-spots {
  display: grid; grid-template-columns: 1fr;
  justify-items: center; row-gap: 0.5rem;
}
.tcp-table .bj22-spot.side { width: 62px; height: 62px; }
.tcp-table .bj22-spot.main, .tcp-table .tcp-play-spot { width: 76px; height: 76px; }
/* BJ22: side bets arriba lado a lado (pequeños), la Mise abajo (grande) */
.bj22-table:not(.tcp-table):not(.uth-table):not(.pb-table) .bj22-spots {
  display: grid; grid-template-columns: auto auto;
  column-gap: 0.7rem; row-gap: 0.5rem; justify-items: center;
}
.bj22-table:not(.tcp-table):not(.uth-table):not(.pb-table) .bj22-spot.side { width: 60px; height: 60px; order: -1; }
.bj22-table:not(.tcp-table):not(.uth-table):not(.pb-table) .bj22-spot.main {
  grid-column: 1 / -1; width: 88px; height: 88px; order: 2;
}
/* ============================================================
   La Carte du Jeu - popup al hover de las trampillas Wally (Alex 22/08):
   DEBAJO de la carta, borde plateado, fondo de la página, nombre en dorado
   ============================================================ */
.wally-tip {
  /* Cancelado por Alex (2x) y sacaba del layout movil (scrollWidth 528>360) */
  display: none !important;
  position: absolute; top: calc(100% + 12px); left: 50%;
  transform: translateX(-50%) translateY(6px);
  background: #0a0a0f;
  border: 1px solid rgba(212,211,216,0.55); border-radius: 10px;
  padding: 0.55rem 1.2rem 0.5rem;
  font-family: 'Cormorant Garamond', serif;
  font-size: 0.98rem; letter-spacing: 0.14em; text-transform: uppercase;
  color: #c9a96a; white-space: nowrap; text-align: center;
  opacity: 0; pointer-events: none; z-index: 5;
  box-shadow: 0 10px 26px rgba(0,0,0,0.55);
  transition: opacity 0.25s ease 0.15s, transform 0.3s ease 0.15s;
}
.wally-tip::after {
  content: ''; position: absolute; bottom: 100%; left: 50%;
  transform: translateX(-50%);
  border: 5px solid transparent; border-bottom-color: rgba(212,211,216,0.55);
}
.hs-card-tcp:hover .wally-tip, .hs-card-bj:hover .wally-tip, .pb-six-card:hover .wally-tip {
  opacity: 1; transform: translateX(-50%) translateY(0);
}
@media (prefers-reduced-motion: reduce) {
  .wally-tip { transition: opacity 0.15s; }
}

/* Wrapper de la mini-roue (el tip no gira con ella) + tip de la ficha UTH */
.rl-wally { position: absolute; z-index: 400; }
.rl-wally .rl-mini { position: relative; left: auto; top: auto; }
.rl-wally:hover .wally-tip {
  opacity: 1; transform: translateX(-50%) translateY(0);
}


/* Alex 22/08: con 6+6 (rotY 180) las caras laterales quedan de canto y el
   antialiasing las pinta como línea cuadrada en los bordes. Fix: caras 1px
   menores por lado - no asoman del perfil del dado */
.hero-scene .die-face { inset: 1px; }

/* ============================================================
   Estabilización móvil (20/09, sobrevive a la reversión del mazo):
   FAB WhatsApp con capa propia; lanzadores wally sin glimmer en
   <=768px (parpadeo en GPUs justas).
   ============================================================ */
.whatsapp-pulse::before { will-change: transform, opacity; }
.hs-card-tcp, .pb-six-card, .rl-mini, .hs-roulette { will-change: opacity, transform; }
@media (max-width: 768px) {
  .hs-card-bj, .hs-card-tcp, .pb-six-card, .rl-mini, .hs-roulette {
    animation: none !important;
    opacity: 0.35;
  }
}
