:root{
  --accent: #ea5a0b;
  --ink: #0f172a;
  --muted: #526074;
  --card: #ffffff;
  --stroke: rgba(15, 23, 42, .16);
  --shape: rgba(15, 23, 42, .05);
  --north: #7f4692;
  --south: #ea5a0b;
  --north-rgb: 127, 70, 146;
  --south-rgb: 234, 90, 11;
  --north-glow: rgba(var(--north-rgb), .24);
  --south-glow: rgba(var(--south-rgb), .24);
  --map-fill: rgba(148, 163, 184, .12);
  --map-stroke: rgba(71, 85, 105, .58);
  --map-stroke-active: rgba(15, 23, 42, .34);
}

.it-map{ padding:0; }
.it-map__wrap{ --it-map-font: inherit; }
.it-map__header{ max-width:820px; margin:0 auto 28px; padding:0 16px; text-align:center; }
.it-map__header h2{ margin:0 0 8px; font-size:clamp(28px,3vw,42px); letter-spacing:-.03em; color:var(--ink); }
.it-map__header p{ margin:0 auto; max-width:720px; color:var(--muted); font-size:16px; line-height:1.65; }

.it-map__wrap{
  position:relative;
  max-width:980px;
  margin:0 auto;
  padding:30px 24px 18px;
  border-radius:32px;
  background:linear-gradient(180deg, rgba(255,255,255,.98) 0%, rgba(248,250,252,.98) 100%);
  border:1px solid rgba(15,23,42,.08);
  box-shadow:0 18px 42px rgba(15,23,42,.08);
}

.it-map__svg{
  display:block;
  width:100%;
  height:auto;
}

.it-map__wrap::before{
  content:none;
}

/* SOLO Italia, uniforme, nessun hover */
.it-map__svg path[id^="IT"]{
  fill: var(--map-fill);
  stroke: var(--map-stroke);
  stroke-width: 1.2;
  vector-effect: non-scaling-stroke;
  transition: fill .28s ease, stroke .28s ease, opacity .28s ease, filter .28s ease;
}

/* Disabilita interazioni sulle regioni */
.it-map__svg path{
  pointer-events: none;
}

.js-itMapWrap[data-active-loc="florence"] .it-map__svg path[id^="IT"],
.js-itMapWrap[data-active-loc="avellino"] .it-map__svg path[id^="IT"]{
  opacity:1;
  fill: var(--map-fill);
  stroke: var(--map-stroke);
}

.js-itMapWrap[data-active-loc="florence"] #IT-21,
.js-itMapWrap[data-active-loc="florence"] #IT-23,
.js-itMapWrap[data-active-loc="florence"] #IT-25,
.js-itMapWrap[data-active-loc="florence"] #IT-32,
.js-itMapWrap[data-active-loc="florence"] #IT-34,
.js-itMapWrap[data-active-loc="florence"] #IT-36,
.js-itMapWrap[data-active-loc="florence"] #IT-42,
.js-itMapWrap[data-active-loc="florence"] #IT-45,
.js-itMapWrap[data-active-loc="florence"] #IT-52,
.js-itMapWrap[data-active-loc="florence"] #IT-55,
.js-itMapWrap[data-active-loc="florence"] #IT-57{
  opacity:1;
  fill: rgba(var(--north-rgb), .18);
  stroke: rgba(var(--north-rgb), .70);
  stroke-width:1.26;
  filter:none;
}

.js-itMapWrap[data-active-loc="avellino"] #IT-62,
.js-itMapWrap[data-active-loc="avellino"] #IT_65,
.js-itMapWrap[data-active-loc="avellino"] #IT-67,
.js-itMapWrap[data-active-loc="avellino"] #IT-72,
.js-itMapWrap[data-active-loc="avellino"] #IT-75,
.js-itMapWrap[data-active-loc="avellino"] #IT-77,
.js-itMapWrap[data-active-loc="avellino"] #IT-78,
.js-itMapWrap[data-active-loc="avellino"] #IT-82,
.js-itMapWrap[data-active-loc="avellino"] #IT-88{
  opacity:1;
  fill: rgba(var(--south-rgb), .17);
  stroke: rgba(var(--south-rgb), .72);
  stroke-width:1.26;
  filter:none;
}

.it-map__shape{ fill:var(--shape); stroke:rgba(15,23,42,.18); stroke-width:2; }

