:root{
  --bg: #f6f7fb;
  --surface: #ffffff;
  --surface2:#f0f2f8;
  --text: #101421;
  --muted:#5b657a;
  --border: rgba(16,20,33,.10);

  --accent: #6d28d9;
  --accent2:#10b981;

  --shadow: 0 10px 30px rgba(16,20,33,.10);
  --shadow2: 0 6px 18px rgba(16,20,33,.08);

  --r1: 14px;
  --r2: 18px;
}

*{ box-sizing: border-box; }
html, body{ height: 100%; margin:0; font-family: system-ui, -apple-system, Segoe UI, Roboto, Arial; }
body{ background: var(--bg); color: var(--text); }

.app{ min-height:100%; display:flex; flex-direction:column; }

.topbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding:14px 16px;
  background: linear-gradient(180deg, #ffffff 0%, #f3f5fb 100%);
  border-bottom: 1px solid var(--border);
  box-shadow: var(--shadow2);
}

.brand{ display:flex; gap:12px; align-items:center; }
.logo{
  width:44px; height:44px; border-radius:14px;
  display:grid; place-items:center;
  font-weight:800;
  background: linear-gradient(135deg, var(--accent) 0%, #8b5cf6 100%);
  color:#fff;
}
.title{ font-weight:800; font-size:18px; }
.tag{ font-size:13px; color: var(--muted); margin-top:2px; }

.yearbar{ display:flex; align-items:center; gap:10px; }
.year{ font-weight:800; font-size:18px; min-width:64px; text-align:center; }

.btn{
  appearance:none;
  border: 1px solid var(--border);
  background: var(--surface);
  color: var(--text);
  border-radius: 999px;
  padding: 10px 14px;
  cursor:pointer;
  transition: transform .08s ease, box-shadow .12s ease, border-color .12s ease;
}
.btn:hover{ transform: translateY(-1px); box-shadow: var(--shadow2); border-color: rgba(109,40,217,.25); }
.btn:active{ transform: translateY(0); }
.btn.primary{
  background: linear-gradient(135deg, var(--accent) 0%, #8b5cf6 100%);
  color:#fff;
  border-color: transparent;
}
.btn.ghost{ background: transparent; }

.content{
  flex:1;
  display:grid;
  grid-template-columns: 1.35fr .65fr;
  gap: 16px;
  padding: 16px;
}

.calendar, .panel-card{
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r2);
  box-shadow: var(--shadow);
  overflow:hidden;
}

.filters{
  display:grid;
  grid-template-columns: 1fr 1fr 1fr auto;
  gap: 12px;
  padding: 14px;
  border-bottom: 1px solid var(--border);
  background: var(--surface);
}

.field{ display:flex; flex-direction:column; gap:6px; }
label{ font-size:12px; color: var(--muted); }

select, input, textarea{
  width:100%;
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 10px 12px;
  background:#fff;
  color: var(--text);
  outline:none;
}
select:focus, input:focus, textarea:focus{
  border-color: rgba(109,40,217,.35);
  box-shadow: 0 0 0 4px rgba(109,40,217,.10);
}

.months{
  padding: 14px;
  display:grid;
  grid-template-columns: repeat(3, minmax(240px, 1fr));
  gap: 14px;
}

.month{
  background: var(--surface2);
  border: 1px solid var(--border);
  border-radius: var(--r2);
  padding: 12px;
}

.month-name{
  font-weight:800;
  margin-bottom: 10px;
}

/* ✅ Layout: 1 mes grande */
.months--single{
  grid-template-columns: 1fr !important;
}
.month--big{
  padding: 16px;
}
.days--big{
  gap: 10px;
}
.day--big{
  padding: 16px 0;
  font-size: 16px;
}

/* ✅ Slot seleccionado */
.slot--selected{
  background: linear-gradient(135deg, var(--accent) 0%, #8b5cf6 100%) !important;
  color: #fff !important;
  border-color: transparent !important;
  box-shadow: 0 12px 28px rgba(109,40,217,.25) !important;
}
.slot--selected small{
  color: rgba(255,255,255,.85) !important;
}


.weekdays{
  display:grid;
  grid-template-columns: repeat(7, 1fr);
  gap:6px;
  margin-bottom: 8px;
  color: var(--muted);
  font-size: 12px;
  text-align:center;
}

.days{
  display:grid;
  grid-template-columns: repeat(7, 1fr);
  gap:6px;
}

.day{
  background:#fff;
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 10px 0;
  text-align:center;
  font-weight:700;
  cursor:pointer;
  transition: transform .08s ease, box-shadow .12s ease, border-color .12s ease;
}
.day:hover{ transform: translateY(-1px); box-shadow: var(--shadow2); border-color: rgba(109,40,217,.25); }
.day.selected{
  background: linear-gradient(135deg, var(--accent) 0%, #8b5cf6 100%);
  color:#fff;
  border-color: transparent;
  box-shadow: 0 12px 28px rgba(109,40,217,.25);
}
.day.empty{
  background: transparent;
  border-color: transparent;
  cursor: default;
}

.panel{ height:100%; }
.panel-card{
  height:100%;
  display:flex;
  flex-direction:column;
  padding: 14px;
}

.panel-card h2{
  margin: 4px 0 8px;
  font-size: 18px;
}
.status{ color: var(--muted); min-height: 18px; }

.success{
  margin-top: 10px;
  background: rgba(16,185,129,.10);
  border: 1px solid rgba(16,185,129,.25);
  border-radius: var(--r2);
  padding: 12px;
}
.success-title{ font-weight:900; }
.success-text{ margin-top:6px; color:#064e3b; font-weight:700; }

.slots{
  margin-top: 12px;
  display:grid;
  grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
  gap: 10px;
}

.slot{
  background:#fff;
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 12px 10px;
  text-align:center;
  font-weight:900;
  cursor:pointer;
  transition: transform .08s ease, box-shadow .12s ease, border-color .12s ease;
}
.slot small{
  display:block;
  margin-top: 6px;
  font-weight: 700;
  color: var(--muted);
}
.slot:hover{ transform: translateY(-1px); box-shadow: var(--shadow2); border-color: rgba(109,40,217,.25); }

.form-card{
  margin-top: 12px;
  background: var(--surface2);
  border: 1px solid var(--border);
  border-radius: var(--r2);
  padding: 12px;
}
.form-card h3{ margin: 4px 0 10px; }

.form-grid{
  display:grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}
.field.full{ grid-column: 1 / -1; }

.form-actions{
  display:flex;
  gap:10px;
  justify-content:flex-end;
  margin-top: 10px;
}

/* Días pasados (y también te sirve para cerrados si quieres reutilizar) */
.day.past{
  opacity: .35;
  filter: grayscale(.25);
  cursor: not-allowed;
  pointer-events: none;
}

/* Opcional: fin de semana/festivo (si ya los marcas con .closed/.disabled) */
.day.closed{
  opacity: .45;
  cursor: not-allowed;
  pointer-events: none;
  background: #fff;
  border-style: dashed;
}


.hint{
  margin-top:auto;
  padding-top: 10px;
  color: var(--muted);
  font-size: 12px;
}

.hidden{ display:none !important; }

@media (max-width: 1200px){
  .months{ grid-template-columns: repeat(2, minmax(240px, 1fr)); }
}
@media (max-width: 1024px){
  .content{ grid-template-columns: 1fr; }
  .months{ grid-template-columns: repeat(2, minmax(240px, 1fr)); }
}
@media (max-width: 640px){
  .filters{ grid-template-columns: 1fr; }
  .months{ grid-template-columns: 1fr; }
}
