body{margin:0;background:#0b3d0b;color:#fff;font-family:system-ui,sans-serif}.wrap{max-width:420px;margin:40px auto;padding:16px;display:flex;flex-direction:column;gap:10px}input,button{font-size:16px;padding:10px;border-radius:8px;border:1px solid #2c6b2c}button{background:#c8f250;color:#10210a;font-weight:700;cursor:pointer}button:disabled{opacity:.5;cursor:default}.row{display:flex;gap:8px}.row input{flex:1}.err{color:#ff6b6b}ul{list-style:none;padding:0}li{padding:6px 0;border-bottom:1px solid #2c6b2c}.gameWrap{padding:12px}.leaveBtn{margin-bottom:10px}.board{position:relative;display:grid;grid-template-columns:repeat(11,minmax(70px,1fr));grid-template-rows:repeat(11,minmax(60px,auto));gap:2px;max-width:1100px;margin:0 auto}.tile{background:#14401a;border:1px solid #2c6b2c;border-radius:4px;padding:4px;font-size:10px;display:flex;flex-direction:column;min-height:60px;position:relative}.tileGroup{height:6px;border-radius:2px;margin-bottom:2px}.tileName{flex:1;line-height:1.2}.tilePrice{color:#c8f250;font-weight:700}.token{position:absolute;width:16px;height:16px;border-radius:50%;border:2px solid #fff;box-shadow:0 2px 4px #00000080;transition:left .18s linear,top .18s linear;z-index:5;pointer-events:none}.center{grid-column:2 / 11;grid-row:2 / 11;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:#0e2f12;border-radius:8px}.turn{font-size:20px;font-weight:800}.timer{font-size:14px;font-weight:700;color:#f4a261}.doubleBadge{color:#c8f250;font-weight:800}.note{color:#9db89a;font-size:13px}.winner{font-size:24px;font-weight:800;color:#c8f250}.buyBox{display:flex;flex-direction:column;gap:8px;align-items:center}.players{min-width:200px}.players li{border:none;font-weight:700}.cardToast{position:fixed;left:50%;top:22%;transform:translate(-50%);z-index:50;min-width:260px;max-width:360px;padding:16px 20px;border-radius:14px;background:#14401a;border:3px solid;box-shadow:0 10px 30px #0000008c;text-align:center;animation:cardPop .35s cubic-bezier(.34,1.56,.64,1)}.cardToast.chance{border-color:#f4a261}.cardToast.chest{border-color:#c8f250}.cardToastTitle{font-size:15px;font-weight:800;opacity:.85;margin-bottom:6px}.cardToastText{font-size:18px;font-weight:700;line-height:1.3}.cardToastWho{font-size:13px;margin-top:8px;opacity:.7}@keyframes cardPop{0%{transform:translate(-50%) scale(.7);opacity:0}to{transform:translate(-50%) scale(1);opacity:1}}.diceAnchor{position:absolute;transform:translate(-50%,-50%);z-index:20;pointer-events:none}.diceFall{--fx: 30px;--fy: 110px;--frot: 40deg;animation:diceFall .7s cubic-bezier(.34,1.56,.64,1)}@keyframes diceFall{0%{transform:translate(var(--fx),var(--fy)) rotate(var(--frot)) scale(.6);opacity:0}55%{transform:translate(calc(var(--fx) * .06),-8px) rotate(calc(var(--frot) * .1)) scale(1.05);opacity:1}75%{transform:translateY(6px) rotate(0) scale(1)}to{transform:translate(0) rotate(0) scale(1)}}.diceScene{width:44px;height:44px;perspective:300px}.diceCube{position:relative;width:100%;height:100%;transform-style:preserve-3d;transition:transform 1s cubic-bezier(.2,.8,.3,1)}.diceFace{position:absolute;width:40px;height:40px;background:#f4f1e8;border:1px solid #999;border-radius:6px;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);padding:5px;box-sizing:border-box}.diceDot{width:6px;height:6px;border-radius:50%;background:#1a1a1a;align-self:center;justify-self:center}
