:root{--ink:#2b2433;--ink-soft:#6b6275;--paper:#fffaf1;--panel:#fffaf1f0;--accent:#ff6f3c;--accent-dark:#d94f1f;--shadow:0 10px 30px #3c28142e;color:var(--ink);font-family:Fredoka,ui-rounded,SF Pro Rounded,system-ui,sans-serif}*{box-sizing:border-box}html,body{background:#cfe6ea;height:100%;margin:0;overflow:hidden}#app{-webkit-user-select:none;user-select:none;position:fixed;inset:0}#c{width:100%;height:100%;display:block}button{font:inherit;cursor:pointer}.hidden{display:none!important}#hud{pointer-events:none;position:absolute;inset:0}#cards{gap:10px;display:flex;position:absolute;top:14px;left:50%;transform:translate(-50%)}.card{background:var(--panel);box-shadow:var(--shadow);border:3px solid #0000;border-radius:18px;align-items:center;gap:10px;min-width:150px;padding:7px 14px 7px 8px;transition:transform .2s,border-color .2s;display:flex}.card.holder{border-color:var(--pc);transform:translateY(3px)scale(1.04)}.card .dot{background:var(--pc);border-radius:50%;place-items:center;width:34px;height:34px;font-size:18px;display:grid;box-shadow:inset 0 -4px #00000026}.card .who{flex-direction:column;line-height:1.05;display:flex}.card .role{color:var(--ink-soft);text-transform:uppercase;letter-spacing:.06em;font-size:11px}.card .cups{align-items:flex-end;gap:1px;min-height:26px;margin-left:auto;display:flex}.card .cups .emptyCup{opacity:.8}.card .n{text-align:right;min-width:14px;margin-left:4px;font-size:20px;font-weight:700}.card.bump{animation:.4s bump}@keyframes bump{40%{transform:scale(1.12)}}#topRight{pointer-events:auto;gap:8px;display:flex;position:absolute;top:14px;right:14px}.iconBtn{background:var(--panel);width:42px;height:42px;box-shadow:var(--shadow);border:none;border-radius:14px;font-size:18px}#hint{background:var(--panel);box-shadow:var(--shadow);white-space:nowrap;text-overflow:ellipsis;border-radius:999px;max-width:calc(100vw - 32px);padding:10px 20px;font-size:17px;font-weight:500;position:absolute;bottom:18px;left:50%;overflow:hidden;transform:translate(-50%)}#hint:empty{display:none}#hint b{color:var(--hc,var(--accent))}kbd{text-align:center;min-width:1.6em;color:var(--ink);background:#fff;border:2px solid #e2d8ca;border-bottom-width:4px;border-radius:7px;margin:0 1px;padding:1px 6px;font:600 13px Fredoka,system-ui;display:inline-block}#labels,#pops{pointer-events:none;position:absolute;inset:0}.tag{white-space:nowrap;background:var(--pc);color:#fff;text-shadow:0 1px #00000040;border-radius:999px;padding:2px 10px;font-size:13px;font-weight:600;position:absolute;transform:translate(-50%);box-shadow:0 3px #00000026}.arrow{color:var(--pc);filter:drop-shadow(0 2px #00000040);-webkit-text-stroke:2px #fff;font-size:34px;line-height:1;animation:.6s ease-in-out infinite alternate arrowBob;position:absolute;transform:translate(-50%,-100%)}@keyframes arrowBob{to{margin-top:-10px}}.pop{color:var(--pc,#fff);white-space:nowrap;-webkit-text-stroke:5px #fff;paint-order:stroke fill;font-size:26px;font-weight:700;animation:1.2s ease-out forwards pop;position:absolute;transform:translate(-50%,-50%)}.pop.small{-webkit-text-stroke-width:4px;font-size:18px}@keyframes pop{0%{opacity:0;transform:translate(-50%,-30%)scale(.3)}15%{opacity:1;transform:translate(-50%,-60%)scale(1.15)}30%{transform:translate(-50%,-60%)scale(1)}80%{opacity:1}to{opacity:0;transform:translate(-50%,-140%)scale(1)}}#banner{color:var(--bc,var(--accent));pointer-events:none;-webkit-text-stroke:9px #fff;paint-order:stroke fill;opacity:0;white-space:nowrap;font-size:56px;font-weight:700;position:absolute;top:22%;left:50%;transform:translate(-50%,-50%)}#banner.show{animation:1.3s ease-out forwards bannerIn}@keyframes bannerIn{0%{opacity:0;transform:translate(-50%,-50%)scale(.4)}18%{opacity:1;transform:translate(-50%,-50%)scale(1.1)}30%{transform:translate(-50%,-50%)scale(1)}80%{opacity:1}to{opacity:0;transform:translate(-50%,-70%)}}#shout{pointer-events:none;opacity:0;z-index:5;position:absolute;top:30%;left:50%;transform:translate(-50%,-100%)}#shout span{white-space:nowrap;color:var(--sc,var(--accent));border:5px solid var(--sc,var(--accent));background:#fff;border-radius:26px;padding:8px 22px 10px;font-size:40px;font-weight:700;display:inline-block;position:relative;box-shadow:0 8px #0000001f}#shout span:after{content:"";border:13px solid #0000;border-top:16px solid var(--sc,var(--accent));border-bottom:0;position:absolute;bottom:-19px;left:50%;transform:translate(-50%)}#shout.show{animation:1.6s cubic-bezier(.2,.9,.3,1.2) forwards shoutIn}#shout.show span{animation:.16s linear 7 shoutWiggle}@keyframes shoutIn{0%{opacity:0;transform:translate(-50%,-60%)scale(.2)rotate(-10deg)}12%{opacity:1;transform:translate(-50%,-100%)scale(1.15)rotate(3deg)}24%{transform:translate(-50%,-100%)scale(1)rotate(-2deg)}80%{opacity:1;transform:translate(-50%,-110%)scale(1)rotate(-2deg)}to{opacity:0;transform:translate(-50%,-140%)scale(1.05)rotate(-2deg)}}@keyframes shoutWiggle{50%{transform:rotate(2deg)translateY(-3px)}}.overlay{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:radial-gradient(#fff5e140,#3c281e59);place-items:center;padding:16px;display:grid;position:absolute;inset:0;overflow-y:auto}.panel{background:var(--panel);border-radius:30px;width:100%;max-width:880px;padding:28px 34px 30px;box-shadow:0 20px 60px #3c28144d}.logo{text-align:center;margin:0;line-height:.9}.logo span{-webkit-text-stroke:10px #fff;paint-order:stroke fill;filter:drop-shadow(0 6px #0000001f);font-weight:700;display:block}.logo .l1{color:#1fb5a8;font-size:46px;transform:rotate(-3deg)}.logo .l2{color:var(--accent);font-size:74px;animation:2.4s ease-in-out infinite logoBounce;transform:rotate(2deg)}@keyframes logoBounce{50%{transform:rotate(-1deg)scale(1.04)}}.tagline{text-align:center;color:var(--ink-soft);margin:10px 0 18px;font-size:17px}.menuGrid{grid-template-columns:1fr 1.15fr;gap:26px;display:grid}.menuGrid h3{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);margin:0 0 10px;font-size:15px}.seg{background:#efe6d8;border-radius:14px;margin-bottom:12px;padding:4px;display:inline-flex}.seg button{width:48px;height:36px;color:var(--ink-soft);background:0 0;border:none;border-radius:10px;font-size:18px;font-weight:600}.seg button.on{color:var(--ink);background:#fff;box-shadow:0 2px 6px #0000001a}.slot{align-items:center;gap:10px;margin-bottom:8px;display:flex}.slot .dot{background:var(--pc);border-radius:50%;width:30px;height:30px;box-shadow:inset 0 -4px #00000026}.slot .nm{width:70px;font-weight:600}.slot button{text-align:left;background:#fff;border:2px solid #e6dccd;border-radius:12px;flex:1;padding:6px 12px;font-size:15px}.slot button.human{border-color:var(--pc)}.small{color:var(--ink-soft);margin:6px 0 0;font-size:13px}.rules{margin:0 0 14px;padding-left:20px;font-size:15.5px;line-height:1.45}.rules li{margin-bottom:4px}.keys{color:var(--ink-soft);gap:6px;font-size:14px;display:grid}.big{color:#fff;background:var(--accent);box-shadow:0 6px 0 var(--accent-dark);border:none;border-radius:18px;margin:22px auto 0;padding:14px 44px;font-size:24px;font-weight:700;transition:transform .1s;display:block}.big:hover{transform:translateY(-2px)}.big:active{box-shadow:0 3px 0 var(--accent-dark);transform:translateY(3px)}.ghost{background:#fff;border:2px solid #e2d8ca;border-radius:16px;margin-top:22px;padding:12px 26px;font-size:18px;font-weight:600}.resultPanel{text-align:center;max-width:520px}.trophy{font-size:64px;animation:1.4s ease-in-out infinite logoBounce}#winTitle{color:var(--wc);-webkit-text-stroke:8px #fff;paint-order:stroke fill;margin:4px 0;font-size:44px}#winSub{color:var(--ink-soft);margin:0 0 14px}#stats{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.stat{background:#fff;border-radius:14px;min-width:84px;padding:8px 12px;box-shadow:0 2px 6px #0000000f}.stat b{font-size:24px;display:block}.stat span{color:var(--ink-soft);text-transform:uppercase;letter-spacing:.05em;font-size:12px}.btnRow{justify-content:center;align-items:center;gap:12px;display:flex}.btnRow .big{margin:22px 0 0}@media (width<=760px){.menuGrid{grid-template-columns:1fr}.logo .l1{font-size:34px}.logo .l2{font-size:52px}#cards{flex-wrap:wrap;justify-content:center;gap:6px;width:calc(100vw - 80px)}.card{min-width:0;padding:4px 10px 4px 5px}.card .dot{width:24px;height:24px;font-size:13px}#shout span{font-size:26px}#banner{font-size:36px}#hint{white-space:normal;text-align:center;font-size:14px}}.tag{display:none}:root{--u:1}#cards{top:calc(15px * var(--u));gap:calc(10px * var(--u))}.card{gap:calc(10px * var(--u));border-radius:calc(18px * var(--u));padding:calc(8px * var(--u)) calc(15px * var(--u)) calc(8px * var(--u)) calc(9px * var(--u));min-width:calc(168px * var(--u));border-width:calc(3px * var(--u))}.card .dot{width:calc(35px * var(--u));height:calc(35px * var(--u));font-size:calc(19px * var(--u))}.card .name{font-size:calc(16px * var(--u));font-weight:700}.card .role{font-size:calc(11px * var(--u))}.card .cups{min-height:calc(26px * var(--u))}.card .cups svg{width:calc(18px * var(--u));height:calc(22px * var(--u))}.card .n{font-size:calc(20px * var(--u))}#topRight{top:calc(15px * var(--u));right:calc(15px * var(--u));gap:calc(8px * var(--u))}.iconBtn{width:calc(42px * var(--u));height:calc(42px * var(--u));border-radius:calc(11px * var(--u));font-size:calc(18px * var(--u))}#hint{bottom:calc(20px * var(--u));padding:calc(11px * var(--u)) calc(22px * var(--u));font-size:calc(17px * var(--u))}kbd{font-size:calc(13px * var(--u))}#roundInfo{bottom:calc(20px * var(--u));left:calc(15px * var(--u));background:var(--panel);box-shadow:var(--shadow);padding:calc(11px * var(--u)) calc(16px * var(--u));font-weight:700;font-size:calc(16px * var(--u));border-radius:999px;position:absolute}#roundInfo:empty{display:none}.card .pts{min-width:calc(30px * var(--u));padding:calc(2px * var(--u)) calc(8px * var(--u));background:var(--pc);color:#fff;font-weight:700;font-size:calc(15px * var(--u));text-align:center;text-shadow:0 1px #0003;border-radius:999px}.card.bump .pts{animation:.5s ptsBump}@keyframes ptsBump{40%{transform:scale(1.35)}}.card.nocup .role{color:var(--accent-dark)}#meter{left:50%;bottom:calc(78px * var(--u));align-items:center;gap:calc(10px * var(--u));background:var(--panel);box-shadow:var(--shadow);padding:calc(8px * var(--u)) calc(16px * var(--u));border-radius:999px;display:flex;position:absolute;transform:translate(-50%)}#meter .lbl{font-weight:700;font-size:calc(14px * var(--u))}#meter .lbl.sub{color:var(--ink-soft);font-weight:500;font-size:calc(12px * var(--u))}#meter .bar{width:calc(220px * var(--u));height:calc(14px * var(--u));background:linear-gradient(90deg,#f2cdbd,#f7e3a6 34%,#7fd46a 50%,#f7e3a6 66%,#f2cdbd);border-radius:999px;position:relative}#meter .zone{border-radius:999px;width:15%;position:absolute;top:0;bottom:0;left:42.5%;box-shadow:inset 0 0 0 2px #2378328c}#meter .needle{top:calc(-5px * var(--u));bottom:calc(-5px * var(--u));width:calc(5px * var(--u));background:var(--ink);border-radius:3px;position:absolute;transform:translate(-50%)}.menuPanel h3.mt{margin-top:14px}#standings{gap:6px;width:min(420px,100%);margin:14px auto 6px;display:grid}#standings .row{border-left:6px solid var(--pc);background:#fff;border-radius:12px;grid-template-columns:28px 1fr auto auto;align-items:center;gap:10px;padding:6px 12px;display:grid}#standings .row.first{box-shadow:0 0 0 3px var(--pc) inset}#standings .pl{font-weight:700}#standings .nm{text-align:left;font-weight:600}#standings .rp{color:var(--ink-soft);font-size:14px}#standings .tp{font-size:18px;font-weight:700}.card.nocup .role{white-space:nowrap}#nowCue{opacity:0;pointer-events:none;color:#fff;font-weight:700;font-size:calc(30px * var(--u));letter-spacing:.04em;padding:calc(4px * var(--u)) calc(16px * var(--u));border:calc(3px * var(--u)) solid #fff;text-shadow:0 2px #0000002e;background:#2fd158;border-radius:999px;transition:opacity 60ms,transform 80ms;position:absolute;transform:translate(-50%,-100%)scale(.6);box-shadow:0 6px 18px #145a2859}#nowCue.on{opacity:1;animation:.18s ease-in-out infinite alternate nowPulse;transform:translate(-50%,-100%)scale(1)}@keyframes nowPulse{to{transform:translate(-50%,-100%)scale(1.08)}}.big.alt{background:#1fb5a8;box-shadow:0 6px #148a80}.big.alt:active{box-shadow:0 3px #148a80}.big:disabled{opacity:.5;transform:none}.onlinePanel{text-align:center;max-width:460px}.onlinePanel h2{margin:0 0 4px;font-size:32px}.onlinePanel .fld{text-align:left;gap:6px;margin:18px 0 0;font-weight:600;display:grid}.onlinePanel input{color:var(--ink);background:#fff;border:2px solid #e2d8ca;border-radius:14px;width:100%;padding:10px 14px;font:600 20px Fredoka,system-ui}.onlinePanel .or{color:var(--ink-soft);margin:18px 0 8px;font-size:14px}.joinRow{align-items:stretch;gap:10px;display:flex}.joinRow input{text-align:center;letter-spacing:.3em;text-transform:uppercase;flex:1}.joinRow .big{margin:0;padding:10px 22px;font-size:20px}.onlinePanel .err{color:#d24a2a;min-height:1.2em;margin:10px 0 0;font-weight:600}.onlinePanel .ghost{margin-top:12px}.roomCode{letter-spacing:.18em;color:var(--accent);-webkit-text-stroke:6px #fff;paint-order:stroke fill;font-size:58px;font-weight:700;line-height:1.1}.linkLine{word-break:break-all}.onPlayers{text-align:left;margin:16px 0 6px}.onPlayers .slot{border-left:6px solid var(--pc);background:#fff;border-radius:14px;padding:6px 12px}.onPlayers .slot .nm{flex:1;width:auto}.onPlayers .slot.bot{opacity:.6}.onPlayers .tagx{color:var(--ink-soft);font-size:12px}.onCfg{justify-content:center;gap:22px;margin-top:8px;display:flex}.onCfg h3{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);margin:0 0 6px;font-size:13px}.onCfg .seg{margin:0}.seg button:disabled{opacity:.45}.wait{margin-top:16px;font-size:16px;font-weight:600}#touch{pointer-events:none;position:absolute;inset:0}#actBtn{right:calc(26px + env(safe-area-inset-right));background:var(--accent);color:#fff;width:124px;height:124px;box-shadow:0 7px 0 var(--accent-dark), var(--shadow);pointer-events:auto;touch-action:none;border:4px solid #fff;border-radius:50%;font:700 22px Fredoka,system-ui;position:absolute;bottom:30px}#actBtn:active,#actBtn.down{box-shadow:0 3px 0 var(--accent-dark);transform:translateY(4px)}#actBtn.go{background:#2fd158;animation:.18s ease-in-out infinite alternate nowPulse2;box-shadow:0 7px #1f9a40,0 0 0 8px #2fd15859}#actBtn.off{opacity:.35}@keyframes nowPulse2{to{transform:scale(1.06)}}body.touch #hint{white-space:normal;text-align:center;max-width:calc(100vw - 360px);padding:6px 12px;font-size:13px}body.touch #meter,body.touch #roundInfo{bottom:auto;top:calc(88px * var(--u))}@media (height<=520px){.panel{border-radius:22px;padding:16px 20px}.roomCode{font-size:40px}.onlinePanel h2{font-size:24px}.big{margin-top:12px;padding:10px 26px;font-size:19px}.onPlayers .slot{margin-bottom:4px;padding:3px 10px}.onPlayers .slot .dot{width:22px;height:22px}}body.touch #actBtn{width:96px;height:96px;right:calc(14px + env(safe-area-inset-right));opacity:.92;font-size:18px;bottom:16px}body.touch #actBtn.off{opacity:.3}body.touch #hint{max-width:calc(100vw - 260px)}@media (height<=520px) and (orientation:landscape){.onlinePanel{max-width:760px}.onlinePanel [data-v=lobby]:not(.hidden){text-align:center;grid-template-columns:.8fr 1.2fr;align-items:start;column-gap:22px;display:grid}.onlinePanel [data-v=lobby]>.small:first-child,#onRoom,.linkLine,#onShare,#onLeave{grid-column:1}.onlinePanel [data-v=lobby]>.onPlayers,.onCfg,.onlinePanel [data-v=lobby]>.small:not(:first-child):not(.linkLine):not(.wait),#onStart,#onWait{grid-column:2}.onlinePanel [data-v=lobby]>.onPlayers{grid-row:1/span 3;margin-top:0}.onlinePanel [data-v=entry] .fld{margin-top:8px}.onlinePanel .or{margin:8px 0 4px}}.phoneOnly{display:none}body.touch .phoneOnly{display:block}body.touch .deskOnly{display:none}body.touch .overlay{padding:10px;overflow:hidden}body.portrait{--gap:8px}body.portrait .overlay{align-items:center}body.portrait .panel{max-height:calc(var(--vh,100vh) - 20px);border-radius:22px;padding:14px 16px 16px}body.portrait .onlinePanel .logo{margin-bottom:4px}body.portrait .onlinePanel .logo .l1{font-size:30px}body.portrait .onlinePanel .logo .l2{font-size:46px}body.portrait .onlinePanel .fld{margin-top:10px}body.portrait .onlinePanel input{padding:9px 12px;font-size:18px}body.portrait .onlinePanel .big{width:100%;margin-top:12px;padding:11px 20px;font-size:20px}body.portrait .joinRow .big{width:auto;margin:0}body.portrait .onlinePanel .or{margin:12px 0 6px}body.portrait .onlinePanel .ghost{margin-top:10px;padding:9px 18px;font-size:16px}body.portrait .roomCode{font-size:46px}body.portrait .onPlayers{margin:10px 0 4px}body.portrait .onPlayers .slot{margin-bottom:5px;padding:4px 10px}body.portrait .onPlayers .slot .dot{width:22px;height:22px}body.portrait .onCfg{gap:14px}body.portrait .seg button{width:42px;height:32px;font-size:16px}body.portrait #cards{top:calc(6px + env(safe-area-inset-top));grid-auto-columns:1fr;grid-auto-flow:column;gap:4px;width:auto;display:grid;left:6px;right:6px;transform:none}body.portrait .card{border-radius:12px;flex-wrap:wrap;place-content:flex-start center;gap:3px;min-width:0;padding:4px 5px}body.portrait .card .dot{display:none}body.portrait .card .who{align-items:center;width:100%}body.portrait .card .name{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:13px;overflow:hidden}body.portrait .card .role{letter-spacing:.02em;font-size:9px}body.portrait .card .cups{min-height:16px;margin:0}body.portrait .card .cups svg{width:11px;height:14px}body.portrait .card .pts{min-width:22px;padding:0 5px;font-size:12px}body.portrait .card .n{min-width:0;margin:0;font-size:13px}body.portrait .card.holder{transform:translateY(2px)}body.portrait #topRight{top:auto;bottom:calc(118px + env(safe-area-inset-bottom));flex-direction:column;right:10px}body.portrait .iconBtn{width:36px;height:36px;font-size:16px}body.portrait #roundInfo{top:calc(108px + env(safe-area-inset-top));padding:4px 10px;font-size:12px;bottom:auto;left:8px}body.portrait #meter{top:calc(66px + env(safe-area-inset-top));gap:6px;padding:5px 10px;bottom:auto}body.portrait #meter .bar{width:140px}body.portrait #meter .lbl.sub{display:none}body.portrait #hint{left:10px;right:118px;bottom:calc(14px + env(safe-area-inset-bottom));white-space:normal;text-align:left;border-radius:16px;max-width:none;padding:7px 10px;font-size:12.5px;transform:none}body.portrait #actBtn{width:92px;height:92px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));font-size:17px}body.portrait #banner{font-size:30px}body.portrait #shout span,body.portrait #nowCue{font-size:24px}body.portrait .resultPanel{padding:12px 14px}body.portrait .trophy{font-size:40px}body.portrait #winTitle{-webkit-text-stroke:6px #fff;font-size:28px}body.portrait #winSub{margin-bottom:8px;font-size:13px}body.portrait #standings{gap:4px;margin:8px auto 4px}body.portrait #standings .row{grid-template-columns:22px 1fr auto auto;gap:6px;padding:4px 8px}body.portrait #standings .rp{font-size:11px}body.portrait .stat{min-width:64px;padding:5px 8px}body.portrait .stat b{font-size:18px}body.portrait .btnRow .big{margin-top:12px;padding:10px 18px;font-size:18px}body.portrait .btnRow .ghost{margin-top:12px;padding:9px 14px;font-size:15px}body.portrait .pop{-webkit-text-stroke-width:4px;white-space:normal;text-align:center;max-width:72vw;font-size:17px;line-height:1.05}body.portrait .pop.small{-webkit-text-stroke-width:3px;font-size:13px}body.portrait #shout span{padding:8px 14px;font-size:20px}#meter.catching{border:3px solid #2fd158}#meter.catching .zone{background:#2fd1588c}#meter.catching .bar{background:linear-gradient(90deg,#f2cdbd,#f7e3a6 40% 60%,#f2cdbd)}#meter.hit .needle{background:#1f9a40}#meter.miss .needle{background:#d24a2a}body.portrait #meter.catching{top:calc(66px + env(safe-area-inset-top));bottom:auto}body.portrait #meter.catching .bar{width:220px;height:18px}body.touch{overscroll-behavior:none;touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;position:fixed;inset:0}body.touch canvas{touch-action:none}body.touch input{-webkit-user-select:text;user-select:text;font-size:16px}body.touch .overlay{-webkit-backdrop-filter:none;background:#3c281e47}body.touch #actBtn{-webkit-user-select:none;user-select:none}#fpsBox{left:6px;bottom:calc(4px + env(safe-area-inset-bottom));z-index:60;color:#fff;pointer-events:none;background:#0009;border-radius:6px;padding:2px 6px;font:600 11px ui-monospace,monospace;position:absolute}