.it-map__pin{ cursor:pointer; transform-box:fill-box; transform-origin:center; outline:none; }
.it-map__pinAura{ fill:var(--north-glow); opacity:0; }
.it-map__pinHalo{ fill:none; stroke:rgba(var(--north-rgb), .24); stroke-width:7; opacity:0; }
.it-map__pinPlate{ fill:rgba(255,255,255,.96); stroke:rgba(var(--north-rgb), .16); stroke-width:1.35; }
.it-map__pinRing{ fill:none; stroke:rgba(var(--north-rgb), .28); stroke-width:2.2; }
.it-map__pinCore{ fill:var(--north); }
.it-map__pinDot{ fill:#fff; }

.it-map__pin[data-loc="avellino"] .it-map__pinAura{ fill:var(--south-glow); }
.it-map__pin[data-loc="avellino"] .it-map__pinHalo{ stroke:rgba(var(--south-rgb), .24); }
.it-map__pin[data-loc="avellino"] .it-map__pinPlate{ stroke:rgba(var(--south-rgb), .16); }
.it-map__pin[data-loc="avellino"] .it-map__pinRing{ stroke:rgba(var(--south-rgb), .28); }
.it-map__pin[data-loc="avellino"] .it-map__pinCore{ fill:var(--south); }

.it-map__pin .it-map__pinAura,
.it-map__pin .it-map__pinPlate,
.it-map__pin .it-map__pinRing,
.it-map__pin .it-map__pinCore,
.it-map__pin .it-map__pinDot,
.it-map__pin .it-map__pinHalo{
  transition: transform .28s ease, opacity .28s ease, fill .28s ease, stroke .28s ease;
}

.it-map__pin:hover .it-map__pinPlate,
.it-map__pin:focus .it-map__pinPlate,
.it-map__pin.is-active .it-map__pinPlate{
  transform:translateY(-1px) scale(1.06);
}

.it-map__pin:hover .it-map__pinCore,
.it-map__pin:focus .it-map__pinCore,
.it-map__pin.is-active .it-map__pinCore{
  transform:scale(1.18);
}

.it-map__pin:hover .it-map__pinRing,
.it-map__pin:focus .it-map__pinRing,
.it-map__pin.is-active .it-map__pinRing{
  transform:scale(1.08);
}

.it-map__pin:hover .it-map__pinAura,
.it-map__pin:focus .it-map__pinAura,
.it-map__pin.is-active .it-map__pinAura{
  opacity:1;
  transform:scale(1.06);
}

.it-map__pin:hover .it-map__pinHalo,
.it-map__pin:focus .it-map__pinHalo,
.it-map__pin.is-active .it-map__pinHalo{
  opacity:1;
  animation:itMapPulse 2.2s cubic-bezier(.16,.84,.44,1) infinite;
}

.it-map__pin:focus-visible .it-map__pinPlate{
  stroke:rgba(15,23,42,.24);
  stroke-width:2.4;
}

.it-map__arrows{
  color:rgba(15,23,42,.16);
  opacity:.72;
  transition:color .25s ease, opacity .25s ease;
}
.it-map__arrow--a{ --arrow-delay: 0s; }
.it-map__arrow--b{ --arrow-delay: .12s; }
.it-map__arrow--c{ --arrow-delay: .24s; }
.it-map__arrowTrail{
  fill:none;
  stroke:currentColor;
  stroke-width:5.4;
  opacity:.16;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.it-map__arrowFlow{
  fill:none;
  stroke:currentColor;
  stroke-width:2.8;
  opacity:0;
  stroke-linecap:round;
  stroke-linejoin:round;
  stroke-dasharray:100;
  stroke-dashoffset:100;
}
.it-map__arrowLabel{
  font-family:var(--it-map-font, inherit);
  font-size:16px;
  font-weight:700;
  line-height:1.2;
  fill:currentColor;
  letter-spacing:.08em;
  text-transform:uppercase;
}

.js-itMapWrap[data-active-loc="florence"] .it-map__arrows--north{ color:var(--north); opacity:1; }
.js-itMapWrap[data-active-loc="avellino"] .it-map__arrows--south{ color:var(--south); opacity:1; }

.js-itMapWrap[data-active-loc="florence"] .it-map__arrows--north .it-map__arrowFlow,
.js-itMapWrap[data-active-loc="avellino"] .it-map__arrows--south .it-map__arrowFlow{
  opacity:.96;
  animation: itMapArrowBloom .82s cubic-bezier(.34,1.56,.64,1) forwards var(--arrow-delay);
}

.it-map__popup{
  position:absolute; min-width:320px; max-width:390px;
  background:linear-gradient(180deg, rgba(255,255,255,.98) 0%, rgba(248,250,252,.96) 100%);
  border:1px solid rgba(255,255,255,.74);
  border-radius:26px; box-shadow:0 26px 80px rgba(15,23,42,.18);
  padding:18px 18px 20px; display:none; z-index:5;
  backdrop-filter:blur(10px);
  overflow:hidden;
  transform-origin:0 100%;
}
.it-map__popup[aria-hidden="false"]{ display:block; animation:itMapPopupIn .28s cubic-bezier(.22,1,.36,1); }

.it-map__popup::before{
  content:"";
  position:absolute;
  left:0;
  top:0;
  right:0;
  height:5px;
  background:linear-gradient(90deg, rgba(var(--north-rgb), .98), rgba(var(--north-rgb), .42));
}

.js-itMapWrap[data-active-loc="avellino"] .it-map__popup::before{
  background:linear-gradient(90deg, rgba(var(--south-rgb), .98), rgba(var(--south-rgb), .40));
}

.it-map__popupClose{
  position:absolute; right:12px; top:10px; width:34px; height:34px;
  border:1px solid rgba(15,23,42,.08); background:rgba(255,255,255,.82); border-radius:12px;
  cursor:pointer; line-height:1; font-size:18px; color:var(--ink);
}
.it-map__popupBody{
  display:grid; grid-template-columns:74px 1fr; gap:16px;
  align-items:start; padding-top:28px;
}
.it-map__logo{
  width:74px; height:74px; border-radius:22px;
  background:linear-gradient(135deg, rgba(var(--north-rgb), .15), rgba(255,255,255,.98));
  border:1px solid rgba(var(--north-rgb), .10);
  display:grid; place-items:center;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.8);
  overflow:hidden;
}

.it-map__logoImage{
  display:block;
  width:46px;
  height:46px;
  object-fit:contain;
  object-position:center;
}

.it-map__logoBadge[hidden],
.it-map__logoImage[hidden]{
  display:none !important;
}

.it-map__logoBadge{
  display:inline-grid;
  place-items:center;
  width:46px;
  height:46px;
  border-radius:999px;
  background:linear-gradient(135deg, #9a63ad, #7f4692);
  color:#fff;
  font-family:var(--it-map-font, inherit);
  font-size:12px;
  font-weight:800;
  line-height:1;
  letter-spacing:.12em;
  box-shadow:0 12px 28px rgba(var(--north-rgb), .28);
}
.it-map__popupTitle{ font-family:var(--it-map-font, inherit); font-size:19px; font-weight:800; line-height:1.2; color:var(--ink); margin:0 0 7px; letter-spacing:-.02em; }
.it-map__popupAddr{ font-family:var(--it-map-font, inherit); font-size:13px; font-weight:500; line-height:1.65; color:var(--muted); margin:0 0 14px; }
.it-map__popupCta{
  display:inline-flex; align-items:center; gap:8px;
  padding:12px 16px; border-radius:999px;
  background:linear-gradient(135deg, #9a63ad, #7f4692); color:#fff !important; text-decoration:none;
  font-family:var(--it-map-font, inherit);
  font-size:13px;
  font-weight:700;
  line-height:1;
  letter-spacing:.03em;
  box-shadow:0 14px 28px rgba(var(--north-rgb), .22);
}
.it-map__popupCta::after{
  content:"\2192";
  font-size:14px;
}
.it-map__popupCta:hover,
.it-map__popupCta:focus,
.it-map__popupCta:active,
.it-map__popupCta:visited{
  color:#fff !important;
  text-decoration:none;
}
.it-map__popupCta:hover{ opacity:.96; transform:translateY(-1px); }

.js-itMapWrap[data-active-loc="avellino"] .it-map__logoBadge{
  background:linear-gradient(135deg, #f18a52, #ea5a0b);
  box-shadow:0 12px 26px rgba(var(--south-rgb), .24);
}

.js-itMapWrap[data-active-loc="avellino"] .it-map__logo{
  background:linear-gradient(135deg, rgba(var(--south-rgb), .14), rgba(255,255,255,.98));
  border-color:rgba(var(--south-rgb), .10);
}

.js-itMapWrap[data-active-loc="avellino"] .it-map__popupCta{
  background:linear-gradient(135deg, #f18a52, #ea5a0b);
  box-shadow:0 12px 26px rgba(var(--south-rgb), .22);
}

@keyframes itMapPulse{
  0% { transform:scale(.76); opacity:.52; }
  100% { transform:scale(1.52); opacity:0; }
}

@keyframes itMapArrowBloom{
  0%{ opacity:0; stroke-dashoffset:100; }
  35%{ opacity:.94; }
  100%{ opacity:.94; stroke-dashoffset:0; }
}

@keyframes itMapPopupIn{
  from { opacity:0; transform:translateY(10px) scale(.96); }
  to { opacity:1; transform:translateY(0) scale(1); }
}

@media (max-width:480px){
  .it-map{ padding:56px 0; }
  .it-map__wrap{ border-radius:24px; padding:20px 12px 10px; }
  .it-map__header{ margin-bottom:22px; }
  .it-map__popup{ min-width:240px; }
  .it-map__popupBody{ grid-template-columns:64px 1fr; gap:12px; }
  .it-map__logo{ width:64px; height:64px; border-radius:18px; }
  .it-map__logoImage{ width:40px; height:40px; }
  .it-map__logoBadge{ width:40px; height:40px; font-size:11px; }
}
