.cal-wrap{max-width:720px;margin:0 auto;background:var(--paper);border-radius:var(--borderradius);padding:clamp(1.2rem,3vw,2rem);box-shadow:var(--shadow-sm)}.cal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.2rem}.cal-header h2{margin:0;font-size:clamp(1.1rem,3vw,1.4rem)}.cal-nav{font:inherit;font-weight:700;font-size:1.2rem;cursor:pointer;padding:.4rem .9rem;border:2px solid var(--mainblue);border-radius:999px;background:var(--paper);color:var(--maindarkblue);transition:all .2s}.cal-nav:hover{background:var(--mainblue)}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;text-align:center}.cal-dow{font-weight:700;font-size:.8rem;color:var(--ink-soft);padding:.3rem 0;text-transform:uppercase;letter-spacing:.05em}.cal-day{position:relative;aspect-ratio:1;display:grid;place-items:center;border-radius:12px;font-weight:600;font-size:clamp(.85rem,2vw,1rem);cursor:default;transition:all .2s;color:var(--ink);background:transparent}.cal-day.empty{visibility:hidden}.cal-day.other-month{color:#c0c8d0}.cal-day.today{border:2px solid var(--accent)}.cal-day.has-slots{background:var(--mainblue);color:var(--maindarkblue);cursor:pointer;font-weight:800}.cal-day.has-slots:hover{background:var(--accent);color:#fff;transform:scale(1.08)}.cal-day.selected{background:var(--maindarkblue);color:#fff}.cal-day .dot-row{position:absolute;bottom:4px;display:flex;gap:3px;justify-content:center}.cal-day .dot{width:5px;height:5px;border-radius:50%;background:var(--accent)}.cal-day.selected .dot,.cal-day.has-slots:hover .dot{background:#fff}.day-detail{margin-top:2rem;animation:fadeSlide .3s ease}@keyframes fadeSlide{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.day-detail-header{font-size:1.1rem;font-weight:700;color:var(--maindarkblue);margin-bottom:1rem;padding-bottom:.5rem;border-bottom:2px solid var(--mainblue)}.day-slots{display:grid;gap:1rem}.day-slot-card{display:grid;gap:.8rem;grid-template-columns:1fr auto;align-items:center;padding:1.2rem 1.5rem;background:var(--paper);border-radius:var(--borderradius);box-shadow:var(--shadow-sm);border-left:4px solid var(--accent);transition:box-shadow .2s}.day-slot-card:hover{box-shadow:var(--shadow-md)}.day-slot-info h3{margin:0 0 .3rem;color:var(--maindarkblue)}.day-slot-meta{display:flex;flex-wrap:wrap;gap:.5rem 1.2rem;font-size:.9rem;color:var(--ink-soft)}.day-slot-meta span{display:inline-flex;align-items:center;gap:.3rem}.spots-badge{display:inline-block;padding:.15rem .6rem;border-radius:999px;font-size:.8rem;font-weight:700}.spots-badge.open{background:#d4edda;color:#155724}.spots-badge.full{background:#f8d7da;color:#721c24}.btn-book{font:inherit;font-weight:700;cursor:pointer;padding:.7rem 1.8rem;border:0;border-radius:999px;background:var(--maindarkblue);color:#fff;transition:transform .2s ease,background-color .2s ease;white-space:nowrap;text-decoration:none;display:inline-block}.btn-book:hover{background:var(--accent);transform:translateY(-2px)}.btn-book:disabled{background:#aaa;cursor:not-allowed;transform:none}.booking-overlay{display:none;position:fixed;inset:0;background:#00000080;z-index:100;place-items:center}.booking-overlay.show{display:grid}.booking-modal{background:var(--paper);border-radius:var(--borderradius);padding:clamp(1.5rem,4vw,2.5rem);max-width:480px;width:90%;max-height:90vh;overflow-y:auto;box-shadow:0 10px 40px #0003}.booking-modal h2{margin-bottom:.3rem}.booking-modal .slot-summary{color:var(--ink-soft);font-size:.95rem;margin-bottom:1.5rem}.booking-modal .form-group{margin-bottom:1rem}.booking-modal label{display:block;font-weight:600;font-size:.9rem;margin-bottom:.3rem}.booking-modal input,.booking-modal textarea{font:inherit;padding:.7rem 1rem;border:2px solid transparent;border-radius:20px;background:var(--mainblue);width:100%;transition:border-color .2s ease}.booking-modal input:focus,.booking-modal textarea:focus{outline:none;border-color:var(--accent)}.booking-modal textarea{min-height:80px;resize:vertical}.checkbox-group{display:flex;gap:.5rem;align-items:flex-start;font-size:.85rem;color:var(--ink-soft)}.checkbox-group input[type=checkbox]{width:auto;margin-top:.2rem;flex-shrink:0}.booking-actions{display:flex;gap:.8rem;margin-top:1.5rem}.btn-cancel-modal{font:inherit;font-weight:600;cursor:pointer;padding:.7rem 1.5rem;border:2px solid var(--accent);border-radius:999px;background:none;color:var(--accent);transition:all .2s}.btn-cancel-modal:hover{background:var(--accent);color:#fff}.booking-error{color:#c0392b;font-size:.9rem;margin-top:.5rem;display:none}.booking-success{text-align:center;padding:1rem 0}.booking-success h2{color:#2d7d46}.no-slots-msg{text-align:center;padding:1rem;color:var(--ink-soft);font-style:italic}@media(max-width:500px){.day-slot-card{grid-template-columns:1fr}.day-slot-card .btn-book{justify-self:start}}
