/* ===== Reserva de Espacios: complementos a app.css ===== */
code{background:#0001;padding:0 .3rem;border-radius:4px}
.punto{display:inline-block;width:.7rem;height:.7rem;border-radius:50%;margin-right:.4rem;vertical-align:baseline}
.top-in .btn.sec{border-color:#fff8}

/* Barra de navegación del calendario */
.cal-bar{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;justify-content:space-between;margin-bottom:.8rem}
.cal-bar input[type=date],.cal-bar select{width:auto;padding:.35rem .5rem;font-size:.9rem}
.tabs{display:inline-flex;background:#fff;border:1px solid var(--line);border-radius:9px;padding:3px;gap:2px}
.tabs a{padding:.3rem .85rem;border-radius:7px;text-decoration:none;color:var(--muted);font-weight:600;font-size:.9rem}
.tabs a.on{background:var(--acc);color:#fff}
.leyenda{display:flex;flex-wrap:wrap;gap:.35rem;margin:-.3rem 0 .8rem}
.leyenda a{display:inline-flex;align-items:center;gap:.35rem;font-size:.82rem;color:var(--ink);text-decoration:none;padding:.15rem .55rem;border:1px solid var(--line);border-radius:999px;background:#fff}
.leyenda a.on{border-color:var(--ink);font-weight:600}
.leyenda i{width:.65rem;height:.65rem;border-radius:50%}

/* Grilla */
.cal-card{padding:0;overflow:auto}
table.cal{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed;min-width:720px}
.cal th,.cal td{border-bottom:1px solid var(--line);border-left:1px solid var(--line);padding:.3rem;vertical-align:top}
.cal thead th{position:sticky;top:0;background:#faf8f4;font-size:.82rem;text-align:center;padding:.5rem .3rem;z-index:2}
.cal thead th a{color:var(--ink);text-decoration:none}
.cal thead th.hoy{background:var(--acc-soft)} .cal thead th.hoy a{color:var(--acc-2);font-weight:800}
.cal th.cal-esp{border-top:4px solid var(--c)}
.cal .cal-h{width:84px;background:#faf8f4;text-align:left;border-left:0;position:sticky;left:0;z-index:1}
.cal thead .cal-h{z-index:3}
.cal .cal-h b{display:block;font-size:.95rem}
.cal .cal-h small{color:var(--muted);font-size:.72rem;white-space:nowrap}
.cal tr.tarde .cal-h{background:#f2eee6}
.cal td.hoy{background:#f4fbfa}
.cal-sep td{background:repeating-linear-gradient(135deg,#f5f3ee,#f5f3ee 6px,#efebe3 6px,#efebe3 12px);color:var(--muted);font-size:.72rem;text-align:center;padding:.1rem;border-left:0}
.cal td.cal-libre{height:3.4rem}
.cal-libre a,.cal-libre span{display:flex;height:100%;min-height:3rem;align-items:center;justify-content:center;border-radius:7px;color:#d9d3c8;font-size:.8rem;text-decoration:none;font-weight:600}
.cal-libre a:hover,.cal-libre a:focus{color:var(--acc);background:var(--acc-soft);outline:1px dashed var(--acc)}
.cal td.cal-oc{padding:.25rem}
.cal td.cal-oc .chip{height:100%}
.cal td.cal-multi{min-height:3.4rem;height:3.4rem}
.cal-mas{display:block;font-size:.72rem;color:var(--muted);text-decoration:none;text-align:center;padding:.15rem;border-radius:5px;margin-top:2px;opacity:.35}
@media (hover:hover){.cal-mas{opacity:0}.cal-multi:hover .cal-mas{opacity:.7}}
.cal-mas:hover{opacity:1;background:var(--acc-soft);color:var(--acc)}
@media (hover:none){.cal-libre a{color:#9aa5ab}}

/* Fichas de reserva */
.chip{display:flex;flex-direction:column;gap:1px;background:color-mix(in srgb,var(--c) 13%,#fff);border-left:4px solid var(--c);border-radius:6px;padding:.3rem .45rem;margin-bottom:3px;text-decoration:none;color:var(--ink);font-size:.78rem;line-height:1.25;overflow:hidden}
a.chip:hover{background:color-mix(in srgb,var(--c) 22%,#fff)}
.chip-esp{font-weight:700;color:color-mix(in srgb,var(--c) 75%,#000);font-size:.72rem;text-transform:uppercase;letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chip-t{font-weight:600;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.chip-s{color:var(--muted);font-size:.74rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chip-cont{display:block;font-size:.7rem;color:color-mix(in srgb,var(--c) 75%,#000);background:color-mix(in srgb,var(--c) 8%,#fff);border-left:4px solid var(--c);border-radius:6px;padding:.15rem .45rem;margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* Mes */
.cal-mes td{height:7.5rem}
.cal-mes td.fuera{background:#faf9f6}
.cal-mes td.fuera .chip,.cal-mes td.fuera .mes-dia{opacity:.45}
.mes-dia{display:flex;justify-content:space-between;align-items:center;margin-bottom:.2rem}
.mes-dia a{color:var(--ink);text-decoration:none;font-weight:700;font-size:.9rem;padding:0 .3rem;border-radius:5px}
.cal-mes td.hoy .mes-dia a:first-child{background:var(--acc);color:#fff}
.mes-mas{color:var(--muted)!important;font-weight:400!important;opacity:.5}
.mes-mas:hover{opacity:1;background:var(--acc-soft)}
.cal-mes .chip{padding:.2rem .35rem}
.cal-mes .chip-s{display:none}

/* Formulario de reserva */
.res-form{grid-template-columns:1fr 1fr;align-items:start}
@media (max-width:760px){.res-form{grid-template-columns:1fr}}
.res-form fieldset{min-width:0;margin:0}
.res-form fieldset[disabled]{opacity:.85}
.rapidos{display:flex;flex-wrap:wrap;gap:.35rem;margin-bottom:.4rem}
.jornada-t{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:.5rem 0 .25rem}
.bloques-sel{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:.35rem}
.bloques-sel input{position:absolute;opacity:0;pointer-events:none}
.bloques-sel label{margin:0;display:flex;flex-direction:column;align-items:center;padding:.4rem .3rem;border:1.5px solid #d7d0c4;border-radius:8px;cursor:pointer;background:#fff;user-select:none;font-weight:600;text-align:center}
.bloques-sel label small{font-weight:400;color:var(--muted);font-size:.72rem}
.bloques-sel label em{font-style:normal;font-weight:400;font-size:.68rem;line-height:1.15;color:var(--l1);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bloques-sel label:hover{border-color:var(--acc)}
.bloques-sel input:checked+label{background:var(--acc);border-color:var(--acc);color:#fff}
.bloques-sel input:checked+label small{color:#dff}
.bloques-sel input:focus-visible+label{outline:2px solid var(--acc);outline-offset:2px}
.bloques-sel label.ocupado{background:var(--l1s);border-color:#e3b3ad;border-style:dashed;cursor:not-allowed}
.bloques-sel input:checked+label.ocupado{background:var(--l1);border-color:var(--l1)}
.bloques-sel input:checked+label.ocupado em{color:#fff}
.eliminar{margin-top:1.5rem;border-color:#efd3cf}
.eliminar h3{margin-top:0}
.color-in{height:2.45rem;padding:.15rem;width:100%;border:1px solid #cfc8bb;border-radius:8px;background:#fff}

/* Mapa de calor (uso) */
table.calor{border-collapse:separate;border-spacing:2px;font-size:.78rem;width:100%}
.calor th{color:var(--muted);font-weight:600;padding:.15rem .3rem;text-align:center}
.calor tbody th{text-align:right}
.calor td{text-align:center;height:1.6rem;border-radius:4px;background:color-mix(in srgb,var(--c) calc(var(--a) * 85%),#f3f1ec);color:#fff;font-weight:700;text-shadow:0 0 2px #0006}

@media print{
  .cal-bar,.leyenda,.cal-mas,.cal-libre a,.mes-mas{display:none!important}
  .cal-card{border:0}
  .chip,.chip-cont,.cal-sep td,.calor td,.punto{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  table.cal{min-width:0}
}
