/* Calendario semanal de reservas (panel y web). Colores propios: se ve igual en tema claro y oscuro. */
.cal-sem { margin-top: 12px; background: #fff; color: #1f2937; border-radius: 10px; padding: 12px; font-family: inherit; }
.cal-barra { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; flex-wrap: wrap; }
.cal-barra strong { margin-left: 8px; font-size: 16px; color: #0a4a94; }
.cal-btn { display: inline-flex; align-items: center; justify-content: center; min-width: 36px; height: 34px; padding: 0 12px; border: 1px solid #cbd5e1; border-radius: 8px; background: #fff; color: #1f2937; text-decoration: none; font-weight: 600; }
.cal-btn:hover { background: #eef2f7; }
.cal-error { color: #b91c1c; margin: 6px 0; }
.cal-scroll { overflow-x: auto; }
.cal-tabla { min-width: 720px; }
.cal-cab, .cal-todo { display: grid; grid-template-columns: 52px repeat(7, 1fr); }
.cal-dia { text-align: center; padding: 6px 2px; border-left: 1px solid #e5e7eb; }
.cal-dia small { display: block; text-transform: uppercase; font-size: 11px; color: #6b7280; letter-spacing: .04em; }
.cal-dia b { font-size: 18px; }
.cal-dia.hoy b { background: #c8102e; color: #fff; border-radius: 99px; display: inline-block; min-width: 28px; line-height: 28px; }
.cal-todo > div { border-left: 1px solid #e5e7eb; padding: 2px; }
.cal-todo i { display: block; font-style: normal; font-size: 12px; background: #fde68a; border-radius: 4px; padding: 1px 6px; margin-bottom: 2px; }
.cal-cuerpo { position: relative; display: grid; grid-template-columns: 52px repeat(7, 1fr); border-top: 1px solid #e5e7eb; background-image: repeating-linear-gradient(to bottom, transparent 0, transparent 43px, #eceff3 43px, #eceff3 44px); }
.cal-horas { position: relative; }
.cal-horas span { position: absolute; right: 6px; transform: translateY(-50%); font-size: 11px; color: #6b7280; background: #fff; padding: 0 2px; }
.cal-horas span:first-child { transform: none; }
.cal-col { position: relative; border-left: 1px solid #e5e7eb; }
.cal-col.hoy { background: rgba(200, 16, 46, .04); }
.cal-ev { position: absolute; box-sizing: border-box; overflow: hidden; background: #fde68a; border-left: 3px solid #d4a017; border-radius: 4px; padding: 2px 5px; font-size: 12px; line-height: 1.25; color: #3b2f00; }
.cal-ev b { font-weight: 700; display: block; }
.cal-ev.corto { white-space: nowrap; text-overflow: ellipsis; padding-top: 1px; padding-bottom: 1px; }
.cal-ev.corto b { display: inline; }
.cal-vista { margin-left: auto; display: inline-flex; gap: 6px; }
.cal-btn.activo { background: #0a4a94; border-color: #0a4a94; color: #fff; }
/* Vista mensual */
.cal-m-cab, .cal-m-rejilla { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.cal-m-cab span { text-align: center; text-transform: uppercase; font-size: 11px; color: #6b7280; letter-spacing: .04em; padding: 4px 0; }
.cal-m-rejilla { border-top: 1px solid #e5e7eb; border-left: 1px solid #e5e7eb; }
.cal-m-dia { min-height: 110px; padding: 4px; border-right: 1px solid #e5e7eb; border-bottom: 1px solid #e5e7eb; overflow: hidden; }
.cal-m-dia > b { display: inline-block; font-size: 13px; min-width: 22px; line-height: 22px; text-align: center; margin-bottom: 2px; }
.cal-m-dia.fuera { background: #f8fafc; color: #9ca3af; }
.cal-m-dia.hoy > b { background: #c8102e; color: #fff; border-radius: 99px; }
.cal-m-ev { display: flex; flex-direction: column; font-size: 11.5px; line-height: 1.3; background: #fde68a; border-left: 3px solid #d4a017; border-radius: 3px; padding: 1px 4px; margin-bottom: 2px; color: #3b2f00; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cal-m-ev b { font-weight: 700; }
.cal-m-ev span { overflow: hidden; text-overflow: ellipsis; }
.cal-m-mas { font-size: 11px; color: #6b7280; }
.cal-m-mas summary { cursor: pointer; padding-left: 4px; list-style: none; user-select: none; }
.cal-m-mas summary::-webkit-details-marker { display: none; }
.cal-m-mas summary:hover { color: #0a4a94; text-decoration: underline; }
.cal-m-mas .cal-mas-x, .cal-m-mas[open] .cal-mas-n { display: none; }
.cal-m-mas[open] .cal-mas-x { display: inline; }
@media (max-width: 700px) { .cal-mes .cal-tabla { min-width: 560px; } .cal-vista { margin-left: 0; } }
