/*
Theme Name: Spider Society Italia
Theme URI: https://spidersocietyitalia.it
Author: Spider Society Italia
Description: Tema custom per Spider Society Italia — community ufficiale di cosplayer e appassionati di Spider-Man. Dark mode, accent rosso, animazioni moderne.
Version: 5.02
License: GNU General Public License v2 or later
Text Domain: spider-society
*/

/* PERF: i Google Fonts sono caricati dal <head> (header.php) con preconnect,
   in parallelo a questo CSS — l'@import qui li serializzava dopo 220KB di CSS. */

*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }

:root {
  /* === SPIDER-VERSE PALETTE (Rebrand 2026) === */
  /* Viola dominante come primary (sostituisce il rosso storico) */
  --red: #8B2FE0;        /* Viola Spider-Verse, primary */
  --red-dark: #6B1FB8;   /* Viola scuro (hover, depths) */
  --red-glow: #A855F7;   /* Viola brillante (glow, accents) */

  /* Accenti Spider-Verse multiverso */
  --magenta: #E91E63;    /* Magenta vivace (CTA secondari, badge) */
  --magenta-dark: #B91751;
  --cyan: #22D3EE;       /* Ciano elettrico (highlights, link hover) */
  --cyan-dark: #0891B2;

  /* Backgrounds (invariati, già perfetti) */
  --black: #0A0A0A;
  --black-light: #141414;
  --black-card: #1A1A1A;
  --grey: #888;
  --white: #F5F5F5;

  /* Font (invariati) */
  --font-display: 'Bebas Neue', sans-serif;
  --font-body: 'Rajdhani', sans-serif;
  --font-nav: 'Oswald', sans-serif;
}

html { scroll-behavior: smooth; }

body {
  background: var(--black);
  color: var(--white);
  font-family: var(--font-body);
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  margin: 0;
}

::-webkit-scrollbar { width: 8px; }
::-webkit-scrollbar-track { background: var(--black); }
::-webkit-scrollbar-thumb { background: var(--red-dark); border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: var(--red); }

.web-bg {
  position: fixed;
  top: 0; left: 0;
  width: 100%; height: 100%;
  pointer-events: none;
  z-index: 0;
  opacity: 0.03;
  background-image:
    radial-gradient(circle at 20% 30%, var(--red) 1px, transparent 1px),
    radial-gradient(circle at 80% 70%, var(--red) 1px, transparent 1px),
    radial-gradient(circle at 50% 50%, var(--red) 1px, transparent 1px);
  background-size: 120px 120px, 180px 180px, 90px 90px;
}

/* ===== NAVBAR ===== */
.navbar {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 1000;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0 40px;
  height: 70px;
  background: rgba(10,10,10,0.95);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border-bottom: 1px solid rgba(139, 47, 224,0.15);
  transition: height 0.3s ease, background 0.3s ease, border-color 0.3s ease;
  /* Fix iOS Safari: forza GPU acceleration per evitare detachment on scroll */
  -webkit-transform: translate3d(0, 0, 0);
  transform: translate3d(0, 0, 0);
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  will-change: auto;
}
.navbar.scrolled {
  height: 60px;
  background: rgba(10,10,10,0.95);
  border-bottom: 1px solid rgba(139, 47, 224,0.4);
}
.nav-logo {
  font-family: var(--font-display);
  font-size: 1.6rem;
  letter-spacing: 2px;
  color: var(--white);
  text-decoration: none;
  display: flex;
  align-items: center;
  gap: 10px;
}
.nav-logo img {
  height: 40px;
  width: auto;
  filter: drop-shadow(0 0 8px rgba(139, 47, 224,0.3));
  border-radius: 8px;
}
.nav-logo span { color: var(--red); }

.nav-links {
  display: flex;
  list-style: none;
  gap: 0;
  margin: 0;
  padding: 0;
}
.nav-links a {
  font-family: var(--font-nav);
  font-size: 0.85rem;
  font-weight: 500;
  letter-spacing: 2.5px;
  text-transform: uppercase;
  color: var(--grey);
  text-decoration: none;
  padding: 24px 22px;
  position: relative;
  transition: color 0.3s ease;
  display: block;
}
.nav-links a::after {
  content: '';
  position: absolute;
  bottom: 0; left: 50%;
  width: 0; height: 2px;
  background: var(--red);
  transition: all 0.3s ease;
  transform: translateX(-50%);
}
.nav-links a:hover { color: var(--white); }
.nav-links a:hover::after { width: 60%; }
.nav-links a.active,
.nav-links .current-menu-item a { color: var(--red); }
.nav-links a.active::after,
.nav-links .current-menu-item a::after { width: 60%; }

/* Botton Area Riservata nella navbar */
.nav-area-riservata {
  padding: 8px 18px !important;
  margin-left: 16px;
  background: var(--red) !important;
  color: var(--white) !important;
  border-radius: 6px;
  font-weight: 600 !important;
  font-size: 0.75rem !important;
  letter-spacing: 1.5px !important;
  transition: all 0.3s ease !important;
}
.nav-area-riservata:hover {
  background: var(--red-glow) !important;
  transform: translateY(-2px);
  box-shadow: 0 6px 20px rgba(139, 47, 224,0.35);
}
.nav-area-riservata::after { display: none !important; }

.nav-registrati {
  padding: 8px 18px !important;
  margin-left: 10px;
  background: transparent !important;
  color: var(--white) !important;
  border: 1px solid rgba(139, 47, 224,0.5) !important;
  border-radius: 6px;
  font-weight: 600 !important;
  font-size: 0.75rem !important;
  letter-spacing: 1.5px !important;
  transition: all 0.3s ease !important;
}
.nav-registrati:hover {
  background: rgba(139, 47, 224,0.12) !important;
  border-color: var(--red) !important;
  transform: translateY(-2px);
}
.nav-registrati::after { display: none !important; }

/* Riduce spazio link su schermi piccoli per far stare tutto */
@media (max-width: 1200px) {
  .nav-links a { padding: 24px 14px; font-size: 0.78rem; letter-spacing: 2px; }
  .nav-area-riservata { margin-left: 10px; padding: 8px 14px !important; }
}
@media (max-width: 1000px) {
  .nav-logo span + span, .nav-logo { font-size: 1.3rem; }
  .nav-links a { padding: 24px 10px; font-size: 0.72rem; letter-spacing: 1.5px; }
  .hero.hero-with-video { gap: 40px; padding: 60px 20px; }
  .hero-video-side { max-width: 280px; }
}

.hamburger {
  display: none;
  flex-direction: column;
  gap: 5px;
  cursor: pointer;
  padding: 10px;
  z-index: 1001;
  background: none;
  border: none;
}
.hamburger span {
  display: block;
  width: 28px; height: 2px;
  background: var(--white);
  transition: all 0.3s ease;
}
.hamburger.open span:nth-child(1) { transform: rotate(45deg) translate(5px,5px); }
.hamburger.open span:nth-child(2) { opacity: 0; }
.hamburger.open span:nth-child(3) { transform: rotate(-45deg) translate(5px,-5px); }

/* ===== PAGE CONTENT ===== */
.page-content {
  position: relative;
  z-index: 1;
  flex: 1;
  padding-top: 70px;
}

.section-header {
  text-align: center;
  margin-bottom: 60px;
  padding-top: 60px;
}
.section-header h2 {
  font-family: var(--font-display);
  font-size: clamp(2.5rem, 6vw, 4rem);
  letter-spacing: 4px;
  margin-bottom: 10px;
}
.section-header h2 .red { color: var(--red); }
.section-header p {
  font-size: 1rem;
  color: var(--grey);
  letter-spacing: 1px;
}
.section-divider {
  width: 60px;
  height: 3px;
  background: var(--red);
  margin: 16px auto 0;
  border-radius: 2px;
}

/* ===== HERO (Home) ===== */
.hero {
  min-height: calc(100vh - 70px);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 60px 20px 80px;
  overflow: hidden;
  position: relative;
}
.hero::before {
  content: '';
  position: absolute;
  top: -50%; left: -50%;
  width: 200%; height: 200%;
  background: radial-gradient(ellipse at center, rgba(139, 47, 224,0.08) 0%, transparent 60%);
  animation: pulse-bg 6s ease-in-out infinite;
}

/* Layout 2-colonne quando c'è il video */
.hero.hero-with-video {
  flex-direction: row;
  justify-content: center;
  align-items: center;
  gap: 60px;
  padding: 80px clamp(20px, 5vw, 80px);
  width: 100%;
}
.hero.hero-with-video > .hero-main,
.hero.hero-with-video > .hero-video-side {
  position: relative;
  z-index: 1;
}
.hero.hero-with-video .hero-main {
  flex: 1;
  max-width: 620px;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}
.hero.hero-with-video .hero-logo { width: 180px; height: 180px; margin-bottom: 20px; }
.hero.hero-with-video .hero-title { font-size: clamp(2.8rem, 6vw, 5.5rem); letter-spacing: 6px; }
.hero.hero-with-video .hero-subtitle { margin-bottom: 24px; }
.hero.hero-with-video .hero-tagline { margin-bottom: 30px; font-size: 1.05rem; }
.hero.hero-with-video .social-hub { margin-bottom: 30px; }

/* Colonna video (destra) */
.hero-video-side {
  position: relative; z-index: 1;
  flex: 0 0 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 24px;
  max-width: 340px;
}
.video-frame {
  position: relative;
  width: 100%;
  aspect-ratio: 9 / 16;
  border-radius: 18px;
  overflow: hidden;
  background: var(--black);
  border: 2px solid rgba(139, 47, 224,0.25);
  box-shadow: 0 25px 60px rgba(139, 47, 224,0.15), 0 0 0 1px rgba(255,255,255,0.02);
}
.video-frame video {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
}
.video-sound-toggle {
  position: absolute;
  bottom: 14px; right: 14px;
  width: 40px; height: 40px;
  border-radius: 50%;
  background: rgba(10,10,10,0.75);
  backdrop-filter: blur(10px);
  border: 1px solid rgba(139, 47, 224,0.3);
  color: var(--white);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.3s ease;
}
.video-sound-toggle:hover { background: var(--red); border-color: var(--red); }
.video-cta { text-align: center; }
.video-cta h3 {
  font-family: var(--font-display);
  font-size: 1.8rem;
  letter-spacing: 3px;
  color: var(--white);
  margin-bottom: 8px;
  line-height: 1.1;
}
.video-cta p {
  font-family: var(--font-nav);
  font-size: 0.85rem;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: rgba(245,245,245,0.7);
  margin-bottom: 18px;
}
.video-cta-btn {
  padding: 12px 24px;
  font-size: 0.8rem;
  letter-spacing: 2px;
}
.video-cta-btn svg { width: 18px; height: 18px; fill: currentColor; }
@keyframes pulse-bg {
  0%, 100% { opacity: 0.5; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.05); }
}
.hero-logo {
  position: relative; z-index: 1;
  width: 240px; height: 240px;
  margin-bottom: 30px;
  animation: float 4s ease-in-out infinite;
  filter: drop-shadow(0 0 50px rgba(139, 47, 224,0.3));
}
.hero-logo img { width: 100%; height: 100%; object-fit: contain; border-radius: 32px; }
@keyframes float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-14px); }
}
.hero-title {
  position: relative; z-index: 1;
  font-family: var(--font-display);
  font-size: clamp(3.5rem, 9vw, 8rem);
  letter-spacing: 10px;
  line-height: 0.95;
  margin-bottom: 8px;
  color: var(--white);
}
.hero-title .red { color: var(--red); }
.hero-subtitle {
  position: relative; z-index: 1;
  font-family: var(--font-nav);
  font-size: clamp(1rem, 2.5vw, 1.5rem);
  font-weight: 300;
  letter-spacing: 8px;
  text-transform: uppercase;
  color: var(--grey);
  margin-bottom: 40px;
}
.hero-tagline {
  position: relative; z-index: 1;
  font-size: 1.2rem;
  color: rgba(245,245,245,0.7);
  max-width: 580px;
  line-height: 1.7;
  margin-bottom: 50px;
}
.social-hub {
  position: relative; z-index: 1;
  display: flex; gap: 18px;
  flex-wrap: wrap;
  justify-content: center;
  margin-bottom: 50px;
}
.social-btn {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 28px;
  background: rgba(139, 47, 224,0.08);
  border: 1px solid rgba(139, 47, 224,0.25);
  border-radius: 50px;
  color: var(--white);
  text-decoration: none;
  font-family: var(--font-nav);
  font-size: 0.8rem;
  font-weight: 500;
  letter-spacing: 2px;
  text-transform: uppercase;
  transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
.social-btn svg { width: 20px; height: 20px; fill: var(--red); transition: all 0.3s ease; }
.social-btn:hover {
  background: var(--red); border-color: var(--red);
  transform: translateY(-3px);
  box-shadow: 0 10px 30px rgba(139, 47, 224,0.3);
}
.social-btn:hover svg { fill: var(--white); }

.cta-btn {
  position: relative; z-index: 1;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 16px 40px;
  background: linear-gradient(135deg, var(--red) 0%, var(--magenta) 100%);
  border: none; border-radius: 6px;
  color: var(--white);
  text-decoration: none;
  font-family: var(--font-nav);
  font-size: 0.9rem;
  font-weight: 600;
  letter-spacing: 3px;
  text-transform: uppercase;
  transition: all 0.4s ease;
  box-shadow: 0 4px 14px rgba(139, 47, 224, 0.35);
}
.cta-btn:hover {
  background: linear-gradient(135deg, var(--red-glow) 0%, var(--magenta) 100%);
  transform: translateY(-2px);
  box-shadow: 0 12px 35px rgba(139, 47, 224, 0.5), 0 0 30px rgba(233, 30, 99, 0.3);
  color: var(--white);
}
.cta-btn svg { width: 18px; height: 18px; fill: var(--white); }

.highlights {
  padding: 80px 40px;
  background: var(--black-light);
}
.highlights-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  max-width: 1000px;
  margin: 0 auto;
}
.highlight-item {
  text-align: center;
  padding: 40px 24px;
  background: var(--black-card);
  border: 1px solid rgba(139, 47, 224,0.08);
  border-radius: 12px;
  transition: all 0.4s ease;
}
.highlight-item:hover {
  border-color: rgba(139, 47, 224,0.25);
  transform: translateY(-4px);
}
.highlight-number {
  font-family: var(--font-display);
  font-size: 3rem;
  color: var(--red);
  line-height: 1;
  margin-bottom: 8px;
}
.highlight-label {
  font-family: var(--font-nav);
  font-size: 0.75rem;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--grey);
}

/* ===== CHI SIAMO ===== */
.about-section { padding: 40px 40px 100px; }
.about-intro {
  max-width: 700px;
  margin: 0 auto 80px;
  text-align: center;
}
.about-intro p {
  font-size: 1.15rem;
  color: rgba(245,245,245,0.7);
  line-height: 1.8;
}
.about-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 30px;
  max-width: 1100px;
  margin: 0 auto 80px;
}
.about-card {
  background: var(--black-card);
  border: 1px solid rgba(139, 47, 224,0.1);
  border-radius: 14px;
  padding: 44px 32px;
  text-align: center;
  transition: all 0.4s ease;
  position: relative;
  overflow: hidden;
}
.about-card::before {
  content: '';
  position: absolute;
  top: 0; left: 0;
  width: 100%; height: 3px;
  background: linear-gradient(90deg, transparent, var(--red), transparent);
  opacity: 0;
  transition: opacity 0.4s ease;
}
.about-card:hover {
  transform: translateY(-6px);
  border-color: rgba(139, 47, 224,0.3);
  box-shadow: 0 20px 50px rgba(0,0,0,0.5);
}
.about-card:hover::before { opacity: 1; }
.about-card .icon {
  width: 70px; height: 70px;
  margin: 0 auto 22px;
  background: rgba(139, 47, 224,0.1);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
}
.about-card .icon svg { width: 30px; height: 30px; fill: var(--red); }
.about-card h3 {
  font-family: var(--font-display);
  font-size: 1.7rem;
  letter-spacing: 2px;
  margin-bottom: 14px;
  color: var(--white);
}
.about-card p {
  font-size: 0.95rem;
  color: var(--grey);
  line-height: 1.8;
}

.mission {
  padding: 80px 40px;
  background: var(--black-light);
}
.mission-content {
  max-width: 800px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 4px 1fr;
  gap: 30px;
}
.mission-line {
  background: linear-gradient(to bottom, var(--red), rgba(139, 47, 224,0.1));
  border-radius: 2px;
}
.mission-text h3 {
  font-family: var(--font-display);
  font-size: 1.8rem;
  letter-spacing: 2px;
  margin-bottom: 16px;
  color: var(--red);
}
.mission-text p {
  font-size: 1.05rem;
  color: rgba(245,245,245,0.7);
  line-height: 1.9;
  margin-bottom: 16px;
}

/* ===== GALLERIA ===== */
.gallery-section { padding: 40px 40px 100px; }
.gallery-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  max-width: 1200px;
  margin: 0 auto;
}
.gallery-item {
  position: relative;
  aspect-ratio: 4/3;
  border-radius: 10px;
  overflow: hidden;
  background: var(--black-card);
  border: 1px solid rgba(139, 47, 224,0.08);
  transition: all 0.4s ease;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  cursor: pointer;
}
.gallery-item.featured {
  grid-column: span 2;
  grid-row: span 2;
  aspect-ratio: auto;
}
.gallery-item:hover {
  border-color: rgba(139, 47, 224,0.3);
  box-shadow: 0 8px 30px rgba(0,0,0,0.4);
  transform: translateY(-2px);
}
.gallery-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.6s ease;
}
.gallery-item:hover img { transform: scale(1.06); }
.gallery-item > svg { width: 48px; height: 48px; fill: rgba(139, 47, 224,0.2); }
.gallery-item > span {
  font-family: var(--font-nav);
  font-size: 0.75rem;
  letter-spacing: 2px;
  color: var(--grey);
  text-transform: uppercase;
}
.gallery-overlay {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  padding: 40px 22px 18px;
  background: linear-gradient(to top, rgba(10,10,10,0.9) 0%, rgba(10,10,10,0) 100%);
  color: var(--white);
  opacity: 0;
  transition: opacity 0.3s ease;
  pointer-events: none;
}
.gallery-item:hover .gallery-overlay { opacity: 1; }
.gallery-overlay strong {
  display: block;
  font-family: var(--font-display);
  font-size: 1.1rem;
  letter-spacing: 1.5px;
  margin-bottom: 4px;
}
.gallery-overlay span {
  display: block;
  font-size: 0.85rem;
  color: rgba(245,245,245,0.85);
  line-height: 1.4;
}

/* Lightbox */
.lightbox {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.95);
  z-index: 10000;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 40px 20px;
  opacity: 0;
  transition: opacity 0.3s ease;
}
.lightbox.open { display: flex; opacity: 1; }
.lightbox-content {
  max-width: 90vw;
  max-height: 90vh;
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
}
.lightbox-content img {
  max-width: 100%;
  max-height: 75vh;
  object-fit: contain;
  border-radius: 8px;
  box-shadow: 0 20px 60px rgba(139, 47, 224,0.15);
}
.lightbox-info { text-align: center; color: var(--white); max-width: 720px; }
.lightbox-info h3 {
  font-family: var(--font-display);
  font-size: 1.4rem;
  letter-spacing: 2px;
  margin-bottom: 6px;
  color: var(--white);
}
.lightbox-info p { color: rgba(245,245,245,0.75); font-size: 0.95rem; }
.lightbox-close {
  position: absolute;
  top: -50px; right: -10px;
  width: 40px; height: 40px;
  background: transparent;
  border: 1px solid rgba(139, 47, 224,0.3);
  color: var(--white);
  border-radius: 50%;
  font-size: 1.8rem;
  line-height: 1;
  cursor: pointer;
  transition: all 0.3s ease;
  display: flex;
  align-items: center;
  justify-content: center;
}
.lightbox-close:hover { background: var(--red); border-color: var(--red); }

.gallery-note {
  text-align: center;
  margin-top: 50px;
  padding: 30px;
  background: var(--black-card);
  border: 1px solid rgba(139, 47, 224,0.1);
  border-radius: 12px;
  max-width: 600px;
  margin-left: auto;
  margin-right: auto;
}
.gallery-note svg { width: 32px; height: 32px; fill: var(--red); margin-bottom: 12px; }
.gallery-note h3 {
  font-family: var(--font-display);
  font-size: 1.4rem;
  letter-spacing: 2px;
  margin-bottom: 8px;
  color: var(--white);
}
.gallery-note p {
  font-size: 0.9rem;
  color: var(--grey);
  line-height: 1.6;
}

/* ===== HOME SPOTLIGHT ===== */
.home-spotlight-section {
  padding: 80px 40px;
  max-width: 1100px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 60px;
}
.spotlight-block {
  display: grid;
  grid-template-columns: 1fr;
  background: var(--black-card);
  border: 1px solid rgba(139, 47, 224,0.12);
  border-radius: 16px;
  overflow: hidden;
  transition: all 0.4s ease;
}
.spotlight-block:hover {
  border-color: rgba(139, 47, 224,0.3);
  box-shadow: 0 20px 60px rgba(0,0,0,0.5);
  transform: translateY(-3px);
}
.spotlight-image {
  width: 100%;
  height: 380px;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  position: relative;
}
.spotlight-image::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom, transparent 60%, rgba(10,10,10,0.4) 100%);
  pointer-events: none;
}
.spotlight-text {
  padding: 36px 40px 44px;
}
.spotlight-text h3 {
  font-family: var(--font-display);
  font-size: clamp(1.8rem, 4vw, 2.6rem);
  letter-spacing: 3px;
  color: var(--white);
  margin-bottom: 14px;
}
.spotlight-desc {
  color: rgba(245,245,245,0.75);
  font-size: 1.05rem;
  line-height: 1.8;
}
.spotlight-desc p { margin-bottom: 12px; }
.spotlight-desc p:last-child { margin-bottom: 0; }

/* ===== EVENTI ===== */
.events-section { padding: 40px 40px 100px; }
.events-timeline {
  max-width: 750px;
  margin: 0 auto;
  position: relative;
}
.events-timeline::before {
  content: '';
  position: absolute;
  left: 24px; top: 0;
  width: 2px; height: 100%;
  background: linear-gradient(to bottom, var(--red), rgba(139, 47, 224,0.05));
}
.event-item {
  display: flex;
  gap: 30px;
  margin-bottom: 40px;
}
.event-dot {
  width: 50px; height: 50px;
  min-width: 50px;
  background: var(--black);
  border: 2px solid var(--red);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1;
  transition: all 0.3s ease;
}
.event-item:hover .event-dot {
  background: var(--red);
  box-shadow: 0 0 20px rgba(139, 47, 224,0.4);
}
.event-item:hover .event-dot svg { fill: var(--white); }
.event-dot svg { width: 20px; height: 20px; fill: var(--red); transition: fill 0.3s; }
.event-content {
  background: var(--black-card);
  border: 1px solid rgba(139, 47, 224,0.1);
  border-radius: 12px;
  padding: 28px;
  flex: 1;
  transition: all 0.4s ease;
}
.event-content:hover {
  border-color: rgba(139, 47, 224,0.3);
  box-shadow: 0 10px 40px rgba(0,0,0,0.4);
  transform: translateX(4px);
}
.event-date {
  font-family: var(--font-display);
  font-size: 0.9rem;
  letter-spacing: 2px;
  color: var(--red);
  margin-bottom: 6px;
}
.event-content h3 {
  font-family: var(--font-display);
  font-size: 1.5rem;
  letter-spacing: 2px;
  margin-bottom: 10px;
  color: var(--white);
}
.event-content p {
  font-size: 0.95rem;
  color: var(--grey);
  line-height: 1.7;
}
.event-badge {
  display: inline-block;
  padding: 6px 18px;
  background: rgba(139, 47, 224,0.1);
  border: 1px solid rgba(139, 47, 224,0.3);
  border-radius: 20px;
  font-family: var(--font-nav);
  font-size: 0.7rem;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--red);
  margin-top: 14px;
}

.events-cta {
  max-width: 750px;
  margin: 60px auto 0;
  padding: 50px 40px;
  background: linear-gradient(135deg, var(--black-card), rgba(139, 47, 224,0.05));
  border: 1px solid rgba(139, 47, 224,0.15);
  border-radius: 16px;
  text-align: center;
}
.events-cta h3 {
  font-family: var(--font-display);
  font-size: 2rem;
  letter-spacing: 3px;
  margin-bottom: 14px;
  color: var(--white);
}
.events-cta h3 span { color: var(--red); }
.events-cta p {
  font-size: 1rem;
  color: var(--grey);
  line-height: 1.7;
  margin-bottom: 30px;
  max-width: 500px;
  margin-left: auto;
  margin-right: auto;
}

/* ===== CONTATTI ===== */
.contact-section { padding: 40px 40px 100px; }
.contact-wrapper {
  max-width: 800px;
  margin: 0 auto;
  text-align: center;
}
.contact-email-card {
  display: flex;
  align-items: center;
  gap: 20px;
  padding: 30px 40px;
  background: var(--black-card);
  border: 1px solid rgba(139, 47, 224,0.15);
  border-radius: 14px;
  margin-bottom: 60px;
  transition: all 0.4s ease;
  text-decoration: none;
  color: var(--white);
  justify-content: center;
}
.contact-email-card:hover {
  border-color: rgba(139, 47, 224,0.4);
  box-shadow: 0 12px 40px rgba(0,0,0,0.4);
  transform: translateY(-3px);
  color: var(--white);
}
.email-icon {
  width: 56px; height: 56px;
  background: rgba(139, 47, 224,0.1);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.email-icon svg { width: 26px; height: 26px; fill: var(--red); }
.email-info { text-align: left; }
.email-label {
  font-family: var(--font-nav);
  font-size: 0.7rem;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--grey);
  margin-bottom: 4px;
}
.email-address {
  font-family: var(--font-nav);
  font-size: 1.1rem;
  letter-spacing: 1px;
  color: var(--white);
}
.social-section-title {
  font-family: var(--font-display);
  font-size: 1.6rem;
  letter-spacing: 3px;
  margin-bottom: 30px;
  color: var(--grey);
}
.social-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  margin-bottom: 60px;
}
.social-card {
  padding: 40px 24px;
  background: var(--black-card);
  border: 1px solid rgba(139, 47, 224,0.1);
  border-radius: 14px;
  text-align: center;
  text-decoration: none;
  color: var(--white);
  transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
  position: relative;
  overflow: hidden;
}
.social-card::before {
  content: '';
  position: absolute;
  bottom: 0; left: 0;
  width: 100%; height: 3px;
  background: var(--red);
  transform: scaleX(0);
  transition: transform 0.4s ease;
}
.social-card:hover::before { transform: scaleX(1); }
.social-card:hover {
  transform: translateY(-8px);
  border-color: rgba(139, 47, 224,0.3);
  box-shadow: 0 20px 50px rgba(0,0,0,0.4);
  color: var(--white);
}
.social-card svg {
  width: 40px; height: 40px;
  fill: var(--red);
  margin-bottom: 16px;
  transition: transform 0.3s ease;
}
.social-card:hover svg { transform: scale(1.15); }
.social-card .platform {
  display: block;
  font-family: var(--font-display);
  font-size: 1.3rem;
  letter-spacing: 2px;
  margin-bottom: 6px;
}
.social-card .handle {
  display: block;
  font-family: var(--font-nav);
  font-size: 0.7rem;
  letter-spacing: 1px;
  color: var(--grey);
}
.contact-cta {
  padding: 50px 40px;
  background: linear-gradient(135deg, var(--black-card), rgba(139, 47, 224,0.05));
  border: 1px solid rgba(139, 47, 224,0.12);
  border-radius: 16px;
}
.contact-cta h3 {
  font-family: var(--font-display);
  font-size: 1.8rem;
  letter-spacing: 3px;
  margin-bottom: 14px;
  color: var(--white);
}
.contact-cta h3 span { color: var(--red); }
.contact-cta p {
  font-size: 1rem;
  color: var(--grey);
  line-height: 1.7;
  max-width: 500px;
  margin: 0 auto;
}

/* ===== AREA RISERVATA ===== */
.members-area {
  padding: 60px 40px 100px;
  min-height: calc(100vh - 70px);
}
.members-welcome {
  max-width: 1000px;
  margin: 0 auto 50px;
  text-align: center;
}
.members-welcome h2 {
  font-family: var(--font-display);
  font-size: clamp(2rem, 5vw, 3.2rem);
  letter-spacing: 3px;
  margin-bottom: 14px;
  color: var(--white);
}
.members-welcome h2 span { color: var(--red); }
.members-welcome p { color: rgba(245,245,245,0.8); font-size: 1.05rem; }

/* Breadcrumb bar */
.breadcrumb-bar {
  max-width: 1100px;
  margin: 0 auto 30px;
  padding: 12px 0;
  font-family: var(--font-nav);
  font-size: 0.8rem;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--grey);
}
.breadcrumb-bar a {
  color: var(--grey);
  text-decoration: none;
  transition: color 0.3s ease;
}
.breadcrumb-bar a:hover { color: var(--cyan); }
.breadcrumb-bar span { color: var(--white); }

.members-grid {
  max-width: 1100px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 24px;
}
.member-card {
  background: var(--black-card);
  border: 1px solid rgba(139, 47, 224,0.1);
  border-radius: 14px;
  padding: 36px 28px;
  text-decoration: none;
  color: var(--white);
  transition: all 0.4s ease;
  text-align: center;
}
.member-card:hover {
  transform: translateY(-5px);
  border-color: var(--red);
  box-shadow: 0 15px 40px rgba(139, 47, 224,0.15);
  color: var(--white);
}
.member-card .icon {
  width: 64px; height: 64px;
  margin: 0 auto 18px;
  background: rgba(245,245,245,0.05);
  border: 1px solid rgba(245,245,245,0.08);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.3s ease;
}
.member-card .icon svg {
  width: 30px;
  height: 30px;
  fill: #E8E8E8;
  transition: fill 0.3s ease;
}
.member-card:hover .icon {
  background: rgba(139, 47, 224,0.1);
  border-color: rgba(139, 47, 224,0.3);
}
.member-card:hover .icon svg { fill: var(--white); }
.member-card h3 {
  font-family: var(--font-display);
  font-size: 1.35rem;
  letter-spacing: 2px;
  margin-bottom: 8px;
  color: var(--white);
}
.member-card p {
  color: rgba(245,245,245,0.75);
  font-size: 0.9rem;
  line-height: 1.5;
}
.member-card p.count-info {
  color: var(--red);
  font-family: var(--font-nav);
  font-size: 0.75rem;
  letter-spacing: 2px;
  text-transform: uppercase;
  margin-top: 6px;
}

/* Content list */
.content-list {
  max-width: 900px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.content-list-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 24px;
  padding: 22px 26px;
  background: var(--black-card);
  border: 1px solid rgba(139, 47, 224,0.1);
  border-radius: 12px;
  text-decoration: none;
  color: var(--white);
  transition: all 0.3s ease;
}
.content-list-item:hover {
  border-color: rgba(139, 47, 224,0.35);
  background: rgba(139, 47, 224,0.04);
  transform: translateX(4px);
  color: var(--white);
}
.content-list-main { flex: 1; min-width: 0; }
.content-list-main h3 {
  font-family: var(--font-display);
  font-size: 1.3rem;
  letter-spacing: 1.5px;
  margin-bottom: 4px;
  color: var(--white);
}
.content-list-excerpt {
  color: rgba(245,245,245,0.7);
  font-size: 0.9rem;
  line-height: 1.5;
  display: -webkit-box;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.content-list-meta {
  display: flex;
  flex-direction: column;
  gap: 6px;
  align-items: flex-end;
  flex-shrink: 0;
}
.content-list-meta span {
  font-family: var(--font-nav);
  font-size: 0.72rem;
  letter-spacing: 1.2px;
  text-transform: uppercase;
  color: var(--grey);
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.content-list-meta svg { fill: var(--red); }

/* Content meta bar (pagine singole) */
.content-meta-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 24px;
  padding: 14px 20px;
  background: var(--black-card);
  border: 1px solid rgba(139, 47, 224,0.1);
  border-radius: 10px;
  margin-bottom: 30px;
}
.content-meta-bar span {
  font-family: var(--font-nav);
  font-size: 0.78rem;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: rgba(245,245,245,0.75);
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.content-meta-bar strong { color: var(--white); font-weight: 600; }
.content-meta-bar svg { fill: var(--red); }

/* Empty state */
.empty-content {
  max-width: 600px;
  margin: 0 auto;
  text-align: center;
  padding: 50px 40px;
  background: var(--black-card);
  border: 1px solid rgba(139, 47, 224,0.12);
  border-radius: 14px;
}
.empty-content svg {
  width: 48px; height: 48px;
  fill: rgba(245,245,245,0.2);
  margin-bottom: 16px;
}
.empty-content h3 {
  font-family: var(--font-display);
  font-size: 1.4rem;
  letter-spacing: 2px;
  margin-bottom: 10px;
  color: var(--white);
}
.empty-content p { color: rgba(245,245,245,0.7); line-height: 1.6; }

/* ===== GALLERIA MEMBRI — admin actions ===== */
.gallery-admin-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px;
  margin-top: 20px;
}
.sss-btn {
  padding: 10px 22px;
  background: var(--red);
  color: var(--white);
  border: none;
  border-radius: 6px;
  font-family: var(--font-nav);
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 2px;
  text-transform: uppercase;
  cursor: pointer;
  transition: all 0.3s ease;
}
.sss-btn:hover { background: var(--red-glow); transform: translateY(-2px); box-shadow: 0 6px 20px rgba(139, 47, 224,0.35); }
.sss-btn.ghost {
  background: transparent;
  border: 1px solid rgba(139, 47, 224,0.3);
  color: var(--white);
}
.sss-btn.ghost:hover { background: rgba(139, 47, 224,0.1); border-color: var(--red); }
.sss-btn.danger { background: #4a1010; }
.sss-btn.danger:hover { background: #7a1818; }

/* Folder cards (eventi come cartelle con thumbnail) */
.folder-card {
  display: block;
  background: var(--black-card);
  border: 1px solid rgba(139, 47, 224,0.1);
  border-radius: 12px;
  overflow: hidden;
  text-decoration: none;
  color: var(--white);
  transition: all 0.4s ease;
}
.folder-card:hover {
  border-color: var(--red);
  transform: translateY(-4px);
  box-shadow: 0 15px 40px rgba(139, 47, 224,0.15);
  color: var(--white);
}
.folder-thumb {
  width: 100%;
  aspect-ratio: 4/3;
  background-size: cover;
  background-position: center;
  background-color: #0a0a0a;
}
.folder-thumb.empty {
  display: flex;
  align-items: center;
  justify-content: center;
}
.folder-thumb.empty svg { width: 40px; height: 40px; fill: rgba(139, 47, 224,0.25); }
.folder-info {
  padding: 16px 20px 18px;
  border-top: 1px solid rgba(139, 47, 224,0.08);
}
.folder-info h3 {
  font-family: var(--font-display);
  font-size: 1.25rem;
  letter-spacing: 1.5px;
  margin-bottom: 4px;
  color: var(--white);
}
.folder-info span {
  font-family: var(--font-nav);
  font-size: 0.72rem;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--red);
}

/* Foto grid */
.foto-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 12px;
  max-width: 1200px;
  margin: 0 auto;
}
.foto-item {
  position: relative;
  aspect-ratio: 1 / 1;
  overflow: hidden;
  border-radius: 8px;
  background: var(--black-card);
  border: 1px solid rgba(139, 47, 224,0.08);
  cursor: pointer;
  transition: all 0.3s ease;
}
.foto-item img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform 0.4s ease;
}
.foto-item:hover { border-color: rgba(139, 47, 224,0.3); }
.foto-item:hover img { transform: scale(1.05); }
.foto-delete {
  position: absolute;
  top: 6px; right: 6px;
  width: 28px; height: 28px;
  border: none;
  border-radius: 50%;
  background: rgba(10,10,10,0.85);
  color: var(--white);
  font-size: 1.4rem;
  line-height: 1;
  cursor: pointer;
  opacity: 0;
  transition: all 0.25s ease;
}
.foto-item:hover .foto-delete { opacity: 1; }
.foto-delete:hover { background: var(--red); }

/* Cover button (stella) */
.foto-cover-btn {
  position: absolute;
  top: 6px; left: 6px;
  width: 28px; height: 28px;
  border: none;
  border-radius: 50%;
  background: rgba(10,10,10,0.85);
  color: var(--white);
  cursor: pointer;
  opacity: 0;
  transition: all 0.25s ease;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
}
.foto-cover-btn svg { width: 14px; height: 14px; fill: currentColor; }
.foto-item:hover .foto-cover-btn { opacity: 1; }
.foto-cover-btn:hover { background: var(--red); }

.foto-item.is-cover { outline: 2px solid var(--red); outline-offset: -2px; }
.foto-item.is-cover .foto-cover-btn { opacity: 1; background: var(--red); }
.foto-cover-badge {
  position: absolute;
  bottom: 6px; left: 6px;
  padding: 4px 10px;
  background: var(--red);
  color: var(--white);
  font-family: var(--font-nav);
  font-size: 0.62rem;
  letter-spacing: 1.5px;
  font-weight: 600;
  border-radius: 4px;
  pointer-events: none;
}

/* Upload progress toast */
.upload-progress {
  position: fixed;
  bottom: 24px; left: 50%;
  transform: translateX(-50%);
  z-index: 10001;
  padding: 14px 28px;
  background: var(--black-card);
  border: 1px solid var(--red);
  border-radius: 8px;
  color: var(--white);
  font-family: var(--font-nav);
  font-size: 0.85rem;
  letter-spacing: 1px;
  box-shadow: 0 10px 30px rgba(0,0,0,0.5);
}

/* Login form styling */
.login-wrapper {
  max-width: 440px;
  margin: 80px auto;
  padding: 50px 40px;
  background: var(--black-card);
  border: 1px solid rgba(139, 47, 224,0.15);
  border-radius: 14px;
}
.login-wrapper h2 {
  font-family: var(--font-display);
  font-size: 2rem;
  letter-spacing: 3px;
  text-align: center;
  margin-bottom: 30px;
}
.login-wrapper h2 span { color: var(--red); }

/* ===== FOOTER ===== */
.site-footer {
  position: relative;
  z-index: 1;
  text-align: center;
  padding: 40px 20px;
  border-top: 1px solid rgba(139, 47, 224,0.1);
  background: var(--black-light);
}
.footer-inner {
  max-width: 800px;
  margin: 0 auto;
}
.footer-social {
  display: flex;
  justify-content: center;
  gap: 20px;
  margin-bottom: 24px;
}
.footer-social a {
  width: 42px; height: 42px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(139, 47, 224,0.08);
  border: 1px solid rgba(139, 47, 224,0.2);
  border-radius: 50%;
  transition: all 0.3s ease;
}
.footer-social a svg { width: 18px; height: 18px; fill: var(--red); transition: fill 0.3s; }
.footer-social a:hover { background: var(--red); border-color: var(--red); transform: translateY(-2px); }
.footer-social a:hover svg { fill: var(--white); }
.footer-disclaimer {
  font-size: 0.75rem;
  color: rgba(136,136,136,0.6);
  line-height: 1.8;
  letter-spacing: 0.5px;
}
.footer-disclaimer strong { color: var(--grey); font-weight: 600; }

/* ===== WP CONTENT STYLING (per le pagine WordPress) ===== */
.wp-page-content {
  max-width: 900px;
  margin: 0 auto;
  padding: 60px 40px 100px;
  color: var(--white);
}
.wp-page-content h1, .wp-page-content h2, .wp-page-content h3 {
  font-family: var(--font-display);
  letter-spacing: 2px;
  margin: 30px 0 18px;
  color: var(--white);
}
.wp-page-content h1 { font-size: 2.8rem; color: var(--red); }
.wp-page-content h2 { font-size: 2.2rem; }
.wp-page-content h3 { font-size: 1.6rem; }
.wp-page-content p, .wp-page-content li {
  font-size: 1.05rem;
  line-height: 1.8;
  color: rgba(245,245,245,0.85);
  margin-bottom: 16px;
}
.wp-page-content a { color: var(--red); text-decoration: none; }
.wp-page-content a:hover { color: var(--cyan); text-decoration: underline; }
.wp-page-content ul, .wp-page-content ol { padding-left: 24px; margin-bottom: 20px; }
.wp-page-content blockquote {
  border-left: 3px solid var(--red);
  padding: 10px 20px;
  background: var(--black-card);
  margin: 24px 0;
  font-style: italic;
}
.wp-page-content img { max-width: 100%; height: auto; border-radius: 8px; }
.wp-page-content code {
  background: var(--black-card);
  padding: 2px 8px;
  border-radius: 4px;
  color: var(--red);
  font-size: 0.9em;
}

/* Reveal animation */
.reveal { opacity: 0; transform: translateY(40px); transition: all 0.8s cubic-bezier(0.16, 1, 0.3, 1); }
.reveal.visible { opacity: 1; transform: translateY(0); }

/* Mobile */
@media (max-width: 768px) {
  .navbar { padding: 0 20px; }
  .nav-links {
    position: fixed;
    top: 0; right: -100%;
    width: 80%;
    height: 100vh;
    background: rgba(14,14,14,0.98);
    backdrop-filter: blur(20px);
    flex-direction: column;
    padding: 100px 40px 40px;
    gap: 0;
    transition: right 0.4s ease;
    border-left: 1px solid rgba(139, 47, 224,0.2);
  }
  .nav-links.open { right: 0; }
  .nav-links a { padding: 16px 0; font-size: 1rem; }
  .nav-area-riservata { margin: 16px 0 0 !important; text-align: center; }
  .hamburger { display: flex; }

  .hero { padding: 40px 20px 60px; }
  .hero-logo { width: 180px; height: 180px; }
  .social-btn { padding: 12px 20px; font-size: 0.7rem; }
  .highlights-grid { grid-template-columns: 1fr; gap: 16px; }
  .highlights { padding: 60px 20px; }

  .about-section, .gallery-section, .events-section, .contact-section, .members-area { padding: 40px 20px 60px; }
  .mission { padding: 60px 20px; }
  .about-grid { grid-template-columns: 1fr; }
  .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 12px; }
  .gallery-item.featured { grid-column: span 2; grid-row: span 1; }
  .events-cta { padding: 40px 24px; }
  .social-grid { grid-template-columns: 1fr; gap: 16px; }
  .contact-email-card { flex-direction: column; text-align: center; padding: 24px; }
  .email-info { text-align: center; }
  .contact-cta { padding: 40px 24px; }
  .wp-page-content { padding: 40px 20px 60px; }
  .content-list-item { flex-direction: column; align-items: flex-start; gap: 14px; }
  .content-list-meta { flex-direction: row; flex-wrap: wrap; gap: 14px; }
  .content-meta-bar { flex-direction: column; gap: 10px; }
  .home-spotlight-section { padding: 60px 20px; gap: 40px; }
  .spotlight-image { height: 260px; }
  .spotlight-text { padding: 28px 24px 32px; }
  .lightbox-close { top: -48px; right: 0; }
  .foto-grid { grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 8px; }
  .gallery-admin-actions .sss-btn { font-size: 0.7rem; padding: 9px 16px; letter-spacing: 1.5px; }
  /* Hero con video: stacka su mobile (video sotto) */
  .hero.hero-with-video {
    flex-direction: column !important;
    gap: 40px;
    padding: 60px 20px 80px;
  }
  .hero.hero-with-video .hero-main { max-width: 100%; }
  .hero.hero-with-video .hero-logo { width: 160px; height: 160px; }
  .hero-video-side { max-width: 300px; width: 100%; }
  .video-cta h3 { font-size: 1.5rem; letter-spacing: 2px; }
}
@media (max-width: 480px) {
  .gallery-grid { grid-template-columns: 1fr; }
  .gallery-item.featured { grid-column: span 1; }
}


/* ============================================
   INTRO CINEMATOGRAFICA
   ============================================ */
#sss-intro {
  position: fixed;
  inset: 0;
  z-index: 99999;
  background: radial-gradient(ellipse at center, #1a0000 0%, #000000 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  opacity: 1;
  transition: opacity 0.7s ease;
  cursor: pointer;
}
#sss-intro.sss-intro-ending {
  opacity: 0;
}
/* Light ray overlay */
#sss-intro::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse at 50% 50%, rgba(139, 47, 224,0.15) 0%, transparent 60%),
    radial-gradient(ellipse at 50% 50%, transparent 40%, rgba(0,0,0,0.8) 100%);
  animation: intro-glow 4s ease-out forwards;
}
@keyframes intro-glow {
  0%   { opacity: 0; }
  20%  { opacity: 1; }
  70%  { opacity: 1; }
  100% { opacity: 0; }
}

.sss-intro-inner {
  position: relative;
  z-index: 2;
  text-align: center;
}

/* Logo zoom */
.sss-intro-logo {
  width: 180px;
  height: 180px;
  margin: 0 auto 30px;
  opacity: 0;
  transform: scale(0.1) rotate(-180deg);
  animation: intro-logo 1.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0.2s forwards;
  filter: drop-shadow(0 0 30px rgba(139, 47, 224,0.6));
}
.sss-intro-logo img {
  width: 100%; height: 100%;
  object-fit: contain;
  border-radius: 28px;
}
@keyframes intro-logo {
  0%   { opacity: 0; transform: scale(0.1) rotate(-180deg); }
  60%  { opacity: 1; transform: scale(1.15) rotate(10deg); }
  80%  { transform: scale(0.95) rotate(-5deg); }
  100% { opacity: 1; transform: scale(1) rotate(0deg); }
}

/* Titolo lettere animate */
.sss-intro-title {
  font-family: 'Bebas Neue', sans-serif;
  font-size: clamp(2.5rem, 7vw, 5.5rem);
  letter-spacing: 8px;
  color: var(--white);
  display: flex;
  justify-content: center;
  gap: 0.04em;
  margin-bottom: 18px;
  text-shadow: 0 4px 20px rgba(139, 47, 224,0.3);
}
.sss-intro-title span {
  opacity: 0;
  display: inline-block;
  transform: translateY(40px) scale(0.5);
  animation: intro-letter 0.7s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
}
.sss-intro-title span.red { color: var(--red); }
@keyframes intro-letter {
  0%   { opacity: 0; transform: translateY(40px) scale(0.5); }
  60%  { opacity: 1; transform: translateY(-5px) scale(1.1); }
  100% { opacity: 1; transform: translateY(0)   scale(1); }
}

.sss-intro-subtitle {
  font-family: 'Oswald', sans-serif;
  font-size: clamp(0.9rem, 1.8vw, 1.3rem);
  letter-spacing: 12px;
  color: rgba(245,245,245,0.7);
  opacity: 0;
  animation: intro-sub 1s ease-out 2.2s forwards;
}
@keyframes intro-sub {
  0%   { opacity: 0; letter-spacing: 20px; }
  100% { opacity: 1; letter-spacing: 12px; }
}

.sss-intro-skip {
  position: absolute;
  bottom: 30px;
  right: 30px;
  z-index: 3;
  background: transparent;
  border: 1px solid rgba(245,245,245,0.3);
  color: rgba(245,245,245,0.7);
  font-family: 'Oswald', sans-serif;
  font-size: 0.75rem;
  letter-spacing: 3px;
  padding: 10px 18px;
  border-radius: 4px;
  cursor: pointer;
  transition: all 0.3s ease;
  opacity: 0;
  animation: fade-in 0.5s ease-out 1s forwards;
}
.sss-intro-skip:hover {
  background: var(--red);
  border-color: var(--red);
  color: var(--white);
}
@keyframes fade-in { to { opacity: 1; } }

/* Flash finale bianco */
.sss-intro-ending::after {
  content: '';
  position: absolute;
  inset: 0;
  background: white;
  animation: intro-flash 0.4s ease-out;
}
@keyframes intro-flash {
  0%   { opacity: 0; }
  40%  { opacity: 0.6; }
  100% { opacity: 0; }
}

@media (max-width: 768px) {
  .sss-intro-logo { width: 130px; height: 130px; }
  .sss-intro-title { letter-spacing: 4px; }
  .sss-intro-subtitle { letter-spacing: 8px; }
  .sss-intro-skip { bottom: 20px; right: 20px; font-size: 0.7rem; padding: 8px 14px; }
}


/* ============================================
   PROFILO UTENTE
   ============================================ */
.profile-card {
  display: grid;
  grid-template-columns: 220px 1fr;
  gap: 40px;
  max-width: 1000px;
  margin: 0 auto 40px;
  padding: 40px;
  background: var(--black-card);
  border: 1px solid rgba(139, 47, 224,0.15);
  border-radius: 16px;
  align-items: start;
}
.profile-avatar {
  width: 200px;
  height: 200px;
  border-radius: 50%;
  overflow: hidden;
  background: var(--black);
  border: 3px solid rgba(139, 47, 224,0.25);
  display: flex;
  align-items: center;
  justify-content: center;
}
.profile-avatar img { width: 100%; height: 100%; object-fit: cover; }
.profile-avatar svg { width: 80px; height: 80px; fill: rgba(245,245,245,0.2); }
.profile-info h2 {
  font-family: var(--font-display);
  font-size: 2.5rem;
  letter-spacing: 3px;
  margin-bottom: 10px;
  line-height: 1.1;
}
.profile-role {
  display: inline-block;
  padding: 4px 16px;
  border: 1px solid;
  border-radius: 30px;
  font-family: var(--font-nav);
  font-size: 0.72rem;
  letter-spacing: 2px;
  text-transform: uppercase;
  margin-bottom: 20px;
}
.profile-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  margin-bottom: 20px;
  color: var(--grey);
  font-size: 0.95rem;
}
.profile-bio {
  color: rgba(245,245,245,0.8);
  line-height: 1.7;
  margin-bottom: 20px;
  font-size: 1rem;
}

/* Edit form */
.profile-edit-form {
  max-width: 1000px;
  margin: 0 auto;
  padding: 40px;
  background: var(--black-card);
  border: 1px solid rgba(139, 47, 224,0.2);
  border-radius: 16px;
}
.profile-edit-form h3 {
  font-family: var(--font-display);
  font-size: 1.5rem;
  letter-spacing: 3px;
  margin-bottom: 24px;
  color: var(--red);
}
.form-row { margin-bottom: 18px; }
.form-row label {
  display: block;
  font-family: var(--font-nav);
  font-size: 0.75rem;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--grey);
  margin-bottom: 6px;
}
.form-row input[type=text],
.form-row input[type=number],
.form-row input[type=file],
.form-row textarea {
  width: 100%;
  background: var(--black);
  border: 1px solid rgba(139, 47, 224,0.2);
  border-radius: 6px;
  color: var(--white);
  padding: 10px 14px;
  font-family: var(--font-body);
  font-size: 1rem;
}
.form-row input:focus, .form-row textarea:focus {
  outline: none;
  border-color: var(--red);
  box-shadow: 0 0 0 3px rgba(139, 47, 224, 0.15), 0 0 12px rgba(34, 211, 238, 0.2);
}
.form-row.two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.form-row.actions { display: flex; gap: 12px; align-items: center; margin-top: 24px; }
.form-msg { color: var(--grey); font-size: 0.9rem; margin-left: auto; }

@media (max-width: 768px) {
  .profile-card { grid-template-columns: 1fr; text-align: center; padding: 30px 24px; }
  .profile-avatar { margin: 0 auto; width: 160px; height: 160px; }
  .profile-meta { justify-content: center; }
  .form-row.two-col { grid-template-columns: 1fr; gap: 0; }
  .profile-edit-form { padding: 30px 24px; }
}

/* ============================================
   CHAT
   ============================================ */
.chat-container { padding-bottom: 40px; }
.chat-wrap {
  max-width: 900px;
  margin: 0 auto;
  background: var(--black-card);
  border: 1px solid rgba(139, 47, 224,0.12);
  border-radius: 14px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  height: 600px;
  max-height: 75vh;
}
.chat-messages {
  flex: 1;
  overflow-y: auto;
  padding: 20px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.chat-messages::-webkit-scrollbar { width: 6px; }
.chat-messages::-webkit-scrollbar-thumb { background: rgba(139, 47, 224,0.3); border-radius: 3px; }
.chat-loading, .chat-empty {
  text-align: center;
  color: var(--grey);
  padding: 40px 20px;
  font-size: 0.9rem;
}

.chat-msg {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  animation: msg-in 0.3s ease-out;
}
.chat-msg.own { flex-direction: row-reverse; }
@keyframes msg-in {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}
.chat-msg.deleted .chat-body { opacity: 0.5; }
.chat-avatar {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  object-fit: cover;
  flex-shrink: 0;
  background: var(--black);
  border: 1px solid rgba(139, 47, 224,0.2);
}
.chat-body {
  max-width: 70%;
  background: var(--black);
  border: 1px solid rgba(139, 47, 224,0.08);
  padding: 10px 14px;
  border-radius: 12px;
  position: relative;
}
.chat-msg.own .chat-body {
  background: rgba(139, 47, 224,0.08);
  border-color: rgba(139, 47, 224,0.2);
}
.chat-head {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 4px;
}
.chat-name {
  font-family: var(--font-nav);
  font-weight: 600;
  font-size: 0.9rem;
  letter-spacing: 1px;
  text-decoration: none;
}
.chat-name:hover { text-decoration: underline; }
.chat-role {
  font-family: var(--font-nav);
  font-size: 0.6rem;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  padding: 2px 8px;
  border: 1px solid;
  border-radius: 20px;
  opacity: 0.85;
}
.chat-time {
  font-size: 0.72rem;
  color: var(--grey);
  margin-left: auto;
}
.chat-text {
  color: var(--white);
  font-size: 0.95rem;
  line-height: 1.5;
  word-wrap: break-word;
  overflow-wrap: break-word;
}
.chat-text p { margin: 0; }
.chat-msg-admin {
  position: absolute;
  top: 6px; right: 8px;
  display: flex;
  gap: 4px;
  opacity: 0;
  transition: opacity 0.2s ease;
}
.chat-body:hover .chat-msg-admin { opacity: 1; }
.chat-msg-admin button {
  background: rgba(10,10,10,0.8);
  border: 1px solid rgba(139, 47, 224,0.25);
  color: var(--white);
  font-size: 0.85rem;
  padding: 2px 6px;
  border-radius: 4px;
  cursor: pointer;
  line-height: 1;
}
.chat-msg-admin button:hover { background: var(--red); border-color: var(--red); }

.chat-input-form {
  display: flex;
  gap: 12px;
  padding: 16px 20px;
  border-top: 1px solid rgba(139, 47, 224,0.15);
  background: rgba(10,10,10,0.5);
}
.chat-input-form textarea {
  flex: 1;
  background: var(--black);
  border: 1px solid rgba(139, 47, 224,0.2);
  border-radius: 8px;
  color: var(--white);
  padding: 10px 14px;
  font-family: var(--font-body);
  font-size: 0.95rem;
  resize: none;
  line-height: 1.4;
}
.chat-input-form textarea:focus {
  outline: none;
  border-color: var(--red);
}
.chat-input-form button {
  padding: 10px 24px;
  font-size: 0.8rem;
  flex-shrink: 0;
}

/* Banlist modal */
.banlist-modal {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.85);
  z-index: 10000;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 20px;
}
.banlist-modal.open { display: flex; }
.banlist-inner {
  background: var(--black-card);
  border: 1px solid rgba(139, 47, 224,0.3);
  border-radius: 14px;
  padding: 30px;
  max-width: 500px;
  width: 100%;
  max-height: 80vh;
  overflow-y: auto;
}
.banlist-inner h3 {
  font-family: var(--font-display);
  font-size: 1.4rem;
  letter-spacing: 3px;
  margin-bottom: 20px;
  color: var(--red);
}
.banned-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 0;
  border-bottom: 1px solid rgba(139, 47, 224,0.1);
}
.banned-row:last-child { border-bottom: none; }

@media (max-width: 768px) {
  .chat-body { max-width: 85%; }
  .chat-avatar { width: 34px; height: 34px; }
  .chat-input-form { padding: 12px 14px; }
  .chat-input-form button { padding: 10px 18px; font-size: 0.75rem; }
}

/* ============================================
   FLOATING CHAT (icona + popup)
   ============================================ */
.floating-chat {
  position: fixed;
  right: 20px;
  bottom: 20px;
  z-index: 9998;
}
.fc-toggle {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 6px 6px 6px 20px;
  height: 52px;
  background: linear-gradient(90deg, #6B1FB8 0%, #e50914 100%);
  border: none;
  color: var(--white);
  border-radius: 40px;
  cursor: pointer;
  box-shadow: 0 8px 24px rgba(139, 47, 224,0.45), 0 4px 10px rgba(0,0,0,0.35);
  transition: all 0.3s ease;
  position: relative;
  font-family: var(--font-nav);
  font-size: 0.88rem;
  font-weight: 700;
  letter-spacing: 2px;
  text-transform: uppercase;
  white-space: nowrap;
}
.fc-toggle:hover {
  transform: translateY(-2px) scale(1.03);
  box-shadow: 0 14px 32px rgba(139, 47, 224,0.6), 0 4px 12px rgba(0,0,0,0.4);
}
.fc-toggle-label {
  line-height: 1;
  color: #fff;
  text-shadow: 0 1px 2px rgba(0,0,0,0.2);
}
.fc-toggle-circle {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: rgba(0,0,0,0.85);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.fc-toggle-circle svg { display: block; }
.fc-toggle:hover {
  transform: translateY(-3px) scale(1.05);
  box-shadow: 0 12px 30px rgba(139, 47, 224,0.55);
}
.fc-toggle.has-unread {
  animation: fc-pulse 1.8s ease-in-out infinite;
}
@keyframes fc-pulse {
  0%, 100% { box-shadow: 0 8px 24px rgba(139, 47, 224,0.4), 0 0 0 0 rgba(139, 47, 224,0.5); }
  50%      { box-shadow: 0 8px 24px rgba(139, 47, 224,0.5), 0 0 0 12px rgba(139, 47, 224,0); }
}
.fc-badge {
  position: absolute;
  top: -4px;
  right: -4px;
  min-width: 22px;
  height: 22px;
  padding: 0 6px;
  background: #000;
  color: #fff;
  border: 2px solid var(--red);
  border-radius: 11px;
  font-size: 0.7rem;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Panel */
.fc-panel {
  position: absolute;
  bottom: 72px;
  right: 0;
  width: 380px;
  max-width: calc(100vw - 40px);
  height: 540px;
  max-height: calc(100vh - 120px);
  background: var(--black-card);
  border: 1px solid rgba(139, 47, 224,0.3);
  border-radius: 14px;
  box-shadow: 0 20px 50px rgba(0,0,0,0.6);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  opacity: 0;
  transform: translateY(20px) scale(0.95);
  pointer-events: none;
  transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1);
}
.fc-panel.open {
  opacity: 1;
  transform: translateY(0) scale(1);
  pointer-events: auto;
}

.fc-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 18px;
  background: linear-gradient(to right, rgba(139, 47, 224,0.18), rgba(139, 47, 224,0.05));
  border-bottom: 1px solid rgba(139, 47, 224,0.25);
}
.fc-title strong {
  font-family: var(--font-display);
  letter-spacing: 2px;
  color: var(--white);
  font-size: 1.1rem;
}
.fc-title span {
  font-family: var(--font-nav);
  letter-spacing: 1.5px;
  color: var(--red);
  font-size: 0.7rem;
  margin-left: 6px;
}
.fc-actions {
  display: flex;
  gap: 6px;
}
.fc-icon-btn {
  width: 30px;
  height: 30px;
  background: transparent;
  border: 1px solid rgba(139, 47, 224,0.3);
  border-radius: 6px;
  color: var(--white);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s ease;
  padding: 0;
}
.fc-icon-btn:hover { background: var(--red); border-color: var(--red); }

/* Messages */
.fc-messages {
  flex: 1;
  overflow-y: auto;
  padding: 14px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  background: rgba(10,10,10,0.4);
}
.fc-messages::-webkit-scrollbar { width: 5px; }
.fc-messages::-webkit-scrollbar-thumb { background: rgba(139, 47, 224,0.3); border-radius: 3px; }
.fc-loading, .fc-empty {
  text-align: center;
  color: var(--grey);
  padding: 30px 10px;
  font-size: 0.85rem;
}

.fc-msg {
  display: flex;
  gap: 8px;
  align-items: flex-start;
  animation: fc-in 0.25s ease-out;
}
.fc-msg.own { flex-direction: row-reverse; }
@keyframes fc-in {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}
.fc-msg.deleted .fc-body { opacity: 0.5; }

.fc-avatar {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  object-fit: cover;
  flex-shrink: 0;
  background: var(--black);
  border: 1px solid rgba(139, 47, 224,0.2);
}
.fc-avatar-ph {
  background: rgba(139, 47, 224,0.1);
}

.fc-body {
  max-width: 75%;
  background: var(--black);
  border: 1px solid rgba(139, 47, 224,0.1);
  padding: 8px 12px;
  border-radius: 10px;
  position: relative;
  min-width: 0;
  word-wrap: break-word;
}
.fc-msg.own .fc-body {
  background: rgba(139, 47, 224,0.08);
  border-color: rgba(139, 47, 224,0.25);
}
.fc-head {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  margin-bottom: 2px;
}
.fc-name {
  font-family: var(--font-nav);
  font-weight: 600;
  font-size: 0.8rem;
  letter-spacing: 0.5px;
  text-decoration: none;
}
.fc-name:hover { text-decoration: underline; }
.fc-role {
  font-family: var(--font-nav);
  font-size: 0.55rem;
  letter-spacing: 1px;
  text-transform: uppercase;
  padding: 1px 6px;
  border: 1px solid;
  border-radius: 10px;
  opacity: 0.8;
}
.fc-time {
  font-size: 0.65rem;
  color: var(--grey);
  margin-left: auto;
}
.fc-text {
  color: var(--white);
  font-size: 0.88rem;
  line-height: 1.45;
  word-break: break-word;
}
.fc-msg-admin {
  position: absolute;
  top: 4px;
  right: 6px;
  display: flex;
  gap: 3px;
  opacity: 0;
  transition: opacity 0.2s ease;
}
.fc-body:hover .fc-msg-admin { opacity: 1; }
.fc-msg-admin button {
  background: rgba(10,10,10,0.9);
  border: 1px solid rgba(139, 47, 224,0.3);
  color: var(--white);
  font-size: 0.75rem;
  padding: 2px 5px;
  border-radius: 4px;
  cursor: pointer;
  line-height: 1;
}
.fc-msg-admin button:hover { background: var(--red); }

/* Input */
.fc-input {
  display: flex;
  gap: 8px;
  padding: 10px 12px;
  border-top: 1px solid rgba(139, 47, 224,0.2);
  background: rgba(10,10,10,0.6);
  align-items: flex-end;
}
.fc-input textarea {
  flex: 1;
  background: var(--black);
  border: 1px solid rgba(139, 47, 224,0.2);
  border-radius: 8px;
  color: var(--white);
  padding: 8px 12px;
  font-family: var(--font-body);
  font-size: 0.9rem;
  resize: none;
  line-height: 1.4;
  max-height: 100px;
  min-height: 36px;
  overflow-y: auto;
}
.fc-input textarea:focus {
  outline: none;
  border-color: var(--red);
}
.fc-input button {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: var(--red);
  border: none;
  color: var(--white);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  transition: all 0.2s ease;
  padding: 0;
}
.fc-input button:hover { background: var(--red-glow); transform: scale(1.05); }
.fc-input button:disabled { opacity: 0.5; cursor: not-allowed; }

.fc-banned {
  padding: 30px 20px;
  text-align: center;
  color: var(--grey);
}
.fc-banned strong { display: block; color: var(--red); margin-bottom: 8px; }
.fc-banned p { font-size: 0.85rem; }

/* Banlist modal */
.fc-banlist-modal {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.85);
  z-index: 10001;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 20px;
}
.fc-banlist-modal.open { display: flex; }
.fc-banlist-inner {
  background: var(--black-card);
  border: 1px solid rgba(139, 47, 224,0.3);
  border-radius: 14px;
  padding: 30px;
  max-width: 500px;
  width: 100%;
  max-height: 80vh;
  overflow-y: auto;
}
.fc-banlist-inner h3 {
  font-family: var(--font-display);
  font-size: 1.3rem;
  letter-spacing: 3px;
  margin-bottom: 16px;
  color: var(--red);
}

@media (max-width: 480px) {
  .floating-chat { right: 14px; bottom: 14px; }
  .fc-toggle {
    height: 44px;
    padding: 4px 4px 4px 14px;
    font-size: 0.72rem;
    letter-spacing: 1.5px;
  }
  .fc-toggle-circle { width: 34px; height: 34px; }
  .fc-panel {
    width: calc(100vw - 28px);
    height: calc(100vh - 140px);
    bottom: 66px;
  }
}

/* ============================================
   CHAT FLUTTUANTE (FAB)
   ============================================ */
.sss-chat-fab {
  position: fixed;
  bottom: 22px;
  right: 22px;
  z-index: 9990;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 18px 12px 14px;
  background: var(--red);
  color: var(--white);
  border-radius: 40px;
  cursor: pointer;
  box-shadow: 0 8px 28px rgba(139, 47, 224,0.4), 0 0 0 1px rgba(255,255,255,0.05);
  font-family: var(--font-nav);
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 1.8px;
  text-transform: uppercase;
  user-select: none;
  transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}
.sss-chat-fab:hover {
  transform: translateY(-3px);
  box-shadow: 0 14px 36px rgba(139, 47, 224,0.55), 0 0 0 1px rgba(255,255,255,0.08);
}
.sss-chat-fab-icon {
  width: 28px; height: 28px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.sss-chat-fab-icon svg { width: 100%; height: 100%; }
.sss-chat-fab-label { white-space: nowrap; }
.sss-chat-fab-badge {
  position: absolute;
  top: -4px; right: -4px;
  min-width: 22px; height: 22px;
  padding: 0 6px;
  background: #0a0a0a;
  color: #fff;
  border: 2px solid var(--red);
  border-radius: 50%;
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
  animation: chat-badge-pulse 2s ease-in-out infinite;
}
@keyframes chat-badge-pulse {
  0%, 100% { transform: scale(1); }
  50%      { transform: scale(1.12); }
}

/* Panel chat */
.sss-chat-panel {
  position: fixed;
  bottom: 90px;
  right: 22px;
  z-index: 9991;
  width: 380px;
  max-width: calc(100vw - 44px);
  height: 540px;
  max-height: calc(100vh - 140px);
  background: var(--black-card);
  border: 1px solid rgba(139, 47, 224,0.25);
  border-radius: 16px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  box-shadow: 0 24px 60px rgba(0,0,0,0.6);
  opacity: 0;
  transform: translateY(20px) scale(0.95);
  pointer-events: none;
  transition: opacity 0.25s ease, transform 0.25s cubic-bezier(0.16, 1, 0.3, 1);
}
.sss-chat-panel.open {
  opacity: 1;
  transform: translateY(0) scale(1);
  pointer-events: auto;
}
.sss-chat-panel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 16px;
  background: linear-gradient(135deg, var(--red) 0%, #8b0000 100%);
  color: var(--white);
  border-bottom: 1px solid rgba(0,0,0,0.2);
}
.sss-chat-panel-title {
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: var(--font-display);
  font-size: 1rem;
  letter-spacing: 2px;
}
.sss-chat-panel-actions {
  display: flex;
  gap: 6px;
}
.sss-chat-mini-btn {
  width: 28px; height: 28px;
  background: rgba(0,0,0,0.25);
  border: none;
  border-radius: 6px;
  color: var(--white);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.2s ease;
}
.sss-chat-mini-btn:hover { background: rgba(0,0,0,0.5); }

.sss-chat-fab-messages {
  flex: 1;
  overflow-y: auto;
  padding: 14px 14px 8px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  background: var(--black);
}
.sss-chat-fab-messages::-webkit-scrollbar { width: 6px; }
.sss-chat-fab-messages::-webkit-scrollbar-thumb {
  background: rgba(139, 47, 224,0.3);
  border-radius: 3px;
}
.sss-chat-fab-messages .chat-msg {
  display: flex;
  gap: 8px;
  align-items: flex-start;
  animation: msg-in 0.25s ease-out;
}
.sss-chat-fab-messages .chat-msg.own { flex-direction: row-reverse; }
.sss-chat-fab-messages .chat-avatar {
  width: 32px; height: 32px;
  border-radius: 50%;
  object-fit: cover;
  flex-shrink: 0;
  background: var(--black-card);
  border: 1px solid rgba(139, 47, 224,0.2);
}
.sss-chat-fab-messages .chat-body {
  max-width: 75%;
  background: var(--black-card);
  padding: 8px 12px;
  border-radius: 10px;
  border: 1px solid rgba(139, 47, 224,0.08);
  position: relative;
}
.sss-chat-fab-messages .chat-msg.own .chat-body {
  background: rgba(139, 47, 224,0.12);
  border-color: rgba(139, 47, 224,0.25);
}
.sss-chat-fab-messages .chat-head {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  margin-bottom: 3px;
}
.sss-chat-fab-messages .chat-name {
  font-family: var(--font-nav);
  font-weight: 600;
  font-size: 0.8rem;
  text-decoration: none;
  letter-spacing: 0.5px;
}
.sss-chat-fab-messages .chat-name:hover { text-decoration: underline; }
.sss-chat-fab-messages .chat-role {
  font-size: 0.55rem;
  padding: 1px 6px;
  border: 1px solid;
  border-radius: 10px;
  letter-spacing: 1px;
  text-transform: uppercase;
}
.sss-chat-fab-messages .chat-time {
  font-size: 0.65rem;
  color: var(--grey);
  margin-left: auto;
}
.sss-chat-fab-messages .chat-text {
  color: var(--white);
  font-size: 0.88rem;
  line-height: 1.4;
  word-break: break-word;
}
.sss-chat-fab-messages .chat-msg-admin {
  position: absolute;
  top: 4px; right: 6px;
  display: flex;
  gap: 3px;
  opacity: 0;
  transition: opacity 0.2s;
}
.sss-chat-fab-messages .chat-body:hover .chat-msg-admin { opacity: 1; }
.sss-chat-fab-messages .chat-msg-admin button {
  background: rgba(10,10,10,0.85);
  border: 1px solid rgba(139, 47, 224,0.3);
  color: var(--white);
  font-size: 0.75rem;
  padding: 1px 5px;
  border-radius: 3px;
  cursor: pointer;
  line-height: 1;
}
.sss-chat-fab-messages .chat-msg-admin button:hover { background: var(--red); }
.sss-chat-fab-messages .chat-empty,
.sss-chat-fab-messages .chat-loading {
  text-align: center;
  color: var(--grey);
  padding: 30px 20px;
  font-size: 0.85rem;
  line-height: 1.6;
}

.sss-chat-fab-form {
  display: flex;
  gap: 8px;
  padding: 10px 12px;
  border-top: 1px solid rgba(139, 47, 224,0.15);
  background: var(--black-card);
  align-items: flex-end;
}
.sss-chat-fab-form textarea {
  flex: 1;
  background: var(--black);
  border: 1px solid rgba(139, 47, 224,0.2);
  border-radius: 20px;
  color: var(--white);
  padding: 8px 14px;
  font-family: var(--font-body);
  font-size: 0.9rem;
  resize: none;
  line-height: 1.4;
  max-height: 100px;
  overflow-y: auto;
}
.sss-chat-fab-form textarea:focus {
  outline: none;
  border-color: var(--red);
  box-shadow: 0 0 0 2px rgba(139, 47, 224,0.15);
}
.sss-chat-fab-send {
  width: 38px; height: 38px;
  background: var(--red);
  border: none;
  border-radius: 50%;
  color: var(--white);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  transition: all 0.2s ease;
}
.sss-chat-fab-send:hover { background: var(--red-glow); transform: scale(1.05); }
.sss-chat-fab-send:disabled { opacity: 0.5; cursor: wait; }

.sss-chat-panel-banned {
  padding: 40px 20px;
  text-align: center;
}
.sss-chat-panel-banned h4 {
  font-family: var(--font-display);
  font-size: 1.2rem;
  letter-spacing: 2px;
  margin-bottom: 10px;
  color: var(--red);
}
.sss-chat-panel-banned p { color: var(--grey); font-size: 0.9rem; }

@media (max-width: 768px) {
  .sss-chat-fab {
    bottom: 14px;
    right: 14px;
    padding: 10px 14px 10px 12px;
    font-size: 0.7rem;
  }
  .sss-chat-fab-icon { width: 22px; height: 22px; }
  .sss-chat-panel {
    bottom: 74px;
    right: 10px;
    left: 10px;
    width: auto;
    max-width: none;
    height: 70vh;
  }
}

/* ============================================
   USER LINKS (nomi cliccabili ovunque)
   ============================================ */
.user-link {
  color: var(--white);
  text-decoration: none;
  font-weight: 600;
  cursor: pointer;
  transition: opacity 0.2s ease;
  border-bottom: 1px dotted rgba(139, 47, 224,0.3);
}
.user-link:hover {
  opacity: 0.8;
  border-bottom-color: var(--red);
}
.meta-author {
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  transition: color 0.2s ease;
}
.meta-author:hover { color: var(--red); }

/* ============================================
   LIGHTBOX NAVIGATION (frecce + counter)
   ============================================ */
.lightbox-prev,
.lightbox-next {
  position: fixed;
  top: 50%;
  transform: translateY(-50%);
  width: 56px;
  height: 56px;
  background: rgba(10,10,10,0.75);
  border: 2px solid rgba(139, 47, 224,0.4);
  border-radius: 50%;
  color: var(--white);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  transition: background 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease, opacity 0.25s ease;
  z-index: 10002;
  padding: 0;
}
.lightbox-prev { left: 24px; }
.lightbox-next { right: 24px; }
.lightbox-prev svg,
.lightbox-next svg { width: 30px; height: 30px; }
.lightbox-prev:hover,
.lightbox-next:hover {
  background: var(--red);
  border-color: var(--red);
  box-shadow: 0 6px 20px rgba(139, 47, 224,0.4);
}
.lightbox-prev.disabled,
.lightbox-next.disabled {
  opacity: 0.2;
  cursor: not-allowed;
  pointer-events: none;
}
.lightbox-counter {
  position: fixed;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%);
  font-family: var(--font-nav);
  font-size: 0.85rem;
  letter-spacing: 2px;
  color: rgba(245,245,245,0.85);
  background: rgba(10,10,10,0.7);
  padding: 6px 14px;
  border-radius: 20px;
  backdrop-filter: blur(8px);
  z-index: 10002;
}
/* Riposiziono il close del lightbox in alto a destra dello schermo */
.lightbox .lightbox-close {
  position: fixed;
  top: 20px;
  right: 20px;
  width: 46px;
  height: 46px;
  background: rgba(10,10,10,0.75);
  border: 2px solid rgba(139, 47, 224,0.4);
  color: var(--white);
  border-radius: 50%;
  font-size: 1.8rem;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  backdrop-filter: blur(8px);
  z-index: 10002;
}
.lightbox .lightbox-close:hover { background: var(--red); border-color: var(--red); }

@media (max-width: 768px) {
  .lightbox-prev,
  .lightbox-next {
    width: 46px;
    height: 46px;
  }
  .lightbox-prev { left: 12px; }
  .lightbox-next { right: 12px; }
  .lightbox-prev svg, .lightbox-next svg { width: 24px; height: 24px; }
  .lightbox .lightbox-close { top: 12px; right: 12px; width: 40px; height: 40px; font-size: 1.5rem; }
  .lightbox-counter { bottom: 16px; font-size: 0.75rem; padding: 5px 12px; }
}

/* ============================================
   RESPONSABILE FOTO — badge viola
   ============================================ */
.role-badge-responsabile_foto {
  color: #C77DFF;
  border-color: #C77DFF;
}


/* ============================================
   TASTINO LISTA MEMBRI (sopra categorie)
   ============================================ */
.members-list-trigger-wrap {
  display: flex;
  justify-content: center;
  margin: 10px 0 34px;
}
.members-list-trigger {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 12px 30px;
  background: var(--red);
  color: var(--white);
  border-radius: 30px;
  text-decoration: none;
  font-family: var(--font-nav);
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: 2.5px;
  text-transform: uppercase;
  transition: transform 0.25s ease, box-shadow 0.25s ease;
  box-shadow: 0 4px 18px rgba(139, 47, 224,0.4);
  animation: ml-trigger-glow 2.4s ease-in-out infinite;
}
.members-list-trigger:hover {
  transform: translateY(-2px) scale(1.03);
  color: var(--white);
  animation: none;
  box-shadow: 0 10px 30px rgba(139, 47, 224,0.7), 0 0 0 4px rgba(139, 47, 224,0.15);
}
.members-list-trigger svg { flex-shrink: 0; }
@keyframes ml-trigger-glow {
  0%, 100% { box-shadow: 0 4px 18px rgba(139, 47, 224,0.4), 0 0 0 0 rgba(139, 47, 224,0.5); }
  50%      { box-shadow: 0 4px 22px rgba(139, 47, 224,0.65), 0 0 0 10px rgba(139, 47, 224,0); }
}

/* ============================================
   LISTA MEMBRI — stile compatto (discord-like)
   ============================================ */
.members-list-page { padding-bottom: 80px; }
.members-list-section {
  padding: 10px 0 40px;
  max-width: 1100px;
  margin: 0 auto;
}
.ml-group {
  margin-bottom: 30px;
  background: rgba(10,10,10,0.3);
  border-radius: 10px;
  padding: 14px 18px 18px;
  border: 1px solid rgba(139, 47, 224,0.06);
}
.ml-group-head {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 6px 10px 10px;
  border-bottom: 1px solid;
  margin-bottom: 14px;
}
.ml-group-title {
  font-family: var(--font-nav);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 2.5px;
  text-transform: uppercase;
  color: var(--white);
}
.ml-group-count {
  font-family: var(--font-nav);
  font-size: 0.65rem;
  letter-spacing: 1px;
  background: rgba(245,245,245,0.08);
  color: var(--grey);
  padding: 2px 9px;
  border-radius: 12px;
}
.ml-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
  gap: 6px;
}
.ml-card {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 10px;
  background: transparent;
  border-radius: 6px;
  text-decoration: none;
  color: var(--white);
  transition: background 0.2s ease;
  min-width: 0;
}
.ml-card:hover {
  background: rgba(139, 47, 224,0.08);
  color: var(--white);
}
.ml-avatar {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  overflow: hidden;
  background: var(--black);
  border: 2px solid;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.ml-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ml-avatar svg {
  width: 18px;
  height: 18px;
  fill: rgba(245,245,245,0.3);
}
.ml-info {
  min-width: 0;
  flex: 1;
  overflow: hidden;
}
.ml-name {
  font-size: 0.88rem;
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 1.2;
  letter-spacing: 0.3px;
}
.ml-role {
  font-family: var(--font-nav);
  font-size: 0.62rem;
  color: var(--grey);
  letter-spacing: 1.5px;
  text-transform: uppercase;
  margin-top: 2px;
}
.ml-empty {
  padding: 14px;
  text-align: center;
  color: var(--grey);
  font-size: 0.82rem;
  background: rgba(10,10,10,0.2);
  border-radius: 6px;
}

@media (max-width: 640px) {
  .ml-grid { grid-template-columns: 1fr; }
  .members-list-trigger { padding: 10px 22px; font-size: 0.72rem; letter-spacing: 2px; }
}

/* ============================================
   COOKIE BANNER
   ============================================ */
.sss-cookie-banner {
  position: fixed;
  bottom: 0; left: 0; right: 0;
  z-index: 9989;
  background: rgba(10,10,10,0.97);
  backdrop-filter: blur(15px);
  -webkit-backdrop-filter: blur(15px);
  border-top: 2px solid var(--red);
  padding: 18px 20px;
  box-shadow: 0 -10px 40px rgba(0,0,0,0.5);
  animation: cookie-slide-up 0.5s ease-out;
}
@keyframes cookie-slide-up {
  from { transform: translateY(100%); opacity: 0; }
  to   { transform: translateY(0); opacity: 1; }
}
.sss-cookie-content {
  max-width: 1200px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  gap: 24px;
  flex-wrap: wrap;
}
.sss-cookie-text {
  flex: 1;
  min-width: 280px;
}
.sss-cookie-text strong {
  display: block;
  font-family: var(--font-display);
  font-size: 1.1rem;
  letter-spacing: 2px;
  color: var(--white);
  margin-bottom: 6px;
}
.sss-cookie-text p {
  color: rgba(245,245,245,0.8);
  font-size: 0.85rem;
  line-height: 1.5;
  margin: 0;
}
.sss-cookie-text a {
  color: var(--red);
  text-decoration: none;
  font-weight: 600;
}
.sss-cookie-text a:hover { text-decoration: underline; }
.sss-cookie-actions {
  display: flex;
  gap: 10px;
}
.sss-cookie-btn {
  padding: 12px 28px;
  border-radius: 30px;
  border: 2px solid var(--red);
  font-family: var(--font-nav);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 2px;
  text-transform: uppercase;
  cursor: pointer;
  transition: all 0.25s ease;
}
.sss-cookie-btn.primary {
  background: var(--red);
  color: var(--white);
}
.sss-cookie-btn.primary:hover {
  background: var(--red-glow);
  transform: translateY(-2px);
  box-shadow: 0 6px 18px rgba(139, 47, 224,0.45);
}
@media (max-width: 640px) {
  .sss-cookie-content { flex-direction: column; align-items: stretch; gap: 14px; }
  .sss-cookie-actions { justify-content: center; }
  .sss-cookie-btn { padding: 10px 22px; font-size: 0.72rem; }
}

/* ============================================
   ASPIRANTE — schermata d'attesa
   ============================================ */
.aspirante-waiting {
  max-width: 600px;
  margin: 40px auto 60px;
  text-align: center;
  padding: 50px 30px;
  background: var(--black-card);
  border: 1px solid rgba(139, 47, 224,0.2);
  border-radius: 16px;
  box-shadow: 0 12px 40px rgba(0,0,0,0.4);
}
.aspirante-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100px;
  height: 100px;
  border-radius: 50%;
  background: rgba(139, 47, 224,0.1);
  color: var(--red);
  margin-bottom: 24px;
  animation: aspirante-pulse 2.4s ease-in-out infinite;
}
@keyframes aspirante-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(139, 47, 224,0.4); }
  50%      { box-shadow: 0 0 0 18px rgba(139, 47, 224,0); }
}
.aspirante-waiting h2 {
  font-family: var(--font-display);
  font-size: clamp(1.8rem, 4vw, 2.6rem);
  letter-spacing: 4px;
  margin-bottom: 18px;
  color: var(--white);
}
.aspirante-waiting h2 span { color: var(--red); }
.aspirante-message {
  font-size: 1.05rem;
  line-height: 1.7;
  color: rgba(245,245,245,0.85);
  margin-bottom: 28px;
}
.aspirante-info-box {
  background: rgba(10,10,10,0.5);
  border: 1px solid rgba(139, 47, 224,0.1);
  border-radius: 10px;
  padding: 20px 26px;
  text-align: left;
  margin: 20px auto 0;
}
.aspirante-info-box h3 {
  font-family: var(--font-display);
  font-size: 1rem;
  letter-spacing: 2px;
  color: var(--red);
  margin-bottom: 12px;
}
.aspirante-info-box ul {
  list-style: none;
  padding: 0;
  margin: 0;
}
.aspirante-info-box li {
  padding: 8px 0;
  color: rgba(245,245,245,0.85);
  font-size: 0.92rem;
  line-height: 1.5;
}
.aspirante-info-box a { color: var(--red); text-decoration: none; }
.aspirante-info-box a:hover { text-decoration: underline; }

/* ============================================
   FOOTER LEGAL LINKS
   ============================================ */
.footer-legal-links {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin: 18px 0 14px;
  padding-bottom: 14px;
  border-bottom: 1px solid rgba(139, 47, 224,0.1);
  font-size: 0.78rem;
}
.footer-legal-links a {
  color: rgba(245,245,245,0.7);
  text-decoration: none;
  letter-spacing: 1px;
  transition: color 0.2s ease;
}
.footer-legal-links a:hover { color: var(--red); }
.footer-legal-links span { color: rgba(245,245,245,0.3); }

/* ============================================
   LOGIN & REGISTRAZIONE — pagina WordPress
   ============================================ */
body.login {
  background:
    radial-gradient(ellipse at top, rgba(139, 47, 224,0.12) 0%, transparent 50%),
    radial-gradient(ellipse at bottom, rgba(139, 47, 224,0.08) 0%, transparent 50%),
    linear-gradient(135deg, #0a0a0a 0%, #1a0000 50%, #0a0a0a 100%) !important;
  min-height: 100vh;
  font-family: 'Rajdhani', 'Inter', system-ui, sans-serif !important;
}

/* Pattern web sottile sullo sfondo */
body.login::before {
  content: '';
  position: fixed;
  inset: 0;
  background-image:
    radial-gradient(circle at 25% 25%, rgba(139, 47, 224,0.03) 0%, transparent 40%),
    radial-gradient(circle at 75% 75%, rgba(139, 47, 224,0.03) 0%, transparent 40%);
  pointer-events: none;
  z-index: 0;
}

body.login #login {
  padding: 60px 20px 40px;
  width: 100% !important;
  max-width: 520px !important;
  position: relative;
  z-index: 1;
}

/* Logo header */
body.login h1 a {
  background-image: url('assets/logo2026.png') !important;
  background-size: contain !important;
  background-position: center !important;
  background-repeat: no-repeat !important;
  width: 100px !important;
  height: 100px !important;
  margin: 0 auto 24px !important;
  filter: drop-shadow(0 6px 20px rgba(139, 47, 224,0.35));
}

/* Messaggio "Registrazione per questo sito" / "Username/email" */
body.login #login_error,
body.login .message,
body.login .login .message {
  background: rgba(10,10,10,0.85) !important;
  border-left: 4px solid var(--red, #8B2FE0) !important;
  border-radius: 8px !important;
  color: rgba(245,245,245,0.95) !important;
  padding: 14px 18px !important;
  font-size: 13px !important;
  box-shadow: 0 8px 24px rgba(0,0,0,0.4) !important;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}
body.login #login_error { border-left-color: #ff4040 !important; }

/* Form principale */
body.login form {
  background: rgba(22,22,22,0.85) !important;
  border: 1px solid rgba(139, 47, 224,0.2) !important;
  border-radius: 16px !important;
  box-shadow:
    0 24px 60px rgba(0,0,0,0.6),
    0 0 0 1px rgba(139, 47, 224,0.05),
    inset 0 1px 0 rgba(255,255,255,0.04) !important;
  padding: 36px 38px 30px !important;
  margin-top: 18px !important;
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  position: relative;
  overflow: hidden;
}

/* Accento rosso sopra il form */
body.login form::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 2px;
  background: linear-gradient(90deg, transparent 0%, var(--red, #8B2FE0) 50%, transparent 100%);
  opacity: 0.7;
}

/* Label dei campi */
body.login label {
  color: rgba(245,245,245,0.85) !important;
  font-family: 'Oswald', 'Inter', sans-serif !important;
  font-size: 11px !important;
  font-weight: 500 !important;
  letter-spacing: 2px !important;
  text-transform: uppercase !important;
  display: block !important;
  margin-bottom: 4px !important;
}

/* Input fields */
body.login form .input,
body.login form input[type="text"],
body.login form input[type="password"],
body.login form input[type="email"],
body.login form input[type="tel"],
body.login form input[type="number"] {
  background: rgba(10,10,10,0.7) !important;
  border: 1px solid rgba(139, 47, 224,0.18) !important;
  color: #fff !important;
  border-radius: 8px !important;
  font-size: 15px !important;
  font-family: 'Rajdhani', 'Inter', system-ui, sans-serif !important;
  padding: 11px 14px !important;
  height: auto !important;
  width: 100% !important;
  box-shadow: none !important;
  transition: all 0.25s ease !important;
}

/* Placeholder PIÙ PICCOLO e meno invasivo */
body.login form input::placeholder {
  color: rgba(245,245,245,0.25) !important;
  font-size: 12px !important;
  font-weight: 400 !important;
  letter-spacing: 0.3px !important;
  font-style: italic !important;
}

body.login form input:focus {
  border-color: var(--red, #8B2FE0) !important;
  background: rgba(10,10,10,0.9) !important;
  box-shadow: 0 0 0 3px rgba(139, 47, 224,0.15), 0 0 20px rgba(139, 47, 224,0.1) !important;
  outline: none !important;
}

/* Paragrafi spaziati */
body.login form p {
  margin-bottom: 14px !important;
}

/* Bottone Submit */
body.login p.submit { margin-top: 24px !important; }
body.login p.submit .button-primary {
  background: linear-gradient(135deg, var(--red, #8B2FE0) 0%, #6B1FB8 100%) !important;
  border: none !important;
  text-shadow: none !important;
  box-shadow: 0 6px 20px rgba(139, 47, 224,0.5), inset 0 1px 0 rgba(255,255,255,0.15) !important;
  text-transform: uppercase !important;
  letter-spacing: 3px !important;
  font-weight: 700 !important;
  font-size: 13px !important;
  padding: 12px 36px !important;
  border-radius: 30px !important;
  height: auto !important;
  transition: all 0.25s ease !important;
  width: auto !important;
  cursor: pointer !important;
  font-family: 'Oswald', sans-serif !important;
}
body.login p.submit .button-primary:hover {
  background: linear-gradient(135deg, #ff1a25 0%, #c20000 100%) !important;
  transform: translateY(-2px);
  box-shadow: 0 10px 28px rgba(139, 47, 224,0.65) !important;
}

/* Link sotto: "Hai un account?" "Registrati" etc. */
body.login #nav, body.login #backtoblog {
  text-align: center;
  margin-top: 18px !important;
}
body.login #nav a, body.login #backtoblog a {
  color: rgba(245,245,245,0.55) !important;
  font-size: 12px !important;
  letter-spacing: 1px !important;
  text-transform: uppercase;
  text-decoration: none !important;
  font-family: 'Oswald', sans-serif;
  transition: color 0.2s ease;
}
body.login #nav a:hover, body.login #backtoblog a:hover {
  color: var(--red, #8B2FE0) !important;
}

/* Note GDPR/Privacy in fondo al form */
body.login form > p[style*="font-size:11px"],
body.login form p.privacy-note {
  font-size: 11px !important;
  line-height: 1.5 !important;
  color: rgba(245,245,245,0.5) !important;
  padding: 14px 0 4px !important;
  border-top: 1px solid rgba(139, 47, 224,0.1) !important;
  margin-top: 18px !important;
}
body.login form > p[style*="font-size:11px"] a {
  color: var(--red, #8B2FE0) !important;
  font-weight: 600;
}

/* Checkbox "Ricordami" */
body.login form .forgetmenot label {
  font-size: 12px !important;
  letter-spacing: 1px !important;
  text-transform: uppercase;
  display: inline-flex !important;
  align-items: center;
  gap: 6px;
  margin: 8px 0 0 !important;
  cursor: pointer;
  color: rgba(245,245,245,0.7) !important;
}
body.login form .forgetmenot input[type="checkbox"] {
  appearance: none;
  width: 16px; height: 16px;
  background: rgba(10,10,10,0.7);
  border: 1px solid rgba(139, 47, 224,0.3);
  border-radius: 3px;
  cursor: pointer;
  position: relative;
}
body.login form .forgetmenot input[type="checkbox"]:checked {
  background: var(--red, #8B2FE0);
  border-color: var(--red, #8B2FE0);
}
body.login form .forgetmenot input[type="checkbox"]:checked::after {
  content: '✓';
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  color: #fff;
  font-size: 12px;
  font-weight: bold;
}

/* Layout 2-colonne per Nome/Cognome (registrazione, opzionale) */
@media (min-width: 480px) {
  body.login #registerform p.form-row-half {
    display: inline-block;
    width: calc(50% - 6px);
    margin-right: 8px;
    vertical-align: top;
  }
  body.login #registerform p.form-row-half:nth-child(even) { margin-right: 0; }
}

/* Mobile */
@media (max-width: 480px) {
  body.login #login {
    padding: 30px 16px 30px !important;
    max-width: 100% !important;
  }
  body.login form { padding: 24px 22px 22px !important; }
  body.login h1 a { width: 80px !important; height: 80px !important; margin-bottom: 18px !important; }
  body.login form .input,
  body.login form input[type="text"],
  body.login form input[type="password"],
  body.login form input[type="email"],
  body.login form input[type="tel"] { font-size: 14px !important; padding: 10px 12px !important; }
}

/* ============================================
   PROFILO — Main Cosplay + Instagram link
   ============================================ */
.profile-cosplay {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 14px;
  background: rgba(139, 47, 224,0.1);
  border: 1px solid rgba(139, 47, 224,0.25);
  border-radius: 20px;
  margin: 12px 0 16px;
  font-size: 0.9rem;
  color: rgba(245,245,245,0.95);
}
.profile-cosplay svg {
  color: var(--red);
  flex-shrink: 0;
}
.profile-cosplay strong {
  color: var(--white);
  font-weight: 600;
}
.profile-ig-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: #E1306C;
  text-decoration: none;
  font-weight: 500;
  transition: opacity 0.2s ease;
}
.profile-ig-link:hover {
  opacity: 0.75;
  color: #E1306C;
}

/* ============================================
   PILLOLA "RICHIESTE INGRESSI" (accanto a Lista Membri, solo admin)
   ============================================ */
.members-list-trigger-wrap {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 12px;
  margin: 30px 0 36px;
}
.richieste-trigger {
  background: rgba(10,10,10,0.6) !important;
  color: rgba(245,245,245,0.85) !important;
  border: 1.5px solid rgba(139, 47, 224,0.35) !important;
  position: relative;
  animation: none !important;
  box-shadow: 0 2px 10px rgba(0,0,0,0.2) !important;
}
.richieste-trigger:hover {
  background: var(--red) !important;
  color: var(--white) !important;
  border-color: var(--red) !important;
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(139, 47, 224,0.4) !important;
}
.richieste-trigger.has-pending {
  background: rgba(139, 47, 224,0.12) !important;
  border-color: var(--red) !important;
  color: var(--white) !important;
  animation: richieste-pulse 2.4s ease-in-out infinite !important;
}
@keyframes richieste-pulse {
  0%, 100% { box-shadow: 0 2px 10px rgba(0,0,0,0.2), 0 0 0 0 rgba(139, 47, 224,0.5); }
  50%      { box-shadow: 0 2px 10px rgba(0,0,0,0.2), 0 0 0 10px rgba(139, 47, 224,0); }
}
.richieste-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 22px;
  height: 22px;
  padding: 0 7px;
  margin-left: 4px;
  background: var(--red);
  color: #fff;
  border-radius: 11px;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0;
  line-height: 1;
}
@media (max-width: 640px) {
  .members-list-trigger-wrap { gap: 10px; }
  .richieste-trigger { padding: 10px 18px !important; font-size: 0.7rem !important; letter-spacing: 1.8px !important; }
}

/* ============================================
   PAGINA ASPIRANTI
   ============================================ */
.aspiranti-section {
  max-width: 1100px;
  margin: 0 auto;
  padding: 20px 0 60px;
}
.aspiranti-count {
  background: rgba(139, 47, 224,0.08);
  border: 1px solid rgba(139, 47, 224,0.2);
  border-radius: 10px;
  padding: 14px 20px;
  margin-bottom: 24px;
  color: rgba(245,245,245,0.85);
  font-size: 0.95rem;
}
.aspiranti-count strong {
  color: var(--red);
  font-size: 1.2rem;
  margin-right: 6px;
}
.aspiranti-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(420px, 1fr));
  gap: 20px;
}
.aspirante-card {
  background: var(--black-card);
  border: 1px solid rgba(139, 47, 224,0.15);
  border-radius: 12px;
  padding: 22px 22px 18px;
  display: flex;
  flex-direction: column;
  gap: 16px;
  transition: opacity 0.35s ease, transform 0.35s ease;
}
.aspirante-card.removing {
  opacity: 0;
  transform: translateY(-12px) scale(0.95);
  pointer-events: none;
}
.aspirante-card-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 10px;
  padding-bottom: 14px;
  border-bottom: 1px solid rgba(139, 47, 224,0.08);
}
.aspirante-card-head h3 {
  font-family: var(--font-display);
  font-size: 1.4rem;
  letter-spacing: 2px;
  color: var(--white);
  margin: 0;
}
.aspirante-date {
  font-family: var(--font-nav);
  font-size: 0.7rem;
  letter-spacing: 1px;
  color: rgba(245,245,245,0.5);
  white-space: nowrap;
}
.aspirante-info-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px 18px;
}
.aspirante-info-grid .info-item {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.aspirante-info-grid .info-label {
  font-family: var(--font-nav);
  font-size: 0.65rem;
  letter-spacing: 1.5px;
  color: var(--grey);
  text-transform: uppercase;
}
.aspirante-info-grid .info-value {
  color: rgba(245,245,245,0.95);
  font-size: 0.92rem;
  text-decoration: none;
  word-break: break-word;
  overflow-wrap: anywhere;
}
.aspirante-info-grid a.info-value:hover { color: var(--red); }
.aspirante-info-grid .wa-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: #25D366;
}
.aspirante-info-grid .ig-link { color: #E1306C; }
.aspirante-info-grid .cosplay-tag {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: var(--red);
  font-weight: 600;
}

.aspirante-actions {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
  padding-top: 14px;
  border-top: 1px solid rgba(139, 47, 224,0.08);
}
.aspirante-role {
  flex: 1;
  min-width: 140px;
  padding: 9px 12px;
  background: rgba(10,10,10,0.6);
  border: 1px solid rgba(139, 47, 224,0.2);
  color: var(--white);
  border-radius: 6px;
  font-family: var(--font-nav);
  font-size: 0.8rem;
  letter-spacing: 1px;
  cursor: pointer;
}
.aspirante-role:focus { outline: none; border-color: var(--red); }
.approve-btn {
  padding: 9px 18px !important;
}
.reject-btn {
  background: transparent !important;
  color: #ff6b6b !important;
  border: 1px solid rgba(255,107,107,0.3) !important;
  padding: 9px 18px !important;
}
.reject-btn:hover {
  background: rgba(255,107,107,0.1) !important;
  border-color: #ff6b6b !important;
}

@media (max-width: 640px) {
  .aspiranti-grid { grid-template-columns: 1fr; }
  .aspirante-info-grid { grid-template-columns: 1fr; gap: 8px; }
  .aspirante-actions { flex-direction: column; align-items: stretch; }
  .aspirante-role { width: 100%; }
}

/* ============================================
   PWA INSTALL BANNER + MODAL
   ============================================ */
.sss-install-banner {
  position: fixed;
  bottom: 20px;
  left: 20px;
  right: 100px; /* desktop: lascia spazio per chat a destra */
  z-index: 9990;
  max-width: 480px;
  background: rgba(10,10,10,0.97);
  border: 1px solid rgba(139, 47, 224,0.3);
  border-radius: 16px;
  padding: 16px 18px;
  backdrop-filter: blur(15px);
  -webkit-backdrop-filter: blur(15px);
  box-shadow: 0 12px 40px rgba(0,0,0,0.6), 0 0 0 1px rgba(139, 47, 224,0.1);
  animation: sss-install-slide-up 0.5s ease-out;
}
@keyframes sss-install-slide-up {
  from { transform: translateY(120%); opacity: 0; }
  to   { transform: translateY(0); opacity: 1; }
}
.sss-install-content {
  display: flex;
  align-items: center;
  gap: 14px;
  position: relative;
}
.sss-install-close {
  position: absolute;
  top: -6px;
  right: -6px;
  width: 26px;
  height: 26px;
  background: rgba(139, 47, 224,0.15);
  border: 1px solid rgba(139, 47, 224,0.3);
  color: var(--white);
  border-radius: 50%;
  font-size: 16px;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  transition: all 0.2s ease;
}
.sss-install-close:hover {
  background: var(--red);
  border-color: var(--red);
  transform: scale(1.1);
}
.sss-install-icon {
  flex-shrink: 0;
  width: 48px;
  height: 48px;
  border-radius: 12px;
  overflow: hidden;
  background: var(--black-card);
  border: 1px solid rgba(139, 47, 224,0.2);
  padding: 4px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.sss-install-icon img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}
.sss-install-icon.big {
  width: 80px;
  height: 80px;
  margin: 0 auto 16px;
  border-radius: 18px;
  padding: 8px;
}
.sss-install-text {
  flex: 1;
  min-width: 0;
}
.sss-install-text h3 {
  font-family: var(--font-display);
  font-size: 1rem;
  letter-spacing: 1.5px;
  color: var(--white);
  margin: 0 0 4px;
  text-transform: uppercase;
}
.sss-install-text p {
  color: rgba(245,245,245,0.7);
  font-size: 0.78rem;
  line-height: 1.4;
  margin: 0;
}
.sss-install-actions {
  flex-shrink: 0;
}
.sss-install-btn {
  padding: 9px 18px;
  background: var(--red);
  border: none;
  color: var(--white);
  border-radius: 30px;
  font-family: var(--font-nav);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  cursor: pointer;
  transition: all 0.25s ease;
  box-shadow: 0 4px 14px rgba(139, 47, 224,0.4);
}
.sss-install-btn:hover {
  background: var(--red-glow, #ff1a25);
  transform: translateY(-2px);
  box-shadow: 0 8px 22px rgba(139, 47, 224,0.55);
}

/* Modal istruzioni */
.sss-install-modal {
  position: fixed;
  inset: 0;
  z-index: 10000;
  background: rgba(10,10,10,0.92);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  animation: sss-install-fade-in 0.3s ease-out;
}
@keyframes sss-install-fade-in {
  from { opacity: 0; }
  to { opacity: 1; }
}
.sss-install-modal-content {
  background: var(--black-card);
  border: 1px solid rgba(139, 47, 224,0.25);
  border-radius: 18px;
  padding: 36px 28px 28px;
  max-width: 460px;
  width: 100%;
  max-height: 90vh;
  overflow-y: auto;
  position: relative;
  box-shadow: 0 20px 60px rgba(0,0,0,0.6);
  text-align: center;
}
.sss-install-modal-content .sss-install-close {
  top: 12px;
  right: 12px;
  width: 32px;
  height: 32px;
  font-size: 20px;
}
.sss-install-modal-content h2 {
  font-family: var(--font-display);
  font-size: 1.5rem;
  letter-spacing: 2px;
  color: var(--white);
  text-transform: uppercase;
  margin: 0 0 10px;
}
.sss-install-modal-content > p {
  color: rgba(245,245,245,0.75);
  font-size: 0.9rem;
  line-height: 1.5;
  margin: 0 0 22px;
}
.sss-install-steps {
  list-style: none;
  padding: 0;
  margin: 0 0 20px;
  text-align: left;
}
.sss-install-steps li {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  padding: 12px 14px;
  background: rgba(10,10,10,0.5);
  border-radius: 10px;
  margin-bottom: 10px;
  border: 1px solid rgba(139, 47, 224,0.08);
}
.step-num {
  flex-shrink: 0;
  width: 28px;
  height: 28px;
  background: var(--red);
  color: var(--white);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 0.95rem;
  box-shadow: 0 4px 10px rgba(139, 47, 224,0.3);
}
.step-text {
  flex: 1;
  color: rgba(245,245,245,0.9);
  font-size: 0.92rem;
  line-height: 1.5;
}
.step-text strong { color: var(--white); }
.sss-install-note {
  font-size: 0.78rem;
  color: rgba(245,245,245,0.5);
  line-height: 1.5;
  margin: 16px 0 0;
  padding-top: 14px;
  border-top: 1px solid rgba(139, 47, 224,0.1);
}

/* Tablet/mobile orizzontale: ancora spazio per chat a destra */
@media (max-width: 768px) and (min-width: 481px) {
  .sss-install-banner {
    bottom: 16px;
    left: 16px;
    right: 90px;
  }
}

/* Mobile: banner SOPRA la chat (impilato verticalmente, full width) */
@media (max-width: 480px) {
  .sss-install-banner {
    bottom: 90px; /* sopra la chat che sta a bottom: 20px + altezza ~52px */
    left: 12px;
    right: 12px;
    padding: 12px 14px;
  }
  .sss-install-content { gap: 10px; }
  .sss-install-icon { width: 42px; height: 42px; }
  .sss-install-text h3 { font-size: 0.9rem; }
  .sss-install-text p { font-size: 0.72rem; }
  .sss-install-btn { padding: 8px 14px; font-size: 0.65rem; }
  .sss-install-modal-content { padding: 28px 20px 22px; }
  .sss-install-modal-content h2 { font-size: 1.2rem; }
}

/* ============================================
   PWA STANDALONE — modifiche quando app installata
   ============================================ */
@media all and (display-mode: standalone) {
  /* Safe area iOS (notch) */
  body { padding-top: env(safe-area-inset-top); }
  .navbar { padding-top: calc(env(safe-area-inset-top) + 0px); height: calc(70px + env(safe-area-inset-top)); }
  /* Banner cookie più in alto per non sovrapporre con barra di sistema */
  .sss-cookie-banner { padding-bottom: calc(18px + env(safe-area-inset-bottom)); }
  /* Disabilita lo sfondo overscroll bianco su iOS */
  html { background: #0a0a0a; }
}

/* Touch optimization */
@media (hover: none) and (pointer: coarse) {
  /* Bottoni più cliccabili su touch */
  .cta-btn, .sss-btn, .members-list-trigger, .nav-area-riservata { min-height: 44px; }
  /* Disabilita hover sticky su mobile */
  .member-card:hover { transform: none; }
}

/* ============================================
   LANDING FULLSCREEN PWA POST-LOGIN
   ============================================ */
.sss-install-landing {
  position: fixed;
  inset: 0;
  z-index: 99999;
  background:
    radial-gradient(ellipse at top, rgba(139, 47, 224,0.18) 0%, transparent 50%),
    radial-gradient(ellipse at bottom, rgba(139, 47, 224,0.1) 0%, transparent 50%),
    linear-gradient(135deg, #0a0a0a 0%, #1a0000 50%, #0a0a0a 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 40px 24px;
  overflow-y: auto;
  animation: sss-landing-fade-in 0.5s ease-out;
}
@keyframes sss-landing-fade-in {
  from { opacity: 0; }
  to { opacity: 1; }
}
.sss-install-landing-inner {
  max-width: 500px;
  width: 100%;
  text-align: center;
  animation: sss-landing-zoom-in 0.6s ease-out 0.1s both;
}
@keyframes sss-landing-zoom-in {
  from { transform: scale(0.94); opacity: 0; }
  to { transform: scale(1); opacity: 1; }
}
.sss-install-landing-logo {
  width: 130px;
  height: 130px;
  margin: 0 auto 28px;
  background: var(--black-card, #161616);
  border: 2px solid rgba(139, 47, 224,0.3);
  border-radius: 28px;
  padding: 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow:
    0 16px 40px rgba(0,0,0,0.6),
    0 0 0 1px rgba(139, 47, 224,0.1),
    0 0 60px rgba(139, 47, 224,0.2);
  animation: sss-landing-logo-pulse 3s ease-in-out infinite;
}
@keyframes sss-landing-logo-pulse {
  0%, 100% { box-shadow: 0 16px 40px rgba(0,0,0,0.6), 0 0 0 1px rgba(139, 47, 224,0.1), 0 0 60px rgba(139, 47, 224,0.2); }
  50%      { box-shadow: 0 16px 40px rgba(0,0,0,0.6), 0 0 0 1px rgba(139, 47, 224,0.2), 0 0 80px rgba(139, 47, 224,0.35); }
}
.sss-install-landing-logo img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  border-radius: 20px;
}
.sss-install-landing-title {
  font-family: var(--font-display);
  font-size: clamp(2rem, 7vw, 2.8rem);
  letter-spacing: 5px;
  color: var(--white);
  margin: 0 0 14px;
  text-transform: uppercase;
  line-height: 1;
}
.sss-install-landing-title span { color: var(--red); }
.sss-install-landing-sub {
  color: rgba(245,245,245,0.75);
  font-size: 1rem;
  line-height: 1.6;
  margin: 0 0 32px;
  padding: 0 8px;
}
.sss-landing-install-btn {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  background: linear-gradient(135deg, var(--red) 0%, var(--magenta) 100%);
  color: var(--white);
  border: none;
  padding: 16px 44px;
  border-radius: 40px;
  font-family: var(--font-display);
  font-size: 1.15rem;
  font-weight: 700;
  letter-spacing: 4px;
  text-transform: uppercase;
  cursor: pointer;
  transition: all 0.3s ease;
  box-shadow:
    0 10px 30px rgba(139, 47, 224,0.6),
    inset 0 1px 0 rgba(255,255,255,0.15);
  margin-bottom: 24px;
  animation: sss-landing-btn-pulse 2.4s ease-in-out infinite;
}
@keyframes sss-landing-btn-pulse {
  0%, 100% { box-shadow: 0 10px 30px rgba(139, 47, 224,0.6), inset 0 1px 0 rgba(255,255,255,0.15), 0 0 0 0 rgba(139, 47, 224,0.5); }
  50%      { box-shadow: 0 10px 30px rgba(139, 47, 224,0.6), inset 0 1px 0 rgba(255,255,255,0.15), 0 0 0 16px rgba(139, 47, 224,0); }
}
.sss-landing-install-btn:hover {
  background: linear-gradient(135deg, var(--red-glow) 0%, var(--magenta) 100%);
  transform: translateY(-3px);
  box-shadow: 0 14px 40px rgba(139, 47, 224,0.75), 0 0 30px rgba(233, 30, 99, 0.4);
}
.sss-landing-install-btn:active { transform: translateY(-1px); }

/* Istruzioni steps */
.sss-install-landing-steps {
  margin: 24px auto 0;
  max-width: 440px;
  text-align: left;
  background: rgba(10,10,10,0.5);
  border: 1px solid rgba(139, 47, 224,0.15);
  border-radius: 14px;
  padding: 22px 24px;
  animation: sss-landing-steps-in 0.4s ease-out;
}
@keyframes sss-landing-steps-in {
  from { transform: translateY(10px); opacity: 0; }
  to { transform: translateY(0); opacity: 1; }
}
.sss-install-landing-steps h3 {
  font-family: var(--font-display);
  font-size: 1.05rem;
  letter-spacing: 2px;
  color: var(--red);
  margin: 0 0 16px;
  text-align: center;
  text-transform: uppercase;
}
.sss-install-landing-steps ol {
  list-style: none;
  padding: 0;
  margin: 0;
}
.sss-install-landing-steps li {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  padding: 10px 0;
  color: rgba(245,245,245,0.9);
  font-size: 0.95rem;
  line-height: 1.5;
}
.sss-install-landing-steps li .num {
  flex-shrink: 0;
  width: 28px;
  height: 28px;
  background: var(--red);
  color: var(--white);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 0.92rem;
  box-shadow: 0 4px 10px rgba(139, 47, 224,0.3);
}
.sss-install-landing-steps li strong { color: var(--white); }

/* Procedi senza — meno visibile */
.sss-landing-skip {
  display: block;
  margin: 36px auto 0;
  background: none;
  border: none;
  color: rgba(245,245,245,0.35);
  font-family: var(--font-nav);
  font-size: 0.75rem;
  letter-spacing: 2px;
  text-transform: uppercase;
  cursor: pointer;
  padding: 8px 18px;
  text-decoration: underline;
  text-decoration-color: rgba(245,245,245,0.15);
  text-underline-offset: 4px;
  transition: color 0.2s ease;
}
.sss-landing-skip:hover {
  color: rgba(245,245,245,0.7);
  text-decoration-color: rgba(245,245,245,0.5);
}

/* Mobile */
@media (max-width: 480px) {
  .sss-install-landing { padding: 30px 18px; }
  .sss-install-landing-logo { width: 100px; height: 100px; margin-bottom: 20px; padding: 14px; }
  .sss-install-landing-title { letter-spacing: 3px; margin-bottom: 10px; }
  .sss-install-landing-sub { font-size: 0.92rem; margin-bottom: 26px; }
  .sss-landing-install-btn { padding: 14px 32px; font-size: 1rem; letter-spacing: 3px; }
  .sss-install-landing-steps { padding: 18px 18px; }
  .sss-install-landing-steps li { font-size: 0.88rem; gap: 10px; }
}

/* ============================================
   MEDIA KIT
   ============================================ */
.mediakit-section {
  max-width: 1200px;
  margin: 0 auto;
  padding: 60px 20px 100px;
}
.mk-top-actions { margin-bottom: 30px; }

.mk-level-head {
  margin: 10px 0 24px;
}
.mk-level-head h3 {
  font-family: var(--font-display);
  font-size: 2rem;
  letter-spacing: 2px;
  color: var(--white);
  margin: 0 0 8px;
}
.mk-desc {
  color: var(--grey);
  font-size: 1rem;
  max-width: 700px;
}

/* Griglia categorie/sottocategorie */
.mk-cat-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 20px;
  margin-top: 20px;
}
.mk-cat-card {
  background: var(--black-card);
  border: 1px solid rgba(139, 47, 224, 0.2);
  border-radius: 14px;
  overflow: hidden;
  transition: all 0.3s ease;
  display: flex;
  flex-direction: column;
}
.mk-cat-card:hover {
  border-color: var(--red);
  transform: translateY(-4px);
  box-shadow: 0 12px 30px rgba(139, 47, 224, 0.25);
}
.mk-cat-card-link {
  display: block;
  padding: 28px 24px;
  text-decoration: none;
  flex: 1;
}
.mk-cat-icon {
  font-size: 38px;
  margin-bottom: 14px;
}
.mk-cat-card-link h4 {
  font-family: var(--font-nav);
  font-size: 1.25rem;
  color: var(--white);
  margin: 0 0 8px;
  letter-spacing: 1px;
}
.mk-cat-card-link p {
  color: var(--grey);
  font-size: 0.92rem;
  margin: 0 0 12px;
  line-height: 1.5;
}
.mk-count {
  display: inline-block;
  font-size: 0.8rem;
  color: var(--cyan);
  font-weight: 600;
  letter-spacing: 1px;
  text-transform: uppercase;
}
.mk-cat-admin {
  display: flex;
  gap: 8px;
  padding: 12px 24px 18px;
  border-top: 1px solid rgba(255,255,255,0.06);
}

/* Griglia materiali */
.mk-materiali-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 20px;
  margin-top: 24px;
}
.mk-materiale-card {
  background: var(--black-card);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 12px;
  overflow: hidden;
  transition: all 0.3s ease;
}
.mk-materiale-card:hover {
  border-color: var(--red);
  transform: translateY(-3px);
}
.mk-materiale-preview {
  position: relative;
  width: 100%;
  height: 160px;
  background: linear-gradient(135deg, #1a1a2e 0%, #0a0a0a 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
.mk-materiale-preview img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  padding: 10px;
}
.mk-file-icon {
  font-size: 56px;
}
.mk-ext-badge {
  position: absolute;
  top: 10px;
  right: 10px;
  background: var(--red);
  color: #fff;
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 1px;
  padding: 3px 8px;
  border-radius: 5px;
}
.mk-materiale-info {
  padding: 14px 16px 6px;
}
.mk-materiale-info strong {
  display: block;
  color: var(--white);
  font-size: 0.95rem;
  margin-bottom: 4px;
  word-break: break-word;
}
.mk-filesize {
  color: var(--grey);
  font-size: 0.8rem;
}
.mk-materiale-actions {
  display: flex;
  gap: 6px;
  padding: 10px 16px 16px;
  align-items: center;
}
.mk-download-btn {
  flex: 1;
  text-align: center;
  text-decoration: none;
  font-size: 0.85rem;
}
.mk-mini {
  padding: 8px 12px !important;
  font-size: 0.85rem !important;
}
.mk-empty-msg {
  text-align: center;
  color: var(--grey);
  padding: 60px 20px;
}

@media (max-width: 768px) {
  .mk-cat-grid { grid-template-columns: 1fr; }
  .mk-materiali-grid { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 14px; }
  .mk-materiale-preview { height: 130px; }
  .mediakit-section { padding: 40px 16px 80px; }
}

/* ============================================
   SISTEMA SANZIONI (Warn + Ban)
   ============================================ */

/* Tastino viola Gestione Utenti */
.gestione-trigger {
  background: linear-gradient(135deg, var(--red) 0%, var(--red-dark) 100%) !important;
  border-color: var(--red-glow) !important;
  position: relative;
}
.gestione-trigger:hover {
  box-shadow: 0 8px 25px rgba(139, 47, 224, 0.45) !important;
}
.gestione-trigger.has-sanctions { border-color: var(--magenta) !important; }
.gestione-badge {
  position: absolute;
  top: -8px; right: -8px;
  background: var(--magenta);
  color: #fff;
  font-size: 0.75rem;
  font-weight: 700;
  min-width: 22px; height: 22px;
  border-radius: 11px;
  display: flex; align-items: center; justify-content: center;
  padding: 0 6px;
}

/* Box sanzioni nel profilo */
.sanctions-box {
  background: var(--black-card);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 14px;
  padding: 24px;
  margin: 24px 0;
}
.sanctions-box.has-warns { border-color: rgba(255, 184, 0, 0.4); }
.sanctions-box.is-banned { border-color: rgba(229, 9, 20, 0.6); background: rgba(229, 9, 20, 0.05); }
.sanctions-head {
  display: flex; align-items: center; justify-content: space-between;
  flex-wrap: wrap; gap: 12px;
  margin-bottom: 16px;
}
.sanctions-head h3 {
  font-family: var(--font-nav);
  font-size: 1.2rem;
  color: var(--white);
  margin: 0;
  letter-spacing: 1px;
}

/* Contatore warn a pallini */
.warn-counter {
  display: inline-flex; align-items: center; gap: 6px;
}
.warn-counter.inline { margin-top: 6px; }
.warn-dot {
  width: 14px; height: 14px;
  border-radius: 50%;
  background: rgba(255,255,255,0.15);
  border: 1px solid rgba(255,255,255,0.25);
}
.warn-dot.active {
  background: #FFB800;
  border-color: #FFB800;
  box-shadow: 0 0 8px rgba(255, 184, 0, 0.5);
}
.warn-count-label {
  font-size: 0.82rem;
  color: var(--grey);
  margin-left: 6px;
  font-weight: 600;
}

/* Notice ban */
.ban-notice {
  background: rgba(229, 9, 20, 0.12);
  border: 1px solid rgba(229, 9, 20, 0.4);
  border-radius: 10px;
  padding: 16px;
  margin-bottom: 16px;
}
.ban-notice strong { color: #ff5a63; font-size: 1.05rem; }
.ban-notice p { margin: 8px 0 4px; color: var(--white); }
.ban-date { font-size: 0.8rem; color: var(--grey); }

/* Lista warn */
.warns-list { display: flex; flex-direction: column; gap: 10px; margin-bottom: 16px; }
.warn-item {
  display: flex; align-items: flex-start; gap: 12px;
  background: rgba(0,0,0,0.3);
  border-left: 3px solid #FFB800;
  border-radius: 8px;
  padding: 12px 14px;
}
.warn-item-num {
  font-family: var(--font-display);
  font-size: 1.1rem;
  color: #FFB800;
  font-weight: 700;
  min-width: 28px;
}
.warn-item-body { flex: 1; }
.warn-motivo { margin: 0 0 4px; color: var(--white); font-size: 0.95rem; }
.warn-meta { font-size: 0.78rem; color: var(--grey); }
.warn-remove {
  background: none; border: none;
  color: var(--grey);
  font-size: 1.4rem; line-height: 1;
  cursor: pointer; padding: 0 4px;
  transition: color 0.2s;
}
.warn-remove:hover { color: #ff5a63; }

.sanctions-clean { color: #3FE862; font-size: 0.95rem; margin: 8px 0; }

/* Azioni admin sanzioni */
.sanctions-admin-actions {
  display: flex; gap: 10px; flex-wrap: wrap;
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1px solid rgba(255,255,255,0.08);
}
.warn-btn {
  background: linear-gradient(135deg, #FFB800 0%, #FF8A00 100%) !important;
  color: #1a1a1a !important;
  font-weight: 700 !important;
}

/* Gestione Utenti — liste */
.gu-section-title {
  font-family: var(--font-nav);
  font-size: 1.1rem;
  letter-spacing: 1px;
  margin: 28px 0 14px;
  color: var(--white);
}
.gu-banned-title { color: #ff5a63; }
.gu-warned-title { color: #FFB800; }
.gu-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 14px;
}
.gu-card {
  display: flex; align-items: center; gap: 14px;
  background: var(--black-card);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 12px;
  padding: 14px 16px;
  text-decoration: none;
  transition: all 0.25s ease;
}
.gu-card:hover { transform: translateY(-3px); }
.gu-card-banned { border-color: rgba(229,9,20,0.35); }
.gu-card-banned:hover { border-color: #ff5a63; box-shadow: 0 8px 22px rgba(229,9,20,0.2); }
.gu-card-warned { border-color: rgba(255,184,0,0.3); }
.gu-card-warned:hover { border-color: #FFB800; box-shadow: 0 8px 22px rgba(255,184,0,0.15); }
.gu-avatar {
  width: 52px; height: 52px;
  border-radius: 50%;
  overflow: hidden;
  background: var(--black-light);
  flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
}
.gu-avatar img { width: 100%; height: 100%; object-fit: cover; }
.gu-avatar svg { width: 28px; height: 28px; fill: var(--grey); }
.gu-info { flex: 1; min-width: 0; }
.gu-info strong { display: block; color: var(--white); margin-bottom: 4px; }
.gu-badge {
  display: inline-block;
  font-size: 0.7rem; font-weight: 700;
  padding: 2px 8px; border-radius: 5px;
  letter-spacing: 1px;
}
.gu-badge-ban { background: #E50914; color: #fff; }
.gu-motivo { margin: 6px 0 2px; font-size: 0.85rem; color: var(--grey); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gu-date { font-size: 0.75rem; color: var(--grey); }

@media (max-width: 768px) {
  .gu-list { grid-template-columns: 1fr; }
  .sanctions-admin-actions { flex-direction: column; }
  .sanctions-admin-actions .sss-btn { width: 100%; }
}

/* ==========================================================
   NEWS — Archivio, Singolo, Scrivi (v4.23)
   Palette Spider-Verse: viola primary, magenta accent
   ========================================================== */
.news-archive,
.news-single,
.news-write,
.news-gate {
  max-width: 1200px;
  margin: 100px auto 60px;
  padding: 0 24px;
  color: var(--white);
}

/* ---- Archivio ---- */
.news-archive-header {
  text-align: center;
  margin-bottom: 36px;
  position: relative;
}
.news-archive-title {
  font-family: 'Bebas Neue', sans-serif;
  font-size: clamp(2.5rem, 6vw, 4rem);
  letter-spacing: 4px;
  background: linear-gradient(135deg, var(--red-glow), var(--magenta), var(--cyan));
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  margin-bottom: 8px;
}
.news-archive-sub {
  color: var(--grey);
  font-size: 1.05rem;
  margin-bottom: 16px;
}
.news-write-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 12px 24px;
  background: linear-gradient(135deg, var(--red), var(--magenta));
  color: #fff;
  border-radius: 8px;
  font-weight: 700;
  letter-spacing: 1px;
  font-size: 0.9rem;
  text-decoration: none;
  transition: transform .15s ease, box-shadow .2s ease;
  box-shadow: 0 4px 16px rgba(139, 47, 224, 0.3);
}
.news-write-btn:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(139, 47, 224, 0.5);
}

.news-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  justify-content: center;
  margin-bottom: 36px;
}
.news-filter {
  padding: 8px 18px;
  border: 1px solid rgba(168, 85, 247, 0.3);
  background: rgba(20, 20, 20, 0.6);
  color: var(--grey);
  border-radius: 22px;
  text-decoration: none;
  font-size: 0.85rem;
  font-weight: 600;
  letter-spacing: 0.5px;
  transition: all .2s ease;
}
.news-filter:hover { color: var(--white); border-color: var(--red-glow); }
.news-filter.active {
  background: var(--red);
  color: #fff;
  border-color: var(--red);
}

.news-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(290px, 1fr));
  gap: 24px;
}

.news-card {
  background: rgba(20, 20, 20, 0.85);
  border: 1px solid rgba(168, 85, 247, 0.15);
  border-radius: 12px;
  overflow: hidden;
  text-decoration: none;
  color: var(--white);
  transition: transform .2s ease, border-color .2s ease, box-shadow .2s ease;
  display: flex;
  flex-direction: column;
}
.news-card:hover {
  transform: translateY(-4px);
  border-color: var(--red-glow);
  box-shadow: 0 12px 30px rgba(139, 47, 224, 0.25);
}
.news-card-cover {
  position: relative;
  aspect-ratio: 16 / 9;
  background: #0A0A0A;
  overflow: hidden;
}
.news-card-cover img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform .35s ease;
}
.news-card:hover .news-card-cover img { transform: scale(1.05); }
.news-card-placeholder {
  width: 100%; height: 100%;
  display: flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, #1a0d2e, #0A0A0A);
}
.news-card-placeholder img { width: 70px; height: 70px; opacity: 0.4; object-fit: contain; }
.news-card-cat {
  position: absolute;
  top: 12px; left: 12px;
  background: rgba(233, 30, 99, 0.95);
  color: #fff;
  padding: 4px 10px;
  border-radius: 4px;
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 1px;
  text-transform: uppercase;
}
.news-card-body { padding: 18px 20px 20px; flex: 1; display: flex; flex-direction: column; }
.news-card-title {
  font-family: 'Oswald', sans-serif;
  font-size: 1.2rem;
  line-height: 1.3;
  margin: 0 0 10px;
  color: #fff;
}
.news-card-excerpt {
  color: var(--grey);
  font-size: 0.9rem;
  line-height: 1.5;
  flex: 1;
  margin: 0 0 14px;
}
.news-card-meta {
  display: flex;
  justify-content: space-between;
  align-items: center;
  border-top: 1px solid rgba(255,255,255,0.07);
  padding-top: 12px;
  font-size: 0.78rem;
}
.news-card-author { font-weight: 700; }
.news-card-date { color: var(--grey); }

.news-pagination {
  display: flex;
  justify-content: center;
  gap: 8px;
  margin-top: 40px;
}
.news-page {
  min-width: 38px;
  height: 38px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(168, 85, 247, 0.3);
  border-radius: 6px;
  color: var(--grey);
  text-decoration: none;
  font-weight: 600;
}
.news-page:hover { color: #fff; border-color: var(--red-glow); }
.news-page.active { background: var(--red); border-color: var(--red); color: #fff; }

.news-empty {
  text-align: center;
  padding: 80px 20px;
  color: var(--grey);
}
.news-empty h2 { margin-bottom: 12px; color: #fff; }

/* ---- Singolo ---- */
.news-single { max-width: 860px; }
.news-single-breadcrumb { margin-bottom: 20px; font-size: 0.9rem; }
.news-single-breadcrumb a { color: var(--grey); text-decoration: none; }
.news-single-breadcrumb a:hover { color: var(--cyan); }

.news-single-cover {
  border-radius: 14px;
  overflow: hidden;
  margin-bottom: 30px;
  aspect-ratio: 16 / 9;
  background: #0A0A0A;
}
.news-single-cover img { width: 100%; height: 100%; object-fit: cover; display: block; }

.news-single-cats { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }
.news-single-cat {
  background: rgba(233, 30, 99, 0.15);
  color: var(--magenta);
  padding: 4px 12px;
  border-radius: 4px;
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 1px;
  text-decoration: none;
  font-weight: 700;
  border: 1px solid rgba(233, 30, 99, 0.3);
}
.news-single-title {
  font-family: 'Oswald', sans-serif;
  font-size: clamp(1.7rem, 4vw, 2.6rem);
  line-height: 1.15;
  margin: 0 0 22px;
  color: #fff;
}
.news-single-meta {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  padding-bottom: 22px;
  border-bottom: 1px solid rgba(255,255,255,0.08);
  margin-bottom: 30px;
  flex-wrap: wrap;
}
.news-single-author { display: flex; align-items: center; gap: 12px; }
.news-single-avatar {
  width: 46px; height: 46px;
  border-radius: 50%;
  object-fit: cover;
  border: 2px solid rgba(168, 85, 247, 0.3);
}
.news-single-author-name { font-weight: 700; font-size: 0.95rem; display: inline-block; margin-right: 8px; }
.news-single-role-badge {
  color: #000;
  font-size: 0.65rem;
  font-weight: 700;
  letter-spacing: 1px;
  padding: 2px 8px;
  border-radius: 4px;
  text-transform: uppercase;
}
.news-single-date { color: var(--grey); font-size: 0.85rem; }

.news-single-actions {
  display: flex;
  gap: 10px;
  margin-top: 16px;
}

.news-single-content {
  font-size: 1.05rem;
  line-height: 1.75;
  color: #e9e9e9;
}
.news-single-content p { margin-bottom: 1.2em; }
.news-single-content h2,
.news-single-content h3 {
  font-family: 'Oswald', sans-serif;
  margin: 1.4em 0 0.5em;
  color: #fff;
}
.news-single-content h2 { font-size: 1.6rem; }
.news-single-content h3 { font-size: 1.3rem; }
.news-single-content a { color: var(--cyan); text-decoration: underline; }
.news-single-content blockquote {
  border-left: 3px solid var(--magenta);
  padding: 8px 18px;
  margin: 18px 0;
  background: rgba(233, 30, 99, 0.06);
  font-style: italic;
  color: #d8d8d8;
}
.news-single-content img {
  max-width: 100%;
  height: auto;
  border-radius: 8px;
  margin: 18px 0;
  display: block;
}
.news-single-content ul,
.news-single-content ol { margin: 0 0 1.2em 1.4em; }
.news-single-content li { margin-bottom: 0.4em; }

.news-single-footer {
  margin-top: 40px;
  padding-top: 24px;
  border-top: 1px solid rgba(255,255,255,0.08);
}
.news-single-share {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  align-items: center;
  color: var(--grey);
  font-size: 0.9rem;
}
.news-single-share a {
  padding: 6px 14px;
  border: 1px solid rgba(168, 85, 247, 0.3);
  border-radius: 6px;
  color: var(--white);
  text-decoration: none;
  font-size: 0.85rem;
  font-weight: 600;
}
.news-single-share a:hover { border-color: var(--cyan); color: var(--cyan); }

.news-related {
  max-width: 1200px;
  margin: 60px auto;
  padding: 0 24px;
}
.news-related-title {
  font-family: 'Oswald', sans-serif;
  font-size: 1.5rem;
  margin-bottom: 22px;
  color: #fff;
  text-transform: uppercase;
  letter-spacing: 1px;
}

/* ---- Scrivi News (form) ---- */
.news-write { max-width: 820px; }
.news-write-breadcrumb { margin-bottom: 18px; font-size: 0.9rem; }
.news-write-breadcrumb a { color: var(--grey); text-decoration: none; }
.news-write-breadcrumb a:hover { color: var(--cyan); }
.news-write-breadcrumb span { color: rgba(255,255,255,0.2); margin: 0 6px; }

.news-write-title {
  font-family: 'Bebas Neue', sans-serif;
  letter-spacing: 3px;
  font-size: clamp(2rem, 5vw, 3rem);
  background: linear-gradient(135deg, var(--red-glow), var(--magenta));
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  margin-bottom: 6px;
}
.news-write-sub { color: var(--grey); margin-bottom: 28px; }

.news-write-form {
  display: flex;
  flex-direction: column;
  gap: 22px;
  background: rgba(20, 20, 20, 0.65);
  padding: 28px;
  border-radius: 14px;
  border: 1px solid rgba(168, 85, 247, 0.15);
}
.news-field {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.news-field > span {
  font-weight: 700;
  font-size: 0.85rem;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: #d4d4d4;
}
.news-field input[type="text"],
.news-field select,
.news-field textarea {
  background: #0A0A0A;
  border: 1px solid rgba(168, 85, 247, 0.25);
  color: #fff;
  padding: 11px 14px;
  border-radius: 8px;
  font: inherit;
  font-size: 0.95rem;
  transition: border-color .15s ease, box-shadow .15s ease;
}
.news-field input:focus,
.news-field select:focus,
.news-field textarea:focus {
  outline: none;
  border-color: var(--red-glow);
  box-shadow: 0 0 0 3px rgba(168, 85, 247, 0.15);
}
.news-field textarea { resize: vertical; min-height: 80px; font-family: 'Rajdhani', sans-serif; }
#news-content { min-height: 280px; }
.news-help { color: var(--grey); font-size: 0.78rem; }

.news-cover-uploader { display: flex; flex-direction: column; gap: 10px; }
.news-cover-preview {
  width: 100%;
  aspect-ratio: 16 / 9;
  background: #0A0A0A center / cover no-repeat;
  border: 1px dashed rgba(168, 85, 247, 0.35);
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--grey);
  font-size: 0.85rem;
}
.news-cover-actions { display: flex; gap: 10px; flex-wrap: wrap; }
.news-cover-status { color: var(--cyan); font-size: 0.85rem; margin: 0; }

.news-action-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 9px 18px;
  background: var(--red);
  color: #fff;
  border: none;
  border-radius: 6px;
  cursor: pointer;
  font: inherit;
  font-weight: 700;
  font-size: 0.8rem;
  letter-spacing: 0.8px;
  text-decoration: none;
  transition: background .15s ease, transform .1s ease;
}
.news-action-btn:hover { background: var(--red-dark); transform: translateY(-1px); }
.news-action-ghost {
  background: transparent;
  border: 1px solid rgba(168, 85, 247, 0.4);
  color: var(--red-glow);
}
.news-action-ghost:hover { background: rgba(168, 85, 247, 0.1); color: #fff; }
.news-action-approve { background: #3FE862; color: #001a08; }
.news-action-approve:hover { background: #2EC150; }
.news-action-reject { background: #FFD600; color: #2A2200; }
.news-action-reject:hover { background: #E2BC00; }
.news-action-delete { background: #E50914; color: #fff; }
.news-action-delete:hover { background: #B30710; }

.news-write-actions { display: flex; gap: 12px; flex-wrap: wrap; align-items: center; }
.news-submit-btn {
  padding: 14px 30px;
  background: linear-gradient(135deg, var(--red), var(--magenta));
  color: #fff;
  border: none;
  border-radius: 8px;
  font: inherit;
  font-weight: 800;
  font-size: 0.95rem;
  letter-spacing: 1.5px;
  cursor: pointer;
  box-shadow: 0 4px 16px rgba(139, 47, 224, 0.3);
  transition: transform .15s ease, box-shadow .2s ease;
}
.news-submit-btn:hover:not(:disabled) {
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(139, 47, 224, 0.5);
}
.news-submit-btn:disabled { opacity: 0.6; cursor: wait; }
.news-cancel-btn {
  padding: 14px 24px;
  color: var(--grey);
  text-decoration: none;
  font-weight: 700;
  border-radius: 8px;
}
.news-cancel-btn:hover { color: var(--white); }

.news-write-feedback {
  padding: 12px 16px;
  border-radius: 8px;
  font-weight: 600;
  font-size: 0.92rem;
}
.news-write-feedback.ok {
  background: rgba(63, 232, 98, 0.15);
  color: #6EFF95;
  border: 1px solid rgba(63, 232, 98, 0.3);
}
.news-write-feedback.err {
  background: rgba(229, 9, 20, 0.15);
  color: #FF6B7A;
  border: 1px solid rgba(229, 9, 20, 0.3);
}

/* Moderazione admin */
.news-moderation {
  margin-top: 50px;
  padding: 24px;
  background: rgba(20, 20, 20, 0.65);
  border-radius: 14px;
  border: 1px solid rgba(255, 214, 0, 0.2);
}
.news-moderation-title {
  font-family: 'Oswald', sans-serif;
  font-size: 1.3rem;
  color: #FFD600;
  margin-bottom: 18px;
  text-transform: uppercase;
  letter-spacing: 1.5px;
}
.news-moderation-list { list-style: none; padding: 0; margin: 0; }
.news-moderation-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  padding: 14px 0;
  border-bottom: 1px solid rgba(255,255,255,0.06);
  flex-wrap: wrap;
}
.news-moderation-item:last-child { border-bottom: none; }
.news-moderation-info { flex: 1; min-width: 220px; }
.news-moderation-info strong { display: block; font-size: 1rem; color: #fff; margin-bottom: 4px; }
.news-moderation-meta { color: var(--grey); font-size: 0.82rem; }
.news-moderation-actions { display: flex; gap: 8px; flex-wrap: wrap; }

/* Gate (non autorizzato) */
.news-gate {
  text-align: center;
  padding: 80px 24px;
}
.news-gate h1 {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 2.5rem;
  color: var(--red-glow);
  margin-bottom: 16px;
}
.news-gate p { color: var(--grey); margin-bottom: 12px; }
.news-gate a { color: var(--cyan); text-decoration: none; font-weight: 700; }

/* ---- Tabs Community / Dal Web ---- */
.news-tabs {
  display: flex;
  gap: 4px;
  justify-content: center;
  margin: 0 auto 28px;
  border-bottom: 1px solid rgba(168, 85, 247, 0.2);
  max-width: 520px;
}
.news-tab {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 14px 28px;
  color: var(--grey);
  text-decoration: none;
  font-weight: 800;
  font-size: 0.95rem;
  letter-spacing: 1.5px;
  border-bottom: 3px solid transparent;
  transition: color .15s ease, border-color .15s ease;
  position: relative;
  top: 1px;
}
.news-tab:hover { color: var(--white); }
.news-tab.active {
  color: var(--red-glow);
  border-bottom-color: var(--red-glow);
  text-shadow: 0 0 18px rgba(168, 85, 247, 0.5);
}

/* ---- Tab "Dal Web": intro + chips ---- */
.news-web-intro {
  background: rgba(20, 20, 20, 0.6);
  border: 1px solid rgba(34, 211, 238, 0.15);
  border-radius: 12px;
  padding: 18px 22px;
  margin-bottom: 28px;
}
.news-web-intro p { color: #d4d4d4; margin: 0 0 12px; font-size: 0.95rem; }
.news-web-sources { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: 0.85rem; color: var(--grey); }
.news-web-source-chip {
  background: rgba(34, 211, 238, 0.12);
  color: var(--cyan);
  border: 1px solid rgba(34, 211, 238, 0.3);
  padding: 4px 10px;
  border-radius: 12px;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.5px;
}

/* ---- Card "Dal Web" (variazione della card normale) ---- */
.news-grid-web .news-card-web {
  border-color: rgba(34, 211, 238, 0.15);
}
.news-grid-web .news-card-web:hover {
  border-color: var(--cyan);
  box-shadow: 0 12px 30px rgba(34, 211, 238, 0.22);
}
.news-card-source {
  position: absolute;
  top: 12px; left: 12px;
  background: rgba(10, 10, 10, 0.85);
  backdrop-filter: blur(6px);
  border: 1px solid rgba(34, 211, 238, 0.3);
  color: var(--cyan);
  padding: 4px 10px;
  border-radius: 4px;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.5px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.news-card-source img { display: inline-block; vertical-align: middle; }

/* Badge IT — articolo in italiano */
.news-card-it {
  position: absolute;
  top: 12px; right: 12px;
  background: linear-gradient(135deg, #009246 0%, #009246 33%, #fff 33%, #fff 66%, #CE2B37 66%);
  color: #0A0A0A;
  font-weight: 800;
  font-size: 0.6rem;
  letter-spacing: 1px;
  padding: 4px 8px;
  border-radius: 4px;
  text-shadow: 0 0 4px rgba(255,255,255,0.8);
  border: 1px solid rgba(0,0,0,0.3);
  box-shadow: 0 2px 8px rgba(0,0,0,0.4);
}

/* Badge SPIDER NEWS (sostituisce attribuzione fonte) */
.news-card-source-spider {
  background: rgba(139, 47, 224, 0.92) !important;
  border: 1px solid rgba(168, 85, 247, 0.6) !important;
  color: #fff !important;
  box-shadow: 0 0 12px rgba(168, 85, 247, 0.35);
}

/* Tag "Spider Society" nel meta della card */
.news-card-tag {
  color: var(--red-glow);
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.8px;
  text-transform: uppercase;
}

/* Card curated (manuale) — leggero glow magenta in più */
.news-card-curated {
  border-color: rgba(233, 30, 99, 0.35) !important;
}
.news-card-curated:hover {
  border-color: var(--magenta) !important;
  box-shadow: 0 12px 30px rgba(233, 30, 99, 0.25) !important;
}

/* Source COMMUNITY badge sulle card community (nel tab Tutti) */
.news-card-source-community {
  background: rgba(233, 30, 99, 0.92) !important;
  border: 1px solid rgba(233, 30, 99, 0.6) !important;
  color: #fff !important;
  box-shadow: 0 0 10px rgba(233, 30, 99, 0.3);
}

/* Lead paragraph nella pagina interna Spider News */
.news-single-lead {
  font-size: 1.15rem;
  line-height: 1.7;
  color: #f0f0f0;
  font-weight: 500;
  padding-bottom: 22px;
  margin-bottom: 28px;
  border-bottom: 1px solid rgba(168, 85, 247, 0.15);
}

/* Body completo dell'articolo Spider News */
.news-single-body {
  font-size: 1.04rem;
  line-height: 1.8;
  color: #dcdcdc;
}
.news-single-body h2 {
  font-family: 'Oswald', sans-serif;
  font-size: 1.65rem;
  margin: 1.8em 0 0.5em;
  color: #fff;
  letter-spacing: 0.5px;
  position: relative;
  padding-left: 14px;
}
.news-single-body h2::before {
  content: '';
  position: absolute;
  left: 0; top: 8px; bottom: 8px;
  width: 4px;
  border-radius: 2px;
  background: linear-gradient(to bottom, var(--red-glow), var(--magenta));
}
.news-single-body h3 {
  font-family: 'Oswald', sans-serif;
  font-size: 1.25rem;
  margin: 1.4em 0 0.4em;
  color: var(--red-glow);
}
.news-single-body p { margin: 0 0 1.1em; }
.news-single-body strong { color: #fff; font-weight: 700; }
.news-single-body em { color: var(--cyan); font-style: italic; }
.news-single-body a {
  color: var(--cyan);
  text-decoration: underline;
  text-decoration-color: rgba(34, 211, 238, 0.4);
  transition: text-decoration-color .15s ease;
}
.news-single-body a:hover { text-decoration-color: var(--cyan); }
.news-single-body ul,
.news-single-body ol { margin: 0 0 1.2em 1.4em; }
.news-single-body li { margin-bottom: 0.5em; }
.news-single-body blockquote {
  border-left: 3px solid var(--magenta);
  padding: 12px 22px;
  margin: 22px 0;
  background: rgba(233, 30, 99, 0.06);
  font-style: italic;
  color: #d8d8d8;
  border-radius: 0 6px 6px 0;
}
.news-single-source {
  margin-top: 36px;
  padding: 16px 22px;
  background: rgba(34, 211, 238, 0.08);
  border-left: 3px solid var(--cyan);
  border-radius: 6px;
  font-size: 0.95rem;
}
.news-single-source a {
  color: var(--cyan);
  text-decoration: underline;
  word-break: break-all;
}
.news-card-noimg {
  background: linear-gradient(135deg, #0d2536, #061018);
}
.news-card-host {
  color: var(--cyan);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.3px;
}
.news-web-disclaimer {
  text-align: center;
  color: var(--grey);
  font-size: 0.78rem;
  margin: 32px auto 0;
  max-width: 700px;
  font-style: italic;
}

/* Responsive */
@media (max-width: 768px) {
  .news-archive,
  .news-single,
  .news-write { margin-top: 80px; padding: 0 16px; }
  .news-grid { grid-template-columns: 1fr; gap: 18px; }
  .news-write-form { padding: 20px; }
  .news-moderation-item { flex-direction: column; align-items: flex-start; }
  .news-moderation-actions { width: 100%; }
  .news-tab { padding: 12px 18px; font-size: 0.85rem; letter-spacing: 1px; }
}

/* ==========================================================
   HOME — SPIDER-VERSE CINEMATIC (v4.25)
   ========================================================== */

/* Sfondo ragnatela hero animato */
.hero { position: relative; overflow: hidden; }
.hero-bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  overflow: hidden;
}
.hero-web {
  position: absolute;
  width: 130%;
  height: 130%;
  top: -15%;
  left: -15%;
  transform-origin: center;
  animation: sssWebSpin 80s linear infinite;
}
@keyframes sssWebSpin {
  from { transform: rotate(0deg) scale(1); }
  50%  { transform: rotate(180deg) scale(1.05); }
  to   { transform: rotate(360deg) scale(1); }
}

/* Particelle (puntini fluttuanti) */
.hero-particle {
  position: absolute;
  width: 4px; height: 4px;
  border-radius: 50%;
  background: var(--red-glow);
  box-shadow: 0 0 16px var(--red-glow), 0 0 4px #fff;
  opacity: 0.6;
}
.hero-particle.p1 { top: 18%; left: 12%; animation: sssFloat 7s ease-in-out infinite; }
.hero-particle.p2 { top: 28%; right: 18%; animation: sssFloat 9s ease-in-out infinite 1s; background: var(--cyan); box-shadow: 0 0 16px var(--cyan); }
.hero-particle.p3 { bottom: 22%; left: 22%; animation: sssFloat 11s ease-in-out infinite 2s; background: var(--magenta); box-shadow: 0 0 16px var(--magenta); }
.hero-particle.p4 { bottom: 18%; right: 14%; animation: sssFloat 8s ease-in-out infinite 1.5s; }
@keyframes sssFloat {
  0%, 100% { transform: translateY(0) translateX(0); }
  50% { transform: translateY(-30px) translateX(15px); }
}

/* Z-index hero content sopra background */
.hero-main, .hero-video-side { position: relative; z-index: 1; }

/* Tagline rotator */
.hero-tagline {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  justify-content: center;
}
.hero-rotator {
  position: relative;
  display: inline-block;
  min-width: 280px;
  height: 1.4em;
  font-weight: 800;
  color: var(--red-glow);
  text-shadow: 0 0 18px rgba(168, 85, 247, 0.5);
}
.hero-rotator-word {
  position: absolute;
  left: 0; right: 0;
  opacity: 0;
  transform: translateY(8px);
  transition: opacity .55s ease, transform .55s ease;
  white-space: nowrap;
}
.hero-rotator-word.show {
  opacity: 1;
  transform: translateY(0);
}

/* Glitch RGB su titoli */
.glitch {
  position: relative;
  display: inline-block;
}
.glitch::before,
.glitch::after {
  content: attr(data-text);
  position: absolute;
  top: 0; left: 0; right: 0;
  pointer-events: none;
  opacity: 0;
  transition: opacity .25s ease;
}
.glitch::before { color: var(--cyan); transform: translate(-2px, 0); }
.glitch::after  { color: var(--magenta); transform: translate(2px, 0); }
.glitch:hover::before,
.glitch:hover::after {
  opacity: 0.65;
  animation: sssGlitch 1s steps(2) infinite;
}
@keyframes sssGlitch {
  0%, 100% { transform: translate(-2px, 0); }
  25% { transform: translate(-3px, 1px); }
  50% { transform: translate(-1px, -1px); }
  75% { transform: translate(-2px, 1px); }
}
.glitch::after { animation-direction: reverse; }

/* ---- Live counter ---- */
.home-counter {
  position: relative;
  margin: -30px auto 0;
  padding: 0 24px 60px;
  max-width: 1200px;
  z-index: 5;
}
.home-counter-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 18px;
  background: linear-gradient(135deg, rgba(139, 47, 224, 0.12), rgba(34, 211, 238, 0.06));
  border: 1px solid rgba(168, 85, 247, 0.25);
  border-radius: 18px;
  padding: 28px 24px;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  box-shadow: 0 14px 50px rgba(0, 0, 0, 0.5);
}
.counter-cell {
  text-align: center;
  position: relative;
}
.counter-cell + .counter-cell::before {
  content: '';
  position: absolute;
  left: -9px; top: 12px; bottom: 12px;
  width: 1px;
  background: linear-gradient(to bottom, transparent, rgba(168, 85, 247, 0.3), transparent);
}
.counter-icon {
  width: 42px; height: 42px;
  margin: 0 auto 8px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 12px;
  background: rgba(168, 85, 247, 0.15);
  color: var(--red-glow);
}
.counter-icon svg { width: 22px; height: 22px; }
.counter-num {
  font-family: 'Bebas Neue', sans-serif;
  font-size: clamp(2rem, 5vw, 3.2rem);
  line-height: 1;
  background: linear-gradient(135deg, #fff, var(--red-glow));
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  letter-spacing: 1px;
}
.counter-label {
  color: var(--grey);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  margin-top: 6px;
}

/* ---- News mosaic homepage ---- */
.home-news {
  max-width: 1200px;
  margin: 30px auto 60px;
  padding: 0 24px;
}
.home-section-head {
  text-align: center;
  margin-bottom: 30px;
  position: relative;
}
.home-section-title {
  font-family: 'Bebas Neue', sans-serif;
  font-size: clamp(2.2rem, 5vw, 3.4rem);
  letter-spacing: 4px;
  background: linear-gradient(135deg, var(--red-glow), var(--magenta), var(--cyan));
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  margin: 0 0 6px;
}
.home-section-sub { color: var(--grey); font-size: 1rem; margin: 0 0 12px; }
.home-section-link {
  display: inline-block;
  color: var(--cyan);
  text-decoration: none;
  font-weight: 700;
  font-size: 0.9rem;
  letter-spacing: 1px;
  border-bottom: 1px solid transparent;
  transition: border-color .15s ease;
}
.home-section-link:hover { border-bottom-color: var(--cyan); }

.home-news-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(290px, 1fr));
  gap: 22px;
}
.news-card-community-tag .news-card-source-community {
  background: rgba(233, 30, 99, 0.92);
  border-color: rgba(233, 30, 99, 0.3);
  color: #fff;
}

/* ---- CTA finale home ---- */
.home-cta {
  position: relative;
  margin: 80px auto 60px;
  padding: 60px 24px;
  max-width: 1200px;
  text-align: center;
  overflow: hidden;
  border-radius: 24px;
  background:
    radial-gradient(circle at 30% 30%, rgba(139, 47, 224, 0.25), transparent 60%),
    radial-gradient(circle at 70% 70%, rgba(34, 211, 238, 0.15), transparent 60%),
    linear-gradient(135deg, #0d0a18, #0A0A0A);
  border: 1px solid rgba(168, 85, 247, 0.25);
}
.home-cta::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200"><circle cx="100" cy="100" r="40" fill="none" stroke="%238B2FE0" stroke-width="0.5" opacity="0.3"/><circle cx="100" cy="100" r="70" fill="none" stroke="%238B2FE0" stroke-width="0.5" opacity="0.2"/><circle cx="100" cy="100" r="100" fill="none" stroke="%238B2FE0" stroke-width="0.5" opacity="0.1"/></svg>');
  background-size: 300px 300px;
  background-position: center;
  opacity: 0.5;
  pointer-events: none;
}
.home-cta-inner { position: relative; z-index: 1; }
.home-cta-logo {
  width: 88px;
  margin: 0 auto 18px;
  display: block;
  filter: drop-shadow(0 0 24px rgba(168, 85, 247, 0.6));
  animation: sssPulseLogo 4s ease-in-out infinite;
}
@keyframes sssPulseLogo {
  0%, 100% { filter: drop-shadow(0 0 24px rgba(168, 85, 247, 0.6)); }
  50% { filter: drop-shadow(0 0 36px rgba(233, 30, 99, 0.7)); }
}
.home-cta-title {
  font-family: 'Bebas Neue', sans-serif;
  font-size: clamp(2.4rem, 6vw, 4rem);
  letter-spacing: 4px;
  background: linear-gradient(135deg, var(--red-glow), var(--magenta), var(--cyan));
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  margin: 0 0 14px;
}
.home-cta-sub {
  color: #d4d4d4;
  font-size: 1.05rem;
  line-height: 1.7;
  max-width: 600px;
  margin: 0 auto 28px;
}
.home-cta-buttons {
  display: flex;
  gap: 14px;
  justify-content: center;
  flex-wrap: wrap;
}
.cta-btn-primary {
  background: linear-gradient(135deg, var(--red), var(--magenta));
  color: #fff !important;
  font-weight: 800;
  padding: 16px 36px;
  letter-spacing: 2px;
  border-radius: 8px;
  box-shadow: 0 8px 28px rgba(139, 47, 224, 0.45);
  text-decoration: none;
  transition: transform .15s ease, box-shadow .2s ease;
}
.cta-btn-primary:hover {
  transform: translateY(-2px);
  box-shadow: 0 14px 36px rgba(139, 47, 224, 0.6);
}
.cta-btn-ghost {
  background: transparent;
  color: var(--grey) !important;
  border: 1px solid rgba(168, 85, 247, 0.4);
  padding: 16px 30px;
  border-radius: 8px;
  font-weight: 700;
  letter-spacing: 1px;
  text-decoration: none;
  transition: color .15s ease, border-color .15s ease;
}
.cta-btn-ghost:hover { color: #fff !important; border-color: var(--red-glow); }

/* Mobile */
@media (max-width: 768px) {
  .home-counter { margin-top: -10px; padding: 0 12px 40px; }
  .home-counter-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 14px;
    padding: 20px 16px;
  }
  .counter-cell + .counter-cell::before { display: none; }
  .home-news-grid { grid-template-columns: 1fr; }
  .home-cta { margin: 50px 16px; padding: 40px 20px; }
  .home-cta-buttons { flex-direction: column; }
  .cta-btn-primary, .cta-btn-ghost { width: 100%; text-align: center; }
  .hero-rotator { min-width: 220px; font-size: 0.95em; }
}

/* ==========================================================
   ⚡ SPIDER-VERSE ENGINE — GOD TIER (v4.34)
   Cursor · Tilt · Reveal · Parallax · Comic · Halftone
   ========================================================== */

/* ---- 1. Scroll progress: filo di ragnatela ---- */
.sv-progress {
  position: fixed; top: 0; left: 0; right: 0; height: 3px;
  z-index: 100000; pointer-events: none;
  background: rgba(168, 85, 247, 0.08);
}
.sv-progress-fill {
  display: block; height: 100%; width: 100%;
  transform: scaleX(0); transform-origin: left;
  background: linear-gradient(90deg, var(--red-glow), var(--magenta), var(--cyan));
  box-shadow: 0 0 14px var(--red-glow);
}
.sv-progress-spider {
  position: absolute; top: -7px; transform: translateX(-50%);
  font-size: 14px; filter: drop-shadow(0 0 6px var(--red-glow));
  transition: left .05s linear;
}

/* ---- 2. Cursor reticolo ---- */
.sv-cursor-on, .sv-cursor-on a, .sv-cursor-on button { cursor: none; }
.sv-cursor-on input, .sv-cursor-on textarea, .sv-cursor-on select { cursor: auto; }
.sv-cursor-ring, .sv-cursor-dot {
  position: fixed; top: 0; left: 0; z-index: 100001;
  pointer-events: none; will-change: transform;
  margin-left: -16px; margin-top: -16px;
}
.sv-cursor-ring {
  width: 32px; height: 32px; border-radius: 50%;
  border: 2px solid var(--red-glow);
  box-shadow: 0 0 12px rgba(168, 85, 247, 0.6), inset 0 0 8px rgba(168, 85, 247, 0.3);
  transition: width .2s, height .2s, border-color .2s, background .2s, opacity .2s;
}
.sv-cursor-dot {
  width: 6px; height: 6px; margin-left: -3px; margin-top: -3px;
  border-radius: 50%; background: var(--cyan);
  box-shadow: 0 0 10px var(--cyan);
}
.sv-cursor-hot .sv-cursor-ring {
  width: 52px; height: 52px;
  border-color: var(--cyan);
  background: rgba(34, 211, 238, 0.08);
  box-shadow: 0 0 22px rgba(34, 211, 238, 0.6);
}
.sv-cursor-down .sv-cursor-ring { width: 22px; height: 22px; border-color: var(--magenta); }

/* ---- 3. Tilt + glare ---- */
.sv-tilt {
  transform-style: preserve-3d;
  transition: transform .25s cubic-bezier(.16,1,.3,1), box-shadow .25s ease;
  will-change: transform;
}
.sv-glare {
  position: absolute; inset: 0; border-radius: inherit;
  pointer-events: none; opacity: .9; mix-blend-mode: screen;
  background: transparent; transition: background .1s linear;
  z-index: 3;
}

/* ---- 4. Reveal ---- (nascondi SOLO se l'engine è attivo: no-JS = sempre visibile) */
.sv-ready [data-reveal] {
  opacity: 0; transition:
    opacity .8s cubic-bezier(.16,1,.3,1),
    transform .8s cubic-bezier(.16,1,.3,1);
  transition-delay: var(--sv-delay, 0ms);
  will-change: transform, opacity;
}
.sv-ready [data-reveal="up"]    { transform: translateY(48px); }
.sv-ready [data-reveal="down"]  { transform: translateY(-48px); }
.sv-ready [data-reveal="left"]  { transform: translateX(-60px); }
.sv-ready [data-reveal="right"] { transform: translateX(60px); }
.sv-ready [data-reveal="zoom"]  { transform: scale(.86); }
.sv-ready [data-reveal="glitch"]{ transform: translateX(-20px) skewX(8deg); filter: blur(4px); }
.sv-ready [data-reveal].sv-in {
  opacity: 1; transform: none; filter: none;
}
/* Le storie restano SEMPRE visibili: i pannelli (specie la prosa lunga) sono piu
   alti del viewport e l'osservatore reveal non li sblocca mai -> resterebbero nascosti. */
.sv-ready .storia-panel[data-reveal] { opacity: 1 !important; transform: none !important; filter: none !important; }

/* ---- 5. Particelle globali ---- */
.sv-particles {
  position: fixed; inset: 0; z-index: 0;
  pointer-events: none; overflow: hidden;
}
.sv-particle {
  position: absolute; width: 5px; height: 5px; border-radius: 50%;
  animation: svFloat linear infinite;
}
@keyframes svFloat {
  0%   { transform: translateY(0) translateX(0) scale(1); }
  33%  { transform: translateY(-40px) translateX(20px) scale(1.4); }
  66%  { transform: translateY(20px) translateX(-15px) scale(.8); }
  100% { transform: translateY(0) translateX(0) scale(1); }
}

/* ---- 6. Comic burst ---- */
.sv-burst {
  position: fixed; z-index: 100002; pointer-events: none;
  transform: translate(-50%, -50%) rotate(-8deg) scale(.4);
  font-family: 'Bebas Neue', sans-serif; font-size: 2.4rem; letter-spacing: 2px;
  color: #FFD600;
  text-shadow: 2px 2px 0 #E50914, 4px 4px 0 #0A0A0A, -1px -1px 0 #fff;
  animation: svBurst .7s cubic-bezier(.16,1,.3,1) forwards;
}
@keyframes svBurst {
  0%   { opacity: 0; transform: translate(-50%,-50%) rotate(-8deg) scale(.3); }
  35%  { opacity: 1; transform: translate(-50%,-90%) rotate(6deg) scale(1.25); }
  100% { opacity: 0; transform: translate(-50%,-160%) rotate(-4deg) scale(1); }
}

/* ---- 7. Split char animation ---- */
.sv-char {
  display: inline-block;
  animation: svCharIn .6s cubic-bezier(.16,1,.3,1) both;
}
@keyframes svCharIn {
  0%   { opacity: 0; transform: translateY(.5em) rotateX(-90deg); }
  100% { opacity: 1; transform: none; }
}

/* ---- 8. Utility decorative: halftone + action lines ---- */
.sv-halftone::before {
  content: ''; position: absolute; inset: 0; pointer-events: none; z-index: 0;
  background-image: radial-gradient(rgba(168,85,247,.25) 1px, transparent 1.4px);
  background-size: 11px 11px; opacity: .35; mix-blend-mode: screen;
}
.sv-actionlines::after {
  content: ''; position: absolute; inset: -10%; pointer-events: none; z-index: 0;
  background: repeating-conic-gradient(from 0deg at 50% 50%,
    transparent 0deg, transparent 6deg, rgba(168,85,247,.05) 6deg, rgba(168,85,247,.05) 7deg);
  -webkit-mask-image: radial-gradient(circle, transparent 30%, #000 75%);
  mask-image: radial-gradient(circle, transparent 30%, #000 75%);
  animation: svSpin 60s linear infinite;
}
@keyframes svSpin { to { transform: rotate(360deg); } }

/* ==========================================================
   ⚡ ENHANCE elementi esistenti → God Tier
   ========================================================== */

/* Sweep di luce sulle card al hover */
.news-card, .about-card, .social-card, .member-card { position: relative; overflow: hidden; }
.news-card::after, .about-card::after, .social-card::after {
  content: ''; position: absolute; top: 0; left: -120%;
  width: 70%; height: 100%; z-index: 2; pointer-events: none;
  background: linear-gradient(100deg, transparent, rgba(255,255,255,.13), transparent);
  transition: left .6s ease;
}
.news-card:hover::after, .about-card:hover::after, .social-card:hover::after { left: 130%; }

/* CTA: shine sweep + bordo neon */
.cta-btn { position: relative; overflow: hidden; }
.cta-btn::after {
  content: ''; position: absolute; top: 0; left: -120%;
  width: 60%; height: 100%;
  background: linear-gradient(100deg, transparent, rgba(255,255,255,.35), transparent);
  transition: left .5s ease;
}
.cta-btn:hover::after { left: 130%; }

/* Section header: piu' drammatico + barra animata */
.section-header h2 {
  position: relative;
  text-shadow: 0 0 40px rgba(168, 85, 247, 0.25);
}
.section-divider {
  position: relative; overflow: visible;
}
.section-divider::after {
  content: ''; position: absolute; top: 50%; left: 50%;
  width: 6px; height: 6px; border-radius: 50%;
  transform: translate(-50%,-50%);
  background: var(--cyan); box-shadow: 0 0 16px var(--cyan);
  animation: svPulseDot 2s ease-in-out infinite;
}
@keyframes svPulseDot {
  0%,100% { transform: translate(-50%,-50%) scale(1); opacity: 1; }
  50%     { transform: translate(-50%,-50%) scale(2.4); opacity: .4; }
}

/* Counter cell: neon ring on hover */
.counter-cell { border-radius: 14px; transition: transform .25s ease; }

/* Hero: gradient mesh animato dietro */
.hero::after {
  content: ''; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background:
    radial-gradient(40% 50% at 15% 20%, rgba(139,47,224,.18), transparent 60%),
    radial-gradient(40% 50% at 85% 30%, rgba(34,211,238,.12), transparent 60%),
    radial-gradient(50% 60% at 50% 100%, rgba(233,30,99,.12), transparent 60%);
  animation: svMesh 16s ease-in-out infinite alternate;
}
@keyframes svMesh {
  0%   { transform: scale(1) translateY(0); opacity: .8; }
  100% { transform: scale(1.15) translateY(-20px); opacity: 1; }
}

/* Navbar: glow magenta sotto quando scrolled */
.navbar.scrolled {
  box-shadow: 0 1px 0 rgba(168,85,247,.4), 0 8px 30px rgba(0,0,0,.5);
}

/* ==========================================================
   ⚡ PAGE HERO BAND — fascia cinematica per pagine interne
   ========================================================== */
.sv-page-hero {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 130px 24px 70px;
  text-align: center;
  overflow: hidden;
  background:
    radial-gradient(60% 100% at 50% 0%, rgba(139,47,224,.22), transparent 70%),
    linear-gradient(180deg, #0d0a18, var(--black));
  border-bottom: 1px solid rgba(168,85,247,.18);
}
.sv-page-hero > * { max-width: 760px; margin-left: auto; margin-right: auto; }
.sv-page-hero::before {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background-image: radial-gradient(rgba(168,85,247,.18) 1px, transparent 1.5px);
  background-size: 14px 14px; opacity: .4; mix-blend-mode: screen;
}
.sv-page-hero-eyebrow {
  display: inline-block; margin-bottom: 14px;
  font-family: 'Rajdhani', sans-serif; font-weight: 700;
  font-size: .8rem; letter-spacing: 4px; text-transform: uppercase;
  color: var(--cyan); position: relative; z-index: 1;
}
.sv-page-hero h1 {
  position: relative; z-index: 1; margin: 0;
  font-family: 'Bebas Neue', sans-serif;
  font-size: clamp(2.8rem, 8vw, 6rem); line-height: .95; letter-spacing: 3px;
  background: linear-gradient(135deg, #fff 20%, var(--red-glow) 55%, var(--magenta) 80%, var(--cyan));
  -webkit-background-clip: text; background-clip: text; color: transparent;
  filter: drop-shadow(0 6px 30px rgba(139,47,224,.4));
}
.sv-page-hero p {
  position: relative; z-index: 1; margin: 16px auto 0; max-width: 640px;
  color: var(--grey); font-size: 1.05rem; line-height: 1.6;
}

/* ==========================================================
   ⚡ EVENTI: timeline con spina luminosa animata
   ========================================================== */
.events-timeline { position: relative; }
.event-item:hover .event-content {
  border-color: var(--red-glow);
  box-shadow: 0 12px 36px rgba(139,47,224,.28);
}
.event-dot { box-shadow: 0 0 0 0 rgba(168,85,247,.5); animation: svDotPulse 2.6s ease-out infinite; }
@keyframes svDotPulse {
  0%   { box-shadow: 0 0 0 0 rgba(168,85,247,.5); }
  70%  { box-shadow: 0 0 0 16px rgba(168,85,247,0); }
  100% { box-shadow: 0 0 0 0 rgba(168,85,247,0); }
}

/* ==========================================================
   ⚡ ABOUT cards: bordo gradiente al hover
   ========================================================== */
.about-card { transition: transform .25s ease, border-color .25s ease, box-shadow .25s ease; }
.about-card:hover {
  box-shadow: 0 18px 50px rgba(139,47,224,.3);
}
.about-card .icon { transition: transform .35s cubic-bezier(.16,1,.3,1); }
.about-card:hover .icon { transform: rotateY(360deg) scale(1.12); }

/* ==========================================================
   ⚡ GALLERY: hover zoom + glow
   ========================================================== */
.gallery-item { transition: transform .3s cubic-bezier(.16,1,.3,1), box-shadow .3s ease; position: relative; }
.gallery-item:hover {
  transform: scale(1.03) translateY(-4px);
  box-shadow: 0 18px 50px rgba(139,47,224,.35); z-index: 2;
}

/* ==========================================================
   ⚡ REDUCED MOTION — spegne tutto il movimento
   ========================================================== */
@media (prefers-reduced-motion: reduce) {
  .sv-particles, .sv-progress-spider, .section-divider::after,
  .event-dot, .hero::after, .sv-actionlines::after { animation: none !important; }
  [data-reveal] { opacity: 1 !important; transform: none !important; }
  .sv-cursor-ring, .sv-cursor-dot { display: none !important; }
  * { scroll-behavior: auto !important; }
}

/* ==========================================================
   ⚡ MOBILE: niente cursor/tilt pesanti
   ========================================================== */
@media (max-width: 900px) {
  .sv-cursor-ring, .sv-cursor-dot { display: none !important; }
  .sv-page-hero { padding: 110px 16px 50px; }
}


/* ==========================================================
   SVFX DEVASTATION LAYER (v4.35) — generato dal fleet, hardened
   ========================================================== */
/* ===== SVFX :: DIMENSIONAL RIFT INTRO (full-screen cinematic loader) ===== */
/* ============================================================
   SVFX :: DIMENSIONAL RIFT INTRO  (key: svfx-intro)
   Full-screen cinematic loader. Namespaced svfx-. Coexists with
   the existing spider-verse.js engine (no shared classes/ids).
   ============================================================ */

#svfx-intro{
  position:fixed; inset:0; z-index:99990;
  background:#0A0A0A;
  overflow:hidden;
  display:block;
  /* this layer captures input while up (it is the modal); removed after */
  pointer-events:auto;
  /* clip-path drives the final iris/glitch close */
  -webkit-clip-path:inset(0 0 0 0);
  clip-path:inset(0 0 0 0);
  opacity:1;
  contain:strict;
  touch-action:none;
}
#svfx-intro.svfx-intro--closing{
  animation:svfx-intro-iris 620ms cubic-bezier(.7,0,.3,1) forwards;
}
#svfx-intro.svfx-intro--gone{
  opacity:0;
  pointer-events:none;
  visibility:hidden;
}

/* black base + faint vignette so the rift reads as a light source */
#svfx-intro .svfx-intro-veil{
  position:absolute; inset:0;
  background:
    radial-gradient(120% 120% at 50% 50%, rgba(139,47,224,.10) 0%, rgba(10,10,10,0) 42%),
    #0A0A0A;
  pointer-events:none;
}

/* the rift canvas — the portal tear itself */
#svfx-intro .svfx-intro-canvas{
  position:absolute; inset:0;
  width:100%; height:100%;
  display:block;
  pointer-events:none;
  will-change:opacity, transform;
}

/* foreground stage holds logo + title, centered */
#svfx-intro .svfx-intro-stage{
  position:absolute; inset:0;
  display:flex; flex-direction:column;
  align-items:center; justify-content:center;
  gap:clamp(8px,2.2vh,26px);
  pointer-events:none;
  perspective:900px;
  text-align:center;
}

/* LOGO — bursts forward through the rift */
#svfx-intro .svfx-intro-logo{
  width:clamp(120px,18vw,230px);
  height:auto;
  opacity:0;
  border-radius:clamp(16px,2.6vw,32px); /* angoli smussati come il logo della home */
  transform:translateZ(0) scale(.18) rotate(-14deg);
  filter:drop-shadow(0 0 26px rgba(168,85,247,.85)) drop-shadow(0 0 60px rgba(233,30,99,.45));
  will-change:transform, opacity, filter;
}
#svfx-intro.svfx-intro--burst .svfx-intro-logo{
  animation:svfx-intro-burst 920ms cubic-bezier(.16,.84,.28,1) forwards;
}

/* TITLE block */
#svfx-intro .svfx-intro-titles{
  position:relative;
  display:flex; flex-direction:column; align-items:center;
  gap:clamp(2px,1vh,10px);
}

/* main SLAM word(s) */
#svfx-intro .svfx-intro-title{
  position:relative;
  font-family:"Bebas Neue","Oswald","Rajdhani",system-ui,sans-serif;
  font-weight:700;
  letter-spacing:clamp(2px,.7vw,10px);
  line-height:.92;
  font-size:clamp(2.6rem,11vw,8.6rem);
  color:#fff;
  text-transform:uppercase;
  margin:0;
  opacity:0;
  transform:scale(2.4);
  filter:blur(8px);
  will-change:transform, opacity, filter;
  text-shadow:0 0 30px rgba(168,85,247,.55);
}
#svfx-intro.svfx-intro--slam .svfx-intro-title{
  animation:svfx-intro-slam 560ms cubic-bezier(.2,1.2,.3,1) forwards;
}

/* RGB split ghosts behind the title (comic chromatic aberration) */
#svfx-intro .svfx-intro-title::before,
#svfx-intro .svfx-intro-title::after{
  content:attr(data-text);
  position:absolute; left:0; top:0; right:0;
  z-index:-1;
  pointer-events:none;
}
#svfx-intro .svfx-intro-title::before{
  color:#22D3EE;
  text-shadow:0 0 18px rgba(34,211,238,.7);
  mix-blend-mode:screen;
}
#svfx-intro .svfx-intro-title::after{
  color:#E91E63;
  text-shadow:0 0 18px rgba(233,30,99,.7);
  mix-blend-mode:screen;
}
#svfx-intro.svfx-intro--slam .svfx-intro-title::before{
  animation:svfx-intro-rgb-a 700ms steps(1) 1 both;
}
#svfx-intro.svfx-intro--slam .svfx-intro-title::after{
  animation:svfx-intro-rgb-b 700ms steps(1) 1 both;
}

/* halftone / ben-day dot wash over the title block */
#svfx-intro .svfx-intro-titles::after{
  content:""; position:absolute; inset:-12% -8%;
  z-index:2; pointer-events:none; opacity:0;
  background-image:radial-gradient(rgba(10,10,10,.55) 28%, transparent 30%);
  background-size:7px 7px;
  mix-blend-mode:multiply;
}
#svfx-intro.svfx-intro--slam .svfx-intro-titles::after{
  animation:svfx-intro-halftone 560ms ease-out both;
}

/* subtitle ITALIA */
#svfx-intro .svfx-intro-sub{
  font-family:"Rajdhani","Oswald",system-ui,sans-serif;
  font-weight:600;
  letter-spacing:clamp(6px,2.6vw,26px);
  font-size:clamp(.9rem,2.6vw,1.7rem);
  text-transform:uppercase;
  color:#22D3EE;
  margin:0;
  opacity:0;
  transform:translateY(14px);
  text-shadow:0 0 14px rgba(34,211,238,.65);
  will-change:transform, opacity;
}
#svfx-intro.svfx-intro--slam .svfx-intro-sub{
  animation:svfx-intro-sub 520ms cubic-bezier(.2,.7,.2,1) 180ms forwards;
}

/* scanline + grain flash overlay for the glitch close */
#svfx-intro .svfx-intro-glitch{
  position:absolute; inset:0; z-index:3;
  pointer-events:none; opacity:0;
  background:
    repeating-linear-gradient(0deg, rgba(255,255,255,.05) 0 1px, transparent 1px 3px);
  mix-blend-mode:screen;
}
#svfx-intro.svfx-intro--closing .svfx-intro-glitch{
  animation:svfx-intro-glitchflash 320ms steps(2) 2 both;
}

/* SKIP button — persistent, top-right, the one interactive node */
#svfx-intro .svfx-intro-skip{
  position:absolute; top:max(16px,env(safe-area-inset-top,0px)); right:18px;
  z-index:6;
  pointer-events:auto; cursor:pointer;
  -webkit-appearance:none; appearance:none;
  font-family:"Rajdhani","Oswald",system-ui,sans-serif;
  font-weight:600; letter-spacing:3px; font-size:.78rem;
  text-transform:uppercase;
  color:#fff;
  padding:8px 16px;
  background:rgba(20,20,20,.55);
  border:1px solid rgba(168,85,247,.6);
  border-radius:999px;
  backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px);
  box-shadow:0 0 18px rgba(139,47,224,.35);
  transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease, background .18s ease;
  opacity:0; animation:svfx-intro-skipin .5s ease .35s forwards;
}
#svfx-intro .svfx-intro-skip:hover,
#svfx-intro .svfx-intro-skip:focus-visible{
  transform:translateY(-1px);
  border-color:#22D3EE;
  background:rgba(34,211,238,.14);
  box-shadow:0 0 26px rgba(34,211,238,.5);
  outline:none;
}
#svfx-intro .svfx-intro-skip span{ color:#22D3EE; }

/* lock page scroll while intro is up */
html.svfx-intro-lock, body.svfx-intro-lock{
  overflow:hidden !important;
  height:100%;
  touch-action:none;
}

/* ---------- keyframes ---------- */
@keyframes svfx-intro-burst{
  0%{ opacity:0; transform:translateZ(0) scale(.16) rotate(-16deg); filter:drop-shadow(0 0 8px rgba(168,85,247,.4)) blur(6px); }
  42%{ opacity:1; }
  70%{ transform:translateZ(0) scale(1.16) rotate(4deg); filter:drop-shadow(0 0 50px rgba(168,85,247,1)) drop-shadow(0 0 80px rgba(233,30,99,.6)) blur(0); }
  85%{ transform:translateZ(0) scale(.94) rotate(-1.5deg); }
  100%{ opacity:1; transform:translateZ(0) scale(1) rotate(0deg); filter:drop-shadow(0 0 26px rgba(168,85,247,.85)) drop-shadow(0 0 60px rgba(233,30,99,.45)); }
}
@keyframes svfx-intro-slam{
  0%{ opacity:0; transform:scale(2.5); filter:blur(10px); }
  55%{ opacity:1; transform:scale(.92); filter:blur(0); }
  72%{ transform:scale(1.05); }
  100%{ opacity:1; transform:scale(1); filter:blur(0); }
}
@keyframes svfx-intro-rgb-a{
  0%{ transform:translate(-22px,9px); opacity:.9; }
  30%{ transform:translate(-9px,4px); opacity:.85; }
  60%{ transform:translate(-3px,2px); opacity:.55; }
  100%{ transform:translate(0,0); opacity:0; }
}
@keyframes svfx-intro-rgb-b{
  0%{ transform:translate(22px,-9px); opacity:.9; }
  30%{ transform:translate(9px,-4px); opacity:.85; }
  60%{ transform:translate(3px,-2px); opacity:.55; }
  100%{ transform:translate(0,0); opacity:0; }
}
@keyframes svfx-intro-halftone{
  0%{ opacity:.55; }
  60%{ opacity:.25; }
  100%{ opacity:0; }
}
@keyframes svfx-intro-sub{
  0%{ opacity:0; transform:translateY(16px); letter-spacing:2px; }
  100%{ opacity:1; transform:translateY(0); }
}
@keyframes svfx-intro-skipin{ to{ opacity:1; } }
@keyframes svfx-intro-glitchflash{
  0%{ opacity:0; transform:translateX(0); }
  25%{ opacity:.9; transform:translateX(-6px); }
  50%{ opacity:.3; transform:translateX(5px); }
  75%{ opacity:.8; transform:translateX(-3px); }
  100%{ opacity:0; transform:translateX(0); }
}
@keyframes svfx-intro-iris{
  0%{ -webkit-clip-path:inset(0 0 0 0); clip-path:inset(0 0 0 0); filter:none; opacity:1; }
  35%{ filter:saturate(2) hue-rotate(18deg); }
  100%{ -webkit-clip-path:inset(50% 50% 50% 50%); clip-path:inset(50% 50% 50% 50%); filter:saturate(2.4) hue-rotate(40deg) brightness(1.4); opacity:0; }
}

/* ---------- reduced motion: calm static fallback ---------- */
@media (prefers-reduced-motion:reduce){
  /* L'intro (rift + logo) gira anche con "Riduci movimento": è breve e ha il tasto Salta.
     Manteniamo solo la regola di chiusura. */
  #svfx-intro.svfx-intro--gone{ display:none; }
}

/* ===== SVFX :: NEURAL SPIDER-WEB CONSTELLATION BACKGROUND (interactive) ===== */
/* ============================================================
   svfx-web — NEURAL SPIDER-WEB CONSTELLATION BACKGROUND
   Fixed full-viewport canvas BEHIND all content.
   Pointer-events:none, z-index 0 layer (sits behind .page-content z1).
   ============================================================ */
#svfx-web-canvas{
  position:fixed;
  inset:0;
  width:100%;
  height:100%;
  display:block;
  z-index:0;            /* behind .page-content (z-index:1), above page bg */
  pointer-events:none;  /* never steals interaction */
  /* keep text crisp & readable: the web is drawn at low alpha in JS */
  opacity:.92;
  /* composite hint; canvas content does the heavy lifting */
  will-change:opacity;
  background:transparent;
  /* subtle vignette so strands recede at edges and content stays legible */
  -webkit-mask-image:radial-gradient(ellipse 120% 120% at 50% 42%,#000 58%,rgba(0,0,0,.55) 100%);
          mask-image:radial-gradient(ellipse 120% 120% at 50% 42%,#000 58%,rgba(0,0,0,.55) 100%);
  contain:strict;
}

/* Fade the layer in only once booted, so a JS failure leaves no empty box */
#svfx-web-canvas{opacity:0;transition:opacity .9s ease}
body.svfx-web-on #svfx-web-canvas{opacity:.92}

/* Reduced motion: keep the single static frame but dim it further so it is
   purely atmospheric and never competes with text. */
@media (prefers-reduced-motion:reduce){
  body.svfx-web-on #svfx-web-canvas{opacity:.6;transition:none}
}

/* Small screens: pull the web back a touch more for legibility */
@media (max-width:640px){
  body.svfx-web-on #svfx-web-canvas{opacity:.7}
}

/* Safety: if the engine ever toggles a global "calm" mode, respect it */
body.svfx-web-off #svfx-web-canvas{opacity:0!important}

/* ===== SVFX :: WEB-SHOOTER CURSOR TRAIL (desktop) ===== */
/* ============================================================
   svfx-webtrail — Web-Shooter Cursor Trail (desktop only)
   Additive canvas layer ABOVE content, pointer-events:none.
   Coexists with the existing .sv-cursor reticle (purely additive).
   ============================================================ */

/* Fixed full-viewport canvas. z below the intro overlay (99990)
   but above page content & foreground fx. Never intercepts input. */
.svfx-webtrail-canvas{
  position:fixed;
  top:0;
  left:0;
  width:100%;
  height:100%;
  pointer-events:none;
  z-index:9997;          /* foreground fx band, below intro/modals */
  display:block;
  /* additive cyan/purple glow reads best over dark cinematic bg */
  mix-blend-mode:screen;
  contain:strict;
  will-change:transform, opacity;
  /* promote to its own compositor layer so the blend is cheap */
  transform:translateZ(0);
  backface-visibility:hidden;
}

/* The engine only paints once it has booted; until then keep it
   fully transparent so there is never a flash or CLS. */
.svfx-webtrail-canvas:not(.svfx-webtrail-on){
  opacity:0;
}
.svfx-webtrail-canvas.svfx-webtrail-on{
  opacity:1;
  transition:opacity .45s ease;
}

/* Hard kill switches: touch / coarse pointer / reduced motion.
   We also gate in JS, but these guarantee no paint even if a
   stale canvas node lingers. */
@media (hover:none), (pointer:coarse){
  .svfx-webtrail-canvas{display:none !important;}
}
@media (prefers-reduced-motion:reduce){
  .svfx-webtrail-canvas{
    display:none !important;
    /* belt-and-braces: even if forced visible, no transition/anim */
    transition:none !important;
  }
}

/* ===== SVFX :: COMIC-BOOK AESTHETIC SYSTEM ===== */
/* ============================================================
   svfx-comic — COMIC-BOOK AESTHETIC SYSTEM (hardened)
   Spider-Verse multiverse: ben-day halftone, speed lines,
   onomatopoeia slam-ins, comic panel-pop card hovers.
   All transform/opacity/filter only. Pointer-events:none on fx.
   Coexists additively with spider-verse.js (.sv-* / .sv-tilt):
   NEVER animates a card's own transform, so engine tilt is
   uncontested. Heaviest card FX gated behind html.svfx-comic-ready.
   ============================================================ */

/* ---- Shared palette fallbacks (use theme vars when present) ---- */
:root{
  --svfx-comic-violet: var(--red, #8B2FE0);
  --svfx-comic-glow:   var(--red-glow, #A855F7);
  --svfx-comic-mag:    var(--magenta, #E91E63);
  --svfx-comic-cyan:   var(--cyan, #22D3EE);
  --svfx-comic-ink:    var(--black, #0A0A0A);
  --svfx-comic-paper:  var(--white, #ffffff);
}

/* ============================================================
   (a) UTILITY CLASSES — ben-day / halftone + speed lines
   Decorative only; always behind content, never block clicks.
   ============================================================ */

/* Ben-day dots: a tiled radial-gradient halftone field. */
.svfx-comic-halftone{ position: relative; }
.svfx-comic-halftone::before{
  content:""; position:absolute; inset:0; z-index:0;
  pointer-events:none;
  background-image: radial-gradient(var(--svfx-comic-ink) 1.4px, transparent 1.6px);
  background-size: 10px 10px;
  opacity:.10; mix-blend-mode: normal;
}
/* Colorized ben-day variants (drop on dark sections). */
.svfx-comic-halftone--violet::before{
  background-image: radial-gradient(var(--svfx-comic-glow) 1.4px, transparent 1.6px);
  opacity:.14;
}
.svfx-comic-halftone--cyan::before{
  background-image: radial-gradient(var(--svfx-comic-cyan) 1.4px, transparent 1.6px);
  opacity:.12;
}
/* Standalone dot field you can sprinkle as a child div. */
.svfx-comic-dots{
  position:absolute; inset:0; z-index:0; pointer-events:none;
  background-image: radial-gradient(currentColor 1.3px, transparent 1.5px);
  background-size: 9px 9px; color: var(--svfx-comic-glow);
  opacity:.12;
  -webkit-mask-image: radial-gradient(ellipse at 50% 40%, #000 30%, transparent 78%);
          mask-image: radial-gradient(ellipse at 50% 40%, #000 30%, transparent 78%);
}

/* Diagonal speed-line utility — repeating thin streaks. */
.svfx-comic-speed{ position:relative; }
.svfx-comic-speed::after{
  content:""; position:absolute; inset:0; z-index:0; pointer-events:none;
  background:
    repeating-linear-gradient(115deg,
      rgba(255,255,255,.045) 0 2px,
      transparent 2px 9px);
  opacity:.55;
  -webkit-mask-image: linear-gradient(90deg, #000, transparent 42%);
          mask-image: linear-gradient(90deg, #000, transparent 42%);
}
/* Radial "impact" speed lines emanating from center. */
.svfx-comic-radial{ position:relative; }
.svfx-comic-radial::after{
  content:""; position:absolute; inset:-20%; z-index:0; pointer-events:none;
  background:
    repeating-conic-gradient(from 0deg at 50% 50%,
      rgba(168,85,247,.10) 0deg 1.4deg,
      transparent 1.4deg 5deg);
  -webkit-mask-image: radial-gradient(circle at 50% 50%, transparent 30%, #000 64%, transparent 86%);
          mask-image: radial-gradient(circle at 50% 50%, transparent 30%, #000 64%, transparent 86%);
  opacity:.5;
}

/* ============================================================
   (b) ONOMATOPOEIA — fly/slam in, settle, fade.
   JS injects .svfx-comic-onoma absolutely positioned near
   section edges. pointer-events:none, comic Bebas styling,
   hard multi-color stroke shadow, slight rotation.
   Layer sits at z-index:2 — above background fx, but words are
   edge-placed + auto-fade so they never obscure readable copy.
   ============================================================ */
.svfx-comic-onoma-layer{
  position:absolute; inset:0; z-index:2;
  pointer-events:none; overflow:visible;
}
.svfx-comic-onoma{
  position:absolute;
  font-family:"Bebas Neue","Oswald","Rajdhani",Impact,sans-serif;
  font-weight:700; line-height:.86; letter-spacing:1px;
  font-size: clamp(2.4rem, 7vw, 6rem);
  color: var(--svfx-comic-paper);
  pointer-events:none; white-space:nowrap;
  will-change: transform, opacity, filter;
  opacity:0;
  /* hard multi-color comic stroke + ink outline */
  -webkit-text-stroke: 2.5px var(--svfx-comic-ink);
  text-shadow:
     3px  3px 0 var(--svfx-comic-ink),
     6px  6px 0 var(--svfx-comic-mag),
     9px  9px 0 var(--svfx-comic-violet),
    -2px -2px 0 var(--svfx-comic-cyan);
  transform: translate3d(var(--svfx-cx, 120px), var(--svfx-cy, 10px), 0)
             rotate(var(--svfx-rot, -8deg)) scale(.35);
  filter: blur(6px);
  transition: none;
}
/* slam keyframe: overshoot then settle, driven by class toggle */
.svfx-comic-onoma.svfx-comic-in{
  animation: svfx-comic-slam .62s cubic-bezier(.18,1.5,.34,1) forwards;
}
.svfx-comic-onoma.svfx-comic-out{
  animation: svfx-comic-fade .9s ease forwards;
}
/* Static fallback applied by JS under reduced motion (no animation). */
.svfx-comic-onoma.svfx-comic-static{
  opacity:1; filter:none;
  transform: rotate(var(--svfx-rot,-6deg));
}
@keyframes svfx-comic-slam{
  0%  { opacity:0; filter:blur(7px);
        transform: translate3d(var(--svfx-cx,120px),var(--svfx-cy,10px),0) rotate(var(--svfx-rot,-8deg)) scale(.35); }
  55% { opacity:1; filter:blur(0);
        transform: translate3d(0,0,0) rotate(var(--svfx-rot,-8deg)) scale(1.18); }
  72% { transform: translate3d(0,0,0) rotate(var(--svfx-rot,-8deg)) scale(.94); }
  100%{ opacity:1; filter:blur(0);
        transform: translate3d(0,0,0) rotate(var(--svfx-rot,-8deg)) scale(1); }
}
@keyframes svfx-comic-fade{
  0%  { opacity:1; }
  100%{ opacity:0; transform: translate3d(0,-14px,0) rotate(var(--svfx-rot,-8deg)) scale(1.04); filter:blur(2px);}
}
/* per-word accent recoloring (set via data-variant in JS) */
.svfx-comic-onoma[data-variant="cyan"]{
  color: var(--svfx-comic-cyan);
  text-shadow: 3px 3px 0 var(--svfx-comic-ink), 6px 6px 0 var(--svfx-comic-violet), 9px 9px 0 var(--svfx-comic-mag);
}
.svfx-comic-onoma[data-variant="mag"]{
  color: var(--svfx-comic-mag);
  text-shadow: 3px 3px 0 var(--svfx-comic-ink), 6px 6px 0 var(--svfx-comic-violet), 9px 9px 0 var(--svfx-comic-cyan);
}
.svfx-comic-onoma[data-variant="violet"]{
  color: var(--svfx-comic-glow);
  text-shadow: 3px 3px 0 var(--svfx-comic-ink), 6px 6px 0 var(--svfx-comic-mag), 9px 9px 0 var(--svfx-comic-cyan);
}
/* tiny starburst behind the word for extra POW */
.svfx-comic-onoma::before{
  content:""; position:absolute; inset:-28% -18%; z-index:-1;
  background: repeating-conic-gradient(from 0deg at 50% 50%,
     rgba(168,85,247,.22) 0deg 3deg, transparent 3deg 9deg);
  -webkit-mask-image: radial-gradient(circle, #000 18%, transparent 62%);
          mask-image: radial-gradient(circle, #000 18%, transparent 62%);
  opacity:0; transition: opacity .4s ease .15s;
}
.svfx-comic-onoma.svfx-comic-in::before{ opacity:.8; }
.svfx-comic-onoma.svfx-comic-static::before{ opacity:.45; }

/* ============================================================
   (c) CARD HOVER — comic panel pop + speed-line burst (CSS only)
   Layered additively onto existing cards. DOES NOT FIGHT TILT:
   it never sets a transform on the card element itself (the
   engine's .sv-tilt owns that). It only adds ::before/::after
   pseudo overlays + a transform-free box-shadow/filter snap.
   Heaviest FX gated behind html.svfx-comic-ready (set by JS).
   ============================================================ */
.news-card, .about-card, .social-card, .member-card, .gallery-item{
  position: relative;
}

/* speed-line burst overlay (hidden until hover) — only when JS booted */
.svfx-comic-ready .news-card::after,
.svfx-comic-ready .about-card::after,
.svfx-comic-ready .social-card::after,
.svfx-comic-ready .member-card::after,
.svfx-comic-ready .gallery-item::after{
  content:""; position:absolute; inset:0; z-index:2;
  pointer-events:none; border-radius:inherit;
  opacity:0; transform: scale(.92);
  background:
    repeating-conic-gradient(from 0deg at 50% 50%,
      rgba(255,255,255,.16) 0deg 1.2deg, transparent 1.2deg 6deg);
  -webkit-mask-image: radial-gradient(circle at 50% 50%, transparent 52%, #000 70%, transparent 92%);
          mask-image: radial-gradient(circle at 50% 50%, transparent 52%, #000 70%, transparent 92%);
  transition: opacity .25s ease, transform .35s cubic-bezier(.2,1.4,.3,1);
  will-change: transform, opacity;
}
.svfx-comic-ready .news-card:hover::after,
.svfx-comic-ready .about-card:hover::after,
.svfx-comic-ready .social-card:hover::after,
.svfx-comic-ready .member-card:hover::after,
.svfx-comic-ready .gallery-item:hover::after{
  opacity:1; transform: scale(1);
  animation: svfx-comic-burstspin 1.6s linear infinite;
}
@keyframes svfx-comic-burstspin{ to{ filter: hue-rotate(40deg); } }

/* "panel snap" on hover — TRANSFORM-FREE so it never touches the
   card element transform owned by the engine's .sv-tilt. Uses only
   box-shadow + outline + filter (compositor-cheap, no layout). */
.svfx-comic-ready .news-card:hover,
.svfx-comic-ready .about-card:hover,
.svfx-comic-ready .social-card:hover,
.svfx-comic-ready .member-card:hover,
.svfx-comic-ready .gallery-item:hover{
  animation: svfx-comic-snap .3s cubic-bezier(.2,1.5,.32,1);
}
@keyframes svfx-comic-snap{
  0%{
    box-shadow: 0 0 0 0 rgba(168,85,247,0);
    filter: none;
  }
  45%{
    box-shadow:
      0 0 0 2px var(--svfx-comic-glow),
      0 0 22px 2px rgba(168,85,247,.55),
      0 0 0 5px rgba(34,211,238,.18);
    filter: saturate(1.25) brightness(1.05);
  }
  100%{
    box-shadow: 0 0 0 1px rgba(168,85,247,.35);
    filter: none;
  }
}

/* halftone shimmer that wipes across the card on hover */
.svfx-comic-ready .news-card::before,
.svfx-comic-ready .about-card::before,
.svfx-comic-ready .social-card::before,
.svfx-comic-ready .member-card::before,
.svfx-comic-ready .gallery-item::before{
  content:""; position:absolute; inset:0; z-index:1;
  pointer-events:none; border-radius:inherit; opacity:0;
  background-image: radial-gradient(rgba(168,85,247,.55) 1.1px, transparent 1.4px);
  background-size: 7px 7px;
  -webkit-mask-image: linear-gradient(115deg, transparent 35%, #000 50%, transparent 65%);
          mask-image: linear-gradient(115deg, transparent 35%, #000 50%, transparent 65%);
  -webkit-mask-size:300% 100%; mask-size:300% 100%;
  -webkit-mask-position:120% 0; mask-position:120% 0;
  transition: opacity .2s ease;
}
.svfx-comic-ready .news-card:hover::before,
.svfx-comic-ready .about-card:hover::before,
.svfx-comic-ready .social-card:hover::before,
.svfx-comic-ready .member-card:hover::before,
.svfx-comic-ready .gallery-item:hover::before{
  opacity:1; animation: svfx-comic-wipe .9s ease forwards;
}
@keyframes svfx-comic-wipe{
  from{ -webkit-mask-position:120% 0; mask-position:120% 0; }
  to  { -webkit-mask-position:-120% 0; mask-position:-120% 0; }
}

/* ============================================================
   GUARDS — reduced motion: calm static fallback (no animation)
   ============================================================ */
@media (prefers-reduced-motion: reduce){
  .svfx-comic-onoma{
    animation:none !important; transition:none !important;
    opacity:1; filter:none; transform: rotate(var(--svfx-rot,-6deg));
  }
  .svfx-comic-onoma::before{ opacity:.45; }
  .svfx-comic-radial::after, .svfx-comic-speed::after{ animation:none !important; }
  .svfx-comic-ready .news-card:hover::after,
  .svfx-comic-ready .about-card:hover::after,
  .svfx-comic-ready .social-card:hover::after,
  .svfx-comic-ready .member-card:hover::after,
  .svfx-comic-ready .gallery-item:hover::after{ animation:none !important; }
  .svfx-comic-ready .news-card:hover,
  .svfx-comic-ready .about-card:hover,
  .svfx-comic-ready .social-card:hover,
  .svfx-comic-ready .member-card:hover,
  .svfx-comic-ready .gallery-item:hover{ animation:none !important; }
  .svfx-comic-ready .news-card:hover::before,
  .svfx-comic-ready .about-card:hover::before,
  .svfx-comic-ready .social-card:hover::before,
  .svfx-comic-ready .member-card:hover::before,
  .svfx-comic-ready .gallery-item:hover::before{ animation:none !important; opacity:0; }
}
/* Touch/no-hover: drop the heaviest hover bursts to protect fps */
@media (hover: none), (pointer: coarse){
  .svfx-comic-ready .news-card:hover::after,
  .svfx-comic-ready .about-card:hover::after,
  .svfx-comic-ready .social-card:hover::after,
  .svfx-comic-ready .member-card:hover::after,
  .svfx-comic-ready .gallery-item:hover::after{ animation:none; opacity:.6; }
  .svfx-comic-ready .news-card:hover,
  .svfx-comic-ready .about-card:hover,
  .svfx-comic-ready .social-card:hover,
  .svfx-comic-ready .member-card:hover,
  .svfx-comic-ready .gallery-item:hover{ animation:none; }
}

/* ===== SVFX :: HERO SHOWSTOPPER: glitch + scramble + mouse-parallax depth ===== */
/* ============================================================
   svfx-hero — Hero showstopper layer
   Glitch + scramble + mouse-parallax depth.
   Scoped strictly to .hero. Coexists additively with the
   existing spider-verse.js engine. pointer-events:none on
   all injected fx so real content is never blocked.
   ============================================================ */

/* --- injected depth layers (parallax) --- */
.hero .svfx-hero-depth{
  position:absolute;
  inset:-8%;
  z-index:0;                 /* behind hero content, above .hero-bg paint */
  pointer-events:none;
  will-change:transform;
  opacity:0;
  transition:opacity 1.1s ease;
  background-repeat:repeat;
  mix-blend-mode:screen;
}

/* far web mesh — faint, large, slow */
.hero .svfx-hero-depth--far{
  background-image:
    radial-gradient(circle at 50% 50%, rgba(34,211,238,.10) 0, rgba(34,211,238,0) 60%),
    repeating-linear-gradient(60deg, rgba(168,85,247,.05) 0 1px, transparent 1px 46px),
    repeating-linear-gradient(-60deg, rgba(233,30,99,.05) 0 1px, transparent 1px 46px);
}
body.sv-ready .hero .svfx-hero-depth--far{opacity:.55;}

/* mid web mesh — denser, brighter, closer */
.hero .svfx-hero-depth--mid{
  background-image:
    repeating-linear-gradient(30deg, rgba(34,211,238,.07) 0 1px, transparent 1px 30px),
    repeating-linear-gradient(-30deg, rgba(168,85,247,.07) 0 1px, transparent 1px 30px);
}
body.sv-ready .hero .svfx-hero-depth--mid{opacity:.6;}

/* helper applied to existing parallaxed nodes (.hero-bg/.hero-logo) */
.hero .svfx-hero-px{will-change:transform;}

/* --- chromatic vignette + dimensional rift seam --- */
.hero .svfx-hero-vignette{
  position:absolute;
  inset:0;
  z-index:2;
  pointer-events:none;
  opacity:0;
  transition:opacity 1.2s ease;
  background:
    radial-gradient(120% 90% at 50% 42%, transparent 52%, rgba(10,10,10,.55) 100%),
    linear-gradient(90deg, rgba(34,211,238,.06) 0%, transparent 18%, transparent 82%, rgba(233,30,99,.06) 100%);
  mix-blend-mode:multiply;
}
body.sv-ready .hero .svfx-hero-vignette{opacity:1;}

/* the rift seam — a vertical interdimensional tear of light */
.hero .svfx-hero-rift{
  position:absolute;
  top:-10%;
  left:50%;
  width:2px;
  height:120%;
  z-index:2;
  pointer-events:none;
  transform:translateX(-50%);
  background:linear-gradient(to bottom,
    transparent 0%,
    rgba(34,211,238,0) 8%,
    rgba(34,211,238,.55) 38%,
    rgba(168,85,247,.85) 50%,
    rgba(233,30,99,.55) 62%,
    rgba(233,30,99,0) 92%,
    transparent 100%);
  filter:blur(.4px) drop-shadow(0 0 8px rgba(168,85,247,.65));
  opacity:0;
  animation:svfx-hero-rift-pulse 6.5s ease-in-out infinite;
}
body.sv-ready .hero .svfx-hero-rift{opacity:.7;}
@keyframes svfx-hero-rift-pulse{
  0%,100%{opacity:.35;transform:translateX(-50%) scaleX(1);}
  50%{opacity:.8;transform:translateX(-50%) scaleX(2.4);}
}

/* --- GLITCH burst on h1.hero-title --- */
/* Pseudo layers reuse the title's own data-text. They paint only
   while .svfx-hero-glitching is on, so there is zero idle cost. */
.hero h1.hero-title.svfx-hero-title{position:relative;}
.hero h1.hero-title.svfx-hero-title::before,
.hero h1.hero-title.svfx-hero-title::after{
  content:attr(data-text);
  position:absolute;
  inset:0;
  pointer-events:none;
  opacity:0;
  font:inherit;
  letter-spacing:inherit;
  line-height:inherit;
  text-align:inherit;
  white-space:inherit;
  will-change:transform,opacity,clip-path;
}
.hero h1.hero-title.svfx-hero-title::before{
  color:var(--cyan,#22D3EE);
  text-shadow:0 0 6px rgba(34,211,238,.6);
  z-index:1;
}
.hero h1.hero-title.svfx-hero-title::after{
  color:var(--magenta,#E91E63);
  text-shadow:0 0 6px rgba(233,30,99,.6);
  z-index:1;
}
.hero h1.hero-title.svfx-hero-glitching::before{
  animation:svfx-hero-glitch-c .42s steps(2,end) 1 both;
}
.hero h1.hero-title.svfx-hero-glitching::after{
  animation:svfx-hero-glitch-m .42s steps(2,end) 1 both;
}
.hero h1.hero-title.svfx-hero-glitching{
  animation:svfx-hero-glitch-base .42s steps(3,end) 1 both;
}
@keyframes svfx-hero-glitch-base{
  0%,100%{transform:translate(0,0);filter:none;}
  20%{transform:translate(-1px,0);filter:saturate(1.4) contrast(1.1);}
  40%{transform:translate(1px,-1px);}
  60%{transform:translate(-1px,1px);}
  80%{transform:translate(1px,0);}
}
@keyframes svfx-hero-glitch-c{
  0%{opacity:0;transform:translate(0,0);clip-path:inset(0 0 0 0);}
  10%{opacity:.9;transform:translate(-4px,-2px);clip-path:inset(0 0 62% 0);}
  30%{opacity:.85;transform:translate(-6px,1px);clip-path:inset(40% 0 18% 0);}
  50%{opacity:.9;transform:translate(-3px,2px);clip-path:inset(10% 0 55% 0);}
  70%{opacity:.7;transform:translate(-5px,-1px);clip-path:inset(72% 0 4% 0);}
  90%{opacity:.4;transform:translate(-2px,0);clip-path:inset(0 0 0 0);}
  100%{opacity:0;transform:translate(0,0);}
}
@keyframes svfx-hero-glitch-m{
  0%{opacity:0;transform:translate(0,0);clip-path:inset(0 0 0 0);}
  10%{opacity:.9;transform:translate(4px,2px);clip-path:inset(58% 0 0 0);}
  30%{opacity:.85;transform:translate(6px,-1px);clip-path:inset(12% 0 48% 0);}
  50%{opacity:.9;transform:translate(3px,-2px);clip-path:inset(46% 0 12% 0);}
  70%{opacity:.7;transform:translate(5px,1px);clip-path:inset(4% 0 70% 0);}
  90%{opacity:.4;transform:translate(2px,0);clip-path:inset(0 0 0 0);}
  100%{opacity:0;transform:translate(0,0);}
}

/* scanline flicker — sweeps once per glitch burst */
.hero .svfx-hero-scan{
  position:absolute;
  inset:0;
  z-index:3;
  pointer-events:none;
  opacity:0;
  background:repeating-linear-gradient(
    to bottom,
    rgba(255,255,255,0) 0 2px,
    rgba(0,0,0,.10) 2px 3px,
    rgba(34,211,238,.04) 3px 4px,
    rgba(233,30,99,.04) 4px 5px);
  mix-blend-mode:screen;
}
.hero .svfx-hero-scan.svfx-hero-scan-on{
  animation:svfx-hero-scan-flick .42s steps(8,end) 1 both;
}
@keyframes svfx-hero-scan-flick{
  0%{opacity:0;transform:translateY(-6%);}
  10%{opacity:.55;}
  20%{opacity:.15;}
  35%{opacity:.5;}
  55%{opacity:.2;}
  75%{opacity:.45;}
  100%{opacity:0;transform:translateY(6%);}
}

/* --- SCRAMBLE overlay for rotator word --- */
.hero .svfx-hero-scramble{
  position:absolute;
  left:0;top:0;
  width:100%;
  pointer-events:none;
  z-index:1;
  color:var(--cyan,#22D3EE);
  text-shadow:0 0 10px rgba(34,211,238,.55),0 0 22px rgba(168,85,247,.35);
  font:inherit;
  letter-spacing:inherit;
  line-height:inherit;
  text-align:inherit;
  white-space:inherit;
  opacity:0;
  transition:opacity .18s ease;
}
.hero .svfx-hero-scramble.svfx-hero-scramble-on{opacity:1;}

/* --- reduced motion: kill all hero fx motion, keep calm static --- */
@media (prefers-reduced-motion:reduce){
  .hero .svfx-hero-depth,
  .hero .svfx-hero-rift,
  .hero .svfx-hero-scan,
  .hero .svfx-hero-scramble{display:none !important;animation:none !important;}
  .hero h1.hero-title.svfx-hero-title::before,
  .hero h1.hero-title.svfx-hero-title::after{display:none !important;animation:none !important;}
  .hero h1.hero-title.svfx-hero-glitching{animation:none !important;}
  .hero .svfx-hero-vignette{opacity:1;transition:none;}
}

/* --- touch / no-hover: no parallax depth layers --- */
@media (hover:none),(pointer:coarse){
  .hero .svfx-hero-depth{display:none;}
}

/* ===== SVFX :: SCROLL CINEMATICS: marquee band, velocity-skew, panel-slam, magnetic+ ===== */
/* ============================================================
   svfx-scroll — Scroll Cinematics layer for SPIDER SOCIETY
   Namespaced svfx-scroll- / svfx-zip / svfx-slam.
   Coexists additively with spider-verse.js. Pointer-safe.
   ============================================================ */

/* ---------- 1. INFINITE MARQUEE BAND ---------- */
.svfx-scroll-marquee{
  position:relative;
  width:100%;
  overflow:hidden;
  padding:0;
  margin:0;
  background:
    linear-gradient(90deg,
      rgba(139,47,224,.10) 0%,
      rgba(233,30,99,.10) 50%,
      rgba(34,211,238,.10) 100%);
  border-top:1px solid rgba(168,85,247,.35);
  border-bottom:1px solid rgba(34,211,238,.30);
  box-shadow:
    inset 0 0 38px rgba(139,47,224,.22),
    0 0 26px rgba(233,30,99,.14);
  z-index:2;                       /* above page bg, below nav/fx */
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);
          mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);
  contain:content;
}
.svfx-scroll-marquee::before{      /* faint halftone wash */
  content:"";
  position:absolute;inset:0;
  background-image:radial-gradient(rgba(255,255,255,.06) 1px,transparent 1.4px);
  background-size:9px 9px;
  opacity:.5;
  pointer-events:none;
  mix-blend-mode:screen;
}
.svfx-scroll-marquee-track{
  display:flex;
  flex-wrap:nowrap;
  width:max-content;
  will-change:transform;
  transform:translate3d(0,0,0) skewX(-7deg);
  padding:14px 0;
}
.svfx-scroll-marquee-seg{
  display:inline-flex;
  align-items:center;
  flex:0 0 auto;
  white-space:nowrap;
  font-family:"Bebas Neue","Oswald","Rajdhani",sans-serif;
  font-size:clamp(1.7rem,4.4vw,3.1rem);
  letter-spacing:.10em;
  line-height:1;
  text-transform:uppercase;
  padding:0 .35em;
  color:#fff;
}
.svfx-scroll-marquee-seg b{
  font-weight:inherit;
  padding:0 .42em;
  background:linear-gradient(180deg,#fff 0%,#A855F7 55%,#E91E63 100%);
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;
  filter:drop-shadow(0 0 10px rgba(168,85,247,.55))
         drop-shadow(0 0 22px rgba(233,30,99,.30));
}
.svfx-scroll-marquee-seg i{        /* the bullet/spider dot */
  font-style:normal;
  color:#22D3EE;
  padding:0 .12em;
  filter:drop-shadow(0 0 9px rgba(34,211,238,.85));
  transform:translateY(-.04em);
}
.svfx-scroll-marquee-track.svfx-scroll-alt .svfx-scroll-marquee-seg b{
  background:linear-gradient(180deg,#fff 0%,#22D3EE 55%,#A855F7 100%);
  -webkit-background-clip:text;background-clip:text;
}

/* ---------- 2. VELOCITY SKEW (inline transform from JS) ---------- */
.svfx-scroll-skewable{
  will-change:transform;
  transform-origin:50% 50%;
  backface-visibility:hidden;
}

/* ---------- 3. PANEL-SLAM (opt-in svfx-slam on [data-reveal]) ---------- */
.svfx-scroll-slam-armed{
  opacity:0;
  transform:translate3d(0,46px,0) scale(.9) rotate(-2.4deg);
  filter:blur(6px) saturate(1.4);
  transition:none;
  will-change:transform,opacity,filter;
}
.svfx-scroll-slam-go{
  opacity:1;
  transform:translate3d(0,0,0) scale(1) rotate(0deg);
  filter:blur(0) saturate(1);
  transition:
    transform .46s cubic-bezier(.16,1.4,.3,1),
    opacity .26s ease-out,
    filter .4s ease-out;
}
.svfx-scroll-slam-go.svfx-scroll-flash{position:relative;}
.svfx-scroll-slam-go.svfx-scroll-flash::after{
  content:"";
  position:absolute;inset:-2px;
  border:2px solid rgba(255,255,255,.85);
  border-radius:inherit;
  pointer-events:none;
  opacity:0;
  animation:svfx-scroll-slamflash .42s ease-out forwards;
  mix-blend-mode:screen;
}
@keyframes svfx-scroll-slamflash{
  0%{opacity:.9;box-shadow:0 0 0 0 rgba(168,85,247,.6);}
  100%{opacity:0;box-shadow:0 0 30px 8px rgba(233,30,99,0);}
}

/* ---------- 4. MAGNETIC + GLOW CTA ---------- */
.svfx-scroll-mag{
  will-change:transform;
  transition:transform .18s cubic-bezier(.2,.8,.2,1),
             box-shadow .25s ease,
             filter .25s ease;
}
.svfx-scroll-mag.svfx-scroll-mag-hot{
  box-shadow:
    0 0 0 1px rgba(255,255,255,.18),
    0 0 22px rgba(168,85,247,.55),
    0 0 46px rgba(233,30,99,.40),
    0 10px 30px rgba(0,0,0,.45);
  filter:saturate(1.18) brightness(1.06);
}
.svfx-scroll-mag::before{           /* sweeping sheen on hot */
  content:"";
  position:absolute;inset:0;
  border-radius:inherit;
  background:linear-gradient(115deg,transparent 35%,rgba(255,255,255,.22) 50%,transparent 65%);
  transform:translateX(-120%);
  pointer-events:none;
  opacity:0;
  transition:transform .6s ease,opacity .3s ease;
}
.svfx-scroll-mag.svfx-scroll-mag-hot::before{transform:translateX(120%);opacity:1;}

/* ---------- 5. WEB-ZIP scroll-to-top ---------- */
.svfx-zip{
  position:fixed;
  left:clamp(16px,2.4vw,30px); /* bottom-LEFT: la chat occupa bottom-right a z-9998 */
  bottom:clamp(16px,2.4vw,30px);
  width:54px;height:54px;
  border:none;
  border-radius:50%;
  cursor:pointer;
  z-index:9998;
  display:grid;place-items:center;
  background:
    radial-gradient(circle at 32% 28%,#A855F7 0%,#8B2FE0 42%,#6B1FB8 100%);
  color:#fff;
  opacity:0;visibility:hidden;
  transform:translate3d(0,26px,0) scale(.7);
  transition:opacity .35s ease,transform .45s cubic-bezier(.16,1.3,.3,1),visibility .35s,box-shadow .3s ease;
  box-shadow:
    0 0 0 1px rgba(255,255,255,.14),
    0 0 20px rgba(168,85,247,.5),
    0 8px 24px rgba(0,0,0,.5);
  -webkit-tap-highlight-color:transparent;
  will-change:transform,opacity;
}
.svfx-zip.svfx-zip-on{opacity:1;visibility:visible;transform:translate3d(0,0,0) scale(1);}
.svfx-zip:hover{
  box-shadow:
    0 0 0 1px rgba(255,255,255,.3),
    0 0 28px rgba(168,85,247,.8),
    0 0 54px rgba(233,30,99,.5),
    0 10px 28px rgba(0,0,0,.55);
}
.svfx-zip:focus-visible{outline:2px solid #22D3EE;outline-offset:3px;}
.svfx-zip svg{width:24px;height:24px;display:block;filter:drop-shadow(0 0 4px rgba(34,211,238,.8));}
.svfx-zip .svfx-zip-thread{          /* the "web line" that zips up */
  position:absolute;
  left:50%;top:50%;
  width:2px;height:0;
  transform:translate(-50%,-100%);
  background:linear-gradient(180deg,rgba(34,211,238,0),#22D3EE 60%,#A855F7);
  pointer-events:none;
  opacity:0;
}
.svfx-zip.svfx-zip-zipping .svfx-zip-thread{animation:svfx-zip-thread .5s ease-in forwards;}
.svfx-zip.svfx-zip-zipping{animation:svfx-zip-pop .5s ease-in forwards;}
@keyframes svfx-zip-thread{
  0%{opacity:1;height:0;}
  60%{opacity:1;height:120vh;}
  100%{opacity:0;height:120vh;}
}
@keyframes svfx-zip-pop{
  0%{transform:translate3d(0,0,0) scale(1);}
  35%{transform:translate3d(0,4px,0) scale(.86);}
  100%{transform:translate3d(0,-120vh,0) scale(.4);opacity:0;}
}

/* ---------- REDUCED MOTION : calm static fallback ---------- */
@media (prefers-reduced-motion:reduce){
  .svfx-scroll-marquee-track{animation:none!important;transform:skewX(-7deg)!important;}
  .svfx-scroll-skewable{transform:none!important;will-change:auto!important;}
  .svfx-scroll-slam-armed{opacity:1!important;transform:none!important;filter:none!important;}
  .svfx-scroll-slam-go{transition:none!important;}
  .svfx-scroll-slam-go.svfx-scroll-flash::after{animation:none!important;display:none!important;}
  .svfx-scroll-mag,.svfx-scroll-mag.svfx-scroll-mag-hot{transform:none!important;transition:box-shadow .2s ease;}
  .svfx-scroll-mag::before{display:none!important;}
  .svfx-zip{transition:opacity .3s ease,visibility .3s;}
  .svfx-zip.svfx-zip-zipping,.svfx-zip.svfx-zip-zipping .svfx-zip-thread{animation:none!important;}
}

/* ---------- MOBILE : tame the marquee a touch ---------- */
@media (max-width:640px){
  .svfx-scroll-marquee-seg{font-size:clamp(1.4rem,7vw,2.2rem);}
  .svfx-zip{width:48px;height:48px;}
}

/* ============================================================
   SVFX :: INTEGRATION GUARDS (post-critic audit)
   - web-trail non dipinge sopra l'intro
   - fx in primo piano spariscono quando un lightbox è aperto
   - svfx-zip non si sovrappone alla chat (z 9998) o ai modali (z 10000+)
   ============================================================ */
body:has(#svfx-intro) .svfx-webtrail-canvas { opacity: 0 !important; }
body:has(.lightbox.open) .svfx-webtrail-canvas,
body:has(.lightbox.open) .svfx-zip {
  opacity: 0 !important;
  pointer-events: none !important;
}

/* Rimossa la "rift seam" centrale dell'hero (linea verticale fastidiosa) */
.hero .svfx-hero-rift { display: none !important; }

/* ===== Contatore visualizzazioni ===== */
.sss-views {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: var(--grey);
  font-size: 0.78rem;
  font-weight: 600;
  white-space: nowrap;
}
.sss-views svg { opacity: 0.8; }
.news-card-metaright {
  display: inline-flex;
  align-items: center;
  gap: 10px;
}
/* Like generale della serie (sulla card in /storie/) */
.serie-like-btn {
  display: inline-flex; align-items: center; gap: 5px;
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.12);
  color: #cfcfd6;
  padding: 4px 10px; border-radius: 999px;
  font: 600 0.82rem/1 'Rajdhani', sans-serif;
  cursor: pointer; transition: all .2s ease;
  -webkit-tap-highlight-color: transparent;
}
.serie-like-btn svg { transition: transform .2s ease; }
.serie-like-btn:hover { border-color: rgba(233,30,99,.6); color: #fff; }
.serie-like-btn:hover svg { transform: scale(1.15); }
.serie-like-btn.liked {
  background: rgba(233,30,99,.16);
  border-color: rgba(233,30,99,.7);
  color: #ff2d78;
}
.serie-like-btn.liked svg { fill: #ff2d78; }
.serie-like-btn.pulse svg { animation: svLikePop .42s ease; }
@keyframes svLikePop { 0%{transform:scale(1)} 40%{transform:scale(1.45)} 100%{transform:scale(1)} }
.serie-like-btn:disabled { opacity: .6; cursor: default; }
/* Like serie come OVERLAY sulla copertina (basso-sinistra, speculare a "1 EPISODIO") */
.serie-like-overlay {
  position: absolute; bottom: 12px; left: 12px; z-index: 3;
  background: rgba(10,10,10,0.8); backdrop-filter: blur(6px);
  border: 1px solid rgba(233,30,99,0.45);
  padding: 5px 12px;
  box-shadow: 0 2px 10px rgba(0,0,0,.4);
}
.serie-like-overlay .serie-like-count { font-size: 0.8rem; }
.serie-like-overlay:hover { background: rgba(233,30,99,0.22); border-color: rgba(233,30,99,.8); }
.serie-like-overlay.liked { background: rgba(233,30,99,0.28); border-color: #ff2d78; }
.news-single-meta .sss-views {
  font-size: 0.85rem;
  padding-left: 4px;
  border-left: 1px solid rgba(255,255,255,0.12);
  margin-left: 4px;
}

/* ==========================================================
   STORIE — fumetti custom della community
   ========================================================== */
.storie-archive {
  max-width: 1200px;
  margin: 30px auto 60px;
  padding: 0 24px;
}
.storie-actions { text-align: center; margin-bottom: 26px; }

.storia-serie-badge {
  background: rgba(139, 47, 224, 0.92) !important;
  border: 1px solid rgba(168, 85, 247, 0.6) !important;
  color: #fff !important;
  text-transform: uppercase; letter-spacing: 1px;
}
.storia-ep-badge {
  position: absolute; top: 12px; right: 12px;
  background: #FFD600; color: #1a1400;
  font-family: 'Bebas Neue', sans-serif; letter-spacing: 1px;
  font-size: 0.8rem; padding: 3px 10px; border-radius: 4px;
  border: 1px solid rgba(0,0,0,0.3);
  box-shadow: 0 2px 8px rgba(0,0,0,0.4);
}
.storia-card .news-card-cover { aspect-ratio: 3 / 4; }

/* ---- Single episodio (webtoon) ---- */
.storia-single { max-width: 820px; margin: 0 auto 60px; padding: 0 18px; }
.storia-single-breadcrumb { margin: 100px 0 18px; font-size: 0.9rem; }
.storia-single-breadcrumb a { color: var(--grey); text-decoration: none; }
.storia-single-breadcrumb a:hover { color: var(--cyan); }
.storia-single-breadcrumb span { color: rgba(255,255,255,0.2); }

.storia-single-hero {
  position: relative; text-align: center; padding: 26px 16px 30px;
  margin-bottom: 30px; overflow: hidden;
  background: radial-gradient(60% 100% at 50% 0%, rgba(139,47,224,.18), transparent 70%);
  border-bottom: 1px solid rgba(168,85,247,.18);
}
.storia-single-title {
  font-family: 'Bebas Neue', sans-serif;
  font-size: clamp(2.2rem, 6vw, 4rem); letter-spacing: 2px; line-height: 1;
  margin: 6px 0 16px;
  background: linear-gradient(135deg, #fff 25%, var(--red-glow) 60%, var(--cyan));
  -webkit-background-clip: text; background-clip: text; color: transparent;
}
.storia-single-meta {
  display: flex; flex-wrap: wrap; gap: 14px; align-items: center; justify-content: center;
  font-size: 0.9rem;
}
.storia-single-meta .news-single-author-name { font-weight: 700; }
.storia-single-meta .news-single-date { color: var(--grey); }

/* Pannelli verticali */
.storia-panels { display: flex; flex-direction: column; gap: 22px; }
.storia-panel {
  background: rgba(15, 15, 22, 0.7);
  border: 3px solid #0A0A0A;
  border-radius: 10px;
  overflow: hidden;
  box-shadow: 0 0 0 1px rgba(168,85,247,0.25), 0 14px 40px rgba(0,0,0,0.5);
}
.storia-panel-img { line-height: 0; background: #050507; }
.storia-panel-img img { width: 100%; height: auto; display: block; }
.storia-panel-text {
  font-family: 'Rajdhani', sans-serif;
  font-size: 1.08rem; line-height: 1.55; color: #f4f4f4;
  padding: 16px 20px;
  background: linear-gradient(180deg, rgba(255,255,255,0.04), transparent);
  border-top: 2px solid rgba(168,85,247,0.2);
}
.storia-panel-text strong { color: var(--cyan); }
/* pannello di solo testo lungo = prosa leggibile stile racconto */
.storia-panel:not(:has(.storia-panel-img)) .storia-panel-text {
  border-top: none;
  font-family: 'Georgia', 'Times New Roman', serif;
  font-size: clamp(1.04rem, 1.5vw, 1.2rem);
  font-weight: 400;
  line-height: 1.9;
  text-align: left;
  color: #e9e6f2;
  max-width: 730px;
  margin: 0 auto;
  background: rgba(255,255,255,0.025);
  border: 1px solid rgba(255,255,255,0.07);
  border-radius: 14px;
  padding: clamp(22px, 4vw, 48px);
}
.storia-panel-text p { margin: 0 0 1.2em; }
.storia-panel-text p:last-child { margin-bottom: 0; }
.storia-panel-text em { color: #c9b6ff; font-style: italic; }
.storia-panel-text strong { color: #fff; }
.storia-panel-text .scene-break {
  text-align: center; color: var(--magenta, #E91E63);
  letter-spacing: .45em; margin: 2.2em 0; font-size: 1rem; opacity: .75;
}
.storia-panel-text .storia-prose-intro {
  font-size: 1.22em; font-weight: 600; color: #fff; font-style: italic;
  border-left: 3px solid var(--magenta, #E91E63); padding-left: 18px; margin-bottom: 1.5em;
}
.storia-panel-text .storia-prose-end {
  text-align: center; margin-top: 2.6em; padding-top: 1.6em;
  border-top: 1px solid rgba(255,255,255,.12); color: #c9b6ff; font-size: .98em;
}

/* Nav episodi */
.storia-epnav {
  display: flex; justify-content: space-between; align-items: stretch; gap: 12px;
  margin: 34px 0 10px;
}
.storia-epnav-spacer { flex: 1; }
.storia-epnav-btn {
  flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  padding: 14px 16px; border-radius: 10px;
  background: rgba(20,20,20,0.7); border: 1px solid rgba(168,85,247,0.25);
  color: var(--white); text-decoration: none; font-weight: 700; font-size: 0.85rem;
  text-align: center; transition: border-color .15s ease, transform .15s ease;
}
.storia-epnav-btn span { display: inline-block; max-width: 140px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.storia-epnav-btn:hover { border-color: var(--red-glow); transform: translateY(-2px); }
.storia-epnav-all { background: linear-gradient(135deg, var(--red), var(--magenta)); border: none; flex: 0 0 auto; }

/* ---- Builder ---- */
.storia-form-row { display: flex; gap: 16px; flex-wrap: wrap; }
.storia-form-row .news-field { min-width: 140px; }
#storia-panels { display: flex; flex-direction: column; gap: 16px; margin: 12px 0; }
.storia-panel-edit {
  display: flex; gap: 16px; flex-wrap: wrap;
  background: #0A0A0A; border: 1px solid rgba(168,85,247,0.22);
  border-radius: 10px; padding: 14px;
}
.storia-panel-edit-img {
  width: 160px; min-height: 120px; flex: 0 0 160px;
  background: #0d0d12 center / cover no-repeat;
  border: 1px dashed rgba(168,85,247,0.35); border-radius: 8px;
  display: flex; align-items: center; justify-content: center;
  color: var(--grey); font-size: 0.8rem;
}
.storia-panel-edit-body { flex: 1; min-width: 220px; display: flex; flex-direction: column; gap: 10px; }
.storia-panel-edit-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.svs-panel-text {
  background: #050507; border: 1px solid rgba(168,85,247,0.25); color: #fff;
  border-radius: 8px; padding: 10px 12px; font: inherit; resize: vertical; min-height: 64px;
}
.svs-panel-text:focus { outline: none; border-color: var(--red-glow); }

@media (max-width: 768px) {
  .storia-single-breadcrumb { margin-top: 84px; }
  .storia-epnav { flex-direction: column; }
  .storia-epnav-btn span { max-width: none; }
  .storia-panel-edit-img { flex-basis: 100%; width: 100%; }
}

/* ---- Like Storie ---- */
.storia-like-bar { display: flex; justify-content: center; margin: 34px 0 6px; }
.storia-like-btn {
  display: inline-flex; align-items: center; gap: 10px;
  padding: 12px 22px; border-radius: 999px;
  background: rgba(20,20,20,0.7); border: 1px solid rgba(233,30,99,0.35);
  color: var(--white); font: inherit; font-weight: 700; cursor: pointer;
  text-decoration: none; transition: transform .15s ease, border-color .15s ease, background .2s ease;
}
.storia-like-btn svg { color: var(--grey); transition: color .15s ease, transform .15s ease; }
.storia-like-btn:hover { border-color: var(--magenta); transform: translateY(-2px); }
.storia-like-btn:hover svg { color: var(--magenta); }
.storia-like-btn.liked { background: rgba(233,30,99,0.16); border-color: var(--magenta); }
.storia-like-btn.liked svg { color: var(--magenta); }
.storia-like-count { font-family: 'Bebas Neue', sans-serif; font-size: 1.3rem; letter-spacing: 1px; min-width: 14px; }
.storia-like-label { font-size: 0.82rem; letter-spacing: 0.5px; color: var(--grey); }
.storia-like-btn.liked .storia-like-label { color: #fff; }
.storia-like-guest .storia-like-label { color: var(--grey); }
.storia-like-btn.pulse svg { animation: sssLikePop .42s ease; }
@keyframes sssLikePop { 0%{transform:scale(1);} 40%{transform:scale(1.45);} 100%{transform:scale(1);} }

/* ---- Storie: toolbar sort + ricerca ---- */
.storie-toolbar {
  display: flex; flex-wrap: wrap; gap: 14px; justify-content: space-between; align-items: center;
  margin-bottom: 26px;
}
.storie-sort { display: flex; flex-wrap: wrap; gap: 8px; }
.storie-search { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.storie-search input[type="search"] {
  background: #0A0A0A; border: 1px solid rgba(168,85,247,0.3); color: #fff;
  padding: 9px 14px; border-radius: 8px; font: inherit; min-width: 200px;
}
.storie-search input[type="search"]:focus { outline: none; border-color: var(--red-glow); }

/* ---- Serie card ---- */
.serie-card .news-card-cover { aspect-ratio: 3 / 4; }
.storia-new-badge {
  position: absolute; top: 12px; left: 12px;
  max-width: calc(100% - 24px);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  background: linear-gradient(135deg, var(--magenta), var(--red)); color: #fff;
  font-family: 'Rajdhani', sans-serif; font-weight: 800; letter-spacing: 0.6px;
  font-size: 0.66rem; padding: 4px 10px; border-radius: 4px; text-transform: uppercase;
  box-shadow: 0 2px 10px rgba(233,30,99,0.5);
  animation: svBadgeGlow 2.4s ease-in-out infinite;
}
@keyframes svBadgeGlow {
  0%, 100% { box-shadow: 0 2px 10px rgba(233,30,99,0.5); }
  50%      { box-shadow: 0 2px 20px rgba(233,30,99,0.95); }
}
.serie-ep-count {
  position: absolute; bottom: 12px; right: 12px;
  background: rgba(10,10,10,0.8); backdrop-filter: blur(6px);
  border: 1px solid rgba(168,85,247,0.35); color: var(--red-glow);
  font-size: 0.72rem; font-weight: 700; padding: 3px 10px; border-radius: 12px;
}

/* ---- Header serie (vista episodi) ---- */
.serie-header { margin-bottom: 30px; }
.serie-back { color: var(--grey); text-decoration: none; font-size: 0.9rem; }
.serie-back:hover { color: var(--cyan); }
.serie-header-inner {
  display: flex; gap: 22px; align-items: center; margin-top: 16px;
  background: rgba(20,20,20,0.6); border: 1px solid rgba(168,85,247,0.2);
  border-radius: 16px; padding: 20px; flex-wrap: wrap;
}
.serie-header-cover {
  flex: 0 0 130px; width: 130px; aspect-ratio: 3/4; border-radius: 10px; overflow: hidden;
  box-shadow: 0 10px 30px rgba(0,0,0,0.5);
}
.serie-header-cover img { width: 100%; height: 100%; object-fit: cover; }
.serie-header-info { flex: 1; min-width: 240px; }
.serie-header-info h2 {
  font-family: 'Bebas Neue', sans-serif; font-size: clamp(1.8rem, 4vw, 2.8rem);
  letter-spacing: 1px; margin: 4px 0 8px;
  background: linear-gradient(135deg, #fff, var(--red-glow)); -webkit-background-clip: text; background-clip: text; color: transparent;
}
.serie-header-info p { color: var(--grey); margin: 0 0 12px; }
.serie-header-stats { display: flex; gap: 12px; align-items: center; color: var(--grey); font-size: 0.9rem; }

/* ---- Builder: box copertina serie ---- */
.storia-serie-box { background: rgba(139,47,224,0.06); border: 1px solid rgba(168,85,247,0.2); border-radius: 12px; padding: 16px; }
.storia-serie-fields { display: flex; gap: 16px; margin-top: 10px; flex-wrap: wrap; }
.storia-serie-cover-up { flex: 0 0 200px; }
.storia-serie-cover-up .news-cover-preview { aspect-ratio: 3/4; }
.storia-serie-desc {
  flex: 1; min-width: 220px; background: #050507; border: 1px solid rgba(168,85,247,0.25);
  color: #fff; border-radius: 8px; padding: 10px 12px; font: inherit; resize: vertical;
}
.storia-serie-desc:focus { outline: none; border-color: var(--red-glow); }

@media (max-width: 768px) {
  .storie-toolbar { flex-direction: column; align-items: stretch; }
  .storie-search input[type="search"] { flex: 1; min-width: 0; }
  .serie-header-cover { flex-basis: 100px; width: 100px; }
}

/* ---- Le mie storie (hub gestione fumetti) ---- */
.lms-top { margin-bottom: 22px; }
.lms-form-title { font-family: 'Oswald', sans-serif; font-size: 1.3rem; color: #fff; margin: 0 0 6px; }
.lms-form-right { flex: 1; min-width: 240px; display: flex; flex-direction: column; gap: 14px; }
.lms-card { display: flex; flex-direction: column; }
.lms-card .news-card-cover { aspect-ratio: 3 / 4; }
.lms-card-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.lms-card-actions .news-action-btn { font-size: 0.72rem; padding: 7px 12px; }
.lms-grid { margin-top: 10px; }

/* Area Scrittori hub */
.scrittori-group-title {
  font-family: 'Bebas Neue', sans-serif; font-size: 1.6rem; letter-spacing: 3px;
  color: var(--red-glow); margin: 34px 0 14px; padding-bottom: 8px;
  border-bottom: 1px solid rgba(168,85,247,0.2);
}
/* Badge stato news (Le mie news) */
.news-status-badge {
  position: absolute; top: 12px; left: 12px;
  font-size: 0.66rem; font-weight: 800; letter-spacing: 0.6px; text-transform: uppercase;
  padding: 4px 10px; border-radius: 4px; color: #0A0A0A;
}
.news-status-badge.st-pub { background: #3FE862; }
.news-status-badge.st-pend { background: #FFD600; }
.news-status-badge.st-draft { background: #b8b8b8; }

/* Tile area membri: icone colorate per categoria + glow */
.member-card-profilo      .icon { background: rgba(34,211,238,.14);  border-color: rgba(34,211,238,.35); }
.member-card-profilo      .icon svg { fill: #22D3EE; }
.member-card-scrittori    .icon { background: rgba(233,30,99,.14);   border-color: rgba(233,30,99,.4); }
.member-card-scrittori    .icon svg { fill: #E91E63; }
.member-card-admin        .icon { background: rgba(229,9,20,.14);    border-color: rgba(229,9,20,.4); }
.member-card-admin        .icon svg { fill: #E50914; }
.member-card-social       .icon { background: rgba(255,214,0,.14);   border-color: rgba(255,214,0,.4); }
.member-card-social       .icon svg { fill: #FFD600; }
.member-card-videomaker   .icon { background: rgba(46,168,255,.14);  border-color: rgba(46,168,255,.4); }
.member-card-videomaker   .icon svg { fill: #2EA8FF; }
.member-card-coordinatore .icon { background: rgba(63,232,98,.14);   border-color: rgba(63,232,98,.4); }
.member-card-coordinatore .icon svg { fill: #3FE862; }
.member-card-membro       .icon { background: rgba(168,85,247,.14);  border-color: rgba(168,85,247,.4); }
.member-card-membro       .icon svg { fill: #A855F7; }
/* glow al hover (colore della categoria via box-shadow ereditato dal fill non è diretto: usiamo un glow neutro forte) */
.member-card-profilo:hover      .icon { box-shadow: 0 0 22px rgba(34,211,238,.5); }
.member-card-scrittori:hover    .icon { box-shadow: 0 0 22px rgba(233,30,99,.55); }
.member-card-admin:hover        .icon { box-shadow: 0 0 22px rgba(229,9,20,.5); }
.member-card-social:hover       .icon { box-shadow: 0 0 22px rgba(255,214,0,.5); }
.member-card-videomaker:hover   .icon { box-shadow: 0 0 22px rgba(46,168,255,.5); }
.member-card-coordinatore:hover .icon { box-shadow: 0 0 22px rgba(63,232,98,.5); }
.member-card-membro:hover       .icon { box-shadow: 0 0 22px rgba(168,85,247,.5); }
/* mantieni il colore dell'icona anche al hover (non virare al default) */
.member-card-profilo:hover .icon svg{fill:#22D3EE}
.member-card-scrittori:hover .icon svg{fill:#E91E63}
.member-card-admin:hover .icon svg{fill:#E50914}
.member-card-social:hover .icon svg{fill:#FFD600}
.member-card-videomaker:hover .icon svg{fill:#2EA8FF}
.member-card-coordinatore:hover .icon svg{fill:#3FE862}
.member-card-membro:hover .icon svg{fill:#A855F7}

.member-card-badge {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 20px; height: 20px; padding: 0 5px; border-radius: 10px;
  background: #E50914; color: #fff; font-size: 0.72rem; font-weight: 700; vertical-align: middle;
}

/* Copertine: anteprima coerente con la card (storie = verticale 3:4) + sempre centrate */
#storia-cover-preview { aspect-ratio: 3 / 4; }
.news-card-cover img,
.storia-panel-img img,
.serie-header-cover img { object-position: center; }

/* ============================================================
   MYTHOS PACK — Serie Originale banner + lettura cinematica
   ============================================================ */

/* ---- HOME: banner "Una Serie Originale" (stile streaming) ---- */
.home-serie {
  position: relative;
  min-height: clamp(420px, 58vh, 600px);
  display: flex; align-items: center;
  overflow: hidden;
  margin: 70px 0;
  border-top: 1px solid rgba(168,85,247,0.18);
  border-bottom: 1px solid rgba(168,85,247,0.18);
}
.home-serie-bg {
  position: absolute; inset: 0;
  background-size: cover;
  background-position: 75% 22%;
  filter: saturate(1.05);
  transform: scale(1.02);
}
.home-serie-grad {
  position: absolute; inset: 0;
  background:
    linear-gradient(90deg, rgba(8,8,12,0.97) 0%, rgba(8,8,12,0.88) 34%, rgba(8,8,12,0.45) 62%, rgba(8,8,12,0.15) 100%),
    linear-gradient(0deg, rgba(8,8,12,0.92) 0%, transparent 28%, transparent 75%, rgba(8,8,12,0.85) 100%);
}
.home-serie-inner {
  position: relative; z-index: 2;
  width: 100%;
  max-width: 1180px; margin: 0 auto;
  padding: clamp(40px, 7vw, 80px) clamp(20px, 5vw, 60px);
}
.home-serie-eyebrow {
  display: inline-flex; align-items: center; gap: 7px;
  font: 700 0.72rem/1 'Rajdhani', sans-serif;
  letter-spacing: 3.5px; text-transform: uppercase;
  color: var(--red-glow, #A855F7);
  border: 1px solid rgba(168,85,247,0.45);
  background: rgba(168,85,247,0.10);
  backdrop-filter: blur(4px);
  padding: 7px 14px; border-radius: 999px;
  margin-bottom: 18px;
}
.home-serie-title {
  font-family: 'Bebas Neue', 'Oswald', sans-serif;
  font-size: clamp(2.6rem, 7vw, 5.2rem);
  line-height: 0.98; letter-spacing: 2px;
  color: #fff; margin: 0 0 14px;
  text-shadow: 0 4px 30px rgba(0,0,0,0.8);
  max-width: 14ch;
}
.home-serie-logline {
  max-width: 560px;
  color: rgba(245,245,245,0.86);
  font-size: clamp(0.95rem, 1.4vw, 1.08rem);
  line-height: 1.65; margin: 0 0 16px;
  text-shadow: 0 2px 12px rgba(0,0,0,0.9);
}
.home-serie-meta {
  display: flex; flex-wrap: wrap; align-items: center; gap: 10px;
  font: 600 0.86rem/1 'Rajdhani', sans-serif;
  letter-spacing: 1.5px; text-transform: uppercase;
  color: rgba(245,245,245,0.75);
  margin-bottom: 26px;
}
.home-serie-dot { color: rgba(245,245,245,0.3); }
.home-serie-cta { display: flex; flex-wrap: wrap; gap: 14px; }
.home-serie-play {
  display: inline-flex; align-items: center; gap: 9px;
  box-shadow: 0 8px 30px rgba(139,47,224,0.45);
}
.home-serie-play svg { transition: transform .25s ease; }
.home-serie-play:hover svg { transform: translateX(3px) scale(1.12); }
@media (max-width: 640px) {
  .home-serie { min-height: 480px; }
  .home-serie-bg { background-position: 70% 15%; }
  .home-serie-grad {
    background:
      linear-gradient(0deg, rgba(8,8,12,0.97) 8%, rgba(8,8,12,0.72) 45%, rgba(8,8,12,0.35) 100%);
  }
  .home-serie-inner { align-self: flex-end; padding-bottom: 36px; }
}

/* ---- LETTURA: barra di progresso ---- */
.storia-progress {
  position: fixed; top: 0; left: 0; right: 0;
  height: 3px; z-index: 9999;
  background: rgba(255,255,255,0.06);
  pointer-events: none;
}
#storia-progress-fill {
  display: block; height: 100%;
  width: 100%;
  transform: scaleX(0); transform-origin: left center;
  background: linear-gradient(90deg, #8B2FE0, #E91E63 55%, #22D3EE);
  box-shadow: 0 0 12px rgba(233,30,99,0.6);
  will-change: transform;
}

/* ---- LETTURA: header con copertina come backdrop ---- */
.storia-single-hero.has-cover {
  position: relative;
  overflow: hidden;
  border-radius: 18px;
  padding: clamp(46px, 8vw, 90px) clamp(20px, 5vw, 56px);
  margin-bottom: 34px;
}
.storia-hero-bg {
  position: absolute; inset: 0;
  background-size: cover; background-position: center 22%;
  opacity: 0.5;
  -webkit-mask-image: linear-gradient(180deg, rgba(0,0,0,.9), rgba(0,0,0,.35));
          mask-image: linear-gradient(180deg, rgba(0,0,0,.9), rgba(0,0,0,.35));
}
.storia-single-hero.has-cover::after {
  content: '';
  position: absolute; inset: 0;
  background: linear-gradient(0deg, var(--dark, #0A0A0A) 0%, rgba(10,10,10,0.25) 45%, rgba(10,10,10,0.55) 100%);
}
.storia-hero-content { position: relative; z-index: 2; }
.storia-single-hero.has-cover .storia-single-title { text-shadow: 0 4px 26px rgba(0,0,0,0.9); }
.storia-readtime {
  color: rgba(245,245,245,0.65);
  font-size: 0.88rem; display: inline-flex; align-items: center; gap: 5px;
}

/* ---- LETTURA: end-card "Prossimo episodio" ---- */
.storia-nextcard {
  display: grid;
  grid-template-columns: minmax(120px, 190px) 1fr;
  gap: 0;
  margin: 44px auto 8px;
  max-width: 730px;
  border-radius: 16px; overflow: hidden;
  text-decoration: none;
  background: linear-gradient(135deg, rgba(139,47,224,0.13), rgba(34,211,238,0.05));
  border: 1px solid rgba(168,85,247,0.32);
  transition: transform .25s ease, border-color .25s ease, box-shadow .25s ease;
}
.storia-nextcard:hover {
  transform: translateY(-4px);
  border-color: rgba(233,30,99,0.6);
  box-shadow: 0 14px 44px rgba(139,47,224,0.3);
}
.storia-nextcard-cover { aspect-ratio: 3 / 4; overflow: hidden; }
.storia-nextcard-cover img {
  width: 100%; height: 100%; object-fit: cover; object-position: center;
  transition: transform .35s ease;
}
.storia-nextcard:hover .storia-nextcard-cover img { transform: scale(1.06); }
.storia-nextcard-body {
  padding: clamp(18px, 3vw, 30px);
  display: flex; flex-direction: column; justify-content: center; gap: 10px;
}
.storia-nextcard-eyebrow {
  font: 700 0.7rem/1 'Rajdhani', sans-serif;
  letter-spacing: 3px; text-transform: uppercase;
  color: var(--magenta, #E91E63);
}
.storia-nextcard-title {
  margin: 0;
  font-family: 'Bebas Neue', 'Oswald', sans-serif;
  font-size: clamp(1.4rem, 3vw, 2rem);
  letter-spacing: 1px; color: #fff; line-height: 1.05;
}
.storia-nextcard-go {
  display: inline-flex; align-items: center; gap: 8px;
  font: 700 0.85rem/1 'Rajdhani', sans-serif;
  letter-spacing: 2px; text-transform: uppercase;
  color: var(--cyan, #22D3EE);
}
.storia-nextcard-go svg { transition: transform .25s ease; }
.storia-nextcard:hover .storia-nextcard-go svg { transform: translateX(4px); }
@media (max-width: 520px) {
  .storia-nextcard { grid-template-columns: 110px 1fr; }
}

/* ============================================================
   News fissate (IN EVIDENZA) + bottone trailer
   ============================================================ */
.news-card-pin {
  position: absolute; top: 10px; left: 10px; z-index: 3;
  display: inline-flex; align-items: center; gap: 4px;
  font: 800 0.66rem/1 'Rajdhani', sans-serif;
  letter-spacing: 1.2px; text-transform: uppercase;
  color: #fff;
  background: linear-gradient(135deg, #E91E63, #8B2FE0);
  padding: 5px 10px; border-radius: 999px;
  box-shadow: 0 4px 14px rgba(233,30,99,0.5);
}
.news-card-pinned {
  position: relative;
  border: 1.5px solid rgba(233,30,99,0.55);
  box-shadow: 0 0 0 1px rgba(233,30,99,0.25), 0 10px 34px rgba(139,47,224,0.28);
}
.news-card-pinned:hover {
  border-color: rgba(233,30,99,0.85);
  box-shadow: 0 0 0 1px rgba(233,30,99,0.4), 0 16px 46px rgba(139,47,224,0.4);
}
/* Griglia delle sole fissate: leggero respiro sotto */
.news-grid-pinned { margin-bottom: 26px; }

/* Bottone "Guarda il trailer" dentro il corpo articolo */
.news-trailer-btn {
  display: inline-flex; align-items: center; gap: 8px;
  font: 800 1rem/1 'Rajdhani', sans-serif;
  letter-spacing: 1px; text-transform: uppercase;
  color: #fff !important; text-decoration: none;
  background: linear-gradient(135deg, #E91E63, #8B2FE0 55%, #22D3EE);
  padding: 14px 28px; border-radius: 999px;
  box-shadow: 0 8px 28px rgba(139,47,224,0.45);
  transition: transform .2s ease, box-shadow .2s ease;
}
.news-trailer-btn:hover {
  transform: translateY(-2px) scale(1.03);
  box-shadow: 0 12px 38px rgba(233,30,99,0.55);
}

/* Editor curated: due campi affiancati */
.news-field-row { display: flex; gap: 16px; flex-wrap: wrap; }
.news-field-row .news-field { flex: 1 1 220px; }
.news-curated-editor { margin-top: 48px; padding-top: 32px; border-top: 1px dashed rgba(168,85,247,0.3); }

/* ============================================================
   PREMIUM DETAILS PACK — dettagli da sito di lusso, zero JS
   ============================================================ */

/* Scrollbar brand (webkit) + Firefox */
html { scrollbar-color: #8B2FE0 #0c0c12; scrollbar-width: thin; }
::-webkit-scrollbar { width: 11px; height: 11px; }
::-webkit-scrollbar-track { background: #0c0c12; }
::-webkit-scrollbar-thumb {
  background: linear-gradient(180deg, #8B2FE0, #E91E63);
  border-radius: 8px;
  border: 2px solid #0c0c12;
}
::-webkit-scrollbar-thumb:hover { background: linear-gradient(180deg, #A855F7, #ff2d78); }

/* Selezione testo in brand */
::selection { background: rgba(233,30,99,0.55); color: #fff; }

/* Focus tastiera elegante (accessibilità con stile) */
:focus-visible {
  outline: 2px solid var(--cyan, #22D3EE);
  outline-offset: 3px;
  border-radius: 4px;
}

/* Navbar in vetro: blur + saturazione quando sovrapposta al contenuto */
.navbar {
  backdrop-filter: blur(14px) saturate(1.3);
  -webkit-backdrop-filter: blur(14px) saturate(1.3);
  background-color: rgba(10, 10, 14, 0.72);
  border-bottom: 1px solid rgba(168, 85, 247, 0.14);
}

/* Link nei corpi articolo: sottolineatura animata a gradiente */
.news-single-body a,
.storia-panel-text a {
  color: var(--cyan, #22D3EE);
  text-decoration: none;
  background-image: linear-gradient(90deg, #8B2FE0, #E91E63);
  background-repeat: no-repeat;
  background-position: 0 100%;
  background-size: 0% 2px;
  transition: background-size .3s ease;
  padding-bottom: 2px;
}
.news-single-body a:hover,
.storia-panel-text a:hover { background-size: 100% 2px; }

/* Immagini card: micro-fade all'arrivo (niente pop) */
.news-card-cover img { transition: opacity .3s ease, transform .35s ease; }

/* Titoli sezione: linea gradiente sotto, tocco editoriale */
.home-section-title::after,
.news-related-title::after {
  content: '';
  display: block;
  width: 64px; height: 3px;
  margin-top: 10px;
  border-radius: 2px;
  background: linear-gradient(90deg, #8B2FE0, #E91E63 60%, transparent);
}

/* ============================================================
   ATMOSFERA — un solo sistema di background, cinematografico
   ------------------------------------------------------------
   Sostituisce: puntini ripetuti (.web-bg), ragnatela rotante,
   particelle fluttuanti, righe coniche rotanti. Tre glow enormi
   e sfocati che derivano lentissimi + grana fine anti-banding
   + vignette. Tutto GPU (solo transform), quasi impercettibile:
   si SENTE più di quanto si veda.
   ============================================================ */

/* Il layer fisso globale: da pattern di puntini → aurora */
.web-bg {
  opacity: 1;
  background-image: none;
  background-size: auto;
  overflow: hidden;
}
.web-bg::before {
  content: '';
  position: absolute;
  inset: -25%;
  background:
    radial-gradient(48% 38% at 82% 6%,  rgba(139, 47, 224, 0.04), transparent 70%),
    radial-gradient(42% 40% at 4% 46%,  rgba(233, 30, 99, 0.024),  transparent 70%),
    radial-gradient(50% 42% at 68% 102%, rgba(34, 211, 238, 0.02), transparent 70%);
  animation: sssAurora 90s ease-in-out infinite alternate;
  will-change: transform;
}
@keyframes sssAurora {
  0%   { transform: translate3d(0, 0, 0) scale(1); }
  50%  { transform: translate3d(-2.5%, 1.8%, 0) scale(1.06); }
  100% { transform: translate3d(2%, -1.5%, 0) scale(1.02); }
}
/* Grana fine (uccide il banding dei gradienti) + vignette cinematografica */
.web-bg::after {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse 120% 90% at 50% 38%, transparent 48%, rgba(0, 0, 0, 0.62) 100%),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E");
  background-size: cover, 160px 160px;
  /* ⚠️ la grana è rumore CHIARO: sopra ~0.2 diventa un velo grigio che schiarisce tutto il sito */
  opacity: 0.12;
}

/* Base ancora più nera (riferimento film: il portale è luce, la scena è quasi nero puro) */
body { background: #040406; }
.web-bg { background-color: #040406; }

/* Hero: la ragnatela non ruota più — respira (identità senza carosello) */
.hero-web {
  animation: sssWebBreath 16s ease-in-out infinite;
  opacity: 0.75;
}
@keyframes sssWebBreath {
  0%, 100% { transform: scale(1); }
  50%      { transform: scale(1.045); }
}

/* Particelle fluttuanti: eliminate (rumore, non atmosfera) */
.hero-particle { display: none; }

/* Righe coniche rotanti dietro i titoli di pagina → alone statico morbido */
.sv-actionlines::after {
  animation: none;
  background: radial-gradient(60% 100% at 50% 0%, rgba(139, 47, 224, 0.10), transparent 72%);
  -webkit-mask-image: none;
          mask-image: none;
  inset: 0;
}

/* Halftone: da texture invadente a velo appena percettibile */
.sv-halftone::before { opacity: 0.10; }

/* Rispetto per chi preferisce meno movimento */
@media (prefers-reduced-motion: reduce) {
  .web-bg::before, .hero-web { animation: none !important; }
}

/* ============================================================
   PORTALE MULTIVERSALE — centerpiece Spider-Verse dell'hero
   ------------------------------------------------------------
   Anelli spezzati che ruotano a velocità e direzioni diverse
   (come il collisore), nucleo che pulsa, esagono in contro-
   rotazione, frammenti dimensionali. Solo transform = GPU.
   ============================================================ */
/* Il portale vive DENTRO .hero-main → sempre centrato sulle scritte,
   con o senza colonna video, a ogni larghezza schermo. */
.hero-main { position: relative; }
.hero-main > *:not(.portal-stage) { position: relative; z-index: 1; }

.portal-stage {
  position: absolute;
  top: 50%; left: 50%;
  width: min(135vmin, 1250px);
  height: auto;
  aspect-ratio: 1 / 1;
  transform: translate(-50%, -50%);
  z-index: 0;
  pointer-events: none;
}

/* La nuvola magenta BOLLE: ogni blob oscilla e respira a ritmo diverso */
.portal-stage .p-aura {
  transform-box: view-box;
  transform-origin: 50% 50%;
  will-change: transform;
}
.portal-stage .p-aura1 { animation: sssAuraBoil1 16s ease-in-out infinite alternate; }
.portal-stage .p-aura2 { animation: sssAuraBoil2 21s ease-in-out infinite alternate; }
.portal-stage .p-aura3 { animation: sssAuraBoil3 12s ease-in-out infinite alternate; }
@keyframes sssAuraBoil1 { from { transform: rotate(-2.4deg) scale(1); }    to { transform: rotate(2deg)    scale(1.05); } }
@keyframes sssAuraBoil2 { from { transform: rotate(2.2deg)  scale(1.04); } to { transform: rotate(-1.8deg) scale(0.99); } }
@keyframes sssAuraBoil3 { from { transform: rotate(-1.5deg) scale(1.02); } to { transform: rotate(2.6deg)  scale(1.06); } }

/* Il tunnel respira; la sua luce oscilla come una fiamma */
.portal-stage .p-tunnel {
  transform-box: view-box;
  transform-origin: 50% 50%;
  animation: sssTunnelBreath 5.6s ease-in-out infinite;
}
@keyframes sssTunnelBreath {
  0%, 100% { transform: scale(1);     opacity: 1; }
  50%      { transform: scale(1.014); opacity: 0.9; }
}
.portal-stage .p-core {
  animation: sssCoreFlicker 4.2s ease-in-out infinite;
}
@keyframes sssCoreFlicker {
  0%, 100% { opacity: 1; }
  38%      { opacity: 0.75; }
  62%      { opacity: 0.92; }
}

/* L'ENERGIA circola nel tunnel */
.portal-stage .p-flow {
  transform-box: view-box;
  transform-origin: 50% 50%;
  will-change: transform;
  animation: sssPortalSpin 30s linear infinite;
}
@keyframes sssPortalSpin { to { transform: rotate(360deg); } }

/* Scarabocchi e pulviscolo: tremolano piano nella nuvola */
.portal-stage .p-scribbles { animation: sssCoreFlicker 3.1s ease-in-out infinite; }
.portal-stage .p-speckles  { animation: sssCoreFlicker 5.3s ease-in-out infinite reverse; }

/* Eco energetiche: partono dal rim e si dissolvono espandendosi */
.portal-stage .p-echo {
  transform-box: view-box;
  transform-origin: 50% 50%;
  opacity: 0;
  animation: sssEcho 5.2s ease-out infinite;
}
.portal-stage .p-echo2 { animation-delay: 2.6s; }
@keyframes sssEcho {
  0%   { transform: scale(0.99); opacity: 0; }
  12%  { opacity: 0.42; }
  100% { transform: scale(1.17); opacity: 0; }
}

/* Scintille ai vertici: lampeggiano sfalsate, energia instabile */
.portal-stage .p-sparks circle { opacity: 0.15; animation: sssSpark 3.4s ease-in-out infinite; }
.portal-stage .p-sparks .sp2 { animation-delay: 0.5s; }
.portal-stage .p-sparks .sp3 { animation-delay: 1.1s; }
.portal-stage .p-sparks .sp4 { animation-delay: 1.7s; }
.portal-stage .p-sparks .sp5 { animation-delay: 2.2s; }
.portal-stage .p-sparks .sp6 { animation-delay: 2.9s; }
@keyframes sssSpark {
  0%, 100% { opacity: 0.15; }
  50%      { opacity: 0.95; }
}

/* Full immersion: il contenuto è "davanti al portale" → luce calda addosso,
   ma ombra scura decisa sotto per staccare dal tunnel luminoso */
.hero-logo img {
  filter: drop-shadow(0 0 26px rgba(245, 158, 11, 0.35)) drop-shadow(0 4px 14px rgba(0, 0, 0, 0.6));
}
.hero .hero-title {
  text-shadow:
    0 0 52px rgba(245, 158, 11, 0.22),
    0 3px 8px rgba(0, 0, 0, 0.9),
    0 6px 30px rgba(0, 0, 0, 0.8);
}
.hero .hero-subtitle,
.hero .hero-tagline {
  text-shadow: 0 2px 8px rgba(0, 0, 0, 0.9), 0 4px 22px rgba(0, 0, 0, 0.7);
}

/* ---- Ben-Day angolari sull'hero: stampa fuori registro ----
   magenta in alto a destra, ciano in basso a sinistra, mascherati
   ai soli angoli. È LA texture Spider-Verse, usata con misura. */
.hero-bg::before {
  content: '';
  position: absolute; inset: 0;
  pointer-events: none;
  background-image: radial-gradient(rgba(233, 30, 99, 0.5) 1.2px, transparent 1.6px);
  background-size: 14px 14px;
  -webkit-mask-image: radial-gradient(46% 52% at 88% 8%, #000 0%, transparent 78%);
          mask-image: radial-gradient(46% 52% at 88% 8%, #000 0%, transparent 78%);
  opacity: 0.18;
}
.hero-bg::after {
  content: '';
  position: absolute; inset: 0;
  pointer-events: none;
  background-image: radial-gradient(rgba(34, 211, 238, 0.5) 1.2px, transparent 1.6px);
  background-size: 12px 12px;
  background-position: 4px 7px;
  -webkit-mask-image: radial-gradient(48% 56% at 8% 94%, #000 0%, transparent 78%);
          mask-image: radial-gradient(48% 56% at 8% 94%, #000 0%, transparent 78%);
  opacity: 0.16;
}

/* ---- Page hero interni: angolo Ben-Day, coerenza col portale ---- */
.sv-page-hero { position: relative; overflow: hidden; }
.sv-page-hero::before {
  content: '';
  position: absolute; inset: 0;
  pointer-events: none; z-index: 0;
  background-image: radial-gradient(rgba(233, 30, 99, 0.45) 1.2px, transparent 1.6px);
  background-size: 13px 13px;
  -webkit-mask-image: radial-gradient(52% 85% at 90% 0%, #000 0%, transparent 75%);
          mask-image: radial-gradient(52% 85% at 90% 0%, #000 0%, transparent 75%);
  opacity: 0.16;
}

@media (prefers-reduced-motion: reduce) {
  .portal-stage .p-flow, .portal-stage .p-tunnel, .portal-stage .p-aura,
  .portal-stage .p-core, .portal-stage .p-scribbles, .portal-stage .p-speckles,
  .portal-stage .p-echo, .portal-stage .p-sparks circle { animation: none !important; }
  .portal-stage .p-echo { opacity: 0.2; }
}

/* ============================================================
   PERF MOBILE — vivo ma leggero
   ------------------------------------------------------------
   Il VERO killer su GPU mobile sono i blob magenta con blur SVG
   ANIMATI (ogni frame ricompone texture enormi) e il backdrop-
   filter della navbar. Quelli restano statici/spenti. Le
   animazioni transform/opacity su tratti semplici (eco, flow,
   flicker, respiro, scintille) sono composite GPU ≈ gratis e
   restano ACCESE: il portale vive anche su telefono.
   L'intro rift resta disattivata a monte (functions.php).
   ============================================================ */
@media (max-width: 820px), (pointer: coarse) {
  .navbar {
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    background-color: rgba(8, 8, 12, 0.96);
  }
  /* SOLO i layer sfocati fermi (texture giganti = lag) */
  .portal-stage .p-aura,
  .portal-stage .p-scribbles,
  .portal-stage .p-speckles { animation: none !important; }
  .portal-stage .p-aura { will-change: auto; }
  /* una sola eco su mobile (la seconda raddoppia i layer compositi) */
  .portal-stage .p-echo2 { animation: none !important; opacity: 0; }
  /* portale un filo più compatto = meno memoria texture */
  .portal-stage { width: min(118vmin, 720px); }
  .web-bg::before { animation: none !important; will-change: auto; }
  .hero-web { animation: none !important; }
}

/* ============================================================
   Social button nell'hero: leggibili SOPRA il portale
   (vetro scuro pieno + bordo netto + icone dorate come il rim)
   ============================================================ */
.hero .social-btn {
  background: rgba(8, 8, 12, 0.78);
  border: 1px solid rgba(255, 255, 255, 0.22);
  box-shadow: 0 6px 22px rgba(0, 0, 0, 0.55);
  text-shadow: 0 1px 4px rgba(0, 0, 0, 0.85);
}
.hero .social-btn svg {
  fill: #FFC24D;
  filter: drop-shadow(0 1px 3px rgba(0, 0, 0, 0.6));
}
.hero .social-btn:hover {
  background: var(--red);
  border-color: var(--red);
  box-shadow: 0 10px 30px rgba(139, 47, 224, 0.45);
}
.hero .social-btn:hover svg { fill: #fff; }

/* ============================================================
   Hero con video (desktop): video più vicino al testo + portale
   grande che ABBRACCIA tutto il blocco (logo→CTA); lo sbordo
   destro finisce dietro al video, che è opaco e lo copre.
   ============================================================ */
@media (min-width: 821px) {
  .hero.hero-with-video { gap: 32px; }
  .hero.hero-with-video .hero-video-side { margin-left: -14px; }
  .hero.hero-with-video .portal-stage { width: min(92vmin, 940px); }
}

/* ============================================================
   SET DRESSING hero (desktop largo): frammenti dimensionali,
   glitch bar, etichette TERRA-XXXX. Solo transform/opacity.
   ============================================================ */
.hero-deco {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  display: none;
}
@media (min-width: 1100px) {
  .hero-deco { display: block; }
}
.hero-deco .deco-float {
  transform-box: fill-box;
  transform-origin: center;
  animation: sssDecoFloat 11s ease-in-out infinite;
}
.hero-deco .df2 { animation-duration: 14s; animation-delay: 1.2s; }
.hero-deco .df3 { animation-duration: 9s;  animation-delay: 2.4s; }
.hero-deco .df4 { animation-duration: 13s; animation-delay: 0.6s; }
.hero-deco .df5 { animation-duration: 12s; animation-delay: 1.8s; }
.hero-deco .df6 { animation-duration: 10s; animation-delay: 3s; }
.hero-deco .df7 { animation-duration: 15s; animation-delay: 0.9s; }
@keyframes sssDecoFloat {
  0%, 100% { transform: translateY(0) rotate(0deg); }
  50%      { transform: translateY(-14px) rotate(3deg); }
}
/* i due esagoni tratteggiati grandi derivano lentissimi */
.hero-deco .df1, .hero-deco .df5 { animation-name: sssDecoDrift; }
@keyframes sssDecoDrift {
  0%, 100% { transform: translateY(0) rotate(0deg); }
  50%      { transform: translateY(-10px) rotate(14deg); }
}
/* glitch bar: scattano come segnale disturbato */
.hero-deco .deco-glitch { animation: sssDecoGlitch 4.6s steps(1) infinite; }
.hero-deco .dg2 { animation-delay: 2.1s; }
@keyframes sssDecoGlitch {
  0%, 100% { opacity: 1; transform: translateX(0); }
  6%       { opacity: 0.3; transform: translateX(5px); }
  9%       { opacity: 1; transform: translateX(-3px); }
  12%      { opacity: 1; transform: translateX(0); }
  54%      { opacity: 0.4; transform: translateX(-6px); }
  57%      { opacity: 1; transform: translateX(0); }
}
/* etichette dimensionali: flicker da insegna */
.hero-deco .deco-label { animation: sssDecoLabel 7s ease-in-out infinite; }
.hero-deco .dl2 { animation-delay: 2.8s; }
.hero-deco .dl3 { animation-delay: 4.4s; }
@keyframes sssDecoLabel {
  0%, 100% { opacity: 0.55; }
  8%       { opacity: 0.2; }
  11%      { opacity: 0.55; }
  60%      { opacity: 0.38; }
}
@media (prefers-reduced-motion: reduce) {
  .hero-deco .deco-float, .hero-deco .deco-glitch, .hero-deco .deco-label { animation: none !important; }
}
/* ============================================================
   SOCIETY TRACKER — dove trovarci nei cinema (stile Spidey Tracker)
   ============================================================ */
.tracker-section {
  max-width: 1180px;
  margin: 0 auto;
  padding: clamp(48px, 7vw, 90px) clamp(18px, 4vw, 40px) 30px;
}
.tracker-head { text-align: center; margin-bottom: 38px; }
.tracker-head .home-section-title::after { margin-left: auto; margin-right: auto; }
.tracker-eyebrow {
  display: inline-flex; align-items: center; gap: 9px;
  font: 700 0.74rem/1 'Rajdhani', sans-serif;
  letter-spacing: 4px; text-transform: uppercase;
  color: #FFC24D;
  border: 1px solid rgba(245, 158, 11, 0.45);
  background: rgba(245, 158, 11, 0.08);
  padding: 8px 16px; border-radius: 999px;
  margin-bottom: 16px;
}
.tracker-dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: #FFC24D;
  box-shadow: 0 0 10px #F59E0B;
  animation: sssTrackerDot 1.6s ease-in-out infinite;
}
@keyframes sssTrackerDot { 0%,100% { opacity: 1; } 50% { opacity: 0.25; } }
.tracker-sub { color: rgba(245,245,245,0.72); max-width: 560px; margin: 14px auto 0; line-height: 1.6; }

.tracker-grid {
  display: grid;
  grid-template-columns: minmax(300px, 420px) 1fr;
  gap: clamp(24px, 4vw, 56px);
  align-items: center;
}
@media (max-width: 900px) {
  .tracker-grid { grid-template-columns: 1fr; }
  .tracker-map { max-width: 340px; margin: 0 auto; }
}

/* ---- Mappa Italia ---- */
.tracker-map-svg { width: 100%; height: auto; display: block; }
.tm-land {
  fill: rgba(139, 47, 224, 0.07);
  stroke: url(#tmStroke);
  stroke-width: 1.6;
  stroke-linejoin: round;
  opacity: 0.85;
}
.tm-hex {
  fill: #F59E0B;
  stroke: #FFE9A8;
  stroke-width: 1.2;
  filter: drop-shadow(0 0 8px rgba(245, 158, 11, 0.8));
}
.tm-ping {
  fill: none;
  stroke: #FFC24D;
  stroke-width: 1.6;
  opacity: 0;
  transform-box: fill-box;
  transform-origin: center;
  animation: sssTrackerPing 2.8s ease-out infinite;
}
.tm-ping2 { animation-delay: 1.4s; }
@keyframes sssTrackerPing {
  0%   { transform: scale(0.5); opacity: 0.9; }
  100% { transform: scale(3.2); opacity: 0; }
}
.tm-label {
  fill: #fff;
  font: 700 15px 'Rajdhani', sans-serif;
  letter-spacing: 2px;
  paint-order: stroke;
  stroke: rgba(4, 4, 6, 0.9);
  stroke-width: 4px;
}

/* ---- Card tappa ---- */
.tracker-stops { display: flex; flex-direction: column; gap: 20px; }
.tracker-card {
  display: grid;
  grid-template-columns: 96px 1fr;
  border-radius: 16px;
  overflow: hidden;
  background: linear-gradient(135deg, rgba(245, 158, 11, 0.09), rgba(139, 47, 224, 0.06));
  border: 1px solid rgba(245, 158, 11, 0.35);
  transition: transform .25s ease, border-color .25s ease, box-shadow .25s ease;
}
.tracker-card:hover {
  transform: translateY(-4px);
  border-color: rgba(245, 158, 11, 0.7);
  box-shadow: 0 14px 40px rgba(245, 158, 11, 0.18);
}
.tracker-date {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 2px; padding: 18px 10px;
  background: rgba(245, 158, 11, 0.12);
  border-right: 1px dashed rgba(245, 158, 11, 0.4);
}
.tracker-day {
  font-family: 'Bebas Neue', 'Oswald', sans-serif;
  font-size: 2.6rem; line-height: 0.9; color: #FFC24D;
  text-shadow: 0 0 18px rgba(245, 158, 11, 0.5);
}
.tracker-month { font: 700 1rem/1 'Rajdhani', sans-serif; letter-spacing: 3px; color: #fff; }
.tracker-year { font: 600 0.78rem/1 'Rajdhani', sans-serif; color: rgba(245,245,245,0.55); letter-spacing: 2px; }
.tracker-body { padding: 18px 22px; }
.tracker-topline { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.tracker-venue {
  margin: 0;
  font-family: 'Bebas Neue', 'Oswald', sans-serif;
  font-size: 1.55rem; letter-spacing: 1.5px; color: #fff;
}
.tracker-status {
  font: 800 0.66rem/1 'Rajdhani', sans-serif;
  letter-spacing: 2px; padding: 5px 11px; border-radius: 999px;
}
.tracker-status-confermato { color: #4ade80; border: 1px solid rgba(74, 222, 128, 0.5); background: rgba(74, 222, 128, 0.1); }
.tracker-status-in_arrivo, .tracker-status-tba { color: #FFC24D; border: 1px solid rgba(245, 158, 11, 0.5); background: rgba(245, 158, 11, 0.1); }
.tracker-city { margin: 6px 0 10px; color: rgba(245,245,245,0.8); font-weight: 600; letter-spacing: 0.5px; }
.tracker-row { margin: 4px 0; color: rgba(245,245,245,0.75); line-height: 1.55; font-size: 0.95rem; }
.tracker-actions { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 14px; }
.tracker-btn {
  display: inline-flex; align-items: center; gap: 6px;
  font: 700 0.8rem/1 'Rajdhani', sans-serif;
  letter-spacing: 1.5px; text-transform: uppercase;
  padding: 10px 18px; border-radius: 999px; text-decoration: none;
  transition: transform .2s ease, box-shadow .2s ease, background .2s ease;
}
.tracker-btn-primary {
  color: #0A0A0A; background: linear-gradient(135deg, #FFC24D, #F59E0B);
  box-shadow: 0 6px 20px rgba(245, 158, 11, 0.35);
}
.tracker-btn-primary:hover { transform: translateY(-2px); box-shadow: 0 10px 28px rgba(245, 158, 11, 0.5); }
.tracker-btn-ghost {
  color: #FFC24D; border: 1px solid rgba(245, 158, 11, 0.45); background: rgba(245, 158, 11, 0.06);
}
.tracker-btn-ghost:hover { background: rgba(245, 158, 11, 0.16); transform: translateY(-2px); }
.tracker-more {
  text-align: center; color: rgba(245,245,245,0.45);
  font: 600 0.85rem/1 'Rajdhani', sans-serif; letter-spacing: 2px; text-transform: uppercase;
  margin-top: 6px;
}
@media (max-width: 520px) {
  .tracker-card { grid-template-columns: 80px 1fr; }
  .tracker-day { font-size: 2.1rem; }
  .tracker-body { padding: 14px 16px; }
}
@media (prefers-reduced-motion: reduce) {
  .tm-ping, .tracker-dot { animation: none !important; }
  .tm-ping1 { opacity: 0.3; }
}

/* ---- Bottone TRACKER in navbar (in risalto, temporaneo per il tour) ---- */
.nav-links .nav-tracker {
  display: inline-flex; align-items: center; gap: 7px;
  color: #FFC24D !important;
  border: 1px solid rgba(245, 158, 11, 0.5);
  background: rgba(245, 158, 11, 0.08);
  border-radius: 999px;
  padding: 7px 14px !important;
  font-weight: 700;
}
.nav-links .nav-tracker:hover,
.nav-links .nav-tracker.active {
  background: rgba(245, 158, 11, 0.18);
  border-color: #F59E0B;
  box-shadow: 0 0 16px rgba(245, 158, 11, 0.25);
}
.nav-links .nav-tracker .tracker-dot { width: 7px; height: 7px; }

/* ---- Pagina /society-tracker/: respiro sotto l'hero band ---- */
.tracker-page { padding-top: 20px; }
.sv-page-hero .tracker-dot { display: inline-block; vertical-align: middle; }

/* ---- Mappa Italia reale + pin overlay ---- */
.tracker-map { position: relative; }
.tracker-map-img {
  width: 100%; height: auto; display: block;
  filter: drop-shadow(0 0 26px rgba(139, 47, 224, 0.22));
}
.tm2-pin {
  position: absolute;
  transform: translate(-50%, -50%);
  display: block;
  z-index: 2;
}
.tm2-hex {
  display: block;
  width: 16px; height: 18px;
  background: linear-gradient(135deg, #FFC24D, #F59E0B);
  clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
  filter: drop-shadow(0 0 8px rgba(245, 158, 11, 0.9));
  position: relative;
}
.tm2-pin::before, .tm2-pin::after {
  content: '';
  position: absolute;
  top: 50%; left: 50%;
  width: 20px; height: 20px;
  margin: -10px 0 0 -10px;
  border: 1.6px solid #FFC24D;
  border-radius: 50%;
  opacity: 0;
  animation: sssTrackerPing 2.8s ease-out infinite;
}
.tm2-pin::after { animation-delay: 1.4s; }
.tm2-label {
  position: absolute;
  left: 22px; top: 50%;
  transform: translateY(-50%);
  white-space: nowrap;
  color: #fff;
  font: 700 0.82rem/1 'Rajdhani', sans-serif;
  letter-spacing: 2px;
  text-shadow: 0 1px 4px rgba(0, 0, 0, 0.95), 0 0 12px rgba(0, 0, 0, 0.8);
}

/* ---- Navbar: bottone Tracker allineato alle altre voci ---- */
.nav-links { align-items: center; }
.nav-links li { display: flex; align-items: center; }

/* ---- Mobile: bottone SOCIETY TRACKER in home (a colpo d'occhio) ---- */
.hero-tracker-btn { display: none; }
@media (max-width: 820px) {
  .hero-tracker-btn {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    margin-top: 14px;
    color: #0A0A0A !important;
    background: linear-gradient(135deg, #FFC24D, #F59E0B);
    box-shadow: 0 8px 26px rgba(245, 158, 11, 0.4);
    border: none;
  }
  .hero-tracker-btn .tracker-dot { background: #0A0A0A; box-shadow: none; }
}

/* ---- Tracker v2: mappa protagonista, info al tap/hover ---- */
.tracker-hint {
  text-align: center;
  color: rgba(245, 245, 245, 0.55);
  font: 600 0.88rem/1.4 'Rajdhani', sans-serif;
  letter-spacing: 1.5px; text-transform: uppercase;
  margin: 0 auto 22px;
}
.tracker-page .tracker-map {
  max-width: 460px;
  margin: 0 auto;
}
.tm2-pin {
  border: none; background: none; padding: 8px; margin: -8px;
  cursor: pointer;
}
.tm2-pin .tm2-label {
  opacity: 0;
  transition: opacity .2s ease;
  pointer-events: none;
}
.tm2-pin:hover .tm2-label,
.tm2-pin.active .tm2-label { opacity: 1; }
.tm2-pin.active .tm2-hex {
  transform: scale(1.35);
  filter: drop-shadow(0 0 12px rgba(245, 158, 11, 1));
}
.tm2-hex { transition: transform .2s ease, filter .2s ease; }
.tracker-detail {
  max-width: 640px;
  margin: 26px auto 10px;
  opacity: 0;
  transform: translateY(8px);
  transition: opacity .3s ease, transform .3s ease;
  min-height: 120px;
}
.tracker-detail.open { opacity: 1; transform: translateY(0); }
@media (max-width: 600px) {
  .tracker-page .tracker-map { max-width: 330px; }
}

/* ---- Mobile: chip Tracker discreto in cima all'hero (non un bottone gigante) ---- */
@media (max-width: 820px) {
  .hero-tracker-btn {
    position: absolute;
    top: 12px; left: 50%;
    transform: translateX(-50%);
    z-index: 6;
    margin: 0;
    padding: 7px 15px;
    font-size: 0.7rem;
    letter-spacing: 2px;
    color: #FFC24D !important;
    background: rgba(8, 8, 12, 0.72);
    border: 1px solid rgba(245, 158, 11, 0.5);
    border-radius: 999px;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.45);
    white-space: nowrap;
  }
  .hero-tracker-btn .tracker-dot { background: #FFC24D; box-shadow: 0 0 8px #F59E0B; }
}

/* ---- Tracker v3: zoom mappa + cluster per città ---- */
.tracker-page .tracker-map { max-width: 600px; }
@media (max-width: 600px) {
  .tracker-page .tracker-map { max-width: 94vw; margin: 0 auto; }
}
.tracker-zone-title {
  text-align: center;
  color: #FFC24D;
  font: 700 0.82rem/1 'Rajdhani', sans-serif;
  letter-spacing: 3px;
  margin: 2px 0 12px;
}

/* ---- Popover: le info escono ACCANTO al pin premuto ---- */
.tracker-pop {
  position: absolute;
  z-index: 10;
  width: min(320px, 76vw);
  max-height: 76%;
  overflow-y: auto;
  transform: translateY(-50%);
  background: rgba(8, 8, 12, 0.97);
  border: 1px solid rgba(245, 158, 11, 0.5);
  border-radius: 14px;
  padding: 26px 12px 12px;
  box-shadow: 0 18px 50px rgba(0, 0, 0, 0.65);
  opacity: 0;
  transition: opacity .18s ease;
  scrollbar-width: thin;
}
.tracker-pop.open { opacity: 1; }
.tracker-pop.from-left { margin-left: 24px; }
.tracker-pop.from-right { margin-right: 24px; }
.tracker-pop-close {
  position: absolute;
  top: 4px; right: 8px;
  width: 26px; height: 26px;
  border: none; background: none;
  color: rgba(255, 255, 255, 0.6);
  font-size: 20px; line-height: 1;
  cursor: pointer;
}
.tracker-pop-close:hover { color: #fff; }
/* Card compatte dentro il popover */
.tracker-pop .tracker-card { grid-template-columns: 58px 1fr; }
.tracker-pop .tracker-card + .tracker-card { margin-top: 10px; }
.tracker-pop .tracker-date { padding: 10px 6px; }
.tracker-pop .tracker-day { font-size: 1.7rem; }
.tracker-pop .tracker-month { font-size: 0.82rem; }
.tracker-pop .tracker-body { padding: 12px 14px; }
.tracker-pop .tracker-venue { font-size: 1.12rem; }
.tracker-pop .tracker-city { margin: 4px 0 8px; font-size: 0.86rem; }
.tracker-pop .tracker-row { font-size: 0.83rem; margin: 3px 0; }
.tracker-pop .tracker-status { font-size: 0.58rem; padding: 4px 8px; }
.tracker-pop .tracker-actions { margin-top: 10px; gap: 8px; }
.tracker-pop .tracker-btn { padding: 8px 14px; font-size: 0.72rem; }

/* ---- SOCIETY TOUR: targa angolare mobile sopra il logo ----
   Niente .cta-btn (il magnetic di spider-verse.js lo spostava),
   in flusso dentro hero-main (niente overlap col logo),
   grafica a targa tagliata: diversa dalle solite pill. */
.hero-bg { pointer-events: none; }
.hero-tour-tag { display: none; }
@media (max-width: 820px) {
  .hero-tour-tag {
    position: relative;
    z-index: 6;
    display: inline-flex;
    align-items: center;
    gap: 9px;
    margin: 0 auto 22px;
    padding: 11px 26px;
    font: 800 0.72rem/1 'Rajdhani', sans-serif;
    letter-spacing: 2.5px;
    text-transform: uppercase;
    text-decoration: none;
    color: #FFD37A;
    background: linear-gradient(135deg, #FFC24D, #E9691E 55%, #E91E63);
    clip-path: polygon(14px 0, 100% 0, calc(100% - 14px) 100%, 0 100%);
    -webkit-tap-highlight-color: transparent;
  }
  /* interno scuro: lascia visibile solo il bordo sfumato della targa */
  .hero-tour-tag::before {
    content: '';
    position: absolute;
    inset: 1.6px;
    background: rgba(6, 6, 8, 0.93);
    clip-path: polygon(13px 0, 100% 0, calc(100% - 13px) 100%, 0 100%);
  }
  .hero-tour-tag svg,
  .hero-tour-tag span { position: relative; z-index: 1; }
  .hero-tour-tag svg { color: #FFC24D; filter: drop-shadow(0 0 6px rgba(245, 158, 11, 0.8)); }
  .hero-tour-tag:active { transform: scale(0.97); }
}

/* ---- Targa SOCIETY TOUR: affordance da bottone (glow, sweep, freccia) ---- */
@media (max-width: 820px) {
  .hero-tour-tag {
    overflow: hidden;
    /* il glow segue la forma tagliata (drop-shadow post clip-path) */
    filter: drop-shadow(0 0 10px rgba(245, 158, 11, 0.35));
    animation: sssTourPulse 2.6s ease-in-out infinite;
  }
  @keyframes sssTourPulse {
    0%, 100% { filter: drop-shadow(0 0 8px rgba(245, 158, 11, 0.3)); }
    50%      { filter: drop-shadow(0 0 18px rgba(245, 158, 11, 0.65)); }
  }
  /* sweep di luce periodico sopra l'interno scuro */
  .hero-tour-tag::after {
    content: '';
    position: absolute;
    top: 0; left: -80%;
    width: 55%; height: 100%;
    background: linear-gradient(100deg, transparent, rgba(255, 226, 150, 0.22), transparent);
    animation: sssTourSheen 3.4s ease-in-out infinite;
    pointer-events: none;
  }
  @keyframes sssTourSheen {
    0%, 55%  { left: -80%; }
    85%, 100% { left: 130%; }
  }
  /* freccia che spinge verso il tracker */
  .htt-go {
    font-size: 1rem;
    line-height: 1;
    color: #FFC24D;
    animation: sssTourGo 1.4s ease-in-out infinite;
  }
  @keyframes sssTourGo {
    0%, 100% { transform: translateX(0); opacity: 0.7; }
    50%      { transform: translateX(4px); opacity: 1; }
  }
  @media (prefers-reduced-motion: reduce) {
    .hero-tour-tag, .hero-tour-tag::after, .htt-go { animation: none !important; }
  }
}

/* ---- Tracker mobile: niente pan orizzontale + pin che si notano ---- */
html { overflow-x: hidden; }
.tracker-section { overflow-x: clip; }
@media (max-width: 820px) {
  /* solo scroll verticale sulla zona mappa (niente drag laterale) */
  .tracker-page .tracker-map { touch-action: pan-y; }
  /* popover mai più largo dello schermo */
  .tracker-pop { width: min(300px, calc(100vw - 28px)); }
  /* pin più grandi e VIVI: si capisce che si toccano */
  .tm2-hex { width: 21px; height: 23px; }
  .tm2-pin { padding: 12px; margin: -12px; }
  .tm2-pin::before, .tm2-pin::after {
    width: 28px; height: 28px;
    margin: -14px 0 0 -14px;
    border-width: 2px;
  }
  .tm2-pin .tm2-hex { animation: sssPinBreath 2.2s ease-in-out infinite; }
  @keyframes sssPinBreath {
    0%, 100% { transform: scale(1);    filter: drop-shadow(0 0 8px rgba(245, 158, 11, 0.8)); }
    50%      { transform: scale(1.22); filter: drop-shadow(0 0 14px rgba(245, 158, 11, 1)); }
  }
  .tm2-pin.active .tm2-hex { animation: none; transform: scale(1.35); }
  @media (prefers-reduced-motion: reduce) {
    .tm2-pin .tm2-hex { animation: none !important; }
  }
}

/* ---- Tracker v4.79: mappa zoomabile (bottoni + pinch + drag) ----
   Il canvas (mappa + pin) scala; i pin sono CONTRO-scalati via --tmz:
   restano della stessa dimensione mentre le distanze crescono =
   Firenze/Pontedera/Bologna si separano e si toccano senza errori. */
.tracker-page .tracker-map { max-width: 660px; } /* mappa leggermente più grande */
.tracker-map-viewport {
  position: relative;
  overflow: hidden;
  border-radius: 12px;
  touch-action: pan-y; /* scroll pagina ok finché non si zooma (poi il JS passa a none) */
}
.tracker-map-canvas {
  position: relative;
  transform-origin: 0 0;
  will-change: transform;
}
/* Contro-scala: il pin non cresce con lo zoom (tap area costante, distanze che aumentano) */
.tm2-pin { transform: translate(-50%, -50%) scale(calc(1 / var(--tmz, 1))); }
/* Da zoomati il drag sposta la mappa: cursore coerente su desktop */
.tracker-map-canvas.zoomed { cursor: grab; }
.tracker-map-canvas.zoomed:active { cursor: grabbing; }
/* Controlli zoom: pila in alto a destra, vetro scuro brand */
.tracker-zoom {
  position: absolute;
  top: 10px; right: 10px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  z-index: 6;
}
.tracker-zoom-btn {
  width: 36px; height: 36px;
  border: 1px solid rgba(245, 158, 11, 0.55);
  border-radius: 10px;
  background: rgba(8, 8, 12, 0.82);
  color: #FFC24D;
  font: 700 20px/1 'Rajdhani', sans-serif;
  cursor: pointer;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.45);
  transition: background .15s ease, transform .15s ease;
}
.tracker-zoom-btn:hover { background: rgba(245, 158, 11, 0.18); transform: scale(1.06); }
.tracker-zoom-btn:active { transform: scale(0.95); }
.tracker-zoom-reset { font-size: 16px; }
@media (max-width: 600px) {
  .tracker-zoom-btn { width: 40px; height: 40px; } /* più comodi col dito */
}

/* ==========================================================
   🛠️ v4.83 — Fix hero tagline + finiture
   ========================================================== */
/* Rotator SEQUENZIALE: la parola esce veloce, la successiva entra dopo —
   mai due frasi sovrapposte leggibili insieme (era un cross-fade da 0.55s) */
.hero-rotator-word { transition: opacity .22s ease, transform .22s ease; }
.hero-rotator-word.show { transition: opacity .5s ease, transform .5s ease; }
/* Durante il decode scramble è visibile SOLO l'overlay (niente triplo testo) */
.hero-rotator:has(.svfx-hero-scramble-on) .hero-rotator-word { opacity: 0; }
/* Play tap mobile per il video hero (il video non si scarica finché non tocchi) */
.video-play-tap {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 64px; height: 64px;
  border-radius: 50%;
  border: 1.5px solid rgba(255, 255, 255, 0.85);
  background: rgba(8, 8, 12, 0.72);
  color: #fff;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer;
  z-index: 3;
  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.55), 0 0 24px rgba(168, 85, 247, 0.35);
}
.video-play-tap svg { margin-left: 3px; }
.video-play-tap:active { transform: translate(-50%, -50%) scale(0.92); }

/* Testo solo per screen reader / crawler (il rotator è aria-hidden) */
.screen-reader-text {
  position: absolute !important;
  width: 1px; height: 1px;
  margin: -1px; padding: 0; border: 0;
  clip-path: inset(50%);
  overflow: hidden;
  white-space: nowrap;
}

/* ==========================================================
   🕸️ TRACKER v4.80 — restyle SPIDER-VERSE (solo pagina tracker)
   Scopato su .tracker-hero (banda titolo) e .tracker-page (sezione mappa)
   perché la pagina usa il template via codice e il body NON ha la classe
   page-template-page-society-tracker (è page-template-default):
   colori accesi magenta/ciano/giallo, retino Ben-Day, titolo con
   aberrazione cromatica, pin rosa shocking, popover a pannello comics.
   Il resto del sito NON è toccato.
   ========================================================== */

/* ---- Hero band: glow bicolore + retino a due colori ---- */
.tracker-hero {
  background:
    radial-gradient(55% 90% at 18% 0%, rgba(233, 30, 99, 0.30), transparent 65%),
    radial-gradient(55% 90% at 82% 0%, rgba(34, 211, 238, 0.22), transparent 65%),
    radial-gradient(60% 100% at 50% 0%, rgba(139, 47, 224, 0.25), transparent 70%),
    linear-gradient(180deg, #0d0a18, var(--black));
  border-bottom: 1px solid rgba(233, 30, 99, 0.35);
}
.tracker-hero::before {
  background-image:
    radial-gradient(rgba(233, 30, 99, 0.30) 1px, transparent 1.6px),
    radial-gradient(rgba(34, 211, 238, 0.26) 1px, transparent 1.6px);
  background-size: 14px 14px, 22px 22px;
  background-position: 0 0, 7px 11px;
  opacity: 0.5;
}
/* Titolo: aberrazione cromatica in stile Spider-Verse (fuori registro ciano/magenta) */
.tracker-hero h1 {
  background: linear-gradient(135deg, #fff 30%, #FFE93C 55%, var(--magenta) 82%, var(--cyan));
  -webkit-background-clip: text; background-clip: text;
  filter:
    drop-shadow(-2px 0 0 rgba(34, 211, 238, 0.85))
    drop-shadow(2px 0 0 rgba(233, 30, 99, 0.85))
    drop-shadow(0 8px 34px rgba(233, 30, 99, 0.35));
}
/* Eyebrow LIVE: chip magenta con pallino ciano */
.tracker-hero .sv-page-hero-eyebrow {
  color: #fff;
  border: 1px solid rgba(233, 30, 99, 0.65);
  background: rgba(233, 30, 99, 0.14);
  padding: 8px 16px; border-radius: 999px;
  box-shadow: 0 0 18px rgba(233, 30, 99, 0.35);
}
.tracker-hero .tracker-dot {
  background: var(--cyan);
  box-shadow: 0 0 10px var(--cyan);
}

/* ---- Hint sopra la mappa: ciano elettrico ---- */
.tracker-page .tracker-hint {
  color: var(--cyan);
  text-shadow: 0 0 14px rgba(34, 211, 238, 0.45);
}

/* ---- Mappa: glow bicolore + patch di retino comics dietro gli angoli ---- */
.tracker-page .tracker-map-img {
  filter:
    drop-shadow(0 0 20px rgba(233, 30, 99, 0.30))
    drop-shadow(0 0 34px rgba(34, 211, 238, 0.22));
}
.tracker-page .tracker-map::before,
.tracker-page .tracker-map::after {
  content: '';
  position: absolute;
  width: 46%; height: 38%;
  pointer-events: none;
  z-index: 0;
  opacity: 0.5;
  mix-blend-mode: screen;
}
.tracker-page .tracker-map::before {
  top: -4%; left: -8%;
  background-image: radial-gradient(rgba(233, 30, 99, 0.55) 1.2px, transparent 1.8px);
  background-size: 11px 11px;
  -webkit-mask-image: radial-gradient(closest-side at 30% 30%, #000, transparent);
          mask-image: radial-gradient(closest-side at 30% 30%, #000, transparent);
}
.tracker-page .tracker-map::after {
  bottom: 2%; right: -8%;
  background-image: radial-gradient(rgba(34, 211, 238, 0.5) 1.2px, transparent 1.8px);
  background-size: 13px 13px;
  -webkit-mask-image: radial-gradient(closest-side at 70% 70%, #000, transparent);
          mask-image: radial-gradient(closest-side at 70% 70%, #000, transparent);
}

/* ---- Pin: esagono rosa shocking, ping ciano/magenta alternati ---- */
.tracker-page .tm2-hex {
  background: linear-gradient(135deg, #FF4D9D, #E91E63 55%, #C2185B);
  filter: drop-shadow(0 0 9px rgba(233, 30, 99, 0.95));
}
.tracker-page .tm2-pin::before { border-color: var(--cyan); }
.tracker-page .tm2-pin::after  { border-color: var(--magenta); }
.tracker-page .tm2-pin.active .tm2-hex {
  filter: drop-shadow(0 0 14px rgba(233, 30, 99, 1)) drop-shadow(0 0 26px rgba(34, 211, 238, 0.6));
}
.tracker-page .tm2-label {
  color: #FFE93C;
  text-shadow: 0 1px 4px rgba(0, 0, 0, 0.95), 0 0 14px rgba(0, 0, 0, 0.9);
}

/* ---- Bottoni zoom: pannellini comics con ombra fuori registro ---- */
.tracker-page .tracker-zoom-btn {
  border: 1.5px solid var(--magenta);
  color: var(--cyan);
  background: rgba(10, 6, 16, 0.9);
  box-shadow: 3px 3px 0 rgba(34, 211, 238, 0.55);
  border-radius: 8px;
}
.tracker-page .tracker-zoom-btn:hover {
  background: rgba(233, 30, 99, 0.22);
  color: #fff;
}

/* ---- Popover: pannello da fumetto (bordo netto + ombra fuori registro) ---- */
.tracker-page .tracker-pop {
  background: linear-gradient(160deg, rgba(24, 8, 24, 0.98), rgba(8, 10, 20, 0.98));
  border: 1.5px solid var(--magenta);
  border-radius: 10px;
  box-shadow:
    -5px 5px 0 rgba(34, 211, 238, 0.5),
    0 18px 50px rgba(0, 0, 0, 0.7);
}
.tracker-page .tracker-pop-close { color: var(--cyan); }
.tracker-page .tracker-pop-close:hover { color: #FFE93C; }
.tracker-page .tracker-zone-title {
  color: #FFE93C;
  text-shadow: 0 0 12px rgba(255, 233, 60, 0.4);
}
/* Card dentro il popover: data magenta con numeri gialli */
.tracker-page .tracker-card {
  background: linear-gradient(135deg, rgba(233, 30, 99, 0.14), rgba(34, 211, 238, 0.07));
  border: 1px solid rgba(233, 30, 99, 0.5);
  border-radius: 10px;
}
.tracker-page .tracker-card:hover {
  border-color: var(--cyan);
  box-shadow: 0 10px 30px rgba(34, 211, 238, 0.18);
}
.tracker-page .tracker-date {
  background: linear-gradient(180deg, rgba(233, 30, 99, 0.30), rgba(139, 47, 224, 0.22));
  border-right: 1px dashed rgba(34, 211, 238, 0.5);
}
.tracker-page .tracker-day {
  color: #FFE93C;
  text-shadow: 0 0 16px rgba(255, 233, 60, 0.55);
}
.tracker-page .tracker-month { color: var(--cyan); }
.tracker-page .tracker-status-confermato {
  color: #39FF88;
  border-color: rgba(57, 255, 136, 0.6);
  background: rgba(57, 255, 136, 0.12);
  text-shadow: 0 0 10px rgba(57, 255, 136, 0.5);
}
.tracker-page .tracker-status-in_arrivo,
.tracker-page .tracker-status-tba {
  color: #FFE93C; border-color: rgba(255, 233, 60, 0.55); background: rgba(255, 233, 60, 0.1);
}
/* Bottoni: prevendite magenta→viola, dettagli ciano */
.tracker-page .tracker-btn-primary {
  color: #fff;
  background: linear-gradient(135deg, #FF4D9D, var(--magenta) 55%, var(--red));
  box-shadow: 0 6px 20px rgba(233, 30, 99, 0.45);
}
.tracker-page .tracker-btn-primary:hover { box-shadow: 0 10px 28px rgba(233, 30, 99, 0.6); }
.tracker-page .tracker-btn-ghost {
  color: var(--cyan); border: 1px solid rgba(34, 211, 238, 0.55); background: rgba(34, 211, 238, 0.07);
}
.tracker-page .tracker-btn-ghost:hover { background: rgba(34, 211, 238, 0.18); }

/* ---- Chiusa sotto la mappa: gradiente magenta→ciano ---- */
.tracker-page .tracker-more {
  background: linear-gradient(90deg, var(--magenta), var(--cyan));
  -webkit-background-clip: text; background-clip: text;
  color: transparent;
  opacity: 0.9;
}

/* ---- Mobile: respiro del pin con glow magenta (al posto dell'ambra) ---- */
@media (max-width: 820px) {
  .tracker-page .tm2-pin .tm2-hex { animation-name: sssPinBreathSV; }
  @keyframes sssPinBreathSV {
    0%, 100% { transform: scale(1);    filter: drop-shadow(0 0 8px rgba(233, 30, 99, 0.85)); }
    50%      { transform: scale(1.22); filter: drop-shadow(0 0 15px rgba(233, 30, 99, 1)) drop-shadow(0 0 20px rgba(34, 211, 238, 0.5)); }
  }
  .tracker-page .tm2-pin.active .tm2-hex { animation: none; }
}

/* ============================================================
   👑 GOD MODE — pulsantino + dashboard riservata
   ============================================================ */
/* Pulsantino in area membri: mini, basso a destra, sopra la chat */
.god-fab {
  position: fixed;
  right: 22px;
  bottom: 96px;
  z-index: 9998;
  width: 42px; height: 42px;
  display: flex; align-items: center; justify-content: center;
  font-size: 19px;
  text-decoration: none;
  background: rgba(8, 8, 12, 0.85);
  border: 1px solid rgba(245, 158, 11, 0.55);
  border-radius: 50%;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.5), 0 0 14px rgba(245, 158, 11, 0.25);
  transition: transform .2s ease, box-shadow .2s ease;
}
.god-fab:hover { transform: scale(1.12); box-shadow: 0 8px 26px rgba(0,0,0,.6), 0 0 22px rgba(245, 158, 11, 0.5); }

.god-hero .sv-page-hero-eyebrow { color: #FFC24D; border-color: rgba(245,158,11,.5); }

.god-wrap { max-width: 1180px; margin: 0 auto; padding: 20px clamp(16px, 4vw, 40px) 70px; }

.god-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 14px;
  margin-bottom: 24px;
}
.god-stat {
  text-align: center;
  padding: 18px 10px;
  border-radius: 14px;
  background: rgba(245, 158, 11, 0.06);
  border: 1px solid rgba(245, 158, 11, 0.25);
}
.god-stat-n { display: block; font-family: 'Bebas Neue', sans-serif; font-size: 2.2rem; color: #FFC24D; line-height: 1; }
.god-stat-l { display: block; margin-top: 6px; font: 600 0.72rem/1 'Rajdhani', sans-serif; letter-spacing: 2px; text-transform: uppercase; color: rgba(245,245,245,.6); }
.god-stat-online .god-stat-n { color: #4ade80; text-shadow: 0 0 16px rgba(74, 222, 128, .5); }

.god-search {
  width: 100%;
  max-width: 380px;
  margin: 0 0 18px;
  padding: 11px 16px;
  border-radius: 10px;
  border: 1px solid rgba(255,255,255,.18);
  background: rgba(0,0,0,.35);
  color: #fff;
  font-size: 0.95rem;
}
.god-search:focus { outline: none; border-color: #FFC24D; }

.god-table-wrap {
  overflow-x: auto;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,.1);
  background: rgba(255,255,255,.02);
}
.god-table { width: 100%; border-collapse: collapse; min-width: 860px; }
.god-table th {
  position: sticky; top: 0;
  text-align: left;
  font: 700 0.7rem/1 'Rajdhani', sans-serif;
  letter-spacing: 2px; text-transform: uppercase;
  color: #FFC24D;
  background: #0c0c12;
  padding: 13px 14px;
  border-bottom: 1px solid rgba(245,158,11,.3);
  white-space: nowrap;
}
.god-table td { padding: 11px 14px; border-bottom: 1px solid rgba(255,255,255,.05); vertical-align: middle; }
.god-table tbody tr:hover { background: rgba(245,158,11,.05); }
.god-user { display: flex; align-items: center; gap: 11px; min-width: 190px; }
.god-user img, .god-avatar-ph {
  width: 34px; height: 34px; border-radius: 50%;
  object-fit: cover; flex: 0 0 auto;
  background: rgba(255,255,255,.08);
  border: 1px solid rgba(255,255,255,.15);
}
.god-user-names { display: flex; flex-direction: column; line-height: 1.25; }
.god-user-names strong { color: #fff; font-size: 0.93rem; }
.god-user-names small { color: rgba(245,245,245,.45); font-size: 0.74rem; }
.god-role { font: 700 0.78rem/1 'Rajdhani', sans-serif; letter-spacing: 1.5px; text-transform: uppercase; }
.god-num { font-size: 0.88rem; color: rgba(245,245,245,.85); white-space: nowrap; }
.god-num small { display: block; color: rgba(245,245,245,.4); font-size: 0.72rem; }
.god-num strong { color: #fff; }
.god-mai { color: rgba(245,245,245,.3); font-style: italic; font-size: 0.82rem; }
.god-dot {
  display: inline-block;
  width: 8px; height: 8px;
  border-radius: 50%;
  background: #4ade80;
  box-shadow: 0 0 8px rgba(74,222,128,.9);
  margin-left: 4px;
  vertical-align: middle;
}
.god-online-name { color: #4ade80 !important; }
.god-note { margin: 12px 4px 0; color: rgba(245,245,245,.4); font-size: 0.8rem; }

.god-feed-title {
  margin: 40px 0 14px;
  font-family: 'Bebas Neue', sans-serif;
  font-size: 1.5rem; letter-spacing: 2px; color: #FFC24D;
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
}
/* ---- Download Media Kit (god mode) ---- */
.god-mk-count {
  font-family: 'Oswald', sans-serif; font-size: .72rem; letter-spacing: 1.4px;
  color: #FFC24D; border: 1px solid rgba(255,194,77,.45);
  padding: 3px 10px; border-radius: 999px;
}
.god-mk-summary { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 14px; }
.god-mk-pill {
  background: rgba(255,194,77,.10); border: 1px solid rgba(255,194,77,.28);
  color: rgba(245,245,245,.85); border-radius: 999px;
  padding: 4px 12px; font-size: .78rem;
}
.god-mk-pill strong { color: #FFC24D; margin-left: 4px; }
.god-mk-table td small { display: block; color: rgba(245,245,245,.35); font-size: .7rem; }
.god-mk-user { color: #3FE862; text-decoration: none; font-weight: 600; }
.god-mk-user:hover { text-decoration: underline; }
.god-mk-anon { color: rgba(245,245,245,.55); }
.god-mk-dim { color: rgba(245,245,245,.35); }
.god-mk-biz { color: #3FE862; font-weight: 600; }

.god-mk-aziende, .god-mk-zone { margin: 18px 0; }
.god-mk-aziende h3, .god-mk-zone h3 {
  font-family: 'Oswald', sans-serif; font-size: .8rem; letter-spacing: 2px;
  color: rgba(245,245,245,.75); margin: 0 0 8px; text-transform: uppercase;
}
.god-mk-aziende p { color: rgba(245,245,245,.45); font-size: .78rem; margin: 0 0 10px; line-height: 1.5; }
.god-mk-azienda-pill {
  display: inline-flex; align-items: center; gap: 8px; margin: 0 7px 7px 0;
  background: rgba(63,232,98,.10); border: 1px solid rgba(63,232,98,.45);
  color: #3FE862; border-radius: 8px; padding: 7px 13px; font-size: .84rem; font-weight: 600;
}
.god-mk-azienda-pill small { color: rgba(245,245,245,.5); font-weight: 400; font-size: .72rem; }
.god-mk-azienda-pill strong {
  background: #3FE862; color: #0b0b12; border-radius: 999px;
  padding: 1px 8px; font-size: .74rem;
}
.god-mk-zona-pill {
  display: inline-flex; align-items: center; gap: 7px; margin: 0 7px 7px 0;
  background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.14);
  color: rgba(245,245,245,.85); border-radius: 999px; padding: 5px 13px; font-size: .8rem;
}
.god-mk-zona-pill strong { color: #FFC24D; }
.god-mk-zona-pill.is-scoperta { border-color: rgba(255,45,149,.55); background: rgba(255,45,149,.10); }
.god-mk-zona-pill em {
  font-style: normal; font-size: .68rem; letter-spacing: 1px;
  color: #FF2D95; text-transform: uppercase;
}
.god-feed { list-style: none; padding: 0; margin: 0; }
.god-feed li {
  padding: 10px 14px;
  border-left: 2px solid rgba(245,158,11,.4);
  margin-bottom: 6px;
  background: rgba(255,255,255,.02);
  border-radius: 0 10px 10px 0;
  color: rgba(245,245,245,.8);
  font-size: 0.9rem;
}
.god-feed-time {
  display: inline-block;
  min-width: 84px;
  color: #FFC24D;
  font: 700 0.78rem/1.4 'Rajdhani', sans-serif;
  letter-spacing: 1px;
}
.god-feed em { color: rgba(245,245,245,.4); font-style: normal; font-size: 0.8rem; }

/* ---- Tracker: elenco tappe server-side (SEO locale + accessibilità) ---- */
.tracker-list { max-width: 820px; margin: 46px auto 0; padding: 0 4px; }
.tracker-list-title {
  font-family: 'Bebas Neue', 'Oswald', sans-serif;
  font-size: clamp(1.4rem, 3vw, 2rem);
  letter-spacing: 2px;
  color: #FFC24D;
  text-align: center;
  margin: 0 0 20px;
}
.tracker-list-items { list-style: none; padding: 0; margin: 0; }
.tracker-list-item {
  display: grid;
  grid-template-columns: 82px 1fr;
  gap: 4px 16px;
  padding: 14px 16px;
  margin-bottom: 10px;
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(245, 158, 11, 0.22);
  transition: border-color .2s ease, background .2s ease;
}
.tracker-list-item:hover { border-color: rgba(245, 158, 11, 0.5); background: rgba(245, 158, 11, 0.05); }
.tli-date {
  grid-row: 1 / span 3;
  align-self: center;
  font-family: 'Bebas Neue', 'Oswald', sans-serif;
  font-size: 1.3rem;
  letter-spacing: 1px;
  color: #FFC24D;
  text-align: center;
  line-height: 1.1;
}
.tli-main { display: flex; flex-direction: column; }
.tli-main strong { color: #fff; font-size: 1.02rem; letter-spacing: .3px; }
.tli-city { color: rgba(245,245,245,.6); font-size: .86rem; }
.tli-when, .tli-film {
  grid-column: 2;
  color: rgba(245,245,245,.75);
  font-size: .86rem;
  line-height: 1.5;
}
.tli-film { color: var(--cyan, #22D3EE); }
.tracker-list-note {
  margin: 18px 0 0;
  color: rgba(245,245,245,.55);
  font-size: .9rem;
  line-height: 1.6;
  text-align: center;
}
@media (max-width: 520px) {
  .tracker-list-item { grid-template-columns: 64px 1fr; padding: 12px; }
  .tli-date { font-size: 1.1rem; }
}

/* FAQ del tracker (contenuto informativo per le ricerche "dove vedere...") */
.tracker-faq { max-width: 860px; margin: 46px auto 0; padding: 0 20px; }
.tracker-faq h3 { font-size: 1.02rem; color: #fff; margin: 22px 0 6px; }
.tracker-faq p { color: rgba(245,245,245,.72); line-height: 1.65; margin: 0; font-size: .95rem; }
.tracker-faq a { color: #FF2D95; }
/* i link ai post-evento nella lista tappe restano bianchi come il testo */
.tli-main strong a { color: inherit; text-decoration: none; border-bottom: 1px dotted rgba(255,255,255,.35); }
.tli-main strong a:hover { border-bottom-color: #E50914; color: #fff; }

/* =========================================================
   TOUR CONCLUSO (v5.02)
   ========================================================= */
.tracker-eyebrow-done { color: #F5C542 !important; border-color: rgba(245,197,66,.5) !important; }
.tracker-recap {
  display: flex; align-items: center; gap: 22px; flex-wrap: wrap;
  max-width: 860px; margin: 0 auto 26px; padding: 18px 22px;
  background: linear-gradient(135deg, rgba(245,197,66,.10), rgba(255,45,149,.08));
  border: 1.5px solid rgba(245,197,66,.4); border-radius: 14px;
}
.tracker-recap-num { text-align: center; min-width: 64px; }
.tracker-recap-num strong {
  display: block; font-family: 'Bebas Neue', sans-serif; font-size: 2.3rem;
  line-height: 1; color: #F5C542;
}
.tracker-recap-num span {
  font-family: 'Oswald', sans-serif; font-size: .68rem; letter-spacing: 2px;
  text-transform: uppercase; color: rgba(245,245,245,.6);
}
.tracker-recap-txt { flex: 1; min-width: 220px; margin: 0; font-size: .92rem; line-height: 1.6; color: rgba(245,245,245,.85); }
.tracker-recap-txt a { color: #FF2D95; }
.tracker-status-concluso {
  color: #F5C542 !important; border-color: rgba(245,197,66,.55) !important;
  background: rgba(245,197,66,.1) !important;
}
@media (max-width: 520px) {
  .tracker-recap { gap: 14px; padding: 15px 16px; }
  .tracker-recap-num strong { font-size: 1.8rem; }
}

/* =========================================================
   VIDEO IN GALLERIA (v5.01)
   ========================================================= */
.foto-item-video { position: relative; }
.foto-video-thumb {
  position: relative; width: 100%; aspect-ratio: 1/1;
  background: #12121b center/cover no-repeat;
  border-radius: inherit; cursor: pointer; overflow: hidden;
  display: flex; align-items: center; justify-content: center;
}
.foto-video-thumb::after {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,.15), rgba(0,0,0,.55));
}
.foto-video-play {
  position: relative; z-index: 2;
  width: 54px; height: 54px; border-radius: 50%;
  background: rgba(229,9,20,.9); color: #fff; font-size: 1.2rem;
  display: flex; align-items: center; justify-content: center;
  padding-left: 4px; box-shadow: 0 4px 18px rgba(0,0,0,.5);
  transition: transform .18s ease;
}
.foto-video-thumb:hover .foto-video-play { transform: scale(1.12); }
.foto-video-badge {
  position: absolute; z-index: 2; left: 8px; bottom: 8px;
  font-family: 'Oswald', sans-serif; font-size: .62rem; letter-spacing: 1.6px;
  background: rgba(0,0,0,.65); color: #fff; padding: 3px 8px; border-radius: 4px;
}

/* Overlay di avanzamento conversione */
.sss-vidprog {
  position: fixed; inset: 0; z-index: 10000;
  background: rgba(4,4,8,.88); backdrop-filter: blur(6px);
  display: flex; align-items: center; justify-content: center; padding: 20px;
}
.sss-vidprog[hidden] { display: none; }
.sss-vidprog-box {
  width: 100%; max-width: 420px; text-align: center;
  background: #12121b; border: 2px solid rgba(229,9,20,.5);
  border-radius: 16px; padding: 26px 24px;
}
.sss-vidprog-box strong {
  display: block; font-family: 'Bebas Neue', sans-serif; font-size: 1.45rem;
  letter-spacing: 1.5px; color: #fff; margin-bottom: 14px;
}
.sss-vidprog-bar {
  height: 10px; border-radius: 999px; overflow: hidden;
  background: rgba(255,255,255,.1); margin-bottom: 12px;
}
.sss-vidprog-bar span {
  display: block; height: 100%; width: 2%;
  background: linear-gradient(90deg, #E50914, #FF2D95);
  transition: width .3s ease;
}
.sss-vidprog-box span#sss-vidprog-note { font-size: .8rem; color: rgba(245,245,245,.5); }

/* =========================================================
   VIRAL PACK (v5.00): condivisione + sondaggi
   ========================================================= */
.sss-share {
  display: flex; align-items: center; flex-wrap: wrap; gap: 8px;
  margin: 26px 0 8px; padding: 14px 16px;
  background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.12);
  border-radius: 12px;
}
.sss-share-label {
  font-family: 'Oswald', sans-serif; font-size: .72rem; letter-spacing: 2px;
  text-transform: uppercase; color: rgba(245,245,245,.55); margin-right: 4px;
}
.sss-share-btn {
  display: inline-block; padding: 7px 14px; border-radius: 999px;
  font-family: 'Oswald', sans-serif; font-size: .8rem; letter-spacing: .5px;
  color: #fff; text-decoration: none; border: 1px solid rgba(255,255,255,.2);
  background: rgba(255,255,255,.06); cursor: pointer;
  transition: transform .15s ease, background .15s ease;
}
.sss-share-btn:hover { transform: translateY(-2px); }
.sss-share-wa   { background: rgba(37,211,102,.18);  border-color: rgba(37,211,102,.5); }
.sss-share-tg   { background: rgba(0,136,204,.18);   border-color: rgba(0,136,204,.5); }
.sss-share-x    { background: rgba(255,255,255,.08); }
.sss-share-fb   { background: rgba(24,119,242,.18);  border-color: rgba(24,119,242,.5); }
.sss-share-copy { background: rgba(229,9,20,.14);    border-color: rgba(229,9,20,.5); }

.sss-poll {
  margin: 30px 0; padding: 22px 20px;
  background: linear-gradient(135deg, rgba(229,9,20,.10), rgba(46,91,255,.10));
  border: 2px solid rgba(255,255,255,.16); border-radius: 16px; text-align: center;
}
.sss-poll h3 {
  font-family: 'Bebas Neue', sans-serif; font-size: 1.7rem; letter-spacing: 2px;
  color: #fff; margin: 0 0 14px;
}
.sss-poll-options { display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; }
.sss-poll-btn {
  flex: 1; min-width: 220px; padding: 14px 18px; border-radius: 12px;
  font-family: 'Oswald', sans-serif; font-size: .95rem; color: #fff; cursor: pointer;
  border: 2px solid rgba(255,255,255,.25); background: rgba(255,255,255,.06);
  transition: transform .15s ease, border-color .15s ease;
}
.sss-poll-btn:hover { transform: translateY(-2px); border-color: #fff; }
.sss-poll-bar {
  display: flex; height: 44px; border-radius: 10px; overflow: hidden;
  border: 1px solid rgba(255,255,255,.2);
}
.sss-poll-fill-a, .sss-poll-fill-b {
  display: flex; align-items: center; justify-content: center;
  font-family: 'Oswald', sans-serif; font-size: .82rem; color: #fff;
  white-space: nowrap; overflow: hidden; padding: 0 8px;
  transition: width .6s ease; min-width: 42px;
}
.sss-poll-fill-a { background: rgba(63,232,98,.45); }
.sss-poll-fill-b { background: rgba(229,9,20,.45); }
.sss-poll-tot { margin: 10px 0 0; font-size: .8rem; color: rgba(245,245,245,.55); }
@media (max-width: 520px) {
  .sss-poll-btn { min-width: 100%; }
  .sss-poll-fill-a, .sss-poll-fill-b { font-size: .68rem; }
}

/* =========================================================
   SPIDER BADGE — tag collezionabili (v4.91)
   Comune grigio · Raro verde · Epico rosa (banner col ragno)
   · Leggendario oro (animato, cambia colore)
   ========================================================= */

.profile-role-row {
  display: flex; align-items: center; gap: 10px;
  flex-wrap: wrap; margin-bottom: 20px;
}
/* Il ruolo nasceva come blocco a sé (margin-bottom: 20px): dentro il flex quel margine
   lo disallineava rispetto al badge. Qui azzeriamo e diamo la stessa altezza a entrambi. */
.profile-role-row .profile-role {
  margin: 0;
  display: inline-flex; align-items: center;
  min-height: 32px; line-height: 1;
}
.profile-role-row .badge-chip.badge-main {
  margin: 0;
  min-height: 32px; line-height: 1;
  padding-top: 0; padding-bottom: 0;
}

/* ---- chip base: ogni tag ha i SUOI colori (--bc / --bc2), la rarità non si vede ---- */
.badge-chip {
  --bc: #9AA0B5; --bc2: #6E6E8A;
  position: relative;
  display: inline-flex; align-items: center; gap: 7px;
  padding: 7px 14px;
  border: 1.5px solid var(--bc);
  border-radius: 999px;
  background: rgba(255,255,255,.05); /* fallback browser senza color-mix */
  background:
    linear-gradient(135deg,
      color-mix(in srgb, var(--bc) 30%, #10101a),
      color-mix(in srgb, var(--bc2) 34%, #10101a));
  color: #fff;
  font-family: 'Oswald', sans-serif;
  font-size: .82rem; font-weight: 500; letter-spacing: .6px;
  cursor: pointer; overflow: hidden;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.10);
  transition: transform .18s ease, box-shadow .18s ease;
}
.badge-chip:hover { transform: translateY(-2px); box-shadow: 0 6px 18px color-mix(in srgb, var(--bc) 45%, transparent); }
.badge-chip .badge-emoji {
  font-size: 1.05rem; line-height: 1;
  filter: drop-shadow(0 0 5px color-mix(in srgb, var(--bc) 60%, transparent));
}
.badge-chip .badge-name { white-space: nowrap; }
.badge-chip .badge-star { color: #F5C542; font-size: .8rem; }

/* ---- EPICO: il ragno cala dal filo e MORDE (il "primo morso") ---- */
.badge-chip.is-epico {
  box-shadow: inset 0 0 14px color-mix(in srgb, var(--bc) 25%, transparent),
              0 0 10px color-mix(in srgb, var(--bc) 20%, transparent);
  padding-right: 30px; /* spazio per il ragno */
}
/* il filo da cui cala */
.badge-chip.is-epico .badge-bite {
  position: absolute; top: 0; right: 11px; width: 12px; height: 100%;
  pointer-events: none;
}
.badge-chip.is-epico .badge-bite::before {
  content: ''; position: absolute; top: 0; left: 50%; width: 1px; height: 7px;
  background: linear-gradient(180deg, var(--bc), color-mix(in srgb, var(--bc) 15%, transparent));
  transform-origin: top center;
  animation: badge-thread 4.5s ease-in-out infinite;
}
/* i due buchi delle zanne, lampeggiano quando morde */
.badge-chip.is-epico .badge-bite::after {
  content: ''; position: absolute; top: 13px; left: 50%; margin-left: -3px;
  width: 6px; height: 2px; border-radius: 2px;
  background: radial-gradient(circle at 1px 1px, var(--bc) 1px, transparent 1.4px),
              radial-gradient(circle at 5px 1px, var(--bc) 1px, transparent 1.4px);
  opacity: 0;
  animation: badge-fangs 4.5s ease-in-out infinite;
}
.badge-chip.is-epico .badge-spider {
  position: absolute; top: 5px; left: 50%; margin-left: -4px;
  font-size: .6rem; line-height: 1; color: var(--bc);
  text-shadow: 0 0 7px color-mix(in srgb, var(--bc) 90%, transparent);
  transform-origin: top center;
  animation: badge-spider-bite 4.5s ease-in-out infinite;
}
@keyframes badge-spider-bite {
  0%, 45%  { transform: translateY(-7px) scale(.85); opacity: .55; }
  60%      { transform: translateY(0) scale(1); opacity: 1; }          /* è sceso */
  68%      { transform: translateY(4px) scale(1.25) rotate(-8deg); }   /* MORSO */
  74%      { transform: translateY(1px) scale(1.05) rotate(5deg); }
  80%      { transform: translateY(4px) scale(1.2) rotate(-5deg); }    /* secondo morso */
  90%      { transform: translateY(0) scale(1); opacity: 1; }
  100%     { transform: translateY(-7px) scale(.85); opacity: .55; }
}
@keyframes badge-thread {
  0%, 45%  { height: 3px; opacity: .4; }
  60%, 90% { height: 9px; opacity: 1; }
  100%     { height: 3px; opacity: .4; }
}
@keyframes badge-fangs {
  0%, 66%   { opacity: 0; transform: scale(.6); }
  70%       { opacity: 1; transform: scale(1.15); }
  84%       { opacity: .85; transform: scale(1); }
  95%, 100% { opacity: 0; transform: scale(.6); }
}

/* ---- LEGGENDARIO: oro animato che cambia colore + luccichio ---- */
.badge-chip.is-leggendario {
  border-color: transparent;
  background:
    linear-gradient(135deg,
      color-mix(in srgb, var(--bc) 22%, #10101a),
      color-mix(in srgb, var(--bc2) 26%, #10101a)) padding-box,
    linear-gradient(115deg, var(--bc), #FFFFFF, var(--bc2), var(--bc)) border-box;
  background-size: 100% 100%, 300% 300%;
  animation: badge-legend-shift 6s ease infinite;
  box-shadow: 0 0 14px color-mix(in srgb, var(--bc) 40%, transparent);
}
.badge-chip.is-leggendario .badge-name {
  background: linear-gradient(90deg, var(--bc), #FFFFFF, var(--bc2), var(--bc));
  background-size: 300% 100%;
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: badge-legend-shift 6s ease infinite;
}
.badge-chip.is-leggendario::before { /* sweep di luce */
  content: ''; position: absolute; top: 0; bottom: 0; width: 45%;
  background: linear-gradient(100deg, transparent, rgba(255,255,255,.35), transparent);
  transform: skewX(-18deg);
  animation: badge-legend-sweep 4.5s ease-in-out infinite;
}
@keyframes badge-legend-shift {
  0%, 100% { background-position: 0% 50%, 0% 50%; }
  50%      { background-position: 0% 50%, 100% 50%; }
}
@keyframes badge-legend-sweep {
  0%   { left: -60%; opacity: 0; }
  35%  { opacity: 1; }
  70%  { left: 115%; opacity: 0; }
  100% { left: 115%; opacity: 0; }
}

/* ---- bloccati ---- */
.badge-chip.is-locked {
  --bc: #4a4a5e !important; --bc2: #33333f !important;
  background: rgba(255,255,255,.03) !important;
  border-color: #33333f !important; border-style: dashed;
  color: #6f6f86; box-shadow: none !important; animation: none !important;
  filter: grayscale(1);
}
.badge-chip.is-locked::before, .badge-chip.is-locked::after { display: none !important; }
.badge-chip.is-locked .badge-name { -webkit-text-fill-color: #6f6f86; color: #6f6f86; animation: none; background: none; }
.badge-chip.is-locked:hover { transform: none; }

/* ---- bacheca ---- */
.badges-box {
  background: rgba(255,255,255,.03);
  border: 1px solid rgba(255,255,255,.10);
  border-radius: 14px; padding: 18px 20px; margin: 22px 0;
}
.badges-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
.badges-head h3 { font-family: 'Bebas Neue', sans-serif; font-size: 1.35rem; letter-spacing: 1.5px; margin: 0; color: #fff; }
.badges-head h3 span { color: #E50914; }
.badges-count {
  font-family: 'Oswald', sans-serif; font-size: .8rem; letter-spacing: 1px;
  color: #F5C542; border: 1px solid rgba(245,197,66,.45);
  padding: 3px 10px; border-radius: 999px; white-space: nowrap;
}
.badges-grid { display: flex; flex-wrap: wrap; gap: 9px; }
.badges-hint { font-size: .78rem; color: #8f8fa8; margin: 12px 0 0; line-height: 1.5; }
.badges-empty { color: #8f8fa8; font-size: .9rem; margin: 0; }
.badges-locked-head {
  font-family: 'Oswald', sans-serif; font-size: .68rem; letter-spacing: 2.4px;
  color: #6f6f86; margin: 18px 0 9px; text-transform: uppercase;
  border-top: 1px solid rgba(255,255,255,.08); padding-top: 14px;
}

/* ---- pannello admin ---- */
.badges-admin { margin-top: 18px; border-top: 1px solid rgba(255,255,255,.08); padding-top: 14px; }
.badges-admin label {
  display: block; font-family: 'Oswald', sans-serif; font-size: .7rem;
  letter-spacing: 2px; color: #8f8fa8; text-transform: uppercase; margin-bottom: 8px;
}
.badges-admin-row { display: flex; gap: 9px; flex-wrap: wrap; }
.badges-admin-row select {
  flex: 1; min-width: 200px; background: #12121b; color: #fff;
  border: 1px solid rgba(255,255,255,.18); border-radius: 8px; padding: 9px 11px;
  font-family: inherit; font-size: .85rem;
}
.badges-admin-revoke { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 11px; }
.badge-revoke {
  background: rgba(229,9,20,.12); border: 1px solid rgba(229,9,20,.45);
  color: #ff8a8a; border-radius: 999px; padding: 5px 11px;
  font-size: .74rem; cursor: pointer; transition: background .15s ease;
}
.badge-revoke:hover { background: rgba(229,9,20,.28); }

/* ---- popup dettaglio ---- */
.badge-pop {
  position: fixed; inset: 0; z-index: 9999;
  background: rgba(4,4,8,.82); backdrop-filter: blur(6px);
  display: flex; align-items: center; justify-content: center; padding: 20px;
  animation: badge-pop-in .18s ease;
}
.badge-pop[hidden] { display: none; }
@keyframes badge-pop-in { from { opacity: 0; } to { opacity: 1; } }
.badge-pop-inner {
  --bc: #9AA0B5;
  position: relative; width: 100%; max-width: 380px; text-align: center;
  background: #0e0e17; border: 2px solid var(--bc); border-radius: 18px;
  padding: 30px 24px 24px;
  box-shadow: 0 0 44px color-mix(in srgb, var(--bc) 42%, transparent);
}
.badge-pop-inner.is-leggendario {
  border-color: transparent;
  background:
    linear-gradient(#0e0e17, #0e0e17) padding-box,
    linear-gradient(115deg, var(--bc), #FFFFFF, var(--bc2), var(--bc)) border-box;
  background-size: 100% 100%, 300% 300%;
  animation: badge-legend-shift 6s ease infinite;
}
.badge-pop-x {
  position: absolute; top: 10px; right: 14px; background: none; border: none;
  color: #8f8fa8; font-size: 1.7rem; line-height: 1; cursor: pointer; padding: 0;
}
.badge-pop-x:hover { color: #fff; }
.badge-pop-emoji { font-size: 3.4rem; line-height: 1; margin-bottom: 10px; }
.badge-pop-name { font-family: 'Bebas Neue', sans-serif; font-size: 1.9rem; letter-spacing: 1.5px; color: #fff; line-height: 1; }
/* La rarità è l'UNICA cosa colorata per rarità (--rc): si scopre solo aprendo la tag */
.badge-pop-rar {
  display: inline-block; margin: 9px 0 14px; padding: 5px 16px;
  font-family: 'Oswald', sans-serif; font-size: .72rem; font-weight: 600; letter-spacing: 2.6px;
  color: var(--rc, #9AA0B5);
  border: 1.5px solid var(--rc, #9AA0B5); border-radius: 999px;
  background: color-mix(in srgb, var(--rc, #9AA0B5) 14%, transparent);
  box-shadow: 0 0 14px color-mix(in srgb, var(--rc, #9AA0B5) 30%, transparent);
}
.badge-pop-desc { color: #cfcfe0; font-size: .92rem; line-height: 1.55; margin: 0 0 16px; }
.badge-pop-count {
  font-size: .88rem; color: #9a9ab4;
  border-top: 1px solid rgba(255,255,255,.1); padding-top: 13px;
}
.badge-pop-count strong { color: var(--bc); font-size: 1.25rem; font-family: 'Bebas Neue', sans-serif; }
.badge-pop-date { font-size: .74rem; color: #6f6f86; margin-top: 5px; }
.badge-pop-main { margin-top: 16px; width: 100%; }
.badge-pop-main:disabled { opacity: .5; cursor: default; }

@media (max-width: 520px) {
  .badges-box { padding: 15px 14px; }
  .badge-chip { font-size: .76rem; padding: 6px 12px; }
  .badge-chip.is-epico { padding-right: 28px; }
  .badges-head h3 { font-size: 1.15rem; }
}

/* ---- badge principale accanto al nome (compatto) ---- */
.badge-chip.badge-main { padding: 5px 11px; font-size: .78rem; }
.badge-chip.badge-main.is-epico { padding-right: 26px; }

/* ---- popup EPICO: il ragno morde anche qui, in grande ---- */
.badge-pop-inner.is-epico::before {
  content: '🕷'; position: absolute; top: 0; left: 50%; margin-left: -10px;
  font-size: 1.2rem; color: var(--bc);
  text-shadow: 0 0 12px color-mix(in srgb, var(--bc) 90%, transparent);
  transform-origin: top center;
  animation: badge-pop-bite 4.5s ease-in-out infinite;
}
.badge-pop-inner.is-epico::after {
  content: ''; position: absolute; top: 0; left: 50%; width: 1px; height: 16px;
  background: linear-gradient(180deg, var(--bc), color-mix(in srgb, var(--bc) 10%, transparent));
}
@keyframes badge-pop-bite {
  0%, 45%  { transform: translateY(2px) scale(.9); }
  60%      { transform: translateY(14px) scale(1); }
  68%      { transform: translateY(20px) scale(1.2) rotate(-8deg); }
  76%      { transform: translateY(15px) scale(1.05) rotate(6deg); }
  84%      { transform: translateY(20px) scale(1.15) rotate(-4deg); }
  100%     { transform: translateY(2px) scale(.9); }
}

/* PERF/accessibilità: chi ha le animazioni ridotte vede tutto statico */
@media (prefers-reduced-motion: reduce) {
  .badge-chip.is-leggendario,
  .badge-chip.is-leggendario .badge-name,
  .badge-chip.is-leggendario::before,
  .badge-pop-inner.is-leggendario,
  .badge-chip.is-epico .badge-spider,
  .badge-chip.is-epico .badge-bite::before,
  .badge-chip.is-epico .badge-bite::after,
  .badge-pop-inner.is-epico::before { animation: none; }
  .badge-chip.is-epico .badge-spider { transform: translateY(0) scale(1); opacity: 1; }
  .badge-chip.is-epico .badge-bite::before { height: 5px; opacity: .8; }
}
