/* =========================================================
   BUE · Reservaciones (página pública y panel admin)
   Usa las variables de assets/css/style.css
   ========================================================= */
.rsv{
  --rsv-line:rgba(255,255,255,.09);
  --st-red:#e0605a;--st-red-bg:rgba(224,96,90,.18);
  --st-yel:#e8c25a;--st-yel-bg:rgba(232,194,90,.2);
  --st-grn:#3ec18a;--st-grn-bg:rgba(62,193,138,.2);
  --st-full:#9fb1b9;--st-full-bg:rgba(159,177,185,.12);
  display:grid;gap:22px;
}
.rsv [hidden]{display:none!important}
.rsv-chips{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.rsv-gear{margin-left:auto;display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:50%;color:var(--grey-600);opacity:.55;transition:opacity .15s,color .15s}
.rsv-gear:hover,.rsv-gear:focus-visible{opacity:1;color:var(--cyan-300)}
.rsv-chip{border:1px solid var(--rsv-line);background:var(--navy-900);color:var(--white);border-radius:12px;padding:10px 15px;cursor:pointer;text-align:left;display:grid;gap:1px;font-family:var(--font-body)}
.rsv-chip b{font-weight:600;font-size:.95rem}
.rsv-chip small{font-size:.75rem;color:var(--grey-600)}
.rsv-chip[aria-pressed="true"]{border-color:var(--cyan-400);background:rgba(51,201,221,.1)}
.rsv-chip[aria-pressed="true"] small{color:var(--cyan-300)}
.rsv-badge{display:inline-block;margin-left:6px;background:var(--st-red);color:#fff;border-radius:999px;font-size:.7rem;padding:0 7px;font-weight:700;vertical-align:1px}

.rsv-layout{display:grid;grid-template-columns:minmax(0,1fr) 370px;gap:22px;align-items:start}
@media (max-width:960px){.rsv-layout{grid-template-columns:minmax(0,1fr)}}
.rsv-card{background:var(--navy-800);border:1px solid var(--rsv-line);border-radius:var(--radius,14px);padding:20px;min-width:0}
.rsv-card h3{font-size:calc(1.6rem * var(--head-scale,1));margin:0}
.rsv-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.rsv-head h2{font-size:calc(1.9rem * var(--head-scale,1));margin:0;flex:1}
.rsv-nav{width:38px;height:38px;border-radius:50%;border:1px solid var(--rsv-line);background:var(--navy-900);color:var(--white);cursor:pointer;font-size:1.2rem;line-height:1}
.rsv-nav:disabled{opacity:.3;cursor:default}
.rsv-months{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
@media (max-width:680px){.rsv-months{grid-template-columns:minmax(0,1fr)}.rsv-months .m2{display:none}}
.rsv-mname{font-family:var(--font-head);font-style:italic;font-size:calc(1.45rem * var(--head-scale,1));margin-bottom:8px;text-transform:capitalize}
.rsv-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.rsv-wd{font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--grey-600);text-align:center;padding-bottom:2px}
.rsv-cell{position:relative;aspect-ratio:1/1;border-radius:8px;border:1px solid transparent;background:transparent;color:var(--white);padding:4px 5px;display:flex;flex-direction:column;justify-content:space-between;text-align:left;font-variant-numeric:tabular-nums;min-width:0;overflow:hidden;font-family:var(--font-body)}
.rsv-cell .d{font-size:.74rem;color:var(--grey-300)}
.rsv-cell .n{font-weight:700;font-size:1.2rem;line-height:1;align-self:flex-end}
.rsv-cell .sub{position:absolute;right:5px;top:4px;font-size:.64rem;color:var(--grey-300);opacity:.85}
.rsv-cell .bdg{position:absolute;left:5px;bottom:4px;font-size:.62rem;font-weight:700;color:var(--cyan-300)}
button.rsv-cell{cursor:pointer}
.rsv-cell.past{opacity:.28}
.rsv-cell.s-closed{background:repeating-linear-gradient(135deg,transparent 0 6px,rgba(255,255,255,.035) 6px 12px)}
.rsv-cell.s-closed .d{color:var(--grey-600)}
.rsv-cell.s-red{background:var(--st-red-bg);border-color:rgba(224,96,90,.35)}.rsv-cell.s-red .n{color:var(--st-red)}
.rsv-cell.s-yel{background:var(--st-yel-bg);border-color:rgba(232,194,90,.4)}.rsv-cell.s-yel .n{color:var(--st-yel)}
.rsv-cell.s-grn{background:var(--st-grn-bg);border-color:rgba(62,193,138,.45)}.rsv-cell.s-grn .n{color:var(--st-grn)}
.rsv-cell.s-full{background:var(--st-full-bg);border-color:rgba(159,177,185,.25)}.rsv-cell.s-full .n{color:var(--st-full);font-size:.66rem;letter-spacing:.05em;text-transform:uppercase}
button.rsv-cell:hover{border-color:var(--white)}
.rsv-cell.inrange{box-shadow:inset 0 0 0 2px rgba(51,201,221,.55)}
.rsv-cell.edge{box-shadow:inset 0 0 0 2px var(--cyan-400);background-color:rgba(51,201,221,.22)}
.rsv-cell.preview{box-shadow:inset 0 0 0 1px rgba(51,201,221,.6)}
.rsv-legend{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:14px;font-size:.82rem;color:var(--grey-300)}
.rsv-legend span{display:inline-flex;align-items:center;gap:7px}
.rsv-dot{width:12px;height:12px;border-radius:3px;display:inline-block;border:1px solid}
.rsv-dot.red{background:var(--st-red-bg);border-color:var(--st-red)}.rsv-dot.yel{background:var(--st-yel-bg);border-color:var(--st-yel)}
.rsv-dot.grn{background:var(--st-grn-bg);border-color:var(--st-grn)}.rsv-dot.full{background:var(--st-full-bg);border-color:var(--st-full)}
.rsv-dot.closed{background:repeating-linear-gradient(135deg,transparent 0 3px,rgba(255,255,255,.2) 3px 5px);border-color:var(--grey-600)}
.rsv-hint{font-size:.84rem;color:var(--grey-600);margin:10px 0 0}

.rsv-side{display:grid;gap:14px;position:sticky;top:120px}
@media (max-width:960px){.rsv-side{position:static}}
.rsv-sel{display:grid;gap:4px;padding:12px 14px;border-radius:10px;background:var(--navy-900);border:1px solid var(--rsv-line)}
.rsv-lbl{font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--grey-600)}
.rsv-val{font-weight:600}
.rsv-note{font-size:.82rem;color:var(--grey-600)}
.rsv-pill{display:inline-flex;align-items:center;gap:6px;font-size:.76rem;font-weight:600;border-radius:999px;padding:2px 10px;border:1px solid}
.rsv-pill.red{color:var(--st-red);border-color:rgba(224,96,90,.5);background:var(--st-red-bg)}
.rsv-pill.yel{color:var(--st-yel);border-color:rgba(232,194,90,.5);background:var(--st-yel-bg)}
.rsv-pill.grn{color:var(--st-grn);border-color:rgba(62,193,138,.5);background:var(--st-grn-bg)}
.rsv-pill.full{color:var(--st-full);border-color:rgba(159,177,185,.4);background:var(--st-full-bg)}
.rsv-pill.pend{color:var(--sand-400);border-color:rgba(232,201,131,.45)}
.rsv-pill.canc{color:var(--grey-600);border-color:var(--rsv-line);text-decoration:line-through}
.rsv form{display:grid;gap:12px}
.rsv label{margin-bottom:5px}
.rsv .row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media (max-width:440px){.rsv .row2{grid-template-columns:1fr}}
.rsv textarea{min-height:80px}
.rsv-check{display:flex;gap:9px;align-items:flex-start;font-size:.84rem;color:var(--grey-300);text-transform:none;letter-spacing:0}
.rsv-check input{width:auto;margin-top:3px}
.rsv-pax{display:flex;align-items:center;gap:10px}
.rsv-step{width:40px;height:40px;border-radius:50%;border:1px solid var(--rsv-line);background:var(--navy-900);color:var(--white);cursor:pointer;font-size:1.25rem}
.rsv-step:disabled{opacity:.3;cursor:default}
.rsv-paxnum{font-size:1.5rem;font-weight:700;min-width:2ch;text-align:center;font-variant-numeric:tabular-nums}
.rsv .btn:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}
.rsv-btn{display:inline-flex;justify-content:center;align-items:center;gap:6px;padding:9px 16px;border-radius:999px;font-weight:600;font-size:.84rem;border:1px solid var(--rsv-line);background:var(--navy-900);color:var(--white);cursor:pointer;font-family:var(--font-body)}
.rsv-btn:hover{border-color:var(--grey-300)}
.rsv-btn.sm{padding:5px 11px;font-size:.78rem}
.rsv-btn.open{border-color:rgba(51,201,221,.5);color:var(--cyan-300)}
.rsv-btn.close{border-color:rgba(224,96,90,.5);color:#f0a3a3}
.rsv-btn.conf{border-color:rgba(62,193,138,.5);color:#8fe0b9}
.rsv-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.rsv-msg{padding:10px 12px;border-radius:8px;font-size:.86rem}
.rsv-msg.err{background:rgba(224,96,90,.14);color:#f3b1ad;border:1px solid rgba(224,96,90,.4)}
.rsv-msg.ok{background:rgba(62,193,138,.14);color:#9fe6c3;border:1px solid rgba(62,193,138,.4)}
.rsv-msg.info{background:rgba(51,201,221,.1);color:var(--cyan-300);border:1px solid rgba(51,201,221,.3)}
.rsv-list{display:grid;gap:8px}
.rsv-bk{padding:10px 12px;border-radius:10px;background:var(--navy-900);border:1px solid var(--rsv-line);display:grid;gap:4px;font-size:.86rem}
.rsv-bk .t{display:flex;justify-content:space-between;gap:8px;align-items:center;flex-wrap:wrap}
.rsv-bk .who{font-weight:600}
.rsv-bk .meta{color:var(--grey-300);font-size:.8rem;overflow-wrap:anywhere}
.rsv-bk .acts{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}
.rsv-bk details summary{cursor:pointer;color:var(--cyan-300);font-size:.8rem}
.rsv-bk dl{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;margin:6px 0 0;font-size:.8rem}
.rsv-bk dt{color:var(--grey-600)}
.rsv-bk dd{margin:0;color:var(--grey-300);overflow-wrap:anywhere;white-space:pre-wrap}
.rsv details.manual summary{cursor:pointer;font-size:.86rem;color:var(--cyan-300)}
.rsv details.manual form{margin-top:10px}
.rsv-loading{color:var(--grey-600);font-size:.9rem;padding:20px 0}
.rsv-code{font-family:ui-monospace,Menlo,Consolas,monospace;letter-spacing:.08em;color:var(--sand-400)}
@media (prefers-reduced-motion:no-preference){.rsv-cell,.rsv-chip,.rsv-btn{transition:border-color .15s,background-color .15s,box-shadow .15s}}

/* panel admin */
.rsv-admin-top{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:space-between}
.rsv-login{max-width:420px;margin:0 auto}
