/* ==========================================================================
   THE OBASANJO HOLDINGS CONFERENCE — THEME STYLESHEET
   Palette: deep bottle-green + brass-gold on warm ivory.
   Display face: Fraunces. Body/UI face: Manrope.
   Signature device: gold corner-bracket frame (".frame-corners"), reused on
   the hero, speaker/auth modals and the materials panel — a nod to the
   certificate-printing feature planned for the backend phase.
   ========================================================================== */

:root{
  --forest:        #0E3B2E;
  --forest-dark:   #082A20;
  --forest-light:  #1C5943;
  --gold:          #B8935A;
  --gold-bright:   #E8C874;
  --gold-deep:     #8C6A32;
  --ivory:         #FAF6EC;
  --ivory-dark:    #F0E9D8;
  --ink:           #1A1A16;
  --ink-soft:      #59564C;
  --white:         #FFFFFF;

  --font-display:  'Fraunces', 'Georgia', serif;
  --font-body:     'Manrope', -apple-system, BlinkMacSystemFont, sans-serif;

  --radius-sm: 6px;
  --radius-md: 14px;
  --shadow-soft: 0 18px 40px -18px rgba(8, 42, 32, 0.35);
  --ease: cubic-bezier(.22,.61,.36,1);
}

@media (prefers-reduced-motion: reduce){
  *, *::before, *::after{ animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; scroll-behavior: auto !important; }
}

*{ box-sizing: border-box; }
html{ scroll-behavior: smooth; }
body.is-loading{ overflow: hidden; }

body{
  font-family: var(--font-body);
  color: var(--ink);
  background: var(--ivory);
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
}

h1,h2,h3,h4,h5,h6{
  font-family: var(--font-display);
  color: var(--forest-dark);
  font-weight: 600;
  line-height: 1.15;
  letter-spacing: -0.01em;
}

a{ text-decoration: none; color: inherit; }
img{ max-width: 100%; display: block; }
button{ font-family: inherit; }

::selection{ background: var(--gold); color: var(--forest-dark); }

:focus-visible{
  outline: 2px solid var(--gold-bright);
  outline-offset: 3px;
}

.eyebrow{
  text-transform: uppercase;
  letter-spacing: 3px;
  font-size: 0.78rem;
  font-weight: 700;
  color: var(--gold-deep);
  margin-bottom: 0.75rem;
}
.eyebrow--light{ color: var(--gold-bright); }

.section-title{ max-width: 720px; margin: 0 auto 3.25rem; }
.section-title h2{ font-size: clamp(1.9rem, 4vw, 2.75rem); }

section{ padding: 6.5rem 0; }
.section-alt{ background: var(--ivory-dark); }

.btn{ border-radius: var(--radius-sm); font-weight: 700; letter-spacing: .3px; padding: .8rem 1.75rem; }

.btn-gold{
  background: linear-gradient(135deg, var(--gold-bright), var(--gold));
  color: var(--forest-dark);
  border: none;
  box-shadow: 0 10px 24px -10px rgba(184,147,90,.55);
  transition: transform .25s var(--ease), box-shadow .25s var(--ease);
}
.btn-gold:hover{ transform: translateY(-2px); box-shadow: 0 16px 30px -12px rgba(184,147,90,.65); color: var(--forest-dark); }

.btn-outline-gold{
  background: transparent;
  border: 1.5px solid var(--gold);
  color: var(--gold-deep);
  transition: all .25s var(--ease);
}
.btn-outline-gold:hover{ background: var(--gold); color: var(--forest-dark); }

/* ==========================================================================
   PRELOADER
   ========================================================================== */
#preloader{
  position: fixed; inset: 0; z-index: 9999;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1.25rem;
  background: radial-gradient(120% 120% at 50% 20%, var(--forest-light) 0%, var(--forest-dark) 70%);
  transition: opacity .6s var(--ease), visibility .6s var(--ease);
}
#preloader.is-hidden{ opacity: 0; visibility: hidden; pointer-events: none; }

