@font-face {
    font-family: "Kepler Kensington";
    src: url("../fonts/kepler-light.woff2") format("woff2");
    font-weight: 300;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: "Kepler Kensington";
    src: url("../fonts/kepler-normal.woff2") format("woff2");
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: "Montserrat Kensington";
    src: url("../fonts/montserrat-regular.woff2") format("woff2");
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: "Montserrat Kensington";
    src: url("../fonts/montserrat-medium.woff2") format("woff2");
    font-weight: 500;
    font-style: normal;
    font-display: swap;
}

body.kensington-cms {
    --bone: #f4f2ef;
    --linen: #ece3de;
    --sand: #e9e2de;
    --charcoal: #373635;
    --ink: #252424;
    --muted: rgba(55, 54, 53, 0.68);
    --white-soft: rgba(244, 242, 239, 0.92);
    --border-dark: rgba(55, 54, 53, 0.16);
    --border-light: rgba(244, 242, 239, 0.45);
    --font-display: "Kepler Kensington", Georgia, serif;
    --font-body: "Montserrat Kensington", Arial, sans-serif;
    margin: 0;
    background: var(--bone);
    color: var(--charcoal);
    font-family: var(--font-body);
    font-size: 16px;
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
    text-rendering: geometricPrecision;
}

html.kensington-template {
    background: #050505;
}

body.kensington-cms::before {
    content: "";
    position: fixed;
    inset: 0;
    z-index: 9998;
    background: #050505;
    opacity: 1;
    pointer-events: none;
    transition: opacity 1400ms cubic-bezier(0.22, 1, 0.36, 1);
}

body.kensington-cms.is-loaded::before {
    opacity: 0;
}

body.kensington-cms.menu-open {
    overflow: hidden;
}

.kensington-shell,
.kensington-shell * {
    box-sizing: border-box;
}

.kensington-shell img {
    display: block;
    max-width: 100%;
}

.kensington-shell a {
    color: inherit;
    text-decoration: none;
}

.kensington-shell button,
.kensington-shell input {
    font: inherit;
}

.kensington-shell .site-header {
    position: fixed;
    inset: 0 0 auto;
    z-index: 50;
    color: var(--white-soft);
    transition: color 500ms ease, background 500ms ease, border-color 500ms ease, box-shadow 500ms ease, backdrop-filter 500ms ease;
}

.kensington-shell .site-header::after {
    content: "";
    position: absolute;
    inset: auto 0 0;
    height: 1px;
    background: var(--border-light);
    transition: background 500ms ease;
}

.kensington-shell .site-header.is-scrolled,
.kensington-shell .site-header.is-open {
    background: rgba(244, 242, 239, 0.72);
    backdrop-filter: blur(18px) saturate(1.15);
    -webkit-backdrop-filter: blur(18px) saturate(1.15);
    color: var(--charcoal);
    box-shadow: 0 12px 30px rgba(37, 36, 36, 0.06);
}

.kensington-shell .site-header.is-scrolled::after,
.kensington-shell .site-header.is-open::after {
    background: var(--border-dark);
}

.kensington-shell .site-header__inner {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    min-height: 88px;
    padding: 0 clamp(20px, 3vw, 56px);
}

.kensington-shell .brand {
    display: inline-grid;
    place-items: center;
    min-width: 180px;
    min-height: 44px;
    text-align: center;
    font-family: var(--font-body);
    font-size: 23px;
    font-weight: 400;
    letter-spacing: 0.28em;
    line-height: 1;
    text-transform: uppercase;
}

.kensington-shell .brand span {
    line-height: 1;
}

.kensington-shell .brand__logo {
    width: auto;
    max-width: 220px;
    max-height: 48px;
    object-fit: contain;
}

.kensington-shell .brand__logo--dark {
    display: none;
}

.kensington-shell .site-header.is-scrolled .brand__logo--light,
.kensington-shell .site-header.is-open .brand__logo--light {
    display: none;
}

.kensington-shell .site-header.is-scrolled .brand__logo--dark,
.kensington-shell .site-header.is-open .brand__logo--dark {
    display: block;
}

