/* =========================================================
   Exotic Tropical Garden — main stylesheet
   Tone: cinematic documentary, tropical organic, grounded.
   ========================================================= */

:root{
  /* palette */
  --forest:#173a2a;
  --leaf:#3f6f4e;
  --bamboo:#c6a96b;
  --bamboo-soft:#e0cfa3;
  --earth:#7a5737;
  --ivory:#f6f1e7;
  --ivory-warm:#fbf7ec;
  --stone:#d8d1c4;
  --stone-soft:#ece7dc;
  --charcoal:#1f241f;

  /* type */
  --serif:"Cormorant Garamond","Cormorant",Georgia,serif;
  --sans:"Inter",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif;

  /* spacing */
  --s-1:.5rem;
  --s-2:1rem;
  --s-3:1.5rem;
  --s-4:2rem;
  --s-5:3rem;
  --s-6:4.5rem;
  --s-7:7rem;

  /* layout */
  --maxw:1240px;
  --gutter:clamp(1.25rem, 4vw, 2.5rem);

  /* motion */
  --ease:cubic-bezier(.22,.61,.36,1);
  --slow:1.1s;
  --med:.7s;
  --fast:.35s;
}

/* ===== reset / base ===== */
*,*::before,*::after{box-sizing:border-box;}
html,body{margin:0;padding:0;}
html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;}
body{
  font-family:var(--sans);
  font-weight:400;
  font-size:18px;
  line-height:1.7;
  color:var(--charcoal);
  background:var(--ivory);
  overflow-x:hidden;
}
img{max-width:100%;display:block;}
a{color:inherit;text-decoration:none;}
button{font:inherit;cursor:pointer;background:none;border:0;color:inherit;}
::selection{background:var(--forest);color:var(--ivory);}

/* ===== focus states (accessibility) ===== */
a:focus-visible,
button:focus-visible,
.btn:focus-visible,
input:focus-visible,
textarea:focus-visible{
  outline:2px solid var(--bamboo);
  outline-offset:3px;
  border-radius:4px;
}

/* ===== typography ===== */
.display{
  font-family:var(--serif);
  font-weight:600;
  font-size:clamp(2rem, 4.6vw, 3.25rem);
  line-height:1.1;
  letter-spacing:-.005em;
  color:var(--forest);
  margin:0 0 var(--s-3);
}
.display em{font-style:italic;color:var(--earth);}
.lede{
  font-family:var(--serif);
  font-weight:400;
  font-size:clamp(1.2rem,1.6vw,1.4rem);
  line-height:1.6;
  color:var(--charcoal);
  margin:0 0 var(--s-3);
  max-width:62ch;
}
.kicker{
  font-family:var(--sans);
  font-size:.82rem;
  font-weight:600;
  letter-spacing:.28em;
  text-transform:uppercase;
  color:var(--earth);
  margin:0 0 var(--s-3);
}
p{margin:0 0 var(--s-3);max-width:62ch;line-height:1.7;}

/* ===== buttons ===== */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.45em;
  padding:1rem 1.75rem;
  min-height:48px;
  font-family:var(--sans);font-size:.92rem;font-weight:600;
  letter-spacing:.16em;text-transform:uppercase;
  border-radius:999px;
  transition:all var(--fast) var(--ease);
  border:1px solid transparent;
  white-space:nowrap;
}
.btn--primary{background:var(--forest);color:var(--ivory);box-shadow:0 8px 24px -12px rgba(23,58,42,.55);}
.btn--primary:hover{background:var(--charcoal);transform:translateY(-1px);box-shadow:0 12px 28px -10px rgba(23,58,42,.7);}
.btn--ghost{border-color:rgba(246,241,231,.9);color:var(--ivory);background:rgba(23,58,42,.18);}
.btn--ghost:hover{border-color:var(--ivory);background:rgba(246,241,231,.18);}
.btn--ghost-dark{border-color:var(--forest);color:var(--forest);border-width:1.5px;}
.btn--ghost-dark:hover{background:var(--forest);color:var(--ivory);}

