:root {
  --ink: #0a1220;
  --muted: #526176;
  --blue: #086ef5;
  --cyan: #00b9df;
  --paper: #f3f6fa;
  --panel: #ffffff;
  --line: rgba(13, 29, 50, .11);
  --content: 1180px;
  --art-max: 1720px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  overflow-x: hidden;
  background: var(--paper);
  color: var(--ink);
  font-family: Arial, Helvetica, sans-serif;
  line-height: 1.55;
  text-rendering: optimizeLegibility;
}
img { display: block; }
.skip-link {
  position: fixed;
  left: -9999px;
  top: 1rem;
  z-index: 1000;
  padding: .8rem 1rem;
  border-radius: .6rem;
  background: #fff;
  color: #000;
}
.skip-link:focus { left: 1rem; }

.hero,
.page-section {
  width: 100%;
  margin: 0;
  padding: 0;
}
.hero { position: relative; background: #000; }

.artwork-wrap {
  width: min(100%, var(--art-max));
  margin: 0 auto;
  overflow: hidden;
  background: #000;
  box-shadow: 0 25px 75px rgba(12, 27, 48, .13);
}
.artwork-wrap.light-art { background: #fff; }
.artwork-wrap.rounded { border-radius: 24px; }
.artwork {
  width: 100%;
  height: auto;
  max-width: none;
  margin: 0;
  object-fit: contain;
  object-position: center;
}
.hero-artwork {
  width: 100vw;
  min-width: 100%;
  height: auto;
  margin: 0;
}

.hero-hotspots { position: absolute; inset: 0; pointer-events: none; }
.hotspot { position: absolute; display: block; pointer-events: auto; }
.hotspot.how { left: 19.3%; top: 1.8%; width: 11.7%; height: 8%; }
.hotspot.benefits { left: 32.3%; top: 1.8%; width: 12.7%; height: 8%; }
.hotspot.safety { left: 45.6%; top: 1.8%; width: 9%; height: 8%; }
.hotspot.location { left: 54.8%; top: 1.8%; width: 9%; height: 8%; }
.hotspot.routine { left: 64.7%; top: 1.8%; width: 10.6%; height: 8%; }
.hotspot.prices { left: 75.1%; top: 1.8%; width: 5.2%; height: 8%; }
.hotspot.top-cta { left: 80.6%; top: 1%; width: 18.6%; height: 9.5%; }
.hotspot.main-cta { left: 2.8%; top: 68.2%; width: 31.2%; height: 10.3%; }

.page-section { padding: clamp(4rem, 7vw, 8rem) 0 0; }
.page-section:first-of-type { padding-top: clamp(3rem, 5vw, 5rem); }

.section-title,
.copy {
  width: min(calc(100% - 4rem), var(--content));
  margin-inline: auto;
}
.section-title {
  padding: 0 0 clamp(1.6rem, 2.6vw, 2.8rem);
}
.section-title h1,
.section-title h2 {
  margin: 0;
  font-weight: 760;
  letter-spacing: -.035em;
  line-height: 1.03;
}
.section-title h1 { font-size: clamp(2.6rem, 4.8vw, 5.2rem); }
.section-title h2 { font-size: clamp(2.25rem, 4.1vw, 4.5rem); }
.section-title p {
  margin: 1rem 0 0;
  color: var(--blue);
  font-size: clamp(1.1rem, 1.7vw, 1.55rem);
  font-weight: 760;
  letter-spacing: .02em;
}
.section-title.centered { text-align: center; }
.section-title.accent h2 { color: #db2828; font-style: italic; text-decoration: underline; text-decoration-color: #ffd800; text-decoration-thickness: .18em; text-underline-offset: .11em; }

.copy {
  margin-top: 0;
  margin-bottom: 0;
  padding: clamp(2.1rem, 4.2vw, 4.6rem) clamp(2rem, 5vw, 5.4rem);
  background: var(--panel);
  border: 1px solid var(--line);
  border-top: 0;
  border-radius: 0 0 28px 28px;
  box-shadow: 0 24px 70px rgba(16, 33, 57, .10);
}
.copy h2 {
  margin: 0 0 1.6rem;
  font-size: clamp(1.9rem, 2.9vw, 3.15rem);
  line-height: 1.1;
  letter-spacing: -.025em;
}
.copy h3 {
  margin: 2.7rem 0 1rem;
  font-size: clamp(1.45rem, 2vw, 2.1rem);
  line-height: 1.15;
  text-decoration: underline;
}
.copy h3:first-child { margin-top: 0; }
.copy p,
.copy li {
  font-size: clamp(1.08rem, 1.38vw, 1.34rem);
  line-height: 1.62;
}
.copy p { margin: 0 0 1.35rem; }
.copy p:last-child { margin-bottom: 0; }
.copy ul { margin: 1rem 0 1.8rem; padding-left: 2.2rem; }
.copy strong { font-weight: 780; color: #07111f; }

.booking-section { padding-bottom: clamp(5rem, 8vw, 9rem); }
.site-footer {
  padding: 4rem 1.5rem;
  background: #03070d;
  color: rgba(255,255,255,.92);
  text-align: center;
  font-size: clamp(1.1rem, 1.8vw, 1.6rem);
  font-weight: 300;
  letter-spacing: .01em;
}

.reveal { opacity: 0; transform: translateY(28px); transition: opacity .75s ease, transform .75s cubic-bezier(.2,.75,.2,1); }
.reveal.is-visible { opacity: 1; transform: none; }

@media (min-width: 1730px) {
  .artwork-wrap { border-radius: 20px; }
  .hero .artwork { border-radius: 0; }
}

@media (max-width: 900px) {
  .page-section { padding-top: 3.5rem; }
  .section-title,
  .copy { width: min(calc(100% - 1.25rem), var(--content)); }
  .copy { padding: 1.5rem 1.25rem 1.8rem; border-radius: 0 0 16px 16px; }
  .artwork-wrap.rounded { border-radius: 12px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .reveal { opacity: 1; transform: none; transition: none; }
}

/* Final Word-master typography pass */
.copy p strong { font-weight: 800; }
.copy h3 { font-weight: 800; }
.copy p + h3 { margin-top: 3.2rem; }
.copy h3 + p { margin-top: 0; }
.copy p { max-width: 68ch; }
.copy ul { max-width: 68ch; }

/* Mobile-first conversion layer */
.mobile-hero-copy,
.mobile-booking,
.mobile-sticky-cta { display: none; }
.zoomable { cursor: zoom-in; }
.image-lightbox {
  position: fixed; inset: 0; z-index: 2000; display: none;
  align-items: center; justify-content: center; padding: 1rem;
  background: rgba(0,0,0,.94);
}
.image-lightbox.is-open { display: flex; }
.image-lightbox img { max-width: 100%; max-height: 90vh; width: auto; height: auto; object-fit: contain; }
.lightbox-close {
  position: fixed; top: .75rem; right: .75rem; width: 3rem; height: 3rem;
  border: 0; border-radius: 50%; background: rgba(255,255,255,.16); color: #fff;
  font-size: 2rem; line-height: 1; cursor: pointer;
}

@media (max-width: 760px) {
  :root { --mobile-pad: 1.1rem; }
  body { background: #fff; padding-bottom: 4.8rem; }
  .hero { background: #000; }
  .hero-artwork { width: 100%; min-width: 0; }
  .hero-hotspots { display: none; }
  .mobile-hero-copy {
    display: block; padding: 1.5rem var(--mobile-pad) 2rem;
    background: #05080d; color: #fff; text-align: left;
  }
  .mobile-hero-copy .eyebrow,
  .mobile-booking .eyebrow {
    margin: 0 0 .55rem; color: #20d7b0; font-size: .78rem; font-weight: 800;
    letter-spacing: .12em; text-transform: uppercase;
  }
  .mobile-hero-copy h1 {
    margin: 0 0 1rem; font-size: clamp(1.9rem, 9vw, 3rem); line-height: 1.02;
    letter-spacing: -.045em;
  }
  .mobile-hero-copy p { margin: 0 0 1.25rem; color: rgba(255,255,255,.82); font-size: 1rem; line-height: 1.5; }
  .primary-button {
    display: inline-flex; width: 100%; min-height: 3.4rem; align-items: center; justify-content: center;
    padding: .9rem 1.2rem; border: 0; border-radius: .8rem; background: #086ef5; color: #fff;
    font: inherit; font-weight: 800; text-decoration: none; box-shadow: 0 12px 30px rgba(8,110,245,.28);
  }
  .page-section { padding-top: 2.75rem; }
  .page-section:first-of-type { padding-top: 2.75rem; }
  .section-title,
  .copy { width: 100%; }
  .section-title { padding: 0 var(--mobile-pad) 1.15rem; }
  .section-title h1 { font-size: clamp(2rem, 10vw, 3.15rem); }
  .section-title h2 { font-size: clamp(1.85rem, 9vw, 2.85rem); }
  .section-title.centered { text-align: left; }
  .section-title.centered p { font-size: .96rem; line-height: 1.35; }
  .artwork-wrap,
  .artwork-wrap.rounded {
    width: 100%; border-radius: 0; box-shadow: none; overflow: visible;
  }
  .artwork { width: 100%; height: auto; }
  .copy {
    padding: 1.45rem var(--mobile-pad) 1.75rem;
    border: 0; border-radius: 0; box-shadow: none; background: #fff;
  }
  .copy h2 { font-size: 1.75rem; margin-bottom: 1rem; }
  .copy h3 { margin-top: 2.1rem; font-size: 1.35rem; }
  .copy p,
  .copy li { font-size: 1.03rem; line-height: 1.55; }
  .copy p { margin-bottom: 1.1rem; max-width: none; }
  .copy ul { padding-left: 1.35rem; max-width: none; }
  .reveal { opacity: 1; transform: none; transition: none; }
  .desktop-booking-art { display: none; }
  .mobile-booking { display: block; padding: 0 var(--mobile-pad) 1rem; }
  .booking-card {
    padding: 1.3rem; border-radius: 1rem; background: #06101d; color: #fff;
    box-shadow: 0 20px 55px rgba(5,16,29,.28);
  }
  .booking-card h2 { margin: 0 0 .8rem; font-size: 2rem; line-height: 1.05; letter-spacing: -.035em; }
  .booking-intro { margin: 0 0 1.25rem; color: rgba(255,255,255,.76); line-height: 1.5; }
  .reservation-form { display: grid; gap: .7rem; }
  .reservation-form label,
  .reservation-form legend { font-size: .88rem; font-weight: 750; }
  .reservation-form input[type="text"],
  .reservation-form input[type="tel"] {
    width: 100%; min-height: 3.25rem; padding: .85rem 1rem;
    border: 1px solid rgba(255,255,255,.2); border-radius: .7rem;
    background: rgba(255,255,255,.08); color: #fff; font: inherit;
  }
  .reservation-form input::placeholder { color: rgba(255,255,255,.48); }
  .reservation-form fieldset { margin: .35rem 0 0; padding: 0; border: 0; }
  .contact-options { display: grid; grid-template-columns: 1fr 1fr; gap: .65rem; margin-top: .55rem; }
  .contact-choice { position: relative; }
  .contact-choice input { position: absolute; opacity: 0; pointer-events: none; }
  .contact-choice span {
    display: flex; min-height: 3.15rem; align-items: center; justify-content: center;
    border: 1px solid rgba(255,255,255,.22); border-radius: .7rem; color: rgba(255,255,255,.78);
  }
  .contact-choice input:checked + span { border-color: #20d7b0; background: rgba(32,215,176,.13); color: #fff; }
  .fee-box {
    display: flex; align-items: center; justify-content: space-between; margin-top: .4rem;
    padding: 1rem; border: 1px solid rgba(8,110,245,.6); border-radius: .8rem;
    background: rgba(8,110,245,.12);
  }
  .fee-box span { color: rgba(255,255,255,.72); }
  .fee-box strong { font-size: 1.65rem; }
  .no-payment { margin: .1rem 0 .4rem; color: rgba(255,255,255,.68); font-size: .9rem; line-height: 1.45; }
  .no-payment strong { color: #7ee78e; }
  .form-submit { cursor: pointer; }
  .form-status { min-height: 1.2rem; margin: 0; color: #7ee78e; font-size: .9rem; }
  .mobile-sticky-cta {
    display: flex; position: fixed; left: .75rem; right: .75rem; bottom: .65rem; z-index: 1500;
    min-height: 3.45rem; align-items: center; justify-content: center; border-radius: .9rem;
    background: #086ef5; color: #fff; font-weight: 850; text-decoration: none;
    box-shadow: 0 15px 40px rgba(0,0,0,.32);
  }
  .site-footer { padding: 2.4rem 1rem 6rem; font-size: 1rem; }
}

/* Mobile clean-image edition: desktop infographics remain unchanged. */
.responsive-artwork { display: block; width: 100%; }
.responsive-artwork > img { width: 100%; height: auto; }
.mobile-only-copy { display: none; }
.feature-list { list-style: none; padding: 0 !important; margin: 1rem 0 0 !important; }
.feature-list li {
  position: relative;
  padding: .85rem 0 .85rem 2rem;
  border-bottom: 1px solid rgba(13,29,50,.11);
}
.feature-list li::before {
  content: "✓";
  position: absolute;
  left: 0;
  top: .82rem;
  color: #086ef5;
  font-weight: 900;
}

@media (max-width: 767px) {
  .mobile-only-copy { display: block; }
  .responsive-artwork source + img,
  .responsive-artwork img { width: 100%; height: auto; }
  .artwork-wrap:has(.responsive-artwork) {
    background: #05080d;
  }
  .mobile-infographic-secondary { display: none; }
  .opening-copy { padding-top: 1.5rem; padding-bottom: 2.2rem; background: #05080d; color: #fff; }
  .opening-copy h2,
  .opening-copy strong { color: #fff; }
  .opening-copy .feature-list li { border-bottom-color: rgba(255,255,255,.15); }
  .opening-copy .feature-list li::before { color: #20d7b0; }
  .location-art { background: #06101d; }
}


/* Master Release 1.0 — contact and final typography */
button, input, select, textarea { font-family: Arial, Helvetica, sans-serif; }
.contact-section {
  width: 100%;
  padding: clamp(1rem, 3vw, 3rem) 0 clamp(4rem, 7vw, 7rem);
}
.contact-card {
  width: min(calc(100% - 4rem), var(--content));
  margin: 0 auto;
  padding: clamp(2rem, 4vw, 4rem);
  border-radius: 28px;
  color: #fff;
  background: linear-gradient(140deg, #06101d 0%, #0b1f39 65%, #073f68 100%);
  box-shadow: 0 24px 70px rgba(6,16,29,.22);
}
.contact-card .eyebrow {
  margin: 0 0 .55rem;
  color: #20d7b0;
  font-size: .82rem;
  font-weight: 800;
  letter-spacing: .12em;
  text-transform: uppercase;
}
.contact-card h2 {
  margin: 0 0 2rem;
  font-size: clamp(2rem, 3.8vw, 4.2rem);
  line-height: 1.03;
  letter-spacing: -.04em;
}
.contact-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0,1fr));
  gap: 1rem;
}
.contact-link {
  display: flex;
  min-height: 108px;
  flex-direction: column;
  justify-content: center;
  gap: .35rem;
  padding: 1.25rem 1.4rem;
  border: 1px solid rgba(255,255,255,.18);
  border-radius: 16px;
  color: #fff;
  text-decoration: none;
  background: rgba(255,255,255,.07);
  transition: transform .2s ease, border-color .2s ease, background .2s ease;
}
.contact-link:hover,
.contact-link:focus-visible {
  transform: translateY(-2px);
  border-color: rgba(32,215,176,.75);
  background: rgba(255,255,255,.12);
}
.contact-label { color: rgba(255,255,255,.68); font-size: .9rem; }
.contact-link strong { font-size: clamp(1rem, 1.45vw, 1.25rem); overflow-wrap: anywhere; }
.site-footer {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: .6rem 1.3rem;
}
.site-footer a { color: #fff; text-underline-offset: .2em; }
.site-footer strong { width: 100%; }

@media (max-width: 760px) {
  .contact-section { padding: .5rem 0 5rem; background: #fff; }
  .contact-card { width: calc(100% - 1.25rem); padding: 1.35rem; border-radius: 16px; }
  .contact-card h2 { margin-bottom: 1.25rem; font-size: 2rem; }
  .contact-grid { grid-template-columns: 1fr; gap: .65rem; }
  .contact-link { min-height: 80px; padding: 1rem; border-radius: 12px; }
  .site-footer { flex-direction: column; align-items: center; gap: .45rem; }
}


/* Master Release 1.1: final dynamic reservation form */
.booking-artwork-wrap { position: relative; }
.booking-image-hotspot {
  position: absolute;
  left: 4.5%;
  bottom: 7.5%;
  width: 45%;
  height: 9.5%;
  z-index: 5;
  border-radius: .7rem;
}
.booking-form-section {
  display: block;
  width: min(calc(100% - 4rem), 980px);
  margin: 2.5rem auto 0;
  padding: 0;
}
.booking-card {
  padding: clamp(1.5rem, 3vw, 2.6rem);
  border-radius: 1.25rem;
  background: #06101d;
  color: #fff;
  box-shadow: 0 24px 70px rgba(5,16,29,.26);
}
.booking-card h2 { margin: 0 0 .8rem; font-size: clamp(2rem, 4vw, 3.4rem); line-height: 1.05; }
.booking-intro { margin: 0 0 1.5rem; color: rgba(255,255,255,.76); }
.reservation-form { display: grid; gap: .8rem; }
.reservation-form label, .reservation-form legend { font-weight: 700; }
.reservation-form input[type="text"],
.reservation-form input[type="tel"] {
  width: 100%; min-height: 3.25rem; padding: .85rem 1rem;
  border: 1px solid rgba(255,255,255,.22); border-radius: .7rem;
  background: rgba(255,255,255,.08); color: #fff; font: inherit;
}
.reservation-form input::placeholder { color: rgba(255,255,255,.48); }
.channel-fieldset { margin: 0 0 .35rem; padding: 0; border: 0; }
.contact-options { display: grid; grid-template-columns: 1fr 1fr; gap: .7rem; margin-top: .55rem; }
.contact-choice { position: relative; }
.contact-choice input { position: absolute; opacity: 0; pointer-events: none; }
.contact-choice span {
  display: flex; min-height: 3.15rem; align-items: center; justify-content: center;
  border: 1px solid rgba(255,255,255,.22); border-radius: .7rem; color: rgba(255,255,255,.78);
  cursor: pointer;
}
.contact-choice input:checked + span { border-color: #20d7b0; background: rgba(32,215,176,.13); color: #fff; }
.conditional-field { display: grid; gap: .45rem; }
.fee-box {
  display: flex; align-items: center; justify-content: space-between; margin-top: .35rem;
  padding: 1rem; border: 1px solid rgba(8,110,245,.6); border-radius: .8rem;
  background: rgba(8,110,245,.12);
}
.fee-box strong { font-size: 1.65rem; }
.no-payment, .privacy-note { margin: 0; color: rgba(255,255,255,.7); font-size: .94rem; line-height: 1.45; }
.no-payment strong { color: #7ee78e; }
.privacy-note { padding-top: .25rem; }
.form-status { min-height: 1.3rem; margin: 0; color: #7ee78e; font-weight: 700; }
.site-footer { padding: 3.5rem 1.25rem 5.5rem; }
.footer-contact-grid {
  display: grid; grid-template-columns: repeat(5, minmax(0,1fr)); gap: .75rem;
  width: min(100%, 1280px); margin: 1.5rem auto 0;
}
.footer-contact-grid a {
  display: flex; flex-direction: column; gap: .25rem; min-height: 5rem; justify-content: center;
  padding: .85rem; border: 1px solid rgba(255,255,255,.14); border-radius: .8rem;
  color: #fff; text-decoration: none;
}
.footer-contact-grid span { color: rgba(255,255,255,.62); font-size: .78rem; text-transform: uppercase; letter-spacing: .08em; }
.footer-contact-grid b { font-size: .95rem; overflow-wrap: anywhere; }
@media (max-width: 900px) {
  .booking-form-section { width: min(calc(100% - 1.25rem), 980px); }
  .footer-contact-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 760px) {
  .booking-image-hotspot { display: none; }
  .booking-form-section { display: block; width: 100%; margin-top: 0; padding: 0 var(--mobile-pad) 1rem; }
  .footer-contact-grid { grid-template-columns: 1fr; }
}

/* Master Release 1.2 final UX corrections */
.location-art { position: relative; }
.location-map-hotspot {
  position: absolute;
  left: 76.3%; top: 78.4%; width: 20.8%; height: 8.8%;
  z-index: 5; border-radius: 10px;
}
.map-button {
  display: inline-flex; align-items: center; justify-content: center;
  margin-top: 1rem; padding: .9rem 1.25rem; border-radius: .75rem;
  background: var(--blue); color: #fff; font-weight: 800; text-decoration: none;
}
.booking-section { background: #03070d; padding-top: clamp(4rem,7vw,8rem); }
.booking-offer {
  width: min(calc(100% - 4rem), var(--art-max)); margin: 0 auto;
  display: grid; grid-template-columns: minmax(0, .9fr) minmax(420px, 1.1fr);
  background: linear-gradient(135deg,#050a12,#081526); color: #fff;
  border: 1px solid rgba(64,139,255,.32); border-radius: 24px; overflow: hidden;
  box-shadow: 0 30px 90px rgba(0,0,0,.35);
}
.booking-offer-copy { padding: clamp(2.4rem,4vw,4.5rem); align-self: center; }
.booking-offer .eyebrow { margin: 0 0 .7rem; color: #20d7b0; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.booking-offer h2 { margin: 0 0 1rem; font-size: clamp(2.4rem,4.1vw,4.8rem); line-height: 1.02; letter-spacing: -.04em; }
.offer-lead { color: rgba(255,255,255,.8); font-size: clamp(1.08rem,1.4vw,1.35rem); }
.booking-offer h3 { margin: 2rem 0 .8rem; font-size: 1.25rem; }
.offer-list { margin: 0; padding-left: 1.3rem; font-size: 1.08rem; line-height: 1.65; }
.offer-fee { margin-top: 2rem; display: flex; justify-content: space-between; align-items: center; padding: 1rem 1.15rem; border: 1px solid rgba(8,110,245,.65); border-radius: .8rem; background: rgba(8,110,245,.14); }
.offer-fee span { color: rgba(255,255,255,.75); }
.offer-fee strong { font-size: 2rem; }
.offer-note { color: rgba(255,255,255,.7); }
.offer-note strong { color: #7ee78e; }
.offer-cta { margin-top: .8rem; }
.booking-model-figure { margin: 0; min-height: 100%; background:#02060d; }
.booking-model-figure img { width: 100%; height: 100%; object-fit: cover; object-position: center top; }
.booking-form-section { display:block; width:min(calc(100% - 4rem),900px); margin: 2rem auto 0; padding:0 0 1rem; }
.booking-card { padding: clamp(1.5rem,3vw,2.4rem); border-radius: 1rem; background:#06101d; color:#fff; box-shadow:0 20px 55px rgba(0,0,0,.28); }
.booking-card h2 { margin:0 0 .8rem; font-size:clamp(2rem,3vw,3rem); }
.booking-intro { color:rgba(255,255,255,.76); }
.reservation-form { display:grid; gap:.8rem; }
.reservation-form label,.reservation-form legend { font-weight:750; }
.reservation-form input[type="text"],.reservation-form input[type="tel"] { width:100%; min-height:3.25rem; padding:.85rem 1rem; border:1px solid rgba(255,255,255,.2); border-radius:.7rem; background:rgba(255,255,255,.08); color:#fff; font:inherit; }
.reservation-form fieldset { border:0; padding:0; margin:.3rem 0; }
.contact-options { display:grid; grid-template-columns:1fr 1fr; gap:.65rem; margin-top:.55rem; }
.contact-choice { position:relative; }
.contact-choice input { position:absolute; opacity:0; }
.contact-choice span { display:flex; min-height:3.15rem; align-items:center; justify-content:center; border:1px solid rgba(255,255,255,.22); border-radius:.7rem; }
.contact-choice input:checked + span { border-color:#20d7b0; background:rgba(32,215,176,.13); }
.fee-box { display:flex; justify-content:space-between; align-items:center; padding:1rem; border:1px solid rgba(8,110,245,.6); border-radius:.8rem; background:rgba(8,110,245,.12); }
.fee-box strong { font-size:1.65rem; }
.no-payment,.privacy-note { color:rgba(255,255,255,.68); }
.form-status { min-height:1.2rem; color:#7ee78e; }
.footer-contact-grid { width:min(100%,1100px); margin:1.5rem auto 0; display:grid; grid-template-columns:repeat(5,1fr); gap:.75rem; }
.footer-contact-grid a { padding:1rem; border:1px solid rgba(255,255,255,.12); border-radius:.75rem; color:#fff; text-decoration:none; }
.footer-contact-grid span { display:block; color:rgba(255,255,255,.58); font-size:.8rem; text-transform:uppercase; }
.footer-contact-grid b { display:block; margin-top:.3rem; font-size:.95rem; overflow-wrap:anywhere; }

@media (max-width: 900px) {
  .booking-offer { width:calc(100% - 1.25rem); grid-template-columns:1fr; }
  .booking-model-figure { max-height:560px; }
  .booking-model-figure img { max-height:560px; object-fit:cover; }
  .booking-form-section { width:calc(100% - 1.25rem); }
  .footer-contact-grid { grid-template-columns:1fr 1fr; }
}
@media (max-width:760px) {
  .location-map-hotspot { display:none; }
  .booking-section { padding-top:2.75rem; }
  .booking-offer { width:100%; border-radius:0; border-left:0; border-right:0; }
  .booking-offer-copy { padding:1.5rem 1.1rem; }
  .booking-offer h2 { font-size:2.2rem; }
  .booking-model-figure { order:-1; max-height:430px; }
  .booking-model-figure img { max-height:430px; }
  .booking-form-section { width:100%; padding:0 1.1rem 1rem; }
  .footer-contact-grid { grid-template-columns:1fr; }
}

/* Master Release 1.2.1 — final CTA corrections */
.primary-button {
  display: inline-flex;
  min-height: 3.75rem;
  align-items: center;
  justify-content: center;
  padding: 1rem 1.65rem;
  border: 1px solid rgba(74, 151, 255, .78);
  border-radius: .85rem;
  background: linear-gradient(135deg, #0759d8, #0a7cff);
  color: #fff;
  font: inherit;
  font-size: 1.08rem;
  font-weight: 800;
  line-height: 1.15;
  text-align: center;
  text-decoration: none;
  box-shadow: 0 14px 36px rgba(8, 110, 245, .34);
  cursor: pointer;
  transition: transform .2s ease, box-shadow .2s ease, filter .2s ease;
}
.primary-button:hover,
.primary-button:focus-visible {
  transform: translateY(-2px);
  box-shadow: 0 18px 44px rgba(8, 110, 245, .48), 0 0 0 3px rgba(32, 215, 176, .15);
  filter: brightness(1.08);
}
.offer-cta {
  width: min(100%, 28rem);
  min-height: 4.4rem;
  margin-top: 1rem;
  font-size: clamp(1.18rem, 1.55vw, 1.45rem);
  text-transform: uppercase;
  letter-spacing: .02em;
}
@media (max-width: 760px) {
  .offer-cta { width: 100%; min-height: 3.8rem; font-size: 1.05rem; }
}
.booking-form-section.cta-arrival .booking-card {
  animation: ctaPulse 1.1s ease;
}
@keyframes ctaPulse {
  0%,100% { box-shadow: 0 20px 55px rgba(0,0,0,.28); }
  45% { box-shadow: 0 22px 70px rgba(8,110,245,.55), 0 0 0 3px rgba(32,215,176,.38); }
}

.form-contact-link {
  display: inline-block;
  margin-top: 12px;
  padding: 10px 16px;
  border: 1px solid #12c7b5;
  border-radius: 8px;
  color: #12c7b5;
  font-weight: 700;
  text-decoration: none;
}
.form-contact-link:hover, .form-contact-link:focus {
  background: rgba(18, 199, 181, 0.12);
}

/* Master Release 1.2.4 — corrected hero contacts and enhanced clickable footer */
.hero-contact-strip {
  position: absolute;
  z-index: 8;
  left: 0;
  right: 0;
  bottom: 0;
  min-height: 10.2%;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-items: stretch;
  background: #020407;
  border-top: 1px solid rgba(255,255,255,.17);
  color: #fff;
}
.hero-contact-item {
  display: flex;
  min-width: 0;
  align-items: center;
  justify-content: center;
  gap: clamp(.55rem, 1vw, 1rem);
  padding: clamp(.55rem, 1.2vw, 1rem) clamp(.65rem, 1.6vw, 1.5rem);
  border-right: 1px solid rgba(255,255,255,.22);
  color: #fff;
  text-decoration: none;
  transition: background-color .2s ease, color .2s ease;
}
.hero-contact-item:last-child { border-right: 0; }
.hero-contact-item:hover,
.hero-contact-item:focus-visible { background: rgba(255,255,255,.075); color: #20d7b0; outline: none; }
.hero-contact-icon {
  display: grid;
  flex: 0 0 auto;
  width: clamp(2rem, 3.1vw, 3.25rem);
  height: clamp(2rem, 3.1vw, 3.25rem);
  place-items: center;
  border: 2px solid currentColor;
  border-radius: 999px;
  color: #fff;
  font-size: clamp(.82rem, 1.3vw, 1.25rem);
  font-weight: 800;
}
.hero-contact-item > span:last-child { min-width: 0; }
.hero-contact-item small,
.hero-contact-item strong { display: block; }
.hero-contact-item small {
  margin-bottom: .05rem;
  color: rgba(255,255,255,.58);
  font-size: clamp(.55rem, .75vw, .78rem);
  font-weight: 700;
  letter-spacing: .09em;
  text-transform: uppercase;
}
.hero-contact-item strong {
  overflow-wrap: anywhere;
  font-size: clamp(.72rem, 1.25vw, 1.22rem);
  line-height: 1.2;
}
.footer-contact-link {
  position: relative;
  display: grid;
  min-height: 112px;
  grid-template-columns: 2.5rem 1fr;
  align-content: center;
  column-gap: .7rem;
  text-align: left;
  transition: transform .2s ease, border-color .2s ease, background-color .2s ease;
}
.footer-contact-link::before {
  content: attr(data-icon);
  display: grid;
  width: 2.5rem;
  height: 2.5rem;
  grid-row: 1 / span 2;
  place-items: center;
  align-self: center;
  border: 1px solid rgba(255,255,255,.22);
  border-radius: 999px;
  color: #fff;
  font-size: 1.15rem;
  font-weight: 800;
}
.footer-contact-link:hover,
.footer-contact-link:focus-visible {
  transform: translateY(-2px);
  border-color: rgba(255,255,255,.42);
  background: rgba(255,255,255,.055);
  outline: none;
}
.footer-contact-link--whatsapp { border-color: rgba(37,211,102,.45) !important; }
.footer-contact-link--whatsapp::before { border-color: #25d366; color: #25d366; }
.footer-contact-link--telegram { border-color: rgba(42,171,238,.45) !important; }
.footer-contact-link--telegram::before { border-color: #2aabee; color: #2aabee; }

@media (max-width: 760px) {
  .hero-contact-strip {
    position: relative;
    min-height: 0;
    grid-template-columns: 1fr;
    border-top: 1px solid rgba(255,255,255,.14);
  }
  .hero-contact-item {
    justify-content: flex-start;
    min-height: 64px;
    padding: .75rem 1.1rem;
    border-right: 0;
    border-bottom: 1px solid rgba(255,255,255,.12);
  }
  .hero-contact-item:last-child { border-bottom: 0; }
  .hero-contact-icon { width: 2.2rem; height: 2.2rem; }
  .hero-contact-item small { font-size: .65rem; }
  .hero-contact-item strong { font-size: .95rem; }
  .footer-contact-link { min-height: 88px; }
}

/* Master Release 1.2.8 — language control separated from the hero reservation CTA.
   The large RESERVE NOW artwork remains fully visible/clickable in the hero. */
.language-toolbar{
  width:100%; min-height:54px; padding:7px clamp(12px,2vw,28px);
  display:flex; align-items:center; justify-content:flex-end;
  background:#fff; border-bottom:1px solid #e8ebef;
  box-sizing:border-box; position:relative; z-index:2300;
}
.language-switcher{
  display:flex; align-items:center; gap:5px; padding:4px;
  background:#fff; border:2px solid #f4b400; border-radius:12px;
  box-shadow:0 5px 16px rgba(0,0,0,.16); white-space:nowrap;
}
.language-switcher__icon{
  display:inline-flex; align-items:center; justify-content:center;
  width:28px; height:34px; font-size:16px;
}
.language-switcher button{
  min-height:36px; border:1px solid #d6dbe2; border-radius:8px;
  padding:.5rem .8rem; background:#f4f6f8; color:#111827;
  font:800 .78rem/1 system-ui,sans-serif; letter-spacing:.02em; cursor:pointer;
  transition:transform .15s ease,box-shadow .15s ease,background .15s ease;
}
.language-switcher button:hover{transform:translateY(-1px);box-shadow:0 3px 9px rgba(0,0,0,.14)}
.language-switcher button[aria-pressed="true"]{background:#ffc400;border-color:#ffc400;color:#111;box-shadow:0 2px 8px rgba(255,196,0,.34)}
.language-switcher button:focus-visible{outline:3px solid #0b6cff;outline-offset:2px}
html[lang="km"] body{font-family:"Noto Sans Khmer","Khmer OS System",Arial,sans-serif}

/* Make the actual reservation form arrival obvious after a CTA click. */
#booking-form{scroll-margin-top:18px}
#booking-form.cta-arrival .booking-card{
  animation:booking-arrival 1.15s ease;
}
@keyframes booking-arrival{
  0%,100%{box-shadow:0 18px 50px rgba(0,0,0,.18)}
  35%{box-shadow:0 0 0 5px rgba(255,196,0,.85),0 18px 55px rgba(0,0,0,.24)}
}

@media(max-width:760px){
  .language-toolbar{min-height:48px;padding:6px 8px;position:sticky;top:0;z-index:2800}
  .language-switcher{gap:3px;padding:3px;border-radius:10px}
  .language-switcher__icon{width:23px;height:30px;font-size:13px}
  .language-switcher button{min-height:32px;padding:.42rem .58rem;font-size:.7rem}
  #booking-form{scroll-margin-top:60px}
}

\n\n/* Master Release 1.3.0 — floating reservation CTA. */
#booking-intro{scroll-margin-top:70px}
.floating-reserve-cta{
  position:fixed; right:clamp(14px,2vw,28px); bottom:clamp(14px,2vw,26px); z-index:3200;
  display:inline-flex; align-items:center; gap:.55rem; min-height:48px; padding:.72rem 1rem;
  border:2px solid #111; border-radius:999px; background:#ffc400; color:#0b0b0b;
  box-shadow:0 8px 24px rgba(0,0,0,.28); text-decoration:none;
  font:900 .82rem/1 system-ui,sans-serif; letter-spacing:.04em; white-space:nowrap;
  transition:transform .15s ease,box-shadow .15s ease;
}
.floating-reserve-cta:hover{transform:translateY(-2px);box-shadow:0 11px 28px rgba(0,0,0,.34)}
.floating-reserve-cta:focus-visible{outline:3px solid #0b6cff;outline-offset:3px}
.floating-reserve-cta__dot{font-size:.62rem;color:#08a88a}
@media(max-width:760px){
  #booking-intro{scroll-margin-top:58px}
  .floating-reserve-cta{right:10px;bottom:10px;min-height:44px;padding:.64rem .82rem;font-size:.74rem;gap:.42rem}
}

/* 1.3.1: native anchor scrolling for floating CTA */
#booking-intro{scroll-margin-top:72px;}
html{scroll-behavior:smooth;}


/* Master Release 1.3.2 — compact single-line header and stable reservation routing. */
/* The language selector now overlays the white navigation band INSIDE the hero artwork,
   so it no longer creates a second white row above the navigation. */
.hero > .language-toolbar{
  position:absolute !important;
  top:clamp(8px,1.15vw,22px) !important;
  right:clamp(12px,1.6vw,30px) !important;
  width:auto !important;
  min-height:0 !important;
  padding:0 !important;
  margin:0 !important;
  background:transparent !important;
  border:0 !important;
  z-index:2900 !important;
  display:block !important;
}
.hero > .language-toolbar .language-switcher{
  gap:4px;
  padding:3px;
  border-width:2px;
  border-radius:11px;
  box-shadow:0 3px 12px rgba(0,0,0,.16);
}
.hero > .language-toolbar .language-switcher__icon{
  width:24px;
  height:31px;
  font-size:14px;
}
.hero > .language-toolbar .language-switcher button{
  min-height:32px;
  padding:.42rem .62rem;
  font-size:.72rem;
}

/* Prevent the old mobile rule from turning the language toolbar into its own sticky row. */
@media(max-width:760px){
  .hero > .language-toolbar{
    position:absolute !important;
    top:6px !important;
    right:7px !important;
    padding:0 !important;
    width:auto !important;
    min-height:0 !important;
    background:transparent !important;
    border:0 !important;
  }
  .hero > .language-toolbar .language-switcher{
    padding:2px;
    gap:2px;
    border-radius:9px;
  }
  .hero > .language-toolbar .language-switcher__icon{width:20px;height:27px;font-size:12px}
  .hero > .language-toolbar .language-switcher button{min-height:28px;padding:.34rem .48rem;font-size:.64rem}
}

/* Floating CTA is a real button now; neutralize browser button defaults. */
button.floating-reserve-cta{
  border:2px solid #111;
  cursor:pointer;
  appearance:none;
  -webkit-appearance:none;
}

/* The exact visual top of the offer is the target. */
#booking-intro{scroll-margin-top:12px !important;}


/* Master Release 1.3.3 — FREE trial conversion test + future pricing area */
.header-prices-link{display:inline-flex;align-items:center;justify-content:center;min-height:32px;padding:.42rem .7rem;border-radius:8px;background:#111;color:#fff;text-decoration:none;font:900 .7rem/1 system-ui,sans-serif;letter-spacing:.04em}
.header-prices-link:hover{background:#ffc400;color:#111}
.prices-section{padding-top:clamp(28px,5vw,70px);padding-bottom:clamp(28px,5vw,70px);background:#f6f7f9}
.prices-card{max-width:900px;margin:0 auto;padding:clamp(24px,5vw,52px);background:#fff;border:1px solid #e6e8ec;border-radius:22px;box-shadow:0 18px 50px rgba(0,0,0,.08);text-align:center}
.prices-card h2{margin:.25em 0 .45em}
.prices-coming-soon{margin:1.2rem auto;padding:1rem 1.25rem;max-width:520px;border:2px dashed #ffc400;border-radius:14px;background:#fff8d8;font-weight:900;letter-spacing:.08em}
.prices-note{font-size:1.05rem}.free-offer strong,.free-fee-box strong{color:#087f5b}
@media(max-width:760px){.header-prices-link{min-height:28px;padding:.34rem .46rem;font-size:.61rem}.prices-card{margin:0 12px}}


/* Master Release 1.3.4 — membership pricing and terms */
.membership-card{max-width:1180px}
.membership-intro{margin:.35rem auto 1.35rem;color:#56606e;font-size:1.05rem}
.membership-price-figure{margin:1.1rem auto 1.5rem;max-width:1100px}
.membership-price-image{display:block;width:100%;height:auto;border-radius:16px;box-shadow:0 16px 38px rgba(0,0,0,.18);background:#05080c}
.membership-terms{max-width:1000px;margin:1.5rem auto;text-align:left;padding:clamp(18px,3vw,30px);border:1px solid #dce3ec;border-radius:18px;background:#f9fbfd;color:#19212b}
.membership-terms h3{margin:.1rem 0 .75rem;color:#0b6cff}
.membership-terms p{margin:.68rem 0;line-height:1.62}
.training-recovery-note{margin-top:1.25rem;padding-top:1.15rem;border-top:1px solid #d8e0ea}
.training-recovery-note h3{color:#111}
html[lang="km"] .membership-terms{line-height:1.75}
@media(max-width:760px){
  .membership-price-figure{margin-left:-8px;margin-right:-8px}
  .membership-price-image{border-radius:10px}
  .membership-terms{padding:18px;margin-top:1.1rem}
}

/* Master Release 1.3.5 — conversion-first bilingual hero + language-specific infographics */
.hero-v135{background:#05080d;color:#fff;overflow:hidden;border-radius:0 0 28px 28px}
.hero-topbar{display:flex;align-items:center;gap:22px;padding:14px 3.2%;background:#fff;color:#0a0c10;border-bottom:1px solid #e8edf3;position:relative;z-index:4}
.hero-brand{display:flex;align-items:baseline;gap:5px;text-decoration:none;color:#12161c;font-weight:900;font-size:clamp(1.2rem,2vw,2rem);white-space:nowrap}.hero-brand .brand-mark{color:#f2bd00}.hero-brand small{font-size:.55em;color:#1677d8;margin-left:2px}
.hero-nav{display:flex;align-items:center;justify-content:center;gap:clamp(12px,2vw,34px);flex:1}.hero-nav a{color:#12161c;text-decoration:none;font-weight:800;font-size:clamp(.72rem,1vw,1rem);white-space:nowrap}.hero-nav a:hover{color:#087bd8}
.hero-topbar .language-switcher{position:static!important;display:flex;align-items:center;gap:4px;background:#fff;border:2px solid #f4bf00;border-radius:13px;padding:4px;box-shadow:0 6px 18px rgba(0,0,0,.12)}
.hero-topbar .language-switcher button{border:0;border-radius:9px;padding:.55rem .72rem;font-weight:900;background:#f3f5f7;color:#111;cursor:pointer}.hero-topbar .language-switcher button[aria-pressed="true"]{background:#ffc400}
.hero-main{display:grid;grid-template-columns:minmax(0,1fr) minmax(420px,1.05fr);min-height:650px;background:radial-gradient(circle at 75% 45%,rgba(0,126,255,.18),transparent 38%),linear-gradient(90deg,#020305 0%,#05080d 55%,#06111d 100%)}
.hero-copy-v135{padding:clamp(48px,6vw,92px) 5.2%;display:flex;flex-direction:column;justify-content:center;position:relative;z-index:2}.hero-kicker{text-transform:uppercase;letter-spacing:.14em;color:#37d5c2;font-weight:900;margin:0 0 14px}.hero-copy-v135 h1{font-size:clamp(2.4rem,5vw,5.4rem);line-height:.98;margin:0 0 24px;max-width:780px}.hero-copy-v135 h1 span{color:#ffc400}.hero-free-line{font-size:clamp(1.35rem,2.2vw,2.2rem);margin:0 0 8px}.hero-free-line strong{color:#37d5c2}.hero-copy-v135>p:last-of-type{font-size:1.08rem;color:#d6dee7;margin:0 0 28px}
.hero-cta{align-self:flex-start;background:#ffc400;color:#080a0d;text-decoration:none;font-weight:950;font-size:clamp(1rem,1.5vw,1.28rem);padding:16px 24px;border-radius:12px;box-shadow:0 12px 28px rgba(255,196,0,.22)}.hero-cta:hover{transform:translateY(-1px)}
.hero-models{position:relative;overflow:hidden;min-height:650px}.hero-models:before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,#05080d 0%,transparent 24%,transparent 100%)}.hero-models img{width:100%;height:100%;object-fit:cover;object-position:center top;display:block}
html[lang="km"] .hero-copy-v135 h1{font-size:clamp(2.2rem,4.2vw,4.5rem);line-height:1.12}.hero-v135 .hero-contact-strip{position:relative;inset:auto;background:#020305;border-top:1px solid rgba(255,255,255,.14)}
@media(max-width:1000px){.hero-nav{display:none}.hero-topbar{justify-content:space-between}.hero-main{grid-template-columns:1fr;min-height:0}.hero-copy-v135{padding:42px 28px 28px}.hero-models{min-height:430px}.hero-models:before{background:linear-gradient(180deg,#05080d 0%,transparent 22%)}}
@media(max-width:760px){.hero-topbar{padding:9px 12px}.hero-brand{font-size:1.2rem}.hero-topbar .language-switcher__icon{display:none}.hero-main{display:flex;flex-direction:column}.hero-copy-v135{padding:32px 18px 22px}.hero-copy-v135 h1{font-size:2.2rem;line-height:1.06}.hero-models{min-height:360px}.hero-cta{width:100%;text-align:center}.hero-v135 .hero-contact-strip{grid-template-columns:1fr}.hero-v135 .hero-contact-item{border-right:0}}
\n\n/* Master Release 1.3.7 — conversion-first direct booking */\n.hero-direct-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;width:min(100%,620px);margin-top:4px}\n.hero-chat-button{display:flex;flex-direction:column;gap:2px;padding:14px 18px;border-radius:12px;text-decoration:none;color:#fff;font-weight:800;border:1px solid rgba(255,255,255,.2);transition:.18s ease;box-shadow:0 10px 25px rgba(0,0,0,.2)}\n.hero-chat-button span{font-size:.78rem;opacity:.78;text-transform:uppercase;letter-spacing:.06em}.hero-chat-button strong{font-size:1.05rem}\n.hero-chat-button--whatsapp{background:#128c4a;border-color:#25d366}.hero-chat-button--telegram{background:#168ac2;border-color:#2aabee}\n.hero-chat-button:hover,.hero-chat-button:focus-visible{transform:translateY(-2px);filter:brightness(1.06)}\n.hero-form-link{display:inline-block;margin-top:14px;color:#cbd7e4;font-weight:750;text-underline-offset:4px}\n.quick-booking{background:#06101d;color:#fff;padding:24px 3.2%;border-bottom:1px solid rgba(255,255,255,.08)}\n.quick-booking-inner{width:min(1180px,100%);margin:auto;display:grid;grid-template-columns:minmax(0,.95fr) minmax(460px,1.05fr);gap:28px;align-items:center;border:1px solid rgba(38,198,218,.45);border-radius:18px;padding:26px;background:linear-gradient(120deg,rgba(4,18,31,.98),rgba(4,10,18,.98));box-shadow:0 18px 50px rgba(0,0,0,.22)}\n.quick-booking .eyebrow{margin:0 0 6px;color:#37d5c2;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.quick-booking h2{margin:0 0 8px;font-size:clamp(1.7rem,3vw,2.8rem)}.quick-booking p{margin:.4rem 0;color:#d7e1eb}\n.quick-booking-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.quick-chat{display:flex;align-items:center;gap:12px;padding:16px;border-radius:13px;text-decoration:none;color:#fff;min-height:76px}.quick-chat span:last-child{display:flex;flex-direction:column}.quick-chat small{opacity:.78}.quick-chat strong{font-size:1.05rem}.quick-chat-icon{font-size:1.55rem}.quick-chat--whatsapp{background:#128c4a}.quick-chat--telegram{background:#168ac2}.quick-form-link{grid-column:1/-1;text-align:center;color:#c9d7e5;padding:8px;text-underline-offset:4px}\n#quick-booking{scroll-margin-top:70px}\n@media(max-width:900px){.quick-booking-inner{grid-template-columns:1fr}.quick-booking-actions{grid-template-columns:1fr 1fr}}\n@media(max-width:600px){.hero-direct-actions{grid-template-columns:1fr}.hero-chat-button{padding:13px 15px}.quick-booking{padding:12px 0}.quick-booking-inner{border-radius:0;border-left:0;border-right:0;padding:20px 16px}.quick-booking-actions{grid-template-columns:1fr}.quick-form-link{grid-column:auto}.quick-chat{min-height:68px}}\nhtml[lang="km"] .quick-booking h2{line-height:1.35}\n