.kensington-shell .menu-toggle,
.kensington-shell .button {
    border: 0;
    background: transparent;
    color: inherit;
    cursor: pointer;
}

.kensington-shell .menu-toggle {
    display: inline-flex;
    align-items: center;
    justify-self: start;
    gap: 16px;
    min-height: 44px;
    padding: 0;
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0.22em;
    text-transform: uppercase;
}

.kensington-shell .menu-toggle__icon {
    position: relative;
    display: inline-flex;
    width: 24px;
    height: 18px;
}

.kensington-shell .menu-toggle__icon span {
    position: absolute;
    left: 0;
    width: 24px;
    height: 1px;
    background: currentColor;
    transition: top 250ms ease, transform 250ms ease, opacity 200ms ease;
}

.kensington-shell .menu-toggle__icon span:nth-child(1) {
    top: 2px;
}

.kensington-shell .menu-toggle__icon span:nth-child(2) {
    top: 9px;
}

.kensington-shell .menu-toggle__icon span:nth-child(3) {
    top: 16px;
}

body.kensington-cms.menu-open .kensington-shell .menu-toggle__icon span:nth-child(1) {
    top: 9px;
    transform: rotate(45deg);
}

body.kensington-cms.menu-open .kensington-shell .menu-toggle__icon span:nth-child(2) {
    opacity: 0;
}

body.kensington-cms.menu-open .kensington-shell .menu-toggle__icon span:nth-child(3) {
    top: 9px;
    transform: rotate(-45deg);
}

.kensington-shell .site-header__actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 24px;
}

.kensington-shell .button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    padding: 0 26px;
    margin: 25px 0 20px;
    border: 1px solid currentColor;
    border-radius: 3px;
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0.22em;
    line-height: 1;
    text-transform: uppercase;
    transition: background 250ms ease, color 250ms ease, border-color 250ms ease;
}

.kensington-shell .button--outline:hover,
.kensington-shell .button--dark,
.kensington-shell .kensington-content .button {
    background: var(--charcoal);
    border-color: var(--charcoal);
    color: var(--bone);
}

.kensington-shell .button--dark:hover,
.kensington-shell .kensington-content .button:hover {
    background: var(--ink);
    border-color: var(--ink);
}

.kensington-shell .button--light {
    background: var(--bone);
    border-color: var(--bone);
    color: var(--ink);
}

.kensington-shell .button--light:hover {
    background: transparent;
    color: var(--bone);
}

.kensington-shell .menu-backdrop {
    position: fixed;
    inset: 88px 0 0;
    z-index: 45;
    background: rgba(37, 36, 36, 0.72);
    opacity: 0;
    pointer-events: none;
    transition: opacity 500ms ease;
}

.kensington-shell .menu-panel {
    position: fixed;
    inset: 88px auto 0 0;
    z-index: 46;
    width: min(760px, 100vw);
    background: var(--bone);
    color: var(--charcoal);
    transform: translateX(-102%);
    transition: transform 700ms cubic-bezier(0.22, 1, 0.36, 1);
    overflow: auto;
}

body.kensington-cms.menu-open .kensington-shell .menu-backdrop {
    opacity: 1;
    pointer-events: auto;
}

body.kensington-cms.menu-open .kensington-shell .menu-panel {
    transform: translateX(0);
}

.kensington-shell .menu-panel__inner {
    display: grid;
    grid-template-columns: minmax(260px, 1fr);
    gap: clamp(40px, 7vw, 96px);
    min-height: 100%;
    padding: clamp(44px, 7vw, 86px);
}

.kensington-shell .menu-panel__eyebrow,
.kensington-shell .section-kicker {
    margin: 0 0 18px;
    color: var(--muted);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.24em;
    text-transform: uppercase;
}

.kensington-shell .menu-panel__nav {
    display: grid;
    gap: 18px;
}

