:root { --sidebar-w: 16rem; }
.sidebar { width: var(--sidebar-w); min-width: var(--sidebar-w); min-height: 100vh; }
@media (min-width: 992px) { .sidebar { position: sticky; top: 0; height: 100vh; overflow-y: auto; } }
.nav-link.active { background: #0d6efd; }

/* Estados de ocupación: color + icono + texto (nunca solo color) */
.state-badge { display: inline-flex; align-items: center; gap: .35rem; padding: .25rem .6rem; border-radius: 1rem; font-size: .8rem; font-weight: 600; border: 1px solid transparent; }
.state-disponible          { background: #d1e7dd; color: #0a3622; border-color: #a3cfbb; }
.state-programado          { background: #cfe2ff; color: #052c65; border-color: #9ec5fe; }
.state-reservado           { background: #e0cffc; color: #2c0b5f; border-color: #c5a3fd; }
.state-ocupado_confirmado  { background: #146c43; color: #fff; }
.state-pendiente_confirmar { background: #fff3cd; color: #664d03; border-color: #ffda6a; border-style: dashed; }
.state-transicion          { background: #e2e3e5; color: #2b2f32; border-color: #c4c8cb; }
.state-restringido         { background: #ffe5d0; color: #6d3200; border-color: #fecba1; }
.state-fuera_servicio      { background: #842029; color: #fff; }
.state-en_conflicto        { background: #dc3545; color: #fff; }
.state-fuera_horario       { background: #343a40; color: #f8f9fa; }

.space-card { border-left: .35rem solid #adb5bd; }
.space-card.st-disponible { border-left-color: #198754; }
.space-card.st-programado { border-left-color: #0d6efd; }
.space-card.st-reservado { border-left-color: #6f42c1; }
.space-card.st-ocupado_confirmado { border-left-color: #0f5132; }
.space-card.st-pendiente_confirmar { border-left-color: #ffc107; }
.space-card.st-restringido { border-left-color: #fd7e14; }
.space-card.st-fuera_servicio { border-left-color: #842029; }
.space-card.st-en_conflicto { border-left-color: #dc3545; }
.demo-tag { font-size: .65rem; }
.kpi .display-6 { font-weight: 700; }
a:focus-visible, button:focus-visible, select:focus-visible, input:focus-visible { outline: 3px solid #0d6efd; outline-offset: 2px; }
@media print { .sidebar, header.navbar, .toast-container, form, .btn { display: none !important; } main { padding: 0 !important; } .card { break-inside: avoid; } }
@media (max-width: 991.98px) { .sidebar { min-height: 0; } #util-form { flex-wrap: wrap; } }
.fc .fc-toolbar { flex-wrap: wrap; gap: .5rem; } .fc .fc-toolbar-title { font-size: 1.1rem; }
