:root {
    --bsh-font-body: 'Inter', sans-serif;
    --bsh-font-display: 'Indie Flower', cursive;

    --bsh-color-pastel-1: #beb1ab;
    --bsh-color-pastel-2: #948a85;
    --bsh-color-bg: #ffffff;
    --bsh-color-surface: #ffffff;
    --bsh-color-headline: #5e5e5e;
    --bsh-color-body: #7b7877;
    --bsh-color-white: #ffffff;
    --bsh-color-black: #000000;
    --bsh-color-border: rgba(94, 94, 94, .16);

    --bsh-overlay-dark: rgba(0, 0, 0, .52);
    --bsh-container-max: 1920px;
    --bsh-container-pad: 150px;
    --bsh-section-y: 80px;
    --bsh-section-y-rich: 150px;

    --bsh-space-8: 8px;
    --bsh-space-16: 16px;
    --bsh-space-18: 18px;
    --bsh-space-24: 24px;
    --bsh-space-28: 28px;
    --bsh-space-34: 34px;
    --bsh-space-56: clamp(36px, 4vw, 56px);
    --bsh-space-80: clamp(48px, 5vw, 80px);

    --bsh-fs-sm: clamp(.75rem, .7rem + .2vw, .875rem);
    --bsh-fs-body: clamp(1rem, .95rem + .15vw, 1.125rem);
    --bsh-fs-lead: clamp(1.125rem, 1rem + .42vw, 1.45rem);
    --bsh-fs-button: .9375rem;
    --bsh-fs-h1: clamp(52px, 5vw, 76px);
    --bsh-fs-h2: clamp(44px, 4.15vw, 64px);
    --bsh-fs-h3: clamp(36px, 3.35vw, 52px);
    --bsh-fs-h4: clamp(30px, 2.7vw, 42px);
    --bsh-fs-h5: clamp(25px, 2.1vw, 32px);
    --bsh-fs-h6: clamp(21px, 1.65vw, 26px);
    --bsh-fs-subtitle: clamp(22px, 1.65vw, 28px);
    --bsh-fs-display-heading: clamp(46px, 4.6vw, 70px);
    --bsh-fs-display: clamp(3.1rem, 1.85rem + 4vw, 7rem);
    --bsh-fs-heading: clamp(2.45rem, 1.7rem + 2.7vw, 5rem);
    --bsh-fs-subheading: clamp(1.75rem, 1.35rem + 1.35vw, 3rem);
    --bsh-fs-hero: clamp(3rem, 1.8rem + 4vw, 5.75rem);
    --bsh-button-height: 54px;
    --bsh-button-padding-x: clamp(22px, 2.2vw, 36px);

    --bsh-radius-xs: 4px;
    --bsh-radius-sm: 10px;
    --bsh-blur-18: 18px;
    --bsh-transition-base: .45s cubic-bezier(.7, 0, .3, 1);
    --bsh-transition-fast: .25s ease;
}

h1 { font-size: var(--bsh-fs-h1); }
h2 { font-size: var(--bsh-fs-h2); }
h3 { font-size: var(--bsh-fs-h3); }
h4 { font-size: var(--bsh-fs-h4); }
h5 { font-size: var(--bsh-fs-h5); }
h6 { font-size: var(--bsh-fs-h6); }

.bshBlockPrimaryHeading {
    max-width: 18ch;
    margin: 0 0 clamp(20px, 2vw, 34px);
    color: inherit;
    font-family: var(--bsh-font-body);
    font-size: var(--bsh-fs-h1);
    font-weight: 400;
    line-height: .98;
    letter-spacing: -.055em;
    text-wrap: balance;
}

.bshSubtitle {
    margin: 0;
    color: var(--bsh-color-pastel-2);
    font-family: var(--bsh-font-display, 'Indie Flower', cursive);
    font-size: var(--bsh-fs-subtitle);
    font-weight: 600;
    line-height: 1.05;
    letter-spacing: 0;
    word-spacing: 0;
    text-transform: none;
}

.bshHeadingLockup {
    position: relative;
    display: inline-grid;
    grid-auto-flow: row;
    grid-auto-rows: max-content;
    row-gap: clamp(22px, 1.8vw, 34px);
    max-width: 100%;
    padding-bottom: 0;
}

.bshHeadingLockup > :is(h1, h2, h3) {
    margin: 0;
}

