*{
  box-sizing:border-box
}

html{
  scroll-behavior:smooth
}

body{
  margin:0;
  background:#fff;
  color:#111;
  font-family:'DM Sans',sans-serif
}

/* NAVIGATION */

.nav{
  height:86px;
  padding:0 5vw;
  display:flex;
  align-items:center;
  justify-content:space-between;
  background:#111;
  position:sticky;
  top:0;
  z-index:20;
  border-bottom:1px solid #272727
}

.logo-wrap{
  width:190px;
  height:54px;
  overflow:hidden;
  display:block
}

.logo-wrap img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center
}

.nav nav{
  display:flex;
  gap:28px;
  align-items:center
}

.nav nav a{
  color:#fff;
  text-decoration:none;
  font-size:13px
}

.nav nav a:hover{
  opacity:.7
}

.nav-cta{
  border:1px solid #fff;
  padding:12px 18px
}

.menu-btn{
  display:none;
  border:0;
  background:none;
  color:#fff;
  font-size:24px
}


/* HERO */

.hero{
  height:calc(100vh - 86px);
  min-height:620px;
  position:relative;
  overflow:hidden
}

.hero>img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center 28%
}

.hero-overlay{
  position:absolute;
  inset:0;
  background:linear-gradient(
    90deg,
    rgba(0,0,0,.72),
    rgba(0,0,0,.10) 68%
  )
}

.hero-copy{
  position:absolute;
  left:7vw;
  top:50%;
  transform:translateY(-50%);
  color:#fff;
  max-width:680px
}

.eyebrow{
  font-size:11px;
  letter-spacing:.28em;
  font-weight:600
}

.hero h1,
.intro h2,
.feature h2,
.section-head h2,
.booking h2,
.contact h2,
.extension-cta h2{
  font-family:'Italiana',serif;
  font-weight:400
}

.hero h1{
  font-size:clamp(58px,8vw,112px);
  line-height:.92;
  margin:18px 0 24px
}

.hero h1 em{
  font-weight:400
}

.hero-copy>p:not(.eyebrow){
  font-size:18px;
  line-height:1.6;
  max-width:520px
}


/* BUTTONS */

.button{
  display:inline-block;
  text-decoration:none;
  margin-top:22px;
  padding:15px 24px;
  font-size:13px;
  letter-spacing:.08em;
  transition:.2s ease
}

.button:hover{
  transform:translateY(-2px)
}

.button.light{
  background:#fff;
  color:#111
}

.button.dark{
  background:#111;
  color:#fff
}


/* BRAND STRIP */

.brand-strip{
  height:210px;
  background:#111;
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden
}

.brand-strip img{
  width:min(820px,90vw);
  height:100%;
  object-fit:cover;
  object-position:center
}


/* ABOUT */

.intro{
  padding:120px 7vw;
  text-align:center;
  max-width:1050px;
  margin:auto
}

.intro h2,
.section-head h2,
.booking h2{
  font-size:clamp(46px,6vw,78px);
  margin:12px 0 24px
}

.lead{
  font-size:20px;
  line-height:1.8;
  color:#3d3d3d
}


/* SERVICES */

.services{
  padding:100px 7vw;
  background:#111;
  color:#fff
}

.section-head{
  margin-bottom:55px
}

.center{
  text-align:center
}

.service-grid{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:1px;
  background:#3a3a3a
}

.service-grid article{
  background:#111;
  padding:38px 28px;
  min-height:270px
}

.service-grid span{
  font-size:11px;
  letter-spacing:.18em;
  color:#888
}

.service-grid h3{
  font-family:'Italiana',serif;
  font-size:34px;
  font-weight:400;
  margin:55px 0 14px
}

.service-grid p{
  color:#bbb;
  line-height:1.7;
  font-size:14px
}


/* FEATURE SECTION */

.feature{
  display:grid;
  grid-template-columns:1.05fr .95fr;
  min-height:740px;
  background:#fff
}

.feature-img img{
  width:100%;
  height:100%;
  object-fit:cover
}

.feature-copy{
  padding:11vw 8vw;
  display:flex;
  flex-direction:column;
  justify-content:center
}

.feature-copy h2{
  font-size:clamp(44px,5vw,70px);
  line-height:1.05;
  margin:16px 0 26px
}

.feature-copy p:not(.eyebrow){
  line-height:1.8;
  color:#444
}

.text-link{
  color:#111;
  text-decoration:none;
  margin-top:18px;
  font-weight:600
}

.text-link:hover{
  opacity:.65
}


/* EXTENSIONS */

.extensions-section{
  padding:120px 7vw;
  background:#f5f5f5
}

