/* Keep mobile text sizing stable across rotation while preserving pinch zoom. */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
@media(hover:none) and (pointer:coarse){
 input:not([type=checkbox]):not([type=radio]),select,textarea{font-size:16px!important;min-width:0;max-width:100%}
}
/* The customer app uses one column, including wide phone orientations. */
body.customer-mobile .customer-portal-grid>article{min-width:0;overflow-wrap:anywhere}
body.customer-mobile .customer-portal-grid>.portal-next{grid-column:1/-1}

/* Keep booking actions above navigation and clear of the phone home indicator. */
body:is(.customer-mobile,.booking-touch) #bookingModal{z-index:150;top:var(--booking-viewport-top,0px);bottom:auto;height:var(--booking-viewport-height,100svh);padding:12px;padding-top:calc(12px + env(safe-area-inset-top));padding-bottom:calc(12px + env(safe-area-inset-bottom))}
body:is(.customer-mobile,.booking-touch) #bookingModal .modal-card{display:flex;flex-direction:column;width:min(760px,100%);height:100%;max-height:100%;overflow:hidden;padding:0}
body:is(.customer-mobile,.booking-touch) .booking-review-header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-shrink:0;padding:12px 16px;border-bottom:1px solid var(--line)}
body:is(.customer-mobile,.booking-touch) .booking-review-header h2{margin:0;font-size:1.2rem}
body:is(.customer-mobile,.booking-touch) #closeBookingModal{position:static;flex-shrink:0;width:48px;height:48px;min-height:48px;border:1px solid var(--line);border-radius:8px;background:var(--paper);font-size:2rem}
body:is(.customer-mobile,.booking-touch) .booking-review-content{flex:1;min-height:0;overflow:auto;padding:16px;overscroll-behavior-y:contain;overflow-anchor:none;-webkit-overflow-scrolling:touch}
body:is(.customer-mobile,.booking-touch) .booking-review-footer{flex-shrink:0;padding:12px 16px;background:var(--paper);border-top:1px solid var(--line)}
body:is(.customer-mobile,.booking-touch) #bookingConfirm{min-height:48px}
body:is(.customer-mobile,.booking-touch).booking-grid-screen #stickyBookingSummary{bottom:calc(16px + env(safe-area-inset-bottom))}
body:is(.customer-mobile,.booking-touch).booking-grid-screen #availabilityGrid{scroll-padding-bottom:120px}

body:is(.customer-mobile,.booking-touch) .modal{z-index:140}
body:is(.customer-mobile,.booking-touch) #policyModal,body:is(.customer-mobile,.booking-touch) #bayDifferencesModal{z-index:160}

body:not(.customer-mobile):not(.booking-touch) .booking-review-header h2{margin-top:0}

.reschedule-time-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}.reschedule-time-grid button{min-height:48px;white-space:normal}.reschedule-time-grid button[aria-pressed=true]{background:var(--pine);color:white}.reschedule-time-grid button:disabled{opacity:.5}

/* Visible keyboard focus and comfortable customer touch controls. */
body.customer-mobile :is(button,a,input,select,textarea,summary):focus-visible{outline:3px solid #17392b;outline-offset:3px}
body.customer-mobile :is(button,summary){min-height:44px}
body.customer-mobile #phoneInstall{overflow-wrap:anywhere}
body.customer-mobile #phoneInstall button{min-height:48px}
