/* Travel Haven's original visual treatment. No event artwork, media or brand font. */
.campaign-banner{margin-top:80px;margin-bottom:84px}.campaign-banner-inner{position:relative;overflow:hidden;background:#132e29;color:#faf5e9;padding:44px 48px 26px;isolation:isolate}.campaign-banner-inner:before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 90% 5%,#b8955266,transparent 50%),linear-gradient(125deg,transparent 34%,#cdb17b22 35%,transparent 37%);z-index:-1}.campaign-kicker{text-transform:uppercase;letter-spacing:.2em;font-size:12px;line-height:1.6;color:#e4c58e}.campaign-banner h2{font-family:var(--serif);font-weight:400;font-size:clamp(35px,10.5vw,150px);letter-spacing:-.04em;line-height:1;margin:24px 0 30px;white-space:nowrap}.campaign-banner-bottom{display:grid;grid-template-columns:1.1fr 1fr;gap:48px;align-items:end}.campaign-banner-bottom p{max-width:560px;font-size:16px;line-height:1.7}.campaign-banner-bottom .campaign-banner-lead{font-family:var(--serif);font-size:36px;line-height:1.12;margin-bottom:16px}.campaign-banner-actions{display:flex;flex-direction:column;align-items:flex-start;gap:18px;padding-bottom:8px}.campaign-secondary{font-size:14px;text-decoration:underline;text-underline-offset:5px}.campaign-disclaimer{font-size:12px!important;line-height:1.7!important;max-width:1000px!important;color:#d3d8cc;margin:30px 0 0!important}.campaign-beam{position:absolute;inset:-40%;background:conic-gradient(from 30deg at 80% 0%,transparent 0deg,#ecd39712 5deg,transparent 12deg,transparent 20deg,#fff8df0b 26deg,transparent 38deg);pointer-events:none;animation:beam-drift 25s ease-in-out infinite alternate;z-index:0}.experience-card{display:grid;grid-template-columns:1fr 1.3fr;position:relative;background:#e9e5d8;margin:30px 0 0;min-height:330px;overflow:hidden}.experience-card>img{width:100%;height:100%;max-height:400px;object-fit:cover}.experience-card>div{padding:48px}.experience-card h2{font-size:48px;line-height:1.05;margin:16px 0}.experience-card p{max-width:440px;line-height:1.7}.experience-label{position:absolute;bottom:14px;left:18px;color:#fff;font-size:12px;max-width:43%;text-shadow:0 1px 6px #000}.experience-link{display:inline-block;margin-top:20px;font-size:13px;letter-spacing:.1em;text-transform:uppercase;border-bottom:1px solid;padding-bottom:7px}.campaign-page h2{font-size:clamp(36px,4.5vw,64px);line-height:1.04;margin:16px 0 26px}.campaign-page p{font-size:16px;line-height:1.8}.campaign-hero{position:relative;background:#0e211f;color:#fff8e9;overflow:hidden;isolation:isolate;padding:55px 0 30px}.campaign-hero-photo{position:absolute;inset:0;z-index:-2}.campaign-hero-photo img{width:100%;height:100%;object-fit:cover;opacity:.21}.campaign-hero:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#102823cc,transparent 75%),linear-gradient(0deg,#102823,transparent);z-index:-1}.campaign-hero-content{position:relative;z-index:1}.campaign-hero h1{font-weight:400;margin:22px 0 0;line-height:.86}.campaign-word{display:block;font-size:clamp(42px,12.5vw,182px);letter-spacing:-.035em;white-space:nowrap}.campaign-year{display:block;text-align:right;font-family:var(--sans);font-size:clamp(14px,2.2vw,28px);letter-spacing:.45em;font-weight:400;margin-top:28px}.campaign-hero-bottom{display:grid;grid-template-columns:1.15fr 1fr;align-items:center;gap:40px;min-height:380px;margin-top:24px}.campaign-title{color:#e4c58e;font-size:14px!important;letter-spacing:.09em}.campaign-hero-line{font-family:var(--serif);font-size:clamp(32px,3.8vw,56px)!important;line-height:1.1!important;margin:12px 0 20px}.campaign-hero-bottom>div>p:not(.campaign-hero-line){max-width:510px}.campaign-hero .button{margin-top:20px}.campaign-location-note{font-size:13px!important;line-height:1.7!important;color:#d9dfd3;max-width:900px;margin-top:24px;border-top:1px solid #ffffff30;padding-top:20px}.campaign-editorial-grid{display:grid;grid-template-columns:1fr 1fr;gap:7%;align-items:center}.campaign-moment,.campaign-why,.campaign-gallery,.campaign-highlights,.campaign-practical{padding-top:94px;padding-bottom:94px}.campaign-why{padding-top:10px}.campaign-photo-frame{position:relative}.campaign-photo-frame img{width:100%;height:590px;object-fit:cover}.campaign-photo-frame>span{position:absolute;bottom:24px;left:24px;color:#fff;letter-spacing:.16em;font-size:12px;text-shadow:0 1px 5px #000}.campaign-section-heading{display:flex;justify-content:space-between;gap:35px;align-items:end;margin-bottom:26px}.campaign-section-heading>p{max-width:300px;color:#5d665c}.campaign-gallery-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:36px}.campaign-gallery-grid figure{margin:0}.campaign-gallery-grid figure:nth-child(even){padding-top:75px}.campaign-gallery-button{position:relative;display:block;width:100%;padding:0;background:none;border:0;cursor:zoom-in;overflow:hidden}.campaign-gallery-button img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;transition:transform .8s}.campaign-gallery-button:hover img{transform:scale(1.035)}.campaign-gallery-button>span{position:absolute;right:15px;bottom:15px;padding:12px;background:#f7f3e8;color:#17352d;border-radius:50%}.campaign-gallery-grid figcaption{font-size:14px;padding-top:14px;color:#596456}.campaign-experience{padding:85px 0;background:#e8e5d8;border-top:1px solid #d4d2c7;border-bottom:1px solid #d4d2c7}.campaign-specs{list-style:none;margin:44px 0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid #c9c8bc;border-bottom:1px solid #c9c8bc}.campaign-specs li{padding:30px 18px;border-right:1px solid #c9c8bc}.campaign-specs li:last-child{border:0}.campaign-specs strong{display:block;font-family:var(--serif);font-size:50px;font-weight:400;margin-bottom:12px}.campaign-specs span{font-size:14px;line-height:1.5;display:block}.campaign-amenities{display:flex;gap:24px 35px;flex-wrap:wrap}.campaign-amenities>span{display:flex;gap:12px;align-items:center;font-size:14px}.campaign-practical-note{font-size:13px!important;line-height:1.8!important;margin-top:28px;max-width:850px}.campaign-party{position:relative;background:#0e2723;color:#fbf5e8;overflow:hidden;padding:65px 0;isolation:isolate}.campaign-party:before{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(ellipse at 70% 40%,#8d7b4730,transparent 55%)}.campaign-party-layout{display:grid;grid-template-columns:1fr 1fr;gap:7%;align-items:center}.campaign-party p{max-width:480px}.campaign-motion-toggle{background:none;border:1px solid #d6c49380;color:#f3e5c5;padding:12px 17px;font:inherit;font-size:13px;margin-top:20px;cursor:pointer}.campaign-motion-toggle:hover{background:#ffffff10}.campaign-cta{background:#17382e;color:#f7f2e7;padding:88px 0}.campaign-cta .container{max-width:1000px}.campaign-cta h2{font-size:clamp(48px,6vw,82px)}.campaign-cta p{max-width:660px}.campaign-cta a:not(.button){text-decoration:underline}.campaign-cta-actions{display:flex;flex-wrap:wrap;gap:18px;margin-top:28px}.campaign-outline{border:1px solid #cbbc95;color:#faf5e9}.campaign-outline:hover{background:#ffffff10}.campaign-page .campaign-cta .campaign-practical-note{max-width:900px}
/* 240 small planes arranged on a sphere, rendered with native CSS perspective. */
.mirror-scene{--ball:clamp(210px,26vw,350px);position:relative;height:calc(var(--ball) + 70px);width:100%;perspective:950px;contain:layout;pointer-events:none}.mirror-cord{position:absolute;width:1px;background:linear-gradient(#b6b1a7,#5e665e);height:80px;top:-42px;left:50%}.mirror-orbit{width:var(--ball);height:var(--ball);position:absolute;left:50%;top:45%;transform:translate(-50%,-50%) rotateX(var(--look-y,0deg)) rotateY(var(--look-x,0deg));transform-style:preserve-3d;transition:transform 1.5s ease}.mirror-globe{position:relative;width:100%;height:100%;transform-style:preserve-3d;transform:rotateX(-12deg) rotateZ(-8deg);animation:mirror-turn 46s linear infinite;animation-play-state:paused}.mirror-globe i{position:absolute;left:calc(50% - var(--ball)*.072);top:calc(50% - var(--ball)*.067);width:calc(var(--ball)*.144);height:calc(var(--ball)*.134);border:1px solid #122a2770;background:linear-gradient(calc(var(--shine)*29deg),#293f3c,#d5ccaf 45%,#f8f1dc 49%,#4c605a 85%);box-shadow:inset 1px 1px 2px #ffffffa0;transform:rotateY(var(--lon)) rotateX(var(--lat)) translateZ(calc(var(--ball)*.492));backface-visibility:hidden}.mirror-aura{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 45%,#dfcb8145,transparent 56%);filter:blur(20px)}.mirror-reflections{position:absolute;inset:-15%;background-image:radial-gradient(ellipse at 14% 20%,#f8e7b7 0 1px,transparent 3px),radial-gradient(ellipse at 85% 25%,#fff7cc 0 2px,transparent 4px),radial-gradient(ellipse at 72% 75%,#dad9c2 0 2px,transparent 4px),radial-gradient(ellipse at 24% 82%,#e9dab0 0 2px,transparent 5px),radial-gradient(ellipse at 92% 55%,#bdd4c6 0 1px,transparent 4px);opacity:.45;animation:reflection-drift 16s ease-in-out infinite alternate;animation-play-state:paused}.effects-playing .mirror-globe,.effects-playing .mirror-reflections{animation-play-state:running}.motion-paused .mirror-globe,.motion-paused .mirror-reflections,.motion-paused .campaign-beam{animation-play-state:paused!important}@keyframes mirror-turn{to{transform:rotateX(-12deg) rotateZ(-8deg) rotateY(360deg)}}@keyframes reflection-drift{to{transform:translate(10px,-15px) rotate(8deg);opacity:.75}}@keyframes beam-drift{to{transform:rotate(7deg)}}
.back-to-top{position:fixed;right:26px;bottom:26px;width:48px;height:48px;border-radius:50%;border:1px solid #b9a16d;background:#173b32;color:#fff7e7;box-shadow:0 6px 22px #102b2428;z-index:40;display:grid;place-items:center;opacity:0;visibility:hidden;transform:translateY(14px);transition:opacity .25s,transform .25s,visibility .25s,background .2s;cursor:pointer}.back-to-top.is-visible{opacity:1;visibility:visible;transform:translateY(0)}.back-to-top:hover{background:#285143;transform:translateY(-3px)}.back-to-top svg{width:20px;height:20px}.back-to-top:focus-visible{outline:3px solid #846221;outline-offset:4px}.language-picker{position:relative;margin-left:14px;flex-shrink:0}.language-picker summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:6px;min-height:44px;padding:8px;font-size:12px;letter-spacing:.1em}.language-picker summary::-webkit-details-marker{display:none}.language-picker summary:after{content:"⌄";font-size:15px}.language-picker ul{position:absolute;right:0;top:100%;min-width:150px;background:#f6f3eb;border:1px solid #d7d2c2;box-shadow:0 12px 28px #12342d20;list-style:none;margin:0;padding:8px;z-index:90}.language-picker a{display:block;padding:12px;font-size:14px;white-space:nowrap;color:#193b31}.language-picker a:hover,.language-picker a[aria-current]{background:#e7e2d4}.language-picker summary:focus-visible{outline:3px solid #846221;outline-offset:3px}.card-wifi{display:inline-flex;align-items:center;gap:6px;font-size:12px;line-height:1.5;margin-top:8px}.card-wifi svg{width:15px;height:15px}.legal-page .legal-language{display:none}
@media(max-width:1150px){.header-contact{display:none}.desktop-nav{gap:17px!important}.campaign-hero-bottom{gap:20px}.campaign-hero-line{font-size:40px!important}.campaign-banner-inner{padding:36px}.campaign-banner-bottom{gap:30px}}
@media(max-width:800px){.campaign-banner{margin-top:45px;margin-bottom:50px}.campaign-banner-inner{padding:28px 22px}.campaign-banner h2{font-size:10.4vw;letter-spacing:-.04em}.campaign-banner-bottom,.campaign-editorial-grid,.campaign-party-layout{grid-template-columns:1fr;gap:30px}.campaign-banner-bottom .campaign-banner-lead{font-size:31px}.campaign-banner-actions{margin-top:4px}.campaign-hero{padding-top:32px}.campaign-hero h1{margin-top:20px}.campaign-word{font-size:12vw}.campaign-year{font-size:16px;letter-spacing:.3em;margin-top:18px}.campaign-hero-bottom{grid-template-columns:1fr .75fr;gap:5px;min-height:310px}.campaign-hero-line{font-size:32px!important}.campaign-hero-bottom>div>p{font-size:14px}.campaign-hero-bottom .mirror-scene{--ball:190px}.campaign-moment,.campaign-why,.campaign-gallery,.campaign-highlights,.campaign-practical{padding-top:60px;padding-bottom:60px}.campaign-why{padding-top:0}.campaign-photo-frame img{height:420px}.campaign-gallery-grid{gap:22px}.campaign-gallery-grid figure:nth-child(even){padding-top:40px}.campaign-experience{padding:60px 0}.campaign-party-layout>.mirror-scene{--ball:270px;max-width:420px;margin:0 auto}.campaign-section-heading{display:block}.campaign-section-heading>p{margin-top:18px}.campaign-cta{padding:65px 0}.experience-card>div{padding:28px}.experience-card h2{font-size:38px}.language-picker{margin-left:auto;margin-right:8px}.mirror-globe{animation-duration:70s}}
@media(max-width:540px){.campaign-hero-bottom{grid-template-columns:1fr;min-height:0}.campaign-hero-bottom .mirror-scene{--ball:210px;position:relative;height:240px;max-width:280px;margin:22px auto 0}.campaign-hero-line{font-size:35px!important}.campaign-hero-bottom>div>p:not(.campaign-hero-line){font-size:15px}.campaign-hero .campaign-kicker{font-size:10px;letter-spacing:.1em}.campaign-location-note{margin-top:0}.campaign-year{font-size:13px;letter-spacing:.22em}.campaign-specs{grid-template-columns:repeat(2,1fr)}.campaign-specs li:nth-child(2){border-right:0}.campaign-specs li:nth-child(-n+2){border-bottom:1px solid #c9c8bc}.campaign-gallery-grid{grid-template-columns:1fr}.campaign-gallery-grid figure:nth-child(even){padding:0}.campaign-photo-frame img{height:350px}.campaign-cta-actions{flex-direction:column;align-items:stretch}.campaign-cta-actions .button{justify-content:center;text-align:center}.campaign-banner .button{font-size:12px;text-align:center;white-space:normal;padding:15px 18px}.experience-card{grid-template-columns:1fr}.experience-card>img{height:220px}.experience-card>div{padding:30px 24px 50px}.experience-label{color:#385449;text-shadow:none;max-width:90%;bottom:16px;left:24px}.back-to-top{right:16px;bottom:calc(18px + env(safe-area-inset-bottom));width:44px;height:44px}.site-footer{padding-bottom:70px}.language-picker ul{right:-45px}.campaign-practical .aqua-prose{overflow-wrap:anywhere}}
@media(prefers-reduced-motion:reduce){.mirror-globe,.mirror-reflections,.campaign-beam{animation:none!important}.mirror-orbit{transition:none!important}.back-to-top{transition:none!important}.campaign-gallery-button img{transition:none}}

.language-clear{font:inherit;padding:10px 16px;background:#173b32;color:#fff;border:0;cursor:pointer;min-height:44px}.language-status{display:block;font-size:14px;margin-top:10px}.header-inner{gap:12px}

/* The home banner settles within five seconds; longer campaign motion has pause controls. */
.campaign-banner .campaign-beam{animation-duration:4s;animation-iteration-count:1;animation-fill-mode:forwards}
/* Let grid items shrink to the viewport even when an aspect ratio meets a minimum height. */
.stay-card{min-width:0;width:100%}.collection{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:760px){.collection{grid-template-columns:minmax(0,1fr)}}
.rates-panel>*{min-width:0}.booking-form{grid-template-columns:repeat(2,minmax(0,1fr))}.form-field input,.form-field select{min-width:0;max-width:100%}
@media(max-width:540px){.booking-form{grid-template-columns:minmax(0,1fr)}.booking-form .form-wide{grid-column:1/-1}.booking-form .button{white-space:normal;text-align:center}.rates-panel h2,.rate-text{overflow-wrap:anywhere}}
.language-picker ul{width:260px;max-width:calc(100vw - 36px)}.language-memory{padding:8px;border-bottom:1px solid #d7d2c2;margin-bottom:6px}.language-memory label{display:flex;align-items:flex-start;gap:9px;font-size:13px;line-height:1.5;cursor:pointer}.language-memory input{width:18px;height:18px;flex-shrink:0;accent-color:#173b32;margin-top:2px}.language-memory p{font-size:11px;line-height:1.6;margin:8px 0 4px;color:#526158}
