/*
Theme Name: Vienna Sporthotel Clean
Theme URI: https://vienna-sporthotel.at/
Author: Vienna Sporthotel
Description: Clean bilingual theme port for Vienna Sporthotel.
Version: 1.4.9
Requires at least: 6.4
Requires PHP: 8.0
Text Domain: vienna-sporthotel
*/

@font-face {
  font-family:"Instrument Sans";
  font-style:normal;
  font-weight:400 700;
  font-stretch:100%;
  font-display:swap;
  src:url("assets/fonts/instrument-sans/instrument-sans-latin-ext.woff2") format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family:"Instrument Sans";
  font-style:normal;
  font-weight:400 700;
  font-stretch:100%;
  font-display:swap;
  src:url("assets/fonts/instrument-sans/instrument-sans-latin.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family:"Instrument Sans";
  font-style:italic;
  font-weight:400 700;
  font-stretch:100%;
  font-display:swap;
  src:url("assets/fonts/instrument-sans/instrument-sans-italic-latin-ext.woff2") format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family:"Instrument Sans";
  font-style:italic;
  font-weight:400 700;
  font-stretch:100%;
  font-display:swap;
  src:url("assets/fonts/instrument-sans/instrument-sans-italic-latin.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family:"Instrument Serif";
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url("assets/fonts/instrument-serif/instrument-serif-regular-latin-ext.woff2") format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family:"Instrument Serif";
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url("assets/fonts/instrument-serif/instrument-serif-regular-latin.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family:"Instrument Serif";
  font-style:italic;
  font-weight:400;
  font-display:swap;
  src:url("assets/fonts/instrument-serif/instrument-serif-italic-latin-ext.woff2") format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family:"Instrument Serif";
  font-style:italic;
  font-weight:400;
  font-display:swap;
  src:url("assets/fonts/instrument-serif/instrument-serif-italic-latin.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

:root {
  color-scheme: only light;
  --ink:#0a0a0a;
  --surface:#fafbf5;
  --cream:var(--surface);
  --brand:#3972a8;
  --lime:#3972a8;
  --coral:#3972a8;
  --white:#fff;
  --font-body:"Instrument Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
  --font-display:"Instrument Serif", "Iowan Old Style", Baskerville, Georgia, serif;
  --type-hero-size:clamp(36px,calc(28px + 2.2vw),60px);
  --type-hero-line:1.12;
  --type-home-hero-size:clamp(36px,calc(28px + 1.8vw),56px);
  --type-home-hero-line:.98;
  --type-title-size:clamp(36px,calc(27px + 2.3vw),60px);
  --type-title-line:1.07;
  --type-section-size:clamp(26px,calc(20px + 1.7vw),48px);
  --type-section-line:1.05;
  --type-card-size:clamp(24px,calc(21px + .7vw),30px);
  --type-card-line:1.07;
  --type-lead-size:clamp(24px,calc(21px + .7vw),30px);
  --type-lead-line:1.2;
  --type-subheading-size:clamp(20px,calc(18px + .45vw),24px);
  --type-subheading-line:1.2;
  --type-minor-heading-size:clamp(18px,calc(17px + .25vw),20px);
  --type-eyebrow-size:14px;
  --type-body-size:16px;
  --type-body-line:24px;
  --type-body-large-size:clamp(16px,calc(15px + .2vw),18px);
  --type-body-large-line:1.55;
  --type-nav-size:clamp(11px,calc(9.5px + .25vw),13px);
  --type-ui-size:clamp(14px,calc(13px + .2vw),16px);
  --type-language-size:clamp(12px,calc(11px + .12vw),13px);
  --type-mobile-menu-size:clamp(30px,8vw,36px);
  --type-mobile-menu-line:1.1;
  --type-label-size:clamp(12px,calc(11px + .12vw),13px);
  --type-label-line:1.35;
  --type-form-size:16px;
  --type-footer-size:clamp(14px,calc(13.5px + .1vw),15px);
  --type-small-size:12px;
  --type-meta-size:13px;
  --site-header-inline:clamp(16px,2vw,36px);
  --site-header-gap:clamp(10px,1.2vw,24px);
  --site-logo-width:clamp(190px,18vw,278px);
}
* { box-sizing:border-box; }
html {
  scroll-behavior:smooth;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  text-rendering:geometricPrecision;
}
body { margin:0; background:var(--cream); color:var(--ink); font-family:var(--font-body); font-size:var(--type-body-size); font-weight:400; line-height:var(--type-body-line); font-synthesis:none; }
a { color:inherit; text-decoration:none; }
button,input,select,textarea { font:inherit; }
.cookieLink{appearance:none;border:0;padding:0;background:transparent;color:inherit;text-align:left;cursor:pointer;font:inherit}
.bookButton { display:inline-flex;align-items:center;gap:30px;border-radius:99px;background:var(--coral);padding:17px 18px 17px 27px;text-transform:uppercase;font-size:var(--type-ui-size);line-height:1.2;letter-spacing:.04em;font-weight:500; }
.bookButton b { display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:white;color:var(--ink); }.bookButton b:before{content:'↗'}
.sectionLabel{text-transform:uppercase;letter-spacing:.08em;font-size:var(--type-label-size);font-weight:500;line-height:var(--type-label-line)}
h1,h2,h3,h4,h5 { font-family:var(--font-display);font-weight:400; }
h1,h2,h3,h4,h5,h6 { margin:.3em 0; }
h1 { font-size:var(--type-title-size);line-height:var(--type-title-line);letter-spacing:-.01em; }
h2 { font-size:var(--type-section-size);line-height:var(--type-section-line);letter-spacing:-.02em; }
h3 { font-size:var(--type-card-size);line-height:var(--type-card-line);letter-spacing:-.01em; }
h4 { font-size:var(--type-subheading-size);line-height:var(--type-subheading-line); }
h5 { font-size:var(--type-minor-heading-size);line-height:1.2; }
h6 { font-family:var(--font-body);font-size:var(--type-eyebrow-size);font-weight:400;line-height:1.2;letter-spacing:.1em;text-transform:uppercase; }
h1 em,h2 i{font-weight:400}
.bookButton.dark{background:var(--ink);color:white;margin-top:15px}
footer{background:var(--ink);color:white;padding:70px 7vw;display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:50px}footer>img{width:230px}footer>div,footer>nav{display:flex;flex-direction:column;gap:13px;font-size:var(--type-footer-size);line-height:1.55}footer strong{font-weight:500}footer small{font-size:var(--type-meta-size);line-height:1.5}
.innerHero{min-height:76svh;background-position:center;background-size:cover;color:white;display:flex;align-items:end;padding:8vw 7vw}.innerHero h1{max-width:1100px;font-size:var(--type-hero-size);line-height:var(--type-hero-line)}
@media(max-width:800px){.bookButton{padding:13px 14px 13px 20px;gap:16px}footer{grid-template-columns:1fr}}
.mapPlaceholder{border:1px solid rgba(255,255,255,.25);min-height:180px;padding:25px;line-height:1.5;display:flex;flex-direction:column;align-items:flex-start;gap:12px}.mapPlaceholder button{border:1px solid rgba(255,255,255,.6);border-radius:99px;background:transparent;color:white;padding:10px 14px;cursor:pointer}
.bookButton{background:var(--brand)}
footer{background:#0a0a0a}footer a:hover{color:#78a6d0}
footer{background:#244f78}.mapPlaceholder{background:rgba(255,255,255,.06)}
.contentCards{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.contentCards>:is(a,article){position:relative;min-height:490px;overflow:hidden;background:#3972a8;color:white}.contentCards img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .5s}.contentCards>:is(a,article):after{content:"";position:absolute;z-index:1;inset:0;background:linear-gradient(0deg,rgba(10,10,10,.66),transparent 62%);pointer-events:none}.contentCards>a:hover img{transform:scale(1.035)}.contentCards>:is(a,article)>.cardContent{position:absolute;z-index:2;left:30px;right:30px;bottom:25px;display:flex;justify-content:space-between;align-items:end}.contentCards h3{font:400 var(--type-card-size)/var(--type-card-line) var(--font-display);letter-spacing:-.01em;max-width:75%;margin:0}.contentCards .cardArrow{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;background:#3972a8}.contentCards .cardArrow:before{content:'→'}.hubGalleryMedia{position:absolute;inset:0;display:grid;grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(2,1fr)}.hubGalleryMedia>a{position:relative;overflow:hidden}.hubCards .hubGalleryMedia img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.hubGalleryMedia.galleryCount3>a:first-child{grid-row:1/3}@media(max-width:800px){.contentCards{grid-template-columns:1fr}.contentCards>:is(a,article){min-height:400px}}
.hubMain{display:flex;flex-direction:column}.hubHero{order:1}.hubIntro{order:2;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(280px,.75fr);gap:7vw;padding:110px 8vw;align-items:start}.hubIntro h2{font-size:var(--type-section-size);line-height:var(--type-section-line);margin:0}.hubIntro p{font-size:var(--type-body-large-size);line-height:var(--type-body-large-line);margin:10px 0}.hubCards{order:3;padding:0 2vw 110px;background:var(--cream)}.hubCards>:is(a,article){min-height:540px}.cardBadge{position:absolute;z-index:3;right:24px;top:24px;background:var(--brand);color:white;padding:10px 14px;border-radius:99px;font-size:var(--type-label-size);font-weight:500;line-height:var(--type-label-line);letter-spacing:.06em}@media(max-width:800px){.hubIntro{grid-template-columns:1fr;padding:75px 24px}.hubCards{padding:0 18px 75px}.hubCards>:is(a,article){min-height:410px}}

.detailPage{min-height:100svh;background:var(--cream);color:var(--ink)}
.detailPage .sectionLabel{color:var(--brand)}
.detailTitle{font-size:var(--type-title-size);line-height:var(--type-title-line);margin:24px 0 0;overflow-wrap:break-word}
.detailTitle span{display:block}
.detailTitle em{font-weight:400;color:var(--brand)}
.packageDetailLayout{display:grid;grid-template-columns:minmax(320px,.82fr) minmax(440px,1.18fr);gap:9vw;padding:190px 8vw 130px;background:var(--cream)}
.packageSummary{position:sticky;top:135px;align-self:start}
.packageRule{height:1px;background:rgba(36,79,120,.28);margin:52px 0 28px}
.packagePrices{margin:0;display:grid;gap:15px}
.packagePrices>div{display:flex;align-items:baseline;justify-content:space-between;gap:26px;border-bottom:1px solid rgba(36,79,120,.18);padding-bottom:15px}
.packagePrices dt{text-transform:uppercase;letter-spacing:.08em;font-size:var(--type-label-size);line-height:var(--type-label-line);font-weight:500}
.packagePrices dd{font:400 var(--type-card-size)/var(--type-card-line) var(--font-display);margin:0;color:#244f78}
.packagePriceNote{margin:18px 0 0;color:var(--ink);font-size:var(--type-meta-size);line-height:1.5;letter-spacing:.04em}
.packageBody{padding-top:33px}
.packageAboutLabel{font:500 var(--type-ui-size)/1.4 var(--font-body);letter-spacing:.06em;color:var(--brand);margin:0 0 24px}
.packageLead{font:400 var(--type-lead-size)/var(--type-lead-line) var(--font-display);margin:0 0 74px;color:var(--ink)}
.packageIncludedTitle{font:400 var(--type-section-size)/var(--type-section-line) var(--font-display);letter-spacing:-.02em;margin:0 0 28px;color:#244f78}
.packageIncluded ul{list-style:none;margin:0;padding:0;border-top:1px solid rgba(36,79,120,.24)}
.packageIncluded li{position:relative;padding:17px 12px 17px 36px;border-bottom:1px solid rgba(36,79,120,.2);font-size:var(--type-body-size);line-height:var(--type-body-line)}
.packageIncluded li:before{content:'→';position:absolute;left:2px;top:17px;color:var(--brand)}
.detailPrimaryAction{display:flex;justify-content:space-between;align-items:center;gap:28px;width:min(100%,370px);margin-top:45px;padding:13px 14px 13px 25px;border-radius:99px;background:var(--brand);color:white;text-transform:uppercase;font-size:var(--type-ui-size);line-height:1.2;font-weight:500;letter-spacing:.04em;transition:transform .2s,background .2s}
.detailPrimaryAction b{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:white;color:#244f78;font-size:16px}
.detailPrimaryAction b:before{content:'↗'}
.detailPrimaryAction:hover{background:#244f78;transform:translateY(-2px)}
.packagePeriod{display:grid;gap:8px;margin-top:64px;padding:29px 30px;background:#244f78;color:white}
.packagePeriod span{text-transform:uppercase;font-size:var(--type-label-size);line-height:var(--type-label-line);font-weight:500;letter-spacing:.08em;color:#bfd4e7}
.packagePeriod strong{font:400 var(--type-subheading-size)/var(--type-subheading-line) var(--font-display)}
.detailMediaGrid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;padding:0 2vw 110px}
.detailMediaGrid img{display:block;width:100%;height:560px;object-fit:cover}

.sportDetailLayout{display:grid;grid-template-columns:minmax(340px,1fr) minmax(380px,.78fr);gap:10vw;padding:190px 8vw 115px;align-items:end;background:var(--cream)}
.sportHeading .detailTitle{max-width:820px}
.sportNarrative{border-left:1px solid rgba(36,79,120,.3);padding-left:42px}
.sportNarrative p{font-size:var(--type-body-large-size);line-height:var(--type-body-large-line);margin:0}
.sportNarrative p+p{margin-top:25px}
.sportGallery{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:0 2vw;background:var(--cream)}
.sportGallery img{display:block;width:100%;height:clamp(390px,43vw,650px);object-fit:cover}
.sportGallery img:nth-child(2){margin-top:58px;height:calc(clamp(390px,43vw,650px) - 58px)}
.sportResources{display:grid;grid-template-columns:minmax(300px,.82fr) minmax(440px,1.18fr);gap:10vw;padding:125px 8vw;background:var(--surface);align-items:end}
.sportResources>.sportFlyers:first-child:last-child{grid-column:1/-1}
.sportContact{display:flex;flex-direction:column;align-items:flex-start;font-style:normal;color:var(--ink)}
.sportContactName{font:400 var(--type-section-size)/var(--type-section-line) var(--font-display);letter-spacing:-.02em;margin:14px 0 26px;color:var(--ink)}
.sportContactName span{font:400 var(--type-body-size)/var(--type-body-line) var(--font-body);letter-spacing:0;color:var(--ink)}
.sportContactLinks{display:flex;flex-direction:column;align-items:flex-start;margin:0}
.sportContact a{margin-top:8px;border-bottom:1px solid rgba(36,79,120,.35);padding-bottom:4px}
.sportContact a:hover{color:var(--brand);border-color:var(--brand)}
.sportFlyers{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.sportFlyers a{min-height:190px;padding:26px;background:#244f78;color:white;display:flex;justify-content:space-between;align-items:flex-end;transition:background .2s,transform .2s}
.sportFlyers h3{font:400 var(--type-card-size)/var(--type-card-line) var(--font-display);margin:0}
.sportFlyers a:nth-child(even){background:var(--brand)}
.sportFlyers a:hover{background:#183f65;transform:translateY(-3px)}
.sportFlyers b{display:grid;place-items:center;flex:0 0 auto;width:42px;height:42px;border:1px solid rgba(255,255,255,.55);border-radius:50%;font:400 16px var(--font-body)}
.sportFlyers b:before{content:'↗'}
.detailPage a:focus-visible{outline:3px solid #0a0a0a;outline-offset:4px}

.mapActions{display:flex;flex-direction:row!important;flex-wrap:wrap;align-items:center;gap:12px!important}
.mapActions a{border-bottom:1px solid rgba(255,255,255,.55);padding-bottom:3px}
.mapFrame{min-height:250px;overflow:hidden;background:#fff}
.mapFrame iframe{display:block;width:100%;height:100%;min-height:250px;border:0}

@media(max-width:950px){
  .packageDetailLayout,.sportDetailLayout,.sportResources{grid-template-columns:1fr;gap:68px;padding-left:6vw;padding-right:6vw}
  .packageSummary{position:static}
  .packageSummary .detailTitle{max-width:700px}
  .packageBody{padding-top:0}
  .sportDetailLayout{align-items:start;background:var(--cream)}
  .sportNarrative{max-width:760px}
  .sportGallery{grid-template-columns:1fr 1fr}
  .sportGallery img{height:540px}
  .sportGallery img:nth-child(2){margin-top:0;height:540px}
  .sportGallery img:last-child{grid-column:1/-1;height:620px}
}

@media(max-width:650px){
  .packageDetailLayout,.sportDetailLayout{padding:145px 22px 82px}
  .packageDetailLayout{gap:54px}
  .packageRule{margin-top:38px}
  .packageLead{margin-bottom:55px}
  .packagePeriod{padding:24px 22px}
  .detailMediaGrid{grid-template-columns:1fr;padding:0 14px 75px}
  .detailMediaGrid img{height:420px}
  .sportDetailLayout{gap:48px}
  .sportNarrative{padding-left:22px}
  .sportGallery{grid-template-columns:1fr;padding:0 14px;gap:9px}
  .sportGallery img,.sportGallery img:nth-child(2),.sportGallery img:last-child{grid-column:auto;height:430px;margin-top:0}
  .sportResources{padding:78px 22px;gap:55px}
  .sportFlyers{grid-template-columns:1fr}
  .sportFlyers a{min-height:155px}
}

/* header */
.vsh_header_header {
  z-index: 30;
  grid-template-columns: minmax(var(--site-logo-width), 1fr) auto;
  column-gap: var(--site-header-gap);
  min-height: 117px;
  padding: 21px var(--site-header-inline) 9px;
  background: var(--surface, #fafbf5);
  color: var(--ink);
  backdrop-filter: blur(14px);
  grid-template-rows: 36px 48px;
  align-items: center;
  row-gap: 3px;
  display: grid;
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  box-shadow: 0 1px #244f781f;
}

.vsh_header_brand {
  grid-area: 1 / 1 / 3;
  place-self: center start;
}

.vsh_header_brand img {
  width: var(--site-logo-width);
  height: auto;
  display: block;
}

.vsh_header_desktopNavigation {
  grid-area: 2 / 2;
  place-self: stretch end;
}

.vsh_header_desktopNavigation > ul {
  justify-content: flex-end;
  align-items: center;
  gap: clamp(0px, .25vw, 4px);
  height: 100%;
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
}

.vsh_header_navigationItem {
  position: relative;
}

.vsh_header_primaryLinkRow {
  align-items: center;
  display: flex;
}

.vsh_header_primaryLink {
  min-height: 44px;
  font-size: var(--type-nav-size);
  letter-spacing: .077em;
  text-transform: uppercase;
  align-items: center;
  padding: 0 clamp(2px, .25vw, 5px);
  font-weight: 400;
  line-height: 1.4;
  transition: color .15s;
  display: flex;
  position: relative;
}

.vsh_header_primaryLink:after {
  background: var(--brand, #3972a8);
  content: "";
  border-radius: 0;
  height: 1px;
  transition: transform .15s;
  position: absolute;
  bottom: 1px;
  left: 5px;
  right: 5px;
  transform: scaleX(0);
}

.vsh_header_navigationItem:hover .vsh_header_primaryLink, .vsh_header_navigationItem[data-section-current="true"] .vsh_header_primaryLink, .vsh_header_primaryLink:focus-visible {
  color: #244f78;
}

.vsh_header_navigationItem:hover .vsh_header_primaryLink:after, .vsh_header_navigationItem[data-section-current="true"] .vsh_header_primaryLink:after, .vsh_header_primaryLink:focus-visible:after {
  transform: scaleX(1);
}

.vsh_header_bookingLink {
  color: #fff;
  min-height: 44px;
  font-size: var(--type-nav-size);
  letter-spacing: 0;
  background: #0a0a0a;
  border-radius: 4px;
  margin-inline: 3px;
  padding-inline: clamp(14px, 1.15vw, 22px);
  font-weight: 700;
  line-height: 1.4;
}

.vsh_header_bookingLink:after {
  display: none;
}

.vsh_header_bookingLink:hover, .vsh_header_bookingLink:focus-visible {
  color: #fff;
  background: #2a2a2a;
}

.vsh_header_submenuToggle {
  color: currentColor;
  cursor: pointer;
  background: none;
  border: 0;
  place-items: center;
  width: 44px;
  height: 44px;
  margin-left: 0;
  padding-left: 8px;
  display: grid;
}

.vsh_header_disclosureButton {
  color: inherit;
  cursor: pointer;
  font-family: var(--font-body);
  background: none;
  border: 0;
  gap: 12px;
}

.vsh_header_chevron {
  border-bottom: 1.5px solid;
  border-right: 1.5px solid;
  width: 8px;
  height: 8px;
  transition: transform .15s;
  display: block;
  transform: translateY(-2px)rotate(45deg);
}

[aria-expanded="true"] > .vsh_header_chevron {
  transform: translateY(2px)rotate(225deg);
}

.vsh_header_dropdown {
  background: var(--surface, #fafbf5);
  width: max-content;
  min-width: 250px;
  max-width: 330px;
  color: var(--ink);
  border: 1px solid #244f7826;
  margin: 0;
  padding: 12px;
  list-style: none;
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
  box-shadow: 0 20px 48px #0a0a0a2e;
}

.vsh_header_navigationItem:nth-last-child(-n+3) .vsh_header_dropdown {
  left: auto;
  right: 0;
  transform: none;
}

.vsh_header_dropdown[hidden], .vsh_header_mobileSubmenu[hidden] {
  display: none;
}

.vsh_header_dropdown a {
  min-height: 44px;
  font-size: var(--type-nav-size);
  letter-spacing: .077em;
  text-transform: uppercase;
  border-radius: 4px;
  align-items: center;
  padding: 9px 13px;
  font-weight: 400;
  line-height: 1.4;
  display: flex;
}

.vsh_header_dropdown a:hover, .vsh_header_dropdown a:focus-visible, .vsh_header_dropdown a[aria-current="page"] {
  color: #244f78;
  background: #3972a81f;
}

.vsh_header_languageNavigation {
  background: #edf1ef;
  border-radius: 999px;
  grid-area: 1 / 2;
  justify-self: end;
  align-items: center;
  gap: 2px;
  min-height: 36px;
  padding: 3px;
  display: flex;
  box-shadow: inset 0 0 0 1px #244f781a;
}

.vsh_header_languageNavigation a {
  min-width: 35px;
  min-height: 30px;
  color: var(--ink);
  font-size: var(--type-language-size);
  letter-spacing: .077em;
  border-radius: 999px;
  place-items: center;
  font-weight: 400;
  line-height: 1.4;
  text-decoration: none;
  transition: color .16s, background .16s, box-shadow .16s;
  display: grid;
}

.vsh_header_languageNavigation a:hover, .vsh_header_languageNavigation a:focus-visible {
  color: #244f78;
  background: #ffffff9e;
}

.vsh_header_languageNavigation a[aria-current="page"] {
  color: #244f78;
  background: #fff;
  font-weight: 700;
  box-shadow: 0 2px 8px #0a0a0a1f;
}

.vsh_header_menuButton, .vsh_header_menuClose {
  width: 54px;
  height: 54px;
  color: var(--ink);
  cursor: pointer;
  background: none;
  border: 1px solid #0a0a0a70;
  border-radius: 50%;
  place-content: center;
  display: none;
}

.vsh_header_menuButton {
  gap: 6px;
}

.vsh_header_menuButton > span {
  background: currentColor;
  width: 20px;
  height: 1px;
  display: block;
}

.vsh_header_mobileBackdrop {
  z-index: 50;
  background: #0a0a0a7a;
  justify-content: flex-end;
  display: flex;
  position: fixed;
  inset: 0;
}

.vsh_header_mobilePanel {
  background: var(--surface, #fafbf5);
  width: min(100%, 560px);
  height: 100%;
  color: var(--ink);
  padding: 22px clamp(22px, 6vw, 48px) 42px;
  overflow-y: auto;
}

.vsh_header_mobilePanelHeader {
  border-bottom: 1px solid #244f783d;
  justify-content: space-between;
  align-items: center;
  gap: 20px;
  padding-bottom: 28px;
  display: flex;
}

.vsh_header_mobilePanelHeader img {
  width: min(240px, 62vw);
}

.vsh_header_menuClose {
  color: var(--ink);
  border-color: #0a0a0a70;
  flex: none;
  font-size: 30px;
  display: grid;
}

.vsh_header_mobileNavigationList, .vsh_header_mobileSubmenu {
  margin: 0;
  padding: 0;
  list-style: none;
}

.vsh_header_mobileNavigationList {
  padding-block: 20px;
}

.vsh_header_mobileNavigationList > li {
  border-bottom: 1px solid #244f782e;
}

.vsh_header_mobilePrimaryRow {
  align-items: center;
  display: flex;
}

.vsh_header_mobilePrimaryRow > a {
  min-height: 64px;
  font: 400 var(--type-mobile-menu-size) / var(--type-mobile-menu-line) var(--font-display);
  flex: auto;
  align-items: center;
  display: flex;
}

.vsh_header_mobilePrimaryRow > button {
  color: #244f78;
  background: none;
  border: 1px solid #244f7857;
  border-radius: 50%;
  flex: none;
  place-items: center;
  width: 52px;
  height: 52px;
  display: grid;
}

.vsh_header_mobilePrimaryRow > .vsh_header_mobileDisclosureButton {
  width: 100%;
  height: auto;
  min-height: 64px;
  color: inherit;
  cursor: pointer;
  font: 400 var(--type-mobile-menu-size) / var(--type-mobile-menu-line) var(--font-display);
  background: none;
  border: 0;
  border-radius: 0;
  flex: auto;
  justify-content: space-between;
  padding: 0;
  display: flex;
}

.vsh_header_mobileBookingLink {
  color: #244f78;
  font-family: var(--font-body);
  font-size: var(--type-ui-size);
  letter-spacing: .02em;
  text-transform: uppercase;
  font-weight: 700;
  line-height: 1.4;
}

.vsh_header_mobileNavigationList > li[data-section-current="true"] > .vsh_header_mobilePrimaryRow > a, .vsh_header_mobileNavigationList > li[data-section-current="true"] > .vsh_header_mobilePrimaryRow > .vsh_header_mobileDisclosureButton {
  color: #244f78;
}

.vsh_header_mobileSubmenu {
  padding: 0 0 18px 16px;
}

.vsh_header_mobileSubmenu a {
  min-height: 46px;
  font-size: var(--type-nav-size);
  letter-spacing: .083em;
  text-transform: uppercase;
  border-left: 2px solid #244f784d;
  align-items: center;
  padding: 8px 16px;
  font-weight: 400;
  line-height: 1.4;
  display: flex;
}

.vsh_header_mobileSubmenu a:hover, .vsh_header_mobileSubmenu a:focus-visible, .vsh_header_mobileSubmenu a[aria-current="page"] {
  background: #3972a81f;
  border-color: #244f78;
}

.vsh_header_mobileLanguage {
  background: #edf1ef;
  border-radius: 999px;
  align-items: center;
  gap: 2px;
  width: fit-content;
  margin-top: 8px;
  padding: 3px;
  display: flex;
  box-shadow: inset 0 0 0 1px #244f781a;
}

.vsh_header_mobileLanguage > a {
  min-width: 40px;
  min-height: 34px;
  color: var(--ink);
  font-size: var(--type-language-size);
  letter-spacing: .077em;
  border-radius: 999px;
  place-items: center;
  font-weight: 400;
  line-height: 1.4;
  text-decoration: none;
  display: grid;
}

.vsh_header_mobileLanguage > a[aria-current="page"] {
  color: #244f78;
  background: #fff;
  font-weight: 700;
  box-shadow: 0 2px 8px #0a0a0a1f;
}

.vsh_header_header :is(a, button):focus-visible {
  outline-offset: 3px;
  outline: 3px solid #0a0a0a;
}

.vsh_header_mobilePanel :is(a, button):focus-visible {
  outline-color: #0a0a0a;
}

@media (width <= 900px) {
  .vsh_header_header {
    backdrop-filter: none;
    grid-template-rows: 1fr;
    grid-template-columns: 1fr auto;
    min-height: 88px;
    padding: 17px 18px;
  }

  .vsh_header_brand {
    grid-area: 1 / 1;
  }

  .vsh_header_brand img {
    width: 155px;
  }

  .vsh_header_desktopNavigation, .vsh_header_languageNavigation {
    display: none;
  }

  .vsh_header_menuButton {
    grid-area: 1 / 2;
    display: grid;
  }
}

@media (prefers-reduced-motion: reduce) {
  .vsh_header_primaryLink, .vsh_header_primaryLink:after, .vsh_header_chevron {
    transition: none;
  }
}

/* booking */
.vsh_booking_backdrop {
  z-index: 60;
  background: #0a0a0a2e;
  padding: 12px 20px;
  animation: .16s ease-out vsh_booking_backdropIn;
  position: fixed;
  inset: 117px 0 0;
}

.vsh_booking_backdrop[hidden] {
  display: none !important;
}

.vsh_booking_panel {
  background: var(--surface);
  width: min(100%, 1100px);
  color: var(--ink);
  border: 1px solid #244f7829;
  border-radius: 12px;
  margin-inline: auto;
  animation: .2s ease-out vsh_booking_drawerDown;
  overflow: hidden;
  box-shadow: 0 24px 60px #122b423d;
}

.vsh_booking_drawerHeader {
  border-bottom: 1px solid #244f7824;
  justify-content: space-between;
  align-items: center;
  gap: 24px;
  min-height: 62px;
  padding: 8px 12px 8px 20px;
  display: flex;
}

.vsh_booking_drawerHeader h2 {
  color: #244f78;
  font: 400 var(--type-card-size) / var(--type-card-line) var(--font-display);
  margin: 0;
}

.vsh_booking_closeButton {
  color: #244f78;
  cursor: pointer;
  background: none;
  border: 1px solid #244f785c;
  border-radius: 50%;
  flex: none;
  place-items: center;
  width: 44px;
  height: 44px;
  font-size: 25px;
  line-height: 1;
  display: grid;
}

.vsh_booking_bookingForm {
  background: var(--surface);
  border: 1px solid #244f7829;
  border-radius: 8px;
  grid-template-columns: repeat(2, minmax(150px, 1fr)) minmax(100px, .62fr) minmax(130px, .82fr) minmax(190px, 1.18fr);
  margin: 14px;
  display: grid;
  overflow: hidden;
}

.vsh_booking_field {
  border-right: 1px solid #244f7824;
  flex-direction: column;
  justify-content: center;
  gap: 3px;
  min-width: 0;
  min-height: 62px;
  padding: 7px 12px;
  display: flex;
}

.vsh_booking_field > span {
  color: #244f78;
  font-size: var(--type-label-size);
  font-weight: 600;
  line-height: var(--type-label-line);
  letter-spacing: .05em;
  text-transform: uppercase;
  align-items: center;
  gap: 7px;
  display: flex;
}

.vsh_booking_field svg, .vsh_booking_directBooking svg {
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.5px;
  flex: none;
  width: 17px;
  height: 17px;
}

.vsh_booking_field input {
  width: 100%;
  min-width: 0;
  height: 26px;
  color: var(--ink);
  font-size: var(--type-form-size);
  background: none;
  border: 0;
  padding: 0;
  line-height: 1.3;
}

.vsh_booking_field input:focus {
  outline: 0;
}

.vsh_booking_field:focus-within {
  background: #3972a80f;
}

.vsh_booking_submitButton {
  color: #fff;
  cursor: pointer;
  min-width: 0;
  min-height: 60px;
  font-size: var(--type-ui-size);
  text-align: left;
  background: #244f78;
  border: 0;
  justify-content: space-between;
  align-items: center;
  gap: 18px;
  padding: 9px 18px;
  font-weight: 700;
  line-height: 1.2;
  display: flex;
}

.vsh_booking_submitButton:hover, .vsh_booking_submitButton:focus-visible {
  background: #183f65;
}

.vsh_booking_directBooking {
  grid-template-columns: minmax(180px, 1fr) repeat(2, minmax(210px, .8fr));
  align-items: stretch;
  gap: 8px;
  padding: 0 14px 14px;
  display: grid;
}

.vsh_booking_directBooking > span {
  color: #244f78;
  font-size: var(--type-label-size);
  font-weight: 600;
  line-height: var(--type-label-line);
  letter-spacing: .04em;
  text-transform: uppercase;
  align-items: center;
  padding-inline: 8px;
  display: flex;
}

.vsh_booking_directBooking a {
  color: #173f65;
  border: 1px solid #244f782e;
  border-radius: 7px;
  grid-template-columns: 22px minmax(0, 1fr);
  align-items: center;
  gap: 10px;
  min-height: 52px;
  padding: 8px 12px;
  display: grid;
}

.vsh_booking_directBooking a:hover, .vsh_booking_directBooking a:focus-visible {
  background: #3972a812;
}

.vsh_booking_directBooking a > span {
  gap: 1px;
  display: grid;
}

.vsh_booking_directBooking strong {
  font-size: var(--type-ui-size);
  line-height: 1.2;
}

.vsh_booking_directBooking small {
  color: #0a0a0aad;
  font-size: var(--type-small-size);
  line-height: 1.3;
}

.vsh_booking_srOnly {
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
  width: 1px;
  height: 1px;
  padding: 0;
  position: absolute;
  overflow: hidden;
}

.vsh_booking_panel :is(a, button, input):focus-visible {
  outline-offset: 2px;
  outline: 3px solid #0a0a0a;
}

@media (width <= 900px) {
  .vsh_booking_backdrop {
    inset: 88px 0 0;
  }

  .vsh_booking_bookingForm {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .vsh_booking_field:nth-of-type(2n) {
    border-right: 0;
  }

  .vsh_booking_field:nth-of-type(n+3) {
    border-top: 1px solid #244f7824;
  }

  .vsh_booking_submitButton {
    grid-column: 1 / -1;
  }

  .vsh_booking_directBooking {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .vsh_booking_directBooking > span {
    grid-column: 1 / -1;
    min-height: 32px;
  }
}

@media (width <= 640px) {
  .vsh_booking_backdrop {
    align-items: flex-end;
    padding: 0;
    display: flex;
    inset: 0;
  }

  .vsh_booking_panel {
    border-radius: 14px 14px 0 0;
    width: 100%;
    max-height: calc(100dvh - 20px);
    margin: 0;
    animation-name: vsh_booking_drawerUp;
    overflow-y: auto;
  }

  .vsh_booking_drawerHeader {
    z-index: 2;
    background: var(--surface);
    position: sticky;
    top: 0;
  }

  .vsh_booking_bookingForm {
    margin: 10px;
  }

  .vsh_booking_field {
    min-height: 58px;
    padding: 6px 9px;
  }

  .vsh_booking_directBooking {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    padding: 0 10px 12px;
  }

  .vsh_booking_directBooking > span {
    grid-column: 1 / -1;
    min-height: 32px;
    padding-inline: 2px;
  }

  .vsh_booking_directBooking a {
    grid-template-columns: 19px minmax(0, 1fr);
    min-width: 0;
    padding-inline: 9px;
  }

  .vsh_booking_directBooking a small {
    overflow-wrap: anywhere;
  }
}

@media (prefers-reduced-motion: reduce) {
  .vsh_booking_backdrop, .vsh_booking_panel {
    animation: none;
  }
}

@keyframes vsh_booking_backdropIn {
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}

@keyframes vsh_booking_drawerDown {
  from {
    opacity: 0;
    transform: translateY(-12px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes vsh_booking_drawerUp {
  from {
    opacity: 0;
    transform: translateY(24px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* footer */
.vsh_footer_footer {
  color: #fff;
  background: #244f78;
  margin: 0;
  padding: 0;
  display: block;
}

.vsh_footer_inner {
  gap: 16px;
  width: min(100% - 40px, 1360px);
  margin-inline: auto;
  padding: 24px 0 12px;
  display: grid;
}

.vsh_footer_logo {
  width: 160px;
  height: auto;
  display: block;
}

.vsh_footer_navigation {
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 24px;
  display: grid;
}

.vsh_footer_navigation section {
  flex-direction: column;
  align-items: flex-start;
  gap: 3px;
  min-width: 0;
  display: flex;
}

.vsh_footer_navigation h2 {
  color: #fff;
  font: 600 13px / 1.3 var(--font-body);
  margin: 0 0 2px;
}

.vsh_footer_navigation a, .vsh_footer_legal a, .vsh_footer_legal button {
  color: #ffffffdb;
  font-family: var(--font-body);
  text-align: left;
  background: none;
  border: 0;
  font-size: 12px;
  line-height: 1.45;
  text-decoration: none;
}

.vsh_footer_navigation a:hover, .vsh_footer_legal a:hover, .vsh_footer_legal button:hover {
  color: #fff;
  text-underline-offset: 3px;
  text-decoration: underline;
}

.vsh_footer_base {
  border-top: 1px solid #ffffff2e;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 18px;
  padding-top: 11px;
  display: grid;
}

.vsh_footer_base small {
  color: #ffffffc7;
  font-size: 11px;
}

.vsh_footer_legal {
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 8px 18px;
  display: flex;
}

.vsh_footer_legal button {
  cursor: pointer;
  padding: 0;
}

@media (width <= 1080px) {
  .vsh_footer_navigation {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (width <= 760px) {
  .vsh_footer_inner {
    width: min(100% - 28px, 680px);
  }

  .vsh_footer_navigation {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .vsh_footer_base {
    grid-template-columns: 1fr auto;
  }

  .vsh_footer_legal {
    grid-area: 1 / 1 / auto / -1;
    justify-content: flex-start;
  }
}

@media (width <= 520px) {
  .vsh_footer_navigation, .vsh_footer_base {
    grid-template-columns: 1fr;
  }

  .vsh_footer_legal {
    grid-area: auto;
  }
}

/* home */
.vsh_home_page {
  background: var(--surface);
  min-width: 0;
  color: var(--ink);
  font-family: var(--font-body);
  overflow-x: clip;
}

.vsh_home_page :where(a, button, input):focus-visible {
  outline-offset: 3px;
  outline: 3px solid #0a0a0a;
}

.vsh_home_skipLink {
  z-index: 100;
  color: #fff;
  background: #0a0a0a;
  padding: 12px 18px;
  position: fixed;
  top: 12px;
  left: 12px;
  transform: translateY(-150%);
}

.vsh_home_skipLink:focus {
  transform: translateY(0);
}

.vsh_home_srOnly {
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
  width: 1px;
  height: 1px;
  padding: 0;
  position: absolute;
  overflow: hidden;
}

.vsh_home_mainContent {
  padding-top: 117px;
}

.vsh_home_hero {
  background: var(--surface);
  grid-template-columns: minmax(300px, .76fr) minmax(0, 1.24fr);
  width: min(100% - 40px, 1180px);
  margin-inline: auto;
  display: grid;
}

.vsh_home_heroCopy {
  background: var(--surface, #fafbf5);
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  min-width: 0;
  padding: clamp(30px, 3vw, 42px);
  display: flex;
}

.vsh_home_heroEyebrow {
  color: var(--brand);
  font-family: var(--font-body);
  font-size: var(--type-label-size);
  letter-spacing: .08em;
  margin-bottom: 14px;
  font-weight: 600;
  line-height: 1.2;
}

.vsh_home_heroTitle {
  color: #244f78;
  font: 400 var(--type-home-hero-size) / var(--type-home-hero-line) var(--font-display);
  letter-spacing: -.045em;
  overflow-wrap: anywhere;
  margin: 0;
}

.vsh_home_heroTitle span {
  white-space: normal;
  display: block;
}

.vsh_home_heroCopy p {
  max-width: 35ch;
  font-size: var(--type-body-size);
  line-height: var(--type-body-line);
  margin: 17px 0 0;
}

.vsh_home_heroActions {
  flex-wrap: nowrap;
  align-items: center;
  gap: 8px;
  margin-top: 23px;
  display: flex;
}

.vsh_home_heroPrimaryAction, .vsh_home_heroSecondaryAction {
  min-height: 44px;
  font-size: var(--type-label-size);
  white-space: nowrap;
  border-radius: 4px;
  justify-content: center;
  align-items: center;
  gap: 12px;
  padding: 8px 10px;
  font-weight: 600;
  display: inline-flex;
}

.vsh_home_heroPrimaryAction {
  color: #fff;
  background: #244f78;
  border: 1px solid #244f78;
}

.vsh_home_heroSecondaryAction {
  color: #244f78;
  background: none;
  border: 1px solid #244f78;
}

.vsh_home_heroMedia {
  aspect-ratio: 3 / 2;
  background: var(--surface);
  border-radius: 8px;
  align-self: center;
  min-width: 0;
  position: relative;
  overflow: hidden;
}

.vsh_home_heroMediaLink {
  border-radius: inherit;
  width: 100%;
  height: 100%;
  display: block;
  overflow: hidden;
}

.vsh_home_heroMedia img {
  object-fit: cover;
  object-position: center;
  border-radius: inherit;
  width: 100%;
  height: 100%;
  display: block;
}

.vsh_home_heroCopy, .vsh_home_heroMediaLink {
  animation: .42s ease-out both vsh_home_heroCampaignReveal;
}

.vsh_home_heroMediaLink img {
  transition: transform .5s;
}

.vsh_home_heroMediaLink:hover img {
  transform: scale(1.015);
}

.vsh_home_heroArrowControls {
  z-index: 2;
  pointer-events: none;
  position: absolute;
  inset: 0;
}

.vsh_home_heroArrowControls button {
  color: #fff;
  cursor: pointer;
  opacity: 0;
  pointer-events: auto;
  background: none;
  border: 0;
  place-items: center;
  width: 44px;
  height: 64px;
  padding: 0;
  transition: opacity .18s, transform .18s;
  display: grid;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
}

.vsh_home_heroPrevious {
  left: 8px;
}

.vsh_home_heroNext {
  right: 8px;
}

.vsh_home_heroArrowControls button svg {
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 2px;
  width: 31px;
  height: 31px;
}

.vsh_home_heroMedia:hover .vsh_home_heroArrowControls button, .vsh_home_heroArrowControls:focus-within button {
  opacity: 1;
}

.vsh_home_heroArrowControls button:hover, .vsh_home_heroArrowControls button:focus-visible {
  opacity: 1;
  transform: translateY(-50%)scale(1.08);
}

.vsh_home_heroIndicators {
  z-index: 2;
  align-items: center;
  display: flex;
  position: absolute;
  bottom: 10px;
  left: 50%;
  transform: translateX(-50%);
}

.vsh_home_heroIndicators button {
  cursor: pointer;
  background: none;
  border: 0;
  border-radius: 999px;
  place-items: center;
  width: 28px;
  height: 32px;
  padding: 0;
  display: grid;
}

.vsh_home_heroIndicators button span {
  background: #244f787a;
  border: 1px solid #ffffffdb;
  border-radius: 50%;
  width: 7px;
  height: 7px;
  transition: width .18s, border-radius .18s, background-color .18s;
  display: block;
  box-shadow: 0 1px 5px #091e314d;
}

.vsh_home_heroIndicators .vsh_home_heroIndicatorActive span {
  background: #fff;
  border-radius: 99px;
  width: 19px;
}

.vsh_home_heroPause {
  z-index: 3;
  color: #fff;
  cursor: pointer;
  opacity: 0;
  background: #0827419e;
  border: 0;
  border-radius: 8px;
  place-items: center;
  width: 32px;
  height: 32px;
  padding: 0;
  transition: opacity .16s, background-color .16s;
  display: grid;
  position: absolute;
  bottom: 10px;
  right: 12px;
}

.vsh_home_heroPause svg {
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 2px;
  width: 16px;
  height: 16px;
}

.vsh_home_heroPause svg path[d*="Z"] {
  fill: currentColor;
  stroke: none;
}

.vsh_home_heroMedia:hover .vsh_home_heroPause, .vsh_home_heroPause:focus-visible, .vsh_home_heroPause[aria-pressed="true"] {
  opacity: 1;
}

.vsh_home_heroPause:hover, .vsh_home_heroPause:focus-visible {
  background: #082741d6;
}

@media (hover: none), (pointer: coarse) {
  .vsh_home_heroArrowControls button, .vsh_home_heroPause {
    opacity: .88;
  }
}

@keyframes vsh_home_heroCampaignReveal {
  from {
    opacity: .68;
  }

  to {
    opacity: 1;
  }
}

.vsh_home_bookingPanel {
  z-index: 3;
  margin-top: -20px;
  background: var(--surface);
  border: 1px solid #244f781a;
  border-radius: 12px;
  grid-template-columns: minmax(150px, 1fr) minmax(150px, 1fr) minmax(92px, .65fr) minmax(96px, .7fr) minmax(190px, 1.35fr);
  gap: 0;
  width: min(100% - 48px, 860px);
  margin-inline: auto;
  padding: 6px 8px;
  display: grid;
  position: relative;
  box-shadow: 0 12px 32px #122b421f;
}

.vsh_home_bookingPanel > label {
  background: none;
  border: 0;
  border-right: 1px solid #244f7824;
  flex-direction: column;
  justify-content: center;
  gap: 2px;
  min-width: 0;
  min-height: 54px;
  padding: 5px 12px;
  display: flex;
}

.vsh_home_bookingPanel > label[hidden] {
  display: none;
}

.vsh_home_bookingPanel > .vsh_home_promoField {
  border-top: 0;
  border-right: 1px solid #244f7824;
  grid-area: 1 / 4;
  min-height: 54px;
  margin-top: 0;
  padding: 5px 9px;
}

.vsh_home_bookingPanel:has(.vsh_home_promoField:not([hidden])) .vsh_home_bookingPromoShortcut {
  display: none;
}

.vsh_home_bookingPanel > label > span {
  color: #244f78;
  font-size: var(--type-label-size);
  font-weight: 600;
  line-height: var(--type-label-line);
  letter-spacing: .06em;
  text-transform: uppercase;
  align-items: center;
  gap: 7px;
  display: flex;
}

.vsh_home_bookingFieldLabel svg {
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.5px;
  width: 16px;
  height: 16px;
}

.vsh_home_bookingPanel input:not([type="hidden"]) {
  color: #0a0a0a;
  width: 100%;
  min-width: 0;
  height: 24px;
  font-size: var(--type-form-size);
  background: none;
  border: 0;
  border-radius: 0;
  padding: 0;
  line-height: 1.3;
}

.vsh_home_bookingPanel input:not([type="hidden"]):focus {
  outline: 0;
}

.vsh_home_primaryAction {
  color: #fff;
  cursor: pointer;
  min-height: 48px;
  font-size: var(--type-ui-size);
  text-align: center;
  background: #244f78;
  border: 1px solid #244f78;
  border-radius: 5px;
  justify-content: center;
  align-items: center;
  gap: 20px;
  font-weight: 600;
  line-height: 1.25;
  transition: background .16s, color .16s;
  display: inline-flex;
}

.vsh_home_bookingActions {
  grid-area: 1 / 5;
  align-items: center;
  min-width: 0;
  padding-left: 8px;
  display: flex;
  position: relative;
}

.vsh_home_bookingPromoShortcut {
  color: #244f78;
  cursor: pointer;
  min-width: 0;
  min-height: 44px;
  font-size: var(--type-small-size);
  background: none;
  border: 0;
  border-right: 1px solid #244f7824;
  grid-area: 1 / 4;
  justify-content: center;
  align-items: center;
  gap: 7px;
  padding: 6px 8px;
  font-weight: 600;
  line-height: 1.2;
  display: inline-flex;
}

.vsh_home_bookingPromoShortcut svg {
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.5px;
  flex: none;
  width: 17px;
  height: 17px;
}

.vsh_home_bookingPromoShortcut:hover {
  background: #244f780f;
}

.vsh_home_bookingSplitButton {
  background: #244f78;
  border: 1px solid #244f78;
  border-radius: 5px;
  grid-template-columns: minmax(0, 1fr) 44px;
  width: 100%;
  min-height: 48px;
  display: grid;
  overflow: hidden;
}

.vsh_home_bookingSplitButton button {
  color: #fff;
  cursor: pointer;
  background: #244f78;
  border: 0;
  min-height: 44px;
}

.vsh_home_bookingSubmit {
  min-width: 0;
  font-size: var(--type-ui-size);
  text-align: center;
  justify-content: center;
  align-items: center;
  gap: 14px;
  padding: 8px 14px;
  font-weight: 600;
  line-height: 1.2;
  display: inline-flex;
}

.vsh_home_bookingOptionsToggle {
  justify-content: center;
  align-items: center;
  padding: 0;
  display: inline-flex;
  border-left: 1px solid #ffffff57 !important;
}

.vsh_home_bookingChevron {
  border-bottom: 1.5px solid;
  border-right: 1.5px solid;
  width: 8px;
  height: 8px;
  transition: transform .16s;
  transform: translateY(-2px)rotate(45deg);
}

.vsh_home_bookingOptionsToggle[aria-expanded="true"] .vsh_home_bookingChevron {
  transform: translateY(2px)rotate(225deg);
}

.vsh_home_bookingOptionsMenu {
  z-index: 8;
  background: var(--surface);
  border: 1px solid #244f7824;
  border-radius: 10px;
  width: min(310px, 100vw - 32px);
  padding: 6px;
  display: grid;
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  box-shadow: 0 16px 34px #122b422e;
}

.vsh_home_bookingOptionsMenu[hidden] {
  display: none;
}

.vsh_home_bookingOptionsMenu > a, .vsh_home_bookingOptionsMenu > button {
  color: #173f65;
  cursor: pointer;
  width: 100%;
  min-height: 48px;
  font: inherit;
  text-align: left;
  background: none;
  border: 0;
  border-radius: 6px;
  grid-template-columns: 22px minmax(0, 1fr);
  align-items: center;
  gap: 11px;
  padding: 8px 10px;
  text-decoration: none;
  display: grid;
}

.vsh_home_bookingOptionsMenu > a:hover, .vsh_home_bookingOptionsMenu > button:hover {
  background: #244f7812;
}

.vsh_home_bookingOptionsMenu svg {
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.5px;
  width: 20px;
  height: 20px;
}

.vsh_home_bookingOptionsMenu span {
  gap: 1px;
  display: grid;
}

.vsh_home_bookingOptionsMenu strong {
  font-size: var(--type-ui-size);
  line-height: 1.25;
}

.vsh_home_bookingOptionsMenu small {
  color: var(--muted);
  font-size: var(--type-small-size);
  line-height: 1.35;
}

.vsh_home_bookingSplitButton button:hover, .vsh_home_primaryAction:hover {
  background: #183f65;
}

.vsh_home_benefitStrip {
  z-index: 2;
  background: var(--surface);
  border-radius: 12px;
  width: min(100% - 48px, 1000px);
  margin-inline: auto;
  padding: 14px 0 12px;
  position: relative;
  transform: translateY(-5px);
  box-shadow: 0 14px 24px -18px #122b4247;
}

.vsh_home_benefitList {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
}

.vsh_home_benefitItem {
  grid-template-columns: 28px minmax(0, 1fr);
  align-items: center;
  gap: 7px;
  min-width: 0;
  padding: 0 12px;
  display: grid;
}

.vsh_home_benefitItem + .vsh_home_benefitItem {
  border-left: 1px solid #244f7829;
}

.vsh_home_benefitItem svg {
  fill: none;
  filter: drop-shadow(0 3px 3px #244f782e);
  stroke: #244f78;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.5px;
  width: 26px;
  height: 26px;
}

.vsh_home_benefitItem strong {
  color: #243343;
  font: 600 var(--type-meta-size) / 1.25 var(--font-body);
}

.vsh_home_facilities {
  background: var(--surface);
  width: min(100% - 64px, 1200px);
  margin-inline: auto;
  padding: 26px 0 0;
}

.vsh_home_sectionHeader {
  text-align: center;
  justify-items: center;
  max-width: 900px;
  margin: 0 auto 24px;
  display: grid;
  position: relative;
}

.vsh_home_sectionHeader h2 {
  color: #173d67;
  max-width: 22ch;
  font: 400 var(--type-card-size) / var(--type-card-line) var(--font-display);
  letter-spacing: -.035em;
  margin: 0;
}

.vsh_home_sectionHeader p {
  color: #30363a;
  font-size: var(--type-ui-size);
  margin: 7px 0 0;
  line-height: 1.45;
}

.vsh_home_movementGrid, .vsh_home_informationList {
  margin: 0;
  padding: 0;
  list-style: none;
}

.vsh_home_movementGrid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
  display: grid;
}

.vsh_home_movementItem {
  min-width: 0;
  display: flex;
}

.vsh_home_movementCard {
  background: #fffdf9;
  border: 1px solid #244f7824;
  border-radius: 14px;
  flex-direction: column;
  width: 100%;
  min-width: 0;
  height: 100%;
  transition: box-shadow .18s, transform .18s;
  display: flex;
  position: relative;
  overflow: hidden;
  box-shadow: 0 9px 22px #23303a1c;
}

.vsh_home_movementCard:hover {
  transform: translateY(-2px);
  box-shadow: 0 13px 28px #23303a26;
}

.vsh_home_movementMedia, .vsh_home_movementIllustration {
  aspect-ratio: 16 / 7;
  background: #edf2ef;
  flex: none;
  display: block;
  overflow: hidden;
}

.vsh_home_movementMedia img {
  object-fit: cover;
  width: 100%;
  height: 100%;
  transition: transform .28s;
  display: block;
}

.vsh_home_movementCard:hover .vsh_home_movementMedia img {
  transform: scale(1.025);
}

.vsh_home_movementIllustration {
  background: radial-gradient(circle at 25% 25%, #ffffffe6, #0000 34%), linear-gradient(135deg, #eef3f0, #f8f8f2);
  place-items: center;
  display: grid;
}

.vsh_home_movementIllustration > svg {
  fill: none;
  stroke: #244f78;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.15px;
  width: 82px;
  height: 82px;
}

.vsh_home_movementBody {
  flex: 1;
  grid-template-rows: auto auto 1fr auto;
  grid-template-columns: 54px minmax(0, 1fr);
  align-content: start;
  align-items: start;
  column-gap: 14px;
  min-height: 156px;
  padding: 15px 16px 16px;
  display: grid;
  position: relative;
}

.vsh_home_movementIcon {
  color: #244f78;
  background: #f8f4e9;
  border: 1px solid #244f7826;
  border-radius: 50%;
  grid-area: 1 / 1 / 3;
  place-items: center;
  width: 52px;
  height: 52px;
  display: grid;
  position: relative;
  box-shadow: inset 0 0 0 4px #ffffff8c;
}

.vsh_home_movementIcon svg {
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.6px;
  width: 28px;
  height: 28px;
}

.vsh_home_movementBody h3 {
  color: #173d67;
  font: 400 var(--type-subheading-size) / var(--type-subheading-line) var(--font-display);
  letter-spacing: -.025em;
  grid-area: 1 / 2;
  margin: 0 0 2px;
}

.vsh_home_movementBody p {
  color: #4a5055;
  grid-area: 2 / 2;
  margin: 2px 0 0;
  font-size: 13px;
  line-height: 1.38;
}

.vsh_home_movementActions {
  flex-wrap: wrap;
  grid-area: 4 / 1 / auto / -1;
  align-items: center;
  gap: 9px;
  width: 100%;
  margin-top: auto;
  padding-top: 15px;
  display: flex;
}

.vsh_home_movementAction, .vsh_home_movementSecondaryAction {
  color: #fff;
  background: #244f78;
  border: 1px solid #244f78;
  border-radius: 5px;
  justify-content: center;
  align-items: center;
  gap: 8px;
  min-height: 44px;
  padding: 8px 15px;
  font-size: 13px;
  font-weight: 600;
  line-height: 1.2;
  transition: background .16s, border-color .16s, color .16s;
  display: inline-flex;
}

.vsh_home_movementAction svg, .vsh_home_movementSecondaryAction svg {
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.6px;
  flex: 0 0 18px;
  width: 18px;
  height: 18px;
}

.vsh_home_movementAction:hover {
  color: #fff;
  background: #173d67;
  border-color: #173d67;
}

.vsh_home_movementSecondaryAction {
  color: #244f78;
  background: none;
  border-color: #244f7861;
}

.vsh_home_movementSecondaryAction:hover {
  color: #173d67;
  background: #244f780f;
  border-color: #244f78;
}

.vsh_home_comingSoon {
  color: #6f6657;
  background: #f4f0e6;
  border: 1px solid #244f7817;
  border-radius: 999px;
  align-items: center;
  min-height: 32px;
  margin-left: auto;
  padding: 6px 14px;
  font-size: 12px;
  font-weight: 600;
  display: inline-flex;
}

.vsh_home_packageFeature {
  aspect-ratio: 3.55;
  background: var(--surface);
  border-radius: 14px;
  min-height: 0;
  margin-top: 26px;
  position: relative;
  overflow: hidden;
  box-shadow: 0 9px 28px #18375412;
}

.vsh_home_packageMedia {
  width: 62%;
  position: absolute;
  inset: 0 0 0 auto;
}

.vsh_home_packageMedia img {
  object-fit: cover;
  width: 100%;
  height: 100%;
  display: block;
}

.vsh_home_packageCopy {
  z-index: 1;
  background: var(--surface);
  border-radius: 0 72px 72px 0 / 0 50% 50% 0;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  width: 44%;
  min-height: 100%;
  padding: 34px 56px 34px 44px;
  display: flex;
  position: relative;
}

.vsh_home_packageCopy h2, .vsh_home_locationCopy h2 {
  color: #173d67;
  font: 400 var(--type-card-size) / var(--type-card-line) var(--font-display);
  letter-spacing: -.03em;
  margin: 0;
}

.vsh_home_packageCopy p {
  max-width: 34ch;
  margin: 15px 0 0;
  font-size: 15px;
  line-height: 1.55;
}

.vsh_home_packageAction {
  color: #244f78;
  background: none;
  border: 0;
  border-bottom: 1px solid #244f7885;
  justify-content: center;
  align-items: center;
  gap: 22px;
  min-height: 44px;
  margin-top: 18px;
  padding: 8px 0 5px;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.2;
  transition: border-color .16s, color .16s;
  display: inline-flex;
}

.vsh_home_packageAction:hover {
  color: #173d67;
  border-color: #173d67;
}

.vsh_home_informationFacilities {
  padding: 30px 0 16px;
}

.vsh_home_informationFacilities > h2 {
  color: #173d67;
  font: 400 var(--type-subheading-size) / var(--type-subheading-line) var(--font-display);
  letter-spacing: -.02em;
  text-align: center;
  margin: 0 0 18px;
}

.vsh_home_informationFacilities > h2:after {
  content: "";
  background: linear-gradient(90deg, #0000, #244f7873, #0000);
  width: 54px;
  height: 1px;
  margin: 10px auto 0;
  display: block;
}

.vsh_home_informationList {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
  display: grid;
}

.vsh_home_informationItem {
  background: #fffdf9;
  border: 1px solid #244f781f;
  border-radius: 11px;
  min-width: 0;
  transition: box-shadow .18s, transform .18s;
  overflow: hidden;
  box-shadow: 0 6px 16px #23303a17;
}

.vsh_home_informationItem:hover {
  transform: translateY(-2px);
  box-shadow: 0 9px 20px #23303a21;
}

.vsh_home_informationControl {
  border-radius: inherit;
  color: #0a0a0a;
  cursor: default;
  width: 100%;
  min-height: 86px;
  font-family: var(--font-body);
  text-align: left;
  background: none;
  border: 0;
  grid-template-rows: auto auto;
  grid-template-columns: 50px minmax(0, 1fr);
  align-content: center;
  align-items: center;
  column-gap: 12px;
  padding: 11px 13px;
  display: grid;
}

button.vsh_home_informationControl, a.vsh_home_informationControl {
  cursor: pointer;
}

.vsh_home_informationControl:hover {
  background: #3972a80a;
}

.vsh_home_informationControl svg {
  fill: none;
  stroke: #244f78;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.5px;
  background: #f8f4e9;
  border: 1px solid #244f7824;
  border-radius: 50%;
  grid-row: 1 / 3;
  width: 50px;
  height: 50px;
  padding: 9px;
}

.vsh_home_informationControl svg text {
  fill: #244f78;
  stroke: none;
  font: 600 8px var(--font-body);
}

.vsh_home_informationControl strong {
  color: #173d67;
  font: 400 17px / 1.2 var(--font-display);
  letter-spacing: -.015em;
  align-self: end;
}

.vsh_home_informationControl > span {
  color: #3b4448;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  align-self: start;
  max-width: 28ch;
  margin-top: 2px;
  font-size: 11.5px;
  line-height: 1.35;
  display: -webkit-box;
  overflow: hidden;
}

.vsh_home_locationSection {
  grid-template-columns: minmax(280px, .72fr) minmax(0, 1.28fr);
  align-items: stretch;
  gap: 40px;
  padding: 22px 0 36px;
  display: grid;
}

.vsh_home_locationCopy {
  padding: 12px 0 4px;
}

.vsh_home_locationCopy > p {
  max-width: 39ch;
  margin: 13px 0 0;
  font-size: 15px;
  line-height: 1.55;
}

.vsh_home_routeList {
  gap: 9px;
  margin: 19px 0 18px;
  padding: 0;
  list-style: none;
  display: grid;
}

.vsh_home_routeItem {
  grid-template-columns: 22px 76px minmax(0, 1fr);
  align-items: center;
  gap: 9px;
  font-size: 13px;
  line-height: 1.35;
  display: grid;
}

.vsh_home_routeItem svg {
  fill: none;
  stroke: #244f78;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.5px;
  width: 18px;
  height: 18px;
}

.vsh_home_routeItem strong {
  color: #244f78;
  font-weight: 600;
}

.vsh_home_routeAction {
  color: #244f78;
  cursor: pointer;
  min-height: 44px;
  font-family: var(--font-body);
  background: none;
  border: 1px solid #244f78;
  border-radius: 4px;
  justify-content: center;
  align-items: center;
  gap: 24px;
  padding: 8px 20px;
  font-size: 14px;
  font-weight: 600;
  display: inline-flex;
}

.vsh_home_routeAction:hover {
  color: #fff;
  background: #244f78;
}

.vsh_home_routeBackdrop {
  z-index: 95;
  background: #0a0a0aad;
  place-items: center;
  padding: 18px;
  display: grid;
  position: fixed;
  inset: 0;
}

.vsh_home_routeDialog {
  background: var(--surface);
  border-radius: 16px;
  gap: 18px;
  width: min(100%, 720px);
  max-height: calc(100dvh - 36px);
  padding: 26px;
  display: grid;
  overflow-y: auto;
  box-shadow: 0 28px 80px #0000004d;
}

.vsh_home_routeDialogHeader {
  justify-content: space-between;
  align-items: flex-start;
  gap: 24px;
  display: flex;
}

.vsh_home_routeDialogHeader h2 {
  color: #173d67;
  font: 400 var(--type-card-size) / var(--type-card-line) var(--font-display);
  margin: 0;
}

.vsh_home_routeDialogHeader p {
  color: #465159;
  margin: 5px 0 0;
  font-size: 14px;
  line-height: 1.45;
}

.vsh_home_routeDialogHeader button {
  color: #173d67;
  cursor: pointer;
  background: #eef3f1;
  border: 0;
  border-radius: 8px;
  flex: 0 0 42px;
  width: 42px;
  height: 42px;
  font-size: 26px;
  line-height: 1;
}

.vsh_home_currentLocationAction {
  color: #244f78;
  cursor: pointer;
  min-height: 42px;
  font: 600 13px / 1.3 var(--font-body);
  background: none;
  border: 1px solid #244f7840;
  border-radius: 7px;
  justify-self: start;
  padding: 8px 13px;
}

.vsh_home_routePresets {
  gap: 7px;
  display: grid;
}

.vsh_home_routePresets > span {
  color: #56636b;
  letter-spacing: .06em;
  text-transform: uppercase;
  font-size: 11px;
  font-weight: 600;
}

.vsh_home_routePresets > div {
  flex-wrap: wrap;
  gap: 7px;
  display: flex;
}

.vsh_home_routePresets button {
  color: #244f78;
  cursor: pointer;
  min-height: 40px;
  font: 600 12px / 1.3 var(--font-body);
  background: none;
  border: 1px solid #244f7838;
  border-radius: 7px;
  padding: 7px 11px;
}

.vsh_home_routePresets button:hover, .vsh_home_routePresets button[aria-pressed="true"] {
  background: #eef3f1;
  border-color: #244f78;
}

.vsh_home_routeDialogFields {
  grid-template-columns: minmax(0, 1fr) 44px minmax(0, 1fr);
  align-items: end;
  gap: 10px;
  display: grid;
}

.vsh_home_routeDialogFields label {
  gap: 6px;
  display: grid;
}

.vsh_home_routeDialogFields label > span, .vsh_home_routeModes legend {
  color: #56636b;
  letter-spacing: .06em;
  text-transform: uppercase;
  font-size: 11px;
  font-weight: 600;
}

.vsh_home_routeDialogFields input {
  color: #17232d;
  width: 100%;
  min-height: 46px;
  font: 500 14px / 1.3 var(--font-body);
  background: #fff;
  border: 1px solid #244f7847;
  border-radius: 7px;
  padding: 9px 11px;
}

.vsh_home_routeSwap {
  color: #244f78;
  cursor: pointer;
  background: #eef3f1;
  border: 0;
  border-radius: 50%;
  width: 44px;
  height: 44px;
  font-size: 22px;
}

.vsh_home_routeModes {
  border: 0;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0;
  padding: 0;
  display: flex;
}

.vsh_home_routeModes legend {
  width: 100%;
  margin-bottom: 1px;
}

.vsh_home_routeModes label {
  cursor: pointer;
  position: relative;
}

.vsh_home_routeModes input {
  opacity: 0;
  position: absolute;
}

.vsh_home_routeModes span {
  color: #244f78;
  border: 1px solid #244f783d;
  border-radius: 7px;
  align-items: center;
  min-height: 42px;
  padding: 8px 14px;
  font-size: 13px;
  font-weight: 600;
  display: inline-flex;
}

.vsh_home_routeModes input:checked + span {
  color: #fff;
  background: #244f78;
  border-color: #244f78;
}

.vsh_home_routeModes input:focus-visible + span {
  outline-offset: 2px;
  outline: 2px solid #244f78;
}

.vsh_home_routeDialogSubmit {
  color: #fff;
  background: #244f78;
  border-radius: 7px;
  justify-content: space-between;
  align-items: center;
  min-height: 46px;
  padding: 10px 15px;
  font-size: 14px;
  font-weight: 600;
  display: inline-flex;
}

.vsh_home_routeDialogSubmit:hover {
  background: #173d67;
}

.vsh_home_locationMap, .vsh_home_locationMapPlaceholder {
  border-radius: 12px;
  min-height: 320px;
  overflow: hidden;
}

.vsh_home_locationMap iframe {
  border: 0;
  width: 100%;
  height: 100%;
  min-height: 320px;
  display: block;
}

.vsh_home_locationMapPlaceholder {
  color: #173d67;
  text-align: center;
  background: radial-gradient(circle at 72% 22%, #b9d8dc6b, #0000 26%), radial-gradient(circle at 24% 78%, #cde0cd8c, #0000 31%), #edf3f1;
  place-content: center;
  justify-items: center;
  padding: 36px;
  display: grid;
}

.vsh_home_locationPin {
  color: #fff;
  background: #173d67;
  border: 6px solid #dfe9e6;
  border-radius: 50% 50% 50% 0;
  place-items: center;
  width: 52px;
  height: 52px;
  font-size: 11px;
  font-weight: 700;
  display: grid;
  transform: rotate(-45deg);
}

.vsh_home_locationPin b {
  font-weight: 700;
  transform: rotate(45deg);
}

.vsh_home_locationMapPlaceholder > strong {
  font: 400 24px / 1.1 var(--font-display);
  margin-top: 15px;
}

.vsh_home_locationMapPlaceholder > span:not(.vsh_home_locationPin) {
  color: #3f4c55;
  margin-top: 4px;
  font-size: 13px;
}

.vsh_home_locationMapPlaceholder p {
  color: #4a555b;
  max-width: 48ch;
  margin: 13px 0 0;
  font-size: 12px;
  line-height: 1.45;
}

.vsh_home_locationMapPlaceholder button {
  color: #244f78;
  cursor: pointer;
  min-height: 44px;
  font: 600 14px / 1.2 var(--font-body);
  background: #fff;
  border: 1px solid #244f78;
  border-radius: 4px;
  margin-top: 16px;
  padding: 8px 18px;
}

.vsh_home_frameBackdrop, .vsh_home_consentBackdrop {
  z-index: 90;
  background: #0a0a0ac2;
  place-items: center;
  padding: 18px;
  display: grid;
  position: fixed;
  inset: 0;
}

.vsh_home_frameDialog {
  background: var(--surface, #fafbf5);
  grid-template-rows: auto minmax(0, 1fr);
  width: min(96vw, 1500px);
  height: min(92vh, 980px);
  display: grid;
  overflow: hidden;
  box-shadow: 0 30px 90px #00000059;
}

.vsh_home_frameHeader {
  justify-content: space-between;
  align-items: center;
  gap: 24px;
  padding: 18px 24px;
  display: flex;
}

.vsh_home_frameHeader h2 {
  color: #244f78;
  font: 400 var(--type-section-size) / var(--type-section-line) var(--font-display);
  margin: 0;
}

.vsh_home_frameHeader p {
  margin: 4px 0 0;
  font-size: 14px;
}

.vsh_home_frameHeader button {
  color: #244f78;
  cursor: pointer;
  background: none;
  border: 1px solid #244f78;
  border-radius: 50%;
  flex: 0 0 52px;
  place-items: center;
  width: 52px;
  height: 52px;
  font-size: 30px;
  line-height: 1;
  display: grid;
}

.vsh_home_frame {
  background: #fff;
  border: 0;
  width: 100%;
  height: 100%;
  display: block;
}

.vsh_home_consentDialog {
  background: var(--surface, #fafbf5);
  color: #0a0a0a;
  width: min(100%, 620px);
  max-height: calc(100vh - 36px);
  padding: 34px;
  position: relative;
  overflow-y: auto;
}

.vsh_home_consentDialog h2 {
  color: #244f78;
  font: 400 var(--type-card-size) / var(--type-card-line) var(--font-display);
  margin: 0;
}

.vsh_home_consentDialog p {
  margin: 14px 0 24px;
}

.vsh_home_consentClose {
  color: #244f78;
  cursor: pointer;
  background: none;
  border: 1px solid #244f78;
  border-radius: 50%;
  place-items: center;
  width: 44px;
  height: 44px;
  font-size: 26px;
  display: grid;
  position: absolute;
  top: 15px;
  right: 15px;
}

.vsh_home_consentDialog fieldset {
  border: 1px solid #244f7840;
  gap: 11px;
  margin: 0;
  padding: 20px;
  display: grid;
}

.vsh_home_consentDialog form > button {
  color: #244f78;
  cursor: pointer;
  background: none;
  border: 1px solid #244f78;
  border-radius: 0;
  min-height: 44px;
  margin: 18px 9px 0 0;
  padding: 10px 18px;
}

.vsh_home_consentDialog form > button:last-child {
  color: #fff;
  background: #244f78;
}

@media (width <= 1080px) {
  .vsh_home_hero {
    grid-template-columns: minmax(260px, .82fr) minmax(0, 1.18fr);
  }

  .vsh_home_heroCopy {
    padding: clamp(22px, 2.4vw, 32px);
  }
}

@media (width <= 980px) {
  .vsh_home_heroActions {
    grid-template-columns: 1fr;
    gap: 10px;
    width: 100%;
    display: grid;
  }

  .vsh_home_heroPrimaryAction, .vsh_home_heroSecondaryAction {
    width: 100%;
  }
}

@media (width <= 900px) {
  .vsh_home_mainContent {
    padding-top: 88px;
  }

  .vsh_home_bookingPanel {
    grid-template-columns: 138px 138px 78px 78px minmax(196px, 1fr);
    justify-content: center;
    width: min(100% - 24px, 720px);
    margin-top: -18px;
    padding: 5px 7px;
  }

  .vsh_home_bookingPanel > label {
    min-height: 50px;
    padding: 4px 9px;
  }

  .vsh_home_bookingPanel > .vsh_home_promoField {
    border-top: 0;
    border-right: 1px solid #244f7824;
    grid-area: 1 / 4;
    min-height: 50px;
    margin-top: 0;
  }

  .vsh_home_bookingPromoShortcut {
    border-right: 1px solid #244f7824;
    grid-area: 1 / 4;
    min-height: 44px;
    padding: 4px 5px;
    font-size: 11px;
  }

  .vsh_home_bookingActions {
    grid-area: 1 / 5;
    padding: 0 0 0 5px;
  }

  .vsh_home_bookingSubmit {
    padding-inline: 10px;
  }

  .vsh_home_bookingSubmit > span {
    display: none;
  }

  .vsh_home_movementGrid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .vsh_home_packageCopy {
    width: 46%;
    padding: 28px 48px 28px 34px;
  }

  .vsh_home_locationSection {
    grid-template-columns: minmax(250px, .82fr) minmax(0, 1.18fr);
    gap: 28px;
  }
}

@media (width <= 760px) {
  .vsh_home_hero, .vsh_home_benefitStrip, .vsh_home_facilities {
    width: min(100% - 28px, 680px);
  }

  .vsh_home_benefitStrip {
    padding-top: 12px;
  }

  .vsh_home_facilities {
    padding-top: 24px;
  }

  .vsh_home_sectionHeader {
    margin-bottom: 22px;
  }

  .vsh_home_packageFeature {
    aspect-ratio: auto;
    grid-template-columns: 1fr;
    min-height: 0;
    display: grid;
  }

  .vsh_home_packageMedia {
    aspect-ratio: 16 / 9;
    grid-row: 1;
    width: 100%;
    position: relative;
    inset: auto;
  }

  .vsh_home_packageCopy {
    border-radius: 0;
    width: 100%;
    min-height: 0;
    padding: 30px 28px;
  }

  .vsh_home_routeBackdrop {
    padding: 10px;
  }

  .vsh_home_routeDialog {
    max-height: calc(100dvh - 20px);
    padding: 20px;
  }

  .vsh_home_routeDialogFields {
    grid-template-columns: 1fr;
  }

  .vsh_home_routeSwap {
    justify-self: center;
    transform: rotate(90deg);
  }

  .vsh_home_informationList {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .vsh_home_locationSection {
    grid-template-columns: 1fr;
    gap: 20px;
  }

  .vsh_home_locationMap, .vsh_home_locationMapPlaceholder, .vsh_home_locationMap iframe {
    min-height: 300px;
  }

  .vsh_home_frameBackdrop, .vsh_home_consentBackdrop {
    padding: 8px;
  }

  .vsh_home_frameDialog {
    width: 100%;
    height: calc(100dvh - 16px);
  }
}

@media (width <= 800px) {
  .vsh_home_hero {
    grid-template-columns: 1fr;
    min-height: 0;
  }

  .vsh_home_heroMedia {
    aspect-ratio: 3 / 2;
    order: -1;
  }

  .vsh_home_heroCopy {
    min-height: 0;
    padding: clamp(24px, 5.5vw, 32px) 28px;
  }

  .vsh_home_heroTitle {
    max-width: none;
  }

  .vsh_home_heroTitle span {
    white-space: normal;
    display: inline;
  }

  .vsh_home_heroCopy p {
    margin-top: 16px;
  }

  .vsh_home_heroActions {
    margin-top: 18px;
  }
}

@media (width <= 680px) {
  .vsh_home_bookingPanel {
    z-index: 3;
    border-radius: 10px;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    width: min(100% - 24px, 560px);
    margin: -18px auto 0;
    padding: 6px;
    display: grid;
    position: relative;
    overflow: visible;
  }

  .vsh_home_bookingPanel > label {
    border-bottom: 1px solid #244f781f;
    border-right: 1px solid #244f7824;
    min-height: 50px;
    padding: 4px 9px;
  }

  .vsh_home_bookingPanel > label:nth-of-type(2) {
    border-right: 0;
  }

  .vsh_home_bookingPanel > .vsh_home_promoField {
    border-top: 0;
    border-right: 0;
    grid-area: auto;
    min-height: 50px;
    margin-top: 0;
  }

  .vsh_home_bookingPromoShortcut {
    border-bottom: 1px solid #244f781f;
    border-right: 0;
    grid-area: auto;
    min-height: 50px;
  }

  .vsh_home_bookingActions {
    border-top: 0;
    grid-area: auto / 1 / auto / -1;
    padding: 6px 0 0;
    display: flex;
  }

  .vsh_home_bookingSplitButton {
    min-height: 46px;
  }

  .vsh_home_bookingSplitButton button {
    min-height: 44px;
  }

  .vsh_home_bookingOptionsMenu {
    width: min(310px, 100vw - 32px);
    margin-top: 0;
    position: absolute;
  }
}

@media (width <= 600px) {
  .vsh_home_benefitList {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .vsh_home_benefitItem:nth-child(3) {
    border-left: 0;
  }

  .vsh_home_benefitItem:nth-child(n+3) {
    border-top: 1px solid #244f7824;
    margin-top: 6px;
    padding-top: 8px;
  }
}

@media (width <= 520px) {
  .vsh_home_movementGrid, .vsh_home_informationList {
    grid-template-columns: 1fr;
  }

  .vsh_home_informationControl {
    min-height: 94px;
  }

  .vsh_home_locationMapPlaceholder {
    padding: 26px 18px;
  }

  .vsh_home_frameHeader {
    padding: 14px;
  }

  .vsh_home_frameHeader button {
    flex-basis: 46px;
    width: 46px;
    height: 46px;
  }
}

@media (width <= 420px) {
  .vsh_home_benefitList {
    grid-template-columns: 1fr;
  }

  .vsh_home_benefitItem {
    padding: 8px 10px;
  }

  .vsh_home_benefitItem + .vsh_home_benefitItem, .vsh_home_benefitItem:nth-child(3), .vsh_home_benefitItem:nth-child(n+3) {
    border-top: 1px solid #244f7824;
    border-left: 0;
    margin-top: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .vsh_home_heroCopy, .vsh_home_heroMediaLink {
    animation: none;
  }

  .vsh_home_heroMediaLink img, .vsh_home_heroIndicators button span, .vsh_home_movementMedia img, .vsh_home_bookingSplitButton button, .vsh_home_bookingPromoShortcut, .vsh_home_bookingChevron, .vsh_home_primaryAction, .vsh_home_movementAction, .vsh_home_movementSecondaryAction, .vsh_home_heroPrimaryAction {
    transition: none;
  }
}

/* rooms */
.vsh_rooms_main {
  --rooms-rule: #244f782e;
  background: var(--surface);
  min-height: 100svh;
  padding-top: 117px;
}

.vsh_rooms_intro {
  border-bottom: 1px solid var(--rooms-rule);
  grid-template-columns: minmax(240px, 1fr) auto;
  align-items: center;
  gap: clamp(24px, 3vw, 44px);
  width: min(1320px, 88vw);
  margin: 0 auto;
  padding: clamp(28px, 2.2vw, 34px) 0;
  display: grid;
}

.vsh_rooms_intro h1 {
  color: #244f78;
  font-size: var(--type-title-size);
  line-height: var(--type-title-line);
  margin: 0;
}

.vsh_rooms_introCopy {
  border-top: 1px solid #244f7829;
  grid-template-columns: 1fr;
  align-items: start;
  gap: 12px;
  margin-top: 18px;
  padding-top: 18px;
  display: grid;
}

.vsh_rooms_introCopy h2 {
  font-size: var(--type-lead-size);
  line-height: var(--type-lead-line);
  margin: 0;
}

.vsh_rooms_introCopy p {
  max-width: 58ch;
  color: var(--ink);
  font-size: var(--type-body-size);
  line-height: var(--type-body-line);
  margin: 0;
}

.vsh_rooms_introDisclosure {
  width: min(240px, 100%);
}

.vsh_rooms_introDisclosure[open] {
  width: min(700px, 58vw);
}

.vsh_rooms_introDisclosure summary {
  color: #244f78;
  cursor: pointer;
  min-height: 42px;
  font-size: var(--type-nav-size);
  letter-spacing: .06em;
  text-transform: uppercase;
  border-bottom: 1px solid #244f7859;
  justify-content: space-between;
  align-items: center;
  gap: 18px;
  padding: 7px 2px;
  font-weight: 650;
  list-style: none;
  display: flex;
}

.vsh_rooms_introDisclosure summary::-webkit-details-marker {
  display: none;
}

.vsh_rooms_introDisclosure summary span:last-child {
  font-size: 20px;
  font-weight: 400;
  line-height: 1;
  transition: transform .16s;
}

.vsh_rooms_introDisclosure[open] summary span:last-child {
  transform: rotate(45deg);
}

.vsh_rooms_roomsSection, .vsh_rooms_supportSection {
  padding-left: 6vw;
  padding-right: 6vw;
}

.vsh_rooms_roomsSection {
  padding-top: clamp(24px, 2vw, 32px);
  padding-bottom: clamp(44px, 4vw, 60px);
}

.vsh_rooms_supportSection {
  border-top: 1px solid var(--rooms-rule);
  padding-top: clamp(32px, 3vw, 44px);
  padding-bottom: clamp(44px, 4vw, 60px);
}

.vsh_rooms_sectionInner {
  width: 100%;
  max-width: 1320px;
  margin: 0 auto;
}

.vsh_rooms_sectionHeading, .vsh_rooms_supportHeading {
  color: #244f78;
  font-size: var(--type-lead-size);
  line-height: var(--type-lead-line);
  margin: 0 0 clamp(18px, 1.8vw, 24px);
}

.vsh_rooms_roomGrid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  align-items: stretch;
  gap: clamp(32px, 3vw, 44px) clamp(18px, 2vw, 28px);
  display: grid;
}

.vsh_rooms_roomCard {
  flex-direction: column;
  min-width: 0;
  display: flex;
}

.vsh_rooms_roomMedia {
  aspect-ratio: 4 / 5;
  background: var(--surface);
  width: 100%;
  display: block;
  position: relative;
  overflow: hidden;
}

.vsh_rooms_roomMedia img {
  object-fit: cover;
  width: 100%;
  height: 100%;
  transition: transform .22s;
  display: block;
}

.vsh_rooms_roomCard:hover .vsh_rooms_roomMedia img {
  transform: scale(1.012);
}

.vsh_rooms_roomBody {
  flex: 1;
  grid-template-rows: auto minmax(0, 1fr) auto auto;
  padding-top: 16px;
  display: grid;
}

.vsh_rooms_roomBody h3 {
  color: var(--ink);
  font-family: var(--font-body);
  font-size: var(--type-ui-size);
  letter-spacing: .075em;
  text-transform: uppercase;
  margin: 0;
  font-weight: 600;
  line-height: 1.35;
}

.vsh_rooms_description {
  max-width: 52ch;
  color: var(--ink);
  font-family: var(--font-display);
  font-size: var(--type-body-size);
  align-self: start;
  margin: 10px 0 14px;
  line-height: 1.5;
}

.vsh_rooms_roomFacts {
  flex-wrap: wrap;
  gap: 6px 18px;
  margin: 0 0 16px;
  padding: 0;
  display: flex;
}

.vsh_rooms_roomFacts div {
  flex-wrap: wrap;
  align-items: baseline;
  gap: 5px;
  display: flex;
}

.vsh_rooms_roomFacts dt {
  color: var(--ink);
  font-size: var(--type-label-size);
  font-weight: 400;
  line-height: var(--type-label-line);
  letter-spacing: 0;
}

.vsh_rooms_roomFacts dd {
  color: #244f78;
  font-size: var(--type-ui-size);
  margin: 0;
  font-weight: 500;
  line-height: 1.35;
}

.vsh_rooms_actions {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: stretch;
  gap: 10px;
  margin-top: 0;
  display: grid;
}

.vsh_rooms_detailsLink, .vsh_rooms_availabilityLink {
  min-height: 48px;
  font-size: var(--type-ui-size);
  text-align: center;
  border: 1px solid #244f78;
  justify-content: center;
  align-items: center;
  padding: 8px 10px;
  font-weight: 500;
  line-height: 1.2;
  transition: background .16s, color .16s;
  display: inline-flex;
}

.vsh_rooms_detailsLink {
  color: #244f78;
  background: none;
}

.vsh_rooms_detailsLink:hover {
  color: #173f65;
  border-color: #173f65;
}

.vsh_rooms_availabilityLink {
  color: #fff;
  background: #244f78;
}

.vsh_rooms_availabilityLink:hover {
  background: #173f65;
}

.vsh_rooms_priceNote {
  color: var(--ink);
  font-size: var(--type-meta-size);
  margin: 14px 0 0;
  line-height: 1.5;
}

.vsh_rooms_supportGrid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  align-items: start;
  gap: 14px;
  display: grid;
}

.vsh_rooms_supportCard, .vsh_rooms_breakfast {
  min-width: 0;
}

.vsh_rooms_supportCard {
  background: #fffdf9;
  border: 1px solid #244f781f;
  border-radius: 11px;
  transition: box-shadow .18s, transform .18s;
  overflow: hidden;
  box-shadow: 0 6px 16px #23303a17;
}

.vsh_rooms_supportCard:hover {
  transform: translateY(-2px);
  box-shadow: 0 9px 20px #23303a21;
}

.vsh_rooms_supportCardLink {
  border-radius: inherit;
  width: 100%;
  min-height: 86px;
  color: inherit;
  text-align: left;
  border: 0;
  grid-template-rows: auto auto;
  grid-template-columns: 50px minmax(0, 1fr);
  align-content: center;
  align-items: center;
  column-gap: 12px;
  padding: 11px 13px;
  transition: background .16s;
  display: grid;
}

.vsh_rooms_supportCardLink:hover {
  background: #3972a80a;
}

.vsh_rooms_supportIcon {
  color: #244f78;
  background: #f8f4e9;
  border: 1px solid #244f7824;
  border-radius: 50%;
  align-self: start;
  place-items: center;
  width: 50px;
  height: 50px;
  padding: 9px;
  display: grid;
  position: relative;
}

.vsh_rooms_tourIcon:before {
  content: "360°";
  font-family: var(--font-body);
  font-size: var(--type-label-size);
  letter-spacing: -.03em;
  font-weight: 600;
  line-height: 1;
}

.vsh_rooms_packagesIcon:before, .vsh_rooms_packagesIcon:after {
  content: "";
  border: 1.5px solid;
  border-radius: 2px;
  width: 22px;
  height: 17px;
  position: absolute;
}

.vsh_rooms_packagesIcon:before {
  transform: translate(-3px, 3px);
}

.vsh_rooms_packagesIcon:after {
  background: var(--surface);
  transform: translate(3px, -3px);
}

.vsh_rooms_supportContent {
  min-width: 0;
}

.vsh_rooms_supportContent h3, .vsh_rooms_breakfast h3 {
  color: #173d67;
  letter-spacing: -.015em;
  margin: 0;
  font-size: 17px;
  font-weight: 400;
  line-height: 1.2;
}

.vsh_rooms_supportContent p {
  color: #3b4448;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  max-width: 28ch;
  margin: 2px 0 0;
  font-size: 11.5px;
  line-height: 1.35;
  display: -webkit-box;
  overflow: hidden;
}

.vsh_rooms_packageList {
  color: var(--ink);
  font-size: var(--type-body-size);
  gap: 4px;
  margin: 8px 0 0;
  padding: 0;
  line-height: 1.35;
  list-style: none;
  display: grid;
}

.vsh_rooms_packageList li {
  padding-left: 16px;
  position: relative;
}

.vsh_rooms_packageList li:before {
  content: "";
  background: #244f78;
  border-radius: 50%;
  width: 5px;
  height: 5px;
  position: absolute;
  top: .62em;
  left: 0;
}

.vsh_rooms_supportCta {
  border-top: 1px solid var(--rooms-rule);
  color: #244f78;
  width: 100%;
  min-height: 44px;
  font-size: var(--type-ui-size);
  grid-column: 1 / -1;
  justify-content: space-between;
  align-items: center;
  gap: 18px;
  padding-top: 10px;
  font-weight: 500;
  line-height: 1.2;
  transition: color .16s;
  display: flex;
}

.vsh_rooms_supportCta:hover {
  color: #173f65;
}

.vsh_rooms_actionArrow {
  font-size: var(--type-subheading-size);
  flex: none;
  line-height: 1;
  transition: transform .16s;
}

.vsh_rooms_supportCardLink:hover .vsh_rooms_actionArrow {
  transform: translate(2px, -1px);
}

.vsh_rooms_breakfast {
  border: 1px solid var(--rooms-rule);
  flex-direction: column;
  padding: clamp(16px, 1.5vw, 20px);
  display: flex;
}

.vsh_rooms_breakfast h3 {
  margin-bottom: 10px;
}

.vsh_rooms_breakfastGallery {
  gap: 4px;
  display: grid;
}

.vsh_rooms_breakfastPreview {
  aspect-ratio: 5 / 2;
  color: #fff;
  cursor: zoom-in;
  text-align: left;
  background: #244f78;
  border: 0;
  width: 100%;
  padding: 0;
  display: block;
  position: relative;
  overflow: hidden;
}

.vsh_rooms_galleryPrompt {
  min-height: 44px;
  font-size: var(--type-label-size);
  font-weight: 500;
  line-height: var(--type-label-line);
  letter-spacing: .04em;
  background: #244f78eb;
  align-items: center;
  padding: 10px 14px;
  display: inline-flex;
  position: absolute;
  bottom: 12px;
  right: 12px;
}

.vsh_rooms_breakfastThumbnails {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 4px;
  display: grid;
}

.vsh_rooms_breakfastThumbnails button {
  cursor: zoom-in;
  background: none;
  border: 2px solid #0000;
  min-width: 0;
  min-height: 44px;
  padding: 0;
  display: block;
  overflow: hidden;
}

.vsh_rooms_breakfastThumbnails button[aria-current="true"] {
  border-color: #244f78;
}

.vsh_rooms_breakfastPreview img, .vsh_rooms_breakfastThumbnails img {
  object-fit: cover;
  width: 100%;
  height: 100%;
  display: block;
}

.vsh_rooms_breakfastThumbnails img {
  transition: transform .18s;
}

.vsh_rooms_breakfastThumbnails button:hover img, .vsh_rooms_breakfastThumbnails button:focus-visible img {
  transform: scale(1.02);
}

.vsh_rooms_lightboxDialog {
  width: 100vw;
  max-width: none;
  height: 100svh;
  max-height: none;
  color: var(--ink);
  background: #0a0a0ab8;
  border: 0;
  margin: 0;
  padding: 24px;
  position: fixed;
  inset: 0;
  overflow: auto;
}

.vsh_rooms_lightboxDialog[open] {
  place-items: center;
  display: grid;
}

.vsh_rooms_lightboxDialog::backdrop {
  background: none;
}

.vsh_rooms_lightboxPanel {
  border: 1px solid var(--rooms-rule);
  background: var(--surface);
  grid-template-rows: auto minmax(0, 1fr);
  width: min(1180px, 100%);
  max-height: calc(100svh - 48px);
  display: grid;
  overflow: hidden;
  box-shadow: 0 24px 70px #0a0a0a47;
}

.vsh_rooms_lightboxHeader {
  border-bottom: 1px solid var(--rooms-rule);
  grid-template-columns: minmax(0, 1fr) auto 48px;
  align-items: center;
  gap: 16px;
  padding: 16px 18px;
  display: grid;
}

.vsh_rooms_lightboxHeader h2 {
  color: #244f78;
  font: 400 var(--type-card-size) / var(--type-card-line) var(--font-display);
  margin: 0;
}

.vsh_rooms_lightboxHeader p {
  font-size: var(--type-label-size);
  font-weight: 500;
  line-height: var(--type-label-line);
  margin: 0;
}

.vsh_rooms_lightboxClose, .vsh_rooms_lightboxPrevious, .vsh_rooms_lightboxNext {
  background: var(--surface);
  color: #244f78;
  cursor: pointer;
  width: 48px;
  height: 48px;
  font-family: var(--font-body);
  font-size: var(--type-subheading-size);
  border: 1px solid #244f78;
  border-radius: 50%;
  place-items: center;
  padding: 0;
  line-height: 1;
  display: grid;
}

.vsh_rooms_lightboxClose:hover, .vsh_rooms_lightboxPrevious:hover, .vsh_rooms_lightboxNext:hover {
  color: #fff;
  background: #244f78;
}

.vsh_rooms_lightboxStage {
  min-height: 0;
  padding: 0 8px 8px;
  position: relative;
}

.vsh_rooms_lightboxFigure {
  place-items: center;
  min-width: 0;
  height: min(72svh, 760px);
  margin: 0;
  display: grid;
  overflow: hidden;
}

.vsh_rooms_lightboxFigure img {
  object-fit: cover;
  width: 100%;
  height: 100%;
  display: block;
}

.vsh_rooms_lightboxPrevious, .vsh_rooms_lightboxNext {
  z-index: 1;
  background: #fafbf5eb;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
}

.vsh_rooms_lightboxPrevious {
  left: 24px;
}

.vsh_rooms_lightboxNext {
  right: 24px;
}

.vsh_rooms_detailsLink:focus-visible, .vsh_rooms_availabilityLink:focus-visible, .vsh_rooms_supportCardLink:focus-visible, .vsh_rooms_breakfastPreview:focus-visible, .vsh_rooms_breakfastThumbnails button:focus-visible, .vsh_rooms_lightboxClose:focus-visible, .vsh_rooms_lightboxPrevious:focus-visible, .vsh_rooms_lightboxNext:focus-visible {
  outline-offset: 4px;
  outline: 3px solid #0a0a0a;
}

.vsh_rooms_supportCardLink:focus-visible {
  outline-offset: -5px;
  outline-color: #244f78;
}

.vsh_rooms_srOnly {
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  position: absolute;
  overflow: hidden;
}

@media (width <= 1080px) {
  .vsh_rooms_intro {
    grid-template-columns: 1fr;
    gap: 18px;
    width: min(1320px, 90vw);
    padding-top: 28px;
    padding-bottom: 28px;
  }

  .vsh_rooms_introCopy {
    gap: 12px;
  }

  .vsh_rooms_introDisclosure, .vsh_rooms_introDisclosure[open] {
    width: 100%;
  }

  .vsh_rooms_roomsSection, .vsh_rooms_supportSection {
    padding-left: 5vw;
    padding-right: 5vw;
  }

  .vsh_rooms_roomGrid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: clamp(24px, 5vw, 54px);
  }

  .vsh_rooms_supportGrid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .vsh_rooms_breakfast {
    grid-column: 1 / -1;
  }
}

@media (width <= 900px) {
  .vsh_rooms_main {
    padding-top: 88px;
  }
}

@media (width <= 760px) {
  .vsh_rooms_intro {
    grid-template-columns: 1fr;
    gap: 18px;
    width: auto;
    margin: 0 24px;
    padding: 26px 0;
  }

  .vsh_rooms_introCopy {
    grid-template-columns: 1fr;
    gap: 14px;
  }

  .vsh_rooms_roomsSection, .vsh_rooms_supportSection {
    padding-left: 24px;
    padding-right: 24px;
  }

  .vsh_rooms_roomsSection {
    padding-top: 24px;
    padding-bottom: 46px;
  }

  .vsh_rooms_supportSection {
    padding-top: 30px;
    padding-bottom: 46px;
  }

  .vsh_rooms_sectionHeading, .vsh_rooms_supportHeading {
    margin-bottom: 18px;
  }

  .vsh_rooms_roomGrid {
    grid-template-columns: 1fr;
    row-gap: 36px;
  }

  .vsh_rooms_roomMedia {
    aspect-ratio: 4 / 5;
  }

  .vsh_rooms_roomBody {
    padding-top: 16px;
  }

  .vsh_rooms_description {
    margin-top: 10px;
  }

  .vsh_rooms_supportGrid {
    grid-template-columns: 1fr;
  }

  .vsh_rooms_supportCta {
    min-height: 44px;
  }

  .vsh_rooms_breakfast {
    grid-column: auto;
  }

  .vsh_rooms_lightboxDialog {
    width: 100vw;
    height: 100svh;
    max-height: none;
    padding: 12px;
  }

  .vsh_rooms_lightboxPanel {
    max-height: calc(100svh - 24px);
  }

  .vsh_rooms_lightboxHeader {
    grid-template-columns: minmax(0, 1fr) auto 44px;
    gap: 10px;
    padding: 12px;
  }

  .vsh_rooms_lightboxClose, .vsh_rooms_lightboxPrevious, .vsh_rooms_lightboxNext {
    width: 44px;
    height: 44px;
  }

  .vsh_rooms_lightboxStage {
    padding: 0 5px 5px;
    display: block;
    position: relative;
  }

  .vsh_rooms_lightboxFigure {
    height: min(70svh, 620px);
  }

  .vsh_rooms_lightboxPrevious {
    left: 14px;
  }

  .vsh_rooms_lightboxNext {
    right: 14px;
  }
}

@media (width <= 460px) {
  .vsh_rooms_intro {
    margin-left: 18px;
    margin-right: 18px;
  }

  .vsh_rooms_roomsSection, .vsh_rooms_supportSection {
    padding-left: 18px;
    padding-right: 18px;
  }

  .vsh_rooms_roomFacts {
    gap: 16px 26px;
  }

  .vsh_rooms_actions {
    align-items: stretch;
  }

  .vsh_rooms_detailsLink, .vsh_rooms_availabilityLink {
    width: 100%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .vsh_rooms_roomMedia img, .vsh_rooms_breakfastGallery img, .vsh_rooms_detailsLink, .vsh_rooms_availabilityLink, .vsh_rooms_supportCardLink, .vsh_rooms_supportCta, .vsh_rooms_actionArrow, .vsh_rooms_breakfastThumbnails img, .vsh_rooms_introDisclosure summary span:last-child {
    transition: none;
  }
}

/* room */
.vsh_room_page {
  background: var(--surface);
  color: var(--ink);
}

.vsh_room_main {
  min-height: 70svh;
  padding-top: 117px;
}

.vsh_room_detail {
  grid-template: "vsh_room_gallery vsh_room_title"
                 "vsh_room_gallery vsh_room_summary" 1fr
                 / minmax(0, .95fr) minmax(430px, 1.05fr);
  align-items: start;
  gap: 8px clamp(28px, 3vw, 42px);
  width: min(1120px, 90vw);
  margin: 0 auto;
  padding: clamp(24px, 3vw, 42px) 0 clamp(48px, 5vw, 72px);
  display: grid;
}

.vsh_room_mediaColumn {
  grid-area: vsh_room_gallery;
  min-width: 0;
}

.vsh_room_gallery {
  min-width: 0;
}

.vsh_room_galleryTrigger {
  aspect-ratio: 4 / 3;
  cursor: zoom-in;
  background: #244f78;
  border: 0;
  width: 100%;
  padding: 0;
  display: block;
  position: relative;
  overflow: hidden;
}

.vsh_room_galleryTrigger img {
  object-fit: cover;
  width: 100%;
  height: 100%;
  transition: transform .24s;
  display: block;
}

.vsh_room_galleryTrigger:hover img {
  transform: scale(1.015);
}

.vsh_room_galleryPrompt {
  color: #244f78;
  min-height: 44px;
  font-size: var(--type-label-size);
  font-weight: 600;
  line-height: var(--type-label-line);
  letter-spacing: .03em;
  background: #fafbf5f0;
  align-items: center;
  padding: 10px 14px;
  display: inline-flex;
  position: absolute;
  bottom: 16px;
  right: 16px;
}

.vsh_room_tourButton {
  color: #244f78;
  cursor: pointer;
  min-height: 48px;
  font-family: var(--font-body);
  font-size: var(--type-ui-size);
  background: none;
  border: 1px solid #244f78;
  align-items: center;
  gap: 11px;
  margin-top: 12px;
  padding: 10px 16px;
  font-weight: 600;
  line-height: 1.2;
  transition: background-color .16s, color .16s;
  display: inline-flex;
}

.vsh_room_tourButton:hover {
  color: #fff;
  background: #244f78;
}

.vsh_room_tourButtonIcon {
  letter-spacing: -.02em;
  border: 1px solid;
  border-radius: 50%;
  place-items: center;
  width: 29px;
  height: 29px;
  font-size: 10px;
  display: grid;
}

.vsh_room_tourBackdrop {
  z-index: 1000;
  background: #0a0a0ab8;
  place-items: center;
  padding: 24px;
  display: grid;
  position: fixed;
  inset: 0;
}

.vsh_room_tourDialog {
  background: var(--surface);
  border: 1px solid #244f782e;
  grid-template-rows: auto minmax(0, 1fr);
  width: min(1180px, 100%);
  height: min(780px, 100svh - 48px);
  display: grid;
  overflow: hidden;
  box-shadow: 0 24px 70px #0a0a0a47;
}

.vsh_room_tourHeader {
  border-bottom: 1px solid #244f782e;
  grid-template-columns: minmax(0, 1fr) 48px;
  align-items: center;
  gap: 16px;
  padding: 14px 18px;
  display: grid;
}

.vsh_room_tourHeader h2 {
  color: #244f78;
  font: 400 var(--type-card-size) / var(--type-card-line) var(--font-display);
  margin: 0;
}

.vsh_room_tourHeader p {
  font-size: var(--type-small-size);
  margin: 2px 0 0;
  line-height: 1.4;
}

.vsh_room_tourHeader button {
  background: var(--surface);
  color: #244f78;
  cursor: pointer;
  width: 48px;
  height: 48px;
  font-family: var(--font-body);
  font-size: var(--type-subheading-size);
  border: 1px solid #244f78;
  border-radius: 50%;
  place-items: center;
  padding: 0;
  line-height: 1;
  display: grid;
}

.vsh_room_tourHeader button:hover {
  color: #fff;
  background: #244f78;
}

.vsh_room_tourFrame {
  background: #0a0a0a;
  border: 0;
  width: 100%;
  height: 100%;
}

.vsh_room_summary {
  grid-area: vsh_room_summary;
  min-width: 0;
}

.vsh_room_title {
  color: #244f78;
  max-width: 15ch;
  font: 400 var(--type-card-size) / var(--type-card-line) var(--font-display);
  letter-spacing: -.025em;
  grid-area: vsh_room_title;
  margin: 0;
}

.vsh_room_sectionLabel {
  font-size: var(--type-label-size);
  font-weight: 700;
  line-height: var(--type-label-line);
  letter-spacing: .09em;
  text-transform: uppercase;
  margin: 0 0 6px;
}

.vsh_room_description {
  font-size: var(--type-body-size);
  line-height: var(--type-body-line);
  margin: 0;
}

.vsh_room_facts {
  border-top: 1px solid #244f7838;
  border-bottom: 1px solid #244f7838;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
  margin: 18px 0 0;
  padding: 14px 0;
  display: grid;
}

.vsh_room_facts div {
  min-width: 0;
}

.vsh_room_facts dt {
  color: var(--ink);
  font-size: var(--type-small-size);
  line-height: 1.4;
}

.vsh_room_facts dd {
  color: #244f78;
  font-size: var(--type-subheading-size);
  font-weight: 600;
  line-height: var(--type-subheading-line);
  margin: 4px 0 0;
}

.vsh_room_amenities {
  margin-top: 18px;
}

.vsh_room_amenities .vsh_room_sectionLabel {
  margin-top: 0;
}

.vsh_room_amenityList {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: 22px;
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
}

.vsh_room_amenityList li {
  min-width: 0;
  min-height: 34px;
  font-size: var(--type-small-size);
  border-bottom: 1px solid #244f7829;
  grid-template-columns: 24px minmax(0, 1fr);
  align-items: center;
  gap: 9px;
  padding: 7px 0;
  line-height: 1.4;
  display: grid;
}

.vsh_room_amenityIcon {
  color: #244f78;
  width: 22px;
  height: 22px;
  display: block;
}

.vsh_room_includedFacilities, .vsh_room_extraActivities {
  margin-top: 18px;
}

.vsh_room_includedFacilitiesList, .vsh_room_extraActivityList {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
}

.vsh_room_includedFacilitiesList {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.vsh_room_includedFacilitiesList li {
  color: #244f78;
  min-width: 0;
  font-size: var(--type-small-size);
  border-top: 1px solid #244f782e;
  grid-template-columns: 23px minmax(0, 1fr);
  align-items: center;
  gap: 8px;
  padding: 9px 0;
  font-weight: 600;
  line-height: 1.35;
  display: grid;
}

.vsh_room_extraActivities > p {
  color: #3c4650;
  font-size: var(--type-small-size);
  margin: 0 0 8px;
  line-height: 1.45;
}

.vsh_room_extraActivityList {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.vsh_room_extraActivityList a {
  color: #244f78;
  border-top: 1px solid #244f7847;
  flex-direction: column;
  justify-content: space-between;
  gap: 5px;
  min-height: 68px;
  padding: 9px 0 5px;
  text-decoration: none;
  display: flex;
}

.vsh_room_extraActivityList a:hover strong, .vsh_room_extraActivityList a:hover span {
  text-underline-offset: 3px;
  text-decoration: underline;
}

.vsh_room_extraActivityList strong {
  font-size: var(--type-small-size);
  line-height: 1.3;
}

.vsh_room_extraActivityList span {
  font-size: var(--type-label-size);
  line-height: 1.3;
}

.vsh_room_extraActivityList b {
  margin-left: 6px;
  font-weight: 500;
}

.vsh_room_bookingLink {
  color: #fff;
  min-height: 52px;
  font-size: var(--type-ui-size);
  background: #244f78;
  justify-content: center;
  align-items: center;
  margin-top: 20px;
  padding: 14px 24px;
  font-weight: 700;
  line-height: 1.2;
  transition: background-color .16s;
  display: inline-flex;
}

.vsh_room_bookingLink:hover {
  background: #173f65;
}

.vsh_room_bookingLink span[aria-hidden="true"] {
  margin-left: 12px;
}

.vsh_room_priceNote {
  font-size: var(--type-small-size);
  margin: 12px 0 0;
  line-height: 1.5;
}

.vsh_room_lightboxDialog {
  width: 100vw;
  max-width: none;
  height: 100svh;
  max-height: none;
  color: var(--ink);
  background: #0a0a0ab8;
  border: 0;
  margin: 0;
  padding: 24px;
  position: fixed;
  inset: 0;
  overflow: auto;
}

.vsh_room_lightboxDialog[open] {
  place-items: center;
  display: grid;
}

.vsh_room_lightboxDialog::backdrop {
  background: none;
}

.vsh_room_lightboxPanel {
  background: var(--surface);
  border: 1px solid #244f782e;
  grid-template-rows: auto minmax(0, 1fr);
  width: min(1180px, 100%);
  max-height: calc(100svh - 48px);
  display: grid;
  overflow: hidden;
  box-shadow: 0 24px 70px #0a0a0a47;
}

.vsh_room_lightboxHeader {
  border-bottom: 1px solid #244f782e;
  grid-template-columns: minmax(0, 1fr) auto 48px;
  align-items: center;
  gap: 16px;
  padding: 16px 18px;
  display: grid;
}

.vsh_room_lightboxHeader h2 {
  color: #244f78;
  font: 400 var(--type-card-size) / var(--type-card-line) var(--font-display);
  margin: 0;
}

.vsh_room_lightboxHeader p {
  font-size: var(--type-label-size);
  font-weight: 500;
  line-height: var(--type-label-line);
  margin: 0;
}

.vsh_room_lightboxClose, .vsh_room_lightboxPrevious, .vsh_room_lightboxNext {
  color: #244f78;
  cursor: pointer;
  width: 48px;
  height: 48px;
  font-family: var(--font-body);
  font-size: var(--type-subheading-size);
  background: #fafbf5eb;
  border: 1px solid #244f78;
  border-radius: 50%;
  place-items: center;
  padding: 0;
  line-height: 1;
  display: grid;
}

.vsh_room_lightboxClose:hover, .vsh_room_lightboxPrevious:hover, .vsh_room_lightboxNext:hover {
  color: #fff;
  background: #244f78;
}

.vsh_room_lightboxStage {
  min-height: 0;
  padding: 0 8px 8px;
  position: relative;
}

.vsh_room_lightboxFigure {
  place-items: center;
  min-width: 0;
  height: min(72svh, 760px);
  margin: 0;
  display: grid;
  overflow: hidden;
}

.vsh_room_lightboxFigure img {
  object-fit: cover;
  width: 100%;
  height: 100%;
  display: block;
}

.vsh_room_lightboxPrevious, .vsh_room_lightboxNext {
  z-index: 1;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
}

.vsh_room_lightboxPrevious {
  left: 24px;
}

.vsh_room_lightboxNext {
  right: 24px;
}

.vsh_room_galleryTrigger:focus-visible, .vsh_room_tourButton:focus-visible, .vsh_room_tourHeader button:focus-visible, .vsh_room_bookingLink:focus-visible, .vsh_room_extraActivityList a:focus-visible, .vsh_room_lightboxClose:focus-visible, .vsh_room_lightboxPrevious:focus-visible, .vsh_room_lightboxNext:focus-visible {
  outline-offset: 4px;
  outline: 3px solid #0a0a0a;
}

.vsh_room_srOnly {
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  position: absolute;
  overflow: hidden;
}

@media (width <= 900px) {
  .vsh_room_main {
    padding-top: 88px;
  }

  .vsh_room_detail {
    grid-template: "vsh_room_title"
                   "vsh_room_gallery"
                   "vsh_room_summary"
                   / 1fr;
    gap: 22px;
    width: min(760px, 90vw);
    padding-top: 24px;
  }

  .vsh_room_title {
    max-width: none;
  }
}

@media (width <= 600px) {
  .vsh_room_detail {
    gap: 28px;
    width: auto;
    margin: 0 18px;
    padding: 24px 0 56px;
  }

  .vsh_room_galleryPrompt {
    bottom: 10px;
    right: 10px;
  }

  .vsh_room_facts {
    margin-top: 16px;
  }

  .vsh_room_amenityList {
    grid-template-columns: 1fr;
  }

  .vsh_room_includedFacilitiesList, .vsh_room_extraActivityList {
    grid-template-columns: 1fr;
    gap: 0;
  }

  .vsh_room_extraActivityList a {
    min-height: 58px;
  }

  .vsh_room_bookingLink {
    width: 100%;
  }

  .vsh_room_tourButton {
    justify-content: center;
    width: 100%;
  }

  .vsh_room_tourBackdrop {
    padding: 12px;
  }

  .vsh_room_tourDialog {
    height: calc(100svh - 24px);
  }

  .vsh_room_tourHeader {
    grid-template-columns: minmax(0, 1fr) 44px;
    gap: 10px;
    padding: 12px;
  }

  .vsh_room_tourHeader button {
    width: 44px;
    height: 44px;
  }

  .vsh_room_lightboxDialog {
    padding: 12px;
  }

  .vsh_room_lightboxPanel {
    max-height: calc(100svh - 24px);
  }

  .vsh_room_lightboxHeader {
    grid-template-columns: minmax(0, 1fr) 44px;
    gap: 8px;
    padding: 12px;
  }

  .vsh_room_lightboxHeader p {
    grid-area: 2 / 1 / auto / -1;
  }

  .vsh_room_lightboxClose {
    grid-area: 1 / 2;
  }

  .vsh_room_lightboxClose, .vsh_room_lightboxPrevious, .vsh_room_lightboxNext {
    width: 44px;
    height: 44px;
  }

  .vsh_room_lightboxStage {
    padding: 0 5px 5px;
  }

  .vsh_room_lightboxFigure {
    height: min(70svh, 620px);
  }

  .vsh_room_lightboxPrevious {
    left: 14px;
  }

  .vsh_room_lightboxNext {
    right: 14px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .vsh_room_galleryTrigger img, .vsh_room_bookingLink {
    transition: none;
  }
}

/* packages */
.vsh_packages_main {
  background: var(--surface);
  min-height: 100svh;
  padding-top: 117px;
}

.vsh_packages_intro {
  border-bottom: 1px solid var(--rooms-rule);
  grid-template-columns: minmax(240px, .7fr) minmax(520px, 1.3fr);
  align-items: start;
  gap: clamp(24px, 3vw, 44px);
  width: min(1320px, 88vw);
  margin: 0 auto;
  padding: clamp(28px, 2.2vw, 34px) 0;
  display: grid;
}

.vsh_packages_intro h1 {
  color: #244f78;
  font-size: var(--type-title-size);
  line-height: var(--type-title-line);
  margin: 0;
}

.vsh_packages_introCopy {
  grid-template-columns: minmax(250px, .9fr) minmax(280px, 1.1fr);
  align-items: start;
  gap: clamp(18px, 2vw, 30px);
  display: grid;
}

.vsh_packages_introCopy h2 {
  color: var(--ink);
  font-size: var(--type-lead-size);
  line-height: var(--type-lead-line);
  margin: 0;
}

.vsh_packages_introCopy p {
  max-width: 58ch;
  color: var(--ink);
  font-size: var(--type-body-size);
  line-height: var(--type-body-line);
  margin: 0;
}

.vsh_packages_packagesSection {
  padding: clamp(34px, 3vw, 48px) 6vw clamp(52px, 5vw, 76px);
}

.vsh_packages_sectionInner {
  width: 100%;
  max-width: 1320px;
  margin: 0 auto;
}

.vsh_packages_sectionHeader {
  justify-content: space-between;
  align-items: end;
  gap: 24px;
  margin-bottom: clamp(18px, 1.8vw, 24px);
  display: flex;
}

.vsh_packages_sectionHeader h2 {
  color: #244f78;
  font-size: var(--type-lead-size);
  line-height: var(--type-lead-line);
  margin: 0;
}

.vsh_packages_sectionHeader p {
  max-width: 44ch;
  color: var(--muted);
  font-size: var(--type-body-size);
  line-height: var(--type-body-line);
  text-align: right;
  margin: 0;
}

.vsh_packages_packageGrid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: stretch;
  gap: clamp(24px, 3vw, 42px);
  display: grid;
}

.vsh_packages_packageCard {
  flex-direction: column;
  min-width: 0;
  display: flex;
}

.vsh_packages_packageMedia {
  aspect-ratio: 16 / 9;
  background: #e7e9e6;
  border-radius: 10px;
  width: 100%;
  display: block;
  overflow: hidden;
}

.vsh_packages_packageMedia img {
  object-fit: cover;
  width: 100%;
  height: 100%;
  transition: transform .22s;
  display: block;
}

.vsh_packages_packageCard:hover .vsh_packages_packageMedia img {
  transform: scale(1.012);
}

.vsh_packages_packageBody {
  flex: 1;
  grid-template-rows: auto auto minmax(0, 1fr) auto;
  padding-top: 16px;
  display: grid;
}

.vsh_packages_packageBody h3 {
  font-family: var(--font-body);
  font-size: var(--type-ui-size);
  letter-spacing: .075em;
  text-transform: uppercase;
  margin: 0;
  font-weight: 600;
  line-height: 1.35;
}

.vsh_packages_packageBody h3 a {
  color: var(--ink);
  text-decoration: none;
}

.vsh_packages_description {
  max-width: 66ch;
  color: var(--ink);
  font-family: var(--font-display);
  font-size: var(--type-body-size);
  margin: 10px 0 16px;
  line-height: 1.5;
}

.vsh_packages_packageMeta {
  border-top: 1px solid var(--rooms-rule);
  border-bottom: 1px solid var(--rooms-rule);
  grid-template-columns: minmax(130px, .35fr) minmax(0, .65fr);
  align-items: start;
  gap: 20px;
  margin-bottom: 18px;
  padding: 16px 0;
  display: grid;
}

.vsh_packages_price {
  gap: 1px;
  margin: 0;
  display: grid;
}

.vsh_packages_price span, .vsh_packages_price small, .vsh_packages_highlights h4 {
  color: var(--ink);
  font-family: var(--font-body);
  font-size: var(--type-label-size);
  font-weight: 400;
  line-height: var(--type-label-line);
}

.vsh_packages_price strong {
  color: #244f78;
  font-family: var(--font-body);
  font-size: clamp(1.25rem, 1.6vw, 1.65rem);
  font-weight: 500;
  line-height: 1.25;
}

.vsh_packages_highlights h4 {
  text-transform: uppercase;
  margin: 0 0 6px;
}

.vsh_packages_highlights ul {
  gap: 5px;
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
}

.vsh_packages_highlights li {
  color: var(--ink);
  font-size: var(--type-label-size);
  padding-left: 16px;
  line-height: 1.45;
  position: relative;
}

.vsh_packages_highlights li:before {
  color: #244f78;
  content: "✓";
  position: absolute;
  top: 0;
  left: 0;
}

.vsh_packages_actions {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  display: grid;
}

.vsh_packages_detailsLink, .vsh_packages_availabilityLink {
  min-height: 48px;
  font-size: var(--type-ui-size);
  text-align: center;
  border: 1px solid #244f78;
  border-radius: 6px;
  justify-content: center;
  align-items: center;
  padding: 8px 12px;
  font-weight: 500;
  line-height: 1.2;
  text-decoration: none;
  transition: background-color .16s, color .16s;
  display: inline-flex;
}

.vsh_packages_detailsLink {
  color: #244f78;
  background: none;
}

.vsh_packages_availabilityLink {
  color: #fff;
  background: #244f78;
}

.vsh_packages_detailsLink:hover, .vsh_packages_detailsLink:focus-visible {
  background: #eef3f6;
}

.vsh_packages_availabilityLink:hover, .vsh_packages_availabilityLink:focus-visible {
  background: #173f66;
}

@media (width <= 1080px) {
  .vsh_packages_intro {
    grid-template-columns: 1fr;
    gap: 18px;
    width: min(1320px, 90vw);
  }

  .vsh_packages_introCopy {
    grid-template-columns: minmax(240px, .85fr) minmax(320px, 1.15fr);
    gap: 20px;
  }

  .vsh_packages_packagesSection {
    padding-left: 5vw;
    padding-right: 5vw;
  }

  .vsh_packages_packageMeta {
    grid-template-columns: 1fr;
    gap: 12px;
  }
}

@media (width <= 760px) {
  .vsh_packages_main {
    padding-top: 88px;
  }

  .vsh_packages_intro {
    grid-template-columns: 1fr;
    gap: 18px;
    width: auto;
    margin: 0 24px;
    padding: 26px 0;
  }

  .vsh_packages_introCopy, .vsh_packages_packageGrid {
    grid-template-columns: 1fr;
  }

  .vsh_packages_introCopy {
    gap: 14px;
  }

  .vsh_packages_packagesSection {
    padding: 30px 24px 48px;
  }

  .vsh_packages_sectionHeader {
    gap: 8px;
    display: grid;
  }

  .vsh_packages_sectionHeader p {
    text-align: left;
  }

  .vsh_packages_packageGrid {
    row-gap: 38px;
  }

  .vsh_packages_packageMeta {
    grid-template-columns: minmax(120px, .35fr) minmax(0, .65fr);
  }
}

@media (width <= 480px) {
  .vsh_packages_intro {
    margin-left: 18px;
    margin-right: 18px;
  }

  .vsh_packages_packagesSection {
    padding-left: 18px;
    padding-right: 18px;
  }

  .vsh_packages_packageMeta, .vsh_packages_actions {
    grid-template-columns: 1fr;
  }
}

@media (prefers-reduced-motion: reduce) {
  .vsh_packages_packageMedia img, .vsh_packages_detailsLink, .vsh_packages_availabilityLink {
    transition: none;
  }
}

/* package */
.vsh_package_page {
  background: var(--surface);
  color: var(--ink);
}

.vsh_package_main {
  min-height: 70svh;
  padding-top: 117px;
}

.vsh_package_detail {
  grid-template: "vsh_package_media vsh_package_title"
                 "vsh_package_media vsh_package_summary" 1fr
                 / minmax(0, .95fr) minmax(430px, 1.05fr);
  align-items: start;
  gap: 8px clamp(28px, 3vw, 42px);
  width: min(1120px, 90vw);
  margin: 0 auto;
  padding: clamp(24px, 3vw, 42px) 0 clamp(48px, 5vw, 72px);
  display: grid;
}

.vsh_package_mediaColumn {
  grid-area: vsh_package_media;
  min-width: 0;
}

.vsh_package_cover {
  aspect-ratio: 4 / 3;
  background: #e7e9e6;
  width: 100%;
  overflow: hidden;
}

.vsh_package_cover img {
  object-fit: cover;
  width: 100%;
  height: 100%;
  display: block;
}

.vsh_package_period {
  color: #244f78;
  border: 1px solid #244f7842;
  gap: 2px;
  margin-top: 12px;
  padding: 13px 16px;
  display: grid;
}

.vsh_package_period span {
  font-size: var(--type-label-size);
  font-weight: 700;
  line-height: var(--type-label-line);
  letter-spacing: .08em;
  text-transform: uppercase;
}

.vsh_package_period strong {
  font-family: var(--font-display);
  font-size: var(--type-body-size);
  font-weight: 400;
  line-height: var(--type-body-line);
}

.vsh_package_title {
  color: #244f78;
  max-width: 18ch;
  font: 400 var(--type-card-size) / var(--type-card-line) var(--font-display);
  letter-spacing: -.025em;
  grid-area: vsh_package_title;
  margin: 0;
}

.vsh_package_summary {
  grid-area: vsh_package_summary;
  min-width: 0;
}

.vsh_package_sectionLabel {
  color: var(--ink);
  font-size: var(--type-label-size);
  font-weight: 700;
  line-height: var(--type-label-line);
  letter-spacing: .09em;
  text-transform: uppercase;
  margin: 0 0 6px;
}

.vsh_package_description {
  font-size: var(--type-body-size);
  line-height: var(--type-body-line);
  margin: 0;
}

.vsh_package_prices {
  border-top: 1px solid #244f7838;
  border-bottom: 1px solid #244f7838;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
  margin: 18px 0 0;
  padding: 14px 0;
  display: grid;
}

.vsh_package_prices div {
  min-width: 0;
}

.vsh_package_prices dt {
  color: var(--ink);
  font-size: var(--type-small-size);
  line-height: 1.4;
}

.vsh_package_prices dd {
  color: #244f78;
  font-size: var(--type-subheading-size);
  font-weight: 600;
  line-height: var(--type-subheading-line);
  margin: 4px 0 0;
}

.vsh_package_priceNote {
  color: #3c4650;
  font-size: var(--type-small-size);
  margin: 7px 0 0;
  line-height: 1.45;
}

.vsh_package_benefits {
  margin-top: 18px;
}

.vsh_package_benefitList {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: 22px;
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
}

.vsh_package_benefitList li {
  min-width: 0;
  min-height: 46px;
  font-size: var(--type-small-size);
  border-bottom: 1px solid #244f7829;
  grid-template-columns: 24px minmax(0, 1fr);
  align-items: center;
  gap: 9px;
  padding: 8px 0;
  line-height: 1.4;
  display: grid;
}

.vsh_package_benefitIcon {
  color: #244f78;
  width: 22px;
  height: 22px;
  display: block;
}

.vsh_package_bookingLink {
  color: #fff;
  min-height: 52px;
  font-size: var(--type-ui-size);
  background: #244f78;
  border-radius: 6px;
  justify-content: center;
  align-items: center;
  margin-top: 20px;
  padding: 14px 24px;
  font-weight: 700;
  line-height: 1.2;
  text-decoration: none;
  transition: background-color .16s;
  display: inline-flex;
}

.vsh_package_bookingLink:hover {
  background: #173f65;
}

.vsh_package_bookingLink span[aria-hidden="true"] {
  margin-left: 12px;
}

.vsh_package_bookingLink:focus-visible {
  outline-offset: 4px;
  outline: 3px solid #0a0a0a;
}

@media (width <= 900px) {
  .vsh_package_main {
    padding-top: 88px;
  }

  .vsh_package_detail {
    grid-template: "vsh_package_title"
                   "vsh_package_media"
                   "vsh_package_summary"
                   / 1fr;
    gap: 22px;
    width: min(760px, 90vw);
    padding-top: 24px;
  }

  .vsh_package_title {
    max-width: none;
  }
}

@media (width <= 600px) {
  .vsh_package_detail {
    gap: 28px;
    width: auto;
    margin: 0 18px;
    padding: 24px 0 56px;
  }

  .vsh_package_benefitList {
    grid-template-columns: 1fr;
  }

  .vsh_package_bookingLink {
    width: 100%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .vsh_package_bookingLink {
    transition: none;
  }
}

/* sports */
.vsh_sports_main {
  background: var(--surface);
  min-height: 100svh;
  color: var(--ink);
  padding-top: 117px;
}

.vsh_sports_intro {
  border-bottom: 1px solid #244f7833;
  grid-template-columns: minmax(240px, 1fr) auto;
  align-items: center;
  gap: clamp(24px, 3vw, 44px);
  width: min(1320px, 88vw);
  margin: 0 auto;
  padding: clamp(28px, 2.2vw, 34px) 0;
  display: grid;
}

.vsh_sports_courseIntro {
  grid-template-columns: minmax(240px, .7fr) minmax(520px, 1.3fr);
  align-items: start;
}

.vsh_sports_intro h1 {
  color: #244f78;
  font-size: var(--type-title-size);
  line-height: var(--type-title-line);
  margin: 0;
}

.vsh_sports_introCopy {
  grid-template-columns: minmax(250px, .9fr) minmax(280px, 1.1fr);
  align-items: start;
  gap: clamp(18px, 2vw, 30px);
  display: grid;
}

.vsh_sports_introCopy h2 {
  color: var(--ink);
  font-size: var(--type-lead-size);
  line-height: var(--type-lead-line);
  margin: 0;
}

.vsh_sports_introCopy p {
  max-width: 58ch;
  color: var(--ink);
  font-size: var(--type-body-size);
  line-height: var(--type-body-line);
  margin: 0;
}

.vsh_sports_introDisclosure {
  width: min(240px, 100%);
}

.vsh_sports_introDisclosure[open] {
  width: min(700px, 58vw);
}

.vsh_sports_introDisclosure summary {
  color: #244f78;
  cursor: pointer;
  min-height: 42px;
  font-size: var(--type-nav-size);
  letter-spacing: .06em;
  text-transform: uppercase;
  border-bottom: 1px solid #244f7859;
  justify-content: space-between;
  align-items: center;
  gap: 18px;
  padding: 7px 2px;
  font-weight: 650;
  list-style: none;
  display: flex;
}

.vsh_sports_introDisclosure summary::-webkit-details-marker {
  display: none;
}

.vsh_sports_introDisclosure summary span:last-child {
  font-size: 20px;
  font-weight: 400;
  line-height: 1;
  transition: transform .16s;
}

.vsh_sports_introDisclosure[open] summary span:last-child {
  transform: rotate(45deg);
}

.vsh_sports_disclosureCopy {
  border-top: 1px solid #244f7829;
  gap: 12px;
  margin-top: 18px;
  padding-top: 18px;
  display: grid;
}

.vsh_sports_disclosureCopy h2, .vsh_sports_disclosureCopy p {
  margin: 0;
}

.vsh_sports_disclosureCopy h2 {
  color: var(--ink);
  font-size: var(--type-lead-size);
  line-height: var(--type-lead-line);
}

.vsh_sports_disclosureCopy p {
  max-width: 58ch;
  color: var(--ink);
  font-size: var(--type-body-size);
  line-height: var(--type-body-line);
}

.vsh_sports_sportsSection {
  padding: clamp(22px, 2vw, 32px) 4vw clamp(36px, 4vw, 56px);
}

.vsh_sports_sectionInner {
  width: 100%;
  max-width: 1180px;
  margin: 0 auto;
}

.vsh_sports_sectionHeader {
  justify-content: space-between;
  align-items: end;
  gap: 24px;
  margin-bottom: clamp(14px, 1.4vw, 18px);
  display: flex;
}

.vsh_sports_sectionHeader h2 {
  color: #244f78;
  font-size: var(--type-lead-size);
  line-height: var(--type-lead-line);
  margin: 0;
}

.vsh_sports_sectionHeader p {
  color: #3c4650;
  max-width: 44ch;
  font-size: var(--type-body-size);
  line-height: var(--type-body-line);
  text-align: right;
  margin: 0;
}

.vsh_sports_sportGrid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  align-items: stretch;
  gap: 14px;
  display: grid;
}

.vsh_sports_sportCard {
  background: #fffdf9;
  border: 1px solid #244f7824;
  border-radius: 14px;
  flex-direction: column;
  width: 100%;
  min-width: 0;
  height: 310px;
  max-height: 310px;
  transition: box-shadow .18s, transform .18s;
  display: flex;
  position: relative;
  overflow: hidden;
  box-shadow: 0 9px 22px #23303a1c;
}

.vsh_sports_sportCard:hover {
  transform: translateY(-2px);
  box-shadow: 0 13px 28px #23303a26;
}

.vsh_sports_media {
  background: #edf2ef;
  flex: 0 0 142px;
  height: 142px;
  position: relative;
  overflow: hidden;
}

.vsh_sports_media > a, .vsh_sports_media [data-room-gallery-trigger="true"] {
  aspect-ratio: auto;
  width: 100%;
  height: 100%;
  display: block;
}

.vsh_sports_media img, .vsh_sports_media [data-room-gallery-trigger="true"] img {
  object-fit: cover;
  width: 100%;
  height: 100%;
  transition: transform .28s;
  display: block;
}

.vsh_sports_sportCard:hover .vsh_sports_media img, .vsh_sports_sportCard:hover .vsh_sports_media [data-room-gallery-trigger="true"] img {
  transform: scale(1.025);
}

.vsh_sports_media [data-room-gallery-trigger="true"] span {
  border-radius: 5px;
  min-height: 32px;
  padding: 6px 8px;
  font-size: 12px;
  bottom: 9px;
  right: 9px;
}

.vsh_sports_padelMedia {
  color: #244f78;
  background: linear-gradient(135deg, #e8eff2, #d4e2e8);
  align-content: center;
  place-items: center;
  gap: 16px;
  text-decoration: none;
  display: grid !important;
}

.vsh_sports_padelMedia .vsh_sports_sportIcon {
  opacity: .72;
  width: clamp(48px, 6vw, 76px);
  height: clamp(48px, 6vw, 76px);
}

.vsh_sports_padelMedia span {
  font-family: var(--font-display);
  font-size: clamp(1.7rem, 3vw, 2.8rem);
}

.vsh_sports_badge {
  z-index: 2;
  color: #244f78;
  font-size: var(--type-label-size);
  letter-spacing: .04em;
  background: #ffffffeb;
  border-radius: 999px;
  padding: 7px 11px;
  font-weight: 600;
  position: absolute;
  top: 16px;
  right: 16px;
}

.vsh_sports_cardBody {
  flex: 1;
  grid-template-rows: auto auto 1fr auto;
  grid-template-columns: 44px minmax(0, 1fr);
  align-content: start;
  align-items: start;
  column-gap: 9px;
  min-height: 0;
  padding: 10px 11px 11px;
  display: grid;
}

.vsh_sports_sportIcon {
  color: #244f78;
  width: 22px;
  height: 22px;
}

.vsh_sports_cardIcon {
  color: #244f78;
  background: #f8f4e9;
  border: 1px solid #244f7826;
  border-radius: 50%;
  grid-area: 1 / 1 / 3;
  place-items: center;
  width: 42px;
  height: 42px;
  display: grid;
  position: relative;
  box-shadow: inset 0 0 0 4px #ffffff8c;
}

.vsh_sports_cardIcon .vsh_sports_sportIcon {
  width: 23px;
  height: 23px;
}

.vsh_sports_cardTitle {
  color: #173d67;
  font: 400 clamp(17px, 1.15vw, 20px) / 1.15 var(--font-display);
  letter-spacing: -.025em;
  grid-area: 1 / 2;
  margin: 0 0 2px;
}

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

.vsh_sports_cardBody > p {
  color: #4a5055;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  grid-area: 2 / 2;
  margin: 2px 0 0;
  font-size: 12.5px;
  line-height: 1.32;
  display: -webkit-box;
  overflow: hidden;
}

.vsh_sports_cardAction {
  color: #fff;
  background: #244f78;
  border: 1px solid #244f78;
  border-radius: 5px;
  grid-area: 4 / 1 / auto / -1;
  justify-content: center;
  place-self: end start;
  align-items: center;
  gap: 8px;
  min-height: 42px;
  margin-top: 10px;
  padding: 7px 11px;
  font-size: 12px;
  font-weight: 600;
  line-height: 1.2;
  text-decoration: none;
  transition: background .16s, border-color .16s, color .16s;
  display: inline-flex;
}

.vsh_sports_cardAction .vsh_sports_sportIcon {
  color: currentColor;
  flex: 0 0 18px;
  width: 18px;
  height: 18px;
}

.vsh_sports_cardAction:hover, .vsh_sports_cardAction:focus-visible {
  color: #fff;
  background: #173d67;
  border-color: #173d67;
}

@media (width <= 1080px) {
  .vsh_sports_intro {
    grid-template-columns: 1fr;
    gap: 18px;
    width: min(1320px, 90vw);
  }

  .vsh_sports_courseIntro {
    grid-template-columns: 1fr;
  }

  .vsh_sports_introCopy {
    grid-template-columns: minmax(240px, .85fr) minmax(320px, 1.15fr);
    gap: 20px;
  }

  .vsh_sports_introDisclosure, .vsh_sports_introDisclosure[open] {
    width: 100%;
  }

  .vsh_sports_sportsSection {
    padding-left: 5vw;
    padding-right: 5vw;
  }

  .vsh_sports_sportGrid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .vsh_sports_sportCard {
    max-width: 514px;
    height: 310px;
    max-height: 310px;
  }
}

@media (width <= 760px) {
  .vsh_sports_main {
    padding-top: 88px;
  }

  .vsh_sports_intro {
    grid-template-columns: 1fr;
    gap: 18px;
    width: auto;
    margin: 0 24px;
    padding: 26px 0;
  }

  .vsh_sports_introCopy, .vsh_sports_sportGrid {
    grid-template-columns: 1fr;
  }

  .vsh_sports_introCopy {
    gap: 14px;
  }

  .vsh_sports_sportsSection {
    padding: 30px 24px 48px;
  }

  .vsh_sports_sectionHeader {
    gap: 8px;
    display: grid;
  }

  .vsh_sports_sectionHeader p {
    text-align: left;
  }

  .vsh_sports_sportGrid {
    row-gap: 18px;
  }
}

@media (width <= 480px) {
  .vsh_sports_intro {
    margin-left: 18px;
    margin-right: 18px;
  }

  .vsh_sports_sportsSection {
    padding-left: 18px;
    padding-right: 18px;
  }

  .vsh_sports_cardAction {
    width: 100%;
  }

  .vsh_sports_sportCard {
    height: auto;
    max-height: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .vsh_sports_cardAction, .vsh_sports_sportCard, .vsh_sports_media img, .vsh_sports_media [data-room-gallery-trigger="true"] img {
    transition: none;
  }

  .vsh_sports_introDisclosure summary span:last-child {
    transition: none;
  }

  .vsh_sports_sportCard:hover {
    transform: none;
  }
}

/* sport */
.vsh_sport_page {
  background: var(--surface);
  min-height: 100svh;
  color: var(--ink);
  flex-direction: column;
  display: flex;
}

.vsh_sport_main {
  flex: 1;
  padding-top: 117px;
}

.vsh_sport_detail {
  grid-template: "vsh_sport_media vsh_sport_title"
                 "vsh_sport_media vsh_sport_summary" 1fr
                 / minmax(0, .95fr) minmax(430px, 1.05fr);
  align-items: start;
  gap: 8px clamp(28px, 3vw, 42px);
  width: min(1120px, 90vw);
  margin: 0 auto;
  padding: clamp(24px, 3vw, 42px) 0 clamp(48px, 5vw, 72px);
  display: grid;
}

.vsh_sport_title {
  color: #244f78;
  max-width: 18ch;
  font: 400 var(--type-card-size) / var(--type-card-line) var(--font-display);
  letter-spacing: -.025em;
  grid-area: vsh_sport_title;
  margin: 0;
}

.vsh_sport_mediaColumn {
  grid-area: vsh_sport_media;
  min-width: 0;
}

.vsh_sport_gallery, .vsh_sport_placeholder {
  aspect-ratio: 4 / 3;
  background: #e7e9e6;
  border-radius: 10px;
  width: 100%;
  overflow: hidden;
}

.vsh_sport_gallery [data-room-gallery-trigger="true"] {
  aspect-ratio: 4 / 3;
  width: 100%;
  height: 100%;
}

.vsh_sport_gallery [data-room-gallery-trigger="true"] img {
  object-fit: cover;
}

.vsh_sport_placeholder {
  color: #244f78;
  background: linear-gradient(135deg, #e8eff2, #d4e2e8);
  align-content: center;
  place-items: center;
  gap: 12px;
  display: grid;
}

.vsh_sport_placeholder .vsh_sport_serviceIcon {
  opacity: .72;
  width: clamp(56px, 7vw, 82px);
  height: clamp(56px, 7vw, 82px);
}

.vsh_sport_placeholder strong {
  font-family: var(--font-display);
  font-size: clamp(2rem, 4vw, 3.5rem);
  font-weight: 400;
}

.vsh_sport_placeholder span {
  font-size: var(--type-label-size);
  letter-spacing: .06em;
  text-transform: uppercase;
  background: #fffc;
  border-radius: 999px;
  padding: 6px 10px;
  font-weight: 600;
}

.vsh_sport_summary {
  grid-area: vsh_sport_summary;
  grid-template-columns: minmax(0, 1fr);
  gap: 18px;
  min-width: 0;
  display: grid;
}

.vsh_sport_summary > * {
  min-width: 0;
}

.vsh_sport_sectionLabel {
  color: var(--ink);
  font-family: var(--font-body);
  font-size: var(--type-label-size);
  font-weight: 700;
  line-height: var(--type-label-line);
  letter-spacing: .09em;
  text-transform: uppercase;
  margin: 0 0 7px;
}

.vsh_sport_description {
  grid-template-columns: minmax(0, 1fr);
  gap: 9px;
  min-width: 0;
  display: grid;
}

.vsh_sport_description p {
  min-width: 0;
  font-size: var(--type-body-size);
  line-height: var(--type-body-line);
  overflow-wrap: anywhere;
  margin: 0;
}

.vsh_sport_services {
  border-top: 1px solid #244f7838;
  padding-top: 16px;
}

.vsh_sport_serviceList {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: 22px;
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
}

.vsh_sport_serviceList li {
  min-width: 0;
  min-height: 48px;
  font-size: var(--type-small-size);
  border-bottom: 1px solid #244f7829;
  grid-template-columns: 24px minmax(0, 1fr);
  align-items: center;
  gap: 9px;
  padding: 8px 0;
  line-height: 1.4;
  display: grid;
}

.vsh_sport_serviceIcon {
  color: #244f78;
  width: 22px;
  height: 22px;
  display: block;
}

.vsh_sport_trainingBooking {
  background: #e8eff26b;
  border: 1px solid #244f783d;
  border-radius: 8px;
  grid-template-columns: minmax(0, 1fr) minmax(210px, .72fr);
  align-items: center;
  gap: 18px;
  padding: 15px 16px;
  display: grid;
}

.vsh_sport_trainingBookingCopy {
  gap: 6px;
  display: grid;
}

.vsh_sport_trainingBookingCopy .vsh_sport_sectionLabel, .vsh_sport_trainingBookingCopy p {
  margin: 0;
}

.vsh_sport_trainingBookingCopy > p {
  font-size: var(--type-small-size);
  line-height: 1.4;
}

.vsh_sport_trainingBookingContact {
  color: #52606c;
  flex-wrap: wrap;
  gap: 3px 8px;
  display: flex;
}

.vsh_sport_trainingBookingContact strong {
  color: #244f78;
}

.vsh_sport_trainingBookingActions {
  gap: 7px;
  display: grid;
}

.vsh_sport_trainingBookingPrimary, .vsh_sport_trainingBookingSecondary {
  min-height: 42px;
  font-size: var(--type-small-size);
  text-align: center;
  border: 1px solid #244f78;
  border-radius: 6px;
  justify-content: center;
  align-items: center;
  padding: 8px 12px;
  font-weight: 650;
  line-height: 1.25;
  text-decoration: none;
  transition: background-color .16s, color .16s;
  display: flex;
}

.vsh_sport_trainingBookingPrimary {
  color: #fff;
  background: #244f78;
  flex-direction: column;
}

.vsh_sport_trainingBookingPrimary small {
  font-size: var(--type-meta-size);
  font-weight: 500;
}

.vsh_sport_trainingBookingPrimary:hover, .vsh_sport_trainingBookingPrimary:focus-visible, .vsh_sport_trainingBookingSecondary {
  color: #244f78;
  background: none;
}

.vsh_sport_trainingBookingSecondary:hover, .vsh_sport_trainingBookingSecondary:focus-visible {
  color: #fff;
  background: #244f78;
}

.vsh_sport_trainingBookingWebsite {
  color: #244f78;
  font-size: var(--type-meta-size);
  overflow-wrap: anywhere;
  text-underline-offset: 3px;
  justify-self: start;
}

.vsh_sport_contact {
  background: #e8eff26b;
  border: 1px solid #244f783d;
  border-radius: 8px;
  grid-template-columns: minmax(150px, .42fr) minmax(0, .58fr);
  gap: 18px;
  padding: 15px 16px;
  display: grid;
}

.vsh_sport_contactName, .vsh_sport_contactRole {
  margin: 0;
}

.vsh_sport_contactName {
  color: #244f78;
  font-family: var(--font-display);
  font-size: var(--type-body-large-size);
  line-height: 1.3;
}

.vsh_sport_contactRole {
  color: #3c4650;
  font-size: var(--type-small-size);
  margin-top: 2px;
  line-height: 1.4;
}

.vsh_sport_contactLinks {
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  gap: 6px;
  min-width: 0;
  display: flex;
}

.vsh_sport_contactLinks a {
  color: #244f78;
  max-width: 100%;
  font-size: var(--type-small-size);
  overflow-wrap: anywhere;
  text-underline-offset: 4px;
  line-height: 1.35;
  text-decoration: underline #244f7859;
}

.vsh_sport_downloads {
  padding-top: 2px;
}

.vsh_sport_downloadLinks {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  display: grid;
}

.vsh_sport_downloadLinks a {
  color: #244f78;
  min-width: 0;
  min-height: 46px;
  font-size: var(--type-ui-size);
  overflow-wrap: anywhere;
  border: 1px solid #244f78;
  border-radius: 6px;
  justify-content: space-between;
  align-items: center;
  gap: 14px;
  padding: 9px 13px;
  font-weight: 500;
  line-height: 1.2;
  text-decoration: none;
  transition: background-color .16s, color .16s;
  display: inline-flex;
}

.vsh_sport_downloadLinks a:hover, .vsh_sport_downloadLinks a:focus-visible {
  color: #fff;
  background: #244f78;
}

.vsh_sport_primaryAction {
  color: #fff;
  width: fit-content;
  min-height: 44px;
  font-size: var(--type-ui-size);
  background: #244f78;
  border: 1px solid #244f78;
  border-radius: 6px;
  justify-content: space-between;
  align-items: center;
  gap: 28px;
  padding: 10px 16px;
  font-weight: 650;
  line-height: 1.2;
  text-decoration: none;
  transition: background-color .16s, color .16s;
  display: inline-flex;
}

.vsh_sport_primaryAction:hover, .vsh_sport_primaryAction:focus-visible {
  color: #244f78;
  background: none;
}

.vsh_sport_trainingDetails {
  background: #e8eff26b;
  border: 1px solid #244f783d;
  border-radius: 10px;
  overflow: hidden;
}

.vsh_sport_trainingDetails summary {
  color: #244f78;
  cursor: pointer;
  min-height: 52px;
  font-size: var(--type-ui-size);
  justify-content: space-between;
  align-items: center;
  gap: 18px;
  padding: 12px 15px;
  font-weight: 650;
  list-style: none;
  display: flex;
}

.vsh_sport_trainingDetails summary::-webkit-details-marker {
  display: none;
}

.vsh_sport_trainingDetails summary span:last-child {
  border: 1px solid #244f7866;
  border-radius: 50%;
  flex: 0 0 28px;
  place-items: center;
  width: 28px;
  height: 28px;
  font-size: 20px;
  font-weight: 400;
  line-height: 1;
  transition: transform .16s, background-color .16s, color .16s;
  display: grid;
}

.vsh_sport_trainingDetails summary:hover span:last-child, .vsh_sport_trainingDetails summary:focus-visible span:last-child {
  color: #fff;
  background: #244f78;
}

.vsh_sport_trainingDetails[open] summary span:last-child {
  transform: rotate(45deg);
}

.vsh_sport_massageDetails {
  background: #e8eff26b;
  border: 1px solid #244f783d;
  border-radius: 10px;
  overflow: hidden;
}

.vsh_sport_massageDetails summary {
  color: #244f78;
  cursor: pointer;
  min-height: 52px;
  font-size: var(--type-ui-size);
  justify-content: space-between;
  align-items: center;
  gap: 18px;
  padding: 12px 15px;
  font-weight: 650;
  list-style: none;
  display: flex;
}

.vsh_sport_massageDetails summary::-webkit-details-marker {
  display: none;
}

.vsh_sport_massageDetails summary span:last-child {
  border: 1px solid #244f7866;
  border-radius: 50%;
  flex: 0 0 28px;
  place-items: center;
  width: 28px;
  height: 28px;
  font-size: 20px;
  font-weight: 400;
  line-height: 1;
  transition: transform .16s, background-color .16s, color .16s;
  display: grid;
}

.vsh_sport_massageDetails summary:hover span:last-child, .vsh_sport_massageDetails summary:focus-visible span:last-child {
  color: #fff;
  background: #244f78;
}

.vsh_sport_massageDetails[open] summary span:last-child {
  transform: rotate(45deg);
}

.vsh_sport_massagePanel {
  background: #ffffffb8;
  border-top: 1px solid #244f782e;
  gap: 14px;
  padding: 16px;
  display: grid;
}

.vsh_sport_massagePanel h2 {
  color: #244f78;
  font: 400 var(--type-lead-size) / var(--type-lead-line) var(--font-display);
  margin: 0;
}

.vsh_sport_massageTable {
  background: #fff;
  border: 1px solid #244f7833;
  border-radius: 8px;
  overflow: hidden;
}

.vsh_sport_massageTableHead, .vsh_sport_massageTableRow {
  grid-template-columns: minmax(0, 1.4fr) minmax(78px, .55fr) minmax(72px, .45fr);
  align-items: center;
  gap: 12px;
  padding: 9px 12px;
  display: grid;
}

.vsh_sport_massageTableHead {
  color: #fff;
  font-size: var(--type-meta-size);
  letter-spacing: .04em;
  text-transform: uppercase;
  background: #244f78;
  font-weight: 700;
}

.vsh_sport_massageTableRow {
  color: #263746;
  min-height: 42px;
  font-size: var(--type-small-size);
  border-top: 1px solid #244f7824;
  line-height: 1.35;
}

.vsh_sport_massageTableRow strong {
  color: #182d40;
  font-weight: 650;
}

.vsh_sport_massageTableHead > :last-child, .vsh_sport_massageTableRow > :last-child {
  text-align: right;
}

.vsh_sport_massageAppointment {
  background: #e8eff294;
  border: 1px solid #244f782e;
  border-radius: 8px;
  justify-content: space-between;
  align-items: end;
  gap: 16px;
  padding: 12px 14px;
  display: flex;
}

.vsh_sport_massageAppointment > div {
  gap: 3px;
  display: grid;
}

.vsh_sport_massageAppointment span, .vsh_sport_massageAppointment small {
  color: #52606c;
  font-size: var(--type-meta-size);
  line-height: 1.4;
}

.vsh_sport_massageAppointment a {
  color: #244f78;
  font-size: var(--type-body-size);
  text-underline-offset: 4px;
  font-weight: 700;
  text-decoration-thickness: 1px;
}

.vsh_sport_massageTherapistName {
  color: #244f78;
  font-size: var(--type-small-size);
  margin-bottom: 5px;
  line-height: 1.35;
}

.vsh_sport_trainingPanel {
  border-top: 1px solid #244f782e;
  gap: 14px;
  padding: 0 15px 16px;
  display: grid;
}

.vsh_sport_trainingPanel h2 {
  color: #244f78;
  font: 400 var(--type-lead-size) / var(--type-lead-line) var(--font-display);
  margin: 14px 0 0;
}

.vsh_sport_trainingList {
  border-top: 1px solid #244f7838;
  margin: 0;
  display: grid;
}

.vsh_sport_trainingList > div {
  border-bottom: 1px solid #244f7829;
  grid-template-columns: minmax(120px, .42fr) minmax(0, .58fr);
  align-items: center;
  gap: 12px;
  padding: 9px 2px;
  display: grid;
}

.vsh_sport_trainingList dt {
  color: #52606c;
  font-size: var(--type-meta-size);
  letter-spacing: .045em;
  text-transform: uppercase;
  font-weight: 650;
}

.vsh_sport_trainingList dd {
  font-size: var(--type-small-size);
  margin: 0;
  line-height: 1.35;
}

.vsh_sport_trainingContact {
  grid-template-columns: minmax(140px, .44fr) minmax(0, .56fr);
  gap: 18px;
  display: grid;
}

.vsh_sport_trainingContact > div, .vsh_sport_trainingContact nav {
  gap: 3px;
  display: grid;
}

.vsh_sport_trainingContact span, .vsh_sport_trainingContact small, .vsh_sport_trainingNote {
  color: #52606c;
  font-size: var(--type-meta-size);
  line-height: 1.4;
}

.vsh_sport_trainingContact strong {
  color: #244f78;
  font-size: var(--type-body-size);
}

.vsh_sport_trainingContact nav {
  align-content: center;
}

.vsh_sport_trainingContact a {
  color: #244f78;
  font-size: var(--type-small-size);
  overflow-wrap: anywhere;
  text-underline-offset: 4px;
  text-decoration-thickness: 1px;
}

.vsh_sport_trainingNote {
  margin: 0;
}

.vsh_sport_srOnly {
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  position: absolute;
  overflow: hidden;
}

@media (width <= 900px) {
  .vsh_sport_main {
    padding-top: 88px;
  }

  .vsh_sport_detail {
    grid-template: "vsh_sport_title"
                   "vsh_sport_media"
                   "vsh_sport_summary"
                   / 1fr;
    gap: 22px;
    width: min(760px, 90vw);
    padding-top: 24px;
  }

  .vsh_sport_title {
    max-width: none;
  }
}

@media (width <= 600px) {
  .vsh_sport_detail {
    gap: 24px;
    width: calc(100% - 36px);
    max-width: 100%;
    margin: 0 auto;
    padding: 24px 0 56px;
  }

  .vsh_sport_serviceList, .vsh_sport_contact, .vsh_sport_downloadLinks, .vsh_sport_trainingBooking, .vsh_sport_trainingList > div, .vsh_sport_trainingContact, .vsh_sport_massageAppointment {
    grid-template-columns: 1fr;
  }

  .vsh_sport_massageAppointment {
    align-items: start;
    display: grid;
  }

  .vsh_sport_massageTableHead, .vsh_sport_massageTableRow {
    grid-template-columns: minmax(0, 1.25fr) minmax(64px, .62fr) minmax(58px, .5fr);
    gap: 8px;
    padding-inline: 10px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .vsh_sport_downloadLinks a, .vsh_sport_primaryAction, .vsh_sport_trainingBookingPrimary, .vsh_sport_trainingBookingSecondary, .vsh_sport_trainingDetails summary span:last-child, .vsh_sport_massageDetails summary span:last-child {
    transition: none;
  }
}

/* wellness */
.vsh_wellness_overview {
  background: var(--surface);
  min-height: 70svh;
  color: var(--ink);
  padding-top: 117px;
}

.vsh_wellness_intro {
  border-bottom: 1px solid #244f7833;
  grid-template-columns: minmax(240px, 1fr) auto;
  align-items: center;
  gap: clamp(24px, 3vw, 44px);
  width: min(1320px, 88vw);
  margin: 0 auto;
  padding: clamp(22px, 1.8vw, 28px) 0;
  display: grid;
}

.vsh_wellness_intro h1 {
  color: #244f78;
  font-size: var(--type-title-size);
  line-height: var(--type-title-line);
  margin: 0;
}

.vsh_wellness_introCopy {
  border-top: 1px solid #244f7829;
  grid-template-columns: 1fr;
  align-items: start;
  gap: 12px;
  margin-top: 18px;
  padding-top: 18px;
  display: grid;
}

.vsh_wellness_introCopy h2 {
  color: var(--ink);
  font-size: var(--type-lead-size);
  line-height: var(--type-lead-line);
  margin: 0;
}

.vsh_wellness_introText {
  max-width: 58ch;
  color: var(--ink);
  font-size: var(--type-body-size);
  line-height: var(--type-body-line);
  gap: 10px;
  display: grid;
}

.vsh_wellness_introText p {
  margin: 0;
}

.vsh_wellness_introDisclosure {
  width: min(240px, 100%);
}

.vsh_wellness_introDisclosure[open] {
  width: min(700px, 58vw);
}

.vsh_wellness_introDisclosure summary {
  color: #244f78;
  cursor: pointer;
  min-height: 42px;
  font-size: var(--type-nav-size);
  letter-spacing: .06em;
  text-transform: uppercase;
  border-bottom: 1px solid #244f7859;
  justify-content: space-between;
  align-items: center;
  gap: 18px;
  padding: 7px 2px;
  font-weight: 650;
  list-style: none;
  display: flex;
}

.vsh_wellness_introDisclosure summary::-webkit-details-marker {
  display: none;
}

.vsh_wellness_introDisclosure summary span:last-child {
  font-size: 20px;
  font-weight: 400;
  line-height: 1;
  transition: transform .16s;
}

.vsh_wellness_introDisclosure[open] summary span:last-child {
  transform: rotate(45deg);
}

.vsh_wellness_facilitiesSection {
  padding: clamp(22px, 2vw, 32px) 4vw clamp(36px, 4vw, 56px);
}

.vsh_wellness_sectionInner {
  width: 100%;
  max-width: 1180px;
  margin: 0 auto;
}

.vsh_wellness_sectionHeader {
  justify-content: space-between;
  align-items: end;
  gap: 24px;
  margin-bottom: clamp(14px, 1.4vw, 18px);
  display: flex;
}

.vsh_wellness_sectionHeader h2 {
  color: #244f78;
  font-size: var(--type-lead-size);
  line-height: var(--type-lead-line);
  margin: 0;
}

.vsh_wellness_sectionHeader p {
  color: #3c4650;
  max-width: 44ch;
  font-size: var(--type-body-size);
  line-height: var(--type-body-line);
  text-align: right;
  margin: 0;
}

.vsh_wellness_facilityGrid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  align-items: stretch;
  gap: 14px;
  display: grid;
}

.vsh_wellness_facilityCard {
  background: #fffdf9;
  border: 1px solid #244f7824;
  border-radius: 14px;
  flex-direction: column;
  width: 100%;
  min-width: 0;
  height: 310px;
  max-height: 310px;
  scroll-margin-top: 132px;
  transition: box-shadow .18s, transform .18s;
  display: flex;
  position: relative;
  overflow: hidden;
  box-shadow: 0 9px 22px #23303a1c;
}

.vsh_wellness_facilityCard:hover {
  transform: translateY(-2px);
  box-shadow: 0 13px 28px #23303a26;
}

.vsh_wellness_media {
  background: #edf2ef;
  flex: 0 0 142px;
  height: 142px;
  overflow: hidden;
}

.vsh_wellness_media [data-room-gallery-trigger="true"] {
  aspect-ratio: auto;
  width: 100%;
  height: 100%;
  display: block;
}

.vsh_wellness_media [data-room-gallery-trigger="true"] img {
  object-fit: cover;
  width: 100%;
  height: 100%;
  transition: transform .28s;
}

.vsh_wellness_facilityCard:hover .vsh_wellness_media [data-room-gallery-trigger="true"] img {
  transform: scale(1.025);
}

.vsh_wellness_media [data-room-gallery-trigger="true"] span {
  border-radius: 5px;
  min-height: 32px;
  padding: 6px 8px;
  font-size: 12px;
  bottom: 9px;
  right: 9px;
}

.vsh_wellness_cardBody {
  flex: 1;
  grid-template-rows: auto auto 1fr auto;
  grid-template-columns: 44px minmax(0, 1fr);
  align-content: start;
  align-items: start;
  column-gap: 9px;
  min-height: 0;
  padding: 10px 11px 11px;
  display: grid;
}

.vsh_wellness_cardIcon {
  color: #244f78;
  background: #f8f4e9;
  border: 1px solid #244f7826;
  border-radius: 50%;
  grid-area: 1 / 1 / 3;
  place-items: center;
  width: 42px;
  height: 42px;
  display: grid;
  position: relative;
  box-shadow: inset 0 0 0 4px #ffffff8c;
}

.vsh_wellness_cardIcon > svg {
  width: 23px;
  height: 23px;
}

.vsh_wellness_cardTitle {
  color: #173d67;
  font: 400 clamp(17px, 1.15vw, 20px) / 1.15 var(--font-display);
  letter-spacing: -.025em;
  grid-area: 1 / 2;
  margin: 0 0 2px;
}

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

.vsh_wellness_cardBody > p {
  color: #4a5055;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  grid-area: 2 / 2;
  margin: 2px 0 0;
  font-size: 12.5px;
  line-height: 1.32;
  display: -webkit-box;
  overflow: hidden;
}

.vsh_wellness_cardActions {
  flex-wrap: wrap;
  grid-area: 4 / 1 / auto / -1;
  align-items: center;
  gap: 7px;
  width: 100%;
  margin-top: auto;
  padding-top: 10px;
  display: flex;
}

.vsh_wellness_cardAction, .vsh_wellness_cardSecondaryAction {
  color: #fff;
  background: #244f78;
  border: 1px solid #244f78;
  border-radius: 5px;
  flex: 104px;
  justify-content: center;
  align-items: center;
  gap: 8px;
  min-height: 42px;
  padding: 7px 9px;
  font-size: 12px;
  font-weight: 600;
  line-height: 1.2;
  text-decoration: none;
  transition: background .16s, border-color .16s, color .16s;
  display: inline-flex;
}

.vsh_wellness_cardAction > svg {
  flex: 0 0 18px;
  width: 18px;
  height: 18px;
}

.vsh_wellness_cardAction:hover, .vsh_wellness_cardAction:focus-visible {
  color: #fff;
  background: #173d67;
  border-color: #173d67;
}

.vsh_wellness_cardSecondaryAction {
  color: #244f78;
  background: none;
  border-color: #244f7861;
}

.vsh_wellness_cardSecondaryAction:hover, .vsh_wellness_cardSecondaryAction:focus-visible {
  color: #173d67;
  background: #244f780f;
  border-color: #244f78;
}

@media (width <= 1080px) {
  .vsh_wellness_intro {
    grid-template-columns: 1fr;
    gap: 18px;
    width: min(1320px, 90vw);
  }

  .vsh_wellness_introCopy {
    gap: 12px;
  }

  .vsh_wellness_introDisclosure, .vsh_wellness_introDisclosure[open] {
    width: 100%;
  }

  .vsh_wellness_facilitiesSection {
    padding-left: 5vw;
    padding-right: 5vw;
  }

  .vsh_wellness_facilityGrid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .vsh_wellness_facilityCard {
    max-width: 514px;
    height: 310px;
    max-height: 310px;
  }
}

@media (width <= 760px) {
  .vsh_wellness_overview {
    padding-top: 88px;
  }

  .vsh_wellness_intro {
    grid-template-columns: 1fr;
    gap: 18px;
    width: auto;
    margin: 0 24px;
    padding: 26px 0;
  }

  .vsh_wellness_introCopy, .vsh_wellness_facilityGrid {
    grid-template-columns: 1fr;
  }

  .vsh_wellness_introCopy {
    gap: 12px;
  }

  .vsh_wellness_facilitiesSection {
    padding: 30px 24px 48px;
  }

  .vsh_wellness_sectionHeader {
    gap: 8px;
    display: grid;
  }

  .vsh_wellness_sectionHeader p {
    text-align: left;
  }

  .vsh_wellness_facilityGrid {
    row-gap: 18px;
  }
}

@media (width <= 480px) {
  .vsh_wellness_intro {
    margin-left: 18px;
    margin-right: 18px;
  }

  .vsh_wellness_facilitiesSection {
    padding-left: 18px;
    padding-right: 18px;
  }

  .vsh_wellness_cardAction, .vsh_wellness_cardSecondaryAction {
    width: 100%;
  }

  .vsh_wellness_facilityCard {
    height: auto;
    max-height: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .vsh_wellness_cardAction, .vsh_wellness_cardSecondaryAction, .vsh_wellness_facilityCard, .vsh_wellness_media [data-room-gallery-trigger="true"] img, .vsh_wellness_introDisclosure summary span:last-child {
    transition: none;
  }

  .vsh_wellness_facilityCard:hover {
    transform: none;
  }
}

/* garage */
.vsh_garage_page {
  min-height: 70svh;
  color: var(--ink);
  background: var(--surface);
  padding-top: 117px;
}

.vsh_garage_intro {
  border-bottom: 1px solid #244f7833;
  justify-content: space-between;
  align-items: end;
  gap: 28px;
  width: min(1120px, 100% - 48px);
  margin: 0 auto;
  padding: 30px 0 24px;
  display: flex;
}

.vsh_garage_headerActions {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 9px;
  min-width: min(430px, 48vw);
  display: grid;
}

.vsh_garage_headerAction, .vsh_garage_receptionTrigger {
  color: #244f78;
  border: 1px solid #244f78;
  border-radius: 7px;
  grid-template-columns: 20px minmax(0, 1fr) 15px;
  align-items: center;
  gap: 8px;
  min-width: 0;
  min-height: 46px;
  padding: 10px 12px;
  font-size: 12px;
  font-weight: 700;
  display: grid;
}

.vsh_garage_headerAction svg, .vsh_garage_receptionTrigger svg {
  color: #3972a8;
  width: 18px;
  height: 18px;
}

.vsh_garage_headerAction {
  color: #244f78;
  background: none;
}

.vsh_garage_headerAction svg {
  color: #3972a8;
}

.vsh_garage_headerAction:hover, .vsh_garage_headerAction:focus-visible, .vsh_garage_receptionTrigger:hover, .vsh_garage_receptionTrigger:focus-visible, .vsh_garage_receptionTrigger[aria-expanded="true"] {
  color: #fff;
  background: #173f64;
}

.vsh_garage_headerAction:hover svg, .vsh_garage_headerAction:focus-visible svg, .vsh_garage_receptionTrigger:hover svg, .vsh_garage_receptionTrigger:focus-visible svg, .vsh_garage_receptionTrigger[aria-expanded="true"] svg {
  color: #fff;
}

.vsh_garage_eyebrow {
  color: #3972a8;
  letter-spacing: .09em;
  text-transform: uppercase;
  margin: 0 0 7px;
  font-size: 11px;
  font-weight: 700;
}

.vsh_garage_intro h1 {
  color: #244f78;
  font: 400 clamp(36px, 4vw, 48px) / 1 var(--font-display);
  letter-spacing: -.025em;
  margin: 0;
}

.vsh_garage_introCopy {
  grid-template-columns: minmax(180px, .72fr) minmax(280px, 1.28fr);
  gap: clamp(18px, 3vw, 38px);
  display: grid;
}

.vsh_garage_introCopy h2 {
  color: #244f78;
  font: 400 clamp(24px, 2.4vw, 31px) / 1.08 var(--font-display);
  margin: 0;
}

.vsh_garage_introCopy p {
  margin: 0;
  font-size: 14px;
  line-height: 1.55;
}

.vsh_garage_factBar {
  border-bottom: 1px solid #244f7833;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  width: min(1120px, 100% - 48px);
  margin: 0 auto;
  display: grid;
}

.vsh_garage_factBar article {
  grid-template-columns: 26px minmax(0, 1fr);
  align-items: center;
  gap: 10px;
  min-width: 0;
  padding: 15px 18px;
  display: grid;
}

.vsh_garage_factBar article + article {
  border-left: 1px solid #244f782e;
}

.vsh_garage_factBar svg {
  color: #3972a8;
  width: 22px;
  height: 22px;
}

.vsh_garage_factBar span {
  color: #111a23bf;
  font-size: 11px;
  line-height: 1.25;
  display: grid;
}

.vsh_garage_factBar strong {
  color: #244f78;
  font-size: 15px;
  font-weight: 700;
}

.vsh_garage_workspace {
  grid-template-columns: minmax(420px, 1.1fr) minmax(340px, .9fr);
  align-items: start;
  gap: clamp(28px, 4vw, 52px);
  width: min(1120px, 100% - 48px);
  margin: 0 auto;
  padding: 34px 0 52px;
  display: grid;
}

.vsh_garage_gallery {
  background: #e7e9e6;
  border-radius: 10px;
  overflow: hidden;
}

.vsh_garage_gallery [data-room-gallery-trigger="true"] {
  aspect-ratio: 4 / 3;
}

.vsh_garage_gallery [data-room-gallery-trigger="true"] img {
  object-fit: cover;
}

.vsh_garage_details {
  gap: 22px;
  display: grid;
}

.vsh_garage_details article + article {
  border-top: 1px solid #244f782e;
  padding-top: 20px;
}

.vsh_garage_detailHeading {
  grid-template-columns: 23px minmax(0, 1fr);
  align-items: center;
  gap: 9px;
  display: grid;
}

.vsh_garage_detailHeading svg {
  color: #3972a8;
  width: 21px;
  height: 21px;
}

.vsh_garage_detailHeading h2 {
  color: #244f78;
  font: 400 24px / 1.1 var(--font-display);
  margin: 0;
}

.vsh_garage_priceList {
  border-top: 1px solid #244f7829;
  border-bottom: 1px solid #244f7829;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin-top: 13px;
  display: grid;
}

.vsh_garage_priceList p {
  margin: 0;
  padding: 12px 4px;
  font-size: 12px;
  line-height: 1.4;
}

.vsh_garage_priceList p + p {
  border-left: 1px solid #244f7829;
  padding-left: 18px;
}

.vsh_garage_priceList strong {
  color: #244f78;
  font-size: 14px;
}

.vsh_garage_detailCopy p {
  margin: 10px 0 0;
  font-size: 13px;
  line-height: 1.55;
}

.vsh_garage_parkingFacts, .vsh_garage_chargingFacts {
  border-top: 1px solid #244f7829;
  border-bottom: 1px solid #244f7829;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin-top: 13px;
  display: grid;
}

.vsh_garage_chargingFacts {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.vsh_garage_parkingFacts > span, .vsh_garage_chargingFacts > span {
  grid-template-columns: 20px minmax(0, 1fr);
  align-items: center;
  gap: 2px 7px;
  min-width: 0;
  padding: 12px 10px;
  display: grid;
}

.vsh_garage_parkingFacts > span + span, .vsh_garage_chargingFacts > span + span {
  border-left: 1px solid #244f7829;
}

.vsh_garage_parkingFacts svg, .vsh_garage_chargingFacts svg {
  color: #3972a8;
  grid-row: 1 / 3;
  width: 18px;
  height: 18px;
}

.vsh_garage_parkingFacts strong, .vsh_garage_chargingFacts strong {
  color: #244f78;
  font-size: 13px;
}

.vsh_garage_parkingFacts small, .vsh_garage_chargingFacts small {
  overflow-wrap: anywhere;
  color: #111a23b8;
  font-size: 10px;
  line-height: 1.25;
}

.vsh_garage_actions {
  border-top: 1px solid #244f782e;
  border-bottom: 1px solid #244f782e;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  display: grid;
}

.vsh_garage_receptionTrigger {
  color: #244f78;
  text-align: left;
  cursor: pointer;
  background: none;
  border: 1px solid #244f78;
  width: 100%;
  font-family: inherit;
}

.vsh_garage_receptionAction {
  position: relative;
}

.vsh_garage_headerActions a:focus-visible, .vsh_garage_headerActions button:focus-visible {
  outline-offset: 2px;
  outline: 3px solid #3972a8;
}

.vsh_garage_receptionPanel {
  z-index: 8;
  background: var(--surface);
  border: 1px solid #244f783d;
  border-radius: 8px;
  gap: 5px;
  width: min(310px, 78vw);
  padding: 14px;
  display: grid;
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  box-shadow: 0 12px 30px #11263a29;
}

.vsh_garage_receptionPanel small {
  color: #3972a8;
  letter-spacing: .06em;
  text-transform: uppercase;
  font-size: 10px;
  font-weight: 700;
}

.vsh_garage_receptionPanel strong {
  color: #244f78;
  font-size: 17px;
}

.vsh_garage_receptionPanel > div {
  gap: 8px;
  margin-top: 6px;
  display: flex;
}

.vsh_garage_receptionPanel a, .vsh_garage_receptionPanel button {
  color: #244f78;
  min-height: 34px;
  font: inherit;
  cursor: pointer;
  background: none;
  border: 1px solid #244f78;
  border-radius: 5px;
  padding: 7px 10px;
  font-size: 11px;
  font-weight: 700;
}

.vsh_garage_receptionPanel a {
  color: #fff;
  background: #244f78;
}

@media (width <= 900px) {
  .vsh_garage_page {
    padding-top: 88px;
  }

  .vsh_garage_workspace {
    grid-template-columns: 1fr;
  }

  .vsh_garage_intro {
    align-items: start;
  }

  .vsh_garage_workspace, .vsh_garage_intro, .vsh_garage_factBar {
    width: min(760px, 100% - 40px);
  }

  .vsh_garage_introCopy {
    grid-template-columns: minmax(180px, .65fr) minmax(280px, 1.35fr);
  }
}

@media (width <= 620px) {
  .vsh_garage_intro, .vsh_garage_factBar, .vsh_garage_workspace {
    width: auto;
    margin-inline: 18px;
  }

  .vsh_garage_intro {
    padding: 24px 0 22px;
    display: grid;
  }

  .vsh_garage_headerActions {
    width: 100%;
    min-width: 0;
  }

  .vsh_garage_intro h1 {
    font-size: 34px;
  }

  .vsh_garage_introCopy {
    grid-template-columns: 1fr;
    gap: 10px;
  }

  .vsh_garage_factBar {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .vsh_garage_factBar article {
    padding: 12px 4px;
  }

  .vsh_garage_factBar article:nth-child(2n) {
    border-left: 1px solid #244f782e;
    padding-left: 14px;
  }

  .vsh_garage_factBar article:nth-child(n+3) {
    border-top: 1px solid #244f782e;
  }

  .vsh_garage_workspace {
    gap: 24px;
    padding: 26px 0 38px;
  }

  .vsh_garage_gallery [data-room-gallery-trigger="true"] {
    aspect-ratio: 16 / 11;
  }

  .vsh_garage_chargingFacts {
    grid-template-columns: 1fr;
  }

  .vsh_garage_chargingFacts > span + span {
    border-top: 1px solid #244f7829;
    border-left: 0;
  }

  .vsh_garage_receptionPanel {
    right: 0;
  }
}

/* info */
.vsh_info_shell {
  --page-blue: #3972a8;
  --page-blue-deep: #244f78;
  --page-navy: #102f49;
  --page-cream: var(--surface, #fafbf5);
  --page-white: #fff;
  background: var(--page-cream);
  color: var(--ink);
  position: relative;
  overflow: clip;
}

.vsh_info_main {
  background: var(--page-cream);
  min-height: 70vh;
}

.vsh_info_contactPage {
  background: var(--page-cream);
  padding: 117px 0 48px;
}

.vsh_info_contactHero {
  grid-template-columns: minmax(320px, .9fr) minmax(340px, 1.1fr);
  align-items: start;
  gap: clamp(30px, 5vw, 66px);
  width: min(1120px, 90vw);
  margin: 0 auto;
  padding: clamp(28px, 3.5vw, 44px) 0 28px;
  display: grid;
}

.vsh_info_contactIntro h1 {
  max-width: none;
  color: var(--page-blue-deep);
  letter-spacing: -.025em;
  margin: 10px 0 16px;
  font-size: clamp(34px, 3.2vw, 48px);
  line-height: 1.02;
}

.vsh_info_contactEyebrow {
  color: var(--page-blue);
  font-size: var(--type-label-size);
  font-weight: 700;
  line-height: var(--type-label-line);
  letter-spacing: .09em;
  text-transform: uppercase;
  margin: 0;
}

.vsh_info_contactLead {
  max-width: 520px;
  font-size: var(--type-body-size);
  line-height: var(--type-body-line);
  margin: 0;
}

.vsh_info_contactActions {
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 22px;
  display: flex;
}

.vsh_info_contactPrimaryAction, .vsh_info_contactSecondaryAction {
  border: 1px solid var(--page-blue-deep);
  border-radius: 4px;
  align-items: center;
  gap: 10px;
  min-height: 42px;
  padding: 9px 14px;
  font-size: 14px;
  font-weight: 700;
  line-height: 1.2;
  transition: background-color .16s, color .16s, transform .16s;
  display: inline-flex;
}

.vsh_info_contactPrimaryAction {
  color: var(--page-white);
  background: var(--page-blue-deep);
}

.vsh_info_contactSecondaryAction {
  color: var(--page-blue-deep);
  background: none;
}

.vsh_info_contactPrimaryAction svg, .vsh_info_contactSecondaryAction svg {
  width: 18px;
  height: 18px;
}

.vsh_info_contactPrimaryAction:hover, .vsh_info_contactSecondaryAction:hover {
  transform: translateY(-2px);
}

.vsh_info_contactSecondaryAction:hover {
  color: var(--page-white);
  background: var(--page-blue-deep);
}

.vsh_info_contactAddressPanel {
  color: var(--ink);
  background: none;
  border-left: 1px solid #244f7847;
  flex-direction: column;
  justify-content: center;
  margin: 0;
  padding: 10px 0 10px clamp(28px, 4vw, 52px);
  font-style: normal;
  display: flex;
}

.vsh_info_contactAddressPanel > svg {
  width: 26px;
  height: 26px;
  color: var(--page-blue);
  margin-bottom: 18px;
}

.vsh_info_contactAddressPanel p {
  color: var(--page-blue);
  font-size: var(--type-label-size);
  font-weight: 700;
  line-height: var(--type-label-line);
  letter-spacing: .09em;
  text-transform: uppercase;
  margin: 0 0 8px;
}

.vsh_info_contactAddressPanel strong {
  color: var(--page-blue-deep);
  font: 400 clamp(24px, 2.2vw, 30px) / 1.08 var(--font-display);
  margin-bottom: 6px;
}

.vsh_info_contactAddressPanel span {
  font-size: var(--type-body-size);
  line-height: var(--type-body-line);
}

.vsh_info_contactAddressPanel a {
  color: var(--page-blue-deep);
  border-bottom: 1px solid #244f7873;
  align-self: flex-start;
  margin-top: 12px;
  padding-bottom: 3px;
  font-size: 14px;
  line-height: 1.35;
}

.vsh_info_contactAddressPanel a + a {
  margin-top: 7px;
}

.vsh_info_contactFacts span {
  display: grid;
}

.vsh_info_contactFacts strong {
  font-weight: 700;
}

.vsh_info_contactFacts {
  border-top: 1px solid #244f7833;
  border-bottom: 1px solid #244f7833;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  width: min(1120px, 90vw);
  margin: 0 auto;
  padding: 14px 0;
  display: grid;
}

.vsh_info_contactFacts article {
  min-width: 0;
  font-size: var(--type-small-size);
  grid-template-columns: 28px minmax(0, 1fr);
  align-items: center;
  gap: 9px;
  padding: 2px 22px;
  line-height: 1.45;
  display: grid;
}

.vsh_info_contactFacts article + article {
  border-left: 1px solid #244f7833;
}

.vsh_info_contactFacts svg {
  width: 23px;
  height: 23px;
  color: var(--page-blue-deep);
}

.vsh_info_contactArrival {
  grid-template-columns: minmax(260px, .78fr) minmax(0, 1.22fr);
  align-items: start;
  gap: clamp(50px, 9vw, 130px);
  width: min(1120px, 90vw);
  margin: 0 auto;
  padding: clamp(42px, 4vw, 58px) 0;
  display: grid;
}

.vsh_info_contactArrival h2, .vsh_info_contactGarage h2, .vsh_info_contactMapIntro h2 {
  color: var(--page-blue-deep);
  font: 400 clamp(30px, 2.8vw, 40px) / 1.05 var(--font-display);
  letter-spacing: -.025em;
  margin: 10px 0 14px;
}

.vsh_info_contactArrival header > p:last-child, .vsh_info_contactMapIntro > p {
  font-size: var(--type-body-size);
  line-height: var(--type-body-line);
  margin: 0;
}

.vsh_info_arrivalDetails {
  border-top: 1px solid #244f7842;
}

.vsh_info_arrivalDetails p {
  font-size: var(--type-body-size);
  line-height: var(--type-body-line);
  border-bottom: 1px solid #244f782e;
  margin: 0;
  padding: 14px 6px 14px 34px;
  position: relative;
}

.vsh_info_arrivalDetails p:before {
  content: "→";
  color: var(--page-blue);
  font-size: 20px;
  position: absolute;
  top: 14px;
  left: 2px;
}

.vsh_info_arrivalDetails strong {
  color: var(--page-blue-deep);
}

.vsh_info_contactGarage {
  background: none;
  border-top: 1px solid #244f783d;
  border-bottom: 1px solid #244f783d;
  grid-template-columns: minmax(260px, .72fr) minmax(0, 1.28fr);
  gap: clamp(40px, 7vw, 90px);
  width: min(1120px, 90vw);
  margin: 0 auto clamp(48px, 5vw, 72px);
  padding: 34px 0;
  display: grid;
}

.vsh_info_contactGarage > header {
  color: var(--ink);
  background: none;
  flex-direction: column;
  justify-content: center;
  padding: 0;
  display: flex;
}

.vsh_info_contactGarage > div {
  border-left: 1px solid #244f7833;
  flex-direction: column;
  justify-content: center;
  padding: 4px 0 4px clamp(26px, 3vw, 42px);
  display: flex;
}

.vsh_info_contactGarage > header > svg {
  width: 25px;
  height: 25px;
  color: var(--page-blue);
}

.vsh_info_contactGarage > header h2 {
  color: var(--page-blue-deep);
}

.vsh_info_garageCopy {
  font-size: var(--type-body-size);
  line-height: var(--type-body-line);
}

.vsh_info_garageCopy p {
  margin: 0;
}

.vsh_info_contactGarage a, .vsh_info_contactMapIntro a {
  color: var(--page-blue-deep);
  font-size: var(--type-ui-size);
  border-bottom: 1px solid;
  align-self: flex-start;
  align-items: center;
  gap: 18px;
  margin-top: 18px;
  padding-bottom: 5px;
  font-weight: 700;
  line-height: 1.2;
  display: inline-flex;
}

.vsh_info_contactMapSection {
  background: none;
  border-top: 1px solid #244f783d;
  grid-template-columns: minmax(300px, .72fr) minmax(0, 1.28fr);
  gap: clamp(34px, 6vw, 76px);
  width: min(1120px, 90vw);
  margin: 0 auto clamp(52px, 6vw, 82px);
  padding: 34px 0 0;
  display: grid;
}

.vsh_info_contactMapIntro {
  color: var(--ink);
  flex-direction: column;
  justify-content: center;
  padding: 12px 0 34px;
  display: flex;
}

.vsh_info_contactMapIntro > svg {
  width: 25px;
  height: 25px;
  color: var(--page-blue);
}

.vsh_info_contactMapIntro h2, .vsh_info_contactMapIntro a {
  color: var(--page-blue-deep);
}

.vsh_info_contactMap {
  min-height: 280px;
  color: var(--ink);
  padding: 0;
}

.vsh_info_contactMap .mapPlaceholder, .vsh_info_contactMap .mapFrame, .vsh_info_contactMap .mapFrame iframe {
  width: 100%;
  min-height: 280px;
}

.vsh_info_contactMap .mapPlaceholder {
  background: #edf1ef;
  border: 1px solid #244f782e;
  border-radius: 4px;
  justify-content: center;
  padding: clamp(24px, 4vw, 42px);
}

.vsh_info_contactMap .mapFrame {
  border: 1px solid #244f782e;
  border-radius: 4px;
  overflow: hidden;
}

.vsh_info_contactMap .mapPlaceholder button {
  border-color: var(--page-blue-deep);
  color: var(--page-blue-deep);
}

.vsh_info_contactMap .mapActions a {
  color: var(--page-blue-deep);
  border-color: #244f7873;
}

.vsh_info_contactPrimaryAction:focus-visible, .vsh_info_contactSecondaryAction:focus-visible, .vsh_info_contactGarage a:focus-visible, .vsh_info_contactMapIntro a:focus-visible {
  outline: 3px solid var(--ink);
  outline-offset: 4px;
}

.vsh_info_contactWorkspace {
  grid-template-columns: minmax(290px, .72fr) minmax(0, 1.28fr);
  align-items: stretch;
  gap: 24px;
  width: min(1180px, 100% - 48px);
  margin: 0 auto;
  padding-top: 34px;
  display: grid;
}

.vsh_info_contactShell {
  background: #ffffff8a;
  border: 1px solid #244f7829;
  border-radius: 16px;
  min-width: 0;
  padding: 28px;
  box-shadow: 0 14px 34px #16345012;
}

.vsh_info_contactHeading {
  gap: 8px;
  max-width: 720px;
  display: grid;
}

.vsh_info_contactHeading h1 {
  color: var(--page-blue-deep);
  font: 400 clamp(34px, 3.4vw, 44px) / 1 var(--font-display);
  letter-spacing: -.025em;
  margin: 0;
}

.vsh_info_contactHeading .vsh_info_contactLead {
  max-width: 640px;
  font-size: 15px;
  line-height: 1.55;
}

.vsh_info_contactActionGrid {
  border-top: 1px solid #244f7833;
  border-bottom: 1px solid #244f7833;
  grid-template-columns: 1fr;
  margin-top: 24px;
  font-style: normal;
  display: grid;
}

.vsh_info_contactAction {
  min-width: 0;
  color: var(--ink);
  grid-template-columns: 28px minmax(0, 1fr) 18px;
  align-items: start;
  gap: 12px;
  padding: 17px 4px;
  transition: background-color .16s;
  display: grid;
}

.vsh_info_contactAction + .vsh_info_contactAction {
  border-top: 1px solid #244f7833;
}

.vsh_info_contactAction:hover {
  background: #244f780d;
}

.vsh_info_contactAction > svg {
  width: 23px;
  height: 23px;
  color: var(--page-blue);
}

.vsh_info_contactAction > span:nth-child(2) {
  gap: 2px;
  min-width: 0;
  display: grid;
}

.vsh_info_contactAction small {
  color: var(--page-blue);
  letter-spacing: .08em;
  text-transform: uppercase;
  font-size: 10px;
  font-weight: 700;
}

.vsh_info_contactAction strong {
  color: var(--page-blue-deep);
  text-overflow: ellipsis;
  font-size: 14px;
  font-weight: 700;
  line-height: 1.3;
  overflow: hidden;
}

.vsh_info_contactAction > span:nth-child(2) > span {
  font-size: 12px;
  line-height: 1.35;
}

.vsh_info_contactActionArrow {
  color: var(--page-blue-deep);
  font-size: 16px;
}

.vsh_info_journeyPlanner {
  background: #ffffff8a;
  border: 1px solid #244f7829;
  border-radius: 16px;
  grid-template-columns: minmax(280px, .9fr) minmax(300px, 1.1fr);
  align-items: stretch;
  gap: 24px;
  min-width: 0;
  padding: 28px;
  display: grid;
  box-shadow: 0 14px 34px #16345012;
}

.vsh_info_journeyControls h2 {
  color: var(--page-blue-deep);
  font: 400 clamp(27px, 2.6vw, 36px) / 1.05 var(--font-display);
  letter-spacing: -.02em;
  margin: 6px 0;
}

.vsh_info_journeyIntro {
  margin: 0 0 18px;
  font-size: 14px;
  line-height: 1.5;
}

.vsh_info_journeyDirection {
  background: #244f7814;
  border-radius: 8px;
  grid-template-columns: 1fr 1fr;
  margin-bottom: 16px;
  padding: 3px;
  display: inline-grid;
}

.vsh_info_journeyDirection button {
  min-height: 34px;
  color: var(--page-blue-deep);
  font: inherit;
  cursor: pointer;
  background: none;
  border: 0;
  border-radius: 6px;
  padding: 6px 12px;
  font-size: 12px;
  font-weight: 700;
}

.vsh_info_journeyDirection button[aria-pressed="true"] {
  background: #244f78;
  color: #fff;
  box-shadow: 0 2px 10px #1634501f;
}

.vsh_info_journeyField {
  gap: 5px;
  display: grid;
}

.vsh_info_journeyField > span, .vsh_info_journeyPresets:before {
  color: var(--page-blue-deep);
  letter-spacing: .07em;
  text-transform: uppercase;
  font-size: 10px;
  font-weight: 700;
}

.vsh_info_journeyField input {
  width: 100%;
  min-height: 42px;
  color: var(--ink);
  background: var(--page-white);
  font: inherit;
  border: 1px solid #244f7847;
  border-radius: 6px;
  padding: 9px 11px;
  font-size: 13px;
}

.vsh_info_journeyPresets {
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 13px;
  display: flex;
}

.vsh_info_journeyPresets:before {
  content: attr(aria-label);
  width: 100%;
}

.vsh_info_journeyPresets button {
  color: var(--page-blue-deep);
  font: inherit;
  cursor: pointer;
  background: none;
  border: 1px solid #244f7838;
  border-radius: 999px;
  padding: 5px 9px;
  font-size: 11px;
}

.vsh_info_journeyPresets button:hover, .vsh_info_journeyPresets button[aria-pressed="true"] {
  color: var(--page-white);
  background: var(--page-blue-deep);
}

.vsh_info_journeyModes {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 6px;
  margin-top: 14px;
  display: grid;
}

.vsh_info_journeyModes button {
  min-height: 44px;
  color: var(--page-blue-deep);
  font: inherit;
  cursor: pointer;
  background: none;
  border: 1px solid #244f782e;
  border-radius: 6px;
  place-items: center;
  gap: 1px;
  padding: 4px;
  font-size: 10px;
  display: grid;
}

.vsh_info_journeyModes button svg {
  width: 18px;
  height: 18px;
}

.vsh_info_journeyModes button[aria-pressed="true"] {
  border-color: #244f78;
  background: #244f78;
  color: #fff;
  font-weight: 700;
}

.vsh_info_journeySubmit {
  min-height: 39px;
  color: var(--page-white);
  background: var(--page-blue-deep);
  border-radius: 6px;
  align-items: center;
  gap: 18px;
  margin-top: 16px;
  padding: 8px 13px;
  font-size: 12px;
  font-weight: 700;
  display: inline-flex;
}

.vsh_info_journeyNotes {
  color: #111a23b3;
  flex-wrap: wrap;
  gap: 8px 18px;
  margin-top: 13px;
  font-size: 11px;
  display: flex;
}

.vsh_info_journeyNotes span:before {
  content: "✓";
  color: var(--page-blue);
  margin-right: 6px;
}

.vsh_info_journeyMap {
  min-height: 390px;
}

.vsh_info_journeyMap .mapPlaceholder, .vsh_info_journeyMap .mapFrame, .vsh_info_journeyMap .mapFrame iframe {
  width: 100%;
  min-height: 390px;
}

.vsh_info_journeyMap .mapPlaceholder {
  color: var(--ink);
  background: #edf1ef;
  border: 1px solid #244f782e;
  border-radius: 12px;
  justify-content: center;
  padding: 28px;
  font-size: 13px;
  line-height: 1.45;
}

.vsh_info_journeyMap .mapFrame {
  border-radius: 12px;
  overflow: hidden;
}

.vsh_info_journeyMap .mapPlaceholder button {
  border-color: var(--page-blue-deep);
  min-height: 36px;
  color: var(--page-blue-deep);
  border-radius: 6px;
  padding: 7px 11px;
}

.vsh_info_journeyMap .mapActions a {
  color: var(--page-blue-deep);
  border-color: #244f7859;
}

.vsh_info_contactAction:focus-visible, .vsh_info_journeyPlanner button:focus-visible, .vsh_info_journeyPlanner input:focus-visible, .vsh_info_journeySubmit:focus-visible {
  outline: 3px solid var(--page-blue);
  outline-offset: 2px;
}

.vsh_info_hero {
  min-height: min(82svh, 820px);
  color: var(--page-white);
  background-color: var(--page-blue-deep);
  background-position: center;
  background-size: cover;
  align-items: flex-end;
  padding: 170px 7vw 82px;
  display: flex;
  position: relative;
  overflow: hidden;
}

.vsh_info_heroPlain {
  background: radial-gradient(circle at 84% 22%, #ffffff2e, transparent 18%),
    linear-gradient(120deg, var(--page-navy), var(--page-blue) 72%, #78a6d0);
  min-height: clamp(500px, 68svh, 690px);
}

.vsh_info_heroImage {
  background-position: 50% 54%;
}

.vsh_info_heroShade {
  background: linear-gradient(90deg, #0b2336d6, #0b23361f 70%), linear-gradient(0deg, #0b233680, #0000 58%);
  position: absolute;
  inset: 0;
}

.vsh_info_heroContent {
  z-index: 1;
  width: min(1100px, 100%);
  position: relative;
}

.vsh_info_hero h1 {
  max-width: 1050px;
  color: inherit;
  font-size: var(--type-hero-size);
  letter-spacing: -.01em;
  line-height: var(--type-hero-line);
  margin: 0;
}

.vsh_info_featureGrid {
  background: var(--page-cream);
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 18px;
  padding: 110px 4vw;
  display: grid;
}

.vsh_info_featureCard {
  background: var(--page-cream);
  border-radius: 3px;
  grid-column: span 6;
  min-width: 0;
  scroll-margin-top: 132px;
  overflow: hidden;
}

.vsh_info_featureCard:nth-child(3n+1) {
  grid-column: span 7;
}

.vsh_info_featureCard:nth-child(3n+2) {
  grid-column: span 5;
}

.vsh_info_featureHeading {
  justify-content: space-between;
  align-items: flex-end;
  gap: 30px;
  min-height: 190px;
  padding: 34px;
  display: flex;
}

.vsh_info_featureHeading h3, .vsh_info_actionCard h3 {
  font: 400 var(--type-card-size) / var(--type-card-line) var(--font-display);
  letter-spacing: -.01em;
  margin: 0;
}

.vsh_info_featureMedia {
  overscroll-behavior-inline: contain;
  scroll-snap-type: inline mandatory;
  scrollbar-width: thin;
  grid-auto-columns: minmax(78%, 1fr);
  grid-auto-flow: column;
  gap: 4px;
  display: grid;
  overflow-x: auto;
}

.vsh_info_mediaLink {
  scroll-snap-align: start;
  min-width: 0;
  display: block;
}

.vsh_info_featureMedia img {
  object-fit: cover;
  width: 100%;
  min-height: 470px;
  max-height: 620px;
  display: block;
}

.vsh_info_actionCard {
  min-height: 520px;
  color: var(--page-white);
  background: radial-gradient(circle at 80% 18%, #ffffff2e, transparent 21%),
    var(--page-blue);
  flex-direction: column;
  justify-content: space-between;
  padding: 36px;
  display: flex;
}

.vsh_info_actionLink {
  font-size: var(--type-ui-size);
  letter-spacing: .04em;
  border-top: 1px solid #ffffff7a;
  justify-content: space-between;
  align-items: center;
  gap: 24px;
  padding-top: 20px;
  font-weight: 500;
  line-height: 1.2;
  display: flex;
}

.vsh_info_actionIcon {
  width: 48px;
  height: 48px;
  color: var(--page-blue);
  background: var(--page-white);
  border-radius: 50%;
  place-items: center;
  display: grid;
}

.vsh_info_actionIcon:before {
  content: "↗";
}

.vsh_info_lead {
  width: min(1120px, 100% - 48px);
  font: 400 var(--type-lead-size) / var(--type-lead-line) var(--font-display);
  letter-spacing: -.01em;
  margin: 0 auto;
  padding: 120px 0 90px;
}

.vsh_info_lead > :first-child {
  margin-top: 0;
}

.vsh_info_lead > :last-child {
  margin-bottom: 0;
}

.vsh_info_sectionList {
  width: min(1180px, 100% - 48px);
  margin: 0 auto;
  padding: 90px 0 120px;
}

.vsh_info_lead + .vsh_info_sectionList {
  padding-top: 0;
}

.vsh_info_contentSection {
  border-top: 1px solid #12202a38;
  grid-template-columns: minmax(230px, .75fr) minmax(0, 1.25fr);
  gap: clamp(36px, 8vw, 120px);
  padding: 55px 0;
  display: grid;
}

.vsh_info_contentSection:last-child {
  border-bottom: 1px solid #12202a38;
}

.vsh_info_contentSection h2, .vsh_info_contentSection h3, .vsh_info_contentSection h4 {
  font-family: var(--font-display);
  white-space: pre-line;
  margin: 0;
  font-weight: 400;
}

.vsh_info_contentSection h2 {
  font-size: var(--type-section-size);
  line-height: var(--type-section-line);
  letter-spacing: -.02em;
}

.vsh_info_contentSection h3 {
  font-size: var(--type-card-size);
  line-height: var(--type-card-line);
  letter-spacing: -.01em;
}

.vsh_info_contentSection h4 {
  font-size: var(--type-subheading-size);
  line-height: var(--type-subheading-line);
}

.vsh_info_richText {
  min-width: 0;
  font-size: var(--type-body-large-size);
  line-height: var(--type-body-large-line);
}

.vsh_info_lead.vsh_info_richText {
  font-size: var(--type-lead-size);
  line-height: var(--type-lead-line);
}

.vsh_info_richText p {
  margin: 0 0 1.25em;
}

.vsh_info_richText p:last-child {
  margin-bottom: 0;
}

.vsh_info_richText a {
  color: var(--page-blue-deep);
  overflow-wrap: anywhere;
  border-bottom: 1px solid;
}

.vsh_info_richText ul, .vsh_info_richText ol {
  margin: 1.2em 0;
  padding-left: 1.35em;
}

.vsh_info_richText li {
  margin: .6em 0;
  padding-left: .35em;
}

.vsh_info_richText h4 {
  font: 400 var(--type-subheading-size) / var(--type-subheading-line) var(--font-display);
  margin: 2.2em 0 .7em;
}

.vsh_info_wideGallery {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  padding: 0 2vw 120px;
  display: grid;
}

.vsh_info_wideGallery .vsh_info_mediaLink {
  height: min(64vw, 620px);
}

.vsh_info_wideGallery img {
  object-fit: cover;
  width: 100%;
  height: 100%;
  display: block;
}

.vsh_info_accordions {
  width: min(1180px, 100% - 48px);
  margin: 0 auto;
  padding: 105px 0 130px;
}

.vsh_info_accordion {
  border-top: 1px solid #12202a47;
}

.vsh_info_accordion:last-child {
  border-bottom: 1px solid #12202a47;
}

.vsh_info_accordion summary {
  cursor: pointer;
  grid-template-columns: minmax(0, 1fr) 48px;
  align-items: center;
  gap: 22px;
  padding: 30px 0;
  list-style: none;
  display: grid;
}

.vsh_info_accordion summary::-webkit-details-marker {
  display: none;
}

.vsh_info_accordion summary h2 {
  font: 400 var(--type-subheading-size) / var(--type-subheading-line) var(--font-display);
  letter-spacing: -.01em;
  margin: 0;
}

.vsh_info_accordionIcon {
  width: 42px;
  height: 42px;
  color: var(--page-white);
  background: var(--page-blue);
  border-radius: 50%;
  place-items: center;
  font-size: 22px;
  transition: transform .18s;
  display: grid;
}

.vsh_info_accordionIcon:before {
  content: "+";
}

.vsh_info_accordion[open] .vsh_info_accordionIcon {
  transform: rotate(45deg);
}

.vsh_info_accordionBody {
  max-width: 850px;
  margin-left: 76px;
  padding: 4px 0 52px;
}

.vsh_info_privacyPage {
  color: var(--ink);
  background: var(--page-cream);
  padding-top: 117px;
}

.vsh_info_privacyIntro {
  color: var(--page-white);
  background: var(--page-blue-deep);
  padding: 48px 24px 44px;
}

.vsh_info_privacyIntro > div {
  width: min(1040px, 100%);
  margin: 0 auto;
}

.vsh_info_privacyEyebrow {
  letter-spacing: .08em;
  text-transform: uppercase;
  border: 1px solid #ffffff73;
  border-radius: 999px;
  margin: 0 0 12px;
  padding: 5px 10px;
  font-size: 10px;
  font-weight: 700;
  display: inline-flex;
}

.vsh_info_privacyIntro h1 {
  font: 400 clamp(42px, 5vw, 62px) / .98 var(--font-display);
  letter-spacing: -.025em;
  margin: 0;
}

.vsh_info_privacyContext {
  color: #ffffffc7;
  letter-spacing: .04em;
  margin: 12px 0 0;
  font-size: 12px;
  font-weight: 700;
}

.vsh_info_privacyLead {
  color: #ffffffeb;
  max-width: 780px;
  margin: 20px 0 0;
  font-size: 16px;
  line-height: 1.55;
}

.vsh_info_privacyLayout {
  grid-template-columns: 250px minmax(0, 1fr);
  align-items: start;
  gap: 28px;
  width: min(1120px, 100% - 48px);
  margin: 0 auto;
  padding: 34px 0 70px;
  display: grid;
}

.vsh_info_privacyContents {
  background: var(--page-white);
  border: 1px solid #244f7829;
  border-radius: 10px;
  padding: 17px;
  position: sticky;
  top: 137px;
}

.vsh_info_privacyContents > p {
  color: var(--page-blue-deep);
  letter-spacing: .09em;
  text-transform: uppercase;
  margin: 0 0 10px;
  font-size: 10px;
  font-weight: 700;
}

.vsh_info_privacyContents nav {
  gap: 2px;
  display: grid;
}

.vsh_info_privacyContents a {
  min-width: 0;
  color: var(--ink);
  border-radius: 5px;
  grid-template-columns: 24px minmax(0, 1fr);
  align-items: center;
  gap: 8px;
  padding: 6px 5px;
  font-size: 11px;
  line-height: 1.25;
  display: grid;
}

.vsh_info_privacyContents a > span:first-child {
  width: 22px;
  height: 22px;
  color: var(--page-blue-deep);
  background: #3972a81f;
  border-radius: 50%;
  place-items: center;
  font-size: 10px;
  font-weight: 700;
  display: grid;
}

.vsh_info_privacyContents a:hover {
  color: var(--page-blue-deep);
  background: #244f780d;
}

.vsh_info_privacySections {
  gap: 14px;
  min-width: 0;
  display: grid;
}

.vsh_info_privacySection {
  background: var(--page-white);
  border: 1px solid #244f7829;
  border-radius: 10px;
  padding: 20px 22px 22px;
  scroll-margin-top: 140px;
}

.vsh_info_privacySection header {
  grid-template-columns: 34px minmax(0, 1fr);
  align-items: center;
  gap: 11px;
  display: grid;
}

.vsh_info_privacySection header > span {
  width: 32px;
  height: 32px;
  color: var(--page-white);
  background: var(--page-blue-deep);
  border-radius: 50%;
  place-items: center;
  font-size: 12px;
  font-weight: 700;
  display: grid;
}

.vsh_info_privacySection h2 {
  color: var(--page-blue-deep);
  font: 400 clamp(23px, 2.2vw, 29px) / 1.08 var(--font-display);
  letter-spacing: -.01em;
  margin: 0;
}

.vsh_info_privacySectionBody {
  margin: 13px 0 0 45px;
  font-size: 13px;
  line-height: 1.62;
}

.vsh_info_privacySectionBody p {
  margin: 0 0 11px;
}

.vsh_info_privacySectionBody p:last-child {
  margin-bottom: 0;
}

.vsh_info_privacySectionBody h4 {
  color: var(--page-blue-deep);
  margin: 20px 0 6px;
  font-size: 14px;
}

.vsh_info_privacySectionBody h3 {
  color: var(--page-blue-deep);
  margin: 20px 0 6px;
  font-size: 14px;
  font-weight: 700;
}

.vsh_info_privacySectionBody [role="region"] {
  max-width: 100%;
  margin: 16px 0;
  overflow-x: auto;
}

.vsh_info_privacySectionBody table {
  border-collapse: collapse;
  width: 100%;
  font-size: 12px;
  line-height: 1.45;
}

.vsh_info_privacySectionBody caption {
  color: var(--page-blue-deep);
  text-align: left;
  padding: 0 0 8px;
  font-weight: 700;
}

.vsh_info_privacySectionBody th, .vsh_info_privacySectionBody td {
  text-align: left;
  vertical-align: top;
  border: 1px solid #244f782e;
  padding: 9px 10px;
}

.vsh_info_privacySectionBody thead th {
  color: var(--page-white);
  background: var(--page-blue-deep);
}

.vsh_info_privacySectionBody tbody th {
  color: var(--page-blue-deep);
  background: #3972a812;
}

.vsh_info_privacySectionBody a {
  color: var(--page-blue-deep);
  text-underline-offset: 2px;
  text-decoration: underline;
}

.vsh_info_privacyContents a:focus-visible, .vsh_info_privacySectionBody a:focus-visible {
  outline: 3px solid var(--page-blue);
  outline-offset: 2px;
}

@media (width <= 1100px) {
  .vsh_info_contactWorkspace {
    grid-template-columns: 1fr;
    width: min(760px, 100% - 40px);
  }
}

@media (width <= 900px) {
  .vsh_info_privacyPage {
    padding-top: 88px;
  }

  .vsh_info_privacyIntro {
    padding: 38px 24px 36px;
  }

  .vsh_info_privacyLayout {
    grid-template-columns: 1fr;
    gap: 20px;
    width: min(760px, 100% - 40px);
  }

  .vsh_info_privacyContents {
    position: static;
  }

  .vsh_info_privacyContents nav {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .vsh_info_contactPage {
    padding-top: 88px;
  }

  .vsh_info_contactWorkspace {
    width: min(760px, 100% - 40px);
  }

  .vsh_info_contactShell, .vsh_info_journeyPlanner {
    width: auto;
  }

  .vsh_info_contactActionGrid {
    grid-template-columns: 1fr;
  }

  .vsh_info_contactAction + .vsh_info_contactAction {
    border-top: 1px solid #244f782e;
    border-left: 0;
  }

  .vsh_info_contactAction {
    padding: 14px 6px;
  }

  .vsh_info_journeyPlanner {
    grid-template-columns: 1fr;
    gap: 24px;
    padding-bottom: 40px;
  }

  .vsh_info_journeyMap, .vsh_info_journeyMap .mapPlaceholder, .vsh_info_journeyMap .mapFrame, .vsh_info_journeyMap .mapFrame iframe {
    min-height: 300px;
  }

  .vsh_info_contactHero, .vsh_info_contactArrival, .vsh_info_contactGarage, .vsh_info_contactMapSection {
    grid-template-columns: 1fr;
  }

  .vsh_info_contactHero {
    gap: 28px;
    width: min(760px, 90vw);
  }

  .vsh_info_contactIntro h1 {
    max-width: none;
  }

  .vsh_info_contactFacts {
    width: min(760px, 90vw);
  }

  .vsh_info_contactFacts article {
    padding-inline: 18px;
  }

  .vsh_info_contactArrival {
    gap: 38px;
    width: min(760px, 90vw);
  }

  .vsh_info_contactGarage, .vsh_info_contactMapSection {
    width: min(760px, 90vw);
  }

  .vsh_info_contactMapIntro {
    padding-bottom: 8px;
  }

  .vsh_info_hero {
    min-height: 68svh;
    padding: 145px 24px 58px;
  }

  .vsh_info_featureGrid {
    grid-template-columns: 1fr;
    padding: 70px 18px;
  }

  .vsh_info_featureCard, .vsh_info_featureCard:nth-child(3n+1), .vsh_info_featureCard:nth-child(3n+2) {
    grid-column: 1;
  }

  .vsh_info_featureMedia img, .vsh_info_actionCard {
    min-height: 390px;
  }

  .vsh_info_contentSection {
    grid-template-columns: 1fr;
    gap: 24px;
    padding: 44px 0;
  }

  .vsh_info_wideGallery {
    grid-template-columns: 1fr;
    padding: 0 18px 80px;
  }

  .vsh_info_wideGallery .vsh_info_mediaLink {
    height: 430px;
  }

  .vsh_info_accordion summary {
    grid-template-columns: minmax(0, 1fr) 40px;
    gap: 10px;
  }

  .vsh_info_accordionBody {
    margin-left: 46px;
  }
}

@media (width <= 560px) {
  .vsh_info_privacyIntro {
    padding: 30px 18px;
  }

  .vsh_info_privacyIntro h1 {
    font-size: 38px;
  }

  .vsh_info_privacyLead {
    margin-top: 16px;
    font-size: 14px;
  }

  .vsh_info_privacyLayout {
    width: auto;
    margin-inline: 18px;
    padding: 24px 0 42px;
  }

  .vsh_info_privacyContents {
    padding: 14px;
    overflow: hidden;
  }

  .vsh_info_privacyContents nav {
    scrollbar-width: none;
    scroll-snap-type: x proximity;
    gap: 6px;
    padding-bottom: 4px;
    display: flex;
    overflow-x: auto;
  }

  .vsh_info_privacyContents nav::-webkit-scrollbar {
    display: none;
  }

  .vsh_info_privacyContents a {
    white-space: nowrap;
    scroll-snap-align: start;
    background: #244f7808;
    border: 1px solid #244f781a;
    flex: none;
    padding: 6px 9px 6px 5px;
  }

  .vsh_info_privacySection {
    padding: 17px 15px 18px;
  }

  .vsh_info_privacySectionBody {
    margin-left: 0;
    font-size: 12.5px;
  }

  .vsh_info_contactWorkspace {
    width: auto;
    margin-inline: 18px;
  }

  .vsh_info_contactShell, .vsh_info_journeyPlanner {
    width: auto;
    margin-inline: 0;
  }

  .vsh_info_contactShell {
    padding: 24px 0 22px;
  }

  .vsh_info_contactHeading h1 {
    font-size: 32px;
  }

  .vsh_info_contactHeading .vsh_info_contactLead {
    font-size: 14px;
  }

  .vsh_info_contactAction {
    grid-template-columns: 24px minmax(0, 1fr) 16px;
    gap: 10px;
  }

  .vsh_info_contactAction > svg {
    width: 20px;
    height: 20px;
  }

  .vsh_info_journeyPlanner {
    padding: 24px 0 34px;
  }

  .vsh_info_journeyControls h2 {
    font-size: 28px;
  }

  .vsh_info_journeyDirection {
    width: 100%;
  }

  .vsh_info_journeyModes {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .vsh_info_journeyMap, .vsh_info_journeyMap .mapPlaceholder {
    min-height: 0;
  }

  .vsh_info_journeyMap .mapPlaceholder {
    padding: 22px;
  }

  .vsh_info_journeyMap .mapFrame, .vsh_info_journeyMap .mapFrame iframe {
    min-height: 260px;
  }

  .vsh_info_contactHero {
    gap: 30px;
    width: auto;
    margin-inline: 18px;
    padding-top: 28px;
  }

  .vsh_info_contactActions {
    display: grid;
  }

  .vsh_info_contactPrimaryAction, .vsh_info_contactSecondaryAction {
    justify-content: center;
  }

  .vsh_info_contactAddressPanel {
    border-top: 1px solid #244f7847;
    border-left: 0;
    padding: 24px 0 0;
  }

  .vsh_info_contactFacts {
    grid-template-columns: 1fr;
    width: auto;
    margin-inline: 18px;
    padding: 8px 0;
  }

  .vsh_info_contactFacts article {
    padding: 11px 4px;
  }

  .vsh_info_contactFacts article + article {
    border-top: 1px solid #244f7833;
    border-left: 0;
  }

  .vsh_info_contactArrival, .vsh_info_contactGarage {
    width: auto;
    margin-inline: 18px;
  }

  .vsh_info_contactGarage {
    gap: 20px;
  }

  .vsh_info_contactArrival {
    gap: 22px;
    padding: 40px 0;
  }

  .vsh_info_arrivalDetails p {
    padding-right: 0;
  }

  .vsh_info_contactGarage > header {
    padding: 0;
  }

  .vsh_info_contactGarage > div {
    border-top: 1px solid #244f782e;
    border-left: 0;
    padding: 20px 0 0;
  }

  .vsh_info_contactMapIntro {
    padding: 0 0 18px;
  }

  .vsh_info_contactMapSection {
    gap: 12px;
  }

  .vsh_info_contactMap {
    min-height: 0;
    padding: 0;
  }

  .vsh_info_contactMap .mapPlaceholder {
    min-height: 0;
  }

  .vsh_info_contactMap .mapFrame, .vsh_info_contactMap .mapFrame iframe {
    min-height: 260px;
  }

  .vsh_info_hero h1 {
    font-size: var(--type-hero-size);
    line-height: var(--type-hero-line);
  }

  .vsh_info_lead, .vsh_info_sectionList, .vsh_info_accordions {
    width: min(100% - 36px, 1180px);
  }

  .vsh_info_featureHeading, .vsh_info_actionCard {
    padding: 26px;
  }

  .vsh_info_featureMedia {
    grid-auto-columns: 92%;
  }

  .vsh_info_featureMedia img {
    min-height: 330px;
  }

  .vsh_info_accordionBody {
    margin-left: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .vsh_info_contactPrimaryAction, .vsh_info_contactSecondaryAction, .vsh_info_accordionIcon {
    transition: none;
  }
}


/* WordPress integration and shared interaction surfaces. */
html { scroll-padding-top: 117px; }
[hidden] { display:none!important; }
body.admin-bar .vsh_header_header { top: 32px; }
.vsh-visually-hidden { position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important; }
.vsh-route-shell { min-height: 100vh; background: var(--surface); }
dialog[data-vsh-route-dialog]:not([open]) { display:none!important; }
dialog[data-vsh-route-dialog] { border:0; }
.vsh-skip-link { position:fixed;z-index:10000;top:12px;left:12px;padding:12px 16px;background:#fff;color:#244f78;transform:translateY(-160%); }
.vsh-skip-link:focus { transform:none; }
.vsh-button-reset { border:0;padding:0;background:transparent;color:inherit;cursor:pointer; }
.vsh-gallery-button { position:relative;display:block;width:100%;height:100%;padding:0;border:0;background:#244f78;cursor:zoom-in;overflow:hidden; }
.vsh-gallery-button img { display:block;width:100%;height:100%;object-fit:cover; }
.vsh-action-row { display:flex;flex-wrap:wrap;gap:12px;margin-top:24px; }
.vsh-contact-actions { display:flex;flex-wrap:wrap;gap:12px;margin:0 0 36px; }
.vsh-contact-actions a { padding:12px 18px;border:1px solid #244f78;color:#244f78; }
.vsh-contact-map { margin:0 8vw 90px;min-height:340px; }
.vsh-contact-map .mapPlaceholder,.vsh-contact-map .mapFrame { min-height:340px;border-color:rgb(36 79 120 / 30%);background:rgb(57 114 168 / 6%);color:var(--ink); }
.vsh-contact-map .mapPlaceholder button { border-color:#244f78;color:#244f78; }
.mapFrame { min-height:180px; }
.mapFrame iframe { display:block;width:100%;height:100%;min-height:180px;border:0; }
.vsh-modal { width:min(1180px,calc(100% - 32px));max-width:none;height:min(780px,calc(100svh - 32px));max-height:none;padding:0;border:0;background:transparent;color:var(--ink); }
.vsh-modal::backdrop { background:rgb(10 10 10 / 78%); }
.vsh-modal-panel { display:grid;width:100%;height:100%;grid-template-rows:auto minmax(0,1fr);overflow:hidden;background:var(--surface);box-shadow:0 24px 70px rgb(10 10 10 / 35%); }
.vsh-modal-header { display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:center;padding:14px 18px;border-bottom:1px solid rgb(36 79 120 / 18%); }
.vsh-modal-header h2 { margin:0;color:#244f78;font-size:var(--type-card-size);line-height:var(--type-card-line); }
.vsh-modal-header p { grid-column:1;margin:2px 0 0;font-size:var(--type-meta-size); }
.vsh-modal-close { grid-column:2;grid-row:1 / span 2;display:grid;width:48px;height:48px;place-items:center;border:1px solid #244f78;border-radius:50%;background:var(--surface);color:#244f78;cursor:pointer;font-size:24px; }
.vsh-modal-close:hover { background:#244f78;color:#fff; }
.vsh-modal-stage { position:relative;display:grid;min-height:0;grid-template-columns:56px minmax(0,1fr) 56px;align-items:center;background:#0a0a0a; }
.vsh-modal-stage iframe,.vsh-modal-stage img { display:block;width:100%;height:100%;min-height:0;border:0;object-fit:contain; }
#vsh-embed-dialog .vsh-modal-stage iframe { grid-column:1 / -1;grid-row:1; }
.vsh-modal-stage button { z-index:2;display:grid;width:44px;height:44px;place-items:center;margin:auto;border:1px solid rgb(255 255 255 / 65%);border-radius:50%;background:rgb(10 10 10 / 50%);color:#fff;cursor:pointer; }
.vsh-modal-stage button[hidden] { display:none; }
.vsh-consent { width:min(650px,calc(100% - 32px));height:auto;max-height:calc(100svh - 32px);padding:0;border:0; }
.vsh-consent .vsh-modal-panel { height:auto;max-height:calc(100svh - 32px); }
.vsh-consent-body { overflow:auto;padding:24px; }
.vsh-consent-options { display:grid;gap:12px;margin:22px 0; }
.vsh-consent-actions { display:flex;flex-wrap:wrap;gap:12px; }
.vsh-consent-actions button { padding:12px 18px;border:1px solid #244f78;background:#fff;color:#244f78;cursor:pointer; }
.vsh-consent-actions button:last-child { background:#244f78;color:#fff; }
.vsh-no-scroll { overflow:hidden; }
.vsh-content-fallback { width:min(900px,88vw);margin:0 auto;padding:170px 0 90px; }
.vsh-document-notice { font-size:var(--type-meta-size);color:#244f78; }
@media (max-width:782px) { body.admin-bar .vsh_header_header { top:46px; } }
@media (max-width:800px) {
  .vsh-modal { width:100%;height:100svh; }
  .vsh-modal-stage { grid-template-columns:48px minmax(0,1fr) 48px; }
  .vsh-contact-map { margin:0 24px 70px; }
}
@media (prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important; } }
.vsh_wellness_cardSecondaryAction {
  display: none !important;
}
