/* ==========================================================================
   AAVALINE — Luxury Weddings & Events
   Design system + layout
   ========================================================================== */

:root{
  /* palette */
  --av-cream:        #F8F3EA;
  --av-cream-soft:   #F1EAdd;
  --av-cream-tint:   #F3ECE0;
  --av-maroon:        #5C1A2A;
  --av-maroon-dark:   #45121F;
  --av-maroon-light:  #7A2A3D;
  --av-ink:           #2A2420;
  --av-ink-soft:      #665B51;
  --av-gold:          #B08D57;
  --av-line:          #DDD0BC;
  --av-white:         #FFFFFF;

  /* type */
  --f-display: 'Playfair Display', Georgia, serif;
  --f-body:    'Cormorant Garamond', Georgia, serif;
  --f-nav:     'Jost', 'Helvetica Neue', Arial, sans-serif;
  --f-script:  'Tangerine', cursive;

  --container-pad: 1.5rem;

  /* motion */
  --ease-luxe: cubic-bezier(.22,.61,.36,1);
}

*{ box-sizing:border-box; }

html{ scroll-behavior:smooth; scroll-padding-top:90px; overflow-x:hidden; max-width:100%; }

body{
  font-family: var(--f-body);
  background: var(--av-cream);
  color: var(--av-ink);
  font-size: 1.15rem;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

/* -------------------- page fade-in -------------------- */
body.pre-reveal{ opacity:0; }
body.av-loaded{
  opacity:1;
  transition: opacity 1.1s var(--ease-luxe);
}

img{ max-width:100%; display:block; }

a{ color:inherit; text-decoration:none; }

h1,h2,h3,h4{
  font-family: var(--f-display);
  color: var(--av-maroon);
  margin:0;
  letter-spacing: .01em;
}

::selection{ background: var(--av-maroon); color:#fff; }

/* -------------------- scroll reveal -------------------- */
.reveal{
  opacity:0;
  transform: translateY(28px);
  transition: opacity .9s var(--ease-luxe), transform .9s var(--ease-luxe);
  will-change: opacity, transform;
}
.reveal[data-reveal="fade-left"]{ transform: translateX(-36px); }
.reveal[data-reveal="fade-right"]{ transform: translateX(36px); }
.reveal.is-visible{ opacity:1; transform: translate(0,0); }

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

/* -------------------- shared type -------------------- */
.av-eyebrow{
  font-family: var(--f-nav);
  font-size: .78rem;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--av-maroon);
  margin-bottom: .9rem;
  font-weight: 500;
}
.av-eyebrow-light{ color: rgba(255,255,255,.85); }

.av-h2{
  font-size: clamp(1.9rem, 3.4vw, 2.75rem);
  font-weight: 500;
  line-height: 1.18;
  margin-bottom: 1.25rem;
}
.av-h2-light{ color:#fff; }

.av-h3{
  font-size: 1.3rem;
  font-weight: 500;
  margin: 1.1rem 0 .6rem;
}

.av-lead{
  font-size: 1.28rem;
  color: var(--av-ink);
  margin-bottom: 1.1rem;
}
.av-lead-light{ color: rgba(255,255,255,.92); }

.av-body-text{
  color: var(--av-ink-soft);
  margin-bottom: 1.3rem;
}

.av-card-text{
  color: var(--av-ink-soft);
  font-size: 1.08rem;
}

.av-script{
  font-family: var(--f-script);
  font-weight:700;
  font-size: 4.2rem;
  line-height: 1;
  color: var(--av-maroon);
  margin: .1rem 0 .2rem;
}

.av-text-link{
  font-family: var(--f-nav);
  font-size: .85rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--av-maroon);
  border-bottom: 1px solid var(--av-maroon);
  padding-bottom: 3px;
  display:inline-flex;
  align-items:center;
  gap:.5rem;
  transition: gap .3s var(--ease-luxe), opacity .3s ease;
}
.av-text-link:hover{ gap:.85rem; opacity:.8; }

/* -------------------- buttons -------------------- */
.av-btn{
  font-family: var(--f-nav);
  font-size: .82rem;
  letter-spacing: .16em;
  text-transform: uppercase;
  padding: .95rem 2.1rem;
  border-radius: 2px;
  border: 1px solid transparent;
  transition: all .4s var(--ease-luxe);
  display:inline-flex;
  align-items:center;
}
.av-btn-primary{
  background: var(--av-maroon);
  color:#fff;
  border-color: var(--av-maroon);
}
.av-btn-primary:hover{
  background: var(--av-maroon-dark);
  border-color: var(--av-maroon-dark);
  color:#fff;
  transform: translateY(-2px);
  box-shadow: 0 14px 28px -12px rgba(69,18,31,.55);
}
.av-btn-outline-nav{
  background: transparent;
  border-color: currentColor;
  color: inherit;
  padding: .55rem 1.5rem;
}
.av-btn-outline-nav:hover{
  background: var(--av-maroon);
  border-color: var(--av-maroon);
  color:#fff;
}
.av-btn-light{
  background: #fff;
  color: var(--av-maroon);
  border-color:#fff;
}
.av-btn-light:hover{
  background: transparent;
  color:#fff;
  border-color:#fff;
  transform: translateY(-2px);
}

/* ==========================================================================
   NAV
   ========================================================================== */
.av-nav{
  padding: 1.35rem 0;
  background: transparent;
  transition: background .45s var(--ease-luxe), padding .45s var(--ease-luxe), box-shadow .45s ease;
}
.av-nav.av-nav-scrolled{
  background: rgba(248,243,234,.96);
  backdrop-filter: blur(6px);
  padding: .85rem 0;
  box-shadow: 0 8px 24px -18px rgba(42,36,32,.35);
}

.av-logo{ display:flex; flex-direction:column; line-height:1.05; }
.av-logo-main{
  font-family: var(--f-display);
  font-size: 1.55rem;
  letter-spacing: .16em;
  color: #fff;
  transition: color .4s ease;
}
.av-logo-sub{
  font-family: var(--f-nav);
  font-size: .58rem;
  letter-spacing: .24em;
  text-transform: uppercase;
  color: rgba(255,255,255,.75);
  transition: color .4s ease;
}
.av-nav-scrolled .av-logo-main{ color: var(--av-maroon); }
.av-nav-scrolled .av-logo-sub{ color: var(--av-ink-soft); }

.av-nav .nav-link{
  font-family: var(--f-nav);
  font-size: .8rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: rgba(255,255,255,.92);
  position: relative;
  padding: .3rem 0 !important;
  margin: 0 .1rem;
  transition: color .3s ease;
}
.av-nav .nav-link::after{
  content:"";
  position:absolute; left:0; bottom:-2px;
  width:0; height:1px;
  background: currentColor;
  transition: width .35s var(--ease-luxe);
}
.av-nav .nav-link:hover::after{ width:100%; }
.av-nav-scrolled .nav-link{ color: var(--av-ink); }
.av-nav-scrolled .av-btn-outline-nav{ color: var(--av-maroon); }

.av-toggler-icon{ color:#fff; font-size:1.6rem; }
.av-nav-scrolled .av-toggler-icon{ color: var(--av-maroon); }
.navbar-toggler{ border:0; box-shadow:none !important; }

@media (max-width: 991.98px){
  .navbar-collapse{
    background: rgba(248,243,234,.98);
    margin-top: 1rem;
    padding: 1.25rem 1.5rem;
    border-radius: 6px;
  }
  .av-nav .nav-link, .av-nav-scrolled .nav-link{ color: var(--av-ink); padding:.55rem 0 !important; }
  .av-nav .nav-item{ border-bottom: 1px solid var(--av-line); }
  .av-nav .nav-item:last-child{ border-bottom:0; margin-top:.75rem; }
}

/* ==========================================================================
   HERO
   ========================================================================== */
.av-hero{
  position: relative;
  min-height: 100vh;
  display:flex;
  align-items:center;
  overflow:hidden;
}
.av-hero-media{
  position:absolute; inset:0;
}
.av-hero-media img{
  width:100%; height:100%; object-fit:cover;
  transform: scale(1.06);
  animation: avKenBurns 18s ease-in-out infinite alternate;
}
@keyframes avKenBurns{
  from{ transform: scale(1.06) translate3d(0,0,0); }
  to{ transform: scale(1.14) translate3d(-1%, -1%, 0); }
}
.av-hero-overlay{
  position:absolute; inset:0;
  background: linear-gradient(180deg, rgba(20,12,10,.62) 0%, rgba(20,12,10,.28) 38%, rgba(20,12,10,.42) 72%, rgba(20,12,10,.72) 100%);
}
.av-hero-content{ position:relative; z-index:2; padding-top: 6rem; }
.av-hero .av-eyebrow{ color: rgba(255,255,255,.88); }
.av-hero-title{
  font-size: clamp(2.6rem, 6vw, 4.6rem);
  color:#fff;
  font-weight: 500;
  line-height: 1.08;
  margin-bottom: 1.4rem;
  text-shadow: 0 6px 30px rgba(0,0,0,.25);
}
.av-hero-text{
  color: rgba(255,255,255,.9);
  font-size: 1.3rem;
  max-width: 34rem;
  margin-bottom: 2rem;
}
.av-hero-location{
  font-family: var(--f-nav);
  font-size: .8rem;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: rgba(255,255,255,.75);
  margin-top: 2.4rem;
}

.av-scroll-cue{
  position:absolute; left:50%; bottom:2.4rem; transform:translateX(-50%);
  width:26px; height:42px;
  border:1px solid rgba(255,255,255,.7);
  border-radius:14px;
  z-index:2;
}
.av-scroll-cue span{
  position:absolute; top:8px; left:50%; transform:translateX(-50%);
  width:4px; height:4px; border-radius:50%;
  background:#fff;
  animation: avScrollCue 2.2s ease-in-out infinite;
}
@keyframes avScrollCue{
  0%{ opacity:1; top:8px; }
  70%{ opacity:0; top:22px; }
  100%{ opacity:0; top:22px; }
}

/* ==========================================================================
   SECTIONS (generic)
   ========================================================================== */
.av-section{ padding: 7rem 0; }
.av-section-tint{ background: var(--av-cream-tint); }

@media (max-width: 767.98px){
  .av-section{ padding: 4.5rem 0; }
}

.av-img-frame{
  overflow:hidden;
  border-radius: 4px;
  box-shadow: 0 30px 60px -30px rgba(42,26,20,.35);
}
.av-img-frame img{
  width:100%; height:100%; object-fit:cover;
  aspect-ratio: 4/5;
  transition: transform 1.2s var(--ease-luxe);
}
.av-img-frame:hover img{ transform: scale(1.045); }
.av-img-frame-portrait img{ aspect-ratio: 3/4; }

/* ==========================================================================
   EXPERTISE
   ========================================================================== */
.av-icon{
  width: 72px; height:72px;
  margin: 0 auto 1rem;
  color: var(--av-maroon);
  display:flex; align-items:center; justify-content:center;
  border: 1px solid var(--av-line);
  border-radius: 50%;
  transition: transform .5s var(--ease-luxe), border-color .5s ease, background .5s ease;
}
.av-icon svg{ width:34px; height:34px; }
.col-lg-3:hover .av-icon{
  transform: translateY(-6px) scale(1.05);
  border-color: var(--av-maroon);
  background: var(--av-cream-soft);
}

/* ==========================================================================
   APPROACH
   ========================================================================== */
.av-approach{
  position:relative;
  padding: 8rem 0;
  overflow:hidden;
}
.av-approach-media{ position:absolute; inset:0; }
.av-approach-media img{ width:100%; height:100%; object-fit:cover; }
.av-approach-overlay{
  position:absolute; inset:0;
  background: linear-gradient(180deg, rgba(24,10,14,.78), rgba(24,10,14,.6) 50%, rgba(24,10,14,.82));
}
.av-approach .container{ position:relative; z-index:2; }

.av-triad{
  display:flex; flex-wrap:wrap;
  justify-content:center;
  gap: 2.5rem;
  margin-top: 2.8rem;
  padding-top: 2.4rem;
  border-top: 1px solid rgba(255,255,255,.25);
}
.av-triad-item{
  display:flex; flex-direction:column; gap:.35rem;
  min-width: 180px;
}
.av-triad-label{
  font-family: var(--f-nav);
  font-size: .82rem;
  letter-spacing: .2em;
  text-transform:uppercase;
  color:#fff;
}
.av-triad-text{
  font-size: 1.02rem;
  color: rgba(255,255,255,.78);
}

/* ==========================================================================
   GALLERY
   ========================================================================== */
.av-gallery-item{
  position:relative;
  display:block;
  width:100%;
  border:0; padding:0; margin:0;
  background:none;
  overflow:hidden;
  border-radius: 4px;
  aspect-ratio: 4/5;
  cursor: pointer;
}
.av-gallery-item img{
  width:100%; height:100%; object-fit:cover;
  transition: transform 1s var(--ease-luxe), filter .6s ease;
}
.av-gallery-item:hover img{ transform: scale(1.08); filter: brightness(.72); }
.av-gallery-caption{
  position:absolute; left:0; right:0; bottom:0;
  padding: 1.6rem 1.4rem;
  background: linear-gradient(0deg, rgba(15,8,7,.82) 0%, rgba(15,8,7,0) 100%);
  color:#fff;
  text-align:left;
  display:flex; flex-direction:column;
  transform: translateY(8px);
  opacity:.92;
  transition: transform .5s var(--ease-luxe), opacity .5s ease;
}
.av-gallery-item:hover .av-gallery-caption{ transform: translateY(0); opacity:1; }
.av-gallery-num{
  font-family: var(--f-nav);
  font-size:.72rem;
  letter-spacing:.18em;
  color: rgba(255,255,255,.65);
  margin-bottom:.25rem;
}
.av-gallery-title{
  font-family: var(--f-display);
  font-size: 1.18rem;
}
.av-gallery-sub{
  font-family: var(--f-nav);
  font-size: .74rem;
  letter-spacing:.1em;
  text-transform:uppercase;
  color: rgba(255,255,255,.7);
  margin-top:.15rem;
}

/* ==========================================================================
   LOCATIONS
   ========================================================================== */
.av-locations{
  display:flex; flex-direction:column; gap:1.9rem;
  border-top: 1px solid var(--av-line);
  border-bottom: 1px solid var(--av-line);
  padding: 2.2rem 0;
}
.av-locations-group{ text-align:center; }
.av-locations-label{
  font-family: var(--f-nav);
  font-size:.78rem;
  letter-spacing:.2em;
  text-transform:uppercase;
  color: var(--av-maroon);
  display:inline-flex; align-items:center; gap:.5rem;
  margin-bottom:.75rem;
}
.av-locations-list{
  font-size: 1.12rem;
  color: var(--av-ink-soft);
  max-width: 52rem;
  margin: 0 auto;
}

/* ==========================================================================
   TESTIMONIALS
   ========================================================================== */
.av-carousel{ text-align:center; }
.av-quote-icon{
  font-size: 2rem;
  color: var(--av-gold);
  display:block;
  margin-bottom: 1rem;
}
.av-quote{
  font-family: var(--f-body);
  font-style: italic;
  font-size: clamp(1.25rem, 2.4vw, 1.65rem);
  color: var(--av-ink);
  line-height: 1.55;
  max-width: 44rem;
  margin: 0 auto 1.4rem;
}
.av-quote-by{
  font-family: var(--f-nav);
  font-size: .82rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--av-maroon);
}
.av-carousel-controls{
  display:flex; align-items:center; justify-content:center;
  gap: 1.5rem;
  margin-top: 2rem;
}
.av-carousel-arrow{
  width:42px; height:42px;
  border-radius:50%;
  border: 1px solid var(--av-line);
  background: transparent;
  color: var(--av-maroon);
  display:flex; align-items:center; justify-content:center;
  transition: all .35s ease;
}
.av-carousel-arrow:hover{ background: var(--av-maroon); color:#fff; border-color:var(--av-maroon); }
.av-carousel-indicators{ position:static; margin:0; gap:.5rem; }
.av-carousel-indicators [data-bs-target]{
  width:7px; height:7px; border-radius:50%;
  background: var(--av-line);
  opacity:1; border:0;
  transition: background .3s ease, transform .3s ease;
}
.av-carousel-indicators .active{ background: var(--av-maroon); transform: scale(1.3); }

/* ==========================================================================
   CTA
   ========================================================================== */
.av-cta{
  background: linear-gradient(160deg, var(--av-maroon) 0%, var(--av-maroon-dark) 100%);
  padding: 7rem 0;
  text-align:center;
}
.av-cta-title{ margin-bottom: 2.2rem; }
.av-cta-actions{ margin-bottom: 2.4rem; }
.av-cta-contacts{
  display:flex; flex-wrap:wrap; justify-content:center; gap: 2rem;
  font-family: var(--f-nav);
  font-size: .88rem;
  letter-spacing: .06em;
}
.av-cta-contacts a{
  color: rgba(255,255,255,.85);
  display:inline-flex; align-items:center; gap:.5rem;
  transition: color .3s ease;
}
.av-cta-contacts a:hover{ color:#fff; }

/* ==========================================================================
   FOOTER
   ========================================================================== */
.av-footer{
  background: var(--av-ink);
  color: rgba(255,255,255,.75);
  padding: 4rem 0 2rem;
}
.av-logo-footer .av-logo-main{ color:#fff; }
.av-logo-footer .av-logo-sub{ color: rgba(255,255,255,.55); }
.av-footer-location{
  font-family: var(--f-nav);
  font-size:.78rem;
  letter-spacing:.14em;
  text-transform:uppercase;
  color: rgba(255,255,255,.55);
  margin-top:.9rem;
}
.av-footer-links{
  list-style:none; padding:0; margin:0;
  display:flex; flex-direction:column; gap:.6rem;
  font-family: var(--f-nav);
  font-size:.85rem;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.av-footer-links a{ color: rgba(255,255,255,.7); transition: color .3s ease, padding-left .3s ease; }
.av-footer-links a:hover{ color:#fff; padding-left:.35rem; }
.av-footer-social{ display:flex; gap:.9rem; justify-content:flex-start; }
@media (min-width: 768px){ .av-footer-social{ justify-content:flex-end; } }
.av-footer-social a{
  width:40px; height:40px; border-radius:50%;
  border: 1px solid rgba(255,255,255,.25);
  display:inline-flex; align-items:center; justify-content:center;
  transition: all .3s ease;
}
.av-footer-social a:hover{ background:#fff; color: var(--av-ink); border-color:#fff; transform: translateY(-3px); }
.av-footer-rule{ border-color: rgba(255,255,255,.15); margin: 2.6rem 0 1.6rem; }
.av-footer-copy{
  font-family: var(--f-nav);
  font-size: .78rem;
  letter-spacing:.06em;
  color: rgba(255,255,255,.5);
  margin:0;
}

/* ==========================================================================
   LIGHTBOX
   ========================================================================== */
.av-lightbox .modal-content{
  background: var(--av-ink);
  border:0; border-radius:6px;
  overflow:hidden;
}
.av-lightbox img{ width:100%; max-height:75vh; object-fit:contain; background:#000; }
.av-lightbox-caption{ padding: 1.4rem 1.6rem 1.6rem; text-align:center; }
.av-lightbox-caption h3{ font-family: var(--f-display); color:#fff; font-size:1.3rem; margin-bottom:.3rem; }
.av-lightbox-caption p{ font-family: var(--f-nav); font-size:.8rem; letter-spacing:.1em; text-transform:uppercase; color: rgba(255,255,255,.6); margin:0; }
.av-lightbox-close{
  position:absolute; top:1rem; right:1rem; z-index:5;
  background:#fff; opacity:1; border-radius:50%;
  width:34px; height:34px; padding:0;
}

/* ==========================================================================
   RESPONSIVE polish
   ========================================================================== */
@media (max-width: 575.98px){
  body{ font-size: 1.05rem; }
  .av-hero-title{ font-size: 2.5rem; }
  .av-script{ font-size: 3.2rem; }
  .av-triad{ gap: 1.6rem; }
}
