/* Calendario de disponibilidad y reserva */
body.rv-open{overflow:hidden}
dialog#reserva{border:0;padding:0;margin:auto;width:min(540px,calc(100% - 24px));max-width:none;max-height:calc(100dvh - 24px);overflow:auto;border-radius:26px;background:#fff;color:var(--ink);box-shadow:0 40px 90px -20px rgba(0,0,0,.6)}
dialog#reserva::backdrop{background:rgba(29,29,27,.72);backdrop-filter:blur(3px)}
.rv{padding:26px 24px 24px;display:grid;gap:16px}
.rv-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}
.rv-head h2{font-size:1.7rem;line-height:1.05}
.rv-close{flex:none;width:44px;height:44px;border-radius:50%;border:0;background:var(--mist);color:var(--ink);font-size:1.6rem;line-height:1;cursor:pointer}
.rv-close:hover{background:var(--teal-40)}
.rv-sub{color:var(--muted);font-size:1rem}
.rv-notice{background:#fff4d6;border:1px solid #f0d58a;border-radius:12px;padding:10px 14px;font-size:.95rem}
.cal{border:1px solid var(--line);border-radius:18px;padding:14px}
.cal-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.cal-nav strong{font-size:1.1rem}
.cal-nav button{width:44px;height:44px;border-radius:50%;border:1px solid var(--line);background:#fff;font-size:1.2rem;cursor:pointer;color:var(--ink)}
.cal-nav button:hover:not(:disabled){background:var(--teal-40)}
.cal-nav button:disabled{opacity:.3;cursor:default}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.cal-dow{font-size:.75rem;font-weight:700;text-align:center;color:var(--muted);text-transform:uppercase;padding-bottom:2px}
.cal-grid .d{aspect-ratio:1;min-height:42px;border:0;border-radius:12px;font:inherit;font-weight:700;font-size:1rem;cursor:pointer;display:grid;place-items:center;background:var(--teal-40);color:var(--ink);position:relative}
.cal-grid .d:hover:not(:disabled){background:var(--teal)}
.cal-grid .d.busy{background:#ececea;color:#8d8d88;cursor:not-allowed;background-image:linear-gradient(135deg,transparent 46%,#c9c9c4 46%,#c9c9c4 54%,transparent 54%)}
.cal-grid .d.off{background:transparent;color:#c2c2bd;cursor:default}
.cal-grid .d.sel{background:var(--ink);color:#fff;outline:3px solid var(--teal);outline-offset:1px}
.cal-grid .d.today::after{content:"";position:absolute;bottom:5px;width:5px;height:5px;border-radius:50%;background:var(--teal-ink)}
.cal-grid .d:focus-visible,.rv-close:focus-visible,.cal-nav button:focus-visible{outline:3px solid var(--ink);outline-offset:2px}
.cal-grid .blank{visibility:hidden}
.cal-legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:12px;font-size:.85rem;color:var(--muted)}
.cal-legend i{display:inline-block;width:12px;height:12px;border-radius:4px;margin-right:6px;vertical-align:-1px}
.cal-legend .l-free{background:var(--teal-40)}
.cal-legend .l-busy{background:#d7d7d3}
.rv-panel{min-height:132px;border-radius:18px;background:var(--mist);padding:18px;display:grid;gap:10px;align-content:center}
.rv-panel p{color:var(--muted);font-size:.97rem}
.rv-panel .rv-date{font-size:1.15rem;font-weight:800;line-height:1.2}
.rv-badge{display:inline-block;background:var(--teal);color:var(--ink);font-weight:800;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;border-radius:999px;padding:4px 10px;margin-right:8px;vertical-align:2px}
.rv-badge.no{background:#d7d7d3}
.rv-pay{justify-content:center;width:100%;font-size:1.05rem;padding:1.05rem 1.4rem}
.rv-pay:disabled{opacity:.7;cursor:wait;transform:none}
.rv-small{font-size:.82rem!important;text-align:center}
.rv-small a{color:var(--teal-ink)}
.rv-err{color:#b00020!important;font-weight:600}
.rv-panel a.mail{color:var(--teal-ink);font-weight:700}

/* Barra fija en móvil */
.sticky-cta{display:none}
@media(max-width:700px){
  .sticky-cta{display:block;position:fixed;left:0;right:0;bottom:0;z-index:40;padding:10px 16px calc(10px + env(safe-area-inset-bottom));background:linear-gradient(180deg,rgba(29,29,27,0),rgba(29,29,27,.92) 40%)}
  .sticky-cta .btn{width:100%;justify-content:center;box-shadow:0 10px 30px -8px rgba(0,0,0,.6)}
  body{padding-bottom:84px}
  dialog#reserva{margin:auto 0 0;width:100%;max-width:none;max-height:94dvh;border-radius:26px 26px 0 0}
}
@media(max-width:380px){.nav .btn{font-size:.82rem;padding:.55rem .8rem}}
