/* ---- Booking page extra styles (estratti da prenota.php) ---- */
.booking-steps { display:flex; gap:0; margin-bottom:var(--space-12); counter-reset:step; }
.booking-step  { flex:1; position:relative; text-align:center; }
.booking-step::before {
  content: counter(step); counter-increment: step;
  display:flex; align-items:center; justify-content:center;
  width:40px; height:40px; border-radius:50%;
  background:var(--color-border); color:var(--color-text-muted);
  font-weight:700; font-size:var(--fs-sm);
  margin:0 auto var(--space-2);
  position:relative; z-index:1;
  transition:background .3s, color .3s;
}
.booking-step::after {
  content:''; position:absolute; top:20px; left:50%; right:-50%;
  height:2px; background:var(--color-border);
  z-index:0;
}
.booking-step:last-child::after { display:none; }
.booking-step.active::before  { background:var(--color-primary); color:#fff; }
.booking-step.done::before    { background:var(--color-success);  color:#fff; content:'✓'; }
.booking-step-label { font-size:var(--fs-xs); color:var(--color-text-muted); font-weight:500; }
.booking-step.active .booking-step-label { color:var(--color-primary); font-weight:600; }

.visit-card {
  border:2px solid var(--color-border);
  border-radius:var(--radius-lg);
  padding:var(--space-5);
  cursor:pointer;
  transition:border-color .2s, background .2s, transform .15s;
  display:flex; align-items:flex-start; gap:var(--space-4);
  background:var(--color-surface);
}
.visit-card:hover   { border-color:var(--color-primary); transform:translateY(-2px); }
.visit-card.selected{ border-color:var(--color-primary); background:var(--color-primary-light)33; }
.visit-card input[type=radio] { display:none; }
.visit-icon {
  width:52px; height:52px; border-radius:var(--radius-md);
  background:linear-gradient(135deg,var(--color-primary),var(--color-secondary));
  display:flex; align-items:center; justify-content:center; flex-shrink:0;
}
.visit-icon i { color:#fff; font-size:1.3rem; }

.slot-grid {
  display:grid; grid-template-columns:repeat(auto-fill,minmax(90px,1fr));
  gap:var(--space-2); margin-top:var(--space-4);
}
.slot-btn {
  padding:var(--space-2) var(--space-3);
  border:1.5px solid var(--color-border);
  border-radius:var(--radius-md);
  background:var(--color-surface);
  cursor:pointer; font-size:var(--fs-sm); font-weight:500;
  color:var(--color-text); text-align:center;
  transition:all .15s;
}
.slot-btn:hover:not(.slot-taken):not(.slot-loading) {
  border-color:var(--color-primary); background:var(--color-primary-light)22; color:var(--color-primary);
}
.slot-btn.selected   { background:var(--color-primary); color:#fff; border-color:var(--color-primary); }
.slot-btn.slot-taken { opacity:.4; cursor:not-allowed; text-decoration:line-through; }
.slot-btn.slot-loading { opacity:.5; cursor:wait; }

.booking-panel { background:var(--color-surface); border:1px solid var(--color-border); border-radius:var(--radius-xl); padding:var(--space-8); }
.booking-panel + .booking-panel { margin-top:var(--space-6); }

.recap-row { display:flex; justify-content:space-between; padding:var(--space-3) 0; border-bottom:1px solid var(--color-border-light); font-size:var(--fs-sm); }
.recap-row:last-child { border-bottom:none; }
.recap-label { color:var(--color-text-muted); }
.recap-value { font-weight:600; color:var(--color-text); }

.gcal-btn {
  display:inline-flex; align-items:center; gap:var(--space-2);
  padding:var(--space-3) var(--space-6);
  background:#4285F4; color:#fff; border-radius:var(--radius-md);
  text-decoration:none; font-weight:600; font-size:var(--fs-sm);
  transition:background .2s;
}
.gcal-btn:hover { background:#3367D6; }

/* ---- Mini calendario disponibilità ---- */
.mini-cal { user-select:none; }
.mini-cal__nav { display:flex; align-items:center; justify-content:space-between; margin-bottom:var(--space-3); }
.mini-cal__nav-btn { background:none; border:1px solid var(--color-border); border-radius:var(--radius-md); width:32px; height:32px; cursor:pointer; font-size:1rem; color:var(--color-text-muted); transition:background .15s; display:flex; align-items:center; justify-content:center; }
.mini-cal__nav-btn:hover { background:var(--color-bg-alt); color:var(--color-primary); }
.mini-cal__month { font-weight:700; font-size:var(--fs-sm); color:var(--color-text); text-transform:capitalize; }
.mini-cal__grid { display:grid; grid-template-columns:repeat(7,1fr); gap:3px; }
.mini-cal__dow { text-align:center; font-size:0.65rem; font-weight:600; color:var(--color-text-muted); padding:2px 0 6px; }
.mini-cal__day { aspect-ratio:1; display:flex; align-items:center; justify-content:center; border-radius:var(--radius-sm); font-size:var(--fs-xs); font-weight:500; position:relative; transition:background .15s; }
.mini-cal__day--empty { }
.mini-cal__day--past { color:var(--color-text-muted); opacity:.4; cursor:default; }
.mini-cal__day--closed { color:var(--color-text-muted); opacity:.35; cursor:default; }
.mini-cal__day--loading { color:var(--color-text-muted); cursor:default; }
.mini-cal__day--open { cursor:pointer; color:var(--color-primary); font-weight:700; }
.mini-cal__day--open:hover { background:var(--color-primary); color:#fff; }
.mini-cal__day--full { cursor:not-allowed; color:var(--color-danger); opacity:.6; }
.mini-cal__day--selected { background:var(--color-primary) !important; color:#fff !important; border-radius:var(--radius-sm); }
.mini-cal__day--open::after { content:''; position:absolute; bottom:3px; left:50%; transform:translateX(-50%); width:4px; height:4px; border-radius:50%; background:var(--color-primary); }
.mini-cal__day--open:hover::after, .mini-cal__day--selected::after { background:#fff; }
.mini-cal__day--full::after { content:''; position:absolute; bottom:3px; left:50%; transform:translateX(-50%); width:4px; height:4px; border-radius:50%; background:var(--color-danger); opacity:.7; }
.mini-cal__legend { display:flex; gap:var(--space-4); margin-top:var(--space-3); flex-wrap:wrap; }
.mini-cal__legend-item { display:flex; align-items:center; gap:5px; font-size:.68rem; color:var(--color-text-muted); }
.mini-cal__legend-dot { width:8px; height:8px; border-radius:50%; flex-shrink:0; }
.mini-cal__slots-preview { margin-top:var(--space-4); padding-top:var(--space-4); border-top:1px solid var(--color-border-light); }
.mini-cal__slots-preview-title { font-size:var(--fs-xs); font-weight:600; color:var(--color-text-muted); margin-bottom:var(--space-2); text-transform:uppercase; letter-spacing:.05em; }
.mini-cal__slots-mini { display:flex; flex-wrap:wrap; gap:4px; }
.mini-cal__slot-chip { font-size:.7rem; padding:2px 7px; border-radius:20px; font-weight:600; border:1px solid; }
.mini-cal__slot-chip--avail { border-color:var(--color-primary); color:var(--color-primary); background:transparent; cursor:pointer; transition:background .12s; }
.mini-cal__slot-chip--avail:hover { background:var(--color-primary); color:#fff; }
.mini-cal__slot-chip--taken { border-color:var(--color-border); color:var(--color-text-muted); background:var(--color-bg-alt); text-decoration:line-through; opacity:.5; }

@media(max-width:768px) {
  .booking-steps { gap:0; }
  .booking-step-label { font-size:0.6rem; }
}
