/* ============================================================
   cards.css — Stili delle card meteo (current + forecast)
   ============================================================ */

/* ── Card contenitore ──────────────────────────────────────── */
.weather-card {
  background:    var(--surface);
  border:        1px solid var(--border);
  border-radius: var(--radius);
  overflow:      hidden;
  transition:    border-color 0.2s, transform 0.2s;
  animation:     fadeIn 0.4s ease both;
}

.weather-card:hover {
  border-color: rgba(0,212,255,0.3);
  transform:    translateY(-2px);
}

/* ── Header card ───────────────────────────────────────────── */
.card-header {
  padding:         14px 16px 12px;
  background:      var(--surface2);
  border-bottom:   1px solid var(--border);
  display:         flex;
  justify-content: space-between;
  align-items:     flex-start;
  gap:             8px;
}

.city-name {
  font-size:      1.05rem;
  font-weight:    700;
  letter-spacing: -0.01em;
  line-height:    1.2;
}

.city-coords {
  font-family: 'DM Mono', monospace;
  font-size:   0.6rem;
  color:       var(--accent);
  margin-top:  3px;
}

.card-badge {
  font-family:    'DM Mono', monospace;
  font-size:      0.55rem;
  background:     rgba(0,212,255,0.1);
  color:          var(--accent);
  border:         1px solid rgba(0,212,255,0.2);
  border-radius:  4px;
  padding:        3px 7px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  white-space:    nowrap;
  flex-shrink:    0;
}

.card-badge.custom {
  background:   rgba(255,107,53,0.1);
  color:        var(--accent2);
  border-color: rgba(255,107,53,0.2);
}

/* ── Indicatore stato Windy ────────────────────────────────── */
.windy-dot {
  display:       inline-block;
  width:         8px;
  height:        8px;
  border-radius: 50%;
  flex-shrink:   0;
  cursor:        default;
}
.windy-dot--ok  { background: #22c55e; box-shadow: 0 0 4px #22c55e88; }
.windy-dot--err { background: #ef4444; box-shadow: 0 0 4px #ef444488; }

.windy-status-row {
  display:     flex;
  align-items: center;
  gap:         5px;
}
.windy-status-label {
  font-family:    'DM Mono', monospace;
  font-size:      0.55rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color:          var(--text-muted, #8b949e);
}

/* ── Badge inline Windy (fonte dati vento) ─────────────────── */
.windy-badge {
  display:        inline-block;
  font-family:    'DM Mono', monospace;
  font-size:      0.45rem;
  font-weight:    700;
  line-height:    1;
  background:     rgba(0,212,255,0.12);
  color:          var(--accent);
  border:         1px solid rgba(0,212,255,0.3);
  border-radius:  3px;
  padding:        1px 4px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  vertical-align: middle;
  margin-left:    4px;
}

/* ── Meteo attuale ─────────────────────────────────────────── */
.current-weather {
  padding:     16px;
  display:     flex;
  align-items: center;
  gap:         14px;
}

.weather-icon {
  font-size:   2.6rem;
  line-height: 1;
  filter:      drop-shadow(0 0 10px rgba(0,212,255,0.3));
  flex-shrink: 0;
}

.weather-main { flex: 1; min-width: 0; }

.temp-big {
  font-size:      2.4rem;
  font-weight:    800;
  letter-spacing: -0.04em;
  line-height:    1;
}

.temp-big .unit {
  font-size:   1rem;
  color:       var(--text-muted);
  font-weight: 400;
}

.weather-desc {
  color:         var(--text-dim);
  font-size:     0.82rem;
  margin-top:    4px;
  text-transform: capitalize;
  overflow-wrap: break-word;
  word-break:    break-word;
}

.last-update {
  font-family: 'DM Mono', monospace;
  font-size:   0.58rem;
  color:       var(--text-muted);
  margin-top:  5px;
}

.tz-label {
  display:       inline-block;
  font-family:   'DM Mono', monospace;
  font-size:     0.55rem;
  color:         var(--text-muted);
  background:    var(--surface2);
  border:        1px solid var(--border);
  border-radius: 4px;
  padding:       1px 4px;
  margin-left:   4px;
  vertical-align: middle;
}

/* ── Dettagli ──────────────────────────────────────────────── */
.weather-details {
  display:               grid;
  grid-template-columns: repeat(3, 1fr);
  gap:                   1px;
  background:            var(--border);
  border-top:            1px solid var(--border);
}

.detail-item {
  background: var(--surface);
  padding:    10px 8px;
  text-align: center;
}

.detail-label {
  font-family:    'DM Mono', monospace;
  font-size:      0.5rem;
  color:          var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin-bottom:  3px;
}

.detail-value {
  font-weight: 600;
  font-size:   0.85rem;
}

/* ── Sezione previsioni ────────────────────────────────────── */
.forecast-section { border-top: 1px solid var(--border); }

.forecast-header {
  padding:        11px 16px;
  font-family:    'DM Mono', monospace;
  font-size:      0.58rem;
  color:          var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  background:     var(--surface2);
  display:        flex;
  justify-content: space-between;
  align-items:    center;
  cursor:         pointer;
  user-select:    none;
  min-height:     44px; /* tap area mobile */
  touch-action:   manipulation;
}

.forecast-header:hover  { color: var(--accent); }
.forecast-header:active { background: var(--border); }

.forecast-toggle { transition: transform 0.2s; }
.forecast-toggle.open { transform: rotate(180deg); }

.forecast-container { display: none; }
.forecast-container.open { display: block; }

.forecast-day-group {
  border-top: 1px solid var(--border);
  padding:    10px 16px;
}

.forecast-day-label {
  font-family:    'DM Mono', monospace;
  font-size:      0.58rem;
  color:          var(--accent);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  margin-bottom:  8px;
}

.forecast-slots {
  display:        flex;
  gap:            8px;
  overflow-x:     auto;
  padding-bottom: 6px;
  /* scroll fluido su iOS */
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
  scrollbar-color: var(--border) transparent;
}

.forecast-slot {
  flex:          0 0 auto;
  background:    var(--bg);
  border:        1px solid var(--border);
  border-radius: 8px;
  padding:       8px 10px;
  text-align:    center;
  min-width:     66px;
}

.slot-time {
  font-family:   'DM Mono', monospace;
  font-size:     0.58rem;
  color:         var(--text-muted);
  margin-bottom: 4px;
}

.slot-icon { font-size: 1.1rem; margin-bottom: 4px; }

.slot-temp { font-size: 0.82rem; font-weight: 600; }

.slot-temp .feels {
  font-size:   0.58rem;
  color:       var(--text-muted);
  font-weight: 400;
  display:     block;
  margin-top:  2px;
}

/* ── Loading / Error ───────────────────────────────────────── */
.card-loading {
  padding:     36px 20px;
  text-align:  center;
  color:       var(--text-muted);
  font-family: 'DM Mono', monospace;
  font-size:   0.78rem;
}

.card-error {
  padding:     18px;
  color:       var(--danger);
  font-family: 'DM Mono', monospace;
  font-size:   0.72rem;
  text-align:  center;
}

/* ── Desktop: card leggermente più grandi ──────────────────── */
@media (min-width: 900px) {
  .card-header    { padding: 16px 20px 12px; }
  .current-weather { padding: 20px; gap: 16px; }
  .weather-icon   { font-size: 3rem; }
  .temp-big       { font-size: 2.8rem; }
  .forecast-day-group { padding: 10px 20px; }
  .forecast-slot  { min-width: 72px; padding: 8px 12px; }
}