/* Outdoor blocky garden party, matching the supplied reference. */
#scene{background:#496e33;font-family:'DM Sans',Arial,sans-serif}
.club-backdrop{position:absolute;inset:0;background:#496e33 url('/party-clean.png') center/100% 100% no-repeat}
.grain{opacity:.035}
.scene-header{top:22px;left:390px;right:35px;align-items:flex-start}.live-pill{padding:8px 13px;font-size:14px;letter-spacing:1px;background:#283b2dbb;border-color:#e0c88666;backdrop-filter:blur(4px)}.live-pill i{width:8px;height:8px}.audience{display:none}
.leaderboard,.party-goal{position:absolute;background:linear-gradient(145deg,#294938f2,#19392de8);border:2px solid #acb38177;border-radius:14px;color:#fff4cc;box-shadow:0 5px 15px #0004;text-shadow:0 1px 2px #0005}
.leaderboard{left:30px;top:30px;width:325px;padding:16px 17px}.board-heading{font-size:24px;font-weight:800;border-bottom:1px solid #a8c18744;padding-bottom:10px;margin-bottom:8px}.leaderboard>small{display:block;font-size:12px;color:#b7c5a2;margin-top:10px}.rank-row{display:flex;align-items:center;gap:10px;height:40px;font-size:19px}.rank-row>i{font-size:15px;width:17px;color:#d6c080;font-style:normal}.rank-avatar{width:28px;height:28px;border-radius:50%;background:#9cad8e;object-fit:cover;display:flex;align-items:center;justify-content:center;color:#233e2c;font-size:15px;font-weight:800;border:1px solid #e8dca7}.rank-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rank-row>b{font-size:18px;color:#ffdc7d}
.party-goal{right:32px;top:78px;width:296px;text-align:center;padding:18px 8px}.party-goal>span{display:block;font-size:12px;letter-spacing:1px;color:#cfdaae}.party-goal strong{display:block;font-size:24px;margin:8px 0;color:#ffe8a4}.party-goal strong b{font-size:33px}.party-goal small{font-size:17px;color:#fff0c4}
.hero{top:516px;left:200px;right:200px;width:680px;text-align:center;transform:rotate(3deg);filter:drop-shadow(0 3px 1px #332411)}.overline{font-size:18px;letter-spacing:25px;color:#ffe086}.hero h2{font-family:'Barlow Condensed',Impact,sans-serif;font-size:103px;line-height:.95;margin:0;letter-spacing:1px;font-weight:900;color:#ffe297;text-shadow:0 4px 0 #7b421c,3px 0 0 #7b421c,-3px 0 0 #7b421c}.hero h2 span{font-size:103px;display:inline;color:#ffe297;letter-spacing:1px;text-shadow:inherit}.hero-bottom{font-family:'Barlow Condensed',Impact,sans-serif;font-size:40px;letter-spacing:1px;font-weight:800;color:#b8e795;line-height:1.1;display:block;text-shadow:0 3px 0 #274326}
.now-playing{display:none}.dedication-sign,.welcome-sign{position:absolute;top:804px;background:linear-gradient(135deg,#314933,#253e2e);border:5px solid #cfbb77;border-radius:5px;color:#fff0b5;box-shadow:4px 6px 0 #2c311dbb;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;width:250px;height:167px;padding:15px;transform:rotate(-7deg)}.dedication-sign{left:75px}.welcome-sign{right:63px;transform:rotate(9deg)}.dedication-sign small,.welcome-sign small{font-size:16px;font-weight:700}.dedication-sign strong{font-size:48px;margin:7px 0}.welcome-sign strong{font-size:29px;margin:10px 0;max-width:220px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.dedication-sign span,.welcome-sign span{font-size:15px;color:#d9d9ae}
.stage-title{position:absolute;top:1060px;text-align:center;left:0;right:0;font-family:'Barlow Condensed',Impact,sans-serif;color:#fff1b6;font-size:61px;font-weight:900;letter-spacing:1px;transform:rotate(3deg);text-shadow:0 5px 0 #4e3c19,2px 1px 0 #4e3c19,-2px -1px 0 #4e3c19}.stage-title small{font-size:19px;letter-spacing:4px;margin-top:0;color:#ffe2a0;text-shadow:0 2px 0 #4e3c19}
.person{width:116px;height:215px}.identity{animation-duration:1.4s;filter:drop-shadow(0 2px 2px #15301488)}.avatar{width:36px;height:36px;border:2px solid #ffe2a0;box-shadow:0 2px 5px #0005}.initials{font-size:17px;background:linear-gradient(135deg,#bcce8a,#47633b)}.person-name{display:inline-block;max-width:135px;line-height:17px;font-size:16px;padding:2px 6px;border:1px solid #e4d59066;border-radius:5px;background:#233c29df;margin-top:2px;color:#fff7d8;text-shadow:0 1px 1px #000}.dancer{position:relative;width:106px;height:140px;margin:-1px auto 0;animation:block-bounce .65s ease-in-out infinite alternate;animation-delay:var(--delay);transform-origin:50% 100%}.block-character{position:relative;display:block;width:106px;height:140px;filter:drop-shadow(0 4px 2px #28472455);overflow:visible}.block-arm-left{transform-origin:31px 66px;animation:block-arm .65s ease-in-out infinite alternate;animation-delay:var(--delay)}.block-arm-right{transform-origin:76px 65px;animation:block-arm .65s ease-in-out infinite alternate-reverse;animation-delay:var(--delay)}.block-leg-left{transform-origin:43px 100px;animation:block-step .65s infinite alternate;animation-delay:var(--delay)}.block-leg-right{transform-origin:64px 100px;animation:block-step .65s infinite alternate-reverse;animation-delay:var(--delay)}
.floor-caption{bottom:94px;font-size:22px;font-weight:600;color:#fff1ba;text-shadow:0 2px 4px #18351e}.floor-caption .dot{background:#ffc75b}.scene-bottom{bottom:30px;left:50px;right:50px;display:flex;flex-direction:column;gap:8px;align-items:center;font-size:16px;letter-spacing:0;color:#fff5c2;text-shadow:0 2px 3px #18351e}.scene-bottom>span:first-child{font-size:14px;letter-spacing:2px;font-weight:700;color:#ffe590}.scene-bottom>span:nth-child(2){color:#f8ecc3}
#toast{top:716px;left:280px;right:280px;font-size:20px;font-weight:700;color:#fff1b6;background:#294431df;border:2px solid #c0aa6c;padding:13px;border-radius:8px;box-shadow:0 4px 8px #0003}
#toast{top:290px;left:300px;right:300px;font-size:19px}
#chat-feed{position:absolute;bottom:180px;left:37px;max-width:490px;display:flex;flex-direction:column;gap:12px;pointer-events:none}.chat-message{background:#254b2ad6;border-radius:10px;padding:13px 20px;border:1px solid #dbd4a933;color:#fff4d3;font-size:22px;box-shadow:0 3px 8px #0002}.chat-message strong{font-size:17px;color:#f1d98c;display:block;margin-bottom:4px}
.hero{top:480px}
.hero h2,.hero h2 span{font-size:86px}
.hero{filter:none;top:485px}
.hero h2,.hero h2 span{color:#fff1bf;text-shadow:0 2px 1px #6f471d,0 0 5px #fff3b8,0 0 18px #ffd065aa,0 0 36px #ffad4266}
.hero h2{animation:sign-glow 3.8s ease-in-out infinite alternate}
.hero .overline{color:#fff3c0;text-shadow:0 0 12px #ffd675;letter-spacing:24px}
.hero-bottom{color:#e4f5b9;text-shadow:0 2px 2px #254424,0 0 12px #bfe28277}
.hero{isolation:isolate}
.hero{min-height:158px;display:flex;align-items:center;justify-content:center}
.hero h2{font-size:112px;margin:0}
.led-display{position:absolute;inset:-10px -23px -13px;z-index:-1;overflow:hidden;border:7px solid #273a37;border-bottom:12px solid #172a29;border-radius:13px;background:#081e31;box-shadow:0 5px 0 #091b17,0 9px 18px #09201888,0 0 27px #65ffcb44}
.led-display:before{content:'';position:absolute;inset:-30%;background:linear-gradient(125deg,#10489a,#1a688d 22%,#28449c 40%,#743797 59%,#a33059 77%,#105f77);background-size:240% 160%;animation:display-colors 14s linear infinite;opacity:.9}
.led-display:after{content:'';position:absolute;inset:0;background:radial-gradient(circle,#eaffff66 1px,transparent 1.8px) 0 0/7px 7px,repeating-linear-gradient(0deg,#0003 0 1px,transparent 1px 5px);box-shadow:inset 0 0 35px #0009;pointer-events:none}
.led-bars{position:absolute;inset:0;display:flex;align-items:flex-end;gap:7px;padding:7px 12px;opacity:.3}
.led-bars i{flex:1;height:var(--bar-height);background:linear-gradient(0deg,#8cf6de,#c7e4ff);border-radius:2px 2px 0 0;transform-origin:center bottom;animation:display-bars var(--bar-speed) ease-in-out infinite alternate;animation-delay:var(--bar-delay)}
.hero h2,.hero h2 span{text-shadow:0 3px 2px #12282c,0 0 5px #fff3b877,0 0 18px #ffd06566}
@keyframes display-colors{0%{background-position:0% 50%;filter:hue-rotate(0deg)}50%{background-position:100% 50%;filter:hue-rotate(100deg)}100%{background-position:0% 50%;filter:hue-rotate(360deg)}}
@keyframes display-bars{from{transform:scaleY(.2)}to{transform:scaleY(1)}}
@media(prefers-reduced-motion:reduce){.led-display:before,.led-bars i{animation:none}}
@keyframes sign-glow{from{filter:brightness(1)}to{filter:brightness(1.12)}}
@media(prefers-reduced-motion:reduce){.hero h2{animation:none}}
.dedication-sign strong{font-size:31px;line-height:1.05;max-width:225px;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow-wrap:anywhere}
.dedication-sign,.welcome-sign{background:none;border:0;box-shadow:none;width:250px;height:136px;text-shadow:0 2px 2px #12291c}
.dedication-sign{top:744px;left:75px}.welcome-sign{top:790px;right:64px}
.dedication-sign{isolation:isolate;padding:12px 9px}
.dedication-frame{position:absolute;inset:-12px -10px;z-index:-1;border-radius:11px;border:7px solid #a97939;background:linear-gradient(135deg,#253d35,#102d28 58%,#1b3c31);box-shadow:0 4px 0 #553b21,0 8px 12px #12271988,inset 0 0 0 2px #f4d49266,inset 0 0 24px #061d19,0 0 18px #ffbf4c55}
.dedication-frame:after{content:'';position:absolute;inset:9px;border:1px solid #e2c27366;border-radius:5px;box-shadow:0 0 10px #f7c95f22}
.dedication-frame i{position:absolute;width:10px;height:10px;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(circle at 38% 33%,#fffcea 0%,#fff3b5 34%,#ffd073 65%,#ed9d32 100%);box-shadow:0 0 4px #fff5cc,0 0 10px #ffc651,0 0 19px #ffb52c88;animation:dedication-lights 2.9s ease-in-out infinite;animation-delay:var(--bulb-delay)}
.dedication-sign strong{font-size:38px;color:#fff0b5;letter-spacing:1px;text-shadow:0 2px 1px #122a22,0 0 13px #ffdb8866}
.dedication-sign small{font-size:14px;letter-spacing:1px;color:#e3d5a6}.dedication-sign span{font-size:13px;color:#d5d3ad}
@keyframes dedication-lights{0%,100%{filter:brightness(.8)}40%,65%{filter:brightness(1.35);box-shadow:0 0 5px #fff8df,0 0 14px #ffd373,0 0 24px #ffbc4caa}}
@media(prefers-reduced-motion:reduce){.dedication-frame i{animation:none}}
.dedication-frame{inset:-10px -8px;border:6px solid #243b3a;border-bottom:10px solid #142829;border-radius:9px;background:linear-gradient(135deg,#174b70,#313768 48%,#633256);background-size:220% 150%;overflow:hidden;display:flex;align-items:flex-end;gap:5px;padding:9px;box-shadow:0 4px 0 #0e2521,0 7px 12px #10241d88,0 0 15px #6be2ce44;animation:display-colors 14s linear infinite}
.dedication-frame:after{inset:0;border:0;border-radius:0;background:radial-gradient(circle,#dcfff855 1px,transparent 1.6px) 0 0/5px 5px;box-shadow:inset 0 0 20px #0006}
.dedication-frame i{position:static;display:block;flex:1;width:auto;height:var(--level);border-radius:1px;background:linear-gradient(0deg,#6ae4ca77,#c7efff99);transform:none;box-shadow:none;filter:none;opacity:.35;transform-origin:center bottom;animation:display-bars 1.3s ease-in-out infinite alternate;animation-delay:var(--bar-delay)}
.dedication-sign small{color:#e0f3e6}.dedication-sign strong{font-size:38px;color:#fff6c9;text-shadow:0 2px 3px #102827,0 0 9px #ffe4a266}.dedication-sign span{color:#dce8d7}
.welcome-sign{width:228px;height:122px;right:56px;top:790px;padding:9px 16px;transform:rotate(15deg);gap:0;overflow:hidden;box-sizing:border-box}
.welcome-sign small{font-size:12px;line-height:1.2;letter-spacing:.5px;flex-shrink:0}
.welcome-sign strong{font-size:30px;line-height:1.1;margin:7px 0;max-width:196px;min-height:0;white-space:normal;overflow-wrap:anywhere;text-overflow:clip;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;flex-shrink:1}
.welcome-sign span{font-size:12px;line-height:1.2;max-width:190px;flex-shrink:0}
@media(prefers-reduced-motion:reduce){.dedication-frame,.dedication-frame i{animation:none}}
.led-bars{display:flex}
.dedication-frame{background:linear-gradient(125deg,#10489a,#1a688d 22%,#28449c 40%,#743797 59%,#a33059 77%,#105f77);background-size:240% 160%;animation:display-colors 14s linear infinite}
.dedication-frame:after{background:radial-gradient(circle,#eaffff66 1px,transparent 1.8px) 0 0/7px 7px,repeating-linear-gradient(0deg,#0003 0 1px,transparent 1px 5px)}
@media(prefers-reduced-motion:reduce){.dedication-frame{animation:none}}
.animated-dj{position:absolute;inset:0;width:1080px;height:1920px;pointer-events:none;object-fit:fill}
.donor-empty{font-size:19px;line-height:1.5;color:#e1dab6;margin:17px 3px 13px}
.gift-test{margin-top:9px;width:100%;font-size:11px;background:#342b22;border-color:#69513b;color:#f6d998}
.gift-party .hero{filter:drop-shadow(0 0 14px #ffda6e)}
.dancer{animation-duration:var(--tempo);animation-name:crowd-groove}
.block-character{filter:drop-shadow(0 5px 2px #203d2655)}
.block-arm-left,.block-arm-right,.block-leg-left,.block-leg-right{animation-duration:var(--tempo)}
.block-head{transform-origin:54px 53px;animation:crowd-nod var(--tempo) infinite alternate;animation-delay:var(--delay)}
.dance-wave .block-arm-left{animation-name:crowd-wave}.dance-wave .block-arm-right{animation-name:crowd-reach;animation-direction:alternate-reverse}
.dance-cheer .block-arm-left,.dance-cheer .block-arm-right{animation-name:crowd-cheer}.dance-cheer .block-arm-right{animation-direction:alternate-reverse}
.dance-groove .block-arm-left{animation-name:crowd-reach}.dance-groove .block-arm-right{animation-name:crowd-wave}
.dance-area{position:relative;width:106px;height:140px;margin:-1px auto 0;isolation:isolate}
.dance-area .dancer{margin:0;z-index:1}
.dance-area .block-character{filter:none}
.ground-shadow{position:absolute;left:0;right:0;top:126px;height:25px;z-index:0;pointer-events:none;animation:shadow-weight var(--tempo) ease-in-out infinite alternate;animation-delay:var(--delay);transform-origin:52px 4px}
.ground-shadow i{display:block;position:absolute;mix-blend-mode:multiply}
.contact-shadow{left:29px;top:-2px;width:50px;height:12px;border-radius:50%;background:radial-gradient(ellipse,#182314b8 0%,#21331985 25%,#283f2330 60%,transparent 74%);filter:blur(1.3px)}
.cast-shadow{left:27px;top:0;width:86px;height:28px;border-radius:50%;background:radial-gradient(ellipse at 32% 40%,#22331d88 0%,#29442066 28%,#2c4b272e 55%,transparent 75%);transform:rotate(23deg) skewX(-22deg);transform-origin:14px 3px;filter:blur(2px);animation:shadow-sway var(--tempo) ease-in-out infinite alternate;animation-delay:var(--delay)}
.cast-person{position:absolute;left:13px;top:-130px;width:106px;height:140px;transform:translate(7px,10px) skewX(-38deg) scaleY(.24) rotate(12deg);transform-origin:50% 100%;opacity:.25;filter:brightness(0) blur(.8px);pointer-events:none}
.speech-bubble{position:absolute;left:50%;bottom:calc(100% + 9px);width:max-content;max-width:270px;min-width:65px;padding:12px 17px;border:2px solid #d1bc7d;border-radius:15px;background:#fff8df;color:#263f2d;font-size:27px;line-height:1.25;font-weight:600;text-align:center;white-space:pre-wrap;overflow-wrap:anywhere;box-shadow:0 5px 12px #14271655;opacity:0;visibility:hidden;transform:translateX(-50%) scale(var(--bubble-scale,1));transform-origin:50% 100%;transition:opacity .2s,visibility .2s;pointer-events:none;text-shadow:none}
.speech-bubble:after{content:'';position:absolute;left:calc(50% - 7px);bottom:-9px;width:14px;height:14px;background:#fff8df;border-right:2px solid #d1bc7d;border-bottom:2px solid #d1bc7d;transform:rotate(45deg)}
.speaking .speech-bubble{opacity:1;visibility:visible}
@keyframes shadow-weight{0%{opacity:.95;transform:scale(1)}50%{opacity:.73;transform:scale(1.06,.95)}100%{opacity:.92;transform:scale(.98,1)}}
@keyframes shadow-sway{from{transform:rotate(18deg) skewX(-22deg) scaleX(.97)}to{transform:rotate(27deg) skewX(-22deg) scaleX(1.07)}}
@media(prefers-reduced-motion:reduce){.ground-shadow,.cast-shadow{animation:none!important}}
@keyframes crowd-groove{0%{transform:translate(-2px,0) rotate(-3deg)}50%{transform:translateY(-5px) rotate(0deg)}100%{transform:translate(2px,0) rotate(3deg)}}
@keyframes crowd-wave{0%{transform:rotate(65deg)}100%{transform:rotate(142deg)}}
@keyframes crowd-reach{0%{transform:rotate(-38deg)}100%{transform:rotate(24deg)}}
@keyframes crowd-cheer{0%{transform:rotate(100deg)}100%{transform:rotate(155deg)}}
@keyframes crowd-nod{0%{transform:rotate(-3deg)}100%{transform:rotate(3deg) translateY(1px)}}
.natural-character .block-arm-left{transform-origin:41px 60px}.natural-character .block-arm-right{transform-origin:67px 60px}
.natural-character .block-leg-left{transform-origin:46px 91px}.natural-character .block-leg-right{transform-origin:61px 91px}
.natural-character .block-head{transform-origin:54px 48px}
.dance-wave .natural-character .block-arm-right{animation-name:natural-right-groove}
.dance-groove .natural-character .block-arm-right{animation-name:natural-right-wave}
.dance-cheer .natural-character .block-arm-right{animation-name:natural-right-cheer}
@keyframes natural-right-groove{from{transform:rotate(-24deg)}to{transform:rotate(38deg)}}
@keyframes natural-right-wave{from{transform:rotate(-65deg)}to{transform:rotate(-130deg)}}
@keyframes natural-right-cheer{from{transform:rotate(-100deg)}to{transform:rotate(-145deg)}}
@keyframes block-bounce{from{transform:translateY(0) rotate(-2deg)}to{transform:translateY(-5px) rotate(2deg)}}@keyframes block-arm{from{transform:rotate(-18deg)}to{transform:rotate(34deg)}}@keyframes block-step{from{transform:rotate(-7deg)}to{transform:rotate(7deg)}}
@media(prefers-reduced-motion:reduce){.dancer,.block-arm-left,.block-arm-right,.block-leg-left,.block-leg-right{animation:none!important}}
