/* One hover language for public controls: recolor the control's own border.
   Review entry points and review-page controls are deliberately not included. */
:root {
    --interactive-border-rest: rgba(92, 59, 109, 0.38);
    --interactive-border-hover: var(--color-purple, #5c3b6d);
    --interactive-hover-shadow: 0 10px 24px rgba(92, 59, 109, 0.24);
    --interactive-hover-ring-1: inset 0 0 0 1px var(--interactive-border-hover);
    --interactive-hover-ring-2: inset 0 0 0 2px var(--interactive-border-hover);
    --interactive-hover-ring-3: inset 0 0 0 3px var(--interactive-border-hover);
}

/* Fixed utility panels reserve their full border at rest, so hover cannot jump. */
.prestige-a11y-launcher,
.privacy-settings-button {
    border: 3px solid var(--interactive-border-rest);
    outline: none;
    transition: border-color 160ms ease, box-shadow 160ms ease, transform 160ms ease;
}

.prestige-a11y-launcher:hover,
.prestige-a11y-launcher:focus-visible,
.privacy-settings-button:hover,
.privacy-settings-button:focus-visible {
    border-color: var(--interactive-border-hover);
    outline: none;
    box-shadow: var(--interactive-hover-ring-3), var(--interactive-hover-shadow);
    transform: none;
}

/* Consent, privacy and low-vision prompt controls are global, including on
   review pages; the review interface itself stays outside this selector set. */
.privacy-consent__close,
.privacy-consent__button,
.clinic-contacts-map-consent-button,
.privacy-center__close,
.privacy-center__button,
.privacy-center__section summary,
.prestige-a11y-prompt__close,
.prestige-a11y-prompt__enable,
.prestige-a11y-prompt__dismiss {
    border: 2px solid var(--interactive-border-rest);
    outline: none;
}

.privacy-consent__link {
    border-bottom: 2px solid transparent;
    outline: none;
}

.privacy-consent__close:hover,
.privacy-consent__close:focus-visible,
.privacy-consent__button:hover,
.privacy-consent__button:focus-visible,
.clinic-contacts-map-consent-button:hover,
.clinic-contacts-map-consent-button:focus-visible,
.privacy-center__close:hover,
.privacy-center__close:focus-visible,
.privacy-center__button:hover,
.privacy-center__button:focus-visible,
.privacy-center__section summary:hover,
.privacy-center__section summary:focus-visible,
.prestige-a11y-prompt__close:hover,
.prestige-a11y-prompt__close:focus-visible,
.prestige-a11y-prompt__enable:hover,
.prestige-a11y-prompt__enable:focus-visible,
.prestige-a11y-prompt__dismiss:hover,
.prestige-a11y-prompt__dismiss:focus-visible {
    border-color: var(--interactive-border-hover);
    outline: none;
    box-shadow: var(--interactive-hover-ring-2), var(--interactive-hover-shadow);
    transform: none;
}

.privacy-consent__link:hover,
.privacy-consent__link:focus-visible {
    border-bottom-color: var(--interactive-border-hover);
    outline: none;
    box-shadow: inset 0 -2px 0 var(--interactive-border-hover);
}

/* Homepage controls. The reviews launcher and its modal are intentionally
   absent, preserving their existing appearance and behaviour. */
body:not(.reviews-page) .clinic-card--interactive:focus-visible {
    border-color: var(--interactive-border-hover);
    outline: none;
    box-shadow: 0 30px 60px rgba(92, 59, 109, 0.3);
}

body:not(.reviews-page) .clinic-contact-panel,
body:not(.reviews-page) .service-tag--link {
    border-color: var(--interactive-border-rest);
    outline: none;
}

body:not(.reviews-page) .clinic-contact-panel:hover,
body:not(.reviews-page) .clinic-contact-panel:focus-visible,
body:not(.reviews-page) .service-tag--link:hover,
body:not(.reviews-page) .service-tag--link:focus-visible {
    border-color: var(--interactive-border-hover);
    outline: none;
    box-shadow: var(--interactive-hover-ring-2), var(--interactive-hover-shadow);
    transform: none;
}

/* Clinic navigation and service controls. */
.clinic-header-link:not(.is-active),
.clinic-service-item--interactive:not(.is-active),
.clinic-service-back,
.clinic-about-documents-toggle:not([aria-expanded='true']),
.clinic-about-documents-link,
.clinic-about-license-preview {
    border-color: var(--interactive-border-rest);
    outline: none;
}

.clinic-service-price-link {
    border: 1px solid transparent;
    outline: none;
}

.clinic-header-link:hover,
.clinic-header-link:focus-visible,
.clinic-service-item--interactive:hover,
.clinic-service-item--interactive:focus-visible,
.clinic-service-back:hover,
.clinic-service-back:focus-visible,
.clinic-about-documents-toggle:hover,
.clinic-about-documents-toggle:focus-visible,
.clinic-about-documents-link:hover,
.clinic-about-documents-link:focus-visible,
.clinic-about-license-preview:hover,
.clinic-about-license-preview:focus-visible {
    border-color: var(--interactive-border-hover);
    outline: none;
    box-shadow: var(--interactive-hover-ring-2), var(--interactive-hover-shadow);
    transform: none;
}

.clinic-service-price-link:focus-visible {
    border-color: var(--interactive-border-hover);
    outline: none;
    box-shadow: var(--interactive-hover-ring-1), var(--interactive-hover-shadow);
    transform: none;
}

@media (hover: hover) and (pointer: fine) {
    .clinic-service-price-link:hover {
        border-color: var(--interactive-border-hover);
        outline: none;
        box-shadow: var(--interactive-hover-ring-1), var(--interactive-hover-shadow);
        transform: none;
    }
}

/* For accordion buttons, the visible panel owns the border. */
.clinic-service-info-block,
.clinic-price-category,
.clinic-price-subcategory {
    transition: border-color 160ms ease, box-shadow 160ms ease;
}

.clinic-service-info-block:has(> .clinic-service-info-toggle:hover),
.clinic-service-info-block:has(> .clinic-service-info-toggle:focus-visible),
.clinic-price-category:has(> .clinic-price-category-toggle:hover),
.clinic-price-category:has(> .clinic-price-category-toggle:focus-visible) {
    border-color: var(--interactive-border-hover);
    box-shadow: var(--interactive-hover-ring-2), var(--interactive-hover-shadow);
}

.clinic-price-subcategory:has(> .clinic-price-subcategory-toggle:hover),
.clinic-price-subcategory:has(> .clinic-price-subcategory-toggle:focus-visible) {
    border-color: var(--interactive-border-hover);
    box-shadow: var(--interactive-hover-ring-1), var(--interactive-hover-shadow);
}

.clinic-service-info-toggle:focus-visible,
.clinic-price-category-toggle:focus-visible,
.clinic-price-subcategory-toggle:focus-visible {
    outline: none;
}

/* Filled controls already carry the brand colour; the same border and
   horizontal shadow make their hover state read consistently. */
.clinic-about-carousel-arrow,
.clinic-about-lightbox-arrow,
.clinic-contacts-map-button {
    border-color: var(--interactive-border-rest);
    outline: none;
}

.clinic-about-carousel-arrow:hover:not(:disabled),
.clinic-about-carousel-arrow:focus-visible:not(:disabled),
.clinic-about-lightbox-arrow:hover:not(:disabled),
.clinic-about-lightbox-arrow:focus-visible:not(:disabled),
.clinic-contacts-map-button:hover,
.clinic-contacts-map-button:focus-visible {
    border-color: var(--interactive-border-hover);
    outline: none;
    box-shadow: var(--interactive-hover-ring-2), var(--interactive-hover-shadow);
    transform: none;
}

@media (prefers-reduced-motion: reduce) {
    .prestige-a11y-launcher,
    .privacy-settings-button,
    .clinic-service-info-block,
    .clinic-price-category,
    .clinic-price-subcategory {
        transition: none;
    }
}
