:root{--ink:#251554;--purple:#6d48db;--pink:#ed3f91;--teal:#17c9c3;--cream:#fffaf1;--gold:#ffd64b}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:"DM Sans",sans-serif;color:var(--ink)}button,input{font:inherit}button,a{touch-action:manipulation}.play-page{min-height:100vh;background:radial-gradient(circle at 15% 20%,#fff 0 3%,transparent 21%),linear-gradient(135deg,#fff9ee,#f7efff 55%,#eafdfb);overflow-x:hidden}
.play-shell{min-height:100vh;position:relative;max-width:1500px;margin:auto;padding:28px 5vw}.play-shell:before,.play-shell:after{content:"";position:absolute;border-radius:50%;filter:blur(1px);opacity:.55;z-index:-1}.play-shell:before{width:300px;height:300px;background:#ffd8ea;top:-120px;right:25%}.play-shell:after{width:400px;height:400px;background:#c9f5ef;bottom:-190px;left:-140px}
.play-header{display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:800;letter-spacing:.14em}.spark{color:var(--pink);font-size:20px}.admin-link,.back-link,.preview-link{color:var(--purple);text-decoration:none;font-weight:800;letter-spacing:0}.admin-link{border:1px solid #ded5ef;border-radius:999px;padding:9px 15px;background:#ffffffaa}
.hero-copy{position:absolute;left:5vw;top:25%;width:35%;z-index:3}.eyebrow{font-size:12px;letter-spacing:.18em;color:var(--pink);font-weight:800;margin:0 0 12px}.hero-copy h1{font:800 clamp(42px,5vw,78px)/.98 "Sora";margin:0;letter-spacing:-.055em}.hero-copy h1 span{color:var(--purple)}.hero-copy>p:last-child{font-size:17px;line-height:1.6;max-width:440px;color:#6c6185}
.machine-zone{position:relative;width:53%;min-height:760px;margin:25px 2% 0 auto;display:flex;justify-content:center;align-items:center}.orbit{position:absolute;border:2px dashed #d9cdec;border-radius:50%;opacity:.65}.orbit-one{width:690px;height:690px}.orbit-two{width:570px;height:570px;border-style:solid;border-color:#e8def4}.machine{position:relative;width:390px;filter:drop-shadow(0 28px 28px #43217a2c);z-index:2;--shake:4px}.machine-ear{position:absolute;top:165px;width:52px;height:115px;background:#8063db;border:9px solid #4b298e;z-index:-1}.machine-ear.left{left:-36px;border-radius:30px 0 0 30px}.machine-ear.right{right:-36px;border-radius:0 30px 30px 0}.machine-top{height:430px;border:13px solid #512a9b;border-radius:190px 190px 38px 38px;background:linear-gradient(#7757d3,#6441bf);padding:42px 25px 23px}.machine-sign{position:absolute;top:9px;left:86px;width:218px;background:#fff;color:#6b42c3;border:5px solid #512a9b;text-align:center;border-radius:20px;padding:8px 0 6px;font:800 15px/1 "Sora";letter-spacing:.04em;z-index:4;box-shadow:0 6px 0 #3f1b82}.machine-sign small{display:block;font-size:9px;color:var(--pink);margin-top:4px;letter-spacing:.2em}.glass{height:100%;border:8px solid #fff;border-radius:140px 140px 32px 32px;background:linear-gradient(145deg,#d7fbff99,#9ee5e699),radial-gradient(circle,#fff 0 3%,transparent 4%);box-shadow:inset 0 -25px 30px #39799d35;position:relative;overflow:hidden}.shine{position:absolute;left:32px;top:30px;width:38px;height:160px;border-radius:50%;background:#ffffff75;transform:rotate(20deg)}
.capsule{position:absolute;width:114px;height:114px;border-radius:50%;background:linear-gradient(145deg,#fff,#ffd4ea);border:5px solid #fff;box-shadow:0 7px 0 #4a49814a;overflow:hidden;display:flex;align-items:center;justify-content:center;transform:translate(var(--roll-x,0),var(--roll-y,0)) rotate(calc(var(--base-r,0deg) + var(--roll-r,0deg)));transition:transform .24s cubic-bezier(.25,.8,.35,1)}.capsule img{width:90%;height:90%;object-fit:contain}.cap-0{left:32px;top:72px;--base-r:-10deg}.cap-1{right:27px;top:60px;--base-r:12deg;background:#d7fff0}.cap-2{left:96px;top:160px;background:#fff0d0}.cap-3{left:18px;bottom:9px;background:#d6f2ff}.cap-4{right:20px;bottom:12px;background:#ffe7cc}
.machine-base{height:225px;margin-top:-17px;border:13px solid #512a9b;border-radius:35px 35px 68px 68px;background:linear-gradient(145deg,#fc67aa,#e9448d);position:relative;box-shadow:inset 0 -20px 0 #d62f78}.knob{position:absolute;left:50%;top:34px;transform:translateX(-50%);width:128px;height:128px;border-radius:50%;border:10px solid #f9d23e;background:linear-gradient(145deg,#fff77b,#ffc52f);box-shadow:0 10px 0 #ad2b68,0 14px 15px #52194e55;cursor:pointer;color:#6b3a9f;transition:.2s}.knob:hover{transform:translateX(-50%) scale(1.05)}.knob-star{font-size:56px;line-height:1;display:block;text-shadow:0 3px #fff}.knob-text{font-size:11px;font-weight:900}.coin-slot{position:absolute;left:28px;top:55px;color:white;text-align:center;font-size:8px;font-weight:800}.coin-slot i{display:block;width:16px;height:48px;background:#4e267f;border:5px solid #fff;border-radius:9px;margin:auto auto 5px}.chute{position:absolute;right:25px;bottom:27px;text-align:center;color:#fff;font-size:8px;font-weight:900}.chute-door{width:84px;height:70px;border:8px solid #512a9b;border-radius:14px 14px 28px 28px;background:#2e195c;box-shadow:inset 0 8px 0 #160d33;margin-bottom:4px}.play-hint{position:absolute;bottom:98px;z-index:5;isolation:isolate;width:max-content;min-width:210px;max-width:290px;margin:0;padding:13px 19px;background:#fff;border:2px solid #7a55cf;border-radius:17px;font-size:15px;font-weight:800;line-height:1.3;color:#6c4ab5;transform:translateX(-50%) rotate(-3deg);box-shadow:7px 8px 0 #f3bdd9;white-space:normal;transition:left .45s cubic-bezier(.2,.8,.3,1)}.play-hint:before{content:"";position:absolute;z-index:-1;left:calc(50% - 10px);bottom:-11px;width:21px;height:21px;background:#fff;border-left:2px solid #7a55cf;border-bottom:2px solid #7a55cf;transform:rotate(-45deg);transform-origin:center}.play-hint.bubble-pop{animation:bubblePop .48s cubic-bezier(.2,1.5,.4,1)}.play-hint span{color:var(--pink);font-size:22px;display:inline-block;margin-left:3px;animation:hintHop 1.1s ease-in-out infinite alternate}
.character-strip{position:absolute;left:5vw;bottom:7%;display:flex;gap:12px;z-index:6}.mini-character{width:72px;text-align:center;font-size:10px;font-weight:800;color:#675b7d;transition:transform .35s,filter .35s}.mini-character img{width:66px;height:66px;object-fit:contain;border-radius:50%;background:#fff;border:3px solid var(--accent);display:block;margin-bottom:4px;box-shadow:0 6px 14px #2a15481f;transition:box-shadow .35s}.mini-character.is-speaking{transform:translateY(-9px) rotate(-3deg);filter:saturate(1.2)}.mini-character.is-speaking img{box-shadow:0 0 0 5px #fff,0 0 0 8px var(--accent),0 11px 24px #2a15483d;animation:speakerBob .75s ease-in-out infinite alternate}
.machine.is-playing{animation:machineShake .15s linear infinite}.machine.is-playing .capsule{box-shadow:0 9px 0 #4a49814a,0 0 16px #fff8}.machine.is-playing .knob{animation:turnKnob .5s linear infinite}.machine.is-dropping .chute-door{animation:doorDrop .55s ease}.machine.is-dropping .capsule:last-child{animation:dropBall .65s ease-in forwards}
.machine.is-playing .capsule.fakeout{z-index:8;animation:fakeoutPop .45s ease both;background:#fff;box-shadow:0 0 0 8px #ffd84d,0 0 45px #fff}
@keyframes machineShake{50%{transform:translate(var(--shake),calc(var(--shake) * -1)) rotate(.5deg)}}@keyframes fakeoutPop{50%{transform:scale(1.32) rotate(-8deg)}}@keyframes turnKnob{to{transform:translateX(-50%) rotate(360deg)}}@keyframes doorDrop{50%{transform:translateY(8px);background:#140827}}@keyframes dropBall{to{transform:translate(20px,300px) scale(.4);opacity:0}}
.reveal-overlay{position:fixed;inset:0;z-index:20;background:#2c176eea;display:grid;place-items:center;opacity:0;pointer-events:none;transition:.35s;overflow:hidden}.reveal-overlay.visible{opacity:1;pointer-events:auto}.rays{position:absolute;width:1100px;height:1100px;background:repeating-conic-gradient(#ffffff18 0 10deg,transparent 10deg 23deg);animation:raySpin 18s linear infinite}.reveal-card{position:relative;text-align:center;color:white;transform:scale(.7) translateY(70px);transition:.5s cubic-bezier(.2,1.6,.4,1);z-index:2}.visible .reveal-card{transform:scale(1) translateY(0)}.close-reveal{position:absolute;right:-40px;top:-20px;border:0;background:#ffffff22;color:#fff;border-radius:50%;width:42px;height:42px;font-size:30px;cursor:pointer}.reveal-kicker{position:relative;z-index:5;display:inline-block;max-width:min(80vw,430px);margin:0 auto 24px!important;padding:10px 20px;background:#ffd84d;border:3px solid #fff;border-radius:7px;color:#4f287e;text-transform:uppercase;letter-spacing:.14em;font-size:12px;font-weight:900;line-height:1.3;transform:rotate(-3deg);box-shadow:7px 8px 0 #ed3f91}.reveal-kicker:after{content:"";position:absolute;right:-12px;bottom:-10px;width:25px;height:22px;background:#ffd84d;clip-path:polygon(0 0,100% 100%,0 72%);transform:rotate(8deg)}.prize-bubble{position:relative;z-index:2;width:min(310px,70vw);height:min(310px,70vw);border-radius:50%;margin:0 auto 15px;background:radial-gradient(circle,#fff 0 52%,var(--prize-accent) 53% 59%,#fff 60%);display:grid;place-items:center;box-shadow:0 0 70px #fff6}.prize-bubble img{width:88%;height:88%;object-fit:contain;animation:prizeBounce 1.2s ease-in-out infinite alternate}.reveal-card h2{font:800 clamp(42px,7vw,76px)/1 "Sora";margin:10px 0 4px}.reveal-card>p#prizeTagline{margin:0 0 22px;font-size:20px;color:#d9d0f9}.again-button,.primary-button{border:0;border-radius:999px;padding:14px 25px;background:linear-gradient(135deg,#ffd84d,#ffb937);color:#4f287e;font-weight:900;cursor:pointer;box-shadow:0 8px 0 #c52869}.again-button:active,.primary-button:active{transform:translateY(4px);box-shadow:0 4px 0 #c52869}.confetti-layer i{position:absolute;top:-20px;width:10px;height:18px;animation:confettiFall 2s linear forwards}.visible .confetti-layer i{display:block}@keyframes bubblePop{0%{opacity:0;transform:translateX(-50%) translateY(15px) scale(.75) rotate(-8deg)}100%{opacity:1;transform:translateX(-50%) translateY(0) scale(1) rotate(-3deg)}}@keyframes speakerBob{to{transform:translateY(-4px) rotate(4deg)}}@keyframes hintHop{to{transform:translate(3px,-4px) rotate(8deg)}}@keyframes raySpin{to{transform:rotate(360deg)}}@keyframes prizeBounce{to{transform:translateY(-10px) rotate(3deg)}}@keyframes confettiFall{to{top:110%;transform:rotate(800deg)}}
.admin-page{background:#f7f4fb;min-height:100vh}.admin-header{height:76px;background:#fff;border-bottom:1px solid #e5dff0;display:flex;align-items:center;justify-content:space-between;padding:0 max(4vw,24px);position:sticky;top:0;z-index:10}.brand{display:flex;gap:10px;align-items:center;text-decoration:none;color:var(--ink);font:800 13px/1 "Sora"}.brand b{display:grid;place-items:center;width:39px;height:39px;border-radius:12px;background:var(--purple);color:#ffd84d;font-size:22px}.brand small{display:block;color:#9b90ae;font:700 8px/1.6 "DM Sans";letter-spacing:.13em}.admin-header>div{display:flex;gap:18px;align-items:center}.inline-form{display:inline}.text-button{border:0;background:none;color:#8e829f;font-weight:700;cursor:pointer}.dashboard{max-width:1240px;margin:0 auto;padding:50px 24px}.dashboard-intro{display:flex;justify-content:space-between;align-items:end;margin-bottom:32px}.dashboard-intro h1{font:800 42px/1 "Sora";letter-spacing:-.04em;margin:0 0 10px}.dashboard-intro p{color:#7b708c;margin:0}.status-pill{background:#e7faf4;border:1px solid #bcebdc;color:#18815f;border-radius:999px;padding:9px 14px;font-size:12px;font-weight:800}.status-pill i{display:inline-block;width:8px;height:8px;background:#21bd87;border-radius:50%;margin-right:6px}.panel{background:#fff;border:1px solid #e4deed;border-radius:24px;padding:28px;margin-bottom:24px;box-shadow:0 12px 35px #40216f0a}.panel-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.panel-title>div{display:flex;align-items:center;gap:12px}.panel-title h2{font:800 22px "Sora";margin:0}.panel-title p{font-size:13px;color:#8c819c}.step{display:grid;place-items:center;width:35px;height:35px;border-radius:10px;background:#f0ebfa;color:var(--purple);font-weight:900;font-size:11px}.prize-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:14px}.prize-admin-card{border:2px solid #eee9f3;border-radius:18px;padding:12px;text-align:center;transition:.2s;position:relative}.prize-admin-card.is-forced{border-color:#f1ba26;background:#fffaf0}.prize-admin-card.is-omitted{opacity:.58;filter:grayscale(.7)}.admin-character{height:150px;border-radius:13px;background:linear-gradient(145deg,#f7f2fb,#eefaf8);position:relative;display:grid;place-items:center}.admin-character img{width:125px;height:125px;object-fit:contain}.state-badge{position:absolute;top:8px;left:8px;background:#fff;border:1px solid #e5deed;border-radius:999px;padding:4px 7px;font-size:7px;font-weight:900;letter-spacing:.08em}.is-forced .state-badge{background:#fff0b7;color:#8c5c00}.is-omitted .state-badge{background:#493e5b;color:#fff}.prize-admin-card h3{font:800 16px "Sora";margin:12px 0 2px}.prize-admin-card>p{font-size:11px;color:var(--accent);font-weight:800;margin:0 0 12px}.admin-actions{display:grid;gap:7px}.admin-actions form{margin:0}.toggle-btn{width:100%;border:1px solid #ded7e7;background:#fff;border-radius:9px;padding:8px 3px;font-size:10px;font-weight:800;color:#6f637f;cursor:pointer}.toggle-btn.force.active{background:#ffd84d;border-color:#e0ae1f;color:#694411}.toggle-btn.omit.active{background:#433853;color:#fff}.logic-note{background:#f7f3fc;border-radius:12px;padding:11px 14px;font-size:11px;color:#7f728f;margin:18px 0 0}.notice{padding:12px 18px;border-radius:12px;margin-bottom:18px;font-weight:700}.notice.error{background:#ffe5e9;color:#a12843}.notice.success{background:#def7ef;color:#197257}
.settings-form{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.settings-form>label{border:1px solid #e8e2ee;border-radius:15px;padding:16px;display:grid;grid-template-columns:1fr auto;gap:12px}.settings-form label span b,.settings-form label span small{display:block}.settings-form label span small{font-size:11px;color:#94899f;margin-top:4px}.settings-form output{color:var(--purple);font-weight:900}.settings-form input[type=range]{grid-column:1/-1;width:100%;accent-color:var(--purple)}.switches{grid-column:1/3;display:flex;align-items:center;gap:18px}.switches label{display:flex;align-items:center;gap:8px;font-size:12px}.switches input{accent-color:var(--purple)}.settings-form .primary-button{justify-self:end;align-self:center;box-shadow:none;background:var(--purple);color:#fff}.auth-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 20% 20%,#ffe0ee,transparent 28%),radial-gradient(circle at 80% 80%,#c6f7ef,transparent 30%)}.auth-shell>.back-link{position:absolute;top:28px;left:28px}.login-card{width:min(430px,100%);background:#fff;border-radius:28px;padding:40px;box-shadow:0 25px 70px #3b186b22;text-align:center}.login-icon{width:70px;height:70px;margin:0 auto 20px;border-radius:22px;background:var(--purple);color:#ffd84d;display:grid;place-items:center;font-size:40px;transform:rotate(-6deg)}.login-card h1{font:800 34px "Sora";margin:0 0 8px}.login-card>p:not(.eyebrow){color:#82768f}.form-stack{display:grid;gap:14px;text-align:left;margin-top:26px}.form-stack>label:not(.check-row){font-size:12px;font-weight:800}.form-stack input[type=text],.form-stack input[type=password]{display:block;width:100%;margin-top:6px;padding:13px;border:1px solid #ded6e7;border-radius:11px;outline:none}.form-stack input:focus{border-color:var(--purple);box-shadow:0 0 0 3px #6d48db1c}.check-row{font-size:12px;color:#74687f}.form-stack .primary-button{box-shadow:none;background:var(--purple);color:#fff}.validation{color:#b72a4e;font-size:12px}
.user-management{display:grid;grid-template-columns:1fr 2fr;gap:28px}.user-list{display:grid;align-content:start;gap:9px}.user-row{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid #e8e2ee;border-radius:12px}.user-avatar{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:#eee8fa;color:var(--purple);font-weight:900}.user-row b,.user-row small{display:block}.user-row small{color:#8f839c;font-size:10px;margin-top:2px}.create-user-form{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;align-items:end}.create-user-form label{font-size:11px;font-weight:800}.create-user-form input{display:block;width:100%;margin-top:6px;padding:11px;border:1px solid #ded6e7;border-radius:9px}.create-user-form .primary-button{grid-column:1/-1;box-shadow:none;background:var(--purple);color:#fff;justify-self:end}
.cms-form{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.cms-form label{font-size:11px;font-weight:800;color:#5e526d}.cms-form label.wide{grid-column:span 2}.cms-form input,.cms-form textarea{display:block;width:100%;margin-top:6px;padding:11px 12px;border:1px solid #ded6e7;border-radius:9px;color:var(--ink);resize:vertical}.cms-form input:focus,.cms-form textarea:focus{outline:0;border-color:var(--purple);box-shadow:0 0 0 3px #6d48db1c}.cms-form .primary-button{grid-column:1/-1;justify-self:end;box-shadow:none;background:var(--purple);color:#fff}
@media(max-width:1000px){.prize-grid{grid-template-columns:repeat(3,1fr)}.hero-copy{position:relative;left:auto;top:auto;width:100%;text-align:center;margin:55px auto 0}.hero-copy>p:last-child{margin:15px auto}.machine-zone{width:100%;margin:0;min-height:700px}.character-strip{position:relative;left:auto;bottom:auto;justify-content:center}.settings-form{grid-template-columns:1fr}.switches{grid-column:auto}.settings-form .primary-button{justify-self:stretch}.dashboard-intro,.panel-title{align-items:flex-start;gap:20px}.panel-title{flex-direction:column}.user-management{grid-template-columns:1fr}.create-user-form,.cms-form{grid-template-columns:1fr}.cms-form label.wide{grid-column:auto}}
@media(max-width:650px){.play-shell{padding:20px 14px}.hero-copy h1{font-size:42px}.machine-zone{transform:scale(.82);margin:-55px 0;min-height:700px}.character-strip{position:relative;left:auto;bottom:auto;overflow:visible;justify-content:flex-start;padding:125px 10px 10px;max-width:100%}.play-hint{bottom:92px;width:max-content;min-width:190px;max-width:78vw;text-align:center}.prize-grid{grid-template-columns:1fr 1fr}.dashboard{padding:32px 14px}.dashboard-intro{display:block}.status-pill{display:inline-block;margin-top:18px}.panel{padding:18px}.panel-title p{margin:0}.admin-header{padding:0 14px}.preview-link{display:none}.settings-form{display:block}.settings-form>label{margin-bottom:12px}.switches{margin:18px 0}.prize-admin-card{padding:8px}.admin-character{height:120px}.admin-character img{width:100px;height:100px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
