:root{
  --sand:#FBF1E1;
  --sand-dark:#F2E4C9;
  --ink:#190F35;
  --ink-soft:#4A3E6B;
  --coral:#FF4D6A;
  --coral-dark:#E23652;
  --turq:#03C7B4;
  --gold:#FFB629;
  --lime:#C6E52F;
  --paper:#FFFDF8;
  --line:#E4D6B8;
  --maxw:1180px;
  --r-sm:10px;
  --r-md:20px;
  --r-lg:32px;
}
*{box-sizing:border-box; margin:0; padding:0;}
html{scroll-behavior:smooth;}
body{
  background:var(--sand);
  color:var(--ink);
  font-family:'Plus Jakarta Sans', sans-serif;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
a{color:inherit; text-decoration:none;}
img{display:block; max-width:100%;}
ul{list-style:none;}
.wrap{max-width:var(--maxw); margin:0 auto; padding:0 28px;}
.display{font-family:'Bungee', sans-serif; letter-spacing:.01em;}
.sub-display{font-family:'Baloo 2', sans-serif; font-weight:700;}
.mono{font-family:'Space Mono', monospace;}
section{position:relative;}

/* ---------- reveal ---------- */
.reveal{opacity:0; transform:translateY(22px); transition:opacity .6s ease, transform .6s ease;}
.reveal.in{opacity:1; transform:none;}
@media (prefers-reduced-motion: reduce){.reveal{opacity:1; transform:none; transition:none;}}

/* ---------- zigzag divider (signature texture) ---------- */
.zigzag{
  height:26px; width:100%;
  background-image: linear-gradient(135deg, var(--sand) 25%, transparent 25%), linear-gradient(225deg, var(--sand) 25%, transparent 25%);
  background-size:26px 26px;
  background-position:0 0;
}
.zigzag.on-ink{background-image: linear-gradient(135deg, var(--ink) 25%, transparent 25%), linear-gradient(225deg, var(--ink) 25%, transparent 25%);}
.zigzag.on-coral{background-image: linear-gradient(135deg, var(--coral) 25%, transparent 25%), linear-gradient(225deg, var(--coral) 25%, transparent 25%);}
.zigzag.flip{transform:rotate(180deg);}

/* ---------- nav ---------- */
header.nav{
  position:sticky; top:0; z-index:60;
  background:rgba(251,241,225,.9);
  backdrop-filter:blur(10px);
  border-bottom:2px solid var(--ink);
}
.nav-inner{
  max-width:var(--maxw); margin:0 auto; padding:16px 28px;
  display:flex; align-items:center; justify-content:space-between; gap:20px;
}
.brand{display:flex; align-items:center; gap:10px; font-size:22px;}
.brand .brand-dot{width:12px; height:12px; background:var(--coral); border-radius:50%; display:inline-block;}
nav.links{display:flex; gap:30px; font-size:14.5px; font-weight:700;}
nav.links a{position:relative; padding:6px 0; color:var(--ink);}
nav.links a.active, nav.links a:hover{color:var(--coral-dark);}
nav.links a.active::after{content:''; position:absolute; left:0; bottom:-2px; width:100%; height:3px; background:var(--lime); border-radius:2px;}
.nav-cta{
  background:var(--ink); color:var(--sand); font-weight:700; font-size:13.5px;
  padding:12px 22px; border-radius:999px; letter-spacing:.02em;
  transition:background .2s, transform .2s;
  white-space:nowrap;
}
.nav-cta:hover{background:var(--coral); transform:translateY(-2px) rotate(-1deg);}
.menu-toggle{display:none; background:none; border:none; font-size:26px; color:var(--ink); cursor:pointer;}
.mobile-nav{display:none; position:fixed; inset:0; z-index:80; background:rgba(25,15,53,.6); opacity:0; pointer-events:none; transition:opacity .25s ease;}
.mobile-nav.open{display:block; opacity:1; pointer-events:auto;}
.mobile-nav-panel{position:absolute; top:0; right:0; height:100%; width:min(80vw,320px); background:var(--sand); padding:26px; transform:translateX(100%); transition:transform .3s ease; display:flex; flex-direction:column; gap:6px;}
.mobile-nav.open .mobile-nav-panel{transform:translateX(0);}
.mobile-nav-panel .close-btn{align-self:flex-end; background:none; border:none; font-size:26px; cursor:pointer; margin-bottom:16px;}
.mobile-nav-panel a{font-family:'Baloo 2',sans-serif; font-size:22px; padding:12px 0; border-bottom:1px solid var(--line);}
.mobile-nav-panel .nav-cta{margin-top:18px; text-align:center;}

/* ---------- page header (non-home hero) ---------- */
.page-header{
  padding:150px 0 90px;
  background:var(--ink);
  color:var(--sand);
  position:relative;
  overflow:hidden;
}
.page-header .eyebrow{color:var(--lime);}
.page-header h1{font-size:clamp(40px,7vw,74px); line-height:1; margin-top:16px;}
.page-header p{margin-top:18px; color:#C9BEE8; font-size:16.5px; max-width:520px;}
.page-header .blob{
  position:absolute; border-radius:50%; filter:blur(2px); opacity:.5;
}

/* ---------- eyebrow / section head ---------- */
.eyebrow{
  font-family:'Space Mono',monospace; font-size:12.5px; font-weight:700; letter-spacing:.14em;
  text-transform:uppercase; color:var(--coral-dark);
  display:inline-flex; align-items:center; gap:8px;
}
.eyebrow .dot{width:7px; height:7px; background:var(--coral); border-radius:50%;}
.section-head{max-width:640px; margin-bottom:52px;}
.section-head h2{font-family:'Baloo 2',sans-serif; font-weight:800; font-size:clamp(30px,4.4vw,46px); margin-top:14px; line-height:1.05;}
.section-head p{color:var(--ink-soft); font-size:15.5px; margin-top:14px; max-width:480px;}
.section-head.center{margin-left:auto; margin-right:auto; text-align:center;}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex; align-items:center; gap:8px;
  font-weight:700; font-size:14px; padding:16px 30px;
  border-radius:999px; transition:transform .2s, background .2s, box-shadow .2s;
}
.btn-coral{background:var(--coral); color:#fff; box-shadow:0 10px 24px -8px rgba(255,77,106,.55);}
.btn-coral:hover{background:var(--coral-dark); transform:translateY(-2px) rotate(-1deg);}
.btn-ink{background:var(--ink); color:var(--sand);}
.btn-ink:hover{background:var(--coral); transform:translateY(-2px) rotate(1deg);}
.btn-outline{border:2px solid var(--ink); color:var(--ink);}
.btn-outline:hover{background:var(--ink); color:var(--sand);}
.btn-outline.on-ink{border-color:var(--sand); color:var(--sand);}
.btn-outline.on-ink:hover{background:var(--sand); color:var(--ink);}

/* ---------- ticket card (signature element) ---------- */
.ticket{
  position:relative;
  background:var(--paper);
  border:2px solid var(--ink);
  border-radius:var(--r-md);
  display:flex;
  min-width:340px;
  transition:transform .3s ease, box-shadow .3s ease;
}
.ticket:hover{transform:rotate(-1deg) translateY(-4px); box-shadow:0 20px 32px -16px rgba(25,15,53,.35);}
.ticket-main{flex:1; padding:26px 24px;}
.ticket-stub{
  width:88px; flex:none;
  border-left:2px dashed var(--ink);
  display:flex; align-items:center; justify-content:center;
  position:relative;
  background:repeating-linear-gradient(135deg, transparent, transparent 8px, rgba(25,15,53,.03) 8px, rgba(25,15,53,.03) 16px);
}
.ticket-stub .stub-text{
  writing-mode:vertical-rl; transform:rotate(180deg);
  font-family:'Space Mono',monospace; font-size:12px; font-weight:700; letter-spacing:.12em;
  text-transform:uppercase; color:var(--ink-soft);
}
.ticket::before, .ticket::after{
  content:''; position:absolute; width:20px; height:20px; background:var(--sand);
  border:2px solid var(--ink); border-radius:50%; top:50%; transform:translateY(-50%);
  right:78px;
}
.ticket::before{clip-path:inset(0 0 0 0);}
.ticket-tag{
  font-family:'Space Mono',monospace; font-size:11px; font-weight:700; letter-spacing:.08em;
  text-transform:uppercase; color:#fff; background:var(--coral);
  padding:5px 11px; border-radius:999px; display:inline-block; margin-bottom:14px;
}
.ticket-tag.gold{background:var(--gold); color:var(--ink);}
.ticket-tag.turq{background:var(--turq); color:#fff;}
.ticket h3{font-family:'Baloo 2',sans-serif; font-weight:800; font-size:21px; margin-bottom:8px;}
.ticket .ticket-meta{font-size:13.5px; color:var(--ink-soft); display:flex; flex-direction:column; gap:4px; margin-bottom:16px;}
.ticket .ticket-meta span{display:flex; align-items:center; gap:8px;}
.ticket .ticket-price{
  display:flex; align-items:center; justify-content:space-between;
  border-top:1.5px dashed var(--line); padding-top:14px;
}
.ticket .price-amt{font-family:'Space Mono',monospace; font-weight:700; font-size:17px;}
.ticket .price-label{font-size:10.5px; text-transform:uppercase; letter-spacing:.08em; color:var(--ink-soft);}
.ticket .rsvp-link{font-size:12.5px; font-weight:700; color:var(--coral-dark); border-bottom:2px solid var(--coral-dark); padding-bottom:2px;}

/* ---------- carousel ---------- */
.carousel-row{display:flex; gap:24px; overflow-x:auto; scroll-snap-type:x mandatory; padding:6px 6px 16px; scrollbar-width:none;}
.carousel-row::-webkit-scrollbar{display:none;}
.carousel-row > *{scroll-snap-align:start; flex:0 0 auto;}
.section-controls{display:flex; justify-content:space-between; align-items:flex-end; flex-wrap:wrap; gap:20px; margin-bottom:52px;}
.arrow-btn{
  width:46px; height:46px; border-radius:50%; border:2px solid var(--ink); background:var(--paper);
  display:flex; align-items:center; justify-content:center; cursor:pointer; flex-shrink:0;
  transition:background .2s, transform .2s;
}
.arrow-btn:hover{background:var(--lime); transform:translateY(-2px);}
.arrow-btn:disabled{opacity:.3; cursor:default;}
.arrow-btn:disabled:hover{background:var(--paper); transform:none;}
.carousel-arrows{display:flex; gap:10px;}

/* ---------- footer ---------- */
footer{background:var(--ink); color:var(--sand); padding:70px 0 30px;}
.footer-top{display:flex; justify-content:space-between; gap:40px; flex-wrap:wrap; margin-bottom:50px;}
footer .brand{font-size:26px; margin-bottom:14px;}
footer .footer-tag{color:#C9BEE8; font-size:14.5px; max-width:280px;}
.footer-cols{display:flex; gap:60px; flex-wrap:wrap;}
.footer-col h4{font-family:'Space Mono',monospace; font-size:11.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--lime); margin-bottom:16px;}
.footer-col a{display:block; font-size:14.5px; color:#D8CEEE; padding:6px 0;}
.footer-col a:hover{color:var(--gold);}
.footer-bottom{border-top:1px solid rgba(251,241,225,.15); padding-top:22px; display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px; font-size:12.5px; color:#9788C2;}
.social-row{display:flex; gap:12px;}
.social-row a{width:38px; height:38px; border:1.5px solid rgba(251,241,225,.4); border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:12px; font-weight:700; transition:background .2s, border-color .2s;}
.social-row a:hover{background:var(--coral); border-color:var(--coral);}

/* ---------- responsive ---------- */
@media (max-width:860px){
  nav.links{display:none;}
  .menu-toggle{display:block;}
  section{padding:64px 0 !important;}
  .page-header{padding-top:120px;}
}
@media (max-width:600px){
  .carousel-arrows{display:none;}
}