.kensington-shell .menu-panel__nav a {
    position: relative;
    width: fit-content;
    font-family: var(--font-display);
    font-size: 56px;
    font-weight: 300;
    line-height: 0.95;
    opacity: 0;
    transform: translateX(-34px);
    transition:
        opacity 760ms ease,
        transform 900ms cubic-bezier(0.22, 1, 0.36, 1),
        color 500ms ease;
}

.kensington-shell .menu-panel__nav a::after,
.kensington-shell .site-footer__nav a::after,
.kensington-shell .template-credit-link::after {
    content: "";
    position: absolute;
    right: 0;
    bottom: -0.08em;
    left: 0;
    height: 1px;
    background: currentColor;
    opacity: 0.72;
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform 720ms cubic-bezier(0.22, 1, 0.36, 1);
}

.kensington-shell .menu-panel__nav a:hover::after,
.kensington-shell .menu-panel__nav a:focus-visible::after,
.kensington-shell .site-footer__nav a:hover::after,
.kensington-shell .site-footer__nav a:focus-visible::after,
.kensington-shell .template-credit-link:hover::after,
.kensington-shell .template-credit-link:focus-visible::after {
    transform: scaleX(1);
}

.kensington-shell .menu-panel__nav a.is-active::after {
    transform: scaleX(1);
}

body.kensington-cms.menu-open .kensington-shell .menu-panel__nav a {
    opacity: 1;
    transform: translateX(0);
}

body.kensington-cms.menu-open .kensington-shell .menu-panel__nav a:nth-child(1) {
    transition-delay: 130ms, 130ms, 0ms;
}

body.kensington-cms.menu-open .kensington-shell .menu-panel__nav a:nth-child(2) {
    transition-delay: 220ms, 220ms, 0ms;
}

body.kensington-cms.menu-open .kensington-shell .menu-panel__nav a:nth-child(3) {
    transition-delay: 310ms, 310ms, 0ms;
}

body.kensington-cms.menu-open .kensington-shell .menu-panel__nav a:nth-child(4) {
    transition-delay: 400ms, 400ms, 0ms;
}

body.kensington-cms.menu-open .kensington-shell .menu-panel__nav a:nth-child(5) {
    transition-delay: 490ms, 490ms, 0ms;
}

body.kensington-cms.menu-open .kensington-shell .menu-panel__nav a:nth-child(6) {
    transition-delay: 580ms, 580ms, 0ms;
}

body.kensington-cms.menu-open .kensington-shell .menu-panel__nav a:nth-child(n+7) {
    transition-delay: 660ms, 660ms, 0ms;
}

.kensington-shell .hero {
    position: relative;
    display: grid;
    place-items: center;
    min-height: 100svh;
    overflow: hidden;
    color: var(--bone);
    text-align: center;
}

.kensington-shell .hero--page {
    min-height: 82svh;
}

.kensington-shell .hero--blank {
    background: #252424;
}

.kensington-shell .hero__slides,
.kensington-shell .hero__slide,
.kensington-shell .hero__image,
.kensington-shell .hero__overlay,
.kensington-shell .hero--page picture {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
}

.kensington-shell .hero__slides--mobile {
    display: none;
}

.kensington-shell .hero__slide {
    margin: 0;
    opacity: 0;
    transition: opacity 1600ms ease;
}

.kensington-shell .hero__slide.is-active {
    opacity: 1;
}

.kensington-shell .hero__image {
    object-fit: cover;
}

.kensington-shell .hero__overlay {
    background:
        linear-gradient(180deg, rgba(37, 36, 36, 0.32), rgba(37, 36, 36, 0.42)),
        radial-gradient(circle at center, rgba(37, 36, 36, 0.05), rgba(37, 36, 36, 0.44));
}

.kensington-shell .hero__content {
    position: relative;
    z-index: 1;
    width: min(760px, calc(100% - 48px));
    padding-top: 88px;
}

.kensington-shell .hero h1,
.kensington-shell .intro h2,
.kensington-shell .framed-cta h2 {
    margin: 0;
    font-family: var(--font-display);
    font-weight: 300;
    line-height: 0.98;
}

.kensington-shell .hero h1 {
    font-size: 96px;
}

