:root {
  --ws-red: var(--e-global-color-primary, #ED1C24);
  --ws-maroon: #490000;
  --ws-yellow: #FFDE40;
  --ws-cream: #EFEDE6;
  --ws-white: #FFFFFF;
}
.ws-locations, .ws-single-location { font-family: "Bricolage Grotesque", sans-serif; color: var(--ws-maroon); }
.ws-locations *, .ws-single-location * { box-sizing: border-box; }

/* Locations directory */
.ws-locations { display: grid; grid-template-columns: minmax(390px, 42%) minmax(0, 58%); min-height: 720px; background: #fff; }
.ws-locations__search { grid-column: 1 / -1; padding: 28px 40px 26px; background: var(--ws-red); color: #fff; }
.ws-locations__search-label { display: block; margin: 0 0 10px; color: #fff; font-family: "rl-aqva", "Bricolage Grotesque", sans-serif; font-size: clamp(24px, 2.4vw, 36px); line-height: 1; font-weight: 400; text-transform: uppercase; }
.ws-locations__search-control { position: relative; width: 100%; }
.ws-locations__search-icon { position: absolute; left: 20px; top: 50%; width: 18px; height: 18px; border: 3px solid var(--ws-maroon); border-radius: 50%; transform: translateY(-55%); pointer-events: none; }
.ws-locations__search-icon::after { content: ""; position: absolute; width: 9px; height: 3px; right: -7px; bottom: -4px; border-radius: 2px; background: var(--ws-maroon); transform: rotate(45deg); transform-origin: left center; }
.ws-locations__search-input { display: block; width: 100%; min-height: 58px; margin: 0; padding: 13px 20px 13px 56px; border: 3px solid var(--ws-maroon); border-radius: 999px; outline: 0; background: #fff; color: var(--ws-maroon); font: inherit; font-size: 18px; line-height: 1.2; box-shadow: none; }
.ws-locations__search-input::placeholder { color: #765b5b; opacity: 1; }
.ws-locations__search-input:focus { border-color: var(--ws-yellow); box-shadow: 0 0 0 3px rgba(255,222,64,.35); }
.ws-locations__search-status { min-height: 1.2em; margin: 9px 0 0; color: #fff; font-size: 14px; line-height: 1.2; font-weight: 700; }
.ws-location-card[hidden] { display: none !important; }
.ws-locations__list { max-height: 780px; overflow-y: auto; padding: 34px 28px 44px 40px; scrollbar-width: thin; scrollbar-color: var(--ws-red) transparent; }
.ws-location-card { padding: 26px 24px; border: 3px solid transparent; border-radius: 18px; transition: border-color .18s ease, background-color .18s ease, transform .18s ease; background: #fff; }
.ws-location-card + .ws-location-card { margin-top: 6px; }
.ws-location-card:hover, .ws-location-card:focus-within { background: #fff8f8; }
.ws-location-card.is-selected { border-color: var(--ws-red); background: #fff8f8; }
.ws-location-card__title { margin: 0 0 10px; font-size: clamp(24px, 2vw, 34px); line-height: 1; font-weight: 800; }
.ws-location-card__title a { color: var(--ws-red); text-decoration: none; }
.ws-location-card__title a:hover, .ws-location-card__title a:focus { color: var(--ws-maroon); }
.ws-location-card__address, .ws-location-card__phone, .ws-location-card__hours { margin: 0 0 9px; font-size: 16px; line-height: 1.42; }
.ws-location-card__phone a { color: var(--ws-maroon); font-weight: 700; }
.ws-location-card__actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 16px; }
.ws-location-card__button, .ws-button { display: inline-flex; min-height: 46px; align-items: center; justify-content: center; padding: 5px 15px; border-radius: 10px; background: var(--ws-red); color: #fff !important; font-family: "rl-aqva", "Bricolage Grotesque", sans-serif; font-weight: 400; font-size: 14px; line-height: 1; text-decoration: none !important; text-transform: uppercase; border: 2px solid var(--ws-red); transition: background-color .18s ease, color .18s ease, border-color .18s ease, transform .18s ease; }
.ws-location-card__button:hover, .ws-location-card__button:focus, .ws-button:hover, .ws-button:focus { background: #CC161D; border-color: #CC161D; transform: translateY(-1px); }
.ws-location-card__button--secondary { background: transparent; color: var(--ws-maroon) !important; border-color: var(--ws-maroon); }
.ws-location-card__button--secondary:hover, .ws-location-card__button--secondary:focus { background: var(--ws-maroon); color: #fff !important; }
.ws-locations-map, .ws-locations-map__canvas { min-height: 720px; height: 100%; }
.ws-locations-map { position: relative; background: var(--ws-cream); }
.ws-locations-map__notice { padding: 2rem; margin: 0; }
.ws-locations-map .gm-style-iw-c { border-radius: 12px; }
.ws-locations-map .gm-style-iw-d { font-family: "Bricolage Grotesque", sans-serif; color: var(--ws-maroon); }
.ws-locations-map .gm-style-iw-d strong { color: var(--ws-red); font-size: 16px; }
.ws-locations-map .gm-style-iw-d a { color: var(--ws-red); font-weight: 800; }

/* Individual location */
.ws-single-location { background: var(--ws-white); overflow: hidden; }
.ws-single-location__wrap { width: min(1194px, calc(100% - 48px)); margin-inline: auto; }
.ws-single-location__hero { background: var(--ws-red); color: #fff; padding: 64px 0 68px; }
.ws-single-location__eyebrow { margin: 0 0 13px; text-transform: uppercase; font-weight: 800; letter-spacing: .055em; color: var(--ws-yellow); font-size: 13px; line-height: 1.2; }
.ws-single-location__eyebrow a { color: var(--ws-yellow) !important; text-decoration: none; }
.ws-single-location__eyebrow a:hover, .ws-single-location__eyebrow a:focus { color: #fff !important; }
.ws-single-location__eyebrow span { display: inline-block; margin: 0 6px; color: rgba(255,255,255,.75); }
.ws-single-location__hero h1 { margin: 0; color: #fff; font-family: "rl-aqva", "Bricolage Grotesque", sans-serif; font-size: clamp(54px, 5.4vw, 78px); line-height: .92; font-weight: 400; letter-spacing: -.015em; }
.ws-single-location__address { max-width: 680px; margin: 18px 0 0; font-size: 19px; line-height: 1.4; font-weight: 500; }
.ws-single-location__actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 26px; }
.ws-single-location__actions .ws-button { min-width: 155px; }
.ws-button--yellow { background: var(--ws-yellow); color: var(--ws-maroon) !important; border-color: var(--ws-yellow); }
.ws-button--yellow:hover, .ws-button--yellow:focus { background: #FFC340; border-color: #FFC340; color: var(--ws-maroon) !important; }
.ws-button--outline-light { background: transparent; border-color: #fff; color: #fff !important; }
.ws-button--outline-light:hover, .ws-button--outline-light:focus { background: #fff; color: var(--ws-red) !important; border-color: #fff; }

.ws-single-location__details { padding: 64px 0 72px; background: #fff; }
.ws-single-location__grid { display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(390px, .92fr); gap: 54px; align-items: start; }
.ws-single-location__content { min-width: 0; }
.ws-single-location__featured { margin: 0 0 32px; }
.ws-single-location__featured img { display: block; width: 100%; height: auto; border-radius: 16px; }
.ws-single-location__intro { max-width: 720px; font-size: 19px; line-height: 1.55; }
.ws-single-location__intro > :first-child { margin-top: 0; }
.ws-single-location__intro > :last-child { margin-bottom: 0; }
.ws-single-location__facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; margin-top: 32px; }
.ws-single-location__content--facts-only .ws-single-location__facts { margin-top: 0; }
.ws-single-location__facts > div { min-height: 192px; padding: 26px 26px 24px; border: 3px solid var(--ws-red); border-radius: 14px; background: #fff; }
.ws-single-location__facts h2 { margin: 0 0 10px; color: var(--ws-red); font-size: 22px; line-height: 1.05; font-weight: 800; }
.ws-single-location__facts p { margin: 0 0 9px; font-size: 16px; line-height: 1.46; }
.ws-single-location__facts p:last-child { margin-bottom: 0; }
.ws-single-location__facts a { color: var(--ws-red) !important; font-weight: 800; text-decoration: none; }
.ws-single-location__facts a:hover, .ws-single-location__facts a:focus { color: var(--ws-maroon) !important; }
.ws-single-location__mapcol { min-width: 0; }
.ws-single-location__mapcol .ws-locations-map { overflow: hidden; border-radius: 16px; box-shadow: 0 10px 32px rgba(73,0,0,.08); }
.ws-single-location__mapcol .ws-locations-map, .ws-single-location__mapcol .ws-locations-map__canvas { min-height: 500px; height: 500px; }

.ws-single-location__gallery-section { background: var(--ws-cream); padding: 64px 0 72px; }
.ws-single-location__gallery-section h2 { margin: 0 0 26px; color: var(--ws-maroon); font-size: 38px; line-height: 1; font-weight: 800; }
.ws-single-location__gallery { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 18px; }
.ws-single-location__gallery img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 12px; }

@media (max-width: 1024px) {
  .ws-locations { grid-template-columns: minmax(340px, 44%) minmax(0, 56%); min-height: 620px; }
  .ws-locations__search { padding: 24px 28px 22px; }
  .ws-locations__list { max-height: 680px; padding: 28px 22px 34px 28px; }
  .ws-location-card { padding: 22px 18px; }
  .ws-location-card__title { font-size: 26px; }
  .ws-locations-map, .ws-locations-map__canvas { min-height: 620px; }

  .ws-single-location__wrap { width: min(100% - 64px, 1194px); }
  .ws-single-location__hero { padding: 54px 0 58px; }
  .ws-single-location__hero h1 { font-size: 58px; }
  .ws-single-location__details { padding: 52px 0 60px; }
  .ws-single-location__grid { grid-template-columns: minmax(0, 1fr) minmax(330px, .9fr); gap: 34px; }
  .ws-single-location__facts { grid-template-columns: 1fr; gap: 14px; }
  .ws-single-location__facts > div { min-height: 0; padding: 22px; }
  .ws-single-location__mapcol .ws-locations-map, .ws-single-location__mapcol .ws-locations-map__canvas { min-height: 430px; height: 430px; }
  .ws-single-location__gallery { grid-template-columns: repeat(2,minmax(0,1fr)); }
}

@media (max-width: 767px) {
  .ws-locations { grid-template-columns: 1fr; min-height: 0; }
  .ws-locations__search { padding: 20px 18px; }
  .ws-locations__search-label { font-size: 26px; }
  .ws-locations__search-input { min-height: 52px; padding-left: 52px; font-size: 16px; }
  .ws-locations-map { order: -1; }
  .ws-locations-map, .ws-locations-map__canvas { min-height: 320px; height: 320px; }
  .ws-locations__list { max-height: none; padding: 20px 18px 32px; }
  .ws-location-card { padding: 20px 16px; border-width: 2px; }
  .ws-location-card__title { font-size: 25px; }
  .ws-location-card__address, .ws-location-card__phone, .ws-location-card__hours { font-size: 15px; }
  .ws-location-card__actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
  .ws-location-card__button { min-height: 44px; padding: 5px 15px; font-size: 12px; }
  .ws-location-card__button--order { grid-column: 1 / -1; width: 100%; }

  .ws-single-location__wrap { width: min(100% - 36px, 1194px); }
  .ws-single-location__hero { padding: 38px 0 42px; }
  .ws-single-location__eyebrow { font-size: 11px; }
  .ws-single-location__hero h1 { font-size: 44px; }
  .ws-single-location__address { margin-top: 14px; font-size: 17px; }
  .ws-single-location__actions { display: grid; grid-template-columns: 1fr; gap: 10px; margin-top: 22px; }
  .ws-single-location__actions .ws-button { width: 100%; min-width: 0; min-height: 48px; }
  .ws-single-location__details { padding: 34px 0 44px; }
  .ws-single-location__grid { grid-template-columns: 1fr; gap: 26px; }
  .ws-single-location__mapcol { order: -1; }
  .ws-single-location__mapcol .ws-locations-map, .ws-single-location__mapcol .ws-locations-map__canvas { min-height: 300px; height: 300px; border-radius: 12px; }
  .ws-single-location__intro { font-size: 18px; }
  .ws-single-location__facts { grid-template-columns: 1fr; gap: 12px; margin-top: 22px; }
  .ws-single-location__content--facts-only .ws-single-location__facts { margin-top: 0; }
  .ws-single-location__facts > div { padding: 20px; border-width: 2px; border-radius: 12px; }
  .ws-single-location__facts h2 { font-size: 21px; }
  .ws-single-location__facts p { font-size: 15px; }
  .ws-single-location__gallery-section { padding: 42px 0 50px; }
  .ws-single-location__gallery-section h2 { font-size: 30px; }
  .ws-single-location__gallery { grid-template-columns: 1fr; gap: 12px; }
}


/* Compact Contact-page location directory */
.ws-contact-locations { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; width:100%; }
.ws-contact-location { display:flex; align-items:center; justify-content:space-between; gap:18px; min-height:112px; padding:20px 22px; border:2px solid var(--ws-red); border-radius:18px; background:#fff; }
.ws-contact-location__content { min-width:0; }
.ws-contact-location__title { margin:0 0 6px; font-size:20px; line-height:1.05; font-weight:800; }
.ws-contact-location__title a { color:var(--ws-red)!important; text-decoration:none!important; }
.ws-contact-location__address { margin:0; color:var(--ws-maroon); font-size:13px; line-height:1.3; }
.ws-contact-location__actions { display:flex; flex-direction:column; flex:0 0 auto; gap:7px; }
.ws-contact-location__call,.ws-contact-location__view { min-width:76px; padding:8px 12px; border-radius:999px; font-family:"rl-aqva","Bricolage Grotesque",sans-serif; font-size:12px; line-height:1; text-align:center; text-transform:uppercase; text-decoration:none!important; }
.ws-contact-location__call { background:var(--ws-red); color:#fff!important; border:2px solid var(--ws-red); }
.ws-contact-location__view { background:#fff; color:var(--ws-maroon)!important; border:2px solid var(--ws-maroon); }
.ws-contact-location__call:hover,.ws-contact-location__call:focus { background:#CC161D; border-color:#CC161D; }
.ws-contact-location__view:hover,.ws-contact-location__view:focus { background:var(--ws-maroon); color:#fff!important; }
@media (max-width:1024px){.ws-contact-locations{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media (max-width:767px){
 .ws-contact-locations{grid-template-columns:1fr;gap:10px;}
 .ws-contact-location{min-height:0;padding:16px;border-radius:14px;gap:12px;}
 .ws-contact-location__title{font-size:18px;}
 .ws-contact-location__address{font-size:12px;}
 .ws-contact-location__actions{flex-direction:row;}
 .ws-contact-location__call,.ws-contact-location__view{min-width:68px;padding:8px 10px;font-size:11px;}
}