.extensions-section .section-head{
  max-width:950px;
  margin:0 auto 65px
}

.extensions-section .section-head .lead{
  max-width:800px;
  margin:12px auto;
  font-size:18px
}

.extension-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:1px;
  background:#d8d8d8;
  max-width:1400px;
  margin:auto
}

.extension-grid article{
  background:#fff;
  padding:42px 32px;
  min-height:300px
}

.extension-grid span{
  font-size:11px;
  letter-spacing:.18em;
  color:#999
}

.extension-grid h3{
  font-family:'Italiana',serif;
  font-size:34px;
  font-weight:400;
  margin:50px 0 16px
}

.extension-grid p{
  color:#555;
  font-size:14px;
  line-height:1.8
}

.extension-cta{
  max-width:850px;
  margin:90px auto 0;
  text-align:center
}

.extension-cta h2{
  font-size:clamp(42px,5vw,64px);
  line-height:1.05;
  margin-bottom:20px
}

.extension-cta p{
  color:#555;
  font-size:17px;
  line-height:1.8;
  max-width:700px;
  margin:0 auto
}


/* BOOKING */

.booking{
  padding:130px 7vw;
  text-align:center;
  background:#fff
}

.booking p:not(.eyebrow){
  color:#444
}


/* CONTACT */

.contact{
  padding:80px 7vw;
  background:#111;
  color:#fff;
  display:grid;
  grid-template-columns:1.1fr 1fr .6fr;
  gap:48px;
  align-items:start
}

.contact h2{
  font-size:54px;
  margin:10px 0
}

.contact-details{
  display:grid;
  grid-template-columns:1fr;
  gap:8px;
  font-size:14px;
  line-height:1.7
}

.contact a{
  color:#fff;
  text-decoration:none
}

.contact a:hover{
  opacity:.7
}

.qr-card img{
  width:180px;
  max-width:100%;
  background:#fff
}

.qr-card p{
  font-size:12px;
  color:#aaa
}


/* FOOTER */

.footer-brand{
  font-family:'Italiana',serif;
  font-size:24px
}

.footer-brand span{
  display:block;
  font-family:'DM Sans',sans-serif;
  font-size:8px;
  letter-spacing:.35em;
  margin-top:4px
}

footer{
  padding:35px 5vw;
  display:flex;
  justify-content:space-between;
  align-items:center;
  background:#000;
  color:#fff;
  border-top:1px solid #242424
}

footer p{
  font-size:11px;
  color:#888
}


/* TABLET */

@media(max-width:900px){

  .nav nav{
    display:none
  }

  .menu-btn{
    display:block
  }

  .nav.open nav{
    display:flex;
    position:absolute;
    top:86px;
    left:0;
    right:0;
    background:#111;
    flex-direction:column;
    align-items:stretch;
    padding:24px 5vw;
    border-bottom:1px solid #333
  }

  .hero{
    height:78vh;
    min-height:560px
  }

  .hero-copy{
    left:6vw;
    right:6vw
  }

  .service-grid{
    grid-template-columns:1fr 1fr
  }

  .feature{
    grid-template-columns:1fr
  }

  .feature-img{
    height:520px
  }

  .extension-grid{
    grid-template-columns:1fr 1fr
  }

  .contact{
    grid-template-columns:1fr 1fr
  }

  .qr-card{
    grid-column:1/-1
  }

  .qr-card img{
    width:150px
  }

  footer{
    gap:20px;
    flex-direction:column;
    align-items:flex-start
  }
}


/* MOBILE */

@media(max-width:580px){

  .nav{
    height:72px
  }

  .logo-wrap{
    width:155px;
    height:48px
  }

  .nav.open nav{
    top:72px
  }

  .hero{
    height:80vh;
    min-height:520px
  }

  .hero h1{
    font-size:56px
  }

  .hero-copy>p:not(.eyebrow){
    font-size:15px
  }

  .brand-strip{
    height:145px
  }

  .intro,
  .services,
  .booking,
  .extensions-section{
    padding-top:80px;
    padding-bottom:80px
  }

  .service-grid{
    grid-template-columns:1fr
  }

  .feature-img{
    height:430px
  }

  .feature-copy{
    padding:80px 7vw
  }

  .extension-grid{
    grid-template-columns:1fr
  }

  .extension-grid article{
    min-height:auto;
    padding:34px 26px
  }

  .extension-grid h3{
    font-size:30px;
    margin-top:35px
  }

  .extension-cta{
    margin-top:70px
  }

  .contact{
    grid-template-columns:1fr
  }

  .contact h2{
    font-size:44px
  }

  .qr-card{
    grid-column:auto
  }
}