.kensington-shell .hero__enter-link {
    position: relative;
    display: inline-flex;
    margin-top: 32px;
    padding-bottom: 8px;
    font-size: 12px;
    font-weight: 300;
    letter-spacing: 0.34em;
    line-height: 1;
    text-transform: uppercase;
}

.kensington-shell .hero__enter-link::after {
    content: "";
    position: absolute;
    right: 0.34em;
    bottom: 0;
    left: 0;
    height: 1px;
    background: currentColor;
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform 720ms cubic-bezier(0.22, 1, 0.36, 1);
}

.kensington-shell .hero__enter-link:hover::after,
.kensington-shell .hero__enter-link:focus-visible::after {
    transform: scaleX(1);
}

.kensington-shell .intro {
    background: var(--linen);
}

.kensington-shell .intro__inner {
    width: min(860px, calc(100% - 48px));
    margin: 0 auto;
    padding: 0 0 20px;
    text-align: center;
}

.kensington-shell .intro__line {
    --line-progress: 0;
    position: relative;
    display: block;
    width: 1px;
    height: clamp(72px, 8vw, 112px);
    margin-right: auto;
    margin-left: auto;
    overflow: hidden;
}

.kensington-shell .intro__line:first-child {
    margin-top: calc(clamp(72px, 8vw, 112px) * -0.5);
    margin-bottom: 15px;
}

.kensington-shell .intro__line:last-child {
    margin-top: 30px;
    padding-bottom: 30px;
}

.kensington-shell .intro__line::before {
    content: "";
    position: absolute;
    inset: 0;
    background: rgba(157, 126, 91, 0.84);
    transform: scaleY(var(--line-progress));
    transform-origin: top center;
    transition: transform 180ms linear;
}

.kensington-shell .intro h2,
.kensington-shell .framed-cta h2 {
    font-size: 68px;
}

.kensington-shell .kensington-content {
    color: #444;
}

.kensington-shell .kensington-content > * {
    margin-top: 0;
    margin-bottom: 0;
}

.kensington-shell .kensington-content h1,
.kensington-shell .kensington-content h2,
.kensington-shell .kensington-content h3 {
    color: var(--charcoal);
    font-family: var(--font-display);
    font-weight: 300;
    line-height: 1.02;
}

.kensington-shell .kensington-content .section-kicker + h1,
.kensington-shell .kensington-content .section-kicker + h2,
.kensington-shell .kensington-content .section-kicker + h3 {
    margin-top: clamp(22px, 2.6vw, 32px);
}

.kensington-shell .kensington-content .section-kicker + p,
.kensington-shell .kensington-content .section-kicker + ul,
.kensington-shell .kensington-content .section-kicker + ol {
    margin-top: clamp(14px, 1.8vw, 22px);
}

.kensington-shell .kensington-content h1 {
    font-size: 68px;
}

.kensington-shell .kensington-content h2 {
    font-size: 52px;
}

.kensington-shell .kensington-content h3 {
    font-size: 36px;
}

.kensington-shell .kensington-content h1 + p,
.kensington-shell .kensington-content h2 + p,
.kensington-shell .kensington-content h3 + p,
.kensington-shell .kensington-content h1 + ul,
.kensington-shell .kensington-content h2 + ul,
.kensington-shell .kensington-content h3 + ul,
.kensington-shell .kensington-content h1 + ol,
.kensington-shell .kensington-content h2 + ol,
.kensington-shell .kensington-content h3 + ol {
    margin-top: clamp(10px, 1.4vw, 16px);
}

.kensington-shell .kensington-content p + h1,
.kensington-shell .kensington-content p + h2,
.kensington-shell .kensington-content p + h3,
.kensington-shell .kensington-content ul + h1,
.kensington-shell .kensington-content ul + h2,
.kensington-shell .kensington-content ul + h3,
.kensington-shell .kensington-content ol + h1,
.kensington-shell .kensington-content ol + h2,
.kensington-shell .kensington-content ol + h3 {
    margin-top: clamp(26px, 3vw, 40px);
}

