/* ============================================================================
   RIVANDO MALL — Esperienza negozio immersiva 2.5D
   ========================================================================== */
.rv-store{
  position:fixed; inset:0; z-index:var(--rv-z-scene);
  background:#0a0907; overflow:hidden;
  --depth:0;
  opacity:0; transition:opacity .45s var(--rv-ease);
}
.rv-store.rv-store-in{ opacity:1; }
.rv-store.rv-store-out{ opacity:0; transform:scale(1.02); }

/* ---------- layer profondità ---------- */
.rv-parallax{ position:absolute; inset:0; width:160%; z-index:1; will-change:transform; pointer-events:none; }
.rv-foreground{ position:absolute; inset:0; width:130%; z-index:6; pointer-events:none; will-change:transform; }
.rv-px{ position:absolute; inset:0; }
.rv-px-sky{ position:absolute; inset:0; background:
  linear-gradient(180deg, color-mix(in srgb,var(--store-accent) 16%,#0a0907), #0a0907 55%);
}
.rv-px-wall{ position:absolute; left:0; right:0; top:0; height:62%;
  background:
    linear-gradient(180deg, rgba(255,255,255,.04), transparent 60%),
    repeating-linear-gradient(90deg, rgba(255,255,255,.03) 0 2px, transparent 2px 130px);
}
.rv-px-floor{ position:absolute; left:-30%; right:-30%; bottom:0; height:42%;
  background:linear-gradient(180deg, color-mix(in srgb,var(--store-accent) 10%, #131210), #050505);
  transform:perspective(600px) rotateX(58deg); transform-origin:top; opacity:.9;
  box-shadow:0 -1px 0 rgba(255,255,255,.08) inset;
}
.rv-px-lights{ position:absolute; left:0; right:0; top:7%; height:60px; display:flex; justify-content:space-around; }
.rv-px-light{ width:120px; height:14px; border-radius:0 0 40px 40px;
  background:radial-gradient(60% 140% at 50% 0%, color-mix(in srgb,var(--store-accent2) 75%, #fff), transparent 70%);
  filter:blur(2px); opacity:calc(.5 + var(--depth)*.4);
}
/* near foreground columns */
.rv-fg-col{ position:absolute; top:0; bottom:0; width:60px; background:linear-gradient(90deg, rgba(0,0,0,.5), transparent); filter:blur(1px); }
.rv-fg-col-0{ left:-2%; } .rv-fg-col-1{ left:60%; opacity:.5; } .rv-fg-col-2{ left:120%; }

/* ---------- stage scrollabile ("camminata") ---------- */
.rv-stage{
  position:absolute; inset:0; z-index:3;
  overflow-x:auto; overflow-y:hidden; white-space:nowrap;
  scroll-snap-type:x proximity; scroll-behavior:smooth;
  -webkit-overflow-scrolling:touch; outline:none;
  perspective:1400px;
}
.rv-stage::-webkit-scrollbar{ height:0; }
.rv-track{ display:flex; height:100%; width:max-content; }
.rv-zone{
  position:relative; width:100vw; height:100%; flex:0 0 100vw;
  scroll-snap-align:center; display:flex; flex-direction:column;
  align-items:center; justify-content:flex-end; padding:0 0 7vh;
  white-space:normal;
}
.rv-zone-plaque{
  position:absolute; top:84px; left:50%; transform:translateX(-50%);
  font-size:15px; letter-spacing:.28em; text-transform:uppercase; color:var(--store-accent);
  padding:7px 18px; border:1px solid color-mix(in srgb,var(--store-accent) 40%, transparent);
  border-radius:999px; background:rgba(0,0,0,.4); z-index:5;
}

/* ---------- prodotti a scaffale ---------- */
.rv-shelf-area{
  position:relative; z-index:4; display:flex; gap:18px; flex-wrap:wrap; justify-content:center;
  max-width:min(1100px,92vw); margin-bottom:2vh;
}
.rv-shelf-area--mann{ margin-top:auto; }
.rv-rack-area{ position:relative; z-index:4; display:flex; gap:16px; justify-content:center; flex-wrap:wrap; max-width:min(1000px,92vw); }

.rv-prod{
  width:184px; background:var(--rv-bg-3); border:1px solid var(--rv-line);
  border-radius:var(--rv-r-md); overflow:hidden; cursor:pointer; text-align:left;
  transition:transform .3s var(--rv-ease), box-shadow .3s var(--rv-ease), border-color .3s;
}
.rv-prod:hover{ transform:translateY(-7px); border-color:var(--store-accent); box-shadow:0 18px 44px rgba(0,0,0,.55); }
.rv-prod:focus-visible{ outline:2px solid var(--store-accent); outline-offset:2px; }
.rv-prod-img{ position:relative; height:184px; background:#0c0b09; overflow:hidden; }
.rv-prod-img img{ width:100%; height:100%; object-fit:cover; transition:transform .5s var(--rv-ease); }
.rv-prod:hover .rv-prod-img img{ transform:scale(1.06); }
.rv-img-fallback{ opacity:0; }
.rv-prod-badges{ position:absolute; top:8px; left:8px; display:flex; flex-direction:column; gap:5px; }
.rv-badge{ font-size:10px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; padding:4px 8px; border-radius:6px; }
.rv-badge--best{ background:var(--rv-gold); color:#1a1610; }
.rv-badge--low{ background:var(--rv-warn); color:#1a1610; }
.rv-prod-meta{ padding:11px 12px 13px; }
.rv-prod-brand{ font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:var(--rv-ink-mute); }
.rv-prod-title{ font-size:13px; line-height:1.3; margin:3px 0 7px; height:34px; overflow:hidden; }
.rv-prod-price{ font-weight:800; color:var(--rv-gold-soft); }

/* TERMINATO */
.rv-soldout-overlay{ position:absolute; inset:0; display:grid; place-items:center; background:rgba(8,8,8,.62); backdrop-filter:grayscale(1) blur(1px); }
.rv-prod--soldout .rv-prod-img img{ filter:grayscale(.9) brightness(.55); }
.rv-soldout-tag{ font-weight:900; letter-spacing:.22em; font-size:13px; color:#fff; border:2px solid #fff; padding:6px 12px; border-radius:6px; transform:rotate(-7deg); }
.rv-soldout-overlay--lg .rv-soldout-tag{ font-size:22px; padding:10px 20px; }
.rv-prod--soldout{ cursor:pointer; }

/* ---------- animazione "messo a scaffale" ---------- */
.rv-restocking{ opacity:0; transform:translateY(-46px) rotate(-4deg) scale(.9); }
.rv-stocked{ animation:rvStock .55s var(--rv-ease) both; }
@keyframes rvStock{ 0%{opacity:0; transform:translateY(-46px) rotate(-4deg) scale(.9)} 60%{opacity:1; transform:translateY(6px) scale(1.02)} 100%{opacity:1; transform:none} }
.rv-spark{ position:absolute; top:8px; right:8px; width:14px; height:14px; pointer-events:none;
  background:radial-gradient(circle, #fff, transparent 60%); border-radius:50%; animation:rvSpark .7s var(--rv-ease) both; }
@keyframes rvSpark{ 0%{opacity:0; transform:scale(.2)} 40%{opacity:1; transform:scale(1.3)} 100%{opacity:0; transform:scale(1.8)} }
.rv-clerk{ position:absolute; bottom:8vh; left:-90px; z-index:5; width:70px; height:150px; animation:rvClerkWalk 2.4s linear; }
.rv-clerk-body{ position:relative; width:100%; height:100%; }
.rv-clerk-head{ width:26px; height:26px; border-radius:50%; background:var(--rv-ink-soft); margin:0 auto; }
.rv-clerk-body::after{ content:""; position:absolute; top:30px; left:50%; transform:translateX(-50%); width:34px; height:64px; border-radius:14px; background:linear-gradient(180deg,var(--store-accent),#222); }
.rv-clerk-cart{ position:absolute; bottom:0; left:40px; width:34px; height:26px; border:2px solid var(--rv-ink-mute); border-radius:4px; }
.rv-clerk-leave{ opacity:0; transition:opacity .6s; }
@keyframes rvClerkWalk{ from{left:-90px} to{left:70%} }

/* ---------- scenografie boutique ---------- */
.rv-vetrina{ position:relative; width:min(900px,90vw); height:54vh; align-self:center; margin-bottom:auto; margin-top:16vh; display:grid; place-items:center; }
.rv-neon{ font-size:clamp(30px,6vw,64px); color:#fff;
  text-shadow:0 0 8px var(--store-accent), 0 0 28px var(--store-accent), 0 0 50px color-mix(in srgb,var(--store-accent) 60%, transparent);
  animation:rvFlicker 4s infinite; }
@keyframes rvFlicker{ 0%,18%,22%,100%{opacity:1} 20%{opacity:.6} 70%{opacity:.95} }
.rv-neon--cyan{ --store-accent:#39d0ff; } .rv-neon--red{ --store-accent:#e0533d; } .rv-neon--retro{ --store-accent:#cf9f6a; }
.rv-welcome{ position:absolute; bottom:-2vh; color:var(--rv-ink-soft); text-align:center; font-size:15px; }
.rv-mannequin{ width:60px; height:150px; border-radius:30px 30px 12px 12px;
  background:linear-gradient(180deg, #d9d2c4, #8d8676); position:relative; }
.rv-mannequin::before{ content:""; position:absolute; top:-26px; left:50%; transform:translateX(-50%); width:24px; height:24px; border-radius:50%; background:#cfc8ba; }
.rv-mannequin--decor{ position:absolute; bottom:6vh; left:18%; opacity:.85; }
.rv-mannequin--decor.rv-mannequin--b{ left:auto; right:18%; }
.rv-mannequins{ display:flex; gap:40px; align-items:flex-end; margin-bottom:3vh; }
.rv-mannequin--podium{ box-shadow:0 30px 50px rgba(0,0,0,.5); }
.rv-mannequin--podium::after{ content:""; position:absolute; bottom:-18px; left:50%; transform:translateX(-50%); width:90px; height:18px; border-radius:50%; background:radial-gradient(closest-side, color-mix(in srgb,var(--store-accent) 70%, transparent), transparent); }
.rv-mannequin--b{ filter:hue-rotate(15deg); } .rv-mannequin--c{ filter:brightness(1.1); }
.rv-fitting-cta{ margin:0 0 2vh; }

.rv-shelfwall{ position:absolute; top:18vh; left:50%; transform:translateX(-50%); width:min(1000px,92vw); display:flex; flex-direction:column; gap:60px; z-index:2; }
.rv-shelf-board{ height:6px; background:linear-gradient(180deg,#3a342a,#1c1812); border-radius:3px; box-shadow:0 14px 30px rgba(0,0,0,.5); }
.rv-rack{ position:absolute; top:20vh; left:50%; transform:translateX(-50%); width:min(900px,90vw); height:30vh; }
.rv-rack-bar{ position:absolute; top:0; left:0; right:0; height:6px; border-radius:3px; background:linear-gradient(180deg,#cfc8ba,#6a6356); }
.rv-hanger{ position:absolute; top:6px; width:2px; height:46px; background:var(--rv-ink-mute); }
.rv-hanger:nth-child(2){left:8%} .rv-hanger:nth-child(3){left:22%} .rv-hanger:nth-child(4){left:36%} .rv-hanger:nth-child(5){left:50%} .rv-hanger:nth-child(6){left:64%} .rv-hanger:nth-child(7){left:78%} .rv-hanger:nth-child(8){left:92%}
.rv-hanger::after{ content:""; position:absolute; top:-7px; left:-6px; width:14px; height:9px; border:2px solid var(--rv-ink-mute); border-bottom:0; border-radius:8px 8px 0 0; }

.rv-counter{ position:relative; margin-top:16vh; display:grid; place-items:center; gap:14px; }
.rv-counter-desk{ width:min(560px,80vw); height:90px; border-radius:14px 14px 6px 6px; background:linear-gradient(180deg,#3a342a,#211c15); box-shadow:0 20px 40px rgba(0,0,0,.5); }
.rv-counter-sign{ font-size:24px; color:var(--store-accent); }
.rv-counter-cta{ text-align:center; max-width:520px; display:grid; gap:10px; margin-top:8px; }
.rv-counter-cta p{ color:var(--rv-ink-soft); margin:0 0 4px; }
.rv-counter-cta .rv-btn{ margin:0 5px; }
.rv-reco-label{ margin:10px 0 6px; }
.rv-shelf-area--reco .rv-prod{ width:150px; }

/* ---------- tech showroom ---------- */
.rv-tech-hall,.rv-car-hall,.rv-vintage-awning{ margin-top:18vh; display:grid; place-items:center; gap:14px; }
.rv-tech-arch{ width:min(700px,80vw); height:200px; border:2px solid #39d0ff; border-radius:120px 120px 0 0; box-shadow:0 0 40px #39d0ff inset, 0 0 30px rgba(57,208,255,.4); }
.rv-pedestals{ display:flex; gap:34px; margin-top:auto; margin-bottom:4vh; }
.rv-pedestal{ position:relative; width:90px; height:150px; }
.rv-pedestal-glow{ position:absolute; bottom:0; left:50%; transform:translateX(-50%); width:80px; height:80px; border-radius:50%; background:radial-gradient(circle,#39d0ff,transparent 65%); filter:blur(3px); animation:rvPulse 2.4s infinite; }
.rv-pedestal-item{ position:absolute; bottom:30px; left:50%; transform:translateX(-50%); width:44px; height:70px; border-radius:8px; background:linear-gradient(180deg,#2a2f38,#0d1014); border:1px solid #39d0ff66; }
@keyframes rvPulse{ 0%,100%{opacity:.5; transform:translateX(-50%) scale(.9)} 50%{opacity:1; transform:translateX(-50%) scale(1.1)} }
.rv-tech-demo{ display:flex; gap:30px; margin-bottom:6vh; }
.rv-screen{ width:240px; height:150px; border-radius:10px; background:linear-gradient(135deg,#0e2230,#071018); border:1px solid #39d0ff55; box-shadow:0 0 30px rgba(57,208,255,.25); animation:rvGlow 3s infinite; }
.rv-screen--b{ width:170px; transform:translateY(20px); }
@keyframes rvGlow{ 0%,100%{box-shadow:0 0 24px rgba(57,208,255,.2)} 50%{box-shadow:0 0 40px rgba(57,208,255,.5)} }
.rv-tech-wall{ width:min(800px,86vw); height:46vh; margin-top:16vh; border-radius:12px; background:repeating-linear-gradient(90deg,#0e1116 0 60px,#121620 60px 64px); box-shadow:0 0 50px rgba(57,208,255,.15) inset; }

/* ---------- car showroom ---------- */
.rv-turntable{ position:relative; margin-top:auto; margin-bottom:5vh; display:grid; place-items:center; }
.rv-turntable-disc{ width:360px; height:90px; border-radius:50%; background:radial-gradient(closest-side,#2a2d31,#0c0d0f); box-shadow:0 0 50px rgba(224,83,61,.3); animation:rvSpin 9s linear infinite; }
@keyframes rvSpin{ to{transform:rotate(360deg)} }
.rv-car{ position:absolute; bottom:40px; width:300px; height:110px; }
.rv-car-body{ position:absolute; bottom:24px; left:0; right:0; height:56px; border-radius:46px 60px 18px 18px; background:linear-gradient(180deg,#e0533d,#7a2418); box-shadow:0 16px 30px rgba(0,0,0,.5); }
.rv-car-body::before{ content:""; position:absolute; top:-26px; left:60px; right:60px; height:40px; border-radius:30px 30px 0 0; background:linear-gradient(180deg,#b8392a,#7a2418); }
.rv-wheel{ position:absolute; bottom:0; width:46px; height:46px; border-radius:50%; background:radial-gradient(circle,#444 30%,#111 32%,#111 60%,#333 62%); }
.rv-wheel--f{ left:40px; } .rv-wheel--r{ right:40px; }
.rv-configurator{ margin-top:auto; margin-bottom:8vh; }
.rv-swatches{ display:flex; gap:16px; }
.rv-swatch{ width:50px; height:50px; border-radius:50%; border:2px solid rgba(255,255,255,.4); cursor:pointer; transition:transform .2s; }
.rv-swatch:hover{ transform:scale(1.15); }
.rv-car-delivery{ margin-top:20vh; }
.rv-ribbon{ width:min(520px,76vw); height:14px; background:repeating-linear-gradient(90deg,#e0533d 0 30px,#fff 30px 60px); border-radius:8px; }

/* ---------- vintage ---------- */
.rv-vintage-awning::before{ content:""; display:block; width:min(720px,82vw); height:40px; background:repeating-linear-gradient(90deg,#cf9f6a 0 30px,#5a8d82 30px 60px); border-radius:6px; margin-bottom:14px; }
.rv-crates{ display:flex; gap:18px; align-items:flex-end; margin-bottom:5vh; }
.rv-crate{ width:90px; height:70px; background:linear-gradient(180deg,#8a6a44,#5a4128); border:2px solid #3e2c19; border-radius:5px; box-shadow:0 12px 24px rgba(0,0,0,.4); }
.rv-crate:nth-child(2){ height:96px; } .rv-crate:nth-child(4){ height:84px; }
.rv-rack--retro .rv-rack-bar{ background:linear-gradient(180deg,#cf9f6a,#7a5a36); }
.rv-vinyl-wall{ display:flex; gap:30px; margin-top:16vh; }
.rv-vinyl{ width:120px; height:120px; border-radius:50%; background:repeating-radial-gradient(circle,#15110c 0 3px,#241a10 3px 6px); position:relative; }
.rv-vinyl::after{ content:""; position:absolute; inset:46%; border-radius:50%; background:#cf9f6a; }
.rv-vinyl--b{ transform:translateY(26px); }

/* ---------- generic room ---------- */
.rv-generic-room{ margin-top:18vh; }
.rv-room-frame{ width:min(700px,82vw); height:40vh; border:2px solid var(--store-accent); border-radius:12px; opacity:.5; }

/* ---------- porta ---------- */
.rv-door{ position:absolute; inset:0; z-index:7; display:flex; pointer-events:none; }
.rv-door-leaf{ width:50%; height:100%; background:linear-gradient(180deg,#1a1712,#0a0907); transition:transform 1s var(--rv-ease-in-out); }
.rv-door-l{ border-right:1px solid var(--store-accent); transform-origin:left; }
.rv-door-r{ border-left:1px solid var(--store-accent); transform-origin:right; }
.rv-door-sign{ position:absolute; top:42%; left:50%; transform:translateX(-50%); font-size:34px; color:var(--store-accent); text-shadow:0 0 20px var(--store-accent); transition:opacity .4s; }
.rv-door-open .rv-door-l{ transform:translateX(-100%); } .rv-door-open .rv-door-r{ transform:translateX(100%); }
.rv-door-open .rv-door-sign{ opacity:0; }

/* ---------- coming soon ---------- */
.rv-soon{ position:absolute; inset:0; z-index:8; display:grid; place-items:center; }
.rv-soon-veil{ position:absolute; inset:0; background:rgba(8,8,8,.66); backdrop-filter:blur(7px); transition:backdrop-filter .4s, background .4s; }
.rv-soon-peek .rv-soon-veil{ background:rgba(8,8,8,.18); backdrop-filter:blur(1.5px); }
.rv-soon-card{ position:relative; text-align:center; max-width:480px; padding:0 24px; }
.rv-soon-card h2{ font-size:clamp(34px,7vw,60px); margin:.1em 0 .25em; color:#fff; text-shadow:0 0 30px var(--store-accent); }
.rv-soon-card p{ color:var(--rv-ink-soft); margin:0 0 20px; }
.rv-soon-actions{ display:flex; gap:12px; justify-content:center; flex-wrap:wrap; }
.rv-countdown{ display:flex; gap:18px; justify-content:center; margin:0 0 24px; }
.rv-cd-u{ display:flex; flex-direction:column; font-size:12px; color:var(--rv-ink-mute); letter-spacing:.1em; text-transform:uppercase; }
.rv-cd-u b{ font-size:34px; font-family:var(--rv-serif); color:var(--store-accent); }

/* ---------- HUD ---------- */
.rv-hud{ position:absolute; left:0; right:0; top:0; z-index:9; pointer-events:none; }
.rv-hud>*{ pointer-events:auto; }
.rv-hud-top{ display:flex; align-items:center; justify-content:space-between; gap:14px; padding:16px 22px; background:linear-gradient(180deg,rgba(8,8,8,.85),transparent); }
.rv-hud-back,.rv-hud-ai{ padding:9px 15px; border-radius:10px; border:1px solid var(--rv-line-strong); background:rgba(0,0,0,.4); color:var(--rv-ink); cursor:pointer; font-weight:600; font-size:14px; }
.rv-hud-ai{ color:var(--store-accent); border-color:color-mix(in srgb,var(--store-accent) 50%, transparent); }
.rv-hud-back:hover,.rv-hud-ai:hover{ background:rgba(255,255,255,.08); }
.rv-hud-title{ text-align:center; line-height:1.2; }
.rv-hud-title strong{ display:block; font-size:16px; }
.rv-hud-tag{ font-size:12px; color:var(--rv-ink-mute); }
.rv-hud-progress{ height:3px; background:rgba(255,255,255,.1); margin:0 22px; border-radius:2px; overflow:hidden; }
.rv-hud-progress-fill{ height:100%; width:0; background:var(--store-accent); transition:width .1s linear; }
.rv-hud-bottom{ position:absolute; bottom:auto; }
.rv-hud-zones{ position:fixed; left:50%; bottom:26px; transform:translateX(-50%); display:flex; gap:8px; padding:8px 12px; background:rgba(8,8,8,.6); border:1px solid var(--rv-line); border-radius:999px; backdrop-filter:blur(8px); }
.rv-hud-zone{ display:flex; align-items:center; gap:6px; background:none; border:0; cursor:pointer; color:var(--rv-ink-mute); padding:4px 8px; border-radius:999px; font-size:12px; transition:.2s; }
.rv-hud-zone-dot{ width:8px; height:8px; border-radius:50%; background:currentColor; }
.rv-hud-zone-txt{ display:none; }
.rv-hud-zone.on{ color:var(--store-accent); background:rgba(255,255,255,.06); }
.rv-hud-zone.on .rv-hud-zone-txt{ display:inline; }
.rv-hud-nav{ position:fixed; right:22px; bottom:22px; display:flex; align-items:center; gap:10px; background:rgba(8,8,8,.6); border:1px solid var(--rv-line); border-radius:999px; padding:6px 8px; backdrop-filter:blur(8px); }
.rv-hud-arrow{ width:38px; height:38px; border-radius:50%; border:1px solid var(--rv-line-strong); background:rgba(0,0,0,.4); color:var(--rv-ink); cursor:pointer; font-size:20px; }
.rv-hud-arrow:hover{ border-color:var(--store-accent); color:var(--store-accent); }
.rv-hud-zonelabel{ font-size:13px; color:var(--rv-ink-soft); min-width:90px; text-align:center; }

@media (max-width:640px){
  .rv-prod{ width:150px; } .rv-prod-img{ height:150px; }
  .rv-hud-title{ display:none; }
  .rv-shelfwall{ top:15vh; }
}
