/* ===== CALENDARIO (layout vertical, widgets arriba) ===== */

/* Contenedor general */
.calendar-layout{
  display:flex;
  flex-direction:column;
  gap:1.25rem;
}

/* Top: selector + confirmación en una grilla responsiva */
.calendar-top{
  display:grid;
  grid-template-columns: repeat(2, minmax(300px, 1fr));
  gap:1rem;
  width:100%;
  max-width: 860px;      /* <= límite de ancho */
  margin: 0 auto;        /* <= centrado */
}

@media (max-width: 768px){
  .calendar-top{
    grid-template-columns: 1fr;  /* apilado en mobile */
    max-width: 100%;
  }
}


/* Tarjetitas (usa el look del dashboard) */
.class-type-selector,
.booking-confirmation{
  background:var(--card-bg);
  border:1px solid var(--border-color);
  border-radius:12px;
  padding:1.25rem;
}

/* Selector de clase */
.class-type-selector h3{ margin-bottom:.5rem; }
.class-type-dropdown{ margin-top:.75rem; }
.class-type-dropdown select{
  width:100%;
  background:#2a2a2a;
  border:1px solid var(--border-color);
  color:#fff;
  padding:.8rem .9rem;
  border-radius:10px;
  font-size:1rem;
  cursor:pointer;
}
.class-type-dropdown select:focus{ outline:none; border-color:var(--accent); }

/* Confirmación */
.confirmation-title{ color:var(--accent); margin-bottom:.9rem; font-size:1.25rem; }
.confirmation-details{
  display:grid;
  grid-template-columns:auto 1fr;
  gap:8px 16px;
  margin-bottom:1rem;
}
.detail-label{ color:var(--neutral); font-weight:600; }
.detail-value{ font-weight:500; }

.confirmation-actions{
  display:flex; gap:.5rem; flex-wrap:wrap; justify-content:flex-end;
}
.required-selection{
  color:var(--danger); font-size:.9rem; margin-top:.25rem; width:100%; text-align:right; display:none;
}

/* Header del calendario */
.calendar-header{
  display:flex; align-items:center; justify-content:center;
  position:relative; min-height:48px; padding:0 56px; /* safe area para botones */
}
.calendar-title{
  margin:0; line-height:1.1;
  font-family:'Orbitron',sans-serif; color:var(--primary);
}

/* Botones prev/next */
.cal-btn{
  position:absolute; top:50%; transform:translateY(-50%);
  width:40px; height:40px; border:0; border-radius:999px;
  display:inline-flex; align-items:center; justify-content:center;
  background:linear-gradient(145deg,var(--primary),var(--accent));
  color:#000; font-weight:800; cursor:pointer;
  box-shadow:0 6px 16px rgba(0,188,212,.35);
  transition:transform .15s, box-shadow .15s, filter .15s;
}
.cal-btn:hover:not(:disabled){ transform:translateY(-50%) scale(1.04); filter:brightness(1.06); }
.cal-btn:disabled{ opacity:.45; cursor:not-allowed; box-shadow:none; }
.cal-prev{ left:8px; } .cal-next{ right:8px; }

/* Grid del calendario (desktop/tablet) */
.calendar-grid{
  display:grid;
  grid-template-columns: 120px repeat(7, minmax(110px,1fr));
  gap:2px; /* celdas más “unidas” */
  background:rgba(255,255,255,.04);
  padding:6px; border-radius:12px; border:1px solid var(--border-color);
  overflow:auto;
}
.time-header{
  padding:8px; text-align:center; font-size:.85rem; color:var(--neutral);
  background:rgba(255,255,255,.04); border-radius:10px;
}
.calendar-day-header{
  text-align:center; padding:10px 6px; font-weight:700;
  background:rgba(255,255,255,.06); border-radius:10px;
}

/* Celdas */
.calendar-cell{
  background:rgba(255,255,255,.03);
  border:1px solid rgba(255,255,255,.06);
  border-radius:10px;
  min-height:62px; padding:8px;
  transition:transform .15s, box-shadow .15s, border-color .15s, background .15s;
}
.calendar-cell .time-slot{ font-size:.85rem; color:var(--neutral); margin-bottom:4px; }

.calendar-cell.past{ opacity:.5; cursor:not-allowed; }

.calendar-cell.available:hover{
  border-color:var(--accent); background:rgba(29,233,182,.10);
  transform:translateY(-1px); box-shadow:0 6px 18px rgba(0,188,212,.15);
}
.calendar-cell.selected{
  border-color:var(--primary); background:rgba(0,188,212,.16);
  box-shadow:0 10px 24px rgba(0,188,212,.18);
}
.calendar-cell.booked{
  background: rgba(255,255,255,.06);
  border-color: rgba(255,255,255,.16);
  color: var(--neutral);
  opacity: .85;
  cursor: not-allowed;
}

