/* Readability: bump the smallest text sizes */
.eyebrow{font-size:.75rem}
.brand{font-size:.78rem}
nav a{font-size:.85rem}
label{font-size:.74rem}
.text-link{font-size:.82rem}
.button{font-size:.78rem}
.appointment-note{font-size:.85rem}
.appointment-note b,.visit-details b{font-size:.74rem}
.visit-details p{font-size:.88rem}
.calendar-weekdays{font-size:.7rem}
.calendar-key{font-size:.8rem}
.notification-choice legend{font-size:.74rem}
.notification-choice label{font-size:.85rem}
footer{font-size:.78rem}

/* Interaction: hover, focus and press states */
nav a:not(.nav-book){padding:.5rem 0}
nav a{transition:color .2s ease,border-color .2s ease}
nav a:hover{color:var(--rose)}
.nav-book:hover{border-color:var(--rose)}
.button{transition:transform .2s ease,box-shadow .2s ease,opacity .2s ease}
.button:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(38,56,46,.18)}
.button:active{transform:none;box-shadow:none}
.button:disabled{opacity:.6;cursor:not-allowed;transform:none;box-shadow:none}
.button span{transition:transform .2s ease}
.button:hover span{transform:translate(2px,-2px)}
.text-link{transition:color .2s ease,border-color .2s ease}
.text-link:hover{color:var(--rose);border-color:var(--rose)}
input,select,textarea{transition:border-color .2s ease}
input:focus,select:focus,textarea:focus{border-bottom-color:var(--rose)}
a:focus-visible,button:focus-visible,.service-option:focus-within{outline:2px solid var(--rose);outline-offset:3px;border-radius:2px}
.service-option{transition:background-color .2s ease}
.service-option:hover{background:rgba(232,221,202,.35)}

/* Calendar: loading / error states, today marker, bigger arrows */
.calendar-day{transition:background-color .15s ease}
.calendar-day.today{font-weight:600;box-shadow:inset 0 0 0 1px var(--ink)}
.calendar-heading button{min-width:44px;min-height:44px;transition:color .2s ease}
.calendar-heading button:hover{color:var(--rose)}
.calendar-loading,.calendar-error{grid-column:1/-1;margin:2rem 0;padding:1.2rem;text-align:center;font-size:.85rem;color:#59665a}
.calendar-loading{animation:calendar-pulse 1.4s ease-in-out infinite}
@keyframes calendar-pulse{0%,100%{opacity:.45}50%{opacity:1}}

/* Calendar section: tighter, vertically centred layout on desktop */
@media(min-width:751px){
  .calendar-section{padding:6rem 8vw;align-items:center}
  .calendar-card{width:100%;max-width:560px;justify-self:end}
}

/* Gentle scroll-in animation (only active when polish.js runs) */
.js-reveal .reveal{opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s ease}
.js-reveal .reveal.in-view{opacity:1;transform:none}

/* Mobile tap targets */
@media(max-width:750px){
  .menu{min-width:44px;min-height:44px}
  .site-header.menu-open nav a{padding:.6rem 0}
  .calendar-day{min-height:44px}
  .notification-choice label{min-height:44px}
  input:not([type=radio]):not([type=checkbox]),select{min-height:44px}
  .site-header .brand{padding:.6rem 0}
  .text-link{display:inline-block;padding-top:.75rem}
}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
}