.preloader-mark{ position: relative; width: 96px; height: 96px; display: flex; align-items: center; justify-content: center; }
.preloader-ring{ width: 96px; height: 96px; position: absolute; inset: 0; transform: rotate(-90deg); }
.preloader-ring__track{ fill: none; stroke: rgba(232,200,116,0.18); stroke-width: 3; }
.preloader-ring__progress{
  fill: none; stroke: var(--gold-bright); stroke-width: 3; stroke-linecap: round;
  stroke-dasharray: 327; stroke-dashoffset: 327;
  animation: ringSweep 1.1s var(--ease) infinite;
}
@keyframes ringSweep{
  0%{ stroke-dashoffset: 327; }
  50%{ stroke-dashoffset: 60; }
  100%{ stroke-dashoffset: 327; transform: rotate(360deg); }
}
.preloader-mono{ font-family: var(--font-display); color: var(--gold-bright); font-size: 1.1rem; letter-spacing: 2px; }
.preloader-caption{ color: rgba(250,246,236,.65); font-size: .85rem; letter-spacing: 2px; text-transform: uppercase; }

/* ==========================================================================
   SIGNATURE — GOLD CORNER FRAME
   ========================================================================== */
.frame-corners{ position: relative; }
.corner{ position: absolute; width: 22px; height: 22px; pointer-events: none; }
.corner::before, .corner::after{ content: ""; position: absolute; background: var(--gold-bright); }
.corner--tl{ top: -1px; left: -1px; }
.corner--tr{ top: -1px; right: -1px; }
.corner--bl{ bottom: -1px; left: -1px; }
.corner--br{ bottom: -1px; right: -1px; }
.corner--tl::before, .corner--tr::before, .corner--bl::before, .corner--br::before{ width: 2px; height: 22px; }
.corner--tl::after, .corner--tr::after, .corner--bl::after, .corner--br::after{ width: 22px; height: 2px; }
.corner--tl::before{ top:0; left:0; } .corner--tl::after{ top:0; left:0; }
.corner--tr::before{ top:0; right:0; } .corner--tr::after{ top:0; right:0; }
.corner--bl::before{ bottom:0; left:0; } .corner--bl::after{ bottom:0; left:0; }
.corner--br::before{ bottom:0; right:0; } .corner--br::after{ bottom:0; right:0; }

/* ==========================================================================
   NAVBAR
   ========================================================================== */
.site-nav{
  padding: 1.1rem 0;
  background: linear-gradient(to bottom, rgba(8,42,32,.75), transparent);
  transition: background .35s var(--ease), padding .35s var(--ease), box-shadow .35s var(--ease);
}
.site-nav.is-scrolled{
  background: var(--forest-dark);
  padding: .6rem 0;
  box-shadow: 0 6px 24px rgba(0,0,0,.25);
}

.navbar-nav.nav-left, .navbar-nav.nav-right{ gap: .35rem; }
.nav-right{ margin-left: auto; }
@media (min-width: 992px){
  .navbar-collapse{ display: flex; justify-content: space-between; align-items: center; }
  .nav-left{ order: 1; }
  .brand-center{ order: 2; }
  .nav-right{ order: 3; margin-left: 0; }
}

.nav-link{
  color: rgba(250,246,236,.85) !important;
  font-weight: 600;
  font-size: .92rem;
  padding: .55rem .95rem !important;
  position: relative;
}
.nav-link::after{
  content:""; position: absolute; left: .95rem; right: .95rem; bottom: .3rem; height: 1px;
  background: var(--gold-bright); transform: scaleX(0); transform-origin: left;
  transition: transform .3s var(--ease);
}
.nav-link:hover::after, .nav-link.active::after{ transform: scaleX(1); }
.nav-link:hover{ color: var(--gold-bright) !important; }
.nav-link--auth{ border: 1px solid rgba(232,200,116,.5); border-radius: var(--radius-sm); }
.btn-rsvp-nav{
  background: var(--gold-bright); color: var(--forest-dark) !important; font-weight: 800;
  padding: .5rem 1.2rem; border-radius: var(--radius-sm); font-size: .88rem;
  transition: transform .2s var(--ease);
}
.btn-rsvp-nav:hover{ transform: translateY(-1px); }

