.consent-banner {
  position: fixed;
  z-index: 500;
  inset: auto max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 1.25rem 2rem;
  align-items: center;
  max-width: 1080px;
  margin-inline: auto;
  padding: 1.25rem 1.4rem;
  color: #1b2438;
  background: #fff;
  border: 1px solid #d8c7a4;
  box-shadow: 0 20px 60px rgba(14, 24, 48, .24);
  font-family: "Lato", system-ui, sans-serif;
}
.consent-banner[hidden] { display: none; }
.consent-banner strong { display: block; margin-bottom: .25rem; color: #0e1830; }
.consent-banner p { max-width: 68ch; margin: 0; color: #4f5b72; font-size: .9rem; line-height: 1.55; }
.consent-banner a { text-decoration: underline; text-underline-offset: 3px; }
.consent-actions, .consent-dialog-actions { display: flex; flex-wrap: wrap; gap: .55rem; align-items: center; min-width: 0; }
.consent-button, .consent-link {
  min-height: 44px;
  padding: .65rem 1rem;
  border: 1px solid #16243f;
  border-radius: 3px;
  color: #16243f;
  background: #fff;
  font: 700 .78rem/1.2 "Lato", system-ui, sans-serif;
  cursor: pointer;
  min-width: 0;
  white-space: normal;
}
.consent-primary { color: #fff; background: #16243f; }
.consent-link { border-color: transparent; text-decoration: underline; text-underline-offset: 3px; }
.consent-dialog {
  width: min(520px, calc(100% - 2rem));
  padding: 0;
  border: 1px solid #d8c7a4;
  color: #1b2438;
  background: #fff;
  box-shadow: 0 24px 80px rgba(14, 24, 48, .3);
}
.consent-dialog::backdrop { background: rgba(14, 24, 48, .7); }
.consent-dialog form { padding: clamp(1.4rem, 5vw, 2.2rem); }
.consent-dialog h2 { margin: 0 0 .6rem; font: 500 2rem/1.15 "Cormorant Garamond", Georgia, serif; color: #0e1830; }
.consent-dialog > form > p { color: #5b6680; line-height: 1.6; margin-bottom: 1.1rem; }
.consent-dialog label { display: flex; gap: .8rem; align-items: flex-start; padding: 1rem 0; border-top: 1px solid #e4ddd0; cursor: pointer; }
.consent-dialog input { width: 20px; height: 20px; margin-top: .15rem; accent-color: #16243f; }
.consent-dialog label strong, .consent-dialog label small { display: block; }
.consent-dialog label small { margin-top: .2rem; color: #5b6680; line-height: 1.4; }
.consent-dialog-actions { justify-content: flex-end; margin-top: 1.2rem; }

.appointment-dialog {
  width: min(760px, calc(100% - 2rem));
  max-height: calc(100dvh - 1rem);
  margin: auto;
  padding: 0;
  overflow: auto;
  border: 1px solid #d8c7a4;
  border-radius: 4px;
  color: #1b2438;
  background: #fff;
  box-shadow: 0 28px 90px rgba(14, 24, 48, .38);
}
.appointment-dialog::backdrop {
  background: rgba(14, 24, 48, .78);
  backdrop-filter: blur(3px);
}
.appointment-shell {
  position: relative;
  padding: clamp(1.25rem, 3vw, 1.75rem);
  font-family: "Lato", system-ui, sans-serif;
}
.appointment-close {
  position: absolute;
  top: 1rem;
  right: 1rem;
  display: grid;
  width: 44px;
  height: 44px;
  padding: 0;
  place-items: center;
  border: 1px solid #d8c7a4;
  border-radius: 50%;
  color: #16243f;
  background: #fff;
  font: 400 1.7rem/1 "Lato", system-ui, sans-serif;
  cursor: pointer;
}
.appointment-kicker {
  margin: 0 3.5rem .55rem 0;
  color: #9b7637;
  font-size: .9rem;
  font-weight: 700;
}
.appointment-dialog h2 {
  max-width: 26ch;
  margin: 0 3rem .75rem 0;
  color: #0e1830;
  font: 500 clamp(2rem, 4.5vw, 2.4rem)/1.05 "Cormorant Garamond", Georgia, serif;
  text-wrap: balance;
}
#appointmentDescription {
  max-width: 62ch;
  margin: 0 0 1.1rem;
  color: #4f5b72;
  font-size: 1rem;
  line-height: 1.65;
}
.appointment-options {
  display: grid;
  grid-template-columns: 1fr;
  gap: .9rem;
}
.appointment-option {
  display: flex;
  min-height: 118px;
  padding: 1.05rem 1.25rem;
  flex-direction: column;
  color: #16243f;
  background: #fff;
  border: 1px solid #d8c7a4;
  border-radius: 3px;
  text-decoration: none;
  box-shadow: 0 8px 26px rgba(14, 24, 48, .07);
  transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease, background-color .18s ease;
}
.appointment-option-primary {
  background: #faf8f3;
  border-color: #b99350;
  box-shadow: 0 12px 30px rgba(14, 24, 48, .11);
}
.appointment-option:hover {
  color: #16243f;
  background: #faf8f3;
  border-color: #b99350;
  box-shadow: 0 14px 34px rgba(14, 24, 48, .13);
  transform: translateY(-2px);
}
.appointment-option:focus-visible,
.appointment-close:focus-visible,
.appointment-home a:focus-visible {
  outline: 3px solid #b99350;
  outline-offset: 3px;
}
.appointment-day {
  margin-bottom: .35rem;
  color: #9b7637;
  font-size: .92rem;
  font-weight: 700;
}
.appointment-option strong {
  color: #0e1830;
  font: 600 1.6rem/1.15 "Cormorant Garamond", Georgia, serif;
}
.appointment-detail {
  margin-top: .45rem;
  color: #59647b;
  font-size: .95rem;
}
.appointment-action {
  margin-top: auto;
  padding-top: .75rem;
  color: #16243f;
  font-size: .9rem;
  font-weight: 700;
}
.appointment-home {
  margin: .85rem 0 0;
  color: #59647b;
  font-size: .9rem;
  text-align: center;
}
.appointment-home a {
  color: #16243f;
  font-weight: 700;
  text-decoration: underline;
  text-underline-offset: 3px;
}
body.appointment-open { overflow: hidden; }

@media (max-width: 760px) {
  .consent-banner { grid-template-columns: 1fr; bottom: max(80px, calc(env(safe-area-inset-bottom) + 72px)); }
  .consent-actions { display: grid; width: 100%; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .consent-actions .consent-button { width: 100%; padding-inline: .45rem; font-size: .72rem; }
  .consent-link { grid-column: 1 / -1; }
  .appointment-dialog { width: calc(100% - 1rem); max-height: calc(100dvh - 1rem); }
  .appointment-shell { padding: 1.4rem 1rem 1.25rem; }
  .appointment-close { top: .75rem; right: .75rem; }
  .appointment-dialog h2 { margin-right: 2.75rem; font-size: clamp(1.85rem, 9vw, 2.4rem); }
  .appointment-options { gap: .7rem; }
  .appointment-option { min-height: 0; padding: 1rem 1.1rem; }
  .appointment-action { margin-top: .85rem; padding-top: 0; }
}

@media (prefers-reduced-motion: reduce) {
  .appointment-option { transition: none; }
  .appointment-option:hover { transform: none; }
}

@media print {
  .consent-banner, .consent-dialog, .appointment-dialog, .floating-actions, .site-header { display: none !important; }
}
