/* style.css */

/* ===========================
   BASE THEME (chiaro)
   =========================== */
:root {
    --primary: #0062ff;
    --dark: #1a1a1a;
    --bg: #f8faff;
}

* {
    box-sizing: border-box; /* Questo aiuta a gestire meglio i margini */
}

body {
    margin: 0; 
    padding: 0;
    font-family: 'Inter', -apple-system, sans-serif; 
    background-color: #f8faff; /* Colore diretto se var() fallisce */
    background-color: var(--bg); 
    color: var(--dark);
}

.container { 
    max-width: 1000px; 
    margin: 0 auto; 
    padding: 0 20px; 
}

/* Navbar */
.navbar { 
    background: #ffffff; 
    padding: 20px 0; 
    border-bottom: 1px solid #eeeeee; 
}

.navbar .container {
    display: flex; 
    align-items: center;
    justify-content: space-between;
}

.logo { font-weight: 800; font-size: 1.5rem; text-decoration: none; color: var(--dark); }
.logo span { color: var(--primary); }
.partner-link { text-decoration: none; color: #666; font-size: 0.9rem; }

/* Hero Section */
.hero { padding: 60px 0; text-align: center; }

/* NOTA: questa regola è per il layout "vecchio".
   Per il layout moderno, la sovrascriviamo più sotto (FIX CONFLITTI). */
h1 { font-size: 1.1rem; color: #666; text-transform: uppercase; letter-spacing: 1px; margin-bottom: 20px; }

.ip-display-card {
    background: #ffffff; 
    padding: 40px; 
    border-radius: 24px; 
    box-shadow: 0 20px 40px rgba(0,0,0,0.05); 
    display: inline-block; 
    margin: 20px 0;
}

.ip-address { 
    font-size: 3.5rem; 
    font-weight: 800; 
    color: var(--primary); 
    display: block; 
    margin-bottom: 15px;
    word-break: break-all; /* Evita che l'IP esca dallo schermo su mobile */
}

.btn-copy { 
    background: #f0f0f0; 
    border: none; 
    padding: 10px 25px; 
    border-radius: 50px; 
    cursor: pointer; 
    font-weight: 600;
    transition: 0.3s; 
}
.btn-copy:hover { background: var(--primary); color: white; }

.stats-grid { 
    display: flex; 
    justify-content: center; 
    gap: 20px; 
    margin-top: 30px; 
    flex-wrap: wrap; 
}

.stat-item { font-size: 0.9rem; color: #777; background: #fff; padding: 10px 15px; border-radius: 10px; }

/* Promo Edisoft */
.ad-section { margin: 40px 0; }
.ad-card { 
    background: linear-gradient(135deg, #0062ff, #00c6ff); 
    color: white; 
    padding: 40px; 
    border-radius: 24px; 
    display: flex; 
    align-items: center; 
    justify-content: space-between;
    text-align: left;
}
.ad-content h3 { margin: 0 0 10px 0; font-size: 1.5rem; color: #fff; }
.ad-content p { margin: 0; opacity: 0.9; }
.btn-cta { 
    background: white; 
    color: var(--primary); 
    padding: 15px 30px; 
    border-radius: 12px; 
    text-decoration: none; 
    font-weight: 700;
    flex-shrink: 0;
    margin-left: 20px;
}

/* FAQ */
.faq-grid { 
    display: grid; 
    grid-template-columns: 1fr 1fr; 
    gap: 30px; 
    margin: 40px 0; 
    text-align: left; 
}
.faq-item h3 { font-size: 1.1rem; margin-bottom: 10px; color: var(--primary); }

@media (max-width: 768px) {
    .ip-address { font-size: 2.2rem; }
    .ad-card { flex-direction: column; text-align: center; gap: 20px; }
    .btn-cta { margin-left: 0; }
    .faq-grid { grid-template-columns: 1fr; }
    .stats-grid { flex-direction: column; align-items: center; }
}

/* ===========================
   THEME TECH (attivabile)
   Attiva con: <body class="theme-tech">
   Aggiungi nel body: <div class="gridbg" aria-hidden="true"></div>
   =========================== */

/* Variabili Tech (override solo quando theme-tech è attivo) */
body.theme-tech {
    --primary: #22d3ee;      /* ciano tech */
    --dark: #eaf0ff;         /* testo chiaro */
    --bg: #070a12;           /* background scuro */
    --bg2: #090b1f;          /* profondità */
    --muted: rgba(234,240,255,.72);
    --card: rgba(255,255,255,.06);
    --cardBorder: rgba(255,255,255,.12);
    --shadow: rgba(0,0,0,.55);
    --glow: rgba(34,211,238,.22);
    --glow2: rgba(124,58,237,.18);
}

/* Background “cyber” */
body.theme-tech {
    background:
      radial-gradient(1200px 600px at 20% 10%, var(--glow2), transparent 55%),
      radial-gradient(900px 500px at 80% 20%, var(--glow), transparent 55%),
      linear-gradient(180deg, var(--bg), var(--bg2));
    color: var(--dark);
}

/* Griglia tecnica (layer) */
body.theme-tech .gridbg{
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 0;
    background-image:
      linear-gradient(rgba(255,255,255,.06) 1px, transparent 1px),
      linear-gradient(90deg, rgba(255,255,255,.06) 1px, transparent 1px);
    background-size: 48px 48px;
    opacity: .12;
    mask-image: radial-gradient(circle at 50% 18%, black 0%, transparent 68%);
}

/* Porta contenuti sopra al background */
body.theme-tech .navbar,
body.theme-tech .hero,
body.theme-tech .ad-section,
body.theme-tech .faq-grid,
body.theme-tech footer,
body.theme-tech main,
body.theme-tech .container {
    position: relative;
    z-index: 1;
}

/* Navbar in glass */
body.theme-tech .navbar { 
    background: rgba(255,255,255,.04);
    border-bottom: 1px solid rgba(255,255,255,.10);
    backdrop-filter: blur(14px);
}
body.theme-tech .logo { color: var(--dark); }
body.theme-tech .logo span { color: var(--primary); }
body.theme-tech .partner-link { color: rgba(234,240,255,.65); }

/* Hero label più “tech” (per layout vecchio) */
body.theme-tech h1 { 
    color: rgba(234,240,255,.75); 
}

/* Card IP: glass + bordo neon on hover */
body.theme-tech .ip-display-card {
    background: var(--card);
    border: 1px solid var(--cardBorder);
    box-shadow: 0 30px 90px var(--shadow);
    backdrop-filter: blur(16px);
    transform: translateZ(0);
    transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease;
    position: relative;
    overflow: hidden;
}
body.theme-tech .ip-display-card:hover{
    border-color: rgba(34,211,238,.42);
    box-shadow: 0 0 0 1px rgba(34,211,238,.16), 0 30px 90px var(--shadow);
    transform: translateY(-2px);
}

/* IP: monospace + glow */
body.theme-tech .ip-address { 
    color: var(--primary);
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "JetBrains Mono", "Liberation Mono", monospace;
    letter-spacing: .02em;
    text-shadow: 0 0 28px rgba(34,211,238,.28);
}

/* Bottone copia: gradient tech */
body.theme-tech .btn-copy { 
    background: linear-gradient(90deg, rgba(34,211,238,.16), rgba(124,58,237,.16));
    border: 1px solid rgba(255,255,255,.14);
    color: var(--dark);
}
body.theme-tech .btn-copy:hover { 
    background: linear-gradient(90deg, rgba(34,211,238,.26), rgba(124,58,237,.26));
    color: var(--dark);
}

/* Mini stats: pill glass */
body.theme-tech .stat-item { 
    background: rgba(255,255,255,.05);
    border: 1px solid rgba(255,255,255,.10);
    color: rgba(234,240,255,.74);
    backdrop-filter: blur(10px);
}

/* Promo: panel cyber (mantieni struttura) */
body.theme-tech .ad-card { 
    background:
      radial-gradient(800px 250px at 20% 20%, rgba(34,211,238,.22), transparent 60%),
      radial-gradient(900px 280px at 80% 30%, rgba(124,58,237,.18), transparent 60%),
      linear-gradient(135deg, rgba(255,255,255,.06), rgba(255,255,255,.03));
    border: 1px solid rgba(255,255,255,.12);
    box-shadow: 0 30px 90px var(--shadow);
    backdrop-filter: blur(14px);
    color: var(--dark);
}
body.theme-tech .ad-content h3 { color: var(--dark); }
body.theme-tech .ad-content p { color: rgba(234,240,255,.78); opacity: 1; }

body.theme-tech .btn-cta { 
    background: rgba(255,255,255,.10);
    border: 1px solid rgba(255,255,255,.16);
    color: var(--dark);
}
body.theme-tech .btn-cta:hover{
    border-color: rgba(34,211,238,.40);
}

/* FAQ (layout vecchio) */
body.theme-tech .faq-item h3 { color: var(--primary); }
body.theme-tech .faq-item,
body.theme-tech .faq-item p { color: rgba(234,240,255,.78); }

/* Animazione “scanner” sulla card IP (layout vecchio) */
@keyframes techScan {
    0% { transform: translateX(-120%) skewX(-12deg); opacity: 0; }
    10% { opacity: .25; }
    50% { opacity: .18; }
    100% { transform: translateX(120%) skewX(-12deg); opacity: 0; }
}

body.theme-tech .ip-display-card::after{
    content:"";
    position:absolute;
    top:-20%;
    left:-40%;
    width:40%;
    height:140%;
    background: linear-gradient(90deg, transparent, rgba(34,211,238,.18), transparent);
    filter: blur(2px);
    animation: techScan 6s ease-in-out infinite;
    pointer-events:none;
}

/* ===========================
   WOW ADD-ONS (solo CSS)
   1) Badge IPv4/IPv6 (con class .long-ip)
   2) Pulse/glow su copia
   =========================== */

/* Badge IPv4/IPv6 (di default IPv4; per IPv6 aggiungi class="long-ip" via JS) */
body.theme-tech .ip-address{
    position: relative;
    padding-right: 92px; /* spazio per badge */
}

body.theme-tech .ip-address::after{
    content: "IPv4";
    position: absolute;
    right: 0;
    top: 0.35em;
    font-size: 0.85rem;
    font-weight: 700;
    padding: 6px 10px;
    border-radius: 999px;
    color: rgba(234,240,255,.92);
    background: rgba(255,255,255,.08);
    border: 1px solid rgba(255,255,255,.14);
    backdrop-filter: blur(10px);
}

body.theme-tech .ip-address.long-ip::after{
    content: "IPv6";
    border-color: rgba(34,211,238,.30);
}

/* Pulse neon sul bottone copia */
@keyframes neonPulse {
    0%   { box-shadow: 0 0 0 0 rgba(34,211,238,.00); transform: translateY(0); }
    35%  { box-shadow: 0 0 0 10px rgba(34,211,238,.18); transform: translateY(-1px); }
    100% { box-shadow: 0 0 0 18px rgba(34,211,238,.00); transform: translateY(0); }
}

body.theme-tech .btn-copy:active{
    animation: neonPulse .55s ease-out;
}

body.theme-tech .btn-copy:disabled{
    border-color: rgba(34,211,238,.45);
    box-shadow: 0 0 0 1px rgba(34,211,238,.18);
    cursor: default;
    opacity: .95;
}

/* ===========================
   MODERN UI (per index moderno)
   =========================== */

/* navbar layout */
.nav-inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
}
.brand{ display:flex; flex-direction:column; gap:4px; }
.tagline{ font-size:.9rem; color: rgba(234,240,255,.65); }
.nav-actions{ display:flex; align-items:center; gap:14px; }
.nav-link{
  text-decoration:none;
  color: rgba(234,240,255,.75);
  font-weight:600;
  font-size:.95rem;
}
.nav-link:hover{ color: rgba(234,240,255,.95); }

/* hero moderno */
.hero-modern{ padding: 70px 0 30px; }
.hero-grid{
  display:grid;
  grid-template-columns: 1.05fr .95fr;
  gap: 28px;
  align-items: center;
}
.eyebrow{
  margin:0 0 10px;
  letter-spacing:.12em;
  text-transform:uppercase;
  font-size:.75rem;
  color: rgba(234,240,255,.65);
}
.hero-title{
  margin:0 0 10px;
  font-size: clamp(2rem, 3.8vw, 3rem);
  line-height:1.05;
  letter-spacing:-.02em;
}
.hero-sub{
  margin:0 0 14px;
  color: rgba(234,240,255,.75);
  font-size:1.05rem;
  max-width: 52ch;
}
.hero-badges{ display:flex; flex-wrap:wrap; gap:10px; }
.chip{
  font-size:.85rem;
  padding: 8px 10px;
  border-radius: 999px;
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.12);
  color: rgba(234,240,255,.88);
  backdrop-filter: blur(10px);
}

/* panel */
.card{
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 18px;
  backdrop-filter: blur(14px);
  box-shadow: 0 30px 90px rgba(0,0,0,.55);
}
.neon:hover{
  border-color: rgba(34,211,238,.42);
  box-shadow: 0 0 0 1px rgba(34,211,238,.16), 0 30px 90px rgba(0,0,0,.55);
}

.ip-panel{ padding: 20px; }
.ip-top{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:10px;
}
.ip-label{
  color: rgba(234,240,255,.72);
  font-weight:700;
  letter-spacing:.06em;
  text-transform:uppercase;
  font-size:.78rem;
}
.ip-main{ padding: 6px 0 6px; }
.panel-footer{ margin-top: 12px; }
.hint{ color: rgba(234,240,255,.65); font-size:.9rem; }

/* quick info grid */
.quick-grid{
  margin-top: 14px;
  display:grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
.quick-item{
  padding: 12px;
  border-radius: 14px;
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.10);
}
.quick-k{ font-size:.82rem; color: rgba(234,240,255,.62); margin-bottom:4px; }
.quick-v{ font-size:1rem; color: rgba(234,240,255,.90); font-weight:700; }
.ipver{ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; }

/* section */
.section{ padding: 34px 0; }
.section-head{ margin-bottom: 14px; }
.section-title{ margin:0 0 6px; font-size:1.35rem; }
.section-sub{ margin:0; color: rgba(234,240,255,.70); }

/* tools */
.tools-grid{
  display:grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
  margin-top: 14px;
}
.tool{ padding: 16px; }
.tool-top{ display:flex; justify-content:space-between; align-items:center; gap:12px; }
.tool-title{ font-weight:800; color: rgba(234,240,255,.92); }
.tool-btn{
  background: rgba(255,255,255,.08);
  border: 1px solid rgba(255,255,255,.14);
  color: rgba(234,240,255,.92);
  padding: 10px 12px;
  border-radius: 12px;
  cursor:pointer;
  font-weight:700;
}
.tool-btn:hover{ border-color: rgba(34,211,238,.40); }
.tool-body{ margin-top: 12px; }
.tool-value{
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  font-weight:800;
  color: rgba(234,240,255,.92);
  word-break: break-word;
}
.tool-note{ margin-top:8px; font-size:.9rem; color: rgba(234,240,255,.65); }

/* FAQ accordion */
.faq-accordion{ display:grid; gap: 12px; margin-top: 14px; }
.faq-row{ padding: 14px 16px; }
.faq-row summary{
  cursor:pointer;
  font-weight:800;
  color: rgba(234,240,255,.92);
  list-style:none;
}
.faq-row summary::-webkit-details-marker{ display:none; }
.faq-row p{
  margin: 10px 0 0;
  color: rgba(234,240,255,.75);
}

/* footer */
.footer-inner{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:14px;
}
.footer a{ color: rgba(234,240,255,.85); }
.backtop{
  text-decoration:none;
  padding: 10px 12px;
  border-radius: 12px;
  border: 1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.06);
}
.backtop:hover{ border-color: rgba(34,211,238,.40); }

/* responsive */
@media (max-width: 900px){
  .hero-grid{ grid-template-columns: 1fr; }
  .tools-grid{ grid-template-columns: 1fr; }
  .nav-actions{ flex-wrap:wrap; justify-content:flex-end; }
  .footer-inner{ flex-direction:column; align-items:flex-start; }
}

/* ===========================
   FIX CONFLITTI (IMPORTANTE)
   Risolve:
   - .hero { text-align:center } che rompe la hero moderna
   - h1 globale piccolo/uppercase che rompe .hero-title
   =========================== */

body.theme-tech .page{
  position: relative;
  z-index: 1;
}

/* Il nuovo header è anche .hero: disattiva il center */
body.theme-tech .hero.hero-modern{
  text-align: left;
  padding: 70px 0 30px;
}

/* Override h1 globale SOLO dentro hero moderna */
body.theme-tech .hero-modern h1.hero-title{
  font-size: clamp(2rem, 3.8vw, 3rem);
  line-height: 1.05;
  letter-spacing: -0.02em;
  text-transform: none;
  color: rgba(234,240,255,.96);
  margin: 0 0 10px;
}

/* Titoli sezioni su tema scuro */
body.theme-tech .section-title,
body.theme-tech h2{
  color: rgba(234,240,255,.94);
}

/* Navbar: forza layout se qualche regola precedente interferisce */
body.theme-tech .navbar .container.nav-inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
}

/* Su mobile, mantiene leggibilità */
@media (max-width: 900px){
  body.theme-tech .hero.hero-modern{ text-align: left; }
}
/* ===========================
   FIX IP che va a capo (layout moderno)
   Incolla in fondo al CSS
   =========================== */

/* Nel layout moderno NON vogliamo il badge ::after (già c’è #ipVer) */
body.theme-tech .hero-modern .ip-address{
  padding-right: 0 !important;
  white-space: nowrap;          /* IP sempre su una riga */
  word-break: normal !important;/* annulla break-all del tema base */
  overflow-wrap: normal !important;
  line-height: 1.05;
  font-size: clamp(30px, 5.6vw, 58px);
  letter-spacing: .02em;
  margin-bottom: 0 !important;
}

body.theme-tech .hero-modern .ip-address::after{
  display: none !important;
}

/* Se vuoi comunque un fallback su schermi strettissimi */
@media (max-width: 360px){
  body.theme-tech .hero-modern .ip-address{
    white-space: normal;        /* qui può andare a capo */
    overflow-wrap: anywhere;
  }
}