.calendar-grid{touch-action:pan-y pinch-zoom}.calendar-grid.month-swiping{user-select:none;-webkit-user-select:none;cursor:grabbing}.calendar-grid.month-swiping .calendar-event{pointer-events:none}.day-timeline.day-swiping{user-select:none;-webkit-user-select:none;cursor:grabbing}
@media(prefers-reduced-motion:reduce){#calendar-content,.day-timeline{scroll-behavior:auto}}

.calendar-grid,.week-strip{touch-action:pan-y pinch-zoom;-webkit-user-select:none;user-select:none}.day-timeline,.day-timeline *{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.calendar-grid button,.week-strip button{-webkit-touch-callout:none}

/* The entire empty half-hour row opens a booking; reservation cards remain above it. */
.day-timeline .half-hour-slot .hour-add{width:100%;flex:1 1 auto;align-self:stretch;display:flex;align-items:center;justify-content:flex-end;padding:0 6px;cursor:pointer;background:transparent;border:0;border-radius:0}
.day-timeline .half-hour-slot .hour-add:focus-visible{outline:2px solid #81a889;outline-offset:-2px}
.day-timeline .half-hour-slot .hour-add:active{background:#e9f2e6}
