/* Styles for lucky_shake. */
:root{--pink:#ff4f9a;--purple:#7657ff;--cyan:#38d9ee;--yellow:#ffd84d;--green:#39d98a;--ink:#30204f;--muted:#756a8e;--line:#eadff1;--shadow:0 24px 70px rgba(82,44,119,.18)}*{box-sizing:border-box}body{min-height:100vh;margin:0;color:var(--ink);font-family:"Noto Sans Thai",sans-serif;background:radial-gradient(circle at 5% 5%,#fff0a8,transparent 28rem),radial-gradient(circle at 95% 15%,#c9f7ff,transparent 28rem),linear-gradient(145deg,#fffceb,#fff1fa 50%,#f0ecff);overflow-x:hidden}button,input{font:inherit}button{cursor:pointer}h1,h2,h3,.room-code,.big-number,.lucky-word{font-family:"Mitr","Fredoka",sans-serif}.hidden{display:none!important}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;padding:11px max(14px,calc((100vw - 1200px)/2));background:#fffafde8;border-bottom:1px solid #7657ff15;backdrop-filter:blur(16px)}.brand{display:flex;align-items:center;gap:9px;font:700 1.1rem Fredoka}.brand-icon{width:43px;height:43px;display:grid;place-items:center;border-radius:15px;background:linear-gradient(145deg,var(--pink),var(--purple));font-size:1.3rem}.status{display:flex;align-items:center;gap:8px;padding:8px 11px;border:1px solid var(--line);border-radius:99px;background:white;color:var(--muted);font-size:.74rem;font-weight:800}.dot{width:9px;height:9px;border-radius:50%;background:#ebb52c}.dot.online{background:var(--green)}.dot.error{background:#ff5d6c}.wrap{width:min(1160px,calc(100% - 24px));margin:auto;padding:25px 0 50px}.screen{display:none}.screen.active{display:block;animation:appear .35s ease}@keyframes appear{from{opacity:0;translate:0 10px}}.hero{display:grid;grid-template-columns:1.08fr .92fr;gap:24px;align-items:center;min-height:calc(100vh - 130px)}.eyebrow,.chip{display:inline-flex;padding:7px 11px;border:1px solid var(--line);border-radius:99px;background:white;font-size:.7rem;font-weight:900}.hero h1{margin:16px 0;font-size:clamp(4rem,9vw,7.3rem);line-height:.8;letter-spacing:-.06em}.lucky-gradient{display:block;color:transparent;background:linear-gradient(90deg,var(--pink),var(--purple),#18bad4);-webkit-background-clip:text;background-clip:text}.shake-word{display:block}.lead{color:var(--muted);font-size:clamp(.96rem,2vw,1.12rem);line-height:1.75}.en{display:block;margin-top:3px;font-family:Fredoka;font-size:.72em;opacity:.7}.chips{display:flex;flex-wrap:wrap;gap:7px;margin:18px 0}.role-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px;margin-top:22px}.role-card{padding:21px;border:1px solid var(--line);border-radius:24px;background:#fffffff0;box-shadow:var(--shadow);text-align:left;transition:.2s}.role-card:hover{translate:0 -4px;border-color:var(--pink)}.role-icon{width:52px;height:52px;display:grid;place-items:center;margin-bottom:11px;border-radius:17px;color:white;background:linear-gradient(145deg,var(--pink),var(--purple));font-size:1.3rem}.role-card strong{display:block}.role-card small{display:block;margin-top:5px;color:var(--muted);line-height:1.5}.mascot{display:grid;place-items:center}.phone{width:min(280px,70vw);aspect-ratio:.57;border:12px solid #382555;border-radius:48px;background:linear-gradient(150deg,#ff70b3,#7657ff);box-shadow:0 38px 80px #522c7738;rotate:7deg;display:grid;place-items:center;color:white;text-align:center;animation:phone 2.4s ease-in-out infinite}.phone .emoji{font-size:5rem}.phone strong{font:700 2rem Fredoka}@keyframes phone{48%,52%{rotate:2deg}50%{rotate:12deg}}
.panel{padding:clamp(20px,3.5vw,38px);border:1px solid white;border-radius:30px;background:#fffffff0;box-shadow:var(--shadow)}.setup{width:min(620px,100%);margin:32px auto}.panel-head{text-align:center}.round-icon{width:67px;height:67px;display:grid;place-items:center;margin:0 auto 11px;border-radius:22px;color:white;background:linear-gradient(145deg,var(--pink),var(--purple));font-size:1.7rem}.panel h2{margin:5px 0;font-size:clamp(1.7rem,4vw,2.6rem)}.sub{color:var(--muted);line-height:1.65}.field{display:grid;gap:7px;margin:14px 0;color:#584d70;font-size:.8rem;font-weight:900}.field input{width:100%;padding:14px;border:2px solid var(--line);border-radius:16px;outline:0}.field input:focus{border-color:var(--purple);box-shadow:0 0 0 4px #7657ff18}.room-input{text-align:center;text-transform:uppercase;font:700 1.7rem Fredoka;letter-spacing:.18em}.emoji-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}.emoji-option{position:relative}.emoji-option input{position:absolute;opacity:0}.emoji-option span{display:grid;place-items:center;aspect-ratio:1;border:2px solid var(--line);border-radius:15px;background:white;font-size:1.7rem}.emoji-option input:checked+span{border-color:var(--pink);background:#fff0f7;scale:1.07}.primary,.secondary{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:53px;padding:12px 17px;border-radius:16px;font-weight:900}.primary{border:0;color:white;background:linear-gradient(135deg,var(--pink),var(--purple));box-shadow:0 13px 28px #7657ff3d}.primary:disabled{opacity:.48;filter:grayscale(.5)}.secondary{margin-top:9px;border:2px solid var(--line);color:var(--ink);background:white}.error{min-height:22px;margin-top:7px;color:#d43c55;font-size:.78rem;text-align:center}
.host-layout{display:grid;grid-template-columns:minmax(0,1fr) 315px;gap:17px}.host-main,.side{min-height:680px}.lobby{display:grid;grid-template-columns:245px 1fr;gap:26px;align-items:center}.qr-card{padding:15px;border:1px solid var(--line);border-radius:23px;background:white;text-align:center}.qr-card #qrCode{width:200px;height:200px;display:grid;place-items:center;margin:auto}.qr-card img,.qr-card canvas{max-width:100%}.qr-hint{margin-top:9px;color:var(--muted);font-size:.68rem}.room-code{margin:4px 0;font-size:clamp(2.5rem,7vw,4.7rem);letter-spacing:.12em;color:var(--purple)}.copy-btn{padding:8px 11px;border:1px solid var(--line);border-radius:11px;background:white;font-weight:800}.player-count{display:inline-flex;gap:7px;padding:7px 11px;border-radius:99px;background:#f1edff;color:#6045cb;font-weight:900}.start-area{margin-top:21px}.side-head{display:flex;justify-content:space-between;align-items:center}.badge{padding:5px 9px;border-radius:99px;background:#fff0f7;color:#c32d74;font-weight:900}.player-list{display:grid;gap:8px;margin-top:13px;max-height:580px;overflow:auto}.player-chip{display:flex;align-items:center;gap:9px;padding:9px;border:1px solid var(--line);border-radius:15px;background:white}.avatar{width:42px;height:42px;display:grid;place-items:center;border-radius:13px;background:#fff0f7;font-size:1.45rem}.player-meta{min-width:0;flex:1}.player-meta strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-meta small{color:#29aa70;font-size:.67rem}.shake-count{font:700 .9rem Fredoka;color:var(--purple)}.empty{padding:42px 8px;color:#9b91ad;text-align:center}.game-stage{display:grid;place-items:center;min-height:580px;text-align:center}.big-number{font-size:clamp(7rem,22vw,14rem);line-height:.8;color:var(--pink);text-shadow:0 11px white,0 20px 35px #ff4f9a3d;animation:pop .55s ease}@keyframes pop{60%{scale:1.14}}.stage-icon,.shake-phone{font-size:clamp(5rem,15vw,9rem);animation:vigorous .28s linear infinite}@keyframes vigorous{25%{rotate:-12deg;translate:-8px 0}75%{rotate:12deg;translate:8px 0}}.stage-title{font-size:clamp(2rem,5vw,3.5rem)}.stage-copy{color:var(--muted)}.progress{width:min(500px,90%);height:16px;margin:18px auto;border-radius:99px;background:#eee6f4;overflow:hidden}.progress span{display:block;width:100%;height:100%;background:linear-gradient(90deg,var(--cyan),var(--purple),var(--pink));transform-origin:left}.winner{text-align:center}.winner-medal{font-size:clamp(6rem,18vw,11rem);animation:bounce 1s ease infinite}@keyframes bounce{50%{translate:0 -12px;rotate:5deg}}.lucky-word{font-size:clamp(2.2rem,7vw,5rem);color:#dfa20b;letter-spacing:.08em}.winner-person{font-size:clamp(2.3rem,7vw,4.7rem)}
.player-shell{width:min(620px,100%);margin:25px auto;text-align:center}.player-card{min-height:620px;display:grid;align-content:center}.player-emoji,.result-emoji{font-size:6rem}.sensor-btn{margin:17px 0 7px}.sensor-status{color:var(--muted);font-size:.78rem}.tap-shake{width:min(280px,78vw);aspect-ratio:1;margin:10px auto;border:9px solid #ffffffcc;border-radius:50%;color:white;background:linear-gradient(145deg,var(--pink),var(--purple));box-shadow:0 24px 52px #7657ff55;font-size:2rem;font-weight:900}.tap-shake:active{scale:.94}.my-count{font:700 2.2rem Fredoka;color:var(--purple)}.result-card{padding:20px}.winner-bg{background:radial-gradient(circle,#fffbd0,#fff 62%)}.sorry-bg{background:radial-gradient(circle,#eafcff,#fff 64%)}.result-title{font-size:clamp(2rem,8vw,3.8rem)}.gold{color:#d69800}.toast{position:fixed;z-index:100;left:50%;bottom:22px;translate:-50% 20px;padding:10px 15px;border-radius:13px;color:white;background:#3c2c55;opacity:0;transition:.2s}.toast.show{opacity:1;translate:-50% 0}@media(max-width:900px){.hero{grid-template-columns:1fr}.mascot{display:none}.host-layout{grid-template-columns:1fr}.side{min-height:auto}.player-list{max-height:260px}.lobby{grid-template-columns:1fr;text-align:center}.qr-card{width:235px;margin:auto}}@media(max-width:620px){.wrap{width:calc(100% - 16px);padding-top:12px}.brand>span:last-child{display:none}.hero{min-height:auto}.role-grid{grid-template-columns:1fr}.hero h1{font-size:clamp(4rem,21vw,6.1rem)}.panel{padding:18px;border-radius:23px}.emoji-grid{grid-template-columns:repeat(4,1fr)}.player-card{min-height:calc(100vh - 105px)}.room-code{font-size:3rem}}
.home-btn{display:inline-flex;align-items:center;text-decoration:none;gap:7px;padding:8px 12px;border:1px solid var(--line);border-radius:99px;color:var(--ink);background:white;font-size:.74rem;font-weight:900}.home-btn:hover,.home-btn:focus-visible{border-color:var(--pink);outline:3px solid #ff4f9a18}.top-actions{display:flex;align-items:center;gap:8px}@media(max-width:520px){.home-btn span{display:none}.home-btn{width:39px;height:39px;justify-content:center;padding:0}}
