@font-face{font-family:'Cormorant Garamond';src:url('../../fonts/cormorant-garamond-500.woff2') format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:'Cormorant Garamond';src:url('../../fonts/cormorant-garamond-600.woff2') format('woff2');font-weight:600;font-display:swap}
@font-face{font-family:'Cormorant Garamond';src:url('../../fonts/cormorant-garamond-700.woff2') format('woff2');font-weight:700;font-display:swap}
@font-face{font-family:'Cormorant Garamond';src:url('../../fonts/cormorant-garamond-italic-500.woff2') format('woff2');font-weight:500;font-style:italic;font-display:swap}
@font-face{font-family:'Great Vibes';src:url('../../fonts/great-vibes-400.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:'Jost';src:url('../../fonts/jost-300.woff2') format('woff2');font-weight:300;font-display:swap}
@font-face{font-family:'Jost';src:url('../../fonts/jost-400.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:'Jost';src:url('../../fonts/jost-500.woff2') format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:'Mukta';src:url('../../fonts/mukta-devanagari-400.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:'Mukta';src:url('../../fonts/mukta-devanagari-500.woff2') format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:'Mukta';src:url('../../fonts/mukta-devanagari-600.woff2') format('woff2');font-weight:600;font-display:swap}
:root{--cream:#fff6e5;--paper:#fffdf6;--red:#d7263d;--red-deep:#a91e31;--teal:#0f8b8d;--mustard:#f4a300;--navy:#1f2a44;--ink-soft:#6b6257}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:'Jost',sans-serif;color:var(--navy);background:var(--cream);overflow-x:hidden}
img{max-width:100%;display:block}
.reveal{opacity:0;transform:translateY(22px);transition:opacity .7s ease,transform .7s ease}
.reveal.in{opacity:1;transform:none}
.bct-section{padding:clamp(38px,7vw,72px) 20px;max-width:1060px;margin:0 auto}
.bct-kicker{display:block;font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--red);font-weight:500}
.bct-h2{font-family:'Cormorant Garamond',serif;font-size:clamp(30px,5.5vw,44px);color:var(--navy);margin-top:6px}
.bct-head{text-align:left;margin-bottom:26px}
.bct-body{font-family:'Cormorant Garamond',serif;font-size:20px;line-height:1.65}
.bct-script{font-family:'Great Vibes',cursive;font-size:clamp(34px,7vw,48px);color:var(--red-deep);font-weight:400}
.bct-date-line{font-family:'Cormorant Garamond',serif;font-weight:700;font-size:20px;letter-spacing:.06em;margin-top:14px}
.bct-hint{margin-top:14px;font-size:13px;color:var(--ink-soft);text-align:center}
.floating-music{position:fixed;right:16px;bottom:16px;z-index:60;width:48px;height:48px;border-radius:50%;border:1px solid var(--mustard);background:var(--paper);color:var(--red-deep);cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 18px rgba(31,42,68,.22)}
.floating-music svg{width:22px;height:22px}
.floating-music.playing{background:var(--red);color:#fff}
/* ticker */
.bct-ticker{background:var(--navy);color:var(--cream);overflow:hidden;padding:10px 0;font-size:13px;letter-spacing:.18em;font-weight:500;white-space:nowrap}
.bct-ticker-track{display:inline-flex;animation:bcttick 26s linear infinite}
.bct-ticker-track span{padding-right:12px}
@keyframes bcttick{from{transform:translateX(0)}to{transform:translateX(-50%)}}
/* ticket hero */
.bct-ticket{max-width:1060px;margin:26px auto 0;display:flex;background:var(--paper);border:2px solid var(--navy);border-radius:18px;overflow:hidden;box-shadow:8px 8px 0 var(--mustard)}
.bct-ticket-body{flex:1;padding:clamp(24px,5vw,44px)}
.bct-ticket-eyebrow{font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--teal);font-weight:500}
.bct-ticket-invite{font-family:'Cormorant Garamond',serif;font-size:20px;margin-top:14px}
.bct-star-name{font-family:'Cormorant Garamond',serif;font-size:clamp(44px,9vw,84px);line-height:1;color:var(--red-deep);margin-top:4px}
.bct-hosts{margin-top:12px;font-size:15px;color:var(--ink-soft)}
.bct-hero-quote{font-family:'Cormorant Garamond',serif;font-size:20px;line-height:1.6;margin-top:14px;max-width:56ch}
.bct-ticket-chips{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}
.bct-chip{display:inline-block;border:1.5px solid var(--navy);border-radius:999px;padding:7px 14px;font-size:14px;background:#fff}
.bct-chip-cta{background:var(--red);border-color:var(--red);color:#fff;text-decoration:none;font-weight:500}
.bct-perforation{width:26px;flex:none;background-image:linear-gradient(var(--navy) 55%,transparent 45%);background-size:2px 18px;background-repeat:repeat-y;background-position:center;position:relative}
.bct-perforation::before,.bct-perforation::after{content:"";position:absolute;left:50%;transform:translateX(-50%);width:26px;height:26px;border-radius:50%;background:var(--cream);border:2px solid var(--navy)}
.bct-perforation::before{top:-14px}.bct-perforation::after{bottom:-14px}
.bct-stub{width:210px;flex:none;background:var(--red);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:24px 16px;text-align:center}
.bct-stub-photo{width:96px;height:96px;object-fit:cover;border-radius:50%;border:3px solid #fff}
.bct-stub-mono{width:96px;height:96px;border-radius:50%;border:3px solid #fff;background:var(--mustard);color:var(--navy);font-family:'Cormorant Garamond',serif;font-size:52px;display:flex;align-items:center;justify-content:center}
.bct-stub-admit{font-weight:500;letter-spacing:.24em;font-size:14px;writing-mode:vertical-rl}
.bct-stub-date{font-family:'Cormorant Garamond',serif;font-size:17px}
.bct-barcode{width:120px;height:34px;background:repeating-linear-gradient(90deg,#fff 0 2px,transparent 2px 5px,#fff 5px 6px,transparent 6px 11px,#fff 11px 14px,transparent 14px 16px)}
.bct-stub-no{font-size:12px;letter-spacing:.14em;opacity:.85}
/* welcome */
.bct-welcome{max-width:720px}
.bct-welcome .bct-body{margin-top:14px}
/* ferris wheel countdown */
.bct-count{text-align:center}
.bct-count .bct-head,.bct-count .bct-kicker{text-align:center}
.bct-wheel-wrap{position:relative;width:min(340px,86vw);height:min(340px,86vw);margin:26px auto 0}
.bct-wheel{position:absolute;inset:0;border:3px solid var(--navy);border-radius:50%;animation:bctspin 40s linear infinite}
.bct-wheel::before{content:"";position:absolute;inset:14%;border:2px dashed var(--mustard);border-radius:50%}
.bct-spoke{position:absolute;left:50%;top:50%;width:2px;height:100%;background:var(--navy);transform-origin:center}
.bct-spoke.s1{transform:translate(-50%,-50%) rotate(0deg)}
.bct-spoke.s2{transform:translate(-50%,-50%) rotate(45deg)}
.bct-spoke.s3{transform:translate(-50%,-50%) rotate(90deg)}
.bct-spoke.s4{transform:translate(-50%,-50%) rotate(135deg)}
.bct-hub{position:absolute;left:50%;top:50%;width:22px;height:22px;transform:translate(-50%,-50%);background:var(--mustard);border:2px solid var(--navy);border-radius:50%}
.bct-wheel-legs{position:absolute;left:50%;bottom:-42px;width:150px;height:44px;transform:translateX(-50%);background:linear-gradient(115deg,transparent 48%,var(--navy) 48% 52%,transparent 52%),linear-gradient(65deg,transparent 48%,var(--navy) 48% 52%,transparent 52%)}
@keyframes bctspin{to{transform:rotate(360deg)}}
.bct-cabin{position:absolute;width:74px;height:64px;background:var(--paper);border:2px solid var(--navy);border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:3px 3px 0 var(--mustard);animation:bctspinrev 40s linear infinite;z-index:2}
@keyframes bctspinrev{to{transform:rotate(-360deg)}}
.bct-cabin.c-north{left:50%;top:-8px;transform:translateX(-50%)}
.bct-cabin.c-east{right:-8px;top:50%;transform:translateY(-50%)}
.bct-cabin.c-south{left:50%;bottom:-8px;transform:translateX(-50%)}
.bct-cabin.c-west{left:-8px;top:50%;transform:translateY(-50%)}
.bct-cabin-num{font-family:'Cormorant Garamond',serif;font-size:26px;font-weight:700;line-height:1}
.bct-cabin-lab{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft)}
/* midway stalls */
.bct-group-head{font-family:'Cormorant Garamond',serif;font-size:22px;margin:22px 0 14px}
.bct-midway{display:flex;gap:18px;overflow-x:auto;padding:14px 4px 20px;scroll-snap-type:x mandatory}
.bct-stall{flex:0 0 264px;background:var(--paper);border:2px solid var(--navy);border-radius:0 0 14px 14px;padding:0 18px 18px;scroll-snap-align:start}
.bct-awning{height:26px;margin:0 -18px 14px;background:repeating-linear-gradient(90deg,var(--red) 0 22px,#fff 22px 44px);border-bottom:2px solid var(--navy);border-radius:12px 12px 0 0;position:relative}
.bct-awning::after{content:"";position:absolute;left:0;right:0;bottom:-9px;height:9px;background:radial-gradient(circle at 11px 0,transparent 10px,var(--red) 11px) 0 0/44px 9px repeat-x}
.bct-stall h4{font-family:'Cormorant Garamond',serif;font-size:22px;margin-top:8px}
.bct-stall-when{font-weight:500;color:var(--red-deep);margin-top:6px;font-size:14px}
.bct-stall-loc{font-size:14px;color:var(--ink-soft);margin-top:2px}
.bct-stall-desc{font-size:15px;line-height:1.55;margin-top:8px}
/* signposts */
.bct-signs{display:flex;gap:18px;flex-wrap:wrap}
.bct-sign{flex:1 1 240px;background:var(--paper);border:2px solid var(--navy);border-radius:14px;padding:20px;box-shadow:5px 5px 0 var(--teal)}
.bct-sign-top{display:block;font-size:20px;color:var(--mustard);margin-bottom:6px}
.bct-sign h4{font-family:'Cormorant Garamond',serif;font-size:22px;margin-bottom:8px}
.bct-sign p{font-size:15px;line-height:1.6;margin-top:6px}
/* photo booth */
.bct-booth{display:flex;flex-wrap:wrap;gap:18px;justify-content:center;background:var(--navy);border-radius:18px;padding:26px 20px}
.bct-frame{width:200px;background:#fff;padding:12px 12px 8px;border-radius:4px}
.bct-frame img{width:100%;height:180px;object-fit:cover;background:var(--cream)}
.bct-frame figcaption{text-align:center;font-family:'Cormorant Garamond',serif;font-size:17px;padding-top:8px}
/* venue map */
.bct-venue-grid{display:flex;gap:28px;align-items:center}
.bct-map{flex:1 1 320px}
.bct-map svg{width:100%;height:auto;border:2px solid var(--navy);border-radius:14px}
.bct-map-cap{text-align:center;font-size:13px;color:var(--ink-soft);margin-top:8px}
.bct-venue-copy{flex:1 1 300px}
.bct-venue-copy .bct-body{margin-top:10px}
.bct-btn-map{display:inline-block;margin-top:18px;background:var(--teal);color:#fff;text-decoration:none;font-weight:500;padding:11px 22px;border-radius:999px}
/* ticket window rsvp */
.bct-window{max-width:620px;margin:0 auto;background:var(--paper);border:2px solid var(--navy);border-radius:18px;overflow:hidden;box-shadow:8px 8px 0 var(--red);padding:0 0 28px;text-align:center}
.bct-window-sign{background:var(--navy);color:var(--cream);letter-spacing:.3em;font-weight:500;padding:12px}
.bct-window .bct-script{margin-top:22px}
.bct-window-sub{font-size:14px;color:var(--ink-soft);margin-top:4px}
.bct-form{display:flex;flex-direction:column;gap:14px;padding:22px 26px 0;text-align:left}
.bct-form label{font-size:14px;font-weight:500}
.bct-form input,.bct-form select,.bct-form textarea{width:100%;margin-top:5px;padding:11px 12px;border:1.5px solid var(--navy);border-radius:10px;font:inherit;background:#fff}
.bct-opt{font-weight:400;color:var(--ink-soft)}
.bct-btn-submit{background:var(--red);color:#fff;border:0;border-radius:999px;padding:13px;font:inherit;font-weight:500;cursor:pointer}
.bct-thanks{padding:26px}
.bct-thanks .bct-body{margin-top:8px}
/* footer */
.bct-colophon{text-align:center;padding:44px 20px 40px}
.bct-foot-quote{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:20px;max-width:56ch;margin:0 auto 14px}
.bct-foot-line{font-family:'Great Vibes',cursive;font-size:34px;color:var(--red-deep)}
.bct-foot-name{font-family:'Cormorant Garamond',serif;font-size:26px;font-weight:700;margin-top:8px}
.bct-foot-hosts,.bct-foot-date{font-size:14px;color:var(--ink-soft);margin-top:4px}
.bct-credit{font-size:13px;color:var(--ink-soft);margin-top:14px}
@media(max-width:720px){
  .bct-ticket{flex-direction:column;margin:18px 12px 0}
  .bct-perforation{width:auto;height:26px;background-image:linear-gradient(90deg,var(--navy) 55%,transparent 45%);background-size:18px 2px;background-repeat:repeat-x}
  .bct-perforation::before{top:50%;left:-14px;transform:translateY(-50%)}
  .bct-perforation::after{top:50%;right:-14px;left:auto;transform:translateY(-50%)}
  .bct-stub{width:auto;flex-direction:row;flex-wrap:wrap;padding:18px}
  .bct-stub-admit{writing-mode:horizontal-tb}
  .bct-venue-grid{flex-direction:column}
  .bct-wheel-wrap{margin-top:34px}
  .bct-cabin{width:66px;height:58px}
}
@media(prefers-reduced-motion:reduce){
  .bct-ticker-track,.bct-wheel,.bct-cabin{animation:none!important}
}
