/* ===== 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;
}
.booking-confirmation{
  padding-top: 1.5rem;
}
.confirmation-title{
  margin-top: 0;
}

/* 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; text-align:center; }
.confirmation-details{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:0;
  margin-bottom:1rem;
}
.detail-label{
  color:var(--neutral); font-weight:600;
  text-align:center;
  margin-top:.75rem; margin-bottom:.25rem;
}
.detail-label:first-child{ margin-top:0; }
.detail-value{ font-weight:500; text-align:center; }
.detail-value .duration-select{
  width:auto;
  min-width:120px;
  padding:.4rem .65rem;
  font-size:.85rem;
}

.confirmation-actions .widget-button{
  flex: 1 1 0;
  min-width: 0;
  width: auto;
  padding: .55rem .6rem;
  font-size: .85rem;
}

.detail-pair-row{
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0 16px;
  width: 100%;
}
.detail-pair-col{
  display: flex;
  flex-direction: column;
  align-items: center;
}

.confirmation-actions{
  display:flex; gap:.5rem; flex-wrap:wrap; justify-content:center; align-items:center;
}
.required-selection{
  color:var(--danger); font-size:.9rem; margin-top:.5rem; width:100%; text-align:center; 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; }
}

.detail-sep{
  width: 100%;
  margin: 12px 0;
  border-top: 1px dashed #ccc;
}

.calendar-pane{
  position: relative;
  max-height: none;
  overflow: visible;
}

.calendar-pane.is-loading{
  pointer-events: none;
}

.calendar-loading{
  position: absolute;
  inset: 0;
  z-index: 20;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: .75rem;
  background: rgba(10, 10, 10, .45);
  backdrop-filter: blur(2px);
  border-radius: 12px;
}

.calendar-loading-text{
  font-weight: 700;
  color: #fff;
}

.google-spinner{
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: 4px solid transparent;
  border-top-color: #6ECFF0;
  border-right-color: #47BFEA;
  border-bottom-color: #1481C0;
  border-left-color: #0B5E9B;
  box-shadow: 0 0 18px rgba(110,207,240,.18);
  animation: googleSpin .8s linear infinite;
}

@keyframes googleSpin{
  to { transform: rotate(360deg); }
}

/* 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; }

.mini-picker-header button{
  width: 42px;
  height: 42px;
  border: 1px solid rgba(110, 207, 240, .35);
  border-radius: 999px;
  background: linear-gradient(145deg, rgba(110,207,240,.18), rgba(20,129,192,.22));
  color: #6ECFF0;
  font-size: 1.25rem;
  font-weight: 900;
  line-height: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  box-shadow: 0 6px 16px rgba(20,129,192,.18);
  transition: transform .15s ease, filter .15s ease, box-shadow .15s ease, border-color .15s ease;
}

.mini-picker-header button:hover{
  transform: scale(1.06);
  filter: brightness(1.08);
  border-color: rgba(110, 207, 240, .7);
  box-shadow: 0 8px 20px rgba(20,129,192,.28);
}

.mini-picker-header button:active{
  transform: scale(.98);
}

.mini-picker-header button:focus{
  outline: none;
  box-shadow: 0 0 0 3px rgba(110,207,240,.18), 0 8px 20px rgba(20,129,192,.28);
}

.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;
}

.duration-select{
  width:100%;
  background:#2a2a2a;
  border:1px solid var(--border-color);
  color:#fff;
  padding:.7rem .85rem;
  border-radius:10px;
  font-size:1rem;
  cursor:pointer;
}
.duration-select:focus{
  outline:none;
  border-color:var(--accent);
}

.mini-picker-time-title{
  font-weight:800;
  margin-bottom:.75rem;
  text-transform:capitalize;
}

.mini-time-list{
  display:flex;
  flex-direction:column;
  gap:.5rem;
  max-height:280px;
  overflow:auto;
}

.mini-time-btn,
.mini-back-btn{
  width:100%;
  border:1px solid var(--border-color);
  background:rgba(255,255,255,.04);
  color:#fff;
  border-radius:10px;
  padding:.75rem .9rem;
  cursor:pointer;
  font-weight:700;
}

.mini-time-btn:hover,
.mini-back-btn:hover{
  background:rgba(29,233,182,.12);
  border-color:var(--accent);
}

.mini-picker-empty{
  color:var(--neutral);
  margin:.5rem 0 1rem;
}

.mini-picker-actions{
  margin-top:.75rem;
}

.calendar-cell .slot-coach {
  display: block;
  font-size: 0.72rem;
  font-weight: 600;
  margin-top: 4px;
  opacity: 0.85;
  letter-spacing: 0.02em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.calendar-cell.booked .slot-coach,
.calendar-cell.not-enough-time .slot-coach,
.calendar-cell.past .slot-coach {
  display: none;
}
