.wb-hero--carousel { display: block; position: relative; min-height: 0; overflow: hidden; }
/* All slides share one grid cell. Even inactive slides contribute their natural
   height, so text edits, font loading and resizing never make navigation jump. */
.wb-hero__slides { display: grid; }
.wb-hero__slide { display: grid; grid-area: 1 / 1; min-width: 0; grid-template-columns: minmax(0,1fr) minmax(0,1.08fr); min-height: 510px; }
.wb-hero--carousel .wb-hero__slide[hidden] { display: grid !important; visibility: hidden; pointer-events: none; }
.wb-hero--carousel .wb-hero__copy { padding: 60px 68px 92px; align-self: stretch; justify-content: flex-start; }
.wb-hero--carousel .wb-hero__copy .wb-btn { margin-top: auto; transition: background-color .2s, border-color .2s, box-shadow .2s, transform .2s; }
/* Inherited visibility must change immediately: transition:all on a child
   otherwise leaves the previous CTA painted over the next slide. */
.wb-hero--carousel .wb-hero__slide[hidden] .wb-btn { visibility: hidden; transition: none; }
.wb-hero__slide:not([hidden]) .wb-hero__copy, .wb-hero__slide:not([hidden]) .wb-hero__media { animation: wb-hero-enter .22s ease both; }
@keyframes wb-hero-enter { from { opacity: 0; } to { opacity: 1; } }
@media(prefers-reduced-motion:reduce) { .wb-hero__slide:not([hidden]) .wb-hero__copy, .wb-hero__slide:not([hidden]) .wb-hero__media { animation: none; } }
.wb-hero--carousel h1, .wb-hero--carousel h2 { font: 500 clamp(48px,4.5vw,72px)/1.02 'Cormorant Garamond',Georgia,serif; letter-spacing: -.035em; margin: 22px 0; }
.wb-hero--carousel .wb-hero__copy p { max-width: 360px; font-size: 16px; }
.wb-hero--carousel .wb-hero__media { position: relative; min-width: 0; min-height: 510px; order: 0; }
.wb-hero--carousel .wb-hero__media img { position: absolute; inset: 0; display: block; object-position: 50% 40%; }
.wb-hero--carousel .wb-hero__copy { min-width: 0; overflow-wrap: anywhere; }
.wb-hero__arrows { display: flex; align-items: center; gap: 8px; margin-left: 4px; }
.wb-hero__arrow { position: static; flex: none; width: 44px; height: 44px; display: grid; place-items: center; padding: 0; border: 1px solid rgba(123,38,56,.18); border-radius: 50%; background: rgba(255,255,255,.65); color: var(--wb-accent); cursor: pointer; transition: background .2s, box-shadow .2s; }
.wb-hero__arrow:hover { background: #fff; box-shadow: 0 4px 18px rgba(123,38,56,.14); }
.wb-hero__arrow svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.wb-hero__controls { display: flex; align-items: center; gap: 16px; position: absolute; left: 68px; bottom: 26px; }
.wb-hero--carousel .wb-hero__dots { display: flex; gap: 5px; margin: 0; }
.wb-hero__dots button { display: grid; place-items: center; width: 36px; height: 30px; padding: 0; background: transparent; border: 0; border-radius: 4px; cursor: pointer; }
.wb-hero--carousel .wb-hero__dots button span { display: block; width: 28px; height: 3px; border-radius: 2px; background: #d8c4c9; transition: background .2s; }
.wb-hero--carousel .wb-hero__dots button[aria-current='true'] span { background: var(--wb-accent); }
.wb-hero__counter { font-size: 11px; font-variant-numeric: tabular-nums; white-space: nowrap; letter-spacing: .08em; color: var(--wb-muted); }
.wb-hero__media[data-wb-swipe] { touch-action: pan-y; user-select: none; }
.wb-hero__media[data-wb-swipe] img { pointer-events: none; }
@media(max-width:1180px) {
 .wb-hero__slide, .wb-hero--carousel .wb-hero__media { min-height: 480px; }
 .wb-hero--carousel .wb-hero__copy { padding: 42px 58px 82px; }
 .wb-hero__controls { left: 58px; bottom: 22px; gap: 12px; }
 .wb-hero--carousel h1, .wb-hero--carousel h2 { font-size: 52px; }
 .wb-hero--carousel .wb-hero__copy p { font-size: 15px; }
 .wb-hero--carousel .wb-btn { font-size: 12px; padding-inline: 20px; }
}
@media(max-width:800px) {
 .wb-hero__slide { grid-template-columns: minmax(0,1fr); grid-template-rows: 360px auto; min-height: 0; }
 .wb-hero--carousel .wb-hero__media { order: -1; min-height: 360px; }
 .wb-hero--carousel .wb-hero__media img { object-position: 50% 35%; }
 .wb-hero--carousel .wb-hero__copy { min-height: 340px; padding: 34px 36px 80px; align-self: stretch; }
 .wb-hero--carousel h1, .wb-hero--carousel h2 { max-width: 520px; margin: 15px 0; font-size: 52px; }
 .wb-hero__controls { left: 36px; bottom: 24px; }
}
@media(max-width:480px) {
 .wb-hero__slide { grid-template-rows: 290px auto; }
 .wb-hero--carousel .wb-hero__media { min-height: 290px; }
 .wb-hero--carousel .wb-hero__copy { min-height: 365px; padding: 28px 28px 80px; }
 .wb-hero--carousel h1, .wb-hero--carousel h2 { font-size: 45px; }
 .wb-hero__controls { left: 28px; gap: 10px; }
 .wb-hero--carousel .wb-hero__dots { gap: 3px; }
 .wb-hero__dots button { width: 26px; }
 .wb-hero--carousel .wb-hero__dots button span { width: 22px; }
 .wb-hero__arrows { gap: 6px; margin-left: 0; }
 .wb-hero__counter { font-size: 10px; }
 .wb-hero--carousel .wb-hero__copy p { font-size: 14px; }
}

/* Match the site's 1320px content grid, including its tablet/mobile gutters.
   Four columns keep copy aligned while letting the photo bleed to the right. */
.wb-hero--fullwidth { width: 100%; margin: 0; border-radius: 0; box-shadow: none; background: var(--wb-hero-bg,#f9efeb); --wb-hero-content-width: min(1320px, calc(100% - 64px)); --wb-hero-inset: calc((100% - var(--wb-hero-content-width)) / 2); }
.wb-hero--fullwidth .wb-hero__slide { grid-template-columns: var(--wb-hero-inset) minmax(0,1fr) minmax(0,1.08fr) var(--wb-hero-inset); }
.wb-hero--fullwidth .wb-hero__copy { grid-column: 2; grid-row: 1; padding-left: 0; }
.wb-hero--fullwidth .wb-hero__copy h1, .wb-hero--fullwidth .wb-hero__copy h2 { max-width: 470px; }
.wb-hero--fullwidth .wb-hero__media { grid-column: 3 / -1; grid-row: 1; }
.wb-hero--fullwidth .wb-hero__controls { left: var(--wb-hero-inset); }
@media(min-width:801px) {
 .wb-hero--fullwidth .wb-hero__media::after { content: ''; position: absolute; inset: 0 auto 0 0; width: 12%; background: linear-gradient(90deg,var(--wb-hero-bg,#f9efeb),transparent); pointer-events: none; }
}
@media(max-width:1180px) {
 .wb-hero--fullwidth { --wb-hero-content-width: min(1120px, calc(100% - 40px)); }
}
@media(max-width:800px) {
 .wb-hero--fullwidth .wb-hero__slide { grid-template-columns: var(--wb-hero-inset) minmax(0,1fr) var(--wb-hero-inset); }
 .wb-hero--fullwidth .wb-hero__copy { grid-column: 2; grid-row: 2; padding-right: 0; }
 .wb-hero--fullwidth .wb-hero__media { grid-column: 1 / -1; grid-row: 1; }
}
@media(max-width:640px) {
 .wb-hero--fullwidth { --wb-hero-content-width: calc(100% - 28px); }
}
/* Preset colors are selected through a whitelist, never raw CSS from a setting. */
.wb-hero--tone-rose { --wb-hero-bg:#efd6d2; background:var(--wb-hero-bg); }
.wb-hero--tone-linen { --wb-hero-bg:#f9efeb; background:var(--wb-hero-bg); }
.wb-hero--tone-plum { --wb-hero-bg:#683248; background:var(--wb-hero-bg); }
.wb-hero--tone-rose .wb-hero__copy p { color:#795363; }
.wb-hero--tone-rose .wb-hero__dots button span { background:#cda4b0; }
.wb-hero--tone-plum .wb-hero__copy { color:#fff9f7; }
.wb-hero--tone-plum .wb-hero__copy :is(p,.wb-kicker),.wb-hero--tone-plum .wb-hero__counter { color:#f0d3db; }
.wb-hero--tone-plum .wb-hero__copy .wb-btn { color:#683248; background:#fff5ef; border-color:#fff5ef; }
.wb-hero--tone-plum .wb-hero__copy .wb-btn:hover { background:#efd6d2; border-color:#efd6d2; }
.wb-hero--tone-plum .wb-hero__dots button span { background:#a17587; }
.wb-hero--tone-plum .wb-hero__dots button[aria-current='true'] span { background:#fff5ef; }
