/* =========================================================
   V6 (2026-10-16): motion + sharing layer. Additive only: delete this file
   and the js/v6-*.js scripts and the site is V5 again. Tokens come from
   theme.css; nothing here changes spacing scale, nav, section order or
   breakpoints (project CLAUDE.md rules).
   ========================================================= */

/* ---------- Hero: slow lighting glow under the signal field ---------- */
.v6-glow {
  position: absolute;
  inset: -15%;
  z-index: 0;
  pointer-events: none;
  filter: blur(60px);
  opacity: 0.55;
}
.v6-glow span {
  position: absolute;
  border-radius: 50%;
  mix-blend-mode: screen;
}
.v6-glow span:nth-child(1) {
  width: 46vmax; height: 46vmax; left: 4%; bottom: -6%;
  background: radial-gradient(circle, rgba(157,113,247,0.55), rgba(157,113,247,0) 65%);
  animation: v6-drift-a 22s ease-in-out infinite alternate;
}
.v6-glow span:nth-child(2) {
  width: 38vmax; height: 38vmax; right: 0; top: 2%;
  background: radial-gradient(circle, rgba(20,184,166,0.5), rgba(20,184,166,0) 65%);
  animation: v6-drift-b 26s ease-in-out infinite alternate;
}
.v6-glow span:nth-child(3) {
  width: 24vmax; height: 24vmax; left: 45%; top: 30%;
  background: radial-gradient(circle, rgba(157,113,247,0.35), rgba(20,184,166,0) 70%);
  animation: v6-drift-c 18s ease-in-out infinite alternate;
}
@keyframes v6-drift-a { to { transform: translate(14vw, -10vh) scale(1.15); } }
@keyframes v6-drift-b { to { transform: translate(-12vw, 12vh) scale(0.9); } }
@keyframes v6-drift-c { to { transform: translate(-18vw, 8vh) scale(1.25); opacity: 0.6; } }
.signal-canvas { z-index: 1; }
.hero-signal-bg .hero-scrim { z-index: 2; }

