/* ================================================================
   ReaLink — CITY PAGES (PHP dinamiche)
   Stili per /valutazione-immobiliare/[citta] e /acquisizione-immobiliare/[citta]
   Riusa variabili globali di style.css
   ================================================================ */

/* HERO sezione */
.city-hero {
  position: relative;
  padding: clamp(110px, 14vw, 170px) 0 clamp(60px, 8vw, 90px);
  background: linear-gradient(160deg, #ffffff 0%, #faf6f2 50%, #fff5ed 100%);
  overflow: hidden;
  isolation: isolate;
}
.city-hero::before {
  content: "";
  position: absolute;
  inset: -10%;
  background:
    radial-gradient(circle at 78% 25%, rgba(231, 89, 31, 0.10), transparent 55%),
    radial-gradient(circle at 22% 85%, rgba(30, 58, 138, 0.08), transparent 55%);
  pointer-events: none;
  z-index: -1;
}
.city-hero--agenti {
  background: linear-gradient(160deg, #ffffff 0%, #f0f4ff 50%, #e0e8f7 100%);
}
.city-hero--agenti::before {
  background:
    radial-gradient(circle at 78% 25%, rgba(30, 58, 138, 0.14), transparent 55%),
    radial-gradient(circle at 22% 85%, rgba(231, 89, 31, 0.08), transparent 55%);
}
.city-hero-inner {
  max-width: 820px;
  margin: 0 auto;
  text-align: center;
}
.city-hero-inner h1 {
  font-family: var(--font-display);
  font-size: clamp(2.2rem, 5.5vw, 3.6rem);
  line-height: 1.05;
  letter-spacing: -0.03em;
  font-weight: 700;
  color: var(--color-ink);
  margin: 14px 0 18px;
}
.city-hero-inner h1 em {
  font-style: normal;
  color: var(--book-orange);
  background: linear-gradient(180deg, transparent 62%, rgba(231, 89, 31, 0.20) 62%, rgba(231, 89, 31, 0.20) 92%, transparent 92%);
  padding: 0 0.08em;
}
.city-hero--agenti .city-hero-inner h1 em {
  color: #1e3a8a;
  background: linear-gradient(180deg, transparent 62%, rgba(30, 58, 138, 0.18) 62%, rgba(30, 58, 138, 0.18) 92%, transparent 92%);
}
.city-hero-inner .lead {
  font-size: clamp(1rem, 1.4vw, 1.18rem);
  color: var(--color-ink-soft);
  line-height: 1.6;
  max-width: 680px;
  margin: 0 auto;
}

/* Breadcrumb */
.city-breadcrumbs {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 6px;
  font-size: 0.82rem;
  color: var(--color-muted);
  margin-bottom: 14px;
}
.city-breadcrumbs a {
  color: var(--book-orange);
  font-weight: 600;
  text-decoration: none;
}
.city-breadcrumbs a:hover { text-decoration: underline; }
.city-breadcrumbs span:not(:last-child) { color: var(--color-line); margin: 0 2px; }
.city-hero--agenti .city-breadcrumbs a { color: #1e3a8a; }

/* CTA row sotto il lead */
.city-cta-row {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  flex-wrap: wrap;
  margin-top: 30px;
}
.city-cta-meta {
  font-size: 0.85rem;
  color: var(--color-muted);
}

/* ============================================
   SEZIONI generic
   ============================================ */
.city-section {
  padding: clamp(60px, 8vw, 100px) 0;
}
.city-section--alt {
  background: #faf6f2;
}
.city-section--cta {
  padding-top: 0;
  padding-bottom: clamp(80px, 10vw, 120px);
}
.city-section h2 {
  font-family: var(--font-display);
  font-size: clamp(1.6rem, 3vw, 2.4rem);
  letter-spacing: -0.02em;
  line-height: 1.15;
  margin: 8px 0 16px;
  color: var(--color-ink);
}
.city-section h2 em {
  font-style: normal;
  color: var(--book-orange);
}
.city-section--alt h2 em { color: var(--book-orange); }
.city-section h2.center,
.city-section-sub {
  text-align: center;
  color: var(--color-ink-soft);
  max-width: 640px;
  margin-left: auto;
  margin-right: auto;
}

/* ============================================
   HUB GRID (lista città)
   ============================================ */
.city-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 14px;
  margin-top: 36px;
}
.city-tile {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 18px 20px;
  background: #fff;
  border: 1px solid var(--color-line);
  border-radius: 14px;
  text-decoration: none;
  color: var(--color-ink);
  transition: transform .25s cubic-bezier(.22,.61,.36,1),
              box-shadow .25s cubic-bezier(.22,.61,.36,1),
              border-color .25s ease;
}
.city-tile:hover {
  transform: translateY(-3px);
  box-shadow: 0 12px 28px -12px rgba(15,15,16,.18), 0 4px 12px -4px rgba(231,89,31,.18);
  border-color: rgba(231, 89, 31, 0.35);
}
.city-tile strong {
  font-family: var(--font-display);
  font-size: 1.05rem;
  letter-spacing: -0.01em;
}
.city-tile span {
  font-size: 0.78rem;
  color: var(--color-muted);
}
.city-tile--agenti:hover {
  border-color: rgba(30, 58, 138, 0.4);
  box-shadow: 0 12px 28px -12px rgba(15,15,16,.18), 0 4px 12px -4px rgba(30,58,138,.20);
}

/* ============================================
   GRIGLIA 2 COLONNE (testo + databox)
   ============================================ */
.city-grid-2 {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: 50px;
  align-items: start;
}
@media (max-width: 880px) {
  .city-grid-2 { grid-template-columns: 1fr; gap: 30px; }
}
.city-grid-2 p {
  font-size: 1rem;
  line-height: 1.65;
  color: var(--color-ink-soft);
  margin: 0 0 16px;
}
.city-grid-2 p a {
  color: var(--book-orange);
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* DATABOX (scheda città laterale) */
.city-databox {
  background: linear-gradient(160deg, #fff5ed, #ffe9dd);
  border: 1px solid rgba(231, 89, 31, 0.20);
  border-radius: 18px;
  padding: 30px 28px;
  position: sticky;
  top: 110px;
}
.city-databox--agenti {
  background: linear-gradient(160deg, #f0f4ff, #e0e8f7);
  border-color: rgba(30, 58, 138, 0.20);
}
.city-databox-num {
  font-family: var(--font-numeric);
  font-size: clamp(2.2rem, 4vw, 2.8rem);
  font-weight: 800;
  color: var(--book-orange);
  letter-spacing: -0.03em;
  line-height: 1;
}
.city-databox--agenti .city-databox-num { color: #1e3a8a; }
.city-databox-lbl {
  margin-top: 6px;
  font-size: 0.85rem;
  color: var(--color-ink-soft);
  font-weight: 600;
}
.city-databox hr {
  border: none;
  border-top: 1px dashed rgba(231, 89, 31, 0.25);
  margin: 20px 0;
}
.city-databox--agenti hr { border-top-color: rgba(30, 58, 138, 0.25); }
.city-databox ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.city-databox li {
  font-size: 0.92rem;
  color: var(--color-ink-soft);
  line-height: 1.45;
}
.city-databox li strong { color: var(--color-ink); }

/* ============================================
   FACTORS GRID (4-5 fattori)
   ============================================ */
.city-factors {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 18px;
  margin-top: 36px;
}
.city-factor {
  position: relative;
  padding: 28px 22px 22px;
  background: #fff;
  border: 1px solid var(--color-line);
  border-radius: 14px;
  transition: transform .25s, box-shadow .25s;
}
.city-factor:hover {
  transform: translateY(-3px);
  box-shadow: 0 12px 30px -14px rgba(15,15,16,.18);
}
.city-factor-num {
  width: 38px;
  height: 38px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-numeric);
  font-weight: 800;
  font-size: 1.05rem;
  color: #fff;
  background: linear-gradient(135deg, var(--book-orange), var(--book-orange-bright));
  box-shadow: 0 4px 12px rgba(231,89,31,.4);
  margin-bottom: 14px;
}
.city-factor--agenti .city-factor-num {
  background: linear-gradient(135deg, #1e3a8a, #2a4fc9);
  box-shadow: 0 4px 12px rgba(30,58,138,.4);
}
.city-factor h3 {
  font-family: var(--font-display);
  font-size: 1.1rem;
  letter-spacing: -0.01em;
  margin: 0 0 8px;
  color: var(--color-ink);
}
.city-factor p {
  font-size: 0.9rem;
  color: var(--color-ink-soft);
  line-height: 1.5;
  margin: 0;
}

/* ============================================
   STATS ROW (numeri grandi)
   ============================================ */
.city-stats-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 14px;
  margin-top: 28px;
  padding: 28px;
  background: linear-gradient(135deg, #15110f, #1f1814);
  border-radius: 18px;
  color: #fff;
}
.city-stat { text-align: center; }
.city-stat .num {
  font-family: var(--font-numeric);
  font-size: clamp(1.8rem, 3.5vw, 2.4rem);
  font-weight: 800;
  color: var(--book-orange-bright);
  letter-spacing: -0.03em;
  line-height: 1;
}
.city-stat .lbl {
  margin-top: 6px;
  font-size: 0.78rem;
  color: rgba(255,255,255,.65);
  font-weight: 600;
}

/* ============================================
   CALLOUT (box "Come funziona AI" — laterale)
   ============================================ */
.city-callout {
  padding: 30px 28px;
  background: linear-gradient(160deg, #fff5ed, #ffe9dd);
  border: 1px solid rgba(231, 89, 31, 0.20);
  border-radius: 18px;
  text-align: center;
}
.city-callout-num {
  font-family: var(--font-numeric);
  font-size: 2.2rem;
  font-weight: 800;
  color: var(--book-orange);
  letter-spacing: -0.03em;
  line-height: 1;
  margin-bottom: 4px;
}
.city-callout p {
  font-size: 0.92rem;
  color: var(--color-ink-soft);
  margin: 0;
}
.city-callout hr {
  border: none;
  border-top: 1px dashed rgba(231,89,31,.25);
  margin: 18px 0;
}

/* ============================================
   BULLETS lista
   ============================================ */
.city-bullets {
  list-style: none;
  padding: 0;
  margin: 14px 0 20px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.city-bullets li {
  position: relative;
  padding-left: 26px;
  font-size: 0.98rem;
  color: var(--color-ink-soft);
  line-height: 1.5;
}
.city-bullets li::before {
  content: "→";
  position: absolute;
  left: 0;
  top: 0;
  color: var(--book-orange);
  font-weight: 800;
}

/* ============================================
   PILLS (comuni limitrofi)
   ============================================ */
.city-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 22px;
}
.city-pill {
  display: inline-flex;
  align-items: center;
  padding: 10px 18px;
  background: #fff;
  border: 1.5px solid rgba(231, 89, 31, 0.30);
  border-radius: 999px;
  font-size: 0.88rem;
  font-weight: 600;
  color: var(--book-orange);
  text-decoration: none;
  transition: all .2s cubic-bezier(.22,.61,.36,1);
}
.city-pill:hover {
  background: var(--book-orange);
  color: #fff;
  transform: translateY(-2px);
  box-shadow: 0 8px 20px -6px rgba(231,89,31,.4);
}
.city-pill--agenti {
  border-color: rgba(30, 58, 138, 0.30);
  color: #1e3a8a;
}
.city-pill--agenti:hover {
  background: #1e3a8a;
  color: #fff;
  box-shadow: 0 8px 20px -6px rgba(30,58,138,.4);
}
.city-pill--disabled {
  opacity: 0.5;
  cursor: not-allowed;
  pointer-events: none;
}

/* ============================================
   FAQ accordion
   ============================================ */
.city-faq-wrap {
  max-width: 820px;
  margin: 0 auto;
}
.city-faq {
  background: #fff;
  border: 1px solid var(--color-line);
  border-radius: 14px;
  padding: 0;
  margin-bottom: 12px;
  overflow: hidden;
  transition: border-color .25s, box-shadow .25s;
}
.city-faq[open] {
  border-color: rgba(231, 89, 31, 0.35);
  box-shadow: 0 8px 24px -12px rgba(231,89,31,.15);
}
.city-faq summary {
  cursor: pointer;
  list-style: none;
  padding: 20px 24px;
  font-family: var(--font-display);
  font-size: 1.05rem;
  font-weight: 600;
  color: var(--color-ink);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}
.city-faq summary::-webkit-details-marker { display: none; }
.city-faq summary::after {
  content: "+";
  font-family: var(--font-numeric);
  font-weight: 700;
  font-size: 1.4rem;
  color: var(--book-orange);
  transition: transform .2s;
  flex-shrink: 0;
}
.city-faq[open] summary::after {
  content: "−";
  transform: rotate(0deg);
}
.city-faq p {
  padding: 0 24px 22px;
  margin: 0;
  font-size: 0.95rem;
  line-height: 1.6;
  color: var(--color-ink-soft);
}

/* ============================================
   MOBILE adjustments
   ============================================ */
@media (max-width: 720px) {
  .city-grid { grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); }
  .city-tile { padding: 14px 16px; }
  .city-tile strong { font-size: 0.95rem; }
  .city-tile span { font-size: 0.72rem; }
  .city-databox { position: static; padding: 24px 22px; }
  .city-factors { grid-template-columns: 1fr 1fr; gap: 12px; }
  .city-factor { padding: 22px 18px 18px; }
  .city-stats-row { padding: 22px 18px; gap: 10px; }
  .city-faq summary { padding: 16px 18px; font-size: 0.95rem; }
  .city-faq p { padding: 0 18px 18px; font-size: 0.88rem; }
  .city-cta-row { flex-direction: column; gap: 10px; }
}
@media (max-width: 480px) {
  .city-factors { grid-template-columns: 1fr; }
}

/* ============================================
   PREZZI / QUOTAZIONI (€/m² + tabella tipologie)
   ============================================ */
.city-prezzi-sec { background: #faf6f2; }
.city-prezzi-sec--agenti { background: #f0f4ff; }
.city-prezzi-sec h2 { max-width: 780px; }
.city-prezzi-sec > .container > p {
  font-size: 1rem;
  line-height: 1.65;
  color: var(--color-ink-soft);
  max-width: 780px;
  margin: 0 0 10px;
}
.city-prezzi-sec > .container > p strong { color: var(--color-ink); }
.city-price-grid {
  display: grid;
  grid-template-columns: 300px 1fr;
  gap: 28px;
  align-items: stretch;
  margin: 28px 0 18px;
}
@media (max-width: 760px) { .city-price-grid { grid-template-columns: 1fr; gap: 18px; } }
.city-price-hero {
  display: flex;
  flex-direction: column;
  justify-content: center;
  text-align: center;
  padding: 32px 24px;
  border-radius: 18px;
  background: linear-gradient(160deg, #fff5ed, #ffe2d2);
  border: 1px solid rgba(231, 89, 31, 0.22);
}
.city-price-hero--agenti {
  background: linear-gradient(160deg, #eaf0ff, #d6e2fb);
  border-color: rgba(30, 58, 138, 0.22);
}
.cph-num {
  font-family: var(--font-numeric);
  font-size: clamp(2.4rem, 5vw, 3.1rem);
  font-weight: 800;
  letter-spacing: -0.04em;
  line-height: 1;
  color: var(--book-orange);
}
.city-price-hero--agenti .cph-num { color: #1e3a8a; }
.cph-num span { font-size: 1.1rem; font-weight: 700; opacity: 0.8; }
.cph-lbl {
  margin-top: 10px;
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--color-ink-soft);
  line-height: 1.4;
}
.city-price-table {
  width: 100%;
  border-collapse: collapse;
  background: #fff;
  border: 1px solid var(--color-line);
  border-radius: 16px;
  overflow: hidden;
}
.city-price-table th,
.city-price-table td {
  text-align: left;
  padding: 14px 18px;
  font-size: 0.92rem;
  border-bottom: 1px solid var(--color-line);
}
.city-price-table thead th {
  background: #faf6f2;
  font-family: var(--font-display);
  font-size: 0.76rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--color-muted);
}
.city-prezzi-sec--agenti .city-price-table thead th { background: #eef2fb; }
.city-price-table tbody tr:last-child td { border-bottom: none; }
.city-price-table tbody td:first-child { font-weight: 600; color: var(--color-ink); }
.city-price-table tbody td:last-child {
  font-family: var(--font-numeric);
  font-weight: 600;
  color: var(--color-ink);
  white-space: nowrap;
}
.city-price-note {
  font-size: 0.82rem !important;
  color: var(--color-muted) !important;
  max-width: 780px;
  line-height: 1.55 !important;
  margin: 4px 0 22px !important;
}
@media (max-width: 560px) {
  .city-price-table thead { display: none; }
  .city-price-table, .city-price-table tbody, .city-price-table tr, .city-price-table td { display: block; width: 100%; }
  .city-price-table tr { padding: 8px 4px; border-bottom: 1px solid var(--color-line); }
  .city-price-table td { border: none; padding: 5px 18px; display: flex; justify-content: space-between; gap: 12px; }
  .city-price-table td::before { content: attr(data-l); font-weight: 700; color: var(--color-muted); font-size: 0.76rem; }
}

/* Tabella prezzi per quartiere (citta grandi con dati OMI per microzona) */
.city-quartieri { margin-top: 30px; }
.city-quartieri > h3 { font-size: 1.25rem; margin: 0 0 6px; letter-spacing: -.01em; }
.city-quartieri > p { color: var(--color-muted); max-width: 820px; margin: 0 0 16px; font-size: .95rem; line-height: 1.55; }
.city-qtable-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.city-qtable { margin: 0; }
.city-qtable th:nth-child(n+2), .city-qtable td:nth-child(n+2) { text-align: right; white-space: nowrap; }
.city-qtable td:nth-child(2) { font-variant-numeric: tabular-nums; font-weight: 700; }
@media (max-width: 560px) {
  .city-qtable th:nth-child(n+2), .city-qtable td:nth-child(n+2) { text-align: left; }
}

/* ============================================
   HERO ADDRESS BOX (valutatore indirizzo-first)
   ============================================ */
.city-valbox {
  display: flex;
  align-items: center;
  gap: 8px;
  max-width: 620px;
  margin: 28px auto 0;
  background: #fff;
  border: 1.5px solid rgba(231, 89, 31, 0.25);
  border-radius: 999px;
  padding: 8px 8px 8px 18px;
  box-shadow: 0 18px 44px -18px rgba(231,89,31,0.45), 0 4px 14px -6px rgba(15,15,16,0.12);
}
.city-valbox-pin { flex: 0 0 22px; color: var(--book-orange); display: flex; }
.city-valbox-pin svg { width: 22px; height: 22px; }
.city-valbox-input {
  flex: 1;
  border: none;
  outline: none;
  background: transparent;
  font-family: inherit;
  font-size: 1rem;
  color: var(--color-ink);
  padding: 12px 6px;
  min-width: 0;
}
.city-valbox-input::placeholder { color: var(--color-muted); }
.city-valbox-btn { flex: 0 0 auto; white-space: nowrap; border-radius: 999px !important; }
.city-valbox-trust {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 18px;
  margin-top: 14px;
  font-size: 0.85rem;
  color: var(--color-ink-soft);
  font-weight: 600;
}
@media (max-width: 560px) {
  .city-valbox { flex-wrap: wrap; border-radius: 18px; padding: 12px; gap: 10px; }
  .city-valbox-pin { display: none; }
  .city-valbox-input { flex: 1 1 100%; border: 1px solid var(--color-line); border-radius: 12px; padding: 14px; }
  .city-valbox-btn { flex: 1 1 100%; border-radius: 12px !important; }
  .city-valbox-trust { gap: 12px; }
}

/* ============================================
   BARRA DI RICERCA CITTÀ (autocomplete comuni + regioni)
   ============================================ */
.city-search { position: relative; max-width: 560px; margin: 24px auto 0; text-align: left; }
.city-search-ic { position: absolute; left: 18px; top: 24px; transform: translateY(-50%); font-size: 1rem; opacity: .7; pointer-events: none; }
.city-search-input {
  width: 100%;
  padding: 15px 18px 15px 46px;
  border: 1.5px solid rgba(231, 89, 31, 0.25);
  border-radius: 999px;
  background: #fff;
  font-family: inherit;
  font-size: 1rem;
  color: var(--color-ink);
  box-shadow: 0 12px 30px -16px rgba(15,15,16,0.18);
  outline: none;
}
.city-search-input:focus { border-color: var(--book-orange); }
.city-hero--agenti .city-search-input:focus { border-color: #1e3a8a; }
.city-search-input::placeholder { color: var(--color-muted); }
.city-search-dropdown {
  display: none;
  position: absolute;
  top: calc(100% + 8px);
  left: 0; right: 0;
  background: #fff;
  border: 1px solid var(--color-line);
  border-radius: 16px;
  box-shadow: 0 20px 50px -16px rgba(15,15,16,0.28);
  overflow: hidden;
  z-index: 50;
}
.city-search-item {
  display: flex; align-items: center; gap: 12px;
  padding: 12px 18px;
  text-decoration: none;
  color: var(--color-ink);
  border-bottom: 1px solid var(--color-line);
}
.city-search-item:last-child { border-bottom: none; }
.city-search-item:hover, .city-search-item.active { background: #faf6f2; }
.cs-ic { flex: 0 0 20px; font-size: 1rem; }
.cs-nome { font-weight: 600; flex: 1; min-width: 0; }
.cs-badge {
  font-size: .68rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em;
  color: var(--book-orange); background: var(--book-orange-soft, #ffe9dd);
  padding: 1px 7px; border-radius: 999px; margin-left: 4px;
}
.cs-meta { font-size: .8rem; color: var(--color-muted); white-space: nowrap; flex: 0 0 auto; }
@media (max-width: 560px) {
  .cs-meta { display: none; }
  .city-search-item { padding: 14px 16px; }
}
