/* Seasonal homepage variant only. Shared styles and the original homepage are unchanged. */
.xmas-homepage {
    --xmas-navy: #202d43;
    --xmas-copper: #bc4b16;
    --xmas-copper-hover: #983b10;
    --xmas-cream: #f8f2e9;
    --xmas-gold: #f2bb77;
    color: var(--xmas-navy);
}
.xmas-homepage ::selection { background: #f2bb77; color: #202d43; }
.xmas-homepage a:focus-visible,
.xmas-homepage [role="button"]:focus-visible {
    outline: 3px solid #b75a19;
    outline-offset: 5px;
}
.xmas-homepage .site-header {
    position: absolute;
    inset: 0 0 auto;
    background: transparent;
}
.xmas-homepage .site-header .header-top { padding-bottom: 40px; }
.xmas-homepage .site-header .header-bottom .header-logo { width: 195px; }
.xmas-homepage .site-header .header-bottom .header-nav > ul > li > a { padding-inline: 12px; }
.xmas-homepage .site-header .header-top a:focus-visible,
.xmas-homepage .site-header .header-nav a:focus-visible { outline-color: var(--xmas-gold); }
.xmas-wrap { width: min(1280px, calc(100% - 80px)); margin-inline: auto; }
.xmas-hero {
    position: relative;
    isolation: isolate;
    min-height: 760px;
    display: flex;
    align-items: center;
    color: #fff;
    background: #152438;
}
.xmas-hero picture,
.xmas-hero-image,
.xmas-hero::after { position: absolute; inset: 0; width: 100%; height: 100%; z-index: -1; }
.xmas-hero-image { object-fit: cover; object-position: center 58%; }
.xmas-hero::after {
    content: "";
    background: linear-gradient(90deg, rgba(15, 27, 44, .55), rgba(15, 27, 44, .06) 80%),
        linear-gradient(180deg, rgba(15, 27, 44, .3), transparent 42%);
}
/* The supplied homepage photo needs different framing from the other winter pages. */
.xmas-hero-hall-photo .xmas-hero-image { object-fit: contain; object-position: right bottom; }
.xmas-hero-hall-photo::after {
    background: linear-gradient(90deg, #152438 18%, rgba(21, 36, 56, .96) 30%, rgba(21, 36, 56, .35) 48%, rgba(15, 27, 44, .06) 70%),
        linear-gradient(180deg, rgba(15, 27, 44, .3), transparent 42%);
}
@media (min-width: 1024px) {
    /* Feather the photo's own edge, even when it sits far right on a wide screen. */
    .xmas-hero-hall-photo picture {
        left: auto;
        width: auto;
        max-width: 100%;
        aspect-ratio: 4 / 3;
        -webkit-mask-image: linear-gradient(90deg, transparent, #000 32%);
        mask-image: linear-gradient(90deg, transparent, #000 32%);
    }
}
.xmas-hero-copy { padding-block: 230px 90px; }
.xmas-season-line { margin: 0 0 20px; color: var(--xmas-gold); font: 900 14px/1.5 Lato, sans-serif; letter-spacing: .18em; text-transform: uppercase; }
.xmas-hero h1 { margin: 0 0 24px; color: #fff; font: 400 clamp(46px, 5.4vw, 76px)/1.04 "Playfair Display", Georgia, serif; letter-spacing: -.025em; }
.xmas-hero h1 span { display: block; }
.xmas-hero-intro { max-width: 440px; margin: 0 0 30px; color: #fff; font: 400 21px/1.5 Lato, sans-serif; }
.xmas-actions { display: flex; flex-wrap: wrap; gap: 16px; }
.xmas-button,
.xmas-homepage #cta .btn-primary {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 48px;
    padding: 14px 22px;
    border: 1px solid transparent;
    background: var(--xmas-copper);
    color: #fff;
    font: 900 12px/1.5 Lato, sans-serif;
    letter-spacing: .085em;
    text-transform: uppercase;
    text-decoration: none;
    text-align: center;
    transition: background-color .18s ease, color .18s ease;
}
.xmas-button:hover,
.xmas-button:focus,
.xmas-homepage #cta .btn-primary:hover { background: var(--xmas-copper-hover); color: #fff; text-decoration: none; }
.xmas-button-outline { border-color: #fff; background: rgba(15, 27, 44, .22); }
.xmas-button-outline:hover,
.xmas-button-outline:focus { background: #fff; color: var(--xmas-navy); }
.xmas-homepage #cta { padding-block: 28px; background: var(--xmas-navy) !important; }
.xmas-homepage #cta .container { display: flex; flex-wrap: wrap; justify-content: center; gap: 18px 28px; padding: 0 !important; }
.xmas-homepage #cta .container::before,
.xmas-homepage #cta .container::after { display: none; }
.xmas-homepage #cta p { margin: 0; }
.xmas-homepage #cta a { margin: 0; }
.xmas-homepage #cta .btn-primary { min-width: 164px; margin: 0; font-family: "Playfair Display", Georgia, serif; font-size: 17px; font-weight: 400; letter-spacing: .06em; }
.xmas-events { padding-block: 64px; background: var(--xmas-cream); scroll-margin-top: 24px; }
.xmas-section-heading { margin-bottom: 34px; text-align: center; }
.xmas-section-heading .xmas-season-line { color: var(--xmas-navy); font-size: 12px; margin-bottom: 10px; }
.xmas-section-heading h2 { margin: 0 0 16px; font: 400 clamp(34px, 4.2vw, 54px)/1.14 "Playfair Display", Georgia, serif; color: var(--xmas-navy); }
.xmas-section-heading p { margin: 0 auto; max-width: 65ch; font: 400 18px/1.6 Lato, sans-serif; }
.xmas-event-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px; }
.xmas-event { display: flex; flex-direction: column; min-width: 0; background: #fff; box-shadow: 0 9px 25px rgba(32, 45, 67, .06); }
.xmas-event-art { display: block; width: 100%; height: auto; aspect-ratio: 1 / 1; object-fit: cover; }
.xmas-event-art-buble { object-position: 64% center; }
.xmas-event .xmas-event-art-poster { object-fit: contain; object-position: center; background: #08090a; }
.xmas-event-art-nye { object-position: 63% center; }
.xmas-event-body { flex: 1; display: flex; flex-direction: column; padding: 20px 18px 18px; }
.xmas-event-date { display: block; margin: 0 0 12px; color: var(--xmas-navy); font: 900 11px/1.5 Lato, sans-serif; letter-spacing: .07em; text-transform: uppercase; }
.xmas-event h3 { margin: 0 0 12px; color: var(--xmas-navy); font: 400 27px/1.16 "Playfair Display", Georgia, serif; }
.xmas-event-description { margin: 0 0 24px; font: 400 16px/1.5 Lato, sans-serif; }
.xmas-event .xmas-button { width: 100%; padding-inline: 10px; margin-top: auto; font-size: 11px; }
.xmas-event .xmas-button span,
.xmas-offers .xmas-button span { margin-left: 9px; }
.xmas-offers { background: var(--xmas-navy); color: #fff; scroll-margin-top: 20px; }
.xmas-offers-inner { display: grid; grid-template-columns: 1fr 1fr; min-height: 290px; }
.xmas-offers-copy { padding: 35px 40px 35px 0; align-self: center; }
.xmas-offers .xmas-season-line { margin-bottom: 10px; font-size: 12px; }
.xmas-offers h2 { color: #fff; margin: 0 0 14px; font: 400 clamp(30px, 3vw, 44px)/1.08 "Playfair Display", Georgia, serif; }
.xmas-offers h2 span { display: block; }
.xmas-offers p:not(.xmas-season-line) { color: #fff; max-width: 44ch; margin: 0 0 18px; font: 400 17px/1.5 Lato, sans-serif; }
.xmas-offers-photos { display: grid; grid-template-columns: 1fr 1fr; gap: 3px; overflow: hidden; }
.xmas-offers-photos img { width: 100%; height: 100%; min-height: 290px; object-fit: cover; }
.xmas-offers-photos img:first-child { object-position: 45% center; }
.xmas-homepage .xmas-welcome { padding-block: 65px; background: #fff; }
.xmas-welcome .xmas-section-heading { margin-bottom: 32px; }
.xmas-welcome-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 28px; }
.xmas-welcome-card { padding: 16px; box-shadow: 0 6px 25px rgba(32, 45, 67, .07); }
.xmas-welcome-link { display: flex; flex-direction: column; position: relative; isolation: isolate; min-height: 410px; justify-content: flex-end; padding: 25px; overflow: hidden; text-decoration: none; color: #fff; background: var(--xmas-navy); }
.xmas-welcome-link::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(0deg, #202d43 5%, rgba(32, 45, 67, .89) 34%, rgba(32, 45, 67, .02) 82%); }
.xmas-welcome-link img { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; }
.xmas-welcome-link:hover,
.xmas-welcome-link:focus { color: #fff; text-decoration: none; }
.xmas-welcome-card h3 { color: #fff; margin: 0 0 10px; font: 400 30px/1.16 "Playfair Display", Georgia, serif; }
.xmas-welcome-card p { color: #fff; margin: 0 0 20px; font: 400 16px/1.5 Lato, sans-serif; }
.xmas-welcome-card .xmas-button { align-self: flex-start; font-size: 11px; padding-inline: 15px; }
.xmas-offer-options { scroll-margin-top: 24px; }
.xmas-homepage .homelead { color: #267c88; font: 900 12px/1.5 Lato, sans-serif; letter-spacing: .1em; text-transform: uppercase; }
.xmas-homepage .site-footer .widget-newsletter input:disabled,
.xmas-homepage .site-footer .widget-newsletter button:disabled { cursor: default; opacity: .65; }
.xmas-homepage .xmas-skip { position: absolute; left: 16px; top: 12px; z-index: 1200; transform: translateY(-200%); padding: 12px 18px; color: #202d43; background: #fff; }
.xmas-homepage .xmas-skip:focus { transform: none; }
@media (max-width: 1199px) {
    .xmas-homepage .site-header .header-top { display: none; }
    .xmas-homepage .site-header .header-bottom { min-height: 210px; padding: 0; }
    .xmas-homepage .site-header .header-bottom .header-logo { position: absolute; width: 135px; left: 50%; top: 26px; transform: translateX(-50%); }
    .xmas-homepage .site-header .header-bottom .header-logo img { margin-top: 0 !important; }
    .xmas-homepage .site-header .header-toggle { margin-top: 0; top: 145px; }
    .xmas-homepage .site-header .header-mobile-nav { position: absolute; top: 210px; left: 0; right: 0; padding: 12px 20px; background: var(--xmas-navy); max-height: calc(100svh - 210px); overflow-y: auto; }
    .xmas-wrap { width: calc(100% - 48px); }
    .xmas-event-grid { gap: 16px; }
    .xmas-event-body { padding-inline: 15px; }
    .xmas-event h3 { font-size: 24px; }
}
@media (max-width: 1023px) {
    .xmas-hero { min-height: 730px; }
    .xmas-hero-hall-photo::after { background: linear-gradient(180deg, #152438 22%, rgba(21, 36, 56, .92) 34%, rgba(21, 36, 56, .2) 60%, rgba(15, 27, 44, .06)); }
    .xmas-hero-copy { padding-top: 225px; }
    .xmas-event-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }
    .xmas-event-art { aspect-ratio: 1.35 / 1; }
    .xmas-event h3 { font-size: 28px; }
    .xmas-welcome-grid { gap: 16px; }
    .xmas-welcome-card { padding: 10px; }
    .xmas-welcome-link { padding: 18px; }
    .xmas-welcome-card h3 { font-size: 25px; }
}
@media (max-width: 767px) {
    .xmas-wrap { width: calc(100% - 40px); }
    .xmas-homepage .site-header .header-top { display: none; }
    .xmas-homepage .site-header .header-bottom { min-height: 210px; padding: 0; }
    .xmas-homepage .site-header .header-bottom .header-logo { position: absolute; width: 135px; left: 50%; top: 26px; transform: translateX(-50%); }
    .xmas-homepage .site-header .header-bottom .header-logo img { margin-top: 0 !important; }
    .xmas-homepage .site-header .header-toggle { margin-top: 0; top: 145px; }
    .xmas-homepage .site-header .header-mobile-nav { position: absolute; top: 210px; left: 0; right: 0; padding: 12px 20px; background: var(--xmas-navy); max-height: calc(100svh - 210px); overflow-y: auto; }
    .xmas-hero { min-height: 760px; align-items: flex-start; }
    .xmas-hero-image { object-position: 65% center; }
    .xmas-hero::after { background: linear-gradient(90deg, rgba(15, 27, 44, .68), rgba(15, 27, 44, .28)), linear-gradient(180deg, rgba(15, 27, 44, .25), transparent 85%); }
    .xmas-hero-copy { padding-block: 255px 55px; }
    .xmas-season-line { font-size: 11px; letter-spacing: .11em; margin-bottom: 16px; }
    .xmas-hero h1 { font-size: clamp(40px, 10vw, 58px); line-height: 1.1; margin-bottom: 22px; }
    .xmas-hero-intro { font-size: 18px; max-width: 30ch; }
    .xmas-actions { flex-direction: column; align-items: flex-start; gap: 12px; }
    .xmas-actions .xmas-button { width: 100%; max-width: 360px; padding-inline: 12px; font-size: 11px; }
    /* Enlarge the homepage Hall and heart, with actions below the photograph. */
    .xmas-hero-hall-photo { min-height: 790px; }
    .xmas-hero-hall-photo picture { inset: auto 0 140px; height: min(141vw, 550px); }
    .xmas-hero-hall-photo .xmas-hero-image { object-fit: cover; object-position: 47% bottom; }
    .xmas-hero-hall-photo::after { height: calc(100% - 140px); background: linear-gradient(180deg, #152438 0%, rgba(21, 36, 56, .85) 32%, rgba(21, 36, 56, .5) 64%, rgba(15, 27, 44, .06) 78%); }
    .xmas-hero-hall-photo .xmas-hero-copy { display: flex; flex-direction: column; min-height: 790px; width: 100%; padding: 225px 20px 16px; }
    .xmas-hero-hall-photo h1 { font-size: clamp(36px, 10vw, 58px); }
    .xmas-hero-hall-photo .xmas-actions { align-items: center; margin-top: auto; }
    .xmas-homepage #cta { padding-block: 20px; }
    .xmas-homepage #cta .container { display: grid; grid-template-columns: 1fr 1fr; width: 100%; gap: 12px; padding: 0 20px !important; }
    .xmas-homepage #cta .btn-primary { width: 100%; min-width: 0; font-size: 15px; padding-inline: 10px; }
    .xmas-events { padding-block: 44px; }
    .xmas-section-heading { margin-bottom: 26px; }
    .xmas-section-heading p { font-size: 17px; }
    .xmas-event-grid { grid-template-columns: 1fr; gap: 24px; }
    .xmas-event-art { aspect-ratio: 1.2 / 1; }
    .xmas-event-body { padding: 22px; }
    .xmas-event h3 { font-size: 30px; }
    .xmas-event-description { margin-bottom: 22px; }
    .xmas-offers-inner { grid-template-columns: 1fr; }
    .xmas-offers-copy { padding: 35px 0; }
    .xmas-offers-photos { margin-inline: -20px; }
    .xmas-offers-photos img { height: 220px; min-height: 0; }
    .xmas-welcome-grid { grid-template-columns: 1fr; gap: 24px; }
    .xmas-homepage .xmas-welcome { padding-block: 44px; }
    .xmas-welcome-link { min-height: 410px; padding: 24px; }
    .xmas-welcome-card h3 { font-size: 30px; }
}
@media (prefers-reduced-motion: reduce) {
    .xmas-homepage *, .xmas-homepage *::before, .xmas-homepage *::after {
        scroll-behavior: auto !important;
        animation: none !important;
        transition: none !important;
    }
}