/* =========================================================
   NAV
   ========================================================= */
.nav{
  position:fixed;inset:0 0 auto 0;
  z-index:50;
  display:flex;align-items:center;justify-content:space-between;
  padding:1.05rem var(--gutter);
  background:linear-gradient(to bottom, rgba(23,58,42,.55), rgba(23,58,42,0));
  transition:background var(--med) var(--ease), padding var(--med) var(--ease), backdrop-filter var(--med) var(--ease);
}
.nav.is-scrolled{
  background:rgba(246,241,231,.94);
  backdrop-filter:saturate(140%) blur(14px);
  -webkit-backdrop-filter:saturate(140%) blur(14px);
  padding:.65rem var(--gutter);
  box-shadow:0 1px 0 rgba(23,58,42,.08);
}
.nav__brand{display:flex;align-items:center;gap:.85rem;color:var(--ivory);transition:color var(--med) var(--ease);}
.nav.is-scrolled .nav__brand{color:var(--forest);}
.nav__logo{width:42px;height:42px;object-fit:contain;filter:drop-shadow(0 1px 4px rgba(0,0,0,.25));}
.nav__wordmark{display:flex;flex-direction:column;line-height:1.1;}
.nav__title{font-family:var(--serif);font-weight:600;font-size:1.25rem;letter-spacing:.005em;}
.nav__sub{font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;opacity:.95;margin-top:2px;}

.nav__links{display:flex;gap:1.7rem;align-items:center;}
.nav__links a{
  font-size:.88rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;
  color:var(--ivory);opacity:1;
  text-shadow:0 1px 2px rgba(0,0,0,.25);
  transition:opacity var(--fast) var(--ease), color var(--med) var(--ease);
  position:relative;
}
.nav.is-scrolled .nav__links a{color:var(--forest);text-shadow:none;}
.nav__links a:hover{opacity:.85;}
.nav__links a::after{
  content:"";position:absolute;left:0;right:0;bottom:-6px;height:1px;
  background:currentColor;transform:scaleX(0);transform-origin:left;
  transition:transform var(--med) var(--ease);
}
.nav__links a:hover::after{transform:scaleX(1);}
.nav__links a.nav__external{
  padding:.55rem .95rem;
  border:1px solid rgba(246,241,231,.55);
  border-radius:999px;
}
.nav.is-scrolled .nav__links a.nav__external{border-color:var(--forest);}
.nav__links a.nav__external::after{display:none;}
.nav__links a.nav__external:hover{background:rgba(246,241,231,.12);}
.nav.is-scrolled .nav__links a.nav__external:hover{background:var(--forest);color:var(--ivory);}

.nav__toggle{display:none;width:34px;height:34px;flex-direction:column;justify-content:center;gap:5px;}
.nav__toggle span{display:block;height:1.5px;background:var(--ivory);transition:all var(--fast) var(--ease);}
.nav.is-scrolled .nav__toggle span{background:var(--forest);}

/* =========================================================
   HERO
   ========================================================= */
.hero{
  position:relative;
  min-height:100svh;
  display:flex;align-items:center;
  padding:0 var(--gutter);
  overflow:hidden;
  isolation:isolate;
  color:var(--ivory);
}
.hero__media{position:absolute;inset:0;z-index:-1;}
.hero__image{
  width:100%;height:100%;object-fit:cover;
  filter:saturate(1.05) brightness(.7);
  animation:heroFloat 24s var(--ease) infinite alternate;
}
.hero__overlay{
  position:absolute;inset:0;
  background:
    linear-gradient(180deg, rgba(23,58,42,.7) 0%, rgba(23,58,42,.5) 35%, rgba(31,36,31,.85) 100%),
    radial-gradient(80% 60% at 75% 30%, rgba(198,169,107,.18) 0%, transparent 60%);
}
@keyframes heroFloat{
  0%{transform:scale(1.02);}
  100%{transform:scale(1.08);}
}