/* ---------- Hero headline: word-by-word entrance ---------- */
.v6-split .v6-word {
  display: inline-block;
  opacity: 0;
  transform: translateY(0.55em) rotate(2deg);
  filter: blur(8px);
  transition:
    opacity 1.4s var(--ease-out),
    transform 1.9s cubic-bezier(0.2, 0.8, 0.2, 1),
    filter 1.4s var(--ease-out);
  transition-delay: calc(0.35s + var(--i) * 0.17s); /* round 2: ~3s to settle (was ~1s) */
}
.v6-split.is-in .v6-word { opacity: 1; transform: none; filter: none; }
.v6-split em .v6-word {
  background: var(--color-accent-gradient);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

/* ---------- Buttons: light sweep + magnetic ease ---------- */
.btn-primary { position: relative; overflow: hidden; isolation: isolate; }
.btn-primary::after {
  content: '';
  position: absolute;
  inset: -2px;
  z-index: -1;
  background: linear-gradient(105deg, transparent 35%, rgba(255,255,255,0.55) 50%, transparent 65%);
  transform: translateX(-120%);
  transition: transform 1.5s cubic-bezier(0.4, 0, 0.2, 1); /* round 3: slower reflection (was 0.75s) */
}
.btn-primary:hover::after,
.btn-primary:focus-visible::after { transform: translateX(120%); }
.v6-magnetic { transition: transform 0.25s var(--ease-out), box-shadow 0.25s var(--ease-out); }

/* ---------- Scroll depth: photos sit slightly oversized ---------- */
.capability-media img,
.nightlife-media img,
.final-cta-photo img { will-change: transform; transform: scale(1.14); }

/* ---------- Nightlife centerpiece ---------- */
/* Photo scrim lightened (V5 was a flat 0.8 ink) so the corrected stage photo
   actually reads; the left side stays dark enough for the copy. */
.v6 .nightlife-scrim {
  background:
    radial-gradient(85% 70% at 88% 0%, rgba(157,113,247,0.30) 0%, rgba(157,113,247,0) 58%),
    radial-gradient(75% 65% at 8% 100%, rgba(20,184,166,0.26) 0%, rgba(20,184,166,0) 58%),
    linear-gradient(90deg, rgba(16,18,20,0.94) 0%, rgba(16,18,20,0.88) 48%, rgba(16,18,20,0.56) 76%, rgba(16,18,20,0.4) 100%);
}
@media (max-width: 899px) {
  .v6 .nightlife-scrim {
    background:
      radial-gradient(85% 60% at 88% 0%, rgba(157,113,247,0.26) 0%, rgba(157,113,247,0) 58%),
      radial-gradient(75% 55% at 8% 100%, rgba(20,184,166,0.22) 0%, rgba(20,184,166,0) 58%),
      rgba(16,18,20,0.84);
  }
}
/* Poster peel: the photo is revealed from the top-right corner while a
   folded flap (the back of the "poster") travels with the fold line. --s is
   driven by js/v6-motion.js, once. */
.v6-peel-ready:not(.is-peeled) .nightlife-media {
  clip-path: polygon(calc(100% - var(--s, 0px)) 0, 100% 0, 100% var(--s, 0px));
}
.v6-peel-flap {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  clip-path: polygon(calc(100% - var(--s, 0px)) 0, 100% var(--s, 0px), calc(100% - var(--s, 0px)) var(--s, 0px));
  background:
    linear-gradient(225deg, rgba(255,255,255,0.0) 40%, rgba(255,255,255,0.10) 60%, rgba(0,0,0,0.35) 100%),
    linear-gradient(135deg, #23262c 0%, #181b1f 60%, #0d0f11 100%);
  filter: drop-shadow(-10px 12px 18px rgba(0,0,0,0.55));
}
.v6-peel-ready:not(.is-peeled) .v6-peel-flap { display: block; }
.v6-wave {
  display: block;
  width: min(100%, 560px);
  height: 46px;
  margin: 0 0 var(--space-lg);
  opacity: 0.95;
}

/* ---------- Gallery: hover light + zoom, lightbox ---------- */
.mood-tile { cursor: zoom-in; transition: transform 0.35s var(--ease-out), box-shadow 0.35s var(--ease-out); }
.mood-tile img { transition: transform 1.2s cubic-bezier(0.2, 0.8, 0.2, 1); }
.mood-tile:hover img { transform: scale(1.07); }
.mood-tile:hover { box-shadow: 0 18px 40px rgba(0,0,0,0.45), 0 0 0 1px rgba(157,113,247,0.45); }
.mood-tile::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  opacity: 0;
  background: radial-gradient(420px circle at var(--gx, 50%) var(--gy, 50%), rgba(20,184,166,0.22), transparent 55%);
  transition: opacity 0.3s var(--ease-out);
}
.mood-tile:hover::before { opacity: 1; }
.mood-tile:focus-visible { outline: 2px solid var(--color-accent-light); outline-offset: 3px; }
.mood-tile-label { z-index: 2; }

.v6-lightbox { position: fixed; inset: 0; z-index: 210; display: flex; align-items: center; justify-content: center; }
.v6-lightbox[hidden] { display: none; }
.v6-lb-backdrop { position: absolute; inset: 0; background: rgba(8,9,11,0.92); backdrop-filter: blur(6px); opacity: 0; transition: opacity 0.25s var(--ease-out); }
.v6-lightbox.is-open .v6-lb-backdrop { opacity: 1; }
.v6-lb-stage { position: relative; z-index: 1; margin: 0; max-width: min(92vw, 1400px); text-align: center; }
.v6-lb-img {
  max-width: 100%;
  max-height: 80vh;
  border-radius: 4px;
  box-shadow: 0 30px 80px rgba(0,0,0,0.6);
  opacity: 0;
  transform: scale(0.97);
  transition: opacity 0.35s var(--ease-out), transform 0.45s cubic-bezier(0.2, 0.8, 0.2, 1);
}
.v6-lb-img.is-in { opacity: 1; transform: none; }
.v6-lb-caption { margin-top: var(--space-md); font-size: var(--text-small); letter-spacing: 0.08em; text-transform: uppercase; color: var(--color-text-muted); }
.v6-lb-btn {
  position: absolute;
  z-index: 2;
  width: 48px; height: 48px;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 1.8rem; line-height: 1;
  color: var(--color-text-on-ink);
  background: rgba(24,27,31,0.7);
  border: 1px solid var(--color-line-on-ink);
  border-radius: 50%;
  cursor: pointer;
  transition: border-color 0.2s var(--ease-out), color 0.2s var(--ease-out);
}
.v6-lb-btn:hover { border-color: var(--color-accent); color: var(--color-accent-light); }
.v6-lb-prev { left: max(12px, 2vw); top: 50%; transform: translateY(-50%); }
.v6-lb-next { right: max(12px, 2vw); top: 50%; transform: translateY(-50%); }
.v6-lb-close { right: max(12px, 2vw); top: max(12px, 2vw); font-size: 1.5rem; }
.v6-noscroll { overflow: hidden; }

/* ---------- Share + QR (Contact card) ---------- */
.v6-share-block {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-lg);
  margin-top: var(--space-xl);
  padding-top: var(--space-lg);
  border-top: 1px solid var(--color-line-on-ink);
}
.v6-share-btn { white-space: nowrap; padding-left: 22px; padding-right: 22px; }
.v6-share-btn svg { flex: none; }
.v6-qr { display: none; margin: 0; text-align: center; }
.v6-qr img {
  display: block;
  width: 112px; height: 112px;
  padding: 6px;
  background: #fff;
  border-radius: 8px;
  box-shadow: 0 0 0 2px transparent, 0 0 22px rgba(157,113,247,0.3);
  border: 2px solid transparent;
  background-image: linear-gradient(#fff, #fff), var(--color-accent-gradient);
  background-origin: border-box;
  background-clip: content-box, border-box;
}
.v6-qr figcaption { margin-top: var(--space-sm); font-size: var(--text-label); letter-spacing: 0.06em; color: var(--color-text-muted); }
@media (min-width: 900px) and (hover: hover) {
  .v6-qr { display: block; }
}
.v6-footer-share {
  margin-left: var(--space-sm);
  padding: 0;
  background: none;
  border: 0;
  font: inherit;
  color: var(--color-accent-light);
  text-decoration: underline;
  cursor: pointer;
}

/* ---------- Mobile booking bar ---------- */
.v6-mobile-bar { display: none; }
@media (max-width: 767px) {
  .v6-mobile-bar {
    position: fixed;
    left: 12px; right: 12px;
    bottom: calc(12px + env(safe-area-inset-bottom));
    z-index: 150; /* below modal (200) and lightbox (210) */
    display: flex;
    gap: var(--space-sm);
    padding: 8px;
    background: rgba(16,18,20,0.88);
    backdrop-filter: blur(12px);
    border: 1px solid var(--color-line-on-ink);
    border-radius: 14px;
    box-shadow: 0 12px 30px rgba(0,0,0,0.45);
    transition: transform 0.3s var(--ease-out), opacity 0.3s var(--ease-out);
  }
  .v6-mobile-bar.is-hidden { transform: translateY(140%); opacity: 0; pointer-events: none; }
  .v6-bar-cta { flex: 1; justify-content: center; padding: 12px 16px; }
  .v6-bar-share {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 0 14px;
    min-height: 44px;
    background: transparent;
    border: 1px solid var(--color-line-on-ink);
    border-radius: 2px;
    color: var(--color-text-on-ink);
    font: 500 var(--text-small) var(--font-body);
    cursor: pointer;
  }
  .site-footer { padding-bottom: calc(96px + env(safe-area-inset-bottom)); }
  .v6-share-block { flex-direction: column; align-items: stretch; }
  .v6-share-btn { justify-content: center; }
}

/* ---------- Toast ---------- */
.v6-toast {
  position: fixed;
  left: 50%;
  bottom: calc(96px + env(safe-area-inset-bottom));
  z-index: 220;
  padding: 10px 18px;
  border-radius: 999px;
  background: var(--color-ink-2);
  border: 1px solid rgba(157,113,247,0.5);
  color: var(--color-text-on-ink);
  font-size: var(--text-small);
  transform: translate(-50%, 20px);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.25s var(--ease-out), transform 0.25s var(--ease-out);
}
.v6-toast.is-on { opacity: 1; transform: translate(-50%, 0); }

/* ---------- Reduced motion: finished states, no movement ---------- */
@media (prefers-reduced-motion: reduce) {
  .v6-glow span { animation: none; }
  .v6-split .v6-word { opacity: 1; transform: none; filter: none; transition: none; }
  .btn-primary::after { display: none; }
  .mood-tile img, .mood-tile { transition: none; }
  .mood-tile:hover img { transform: none; }
  .capability-media img, .nightlife-media img, .final-cta-photo img { transform: none; }
}
@media (prefers-reduced-motion: reduce) and (min-width: 900px) {
  .nightlife-media img { transform: translateX(12%) scale(1.28); }
  .v6-lb-img, .v6-lb-backdrop { transition: none; }
}

/* =========================================================
   Round 2 (Chad review, 2026-10-16): slower, more drawn-out motion +
   life in the static sections.
   ========================================================= */
/* Slower scroll reveals everywhere (V5 was 0.6s / 16px). */
.v6 [data-reveal] {
  transform: translateY(28px);
  transition: opacity 1.15s var(--ease-out), transform 1.35s cubic-bezier(0.2, 0.8, 0.2, 1);
}
.v6 [data-reveal].is-visible { transform: none; }
/* Hero: label first, then the headline lays down, then copy + buttons. */
.v6 .hero .section-label[data-reveal] { transition-delay: 0.15s !important; }
.v6 .hero .lede[data-reveal] { transition-delay: 1.9s !important; }
.v6 .hero .btn-group[data-reveal] { transition-delay: 2.35s !important; }

/* Built to Perform: stage-light beams swinging over the crowd. */
.capability-inner { position: relative; z-index: 2; }
.v6-beams { position: absolute; inset: 0; z-index: 1; overflow: hidden; pointer-events: none; mix-blend-mode: screen; }
.v6-beams span {
  position: absolute;
  top: -20%;
  width: 22vw; min-width: 180px;
  height: 150%;
  transform-origin: 50% 0;
  background: linear-gradient(180deg, rgba(157,113,247,0.38) 0%, rgba(157,113,247,0.12) 45%, rgba(157,113,247,0) 80%);
  clip-path: polygon(46% 0, 54% 0, 100% 100%, 0 100%);
  filter: blur(6px);
  opacity: 0.55;
  animation: v6-swing 9s ease-in-out infinite alternate;
}
.v6-beams span:nth-child(1) { left: 6%;  animation-duration: 10s; }
.v6-beams span:nth-child(2) { left: 30%; animation-duration: 8s; animation-delay: -3s;
  background: linear-gradient(180deg, rgba(20,184,166,0.36) 0%, rgba(20,184,166,0.1) 45%, rgba(20,184,166,0) 80%); }
.v6-beams span:nth-child(3) { left: 55%; animation-duration: 11s; animation-delay: -6s; }
.v6-beams span:nth-child(4) { left: 78%; animation-duration: 9s; animation-delay: -2s;
  background: linear-gradient(180deg, rgba(20,184,166,0.36) 0%, rgba(20,184,166,0.1) 45%, rgba(20,184,166,0) 80%); }
@keyframes v6-swing { from { transform: rotate(-18deg); } to { transform: rotate(18deg); } }
/* The three capability lines draw in one after another. */
.v6 .capability-list li { opacity: 0; transform: translateX(-18px); transition: opacity 1s var(--ease-out), transform 1.2s cubic-bezier(0.2, 0.8, 0.2, 1); }
.v6 .capability-list.is-visible li { opacity: 1; transform: none; }
.v6 .capability-list.is-visible li:nth-child(1) { transition-delay: 0.3s; }
.v6 .capability-list.is-visible li:nth-child(2) { transition-delay: 0.75s; }
.v6 .capability-list.is-visible li:nth-child(3) { transition-delay: 1.2s; }

/* Corporate: photo sits lower and squarer (was 4:5, pinned high against
   Built to Perform). */
@media (min-width: 900px) {
  .v6 #corporate .media-panel { aspect-ratio: 1 / 1; margin-top: var(--space-2xl); }
}
/* Corporate + Weddings photos: wipe in, one light sweep, then slow drift. */
.v6-panel img { transform-origin: 60% 40%; }
.v6-panel-in img { animation: v6-kenburns 22s ease-in-out 1.6s infinite alternate; }
@keyframes v6-kenburns { from { transform: scale(1); } to { transform: scale(1.09) translate(-1.5%, -1%); } }
.v6:not(.v6-reduced) #corporate .v6-panel { clip-path: inset(0 0 0 100%); transition: clip-path 1.8s cubic-bezier(0.65, 0, 0.35, 1), box-shadow 0.5s var(--ease-out); }
.v6:not(.v6-reduced) #weddings .v6-panel { clip-path: inset(0 100% 0 0); transition: clip-path 1.8s cubic-bezier(0.65, 0, 0.35, 1), box-shadow 0.5s var(--ease-out); }
.v6:not(.v6-reduced) #corporate .v6-panel.v6-panel-in,
.v6:not(.v6-reduced) #weddings .v6-panel.v6-panel-in { clip-path: inset(0 0 0 0); }
.v6-panel::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  background: linear-gradient(105deg, transparent 30%, rgba(255,255,255,0.28) 48%, rgba(20,184,166,0.18) 52%, transparent 70%);
  transform: translateX(-130%);
}
.v6-panel-in::after { animation: v6-sweep 2.2s cubic-bezier(0.4, 0, 0.2, 1) 1.5s 1 forwards; }
@keyframes v6-sweep { to { transform: translateX(130%); } }
.v6-panel:hover { box-shadow: 0 0 0 1px rgba(157,113,247,0.5), 0 24px 60px rgba(0,0,0,0.5), 0 0 40px rgba(20,184,166,0.18); }