.bshHeadingLockup > .bshSubtitle {
    position: static;
    z-index: 2;
    grid-column: 1;
    grid-row: auto;
    justify-self: end;
    max-width: min(70vw, 620px);
    margin-top: 0;
    color: var(--bsh-color-pastel-2);
    font-size: var(--bsh-fs-subtitle);
    font-weight: 600;
    line-height: 1.05;
    text-align: right;
    text-wrap: balance;
    transform: none;
}

.bshHeadingLockup--center {
    margin-inline: auto;
}

.bshSplitText__word {
    display: inline-block;
    /* Keep the reveal mask, but extend it beyond the glyph box so descenders
       such as g, j, p, q and y (and tall diacritics) are never clipped. */
    overflow: visible;
    clip-path: inset(-.1em 0 -.2em 0);
    vertical-align: top;
}

.bshSplitText__char {
    display: inline-block;
    will-change: transform, opacity;
}

/* Native motion layer. Initial styles live in CSS so a cold load, refresh or
   Swup visit can never paint the completed state before JavaScript binds it. */
.bsh-js .is-bsh-motion-init {
    transition-duration: var(--bsh-motion-duration, 1250ms);
    transition-delay: var(--bsh-motion-delay, 0ms);
    transition-timing-function: cubic-bezier(.22, 1, .36, 1);
    transition-property: opacity, visibility, transform, clip-path, filter;
    will-change: opacity, transform, clip-path;
}

.bsh-js .is-bsh-motion-init:not(.is-bsh-motion-visible) {
    opacity: 0;
    visibility: hidden;
}

.bsh-js [data-bsh-motion-type="fade-up"]:not(.is-bsh-motion-visible) {
    transform: translate3d(0, var(--bsh-motion-distance, 38px), 0);
}

.bsh-js [data-bsh-motion-type="from-left"]:not(.is-bsh-motion-visible) {
    transform: translate3d(calc(-1 * var(--bsh-motion-distance, 38px)), 0, 0);
}

.bsh-js [data-bsh-motion-type="from-right"]:not(.is-bsh-motion-visible) {
    transform: translate3d(var(--bsh-motion-distance, 38px), 0, 0);
}

.bsh-js [data-bsh-motion-type="zoom-in"]:not(.is-bsh-motion-visible) {
    transform: scale(1.08);
}

.bsh-js [data-bsh-motion-type="clip-left"]:not(.is-bsh-motion-visible) {
    clip-path: inset(0 100% 0 0);
    opacity: 1;
}

.bsh-js [data-bsh-motion-type="clip-right"]:not(.is-bsh-motion-visible) {
    clip-path: inset(0 0 0 100%);
    opacity: 1;
}

.bsh-js [data-bsh-motion-type="clip-left"].is-bsh-motion-visible,
.bsh-js [data-bsh-motion-type="clip-right"].is-bsh-motion-visible {
    clip-path: inset(0 0 0 0);
    opacity: 1;
}

.bsh-js [data-bsh-motion-type="clip-left"] > img,
.bsh-js [data-bsh-motion-type="clip-left"] .bshRoomStream__mediaInner,
.bsh-js [data-bsh-motion-type="clip-right"] > img {
    transform: scale(1.1);
    transition: transform calc(var(--bsh-motion-duration, 1250ms) + 180ms) cubic-bezier(.22, 1, .36, 1);
}

.bsh-js [data-bsh-motion-type="clip-left"].is-bsh-motion-visible > img,
.bsh-js [data-bsh-motion-type="clip-left"].is-bsh-motion-visible .bshRoomStream__mediaInner,
.bsh-js [data-bsh-motion-type="clip-right"].is-bsh-motion-visible > img {
    transform: scale(1);
}

.bsh-js [data-bsh-motion-type="split"] {
    opacity: 1;
    visibility: visible;
}

.bsh-js [data-bsh-motion-type="split"] .bshSplitText__char {
    opacity: 0;
    transform: translate3d(0, 112%, 0) rotate(2deg);
    transition: opacity var(--bsh-motion-duration, 1450ms) cubic-bezier(.22, 1, .36, 1), transform var(--bsh-motion-duration, 1450ms) cubic-bezier(.22, 1, .36, 1);
    transition-delay: calc(var(--bsh-motion-delay, 0ms) + (var(--bsh-char-index, 0) * 28ms));
}