.brand-mono{ font-family: var(--font-display); font-size: 1.5rem; color: var(--gold-bright); letter-spacing: 3px; }
.brand-mobile{ display: flex; align-items: center; }
.brand-center{ align-items: center; gap: .6rem; padding: 0 1.5rem; }
.brand-center img{ max-height: 46px; }
.brand-fallback{ display: flex; flex-direction: column; align-items: center; line-height: 1; }
.brand-sub{ font-size: .55rem; letter-spacing: 3px; color: rgba(250,246,236,.7); margin-top: 2px; }

/* mobile toggler + burger */
.navbar-toggler{ border: none; padding: 0; }
.navbar-toggler:focus{ box-shadow: none; }
.burger{ width: 26px; height: 18px; position: relative; display: inline-block; }
.burger span{
  position: absolute; left: 0; width: 100%; height: 2px; background: var(--gold-bright); border-radius: 2px;
  transition: transform .3s var(--ease), opacity .3s var(--ease), top .3s var(--ease);
}
.burger span:nth-child(1){ top: 0; }
.burger span:nth-child(2){ top: 8px; }
.burger span:nth-child(3){ top: 16px; }
.navbar-toggler[aria-expanded="true"] .burger span:nth-child(1){ top: 8px; transform: rotate(45deg); }
.navbar-toggler[aria-expanded="true"] .burger span:nth-child(2){ opacity: 0; }
.navbar-toggler[aria-expanded="true"] .burger span:nth-child(3){ top: 8px; transform: rotate(-45deg); }

@media (max-width: 991.98px){
  .navbar-collapse{
    background: var(--forest-dark);
    margin-top: 1rem; padding: 1.25rem 1.5rem 1.5rem; border-radius: var(--radius-md);
    box-shadow: var(--shadow-soft);
  }
  .navbar-nav{ gap: .15rem; }
  .nav-link{ padding: .75rem .25rem !important; border-bottom: 1px solid rgba(255,255,255,.06); }
  .nav-right{ margin-top: .5rem; }
  .btn-rsvp-nav{ display: inline-block; margin-top: .75rem; text-align: center; }
}

/* ==========================================================================
   HERO
   ========================================================================== */
