
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Playfair+Display:wght@600;700;800&display=swap');
:root{--bg:#070611;--bg2:#0e0b1d;--surface:rgba(18,15,35,.72);--surface2:#1a1433;--text:#f8f7ff;--muted:#aaa6bd;--line:rgba(255,255,255,.10);--pink:#ff2ea6;--purple:#7c4dff;--cyan:#21d4fd;--orange:#ffb300;--green:#33e6a5;--danger:#ff5f6d;--shadow:0 25px 70px rgba(0,0,0,.35);--radius:22px}
html[data-theme=light]{--bg:#f7f7fb;--bg2:#fff;--surface:rgba(255,255,255,.78);--surface2:#fff;--text:#171527;--muted:#69657a;--line:rgba(24,18,50,.10);--shadow:0 25px 70px rgba(48,38,90,.13)}
*{box-sizing:border-box}html{scroll-behavior:smooth}h1,h2,h3,h4{font-family:'Playfair Display',Georgia,'Times New Roman',serif;font-weight:700}body{margin:0;min-height:100vh;color:var(--text);font-family:Inter,system-ui,sans-serif;background:radial-gradient(circle at 15% 5%,rgba(124,77,255,.18),transparent 30%),radial-gradient(circle at 85% 15%,rgba(255,46,166,.13),transparent 28%),var(--bg);overflow-x:hidden}body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:-1;background-image:linear-gradient(rgba(255,255,255,.018) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.018) 1px,transparent 1px);background-size:48px 48px;mask-image:linear-gradient(to bottom,#000,transparent 90%)}
a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}.container{width:min(1180px,calc(100% - 36px));margin:auto}
.navbar{position:sticky;top:0;z-index:100;backdrop-filter:blur(20px);background:color-mix(in srgb,var(--bg) 82%,transparent);border-bottom:1px solid var(--line)}.nav-inner{min-height:76px;display:flex;align-items:center;justify-content:space-between;gap:18px}.brand{display:flex;align-items:center;gap:10px;min-width:0}.brand img{width:145px;height:64px;object-fit:contain}.nav-links{display:flex;gap:4px;align-items:center}.nav-links a{padding:10px 12px;border-radius:12px;color:var(--muted);font-size:.9rem;font-weight:600}.nav-links a:hover,.nav-links a.active{color:var(--text);background:var(--surface)}.nav-actions{display:flex;align-items:center;gap:8px}.icon-btn,.theme-btn,.profile-btn{width:42px;height:42px;border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:13px;display:grid;place-items:center}.profile-wrap{position:relative}.profile-name-btn{width:auto;min-width:92px;padding:0 13px;display:flex;align-items:center;justify-content:center;gap:7px;font-size:.82rem;font-weight:800}.profile-chevron{font-size:.9rem;color:var(--muted)}.profile-menu{position:absolute;right:0;top:52px;width:210px;padding:8px;border:1px solid var(--line);border-radius:16px;background:var(--surface2);box-shadow:var(--shadow);display:none}.profile-menu.open{display:block}.profile-menu a,.profile-menu button{display:flex;width:100%;padding:11px 12px;border:0;background:transparent;border-radius:10px;color:var(--text);text-align:left}.profile-menu a:hover,.profile-menu button:hover{background:rgba(124,77,255,.16)}.mobile-menu{display:none}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:14px;padding:12px 18px;font-weight:800;color:#fff;background:linear-gradient(135deg,var(--purple),var(--pink));box-shadow:0 10px 28px rgba(255,46,166,.18);transition:.25s transform,.25s box-shadow}.btn:hover{transform:translateY(-2px);box-shadow:0 15px 35px rgba(255,46,166,.25)}.btn.secondary{background:var(--surface);color:var(--text);border:1px solid var(--line);box-shadow:none}.btn.danger{background:linear-gradient(135deg,#ff416c,#ff4b2b);color:white}.btn.small{padding:9px 13px;border-radius:11px;font-size:.82rem}.btn.block{width:100%}
.hero{min-height:700px;display:grid;place-items:center;position:relative;overflow:hidden}.hero-glow{position:absolute;width:520px;height:520px;border-radius:50%;background:radial-gradient(circle,rgba(124,77,255,.32),rgba(255,46,166,.12) 45%,transparent 70%);filter:blur(8px);animation:float 7s ease-in-out infinite}.hero-logo{width:min(560px,72vw);max-height:360px;object-fit:contain;filter:drop-shadow(0 20px 50px rgba(255,46,166,.28));animation:float 7s ease-in-out infinite}.hero-content{position:relative;z-index:2;text-align:center;padding:90px 0}.eyebrow,.kicker{font-size:.74rem;text-transform:uppercase;letter-spacing:.16em;color:var(--pink);font-weight:800}.hero h1{font-family:"Playfair Display",serif;font-size:clamp(3rem,7vw,6.8rem);line-height:.92;margin:18px 0;letter-spacing:-.055em}.hero p{max-width:680px;margin:0 auto 28px;color:var(--muted);line-height:1.8;font-size:1.04rem}.hero-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
.section{padding:82px 0}.section-head{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:28px}.section-head h2,.page-head h1{font-family:"Playfair Display",serif;font-size:clamp(2rem,4vw,3.5rem);margin:4px 0;letter-spacing:-.04em}.section-head p,.muted{color:var(--muted);line-height:1.7}.grid{display:grid;gap:18px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.card{border:1px solid var(--line);background:var(--surface);backdrop-filter:blur(18px);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.card-pad{padding:22px}.card h3{margin:5px 0 10px;font-family:"Playfair Display",serif}.event-card{transition:.25s;position:relative}.event-card:hover{transform:translateY(-7px);border-color:rgba(255,46,166,.35);box-shadow:0 30px 65px rgba(255,46,166,.22)}.event-image{width:100%;height:220px;object-fit:cover;background:radial-gradient(circle at 25% 25%,rgba(33,212,253,.5),transparent 28%),radial-gradient(circle at 75% 70%,rgba(255,46,166,.55),transparent 32%),linear-gradient(135deg,#120d2d,#260f36 48%,#0d1831)}.event-body{padding:20px}.event-meta{display:flex;flex-wrap:wrap;gap:8px;color:var(--muted);font-size:.82rem}.price{font-weight:800;color:var(--text);font-size:1.2rem;transition:text-shadow .3s}.event-card:hover .price{text-shadow:0 0 18px var(--pink)}.pill{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:999px;padding:6px 9px;font-size:.72rem;color:var(--muted)}.pill.success{color:var(--green)}.pill.warning{color:var(--orange)}.pill.danger{color:var(--danger)}
.page{padding:54px 0 90px}.page-head{margin-bottom:30px}.page-head p{color:var(--muted);max-width:760px;line-height:1.7}.form-card{max-width:880px;margin:auto}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.field{display:flex;flex-direction:column;gap:7px}.field.full{grid-column:1/-1}.field label{font-size:.83rem;font-weight:700;color:var(--muted)}.field input,.field select,.field textarea{width:100%;padding:13px 14px;border:1px solid var(--line);border-radius:13px;background:rgba(0,0,0,.18);color:var(--text);outline:none}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--pink);box-shadow:0 0 0 4px rgba(255,46,166,.10)}html[data-theme=light] .field input,html[data-theme=light] .field select,html[data-theme=light] .field textarea{background:#fff}.help{font-size:.76rem;color:var(--muted)}
.required{color:var(--pink)}.form-sep{border:0;border-top:1px solid var(--line);margin:26px 0}.phone-row{display:grid;grid-template-columns:72px 1fr;gap:8px}.phone-row input:first-child{text-align:center}.password-wrap{position:relative}.password-wrap input{padding-right:48px}.password-toggle{position:absolute;right:6px;top:6px;width:38px;height:38px;border:0;border-radius:10px;background:transparent;color:var(--muted);cursor:pointer}.password-toggle:hover{background:var(--surface);color:var(--text)}.field input.invalid,.field select.invalid,.field textarea.invalid{border-color:rgba(255,102,116,.75);box-shadow:0 0 0 3px rgba(255,102,116,.08)}.field-error{min-height:16px;font-size:.74rem;color:var(--danger);line-height:1.35}.alert-box{padding:14px 16px;border-radius:14px;border:1px solid rgba(255,102,116,.3);background:rgba(255,102,116,.08);color:var(--text);line-height:1.6;margin-bottom:18px}.alert-box.success{border-color:rgba(57,217,138,.3);background:rgba(57,217,138,.08)}.alert-box.warning{border-color:rgba(255,179,0,.3);background:rgba(255,179,0,.08)}.eligibility-check{display:flex;gap:10px;align-items:flex-start;margin-top:14px;padding:14px 16px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.025);font-size:.84rem;line-height:1.5}.eligibility-check input{margin-top:3px;accent-color:var(--pink)}.modal-backdrop{position:fixed;inset:0;z-index:500;display:grid;place-items:center;padding:20px;background:rgba(3,2,10,.78);backdrop-filter:blur(12px)}.modal-backdrop.hidden{display:none}.modal-card{width:min(900px,100%);max-height:90vh;overflow:auto;border:1px solid var(--line);border-radius:22px;background:var(--surface2);box-shadow:var(--shadow);padding:22px}.modal-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;border-bottom:1px solid var(--line);padding-bottom:16px;margin-bottom:18px}.detail-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.detail-item{padding:13px;border:1px solid var(--line);border-radius:13px;background:rgba(255,255,255,.025)}.detail-item small{display:block;color:var(--muted);font-size:.72rem;margin-bottom:5px}.detail-item b{word-break:break-word}.modal-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px;padding-top:18px;border-top:1px solid var(--line)}
.checkline{display:flex;gap:9px;align-items:center;color:var(--text);font-size:.84rem}.checkline input{accent-color:var(--pink)}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px;flex-wrap:wrap}.notice{padding:14px 16px;border-radius:14px;border:1px solid var(--line);background:rgba(124,77,255,.08);color:var(--muted);line-height:1.6}.notice.success{border-color:rgba(57,217,138,.25);background:rgba(57,217,138,.07);color:var(--text)}.notice.danger{border-color:rgba(255,102,116,.28);background:rgba(255,102,116,.07)}
.auth-page{min-height:calc(100vh - 76px);display:grid;place-items:center;padding:50px 18px}.auth-card{width:min(600px,100%);padding:30px}.auth-card .logo-small{width:220px;height:110px;object-fit:contain;display:block;margin:0 auto 10px}.auth-card h1{text-align:center;font-size:2.5rem}.auth-card .sub{text-align:center;color:var(--muted);margin-bottom:24px}
.detail-hero{padding:58px 0}.detail-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:24px}.detail-cover{min-height:460px;border-radius:28px;overflow:hidden;border:1px solid var(--line);background:#100c25}.detail-cover img{width:100%;height:100%;object-fit:cover}.detail-panel{padding:28px}.detail-panel h1{font-family:"Playfair Display",serif;font-size:clamp(2.5rem,5vw,5rem);line-height:.95;margin:8px 0 18px}.slot-list{display:grid;gap:10px;margin:20px 0}.slot{padding:14px;border:1px solid var(--line);border-radius:14px;display:flex;align-items:center;justify-content:space-between;gap:12px}.slot.selected{border-color:var(--pink);background:rgba(255,46,166,.08);box-shadow:0 0 0 3px rgba(255,46,166,.08)}
.status-card{text-align:center;padding:32px}.status-icon{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;margin:0 auto 15px;background:rgba(57,217,138,.12);color:var(--green);font-size:1.7rem}.status-icon.warn{background:rgba(255,179,0,.12);color:var(--orange)}.status-icon.danger{background:rgba(255,102,116,.12);color:var(--danger)}
.pass{max-width:780px;margin:auto;position:relative;border:1px solid rgba(124,77,255,.38);background:linear-gradient(135deg,#1c1536,#120d2a 60%,rgba(124,77,255,.16));border-radius:28px;overflow:hidden;box-shadow:0 30px 90px rgba(0,0,0,.35)}.pass:before{content:"";position:absolute;width:300px;height:300px;border-radius:50%;background:rgba(255,46,166,.16);filter:blur(50px);right:-100px;top:-100px;pointer-events:none}html[data-theme=light] .pass{background:linear-gradient(135deg,#fff,rgba(124,77,255,.10))}.pass-top{padding:24px;display:flex;justify-content:space-between;gap:20px;border-bottom:1px dashed rgba(124,77,255,.4)}.pass-logo{width:180px;height:75px;object-fit:contain}.qr{width:180px;height:180px;object-fit:contain;background:white;padding:10px;border-radius:16px}.pass-body{padding:26px}.pass-code{font-family:monospace;letter-spacing:.12em;color:var(--pink)}.pass-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px}
.table-wrap{overflow:auto}.table{width:100%;border-collapse:collapse;min-width:720px}.table th,.table td{padding:14px 16px;border-bottom:1px solid var(--line);text-align:left;font-size:.84rem}.table th{color:var(--muted);font-size:.74rem;text-transform:uppercase;letter-spacing:.08em}.table td{color:var(--text)}
.footer{border-top:1px solid var(--line);padding:34px 0;color:var(--muted)}.footer-grid{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap}
.toast{position:fixed;right:18px;bottom:18px;z-index:300;max-width:360px;padding:14px 16px;border:1px solid var(--line);border-radius:14px;background:var(--surface2);box-shadow:var(--shadow);transform:translateY(20px);opacity:0;pointer-events:none;transition:.25s}.toast.show{transform:translateY(0);opacity:1}
.admin-shell{display:grid;grid-template-columns:250px minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;padding:20px 14px;border-right:1px solid var(--line);background:var(--surface2);overflow:auto}.sidebar .brand{margin-bottom:20px}.sidebar .brand img{width:180px;height:80px}.side-link{display:flex;align-items:center;gap:10px;padding:11px 12px;border-radius:12px;color:var(--muted);font-size:.86rem;margin:3px 0}.side-link:hover,.side-link.active{color:var(--text);background:rgba(124,77,255,.16)}.dash-main{padding:28px;min-width:0}.dash-top{display:flex;justify-content:space-between;gap:15px;align-items:center;margin-bottom:24px}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.stat .value{font-size:2rem;font-weight:800;margin:8px 0}.stat .label{color:var(--muted);font-size:.82rem}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.mini-stat{padding:16px;border:1px solid var(--line);border-radius:16px;background:var(--surface)}.mini-stat b{display:block;font-size:1.45rem;margin-top:5px}.two-col{display:grid;grid-template-columns:1.2fr .8fr;gap:18px}.filter-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.filter-row select,.filter-row input{padding:10px 12px;border:1px solid var(--line);border-radius:11px;background:var(--surface);color:var(--text)}
.scanner{display:grid;grid-template-columns:1fr .9fr;gap:18px}.scanner-box{min-height:380px;border:1px dashed rgba(255,46,166,.45);box-shadow:0 0 50px rgba(255,46,166,.12);border-radius:22px;display:grid;place-items:center;text-align:center;padding:25px}.result-good{color:var(--green)}.result-bad{color:var(--danger)}
@keyframes float{50%{transform:translateY(-9px)}}@media(max-width:960px){.nav-links{display:none;position:absolute;left:18px;right:18px;top:78px;padding:10px;flex-direction:column;align-items:stretch;border:1px solid var(--line);border-radius:16px;background:var(--surface2)}.nav-links.show{display:flex}.mobile-menu{display:grid}.nav-actions .desktop-auth{display:none}.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-grid,.two-col,.scanner{grid-template-columns:1fr}.admin-shell{grid-template-columns:1fr}.sidebar{position:relative;height:auto;display:flex;gap:6px;overflow:auto;white-space:nowrap;padding:10px}.sidebar .brand{display:none}.side-link{display:inline-flex}.stats,.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dash-main{padding:20px}.sidebar .side-link{margin:0}.sidebar{border-right:0;border-bottom:1px solid var(--line)}}@media(max-width:620px){.detail-list{grid-template-columns:1fr}.modal-card{padding:16px}.phone-row{grid-template-columns:64px 1fr}.container{width:min(100% - 24px,1180px)}.nav-inner{min-height:70px}.brand img{width:118px;height:56px}.section,.page{padding:55px 0}.hero{min-height:650px}.hero-content{padding:70px 0}.hero-logo{width:92vw}.form-grid,.grid-2,.grid-3{grid-template-columns:1fr}.grid-4{grid-template-columns:1fr}.field.full{grid-column:auto}.detail-panel{padding:20px}.detail-cover{min-height:280px}.pass-top{flex-direction:column;align-items:center;text-align:center}.qr{width:155px;height:155px}.auth-card{padding:20px}.auth-card .logo-small{width:190px}.dash-top{align-items:flex-start;flex-direction:column}.stats,.stat-grid{grid-template-columns:1fr 1fr}.stat .value{font-size:1.55rem}.table{min-width:650px}.event-image{height:190px}}
.hidden{display:none!important}
@media print{body{background:#fff!important;color:#111}.navbar,.footer,.page-head,.pass-actions,.toast{display:none!important}.page{padding:0!important}.pass{box-shadow:none!important;border:1px solid #aaa!important;max-width:100%!important}.pass-top,.pass-body{break-inside:avoid}html[data-theme=light] .pass{background:#fff}}

/* =====================================================================
   WINE-VIOLET THEME · motion, 3D & ambience
   Ported from the reference project. Purely visual — no layout changes.
   ===================================================================== */

/* Hero: cursor spotlight */
.hero-spotlight{position:absolute;inset:0;z-index:1;pointer-events:none;mix-blend-mode:screen;background:radial-gradient(circle 280px at var(--mx,50%) var(--my,30%),rgba(255,255,255,.10),transparent 70%)}

/* Ambient floating club-light blobs behind every page */
.party-lights{position:fixed;inset:0;z-index:-2;overflow:hidden;pointer-events:none}
.party-lights span{position:absolute;border-radius:50%;filter:blur(75px);opacity:.32;mix-blend-mode:screen;will-change:transform}
.party-lights span:nth-child(1){width:440px;height:440px;background:var(--pink);top:-140px;left:-120px;animation:float-blob-a 24s ease-in-out infinite}
.party-lights span:nth-child(2){width:400px;height:400px;background:var(--cyan);top:38%;right:-160px;animation:float-blob-b 29s ease-in-out infinite}
.party-lights span:nth-child(3){width:360px;height:360px;background:var(--purple);bottom:-160px;left:18%;animation:float-blob-c 26s ease-in-out infinite}
.party-lights span:nth-child(4){width:260px;height:260px;background:var(--orange);top:12%;left:48%;opacity:.2;animation:float-blob-b 20s ease-in-out infinite reverse}
html[data-theme=light] .party-lights span{opacity:.16}
@keyframes float-blob-a{0%,100%{transform:translate(0,0) scale(1)}33%{transform:translate(60px,-40px) scale(1.12)}66%{transform:translate(-30px,30px) scale(.92)}}
@keyframes float-blob-b{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(-70px,40px) scale(1.1)}}
@keyframes float-blob-c{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(50px,-35px) scale(.95)}}

/* Scroll-reveal for cards & sections */
.reveal{opacity:0;transform:translateY(30px) scale(.985);transition:opacity .8s cubic-bezier(.16,.84,.44,1),transform .8s cubic-bezier(.16,.84,.44,1)}
.reveal.in-view{opacity:1;transform:none}

/* Shimmering gradient headline text */
.gradient-text{background:linear-gradient(90deg,var(--cyan),#8c5bff,var(--pink),var(--orange));background-size:250% auto;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shine-text 7s linear infinite}
@keyframes shine-text{to{background-position:250% center}}

/* Button shine sweep + press feedback */
.btn{position:relative;overflow:hidden}
.btn:before{content:"";position:absolute;top:0;left:-60%;width:45%;height:100%;background:linear-gradient(120deg,transparent,rgba(255,255,255,.4),transparent);transform:skewX(-20deg);transition:left .65s ease;pointer-events:none}
.btn:hover:before{left:135%}
.btn:active{transform:scale(.96)}

/* Nav link underline sweep */
.nav-links a{position:relative}
.nav-links a:after{content:"";position:absolute;left:12px;right:12px;bottom:7px;height:2px;border-radius:2px;background:linear-gradient(90deg,var(--cyan),var(--pink));transform:scaleX(0);transform-origin:left;transition:transform .3s ease}
.nav-links a:hover:after,.nav-links a.active:after{transform:scaleX(1)}

/* 3D tilt cards */
.tilt{transform-style:preserve-3d;transition:transform .12s ease-out,box-shadow .3s,border-color .3s;position:relative}
.reveal.tilt{transition:opacity .8s cubic-bezier(.16,.84,.44,1),transform .2s ease-out,box-shadow .3s,border-color .3s}
.tilt-glare{position:absolute;inset:0;border-radius:inherit;background:radial-gradient(circle at var(--gx,50%) var(--gy,50%),rgba(255,255,255,.22),transparent 60%);opacity:0;transition:opacity .35s;pointer-events:none;z-index:3}
.tilt:hover .tilt-glare{opacity:1}
.mini-stat.tilt:hover,.stat.tilt:hover,.grid-3>.card.tilt:hover,.pass.tilt:hover{border-color:rgba(255,46,166,.3)}
.mini-stat.tilt:hover,.stat.tilt:hover{box-shadow:0 22px 50px rgba(255,46,166,.18)}

/* Slow hue-cycling club-light wash on placeholder art panels (never on real photos) */
div.event-image{animation:hue-cycle 13s linear infinite}
@keyframes hue-cycle{0%,100%{filter:hue-rotate(0deg)}50%{filter:hue-rotate(24deg)}}

/* Disco-pulse glow on decorative placeholder icons */
.card div[style*="font-size:4rem"],.detail-cover div[style*="font-size:4rem"]{animation:icon-glow 3.4s ease-in-out infinite}
@keyframes icon-glow{0%,100%{text-shadow:0 0 18px rgba(255,46,166,.35)}50%{text-shadow:0 0 44px rgba(255,46,166,.85),0 0 80px rgba(124,77,255,.5)}}

/* Click sparks (confetti-style micro interaction on buttons) */
.party-spark{position:fixed;width:7px;height:7px;border-radius:50%;pointer-events:none;z-index:999;animation:spark-fly .75s cubic-bezier(.2,.7,.3,1) forwards}
@keyframes spark-fly{to{transform:translate(var(--dx),var(--dy)) scale(0);opacity:0}}

/* Flowing gradient ribbons (background, every page) */
.bg-ribbons{position:fixed;inset:-15% -20%;z-index:-3;overflow:hidden;pointer-events:none}
.bg-ribbons .ribbon{position:absolute;left:-20%;width:150%;border-radius:50%;background:linear-gradient(90deg,transparent 0%,var(--pink) 18%,var(--purple) 38%,var(--cyan) 58%,var(--orange) 78%,transparent 100%);background-size:260% 100%;filter:blur(20px);mix-blend-mode:screen;will-change:transform,background-position}
.bg-ribbons .ribbon:nth-child(1){top:6%;height:100px;opacity:.42;animation:ribbon-flow 9s linear infinite,ribbon-sway-1 16s ease-in-out infinite}
.bg-ribbons .ribbon:nth-child(2){top:30%;height:74px;opacity:.3;animation:ribbon-flow 12s linear infinite reverse,ribbon-sway-2 20s ease-in-out infinite}
.bg-ribbons .ribbon:nth-child(3){top:56%;height:120px;opacity:.34;animation:ribbon-flow 15s linear infinite,ribbon-sway-3 24s ease-in-out infinite reverse}
.bg-ribbons .ribbon:nth-child(4){top:80%;height:64px;opacity:.26;animation:ribbon-flow 10s linear infinite reverse,ribbon-sway-4 18s ease-in-out infinite reverse}
html[data-theme=light] .bg-ribbons .ribbon{opacity:.16;filter:blur(26px)}
@keyframes ribbon-flow{0%{background-position:0% 50%}100%{background-position:260% 50%}}
@keyframes ribbon-sway-1{0%,100%{transform:rotate(-14deg) translateY(0)}50%{transform:rotate(-9deg) translateY(-42px)}}
@keyframes ribbon-sway-2{0%,100%{transform:rotate(9deg) translateY(0)}50%{transform:rotate(14deg) translateY(32px)}}
@keyframes ribbon-sway-3{0%,100%{transform:rotate(-6deg) translateY(0)}50%{transform:rotate(-1deg) translateY(-30px)}}
@keyframes ribbon-sway-4{0%,100%{transform:rotate(16deg) translateY(0)}50%{transform:rotate(21deg) translateY(26px)}}

/* Club-activity ambience: dancers, DJ deck, equalizer, rising notes */
.club-fx{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none}
.dance-row{position:absolute;left:0;right:0;bottom:16px;display:flex;justify-content:center;gap:64px;opacity:.5}
.dance-row span{font-size:2.15rem;display:inline-block;animation:dance-bounce 1.1s ease-in-out infinite}
.dance-row span:nth-child(1){filter:drop-shadow(0 0 14px rgba(255,46,166,.55))}
.dance-row span:nth-child(2){animation-delay:.15s;filter:drop-shadow(0 0 14px rgba(33,212,253,.55))}
.dance-row span:nth-child(3){animation-delay:.3s;filter:drop-shadow(0 0 14px rgba(124,77,255,.55))}
.dance-row span:nth-child(4){animation-delay:.45s;filter:drop-shadow(0 0 14px rgba(255,179,0,.55))}
@keyframes dance-bounce{0%,100%{transform:translateY(0) rotate(0deg)}25%{transform:translateY(-15px) rotate(-7deg)}50%{transform:translateY(0) rotate(0deg)}75%{transform:translateY(-11px) rotate(7deg)}}
.dj-corner{position:absolute;left:26px;bottom:24px;display:flex;align-items:center;gap:11px;opacity:.55}
.dj-corner .vinyl{width:46px;height:46px;border-radius:50%;position:relative;border:3px solid var(--pink);background:repeating-conic-gradient(#0a0a12 0deg 6deg,#26203f 6deg 12deg);box-shadow:0 0 22px rgba(255,46,166,.45);animation:vinyl-spin 2.4s linear infinite}
.dj-corner .vinyl:after{content:"";position:absolute;inset:38%;border-radius:50%;background:var(--bg)}
.dj-corner .headphones{font-size:1.7rem;display:inline-block;animation:dj-nod 1.3s ease-in-out infinite}
@keyframes vinyl-spin{to{transform:rotate(360deg)}}
@keyframes dj-nod{0%,100%{transform:rotate(-9deg)}50%{transform:rotate(9deg)}}
.eq-bars{position:absolute;right:24px;bottom:24px;display:flex;align-items:flex-end;gap:5px;height:46px;opacity:.55}
.eq-bars span{width:6px;border-radius:3px 3px 0 0;background:linear-gradient(to top,var(--purple),var(--pink),var(--orange));animation:eq-bounce 1s ease-in-out infinite;box-shadow:0 0 10px rgba(255,46,166,.3)}
.eq-bars span:nth-child(1){animation-duration:.8s}
.eq-bars span:nth-child(2){animation-duration:1.1s}
.eq-bars span:nth-child(3){animation-duration:.7s}
.eq-bars span:nth-child(4){animation-duration:1.3s}
.eq-bars span:nth-child(5){animation-duration:.9s}
@keyframes eq-bounce{0%,100%{height:8px}50%{height:44px}}
.note-float{position:absolute;bottom:-30px;font-size:1.4rem;opacity:0;animation:note-rise linear infinite}
@keyframes note-rise{0%{transform:translateY(0) translateX(0) rotate(0deg);opacity:0}10%{opacity:.55}88%{opacity:.3}100%{transform:translateY(-112vh) translateX(30px) rotate(25deg);opacity:0}}

@media(max-width:780px){.dance-row{gap:36px;bottom:10px}.dance-row span{font-size:1.5rem}.dj-corner,.eq-bars{display:none}}

@media(prefers-reduced-motion:reduce){
  *{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
  .reveal{opacity:1;transform:none}
  .bg-ribbons,.club-fx{display:none}
}
@media print{.party-lights,.bg-ribbons,.club-fx,.hero-spotlight,.tilt-glare,.party-spark{display:none!important}.reveal{opacity:1!important;transform:none!important}.pass{background:#fff!important}.pass:before{display:none}}
