@import url('https://fonts.googleapis.com/css2?family=Nunito:wght@400;700;800&display=swap');
:root{--bg:#f4faff;--ink:#2b3a55;--blue:#8ecdf7;--pink:#ffc2dc;--yellow:#ffe58f;
--ok:#7ed9a0;--wait:#ffb86b;--taken:#ff7b7b;--off:#c9ced6}
*{box-sizing:border-box}
body{margin:0;font-family:Nunito,'Segoe UI',sans-serif;background:var(--bg);color:var(--ink);line-height:1.5}
.wrap{max-width:960px;margin:0 auto;padding:1rem}
header.hero{background:linear-gradient(135deg,var(--blue),var(--pink));border-radius:0 0 40px 40px;padding:2rem 1rem;text-align:center}
.hero h1{margin:.2rem 0;font-size:clamp(1.5rem,5vw,2.4rem)}
.hero .deco{font-size:2.2rem;letter-spacing:.5rem}
.card{background:#fff;border-radius:22px;padding:1.2rem;margin:1rem 0;box-shadow:0 6px 20px #2b3a5518}
h2{margin-top:0}
.btn{border:0;border-radius:999px;padding:.7rem 1.4rem;font:800 1rem Nunito,sans-serif;background:var(--yellow);color:var(--ink);cursor:pointer;transition:transform .15s,box-shadow .15s,background .2s}
.btn:hover{transform:translateY(-2px) scale(1.04);box-shadow:0 6px 14px #2b3a5530}
.btn:active{transform:scale(.96)}
.btn.sec{background:#e8eef7}.btn.go{background:var(--ok)}.btn.no{background:var(--taken);color:#fff}
.hidden{display:none!important}
.steps{display:flex;gap:.5rem;margin-bottom:1rem;flex-wrap:wrap}
.steps span{padding:.3rem .8rem;border-radius:999px;background:#e8eef7;font-weight:800;font-size:.85rem}
.steps span.on{background:var(--blue)}
.cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem}
.calhead{display:flex;justify-content:space-between;align-items:center;text-transform:capitalize;font-weight:800}
#cal{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;text-align:center;margin-top:.5rem}
#cal b{font-size:.8rem;opacity:.6}
.day{aspect-ratio:1;border:0;border-radius:12px;background:transparent;font:700 .95rem Nunito;color:#9aa5b8}
.day.ok{background:#e0f7ea;color:var(--ink);cursor:pointer;transition:transform .15s}
.day.ok:hover{transform:scale(1.12)}.day.sel{background:var(--blue)!important}
#slots,.slots{display:flex;flex-wrap:wrap;gap:.5rem}
.slot{border:0;border-radius:12px;padding:.6rem .9rem;font:800 .95rem Nunito;color:var(--ink);transition:transform .15s,box-shadow .15s,background .4s}
.slot:not(:disabled):hover{transform:scale(1.1);box-shadow:0 4px 10px #0003;cursor:pointer}
.slot.sel{outline:3px solid var(--ink)}
.DISPONIBLE{background:var(--ok)}.PRERESERVE{background:var(--wait)}.RESERVE{background:var(--taken);color:#fff}.INDISPONIBLE{background:var(--off)}
.legend{display:flex;gap:.8rem;flex-wrap:wrap;font-size:.85rem;margin:.5rem 0}
.legend i{display:inline-block;width:.9rem;height:.9rem;border-radius:50%;vertical-align:middle;margin-right:.3rem}
form{display:grid;gap:.7rem}
label{font-weight:700;font-size:.9rem;display:grid;gap:.2rem}
input,select{padding:.65rem .8rem;border:2px solid #dbe6f3;border-radius:12px;font:inherit}
input:focus,select:focus{outline:0;border-color:var(--blue)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:.7rem}
@media(max-width:520px){.grid2{grid-template-columns:1fr}}
.msg{padding:.8rem 1rem;border-radius:14px;background:#e0f7ea;font-weight:700}.msg.err{background:#ffe0e0}
table{width:100%;border-collapse:collapse;font-size:.9rem}
td,th{padding:.5rem;border-bottom:1px solid #e8eef7;text-align:left}
.tablewrap{overflow-x:auto}
.day-block{margin:1rem 0}.day-block h3{margin:.3rem 0;text-transform:capitalize}
footer{text-align:center;opacity:.6;padding:2rem 0;font-size:.85rem}

textarea{padding:.65rem .8rem;border:2px solid #dbe6f3;border-radius:12px;font:inherit;width:100%;min-height:8rem}
textarea:focus{outline:0;border-color:var(--blue)}
.danger{color:#c0392b;font-weight:800}