.hero__content{
  max-width:780px;
  padding-top:6.5rem;
  padding-bottom:6rem;
}
.hero__eyebrow{
  font-size:.82rem;font-weight:600;letter-spacing:.34em;text-transform:uppercase;
  color:var(--bamboo-soft);
  text-shadow:0 1px 3px rgba(0,0,0,.4);
  margin:0 0 var(--s-3);
}
.hero__title{
  font-family:var(--serif);font-weight:600;
  font-size:clamp(2.4rem, 6vw, 4.75rem);
  line-height:1.08;letter-spacing:-.01em;
  margin:0 0 var(--s-4);color:var(--ivory);
  text-shadow:0 2px 16px rgba(0,0,0,.35);
}
.hero__title-line{display:block;}
.hero__lede{
  font-family:var(--serif);font-weight:400;
  font-size:clamp(1.15rem, 1.55vw, 1.4rem);
  line-height:1.6;color:var(--ivory);opacity:1;
  text-shadow:0 1px 6px rgba(0,0,0,.4);
  max-width:58ch;margin:0 0 var(--s-5);
}
.hero__cta{display:flex;gap:.85rem;flex-wrap:wrap;}

.hero__scroll{
  position:absolute;left:var(--gutter);bottom:1.8rem;
  display:flex;flex-direction:column;align-items:center;gap:.55rem;
  color:var(--ivory);opacity:.85;
}
.hero__scroll-line{
  width:1px;height:46px;background:var(--ivory);
  transform-origin:top;animation:scrollPulse 2.4s var(--ease) infinite;
}
.hero__scroll-label{font-size:.66rem;letter-spacing:.32em;text-transform:uppercase;}
@keyframes scrollPulse{
  0%{transform:scaleY(0);opacity:.4;}
  50%{transform:scaleY(1);opacity:1;}
  100%{transform:scaleY(0);transform-origin:bottom;opacity:.4;}
}

/* =========================================================
   GENERIC SECTION
   ========================================================= */
.section{padding:var(--s-7) var(--gutter);position:relative;}
.section__inner{max-width:var(--maxw);margin:0 auto;}
.section__head{max-width:680px;margin-bottom:var(--s-6);}
.section__head--center{margin-left:auto;margin-right:auto;text-align:center;}
.section__head--center .lede{margin-left:auto;margin-right:auto;}

/* ===== INTRO ===== */
.section--intro{padding:var(--s-6) var(--gutter);background:var(--ivory-warm);}
.intro{max-width:780px;margin:0 auto;text-align:center;}
.intro .lede{font-size:clamp(1.2rem,1.7vw,1.5rem);color:var(--forest);}

/* ===== THREE SPACES ===== */
.section--spaces{background:var(--ivory);}
.spaces{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:var(--s-4);
}
.space-card{
  display:flex;flex-direction:column;
  background:var(--ivory-warm);
  border:1px solid var(--stone-soft);
  border-radius:6px;
  overflow:hidden;
  transition:transform var(--med) var(--ease), box-shadow var(--med) var(--ease), border-color var(--med) var(--ease);
}
.space-card:hover{
  transform:translateY(-4px);
  box-shadow:0 30px 70px -40px rgba(23,58,42,.35);
  border-color:var(--bamboo-soft);
}
.space-card__media{
  aspect-ratio:4/3;
  overflow:hidden;
  background:var(--stone);
}
.space-card__media img{
  width:100%;height:100%;object-fit:cover;
  transition:transform 1.4s var(--ease);
}
.space-card:hover .space-card__media img{transform:scale(1.04);}
.space-card__body{
  padding:var(--s-5) var(--s-4);
  display:flex;flex-direction:column;gap:1rem;
  flex:1;
}
.space-card__role{
  font-family:var(--sans);font-size:.78rem;font-weight:600;
  letter-spacing:.22em;text-transform:uppercase;
  color:var(--earth);margin:0;
}
.space-card h3{
  font-family:var(--serif);font-weight:600;
  font-size:1.75rem;color:var(--forest);
  margin:0;letter-spacing:.005em;line-height:1.15;
}
.space-card p{
  margin:0;color:var(--charcoal);font-size:1.06rem;line-height:1.7;
}
.space-card .btn{align-self:flex-start;margin-top:auto;}

