/* ========== CSS principal (con blindajes) ========== */
:root {
  --ce-bg: #fff;
  --ce-text: #0f172a;
  --ce-muted: #475569;
  --ce-primary: #111827;
  --ce-accent: #2563eb;
  --ce-border: #e5e7eb;
  --ce-radius: 16px;
  --ce-shadow: 0 10px 30px rgba(0,0,0,.07);
}

.ce-cal-wrapper {
  background: var(--ce-bg);
  border: 1px solid var(--ce-border);
  border-radius: var(--ce-radius);
  box-shadow: var(--ce-shadow);
  padding: 14px;
  position: relative;
}

.ce-controls { margin-bottom: 8px; position: relative; z-index: 2; }
.ce-controls-row { display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; }
.ce-controls-left, .ce-controls-right { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.ce-title { flex: 1 1 auto; text-align:center; font-weight:800; font-size:18px; letter-spacing:-.01em; color:var(--ce-text); }
@media (max-width: 640px) { .ce-title { font-size:16px; order: 3; width:100%; margin-top: 4px; } }

.ce-btn-nav, .ce-btn-today { appearance:none; border:1px solid var(--ce-border); background:#fff; padding:10px 12px; border-radius:12px; font-weight:600; cursor:pointer; }
.ce-select, .ce-input { border:1px solid var(--ce-border); background:#fff; padding:10px 12px; border-radius:12px; font-weight:600; }
.ce-input { min-width: 160px; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); border:0; }

/* FullCalendar */
.fc {
  --fc-border-color: var(--ce-border);
  --fc-today-bg-color: rgba(37,99,235,.08);
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, Inter, Arial, sans-serif;
  color: var(--ce-text);
  font-size: 14px;
}
.fc .fc-daygrid-day-number { font-weight:600; }
.fc .fc-daygrid-event { border-radius:12px; border:1px solid var(--ce-border); padding:2px 6px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* Leyenda */
.ce-legend { display:flex; gap:14px; align-items:center; border-top:1px dashed var(--ce-border); padding-top:10px; margin-top:10px; flex-wrap:wrap; }
.ce-legend .item { display:inline-flex; align-items:center; gap:8px; font-size:13px; color:var(--ce-muted); }
.ce-dot { width:10px; height:10px; border-radius:9999px; display:inline-block; border:1px solid var(--ce-border); }

/* Hoy en píldora */
.fc-day-today .fc-daygrid-day-number { background:#111827; color:#fff; border-radius:999px; padding:2px 8px; }

/* Skeleton */
.ce-skeleton { position:absolute; inset:0; background:rgba(255,255,255,.72);
  display:grid; place-content:start; padding:14px; border-radius: var(--ce-radius);
  pointer-events:none; z-index:1; }
.ce-skel-line { width:180px; height:14px; border-radius:8px; background:linear-gradient(90deg,#eee,#f7f7f7,#eee); animation:ce-shimmer 1.2s infinite; margin-bottom:10px; }
.ce-skel-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:8px; }
.ce-skel-card { height:68px; border-radius:12px; background:linear-gradient(90deg,#eee,#f7f7f7,#eee); animation:ce-shimmer 1.2s infinite; }
@keyframes ce-shimmer { 0%{background-position:-200px 0} 100%{background-position:200px 0} }

/* Responsive */
@media (max-width: 640px) {
  .ce-cal-wrapper { padding:10px; }
  .fc { font-size: 13px; }
  .ce-controls-row { gap:6px; }
  .ce-btn-nav, .ce-btn-today, .ce-select, .ce-input { padding:8px 10px; border-radius:10px; font-size:14px; }
  .ce-legend { font-size:12px; }
  .ce-skel-grid { grid-template-columns: repeat(3, 1fr); }
}

/* Táctil */
.fc .fc-daygrid-day-events { margin:2px; }
.fc .fc-daygrid-event { padding:6px 8px; }

/* Blindajes */
[hidden], .ce-skeleton[hidden]{ display:none !important; }
.fc .fc-header-toolbar { display:none!important; } /* por si algún script externo lo inyecta */

.ce-hidden { display:none !important; }