.hero{ position: relative; }
.hero-carousel, .hero-slide{ height: 100vh; min-height: 560px; }
.hero-slide{ position: relative; overflow: hidden; background: var(--forest-dark); }
.hero-slide__img{ position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.hero-slide__scrim{
  position: absolute; inset: 0;
  background: radial-gradient(120% 90% at 50% 40%, rgba(8,42,32,.35), rgba(8,42,32,.92));
}
.hero-slide--two .hero-slide__scrim{
  background: radial-gradient(120% 90% at 50% 60%, rgba(140,106,50,.25), rgba(8,42,32,.94));
}
.hero-slide__pattern{
  position: absolute; inset: 0; opacity: .12; pointer-events: none;
  background-image:
    radial-gradient(circle at 20% 30%, var(--gold-bright) 0, transparent 2.5px),
    radial-gradient(circle at 70% 70%, var(--gold-bright) 0, transparent 2.5px),
    radial-gradient(circle at 40% 85%, var(--gold-bright) 0, transparent 2px),
    radial-gradient(circle at 85% 20%, var(--gold-bright) 0, transparent 2px);
  background-size: 340px 340px;
}
.hero-slide__content{
  position: relative; z-index: 2; height: 100%; display: flex; flex-direction: column;
  align-items: center; justify-content: center; text-align: center; color: var(--ivory);
  max-width: 820px; margin: 0 auto; padding: 3rem 2.5rem;
}
.hero-slide__title{ color: var(--white); font-size: clamp(2.1rem, 5.5vw, 4rem); margin-bottom: 1rem; }
.hero-slide__sub{ font-size: clamp(1rem, 2vw, 1.25rem); color: rgba(250,246,236,.9); max-width: 560px; margin: 0 auto 1.25rem; }
.hero-slide__meta{ font-size: .95rem; color: var(--gold-bright); letter-spacing: .5px; }
.hero-slide__meta i{ margin-right: .3rem; }
.hero-slide__cta{ margin-top: 1rem; }

.hero-indicators{ bottom: 2.25rem; }
.hero-indicators [data-bs-target]{
  width: 34px; height: 3px; border-radius: 2px; background: rgba(255,255,255,.35); border: none; opacity: 1;
}
.hero-indicators .active{ background: var(--gold-bright); }

.scroll-cue{
  position: absolute; left: 50%; bottom: 1.5rem; transform: translateX(-50%);
  display: flex; flex-direction: column; align-items: center; gap: .3rem;
  color: rgba(250,246,236,.75); font-size: .7rem; letter-spacing: 2px; text-transform: uppercase;
  z-index: 3; animation: cueBounce 2.4s ease-in-out infinite;
}
@keyframes cueBounce{ 0%,100%{ transform: translate(-50%,0); } 50%{ transform: translate(-50%,8px); } }

/* ==========================================================================
   COUNTDOWN
   ========================================================================== */
.countdown-section{ background: var(--forest-dark); color: var(--ivory); text-align: center; }
.countdown-section .eyebrow{ color: var(--gold-bright); }
.countdown-section h2{ color: var(--white); }

.countdown-grid{ display: flex; justify-content: center; gap: 1rem; flex-wrap: wrap; margin-bottom: 2.5rem; }
.countdown-cell{
  min-width: 100px; padding: 1.25rem .5rem; border: 1px solid rgba(232,200,116,.3); border-radius: var(--radius-md);
  background: rgba(255,255,255,.03);
}
.countdown-num{ display: block; font-family: var(--font-display); font-size: clamp(1.8rem, 4vw, 2.6rem); color: var(--gold-bright); font-weight: 600; }
.countdown-label{ font-size: .72rem; text-transform: uppercase; letter-spacing: 2px; color: rgba(250,246,236,.65); }

.countdown-actions{ display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap; }
.add-to-cal .dropdown-menu{ background: var(--forest); border: 1px solid rgba(232,200,116,.25); }
.add-to-cal .dropdown-item{ color: var(--ivory); }
.add-to-cal .dropdown-item i{ width: 20px; margin-right: .4rem; color: var(--gold-bright); }
.add-to-cal .dropdown-item:hover{ background: var(--forest-light); color: var(--gold-bright); }

/* ==========================================================================
   SPEAKERS
   ========================================================================== */
.speaker-card{
  background: var(--white); border-radius: var(--radius-md); overflow: hidden; height: 100%;
  box-shadow: 0 8px 24px -14px rgba(26,26,22,.18);
  transition: transform .4s var(--ease), box-shadow .4s var(--ease);
  position: relative;
}
.speaker-card:hover{ transform: translateY(-8px); box-shadow: var(--shadow-soft); }
.speaker-card__media{ position: relative; aspect-ratio: 4/5; overflow: hidden; }
.speaker-card__media img{ width: 100%; height: 100%; object-fit: cover; transition: transform .6s var(--ease); }
.speaker-card:hover .speaker-card__media img{ transform: scale(1.06); }
.speaker-card__media::after{
  content:""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(8,42,32,.75), transparent 55%);
}
.speaker-card__cluster{
  position: absolute; top: .75rem; left: .75rem; z-index: 2; background: rgba(184,147,90,.92); color: var(--forest-dark);
  font-size: .68rem; font-weight: 800; letter-spacing: 1px; text-transform: uppercase; padding: .3rem .65rem; border-radius: 3px;
}
.speaker-card__body{ padding: 1.35rem 1.4rem 1.5rem; }
.speaker-card__body h4{ font-size: 1.2rem; margin-bottom: .15rem; }
.speaker-card__role{ color: var(--ink-soft); font-size: .88rem; margin-bottom: 1rem; }
.speaker-card__btn{
  border: 1.5px solid var(--forest); color: var(--forest); background: transparent; border-radius: var(--radius-sm);
  padding: .55rem 1.1rem; font-size: .85rem; font-weight: 700; width: 100%;
  transition: all .3s var(--ease);
}
.speaker-card__btn:hover{ background: var(--forest); color: var(--white); }