.bsh-js [data-bsh-motion-type="split"].is-bsh-motion-visible .bshSplitText__char {
    opacity: 1;
    transform: translate3d(0, 0, 0) rotate(0);
}

[data-bsh-parallax-media],
[data-bsh-stickybox-parallax],
[data-bsh-room-hero-media] {
    translate: 0 var(--bsh-parallax-y, 0px);
    will-change: translate;
}

/*
 * The initial state exists in CSS before the footer scripts execute. This
 * prevents a finished heading/card from flashing briefly and only then being
 * reset by JavaScript when it reaches the viewport entry line.
 */
.bsh-js [data-bsh-split]:not(.is-bsh-motion-init),
.bsh-js [data-bsh-reveal]:not(.is-bsh-motion-init),
.bsh-js [data-bsh-room-stream-intro]:not(.is-bsh-motion-init),
.bsh-js [data-bsh-room-stream-media]:not(.is-bsh-motion-init),
.bsh-js [data-bsh-room-stream-room] .bshRoomStream__facts li:not(.is-bsh-motion-init),
.bsh-js [data-bsh-room-panel-media]:not(.is-bsh-motion-init),
.bsh-js [data-bsh-room-panel-body]:not(.is-bsh-motion-init),
.bsh-js [data-bsh-gallery-panel]:not([hidden]) .bshGallery__item:not(.is-bsh-motion-init) {
    opacity: 0;
    visibility: hidden;
}

.bsh-js [data-bsh-room-stream-media]:not(.is-bsh-motion-init),
.bsh-js [data-bsh-room-panel-media]:not(.is-bsh-motion-init) {
    clip-path: inset(0 100% 0 0);
}

@media (max-width: 1024px) {
    :root {
        --bsh-container-pad: clamp(24px, 5vw, 48px);
        --bsh-section-y: 64px;
        --bsh-section-y-rich: 112px;
    }
}

@media (max-width: 767px) {
    :root {
        --bsh-container-pad: 20px;
        --bsh-section-y: 48px;
        --bsh-section-y-rich: 80px;
        --bsh-fs-h1: clamp(40px, 12vw, 62px);
        --bsh-fs-h2: clamp(36px, 10vw, 52px);
        --bsh-fs-h3: clamp(31px, 8.5vw, 44px);
        --bsh-fs-h4: clamp(27px, 7.2vw, 36px);
        --bsh-fs-h5: clamp(23px, 6vw, 30px);
        --bsh-fs-h6: clamp(20px, 5vw, 25px);
        --bsh-fs-subtitle: clamp(20px, 5.8vw, 26px);
        --bsh-fs-display-heading: clamp(36px, 10vw, 52px);
    }

    .bshHeadingLockup {
        row-gap: clamp(16px, 4.5vw, 24px);
    }

    .bshHeadingLockup > .bshSubtitle {
        max-width: 86vw;
        font-size: var(--bsh-fs-subtitle);
        white-space: normal;
    }
}

@media (prefers-reduced-motion: reduce) {
    .bsh-js .is-bsh-motion-init,
    .bsh-js .is-bsh-motion-init:not(.is-bsh-motion-visible),
    .bsh-js [data-bsh-motion-type="split"] .bshSplitText__char {
        opacity: 1;
        visibility: visible;
        clip-path: none;
        transform: none;
        transition: none;
    }

    [data-bsh-parallax-media],
    [data-bsh-stickybox-parallax],
    [data-bsh-room-hero-media] {
        translate: none;
    }

    .bsh-js [data-bsh-split]:not(.is-bsh-motion-init),
    .bsh-js [data-bsh-reveal]:not(.is-bsh-motion-init),
    .bsh-js [data-bsh-room-stream-intro]:not(.is-bsh-motion-init),
    .bsh-js [data-bsh-room-stream-media]:not(.is-bsh-motion-init),
    .bsh-js [data-bsh-room-stream-room] .bshRoomStream__facts li:not(.is-bsh-motion-init),
    .bsh-js [data-bsh-room-panel-media]:not(.is-bsh-motion-init),
    .bsh-js [data-bsh-room-panel-body]:not(.is-bsh-motion-init),
    .bsh-js [data-bsh-gallery-panel]:not([hidden]) .bshGallery__item:not(.is-bsh-motion-init) {
        opacity: 1;
        visibility: visible;
        clip-path: none;
    }

    .bshSplitText__char {
        will-change: auto;
    }
}
