:root{
  --bg:#fff; --fg:#0f172a; --muted:#64748b; --line:#e2e8f0;
  --shadow: 0 10px 30px rgba(2,6,23,.08);
  --r:16px;

  --free:#ecfdf5;
  --reserved:#fff7ed;
  --confirmed:#eff6ff;

  --prueba:#f1f5f9;
  --ajuste:#fef3c7;
  --retiro:#e0f2fe;

  --btn:#0f172a; --btnfg:#fff; --danger:#b91c1c;
}

*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--fg);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}
.wrap{max-width:1100px;margin:0 auto;padding:14px}

.bar{
  position:sticky;top:0;z-index:10;
  background:rgba(255,255,255,.92);backdrop-filter:blur(10px);
  border:1px solid var(--line);border-radius:var(--r);
  padding:12px;box-shadow:var(--shadow);
  display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap;
}
.brand{display:flex;flex-direction:column;gap:2px}
.title{font-size:22px;font-weight:950}
.meta{font-size:13px;font-weight:850;color:var(--muted)}
.controls{display:flex;gap:10px;align-items:center;flex-wrap:wrap}

input[type="date"], input[type="month"], select, .search{
  font-size:15px;padding:10px 12px;border:1px solid var(--line);
  border-radius:12px;background:#fff;color:var(--fg);font-weight:850;
}

.btn{
  border:0;border-radius:12px;padding:10px 12px;font-size:15px;font-weight:900;
  cursor:pointer;background:var(--btn);color:var(--btnfg);text-decoration:none;display:inline-flex;align-items:center;justify-content:center;
}
.btn.ghost{background:#fff;color:var(--fg);border:1px solid var(--line)}
.btn.danger{background:var(--danger);color:#fff}

.tabs{display:flex;gap:8px;align-items:center}
.tab{
  border:1px solid var(--line);background:#fff;color:var(--fg);
  padding:10px 12px;border-radius:999px;font-size:14px;font-weight:950;cursor:pointer;
}
.tab.active{background:var(--fg);color:#fff;border-color:var(--fg)}

.topRow{margin-top:12px;display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.search{min-width:260px;flex:1}
.status{font-size:13px;font-weight:850;color:var(--muted)}

.slots{margin-top:12px;display:grid;grid-template-columns:1fr;gap:10px}
.slot{
  border:1px solid var(--line);border-radius:var(--r);padding:14px;
  display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;
  background:#fff;
}
.slot.free{background:var(--free)}
.slot.reserved{background:var(--reserved)}
.slot.confirmed{background:var(--confirmed)}
.slot.blocked{background:#f8fafc;opacity:.75;cursor:not-allowed}

.slot.type-PRUEBA{outline:2px solid rgba(15,23,42,.06)}
.slot.type-AJUSTE{outline:2px solid rgba(245,158,11,.22)}
.slot.type-RETIRO{outline:2px solid rgba(2,132,199,.18)}

.slotLeft{min-width:0;display:flex;flex-direction:column;gap:4px}
.slotTime{font-size:22px;font-weight:950}
.slotMain{font-size:18px;font-weight:950;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.slotSub{font-size:14px;font-weight:850;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.badge{font-size:12px;font-weight:950;padding:8px 10px;border-radius:999px;border:1px solid rgba(2,6,23,.12);background:#fff;color:var(--muted);flex-shrink:0}

.weekHead,.monthHead{margin-top:12px;font-size:14px;font-weight:900;color:var(--muted)}
.weekGrid{
  margin-top:10px;
  display:grid;
  grid-template-columns:repeat(7,1fr);
  gap:10px;
}

.dayCard{
  border:1px solid var(--line);border-radius:var(--r);
  overflow:hidden;background:#fff;box-shadow:var(--shadow);
}
.dayTop{padding:10px 12px;border-bottom:1px solid var(--line);background:#fbfdff;display:flex;justify-content:space-between;align-items:center;gap:8px}
.dayTitle{font-size:14px;font-weight:950}
.dayCount{font-size:12px;font-weight:950;padding:6px 10px;border-radius:999px;border:1px solid var(--line);color:var(--muted);background:#fff}
.dayBody{padding:10px;display:flex;flex-direction:column;gap:8px}

.mini{
  border:1px solid var(--line);border-radius:14px;padding:10px;cursor:pointer;background:var(--free)
}
.mini.reserved{background:var(--reserved)}
.mini.confirmed{background:var(--confirmed)}
.mini.blocked{background:#f8fafc;opacity:.75;cursor:not-allowed}
.mA{font-size:12px;font-weight:950}
.mB{font-size:14px;font-weight:950;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mC{font-size:12px;font-weight:850;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.monthGrid{
  margin-top:10px;
  display:grid;
  grid-template-columns:repeat(7,1fr);
  gap:10px;
}
.mCell{
  border:1px solid var(--line);border-radius:var(--r);
  padding:10px;background:#fff;min-height:110px;
}
.mCell.off{opacity:.45}
.mCellTop{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.mDay{font-size:13px;font-weight:950}
.mDot{font-size:12px;font-weight:950;color:var(--muted)}
.mList{display:flex;flex-direction:column;gap:6px}
.mItem{
  border:1px solid var(--line);border-radius:12px;padding:8px;background:#f8fafc;cursor:pointer;
  font-size:12px;font-weight:900;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.mItem.reserved{background:var(--reserved)}
.mItem.confirmed{background:var(--confirmed)}
.mItem.blocked{opacity:.75;cursor:not-allowed}

.modalBackdrop{position:fixed;inset:0;background:rgba(2,6,23,.55);display:none;align-items:center;justify-content:center;padding:14px;z-index:50}
.modal{width:min(760px,100%);background:#fff;border-radius:18px;padding:14px;box-shadow:var(--shadow);border:1px solid var(--line)}
.modalTop{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.modal h2{margin:0;font-size:18px;font-weight:950}
.viewCard{border:1px solid var(--line);border-radius:14px;padding:12px;background:#fff;color:var(--muted);font-weight:850;font-size:14px}
.field{margin-top:10px}
label{display:block;font-size:12px;font-weight:950;color:var(--muted);margin-bottom:6px}
input, textarea, select{width:100%;border:1px solid var(--line);border-radius:12px;padding:12px;font-size:15px;font-weight:900;outline:none}
textarea{min-height:88px;resize:vertical;font-size:14px;font-weight:850}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.pills{display:flex;gap:10px;flex-wrap:wrap}
.pill{border:1px solid var(--line);background:#fff;border-radius:999px;padding:10px 12px;font-size:14px;font-weight:950;cursor:pointer;color:var(--fg)}
.pill.active{background:var(--fg);color:#fff;border-color:var(--fg)}
.modalActions{margin-top:12px;display:flex;gap:10px;flex-wrap:wrap}
.hint{margin-top:10px;font-size:13px;color:var(--muted);font-weight:850}
.error{margin-top:10px;font-size:13px;font-weight:950;color:var(--danger);display:none}

@media (max-width: 980px){
  .weekGrid{grid-template-columns:1fr}
  .monthGrid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width: 560px){
  .wrap{padding:10px}
  .grid2{grid-template-columns:1fr}
  .search{min-width:100%}
  .slotTime{font-size:20px}
  .slotMain{font-size:17px}
  .monthGrid{grid-template-columns:1fr}
}