/* ===== WHAT WE DO ===== */
.section--what{
  background:var(--forest);
  color:var(--ivory);
}
.section--what .display{color:var(--ivory);}
.section--what .lede{color:var(--ivory);opacity:1;}
.section--what .kicker{color:var(--bamboo-soft);}

.what-grid{
  list-style:none;padding:0;margin:0;
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:var(--s-3);
}
.what-card{
  padding:var(--s-3) var(--s-3) var(--s-4);
  border-top:1px solid rgba(246,241,231,.35);
}
.what-card h3{
  font-family:var(--serif);font-weight:600;
  font-size:1.3rem;color:var(--ivory);
  margin:0 0 .6rem;letter-spacing:.005em;line-height:1.2;
}
.what-card p{
  color:var(--ivory);opacity:.95;
  margin:0;font-size:1rem;line-height:1.65;
}

/* ===== STORY ===== */
.section--story{background:var(--ivory-warm);}
.two-col{display:grid;grid-template-columns:1.15fr 1fr;gap:var(--s-7);align-items:start;}
.two-col__aside{display:flex;flex-direction:column;gap:var(--s-4);}
.frame{margin:0;border-radius:4px;overflow:hidden;box-shadow:0 30px 80px -40px rgba(23,58,42,.45);background:var(--stone);}
.frame--portrait{aspect-ratio:4/5;}
.frame img{width:100%;height:100%;object-fit:cover;}
.meta{margin:0;display:grid;gap:.85rem;border-top:1px solid var(--stone);padding-top:var(--s-4);}
.meta div{display:grid;grid-template-columns:120px 1fr;gap:1rem;}
.meta dt{font-size:.78rem;letter-spacing:.22em;text-transform:uppercase;color:var(--earth);font-weight:600;}
.meta dd{margin:0;color:var(--charcoal);font-family:var(--serif);font-size:1.12rem;line-height:1.45;}

/* ===== GALLERY ===== */
.section--gallery{background:var(--stone-soft);}
.gallery-group + .gallery-group{margin-top:var(--s-6);}
.gallery-group__title{
  font-family:var(--serif);font-weight:600;
  font-size:1.65rem;color:var(--forest);
  margin:0 0 .6rem;letter-spacing:.005em;line-height:1.15;
}
.gallery-group__note{
  font-family:var(--serif);font-style:italic;font-size:1rem;
  color:var(--earth);margin:0 0 var(--s-3);max-width:62ch;
}
.gallery{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:14px;
}
.gallery__item{
  margin:0;position:relative;overflow:hidden;
  aspect-ratio:4/3;background:var(--stone);
  border-radius:3px;
  box-shadow:0 20px 50px -32px rgba(23,58,42,.4);
  transition:transform .9s var(--ease);
}
.gallery__item img{
  width:100%;height:100%;object-fit:cover;
  transition:transform 1.4s var(--ease), filter 1.4s var(--ease);
}
.gallery__item:hover img{transform:scale(1.05);filter:saturate(1.08);}
.gallery__item:hover{transform:translateY(-2px);}

