:root{
  --pine:#13241A; --forest:#1F3A29; --gold:#BE9A4E; --cream:#F6F3EA;
}
*{ -webkit-tap-highlight-color: transparent; }
html{ scroll-behavior:smooth; }
body{ background:var(--cream); overflow-x:hidden; }

::selection{ background:#BE9A4E; color:#13241A; }

/* ---- Scroll reveal ---- */
.reveal{ opacity:0; transform:translateY(38px); transition:opacity 1.1s cubic-bezier(.16,1,.3,1), transform 1.1s cubic-bezier(.16,1,.3,1); }
.reveal.in{ opacity:1; transform:none; }
.reveal.d1{ transition-delay:.12s } .reveal.d2{ transition-delay:.24s }
.reveal.d3{ transition-delay:.36s } .reveal.d4{ transition-delay:.48s }

/* ---- Hero slider (Ken Burns) ---- */
.hero-slider{
  position:absolute; inset:0; z-index:0; overflow:hidden;
}
.hero-slide{
  position:absolute; inset:0;
  background-size:cover; background-position:center;
  opacity:0; transform:scale(1);
  transition:opacity 1.6s ease, transform 1.6s ease;
  will-change:opacity, transform;
}
.hero-slide.is-active{
  opacity:1;
  animation:heroZoom 9s ease-out forwards;
}
@keyframes heroZoom{
  from{ transform:scale(1); }
  to  { transform:scale(1.14); }
}
.hero-overlay{
  position:absolute; inset:0; z-index:1; pointer-events:none;
  background:linear-gradient(180deg, rgba(19,36,26,.55) 0%, rgba(19,36,26,.25) 35%, rgba(19,36,26,.78) 100%);
}

.parallax-fixed{ background-attachment:fixed; }
@media (max-width:1024px){ .parallax-fixed{ background-attachment:scroll; } }

.kicker{ letter-spacing:.42em; text-transform:uppercase; font-weight:500; }
.hairline{ width:54px; height:1px; background:var(--gold); }

.lift{ transition:transform .7s cubic-bezier(.16,1,.3,1), box-shadow .7s cubic-bezier(.16,1,.3,1); }
.lift:hover{ transform:translateY(-10px); box-shadow:0 30px 60px -25px rgba(19,36,26,.45); }

.btn-gold{ position:relative; overflow:hidden; transition:color .5s ease; }
.btn-gold::after{ content:""; position:absolute; inset:0; background:var(--pine); transform:translateY(101%); transition:transform .55s cubic-bezier(.16,1,.3,1); z-index:0; }
.btn-gold:hover::after{ transform:translateY(0); }
.btn-gold > span{ position:relative; z-index:1; }
.btn-gold:hover{ color:var(--cream); }

.btn-ghost{ position:relative; }
.btn-ghost::after{ content:""; position:absolute; left:0; bottom:-3px; height:1px; width:0; background:var(--gold); transition:width .5s cubic-bezier(.16,1,.3,1); }
.btn-ghost:hover::after{ width:100%; }

.nav-link{ position:relative; }
.nav-link::after{ content:""; position:absolute; left:0; bottom:-6px; height:1px; width:0; background:var(--gold); transition:width .45s cubic-bezier(.16,1,.3,1); }
.nav-link:hover::after{ width:100%; }

.img-zoom{ overflow:hidden; }
.img-zoom img{ transition:transform 1.4s cubic-bezier(.16,1,.3,1); }
.img-zoom:hover img{ transform:scale(1.07); }

.gal-item img{ transition:transform 1.3s cubic-bezier(.16,1,.3,1), filter .8s ease; filter:saturate(.92) brightness(.96); }
.gal-item:hover img{ transform:scale(1.08); filter:saturate(1.05) brightness(1); }
.gal-item .gal-cap{ opacity:0; transform:translateY(10px); transition:all .6s cubic-bezier(.16,1,.3,1); }
.gal-item:hover .gal-cap{ opacity:1; transform:none; }

.scroll-cue{ animation:cue 2.4s ease-in-out infinite; }
@keyframes cue{ 0%,100%{ transform:translateY(0); opacity:.7 } 50%{ transform:translateY(10px); opacity:1 } }

.mob-panel{ transition:transform .6s cubic-bezier(.16,1,.3,1), opacity .5s ease; }

.grain::before{
  content:""; position:absolute; inset:0; pointer-events:none; opacity:.05; z-index:1;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)'/%3E%3C/svg%3E");
}
details > summary{ list-style:none; cursor:pointer; }
details > summary::-webkit-details-marker{ display:none; }
.input-line{ background:transparent; border:0; border-bottom:1px solid rgba(19,36,26,.22); transition:border-color .4s ease; }
.input-line:focus{ outline:none; border-color:var(--gold); }

/* ---- Testimonial slider ---- */
.ts-dot{
  width:8px; height:8px; border-radius:99px;
  background:rgba(246,243,234,.22);
  border:0; padding:0; cursor:pointer;
  transition:all .5s cubic-bezier(.16,1,.3,1);
}
.ts-dot:hover{ background:var(--gold); }
.ts-dot.is-active{ width:32px; background:var(--gold); }