/* Weddings: soft string-light glows. */
.v6-bokeh { position: absolute; inset: 0; z-index: 1; pointer-events: none; }
.v6-bokeh span {
  position: absolute;
  width: 14px; height: 14px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255,228,170,0.95) 0%, rgba(255,214,140,0.45) 40%, rgba(255,214,140,0) 70%);
  filter: blur(1px);
  animation: v6-twinkle 4.5s ease-in-out infinite;
}
.v6-bokeh span:nth-child(1) { left: 12%; top: 14%; animation-delay: 0s; }
.v6-bokeh span:nth-child(2) { left: 28%; top: 9%;  animation-delay: -1.2s; width: 10px; height: 10px; }
.v6-bokeh span:nth-child(3) { left: 46%; top: 12%; animation-delay: -2.4s; }
.v6-bokeh span:nth-child(4) { left: 64%; top: 8%;  animation-delay: -0.6s; width: 11px; height: 11px; }
.v6-bokeh span:nth-child(5) { left: 82%; top: 13%; animation-delay: -3.1s; }
@keyframes v6-twinkle { 0%, 100% { opacity: 0.35; transform: translateY(0) scale(0.9); } 50% { opacity: 1; transform: translateY(-4px) scale(1.15); } }

/* Experience: lasers fanning slowly behind the gallery. */
#experience { position: relative; overflow: hidden; }
#experience > .container { position: relative; z-index: 1; }
.v6-lasers { position: absolute; inset: 0; z-index: 0; pointer-events: none; mix-blend-mode: screen;
  -webkit-mask-image: linear-gradient(180deg, transparent 0%, #000 25%, #000 75%, transparent 100%);
  mask-image: linear-gradient(180deg, transparent 0%, #000 25%, #000 75%, transparent 100%); }
.v6-lasers span {
  position: absolute;
  bottom: -10%;
  width: 2px;
  height: 140%;
  transform-origin: 50% 100%;
  background: linear-gradient(0deg, rgba(20,184,166,0.9) 0%, rgba(20,184,166,0.35) 40%, rgba(20,184,166,0) 85%);
  box-shadow: 0 0 10px rgba(20,184,166,0.6);
  opacity: 0.32;
  animation: v6-laser 14s ease-in-out infinite alternate;
}
.v6-lasers span:nth-child(odd) {
  background: linear-gradient(0deg, rgba(157,113,247,0.9) 0%, rgba(157,113,247,0.35) 40%, rgba(157,113,247,0) 85%);
  box-shadow: 0 0 10px rgba(157,113,247,0.6);
}
/* Round 3: origins moved in to the middle of the dark side areas (half of
   the gutter beside the 1240px content column) and kept closer to upright
   so they sweep through that space instead of off the page edge. */
.v6-lasers span:nth-child(-n+3) { left: max(12px, calc((100% - 1240px) / 4 + 12px)); }
.v6-lasers span:nth-child(n+4)  { left: auto; right: max(12px, calc((100% - 1240px) / 4 + 12px)); }
.v6-lasers span:nth-child(1) { --a: -16deg; --b: 4deg; }
.v6-lasers span:nth-child(2) { --a: -6deg;  --b: 14deg; animation-duration: 17s; }
.v6-lasers span:nth-child(3) { --a: 2deg;   --b: 20deg; animation-duration: 12s; }
.v6-lasers span:nth-child(4) { --a: 16deg;  --b: -4deg; }
.v6-lasers span:nth-child(5) { --a: 6deg;   --b: -14deg; animation-duration: 16s; }
.v6-lasers span:nth-child(6) { --a: -2deg;  --b: -20deg; animation-duration: 13s; }
@keyframes v6-laser { from { transform: rotate(var(--a)); } to { transform: rotate(var(--b)); } }

@media (prefers-reduced-motion: reduce) {
  .v6-beams span, .v6-lasers span, .v6-bokeh span, .v6-panel-in img, .v6-panel-in::after { animation: none; }
  .v6 .capability-list li { opacity: 1; transform: none; transition: none; }
}
