.appointment-selection {
    --selection-accent: #9f5f4a;
    --selection-ink: #4b4542;
    --selection-border: #d6b8aa;
    max-width: 920px;
    margin: 24px auto 56px;
    color: var(--selection-ink);
    overflow-wrap: anywhere;
}
.appointment-selection [hidden] { display: none !important; }
.appointment-selection h1 { font-size: clamp(1.7rem, 4vw, 2.2rem); line-height: 1.2; margin: 14px 0 20px; }
.appointment-selection h2 { font-size: 1.2rem; line-height: 1.4; margin: 0; }
.appointment-selection h3 { font-size: 1rem; margin: 18px 0 10px; }
.appointment-selection__back { font-size: .875rem; }
.appointment-selection__steps { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; padding: 0 0 18px; margin: 0; list-style: none; border-bottom: 1px solid var(--selection-border); }
.appointment-selection__steps li { display: flex; align-items: center; gap: 7px; font-size: .875rem; color: #746b66; }
.appointment-selection__steps li > span:first-child { display: grid; place-items: center; width: 26px; height: 26px; flex: 0 0 26px; border: 1px solid var(--selection-border); border-radius: 50%; font-size: .75rem; }
.appointment-selection__steps [aria-current="step"] { font-weight: 700; color: var(--selection-ink); }
.appointment-selection__steps [aria-current="step"] > span:first-child,
.appointment-selection__steps [data-complete="true"] > span:first-child { background: var(--selection-accent); border-color: var(--selection-accent); color: #fff; }
.appointment-selection__sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.appointment-selection__service { padding: 18px 0 12px; border-bottom: 1px solid var(--selection-border); }
.appointment-selection__meta { display: flex; flex-wrap: wrap; gap: 6px 14px; margin: 5px 0 10px; font-size: .925rem; }
.appointment-selection__meta span:empty { display: none; }
.appointment-selection__variant { margin: 4px 0; font-size: .875rem; }
.appointment-selection__search { box-sizing: border-box; display: block; width: 100%; min-height: 44px; margin: 7px 0 14px; padding: 10px 12px; border: 1px solid var(--selection-border); border-radius: 8px; background: #fffdfb; color: var(--selection-ink); font: inherit; font-size: 16px; }
.appointment-selection__category { border-bottom: 1px solid var(--selection-border); padding: 8px 0; }
.appointment-selection__category summary { min-height: 44px; cursor: pointer; font-weight: 600; line-height: 44px; overflow-wrap: anywhere; }
.appointment-selection .appointment-selection__service-choice { display: flex; gap: 10px; align-items: center; min-height: 44px; padding: 10px 8px; margin: 4px 0; border: 1px solid var(--selection-border); border-radius: 8px; cursor: pointer; }
.appointment-selection__service-choice input { flex: 0 0 auto; accent-color: var(--selection-accent); }
.appointment-selection__service-choice > span { min-width: 0; }
.appointment-selection__choice-name { display: block; font-weight: 600; }
.appointment-selection__choice-meta { display: block; font-size: .8rem; margin-top: 4px; }
.appointment-selection label { font-size: .875rem; }
.appointment-selection select, .appointment-selection button { box-sizing: border-box; max-width: 100%; min-height: 44px; font: inherit; font-size: 16px; }
.appointment-selection select { display: block; width: 100%; max-width: 480px; margin: 7px 0 0; padding: 10px 12px; border: 1px solid var(--selection-border); border-radius: 8px; background: #fffdfb; color: var(--selection-ink); }
.appointment-selection button { border: 1px solid var(--selection-border); border-radius: 8px; padding: 8px; background: #fffdfb; color: var(--selection-ink); cursor: pointer; }
.appointment-selection button:disabled { color: #82756e; background: #f5efeb; cursor: default; }
.appointment-selection button[data-continue], .appointment-selection button[data-contact-continue], .appointment-selection button[data-service-continue] { background: var(--selection-accent); color: #fff; padding: 12px 20px; margin: 0; }
.appointment-selection button[data-service-continue] { margin-top: 18px; }
.appointment-selection button[data-continue] { margin-top: 24px; }
.appointment-selection button[data-continue]:disabled, .appointment-selection button[data-service-continue]:disabled { background: #eee4de; color: #756860; border-color: #e1d5cd; }
.appointment-selection button[aria-pressed="true"] { background: var(--selection-accent); color: #fff; border-color: var(--selection-ink); box-shadow: inset 0 0 0 1px var(--selection-ink); font-weight: 700; }
.appointment-selection :focus-visible { outline: 3px solid var(--selection-ink); outline-offset: 3px; }
.appointment-selection [data-status] { margin: 12px 0; min-height: 2.8em; font-size: .875rem; }
.appointment-selection__navigation { display: grid; grid-template-columns: 44px minmax(0, 1fr) 44px; gap: 8px; align-items: center; margin: 8px 0 12px; }
.appointment-selection__navigation strong { text-align: center; font-size: .875rem; line-height: 1.4; }
.appointment-selection__days { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; min-height: 132px; }
.appointment-selection__days button { min-width: 0; min-height: 62px; padding: 7px 4px; }
.appointment-selection__weekday { display: block; font-size: .75rem; }
.appointment-selection__day-number { display: block; font-size: 1.125rem; font-weight: 600; line-height: 1.4; }
.appointment-selection__times { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.appointment-selection__times button { white-space: nowrap; min-width: 0; padding: 8px 3px; }
.appointment-selection [data-summary] { padding: 12px 14px; border: 1px solid var(--selection-border); border-radius: 8px; background: #f8f1ec; margin: 18px 0 0; }
.appointment-selection [data-summary] h3 { margin: 0 0 6px; }
.appointment-selection [data-summary-text] { white-space: pre-line; font-size: .875rem; line-height: 1.65; margin: 0; }
.appointment-selection__notice { font-size: .8rem; margin: 14px 0; }
.appointment-selection__alternative { font-size: .8rem; margin: 18px 0 0; }
.appointment-selection .appointment-selection__contact-title { margin: 18px 0 10px; }
.appointment-selection__contact-title, .appointment-selection [data-step-appointment] { scroll-margin-top: 120px; }
.appointment-selection__contact-summary { padding: 12px 14px; border: 1px solid var(--selection-border); border-radius: 8px; background: #f8f1ec; margin-bottom: 18px; }
.appointment-selection__contact-summary h3 { margin: 0 0 6px; }
.appointment-selection [data-contact-summary-text] { white-space: pre-line; font-size: .875rem; line-height: 1.65; margin: 0; }
.appointment-selection__contact-fields { display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; }
.appointment-selection__field { min-width: 0; }
.appointment-selection__field label { display: block; margin-bottom: 6px; }
.appointment-selection__field input, .appointment-selection__field textarea { box-sizing: border-box; width: 100%; max-width: 100%; min-height: 44px; padding: 10px 12px; border: 1px solid var(--selection-border); border-radius: 8px; background: #fffdfb; color: var(--selection-ink); font: inherit; font-size: 16px; line-height: 1.5; }
.appointment-selection__field textarea { resize: vertical; }
.appointment-selection__field [aria-invalid="true"] { border-color: var(--selection-ink); border-width: 2px; }
.appointment-selection .appointment-selection__field-hint, .appointment-selection .appointment-selection__field-error { margin: 6px 0 0; font-size: .875rem; line-height: 1.5; }
.appointment-selection__field-error { font-weight: 600; }
.appointment-selection__contact-actions { display: flex; flex-direction: column; gap: 10px; margin-top: 18px; }
.appointment-selection__review-sections { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; margin-top: 12px; }
.appointment-selection__review-section { min-width: 0; padding: 12px 14px; border: 1px solid var(--selection-border); border-radius: 8px; }
.appointment-selection__review-heading { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.appointment-selection__review-heading h3 { margin: 0; }
.appointment-selection__review-heading button { flex-shrink: 0; font-size: .875rem; }
.appointment-selection__review-section p { font-size: .925rem; line-height: 1.5; margin: 6px 0 0; }
.appointment-selection__review-section h4 { font-size: .875rem; margin: 12px 0 0; }
.appointment-selection [data-review-message] { white-space: pre-wrap; }
.appointment-selection__review-submit { display: flex; flex-direction: column; align-items: center; gap: 5px; }
.appointment-selection__review-submit span { font-size: .8rem; }
.appointment-selection__honeypot { display: none; }
.appointment-selection [data-submit-status] { overflow-wrap: anywhere; }
.appointment-selection[aria-busy="true"] [data-days] { background: #f8f1ec; border-radius: 8px; }
@media (min-width: 621px) {
    .appointment-selection__contact-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .appointment-selection__review-sections { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .appointment-selection__field--wide { grid-column: 1 / -1; }
    .appointment-selection__contact-actions { flex-direction: row; justify-content: space-between; }
    .appointment-selection__days { grid-template-columns: repeat(7, minmax(0, 1fr)); min-height: 62px; }
    .appointment-selection__times { grid-template-columns: repeat(auto-fill, minmax(80px, 1fr)); }
    .appointment-selection__steps { max-width: 620px; }
}
@media (max-width: 620px) {
    .appointment-selection { margin: 18px auto 36px; }
    .appointment-selection__steps li { flex-direction: column; align-items: center; gap: 4px; white-space: nowrap; }
    .appointment-selection [data-continue], .appointment-selection [data-service-continue], .appointment-selection__contact-actions button { width: 100%; }
}
@media (max-width: 350px) {
    .appointment-selection__steps { gap: 4px; }
    .appointment-selection__steps li { gap: 4px; font-size: .75rem; }
    .appointment-selection__steps li > span:first-child { width: 22px; height: 22px; flex-basis: 22px; }
    .appointment-selection__times { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