/* etiqueta de estado simple (opcional) */
.slot-label{ font-weight:600; font-size:.9rem; }
.slot-label.available{ color: var(--accent); }
.calendar-cell.not-enough-time{ opacity:.5; cursor:not-allowed; }

/* Tags de estado */
.tag{ display:inline-flex; align-items:center; gap:.35rem; font-weight:700; font-size:.85rem; }
.tag-free{ color:var(--accent); } .tag-danger{ color:#ef4444; }

/* Mobile: lista colapsada por día/hora */
@media (max-width: 768px){
  .calendar-top{ grid-template-columns: 1fr; }
  .calendar-title{ margin:0 2.25rem; }

  .calendar-grid{
    display:flex; flex-direction:column; gap:.75rem;
    background:transparent; padding:0; border:0;
  }
  .calendar-day-header, .time-header{ display:none; }

  .calendar-cell{
    display:flex; align-items:center; justify-content:space-between;
    min-height:auto; padding:1rem;
    background:var(--card-bg); border:1px solid var(--border-color);
  }
  .mobile-day-time{ display:flex; flex-direction:column; gap:2px; }
  .mobile-day{ color:var(--accent); font-size:.9rem; font-weight:700; }
  .mobile-time{ font-size:1.1rem; }
}

/* --- WEB: sin scroll interno --- */
.calendar-pane{ 
  max-height: none;     /* quita el scroll interno */
  overflow: visible;
}

/* Celdas más compactas para que entre todo mejor */
.calendar-cell{ min-height: 50px; padding: 6px; }
.time-header{ padding: 6px; }

/* Visual de selección de rango (2h) */
.calendar-cell.selected { 
  border-color: var(--primary); 
  background: rgba(0,188,212,.16);
  box-shadow: 0 10px 24px rgba(0,188,212,.18);
}
.calendar-cell.selected-ghost{ 
  border-color: var(--accent);
  background: rgba(29,233,182,.12);
  outline: 2px dashed var(--accent);
  outline-offset: -3px;
}

/* --- MÓVIL: por días --- */
@media (max-width: 768px){
  .calendar-grid{
    display: flex; 
    flex-direction: column; 
    gap: 1rem; 
    background: transparent; 
    padding: 0; 
    border: 0;
  }

  .mobile-day-group{
    background: var(--card-bg);
    border: 1px solid var(--border-color);
    border-radius: 12px;
    overflow: hidden;
  }
  .mobile-day-header{
    padding: .85rem 1rem;
    font-weight: 800;
    color: var(--accent);
    background: rgba(255,255,255,.04);
    display: flex; 
    align-items: center; 
    justify-content: space-between;
  }
  .mobile-day-body{ 
    display: flex; 
    flex-direction: column;
  }
  .calendar-cell{
    border: 0; 
    border-top: 1px solid var(--border-color);
    border-radius: 0;
    padding: .9rem 1rem;
    background: transparent;
  }
}

/* --- Mini datepicker flotante --- */
.mini-picker-overlay{
  position: fixed; inset: 0; 
  background: rgba(0,0,0,.45);
  display: none; 
  align-items: center; 
  justify-content: center; 
  z-index: 1000;
}
.mini-picker{
  width: 300px; 
  background: var(--card-bg);
  border: 1px solid var(--border-color);
  border-radius: 12px; 
  padding: .75rem;
}
.mini-picker-header{
  display:flex; align-items:center; justify-content:space-between; margin-bottom:.5rem;
}
.mini-picker-grid{
  display:grid; grid-template-columns: repeat(7, 1fr); gap: 6px;
}
.mini-picker-day, .mini-picker-dow{
  text-align:center; padding:.45rem .25rem; border-radius:8px; 
  background: rgba(255,255,255,.03);
}
.mini-picker-day:hover{ cursor:pointer; background: rgba(29,233,182,.12); }
.mini-picker-day.is-today{ outline:2px solid var(--accent); }
.mini-picker-day.is-out{ opacity:.45; }

.coach-selector{
  background:var(--card-bg); border:1px solid var(--border-color);
  border-radius:12px; padding:1.25rem;
}
.coach-type-dropdown select{
  width:100%; background:#2a2a2a; border:1px solid var(--border-color);
  color:#fff; padding:.8rem .9rem; border-radius:10px; font-size:1rem; cursor:pointer;
}