.speaker-modal .modal-content{ border: none; border-radius: var(--radius-md); background: var(--ivory); padding: .5rem; }
.speaker-modal__close{ position: absolute; top: 1.1rem; right: 1.1rem; z-index: 3; }
.speaker-modal__head{ display: flex; gap: 1.25rem; align-items: center; padding: 1.5rem 1.5rem 1rem; }
.speaker-modal__avatar{ width: 84px; height: 84px; border-radius: 50%; object-fit: cover; border: 3px solid var(--gold); }
.speaker-modal__head h3{ margin-bottom: .2rem; font-size: 1.35rem; }
.speaker-modal__role{ color: var(--gold-deep); font-weight: 700; font-size: .88rem; text-transform: uppercase; letter-spacing: .5px; }
.speaker-modal__scroll{ max-height: 42vh; overflow-y: auto; padding: 0 1.5rem 1.5rem; }
.speaker-modal__label{ color: var(--forest); text-transform: uppercase; letter-spacing: 1.5px; font-size: .75rem; margin: 1.1rem 0 .5rem; }
.speaker-modal__scroll::-webkit-scrollbar{ width: 6px; }
.speaker-modal__scroll::-webkit-scrollbar-thumb{ background: var(--gold); border-radius: 4px; }

/* ==========================================================================
   AREAS OF FOCUS — hairline grid (ceremonial programme aesthetic)
   ========================================================================== */
.focus-grid{ border-top: 1px solid var(--gold); border-left: 1px solid var(--gold); }
.focus-card{
  border-right: 1px solid var(--gold); border-bottom: 1px solid var(--gold);
  padding: 2.75rem 2rem; text-align: center; transition: background .3s var(--ease);
}
.focus-card:hover{ background: var(--ivory-dark); }
.focus-card__icon{
  width: 58px; height: 58px; border-radius: 50%; display: flex; align-items: center; justify-content: center;
  background: var(--forest); color: var(--gold-bright); font-size: 1.35rem; margin: 0 auto 1.25rem;
}
.focus-card h4{ font-size: 1.15rem; margin-bottom: .6rem; }
.focus-card p{ color: var(--ink-soft); font-size: .92rem; margin: 0; }

/* ==========================================================================
   SCHEDULE
   ========================================================================== */
.schedule-tabs{ display: flex; justify-content: center; gap: .75rem; margin-bottom: 3rem; }
.schedule-tab{
  background: transparent; border: 1.5px solid var(--forest); color: var(--forest); border-radius: 999px;
  padding: .6rem 1.6rem; font-weight: 700; font-size: .9rem; transition: all .3s var(--ease);
}
.schedule-tab span{ display: block; font-size: .7rem; font-weight: 500; opacity: .7; }
.schedule-tab.active, .schedule-tab:hover{ background: var(--forest); color: var(--white); }

.timeline{ position: relative; max-width: 780px; margin: 0 auto; }
.timeline::before{ content:""; position: absolute; left: 92px; top: 0; bottom: 0; width: 2px; background: var(--gold); opacity: .4; }
@media (max-width: 575.98px){ .timeline::before{ left: 30px; } }