.kensington-shell .kensington-content p + p,
.kensington-shell .kensington-content p + ul,
.kensington-shell .kensington-content p + ol,
.kensington-shell .kensington-content ul + p,
.kensington-shell .kensington-content ol + p {
    margin-top: clamp(16px, 2vw, 26px);
}

.kensington-shell .kensington-content h1 + h2,
.kensington-shell .kensington-content h2 + h2,
.kensington-shell .kensington-content h2 + h3,
.kensington-shell .kensington-content h3 + h3 {
    margin-top: clamp(22px, 2.6vw, 34px);
}

.kensington-shell .kensington-content p,
.kensington-shell .kensington-content ul,
.kensington-shell .kensington-content ol {
    margin-right: auto;
    margin-left: auto;
    max-width: 760px;
    line-height: 1.72;
}

.kensington-shell .kensington-content p {
    margin-bottom: 0;
}

.kensington-shell .kensington-content p:has(> .button) {
    display: flex;
    justify-content: center;
    margin-top: clamp(22px, 2.4vw, 32px);
    line-height: 1;
}

.kensington-shell .kensington-content ul,
.kensington-shell .kensington-content ol {
    display: inline-grid;
    gap: 10px;
    padding-left: 1.2em;
    text-align: left;
}

.kensington-shell .kensington-content a:not(.button):not(.kensington-gallery-item) {
    text-decoration: underline;
    text-underline-offset: 0.22em;
}

.kensington-shell .framed-cta {
    padding: 24px;
    background: #383e47;
    color: var(--bone);
}

.kensington-shell .framed-cta__inner {
    display: grid;
    justify-items: center;
    gap: 0;
    min-height: 260px;
    padding: clamp(48px, 7vw, 72px) 24px;
    border: 1px solid rgba(244, 242, 239, 0.58);
    text-align: center;
}

.kensington-shell .framed-cta h2 {
    font-size: 44px;
}

.kensington-shell .framed-cta__copy h2 {
    display: none;
}

.kensington-shell .framed-cta p {
    max-width: 680px;
    margin: 0;
    color: rgba(244, 242, 239, 0.74);
}

.kensington-shell .framed-cta__copy {
    display: grid;
    justify-items: center;
    gap: 16px;
}

.kensington-shell .framed-cta__copy > * {
    margin: 0;
}

.kensington-shell .kensington-gallery-albums {
    display: grid;
    gap: 64px;
    margin-top: 54px;
}

.kensington-shell .kensington-gallery-album__header {
    display: grid;
    gap: 12px;
    margin-bottom: 26px;
}

.kensington-shell .kensington-gallery-album__header h2 {
    margin: 0;
}

.kensington-shell .kensington-gallery-album__header p {
    margin: 0 auto;
}

.kensington-shell .kensington-gallery-grid {
    display: grid;
    grid-template-columns: repeat(var(--gallery-columns, 3), minmax(0, 1fr));
    gap: 25px;
    width: min(1120px, 100%);
    margin: 0 auto;
}

.kensington-shell .kensington-gallery-item {
    position: relative;
    display: block;
    aspect-ratio: var(--thumbnail-aspect-ratio, 1 / 1);
    overflow: hidden;
    background: var(--sand);
}

.kensington-shell .kensington-gallery-item::after {
    content: "";
    position: absolute;
    inset: auto 0 0;
    height: 58%;
    background: linear-gradient(180deg, transparent, rgba(37, 36, 36, 0.62));
    opacity: 0;
    transform: translateY(28%);
    transition: opacity 360ms ease, transform 360ms ease;
}

.kensington-shell .kensington-gallery-item:hover::after,
.kensington-shell .kensington-gallery-item:focus-visible::after {
    opacity: 1;
    transform: translateY(0);
}

.kensington-shell .kensington-gallery-item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.kensington-shell .site-footer {
    background: var(--charcoal);
    color: var(--bone);
}

