/* Hero carousel: accessible controls, responsive images and restrained motion. */
.bp-home-carousel { overflow: hidden; }
.bp-carousel { padding-block: clamp(32px, 5vw, 58px) 26px; position: relative; }
.bp-carousel-track { position: relative; }
.bp-carousel-slide {
    display: grid; gap: clamp(24px, 5vw, 70px); grid-template-columns: minmax(0, .82fr) minmax(0, 1.18fr);
    min-height: min(720px, calc(100vh - 150px)); opacity: 0; position: absolute; inset: 0; pointer-events: none;
    transform: translateX(18px); transition: opacity .45s ease, transform .45s ease; visibility: hidden;
}
.bp-carousel-slide.is-active { opacity: 1; pointer-events: auto; position: relative; transform: none; visibility: visible; }
.bp-carousel-slide .bp-hero-copy { align-self: center; }
.bp-carousel-slide .bp-hero-copy h2 { font-size: clamp(3rem, 6.3vw, 6.7rem); margin: 0 0 24px; }
.bp-carousel-controls { align-items: center; display: flex; gap: 14px; justify-content: center; margin-top: 22px; }
.bp-carousel-arrow, .bp-carousel-toggle {
    align-items: center; background: var(--bp-card); border: 1px solid var(--bp-border); border-radius: 50%; color: var(--bp-text);
    cursor: pointer; display: inline-flex; height: 44px; justify-content: center; min-height: 44px; padding: 0; width: 44px;
}
.bp-carousel-arrow:hover, .bp-carousel-toggle:hover { background: var(--bp-primary); border-color: var(--bp-primary); color: var(--bp-on-primary); }
.bp-carousel-dots { align-items: center; display: flex; gap: 8px; }
.bp-carousel-dots button { align-items: center; background: transparent; border: 0; border-radius: 50%; cursor: pointer; display: inline-flex; height: 40px; justify-content: center; min-height: 40px; padding: 0; width: 40px; }
.bp-carousel-dots button::before { background: var(--bp-border); border-radius: 999px; content: ""; height: 8px; transition: width .25s ease, background .25s ease; width: 8px; }
.bp-carousel-dots button[aria-current="true"]::before { background: var(--bp-primary); width: 26px; }
.bp-carousel-toggle { font-size: 0; margin-left: 4px; }
.bp-carousel-toggle::before { content: "\2016"; font-size: .82rem; font-weight: 900; }
.bp-carousel-toggle.is-paused::before { content: "\25B6"; font-size: .7rem; }
@media (max-width: 770px) {
    .bp-carousel { padding-block: 24px 52px; touch-action: pan-y; }
    .bp-carousel-slide { display: flex; flex-direction: column; min-height: 0; }
    .bp-carousel-slide .bp-hero-copy { order: 2; padding: 4px 2px 0; }
    .bp-carousel-slide .bp-hero-copy h2 { font-size: clamp(2.8rem, 14vw, 4.3rem); margin-bottom: 18px; }
    .bp-carousel-slide .bp-hero-media { order: 1; }
    .bp-carousel-controls { margin-top: 18px; }
}
@media (prefers-reduced-motion: reduce) {
    .bp-carousel-slide { transition: none; }
}