.timeline-item{ position: relative; display: flex; gap: 1.75rem; padding: 0 0 2.5rem; }
.timeline-item:last-child{ padding-bottom: 0; }
.timeline-item__time{ flex: 0 0 92px; text-align: right; font-family: var(--font-display); color: var(--gold-deep); font-weight: 600; padding-top: .1rem; }
@media (max-width: 575.98px){ .timeline-item{ gap: 1rem; } .timeline-item__time{ flex-basis: 30px; text-align: left; font-size: .75rem; } }
.timeline-item__dot{
  position: absolute; left: 92px; top: 6px; width: 12px; height: 12px; margin-left: -7px;
  background: var(--gold-bright); border: 2px solid var(--forest); border-radius: 50%;
}
@media (max-width: 575.98px){ .timeline-item__dot{ left: 30px; } }
.timeline-item__body{ flex: 1; background: var(--white); border-radius: var(--radius-md); padding: 1.1rem 1.4rem; box-shadow: 0 6px 20px -14px rgba(26,26,22,.2); }
.timeline-item__body h5{ font-size: 1.05rem; margin-bottom: .3rem; }
.timeline-item__body p{ margin: 0; color: var(--ink-soft); font-size: .9rem; }
.timeline-item__tag{ display: inline-block; margin-top: .5rem; font-size: .72rem; color: var(--forest); font-weight: 700; text-transform: uppercase; letter-spacing: .5px; }

/* ==========================================================================
   MATERIALS (file manager)
   ========================================================================== */
.materials-panel{ background: var(--white); border-radius: var(--radius-md); box-shadow: var(--shadow-soft); max-width: 860px; margin: 0 auto; }
.materials-toolbar{ display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: 1.5rem 1.75rem; border-bottom: 1px solid var(--ivory-dark); flex-wrap: wrap; }
.materials-search{ position: relative; flex: 1; min-width: 220px; }
.materials-search i{ position: absolute; left: 14px; top: 50%; transform: translateY(-50%); color: var(--ink-soft); }
.materials-search input{
  width: 100%; padding: .65rem .9rem .65rem 2.4rem; border: 1px solid var(--ivory-dark); border-radius: var(--radius-sm);
  background: var(--ivory); font-family: var(--font-body);
}
.materials-search input:focus{ outline: none; border-color: var(--gold); }
.materials-count{ color: var(--ink-soft); font-size: .85rem; white-space: nowrap; }