/* ===== SUPPORT ===== */
.section--support{
  background:
    radial-gradient(80% 60% at 80% 0%, rgba(198,169,107,.18) 0%, transparent 60%),
    var(--ivory-warm);
}
.support{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-7);align-items:start;}
.support__copy .btn{margin-top:.5rem;}
.support__list{
  list-style:none;padding:0;margin:0;
  display:grid;gap:.7rem;
}
.support__list li{
  font-family:var(--serif);font-size:1.2rem;color:var(--charcoal);
  padding:.9rem 0;border-top:1px solid var(--stone);
  display:flex;align-items:center;gap:.8rem;line-height:1.4;
}
.support__list li::before{
  content:"";width:6px;height:6px;border-radius:50%;
  background:var(--bamboo);flex:0 0 auto;
}
.support__list li:last-child{border-bottom:1px solid var(--stone);}

/* ===== CONTACT ===== */
.section--contact{background:var(--forest);color:var(--ivory);}
.section--contact .display{color:var(--ivory);}
.section--contact .lede{color:var(--ivory);opacity:1;}
.section--contact .kicker{color:var(--bamboo-soft);}

.contact{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-7);align-items:start;}
.contact__meta{list-style:none;padding:0;margin:var(--s-4) 0 0;display:grid;gap:1.1rem;}
.contact__meta li{
  display:grid;grid-template-columns:110px 1fr;gap:1rem;align-items:baseline;
  font-family:var(--serif);font-size:1.18rem;color:var(--ivory);line-height:1.45;
}
.contact__meta span{font-family:var(--sans);font-size:.78rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--bamboo-soft);}
.contact__meta a{
  border-bottom:1px solid rgba(224,207,163,.7);
  padding:2px 0;
  transition:color var(--fast) var(--ease), border-color var(--fast) var(--ease);
  word-break:break-word;
}
.contact__meta a:hover{color:var(--bamboo-soft);border-color:var(--bamboo);}

.contact__form{display:grid;gap:var(--s-3);}
.contact__form label{display:grid;gap:.45rem;}
.contact__form span{font-size:.78rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--bamboo-soft);}
.contact__form input,.contact__form textarea{
  width:100%;
  background:transparent;
  border:0;border-bottom:1px solid rgba(246,241,231,.5);
  padding:.8rem 0;
  font:inherit;color:var(--ivory);
  font-family:var(--serif);font-size:1.15rem;
  transition:border-color var(--med) var(--ease);
}
.contact__form textarea{resize:vertical;}
.contact__form input:focus,.contact__form textarea:focus{outline:none;border-color:var(--bamboo);}
.contact__form .btn{justify-self:start;margin-top:var(--s-2);background:var(--bamboo);color:var(--charcoal);border-color:var(--bamboo);}
.contact__form .btn:hover{background:var(--ivory);border-color:var(--ivory);}
.contact__sent{color:var(--bamboo-soft);font-family:var(--serif);font-size:1.05rem;margin-top:.5rem;}

/* =========================================================
   FOOTER
   ========================================================= */
.footer{background:var(--charcoal);color:var(--ivory);padding:var(--s-6) var(--gutter) var(--s-4);border-top:1px solid rgba(198,169,107,.18);}
.footer__inner{max-width:var(--maxw);margin:0 auto;display:grid;grid-template-columns:1fr auto;gap:var(--s-5);align-items:end;}
.footer__brand{display:flex;flex-direction:column;gap:.25rem;}
.footer__logo{width:48px;height:48px;object-fit:contain;margin-bottom:.4rem;}
.footer__name{font-family:var(--serif);font-weight:600;font-size:1.35rem;color:var(--ivory);margin:0;}
.footer__tag{font-size:.92rem;letter-spacing:.16em;text-transform:uppercase;color:var(--bamboo-soft);margin:0;opacity:1;line-height:1.4;}
.footer__nav{display:flex;flex-wrap:wrap;gap:1.2rem;justify-content:flex-end;}
.footer__nav a{font-size:.9rem;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--ivory);opacity:.92;transition:opacity var(--fast) var(--ease);}
.footer__nav a:hover{opacity:1;}
.footer__legal{
  grid-column:1/-1;
  margin:var(--s-4) 0 0;
  font-size:.85rem;letter-spacing:.12em;text-transform:uppercase;
  color:var(--ivory);opacity:.75;
}