.kensington-shell .site-footer__inner {
    display: grid;
    gap: 34px;
    width: min(1180px, calc(100% - 48px));
    margin: 0 auto;
    padding: clamp(56px, 7vw, 88px) 0 28px;
    text-align: center;
}

.kensington-shell .site-footer__brand {
    justify-self: center;
    font-family: var(--font-display);
    font-size: 52px;
    line-height: 1;
}

.kensington-shell .site-footer__brand img {
    width: auto;
    max-width: 260px;
    max-height: 76px;
    object-fit: contain;
}

.kensington-shell .site-footer__nav {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 18px 28px;
    color: rgba(244, 242, 239, 0.72);
    font-size: 11px;
    letter-spacing: 0.24em;
    text-transform: uppercase;
}

.kensington-shell .site-footer__nav a,
.kensington-shell .template-credit-link {
    position: relative;
}

.kensington-shell .site-footer__nav a::after {
    bottom: -6px;
}

.kensington-shell .site-footer__fineprint {
    margin: 10px 0 0;
    color: rgba(244, 242, 239, 0.54);
    font-size: 11px;
}

.kensington-shell .template-credit-link {
    color: inherit;
}

@media (prefers-reduced-motion: no-preference) {
    html.kensington-page-leaving body.kensington-cms::before {
        opacity: 1;
        transition-duration: 860ms;
        transition-timing-function: cubic-bezier(0.76, 0, 0.24, 1);
    }
}

@media (prefers-reduced-motion: reduce) {
    body.kensington-cms::before {
        opacity: 0;
        transition-duration: 1ms;
    }
}

@media (max-width: 1024px) {
    .kensington-shell .hero.has-mobile-set .hero__slides--desktop {
        display: none;
    }

    .kensington-shell .hero.has-mobile-set .hero__slides--mobile {
        display: block;
    }

    .kensington-shell .kensington-gallery-grid {
        grid-template-columns: repeat(var(--gallery-tablet-columns, 3), minmax(0, 1fr));
    }
}

@media (max-width: 860px) {
    .kensington-shell .site-header__inner {
        min-height: 76px;
        grid-template-columns: auto 1fr auto;
    }

    .kensington-shell .brand {
        min-width: 0;
        font-size: 20px;
        letter-spacing: 0.18em;
    }

    .kensington-shell .brand__logo {
        max-width: 170px;
        max-height: 42px;
    }

    .kensington-shell .button--outline {
        min-height: 38px;
        padding: 0 16px;
    }

    .kensington-shell .menu-panel,
    .kensington-shell .menu-backdrop {
        top: 76px;
    }

    .kensington-shell .menu-panel__inner {
        grid-template-columns: 1fr;
    }

    .kensington-shell .menu-panel__nav a {
        font-size: 52px;
    }

    .kensington-shell .hero h1 {
        font-size: 72px;
    }

    .kensington-shell .intro h2,
    .kensington-shell .kensington-content h1 {
        font-size: 54px;
    }

    .kensington-shell .kensington-content h2,
    .kensington-shell .framed-cta h2 {
        font-size: 42px;
    }
}

@media (max-width: 620px) {
    .kensington-shell .site-header__inner {
        padding: 0 16px;
    }

    .kensington-shell .menu-toggle__label {
        display: none;
    }

    .kensington-shell .site-header__actions .button {
        display: none;
    }

    .kensington-shell .hero__content {
        padding-top: 76px;
    }

    .kensington-shell .hero h1 {
        font-size: 52px;
    }

    .kensington-shell .menu-panel__nav a {
        font-size: 42px;
    }

    .kensington-shell .intro__inner {
        width: min(100% - 32px, 760px);
    }

    .kensington-shell .intro h2,
    .kensington-shell .kensington-content h1 {
        font-size: 40px;
    }

    .kensington-shell .kensington-content h2,
    .kensington-shell .framed-cta h2 {
        font-size: 34px;
    }

    .kensington-shell .kensington-gallery-grid {
        grid-template-columns: repeat(var(--gallery-mobile-columns, 2), minmax(0, 1fr));
    }

    .kensington-shell .framed-cta {
        padding: 16px;
    }
}