.materials-list{ padding: .5rem 1.75rem 1.5rem; }
.materials-empty{ text-align: center; color: var(--ink-soft); padding: 2rem 0; }
.material-item{
  display: flex; align-items: center; gap: 1rem; padding: 1rem .25rem; border-bottom: 1px solid var(--ivory-dark);
}
.material-item:last-child{ border-bottom: none; }
.material-item__icon{
  flex: 0 0 44px; height: 44px; width: 44px; border-radius: var(--radius-sm); display: flex; align-items: center; justify-content: center;
  font-size: 1.15rem; color: var(--white);
}
.material-item__icon.pdf{ background: #C1443A; }
.material-item__icon.doc{ background: #2E5FA3; }
.material-item__icon.ppt{ background: #D0722E; }
.material-item__icon.zip{ background: var(--forest); }
.material-item__info{ flex: 1; min-width: 0; }
.material-item__info h6{ margin: 0; font-size: .98rem; color: var(--ink); font-weight: 700; }
.material-item__info span{ font-size: .8rem; color: var(--ink-soft); }
.material-item__dl{
  flex: 0 0 auto; border: 1.5px solid var(--forest); color: var(--forest); border-radius: var(--radius-sm);
  padding: .5rem .9rem; font-size: .85rem; font-weight: 700; transition: all .25s var(--ease); white-space: nowrap;
}
.material-item__dl:hover{ background: var(--forest); color: var(--white); }

/* ==========================================================================
   GALLERY
   ========================================================================== */
.gallery-section{ background: var(--forest-dark); padding-bottom: 5rem; }
.gallery-filters{ display: flex; justify-content: center; gap: .6rem; flex-wrap: wrap; margin-bottom: 2.5rem; padding: 0 1.5rem; }
.gallery-filter{
  background: transparent; border: 1px solid rgba(232,200,116,.4); color: rgba(250,246,236,.8);
  padding: .5rem 1.2rem; border-radius: 999px; font-size: .82rem; font-weight: 700; transition: all .3s var(--ease);
}
.gallery-filter.active, .gallery-filter:hover{ background: var(--gold-bright); color: var(--forest-dark); border-color: var(--gold-bright); }

.gallery-grid{
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; max-width: 1400px; margin: 0 auto;
}
@media (max-width: 991.98px){ .gallery-grid{ grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 575.98px){ .gallery-grid{ grid-template-columns: repeat(2, 1fr); } }

.gallery-item{ position: relative; overflow: hidden; aspect-ratio: 1/1; cursor: pointer; background: var(--forest); }
.gallery-item.is-hidden{ display: none; }
.gallery-item img{ width: 100%; height: 100%; object-fit: cover; transition: transform .5s var(--ease); }
.gallery-item:hover img{ transform: scale(1.08); }
.gallery-item__overlay{
  position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  background: rgba(8,42,32,.55); opacity: 0; transition: opacity .3s var(--ease); color: var(--gold-bright); font-size: 1.4rem;
}
.gallery-item:hover .gallery-item__overlay{ opacity: 1; }

.lightbox{
  position: fixed; inset: 0; z-index: 2000; background: rgba(8,10,9,.94);
  display: flex; align-items: center; justify-content: center;
  opacity: 0; visibility: hidden; transition: opacity .3s var(--ease), visibility .3s var(--ease);
}
.lightbox.is-open{ opacity: 1; visibility: visible; }
.lightbox__figure{ max-width: 90vw; max-height: 86vh; margin: 0; display: flex; flex-direction: column; align-items: center; }
.lightbox__figure img{ max-width: 90vw; max-height: 78vh; width: auto; height: auto; border-radius: 4px; box-shadow: 0 30px 60px rgba(0,0,0,.5); }
.lightbox__figure figcaption{ color: var(--gold-bright); margin-top: 1rem; font-size: .9rem; letter-spacing: .5px; }
.lightbox__close{
  position: absolute; top: 1.5rem; right: 2rem; background: none; border: none; color: var(--white); font-size: 2.5rem; line-height: 1;
}
.lightbox__nav{
  position: absolute; top: 50%; transform: translateY(-50%); background: rgba(255,255,255,.08); border: 1px solid rgba(232,200,116,.3);
  color: var(--gold-bright); width: 48px; height: 48px; border-radius: 50%; transition: background .25s var(--ease);
}
.lightbox__nav:hover{ background: rgba(232,200,116,.2); }
.lightbox__nav--prev{ left: 2rem; } .lightbox__nav--next{ right: 2rem; }
@media (max-width: 575.98px){ .lightbox__nav--prev{ left: .5rem; } .lightbox__nav--next{ right: .5rem; } .lightbox__close{ right: 1rem; top: 1rem; } }

/* ==========================================================================
   TEAM
   ========================================================================== */
.team-card{ text-align: center; }
.team-card__avatar{ width: 130px; height: 130px; border-radius: 50%; object-fit: cover; margin: 0 auto 1.1rem; border: 3px solid var(--gold); }
.team-card h5{ font-size: 1.05rem; margin-bottom: .2rem; }
.team-card p{ color: var(--ink-soft); font-size: .85rem; margin-bottom: .85rem; }
.team-card__socials a{
  display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 50%;
  border: 1px solid var(--forest); color: var(--forest); margin: 0 .2rem; font-size: .85rem; transition: all .25s var(--ease);
}
.team-card__socials a:hover{ background: var(--forest); color: var(--white); }

/* ==========================================================================
   RSVP
   ========================================================================== */
.rsvp-form .form-label{ font-weight: 700; font-size: .85rem; color: var(--forest); }
.rsvp-form .form-control, .rsvp-form .form-select{
  border: 1px solid var(--ivory-dark); background: var(--white); padding: .7rem .9rem; border-radius: var(--radius-sm);
}
.rsvp-form .form-control:focus, .rsvp-form .form-select:focus{ border-color: var(--gold); box-shadow: 0 0 0 .2rem rgba(184,147,90,.15); }
.rsvp-form .form-control.is-invalid, .rsvp-form .form-select.is-invalid{ border-color: #C1443A; }

.cf-turnstile-stub{
  margin-top: 1.5rem; padding: .9rem 1rem; border: 1px dashed var(--gold); border-radius: var(--radius-sm);
  color: var(--ink-soft); font-size: .82rem; text-align: center; background: var(--ivory);
}
.rsvp-submit{ margin-top: 1.75rem; min-width: 200px; position: relative; }
.btn-spinner{ display: inline-block; width: 16px; height: 16px; border: 2px solid rgba(26,26,22,.3); border-top-color: var(--forest-dark); border-radius: 50%; animation: spin .7s linear infinite; margin-left: .5rem; }
@keyframes spin{ to{ transform: rotate(360deg); } }
.rsvp-success{ margin-top: 1.25rem; color: var(--forest); font-weight: 700; }

/* ==========================================================================
   FOOTER
   ========================================================================== */
.site-footer{ background: var(--forest-dark); color: rgba(250,246,236,.8); padding: 5rem 0 2.5rem; }
.footer-mono{ font-family: var(--font-display); color: var(--gold-bright); letter-spacing: 4px; font-size: 1rem; margin-bottom: .5rem; }
.footer-thanks{ color: var(--white); font-size: clamp(2rem, 5vw, 3rem); }
.footer-tagline{ color: rgba(250,246,236,.65); margin-bottom: 2rem; }
.footer-socials{ margin-bottom: 2rem; }
.footer-socials a{
  display: inline-flex; align-items: center; justify-content: center; width: 46px; height: 46px; border-radius: 50%;
  border: 1px solid rgba(232,200,116,.4); color: var(--gold-bright); margin: 0 .35rem; transition: all .25s var(--ease);
}
.footer-socials a:hover{ background: var(--gold-bright); color: var(--forest-dark); }
.footer-contact{ margin-bottom: 2rem; font-size: .95rem; }
.footer-contact a{ color: var(--ivory); }
.footer-divider{ margin: 0 .75rem; color: rgba(250,246,236,.35); }
.footer-copy{ font-size: .82rem; color: rgba(250,246,236,.45); margin: 0; }
.footer-copy a{ color: var(--gold-bright); }

/* ==========================================================================
   BACK TO TOP
   ========================================================================== */
.back-to-top{
  position: fixed; right: 1.5rem; bottom: 1.5rem; width: 46px; height: 46px; border-radius: 50%;
  background: var(--forest); color: var(--gold-bright); display: flex; align-items: center; justify-content: center;
  box-shadow: var(--shadow-soft); opacity: 0; visibility: hidden; transform: translateY(10px);
  transition: all .35s var(--ease); z-index: 500;
}
.back-to-top.is-visible{ opacity: 1; visibility: visible; transform: translateY(0); }
.back-to-top:hover{ background: var(--gold-bright); color: var(--forest-dark); }

/* ==========================================================================
   AUTH MODAL
   ========================================================================== */
.auth-body{ padding: 2rem 1.75rem 2.25rem; }
.auth-tabs{ border: none; justify-content: center; gap: 1rem; margin-top: 1rem; }
.auth-tabs .nav-link{ color: var(--ink-soft) !important; border: none; border-bottom: 2px solid transparent; font-weight: 700; }
.auth-tabs .nav-link.active{ color: var(--forest) !important; border-bottom-color: var(--gold); background: none; }
.auth-body .form-control{ border: 1px solid var(--ivory-dark); padding: .7rem .9rem; border-radius: var(--radius-sm); }

/* ==========================================================================
   SCROLL REVEAL (progressive enhancement, hooked up via IntersectionObserver)
   ========================================================================== */
.reveal{ opacity: 0; transform: translateY(24px); transition: opacity .7s var(--ease), transform .7s var(--ease); }
.reveal.is-visible{ opacity: 1; transform: translateY(0); }

@media (max-width: 767.98px){
  section{ padding: 4rem 0; }
  .countdown-cell{ min-width: 78px; padding: 1rem .3rem; }
}