/* =========================================================
   REVEAL ANIMATION
   ========================================================= */
.reveal{
  opacity:0;
  transform:translateY(20px);
  transition:opacity var(--slow) var(--ease), transform var(--slow) var(--ease);
}
.reveal.is-visible{opacity:1;transform:none;}
.reveal:nth-child(2){transition-delay:.08s;}
.reveal:nth-child(3){transition-delay:.16s;}
.reveal:nth-child(4){transition-delay:.24s;}
.reveal:nth-child(5){transition-delay:.32s;}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
  }
  .reveal{opacity:1;transform:none;}
  .hero__image{animation:none;}
}

/* =========================================================
   RESPONSIVE
   ========================================================= */
@media (max-width:1080px){
  .what-grid{grid-template-columns:repeat(2,1fr);}
  .spaces{grid-template-columns:1fr;gap:var(--s-5);}
  .space-card{flex-direction:row;}
  .space-card__media{flex:0 0 42%;aspect-ratio:auto;}
  .space-card__body{flex:1;}
}

@media (max-width:960px){
  :root{--s-6:3rem;--s-7:5rem;}
  .nav__links{display:none;}
  .nav__toggle{display:flex;}
  .nav__sub{display:none;}
  .nav__title{font-size:1.05rem;}

  .two-col{grid-template-columns:1fr;gap:var(--s-5);}
  .two-col__aside{order:-1;}

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

  .support{grid-template-columns:1fr;gap:var(--s-5);}
  .contact{grid-template-columns:1fr;gap:var(--s-5);}
  .footer__inner{grid-template-columns:1fr;}
  .footer__nav{justify-content:flex-start;}
}

@media (max-width:640px){
  body{font-size:17px;line-height:1.7;}
  .hero__content{padding-top:7rem;padding-bottom:5rem;}
  .hero__title{font-size:clamp(2.4rem, 9vw, 2.75rem);}
  .hero__lede{font-size:1.125rem;}
  .hero__cta{flex-direction:column;align-items:stretch;}
  .hero__cta .btn{justify-content:center;}

  .display{font-size:clamp(2rem, 7vw, 2.4rem);}
  .lede{font-size:1.125rem;line-height:1.6;}

  .space-card{flex-direction:column;}
  .space-card__media{flex:0 0 auto;aspect-ratio:4/3;}
  .space-card h3{font-size:1.45rem;}
  .space-card p{font-size:1.03rem;}

  .what-grid{grid-template-columns:1fr;}
  .gallery{grid-template-columns:1fr;}

  .meta div{grid-template-columns:1fr;gap:.2rem;}
  .contact__meta li{grid-template-columns:1fr;gap:.25rem;font-size:1.1rem;}
  .contact__meta a{display:inline-block;padding:6px 0;}

  .support__list li{font-size:1.1rem;}
  .footer__tag{font-size:.85rem;}
  .footer__nav a{font-size:.85rem;}

  .btn{font-size:.9rem;padding:1rem 1.5rem;}
}

/* mobile menu open state */
.nav.is-open .nav__links{
  display:flex;flex-direction:column;align-items:flex-start;gap:1.2rem;
  position:absolute;top:100%;left:0;right:0;
  padding:1.4rem var(--gutter) 2rem;
  background:rgba(246,241,231,.97);
  backdrop-filter:saturate(140%) blur(18px);
  -webkit-backdrop-filter:saturate(140%) blur(18px);
  border-top:1px solid rgba(23,58,42,.08);
}
.nav.is-open .nav__links a{color:var(--forest);font-size:1rem;}
.nav.is-open .nav__links a.nav__external{align-self:flex-start;border-color:var(--forest);}
