/* มินิเกม - owner: TICKETS */
.gm-hero{padding-bottom:52px}
.gm-hero h1{margin:4px 0 6px}
.gm-intro p{color:#dce6ff;margin:0}
.gm-page{padding-bottom:20px}
.gm-lobby{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
@media (max-width:640px){.gm-lobby{grid-template-columns:1fr}}
.gm-tile{display:flex;gap:14px;align-items:center;color:var(--ink);transition:transform .15s,box-shadow .15s}
.gm-tile:hover{transform:translateY(-3px);box-shadow:var(--sh-2)}
.gm-tile img{width:84px;height:84px;flex:none}
.gm-tile h2{font-size:19px;margin:0 0 2px}
.gm-tile p{font-size:14px;color:var(--ink-2);margin:0 0 6px}
.gm-tile.off{opacity:.6}
.gm-seo{margin-top:20px}
.gm-layout{display:grid;grid-template-columns:1.4fr 1fr;gap:14px;align-items:start}
@media (max-width:820px){.gm-layout{grid-template-columns:1fr}}
.gm-play-card{position:relative;overflow:hidden}
.gm-off{background:#ffe6e9;color:var(--red);padding:8px 12px;border-radius:10px;font-weight:600}
.gm-stage{height:230px;display:flex;align-items:center;justify-content:center;border-radius:14px;background:radial-gradient(circle at 50% 30%,#2a63f0,#0d2f8f 75%);position:relative;overflow:hidden;perspective:900px}
.gm-stage:before{content:'';position:absolute;inset:auto 0 0;height:60px;background:linear-gradient(transparent,rgba(0,0,0,.25))}
.is-win .gm-stage{animation:winGlow 1s ease-out}
@keyframes winGlow{0%{box-shadow:inset 0 0 0 0 rgba(255,211,77,.9)}50%{box-shadow:inset 0 0 0 8px rgba(255,211,77,.9)}100%{box-shadow:inset 0 0 0 0 rgba(255,211,77,0)}}
.gm-result{margin:12px 0;text-align:center;font:600 18px var(--head);color:var(--ink-2);min-height:28px}
.gm-result.win{color:var(--green);font-size:22px;animation:pop .3s}
.gm-result.lose{color:var(--red)} .gm-result.draw{color:#a86d00}
.gm-choices{display:grid;gap:10px}
.gm-choices.g2{grid-template-columns:1fr 1fr} .gm-choices.g3{grid-template-columns:repeat(3,1fr)}
.gm-choices button,.dice-bets button,.ml-grid button{border:2px solid var(--line);background:#fff;border-radius:14px;padding:8px;font:600 15px var(--head);color:var(--ink);display:flex;flex-direction:column;align-items:center;gap:4px;transition:border-color .15s,transform .1s}
.gm-choices button svg,.gm-choices button img{width:64px;height:64px;object-fit:contain}
.gm-choices button.on,.dice-bets button.on,.ml-grid button.on{border-color:var(--blue);background:var(--blue-3);color:var(--blue);box-shadow:0 4px 12px rgba(21,70,201,.18)}
.gm-choices button:active,.dice-bets button:active{transform:scale(.96)}
.gm-bet label{display:block;font:600 15px var(--head);margin-bottom:6px}
.gm-betrow{display:flex;gap:6px}
.gm-betrow button,.gm-quick button{border:1.5px solid var(--line);background:#f4f7fd;border-radius:10px;font:600 14px var(--head);color:var(--blue);padding:6px 12px}
.gm-betrow .input{text-align:center;font:700 20px var(--head)}
.gm-quick{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.gm-quick button{flex:1;padding:5px 6px;font-size:13px}
.gm-pay{font-size:14px;color:var(--ink-2);margin:6px 0 12px}
.gm-pay b{color:var(--red);font-size:16px}
.gm-go{font-size:18px;padding:13px}
.gm-login{margin:8px 0 0;font-size:13px}
.gm-side{display:grid;gap:14px}
.gm-fair summary{cursor:pointer;font:600 15px var(--head);color:var(--blue)}
.gm-fair .field{margin:10px 0}
.gm-code{display:block;font:12px/1.4 ui-monospace,Consolas,monospace;word-break:break-all;background:#f4f7fd;border-radius:8px;padding:6px 8px;color:var(--ink-2)}
.gm-rev{display:grid;gap:6px;border-top:1px solid var(--line);padding-top:10px}
.gm-rev small{color:var(--ink-3)}
.gm-hist h3{font-size:16px}
.gm-hist ul{list-style:none;margin:0;padding:0;font-size:14px}
.gm-hist li{display:grid;grid-template-columns:1fr 1fr auto;gap:8px;padding:6px 0;border-bottom:1px solid var(--line)}
.gm-hist b.up{color:var(--green)} .gm-hist b.down{color:var(--red)}
.gm-rules{margin-top:16px}
.gm-rules h2{font-size:20px}
.gm-rules ol{padding-left:1.3em}
.gm-others{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.gm-others a{display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--ink);text-align:center;font-size:14px}

/* coin */
.coin-wrap{position:relative;width:150px;height:150px;transform-style:preserve-3d}
.coin3d{position:absolute;inset:0;transform-style:preserve-3d;transition:transform 2s cubic-bezier(.2,.7,.25,1)}
.cf{position:absolute;inset:0;backface-visibility:hidden;border-radius:50%;filter:drop-shadow(0 6px 10px rgba(0,0,0,.3))}
.cf svg,.cf img{width:100%;height:100%;display:block;user-select:none}
.cf-t{transform:rotateY(180deg)}
.coin-shadow{position:absolute;left:20%;right:20%;bottom:-24px;height:14px;border-radius:50%;background:rgba(0,0,0,.35);filter:blur(4px)}
.coin-wrap.toss{animation:toss 2s cubic-bezier(.3,.6,.4,1)}
@keyframes toss{0%{transform:translateY(0)}35%{transform:translateY(-70px) scale(1.12)}75%{transform:translateY(0) scale(1)}85%{transform:translateY(-10px)}100%{transform:translateY(0)}}

/* rps */
.gm-rps{gap:18px}
.rps-side{display:flex;flex-direction:column;align-items:center;gap:6px;color:#dce6ff;font:500 13px var(--head);z-index:1}
.rps-hand{width:120px;height:120px;border-radius:50%;background:rgba(255,255,255,.12);display:grid;place-items:center;transition:box-shadow .3s}
.rps-hand img{width:96px;height:96px;object-fit:contain}
.rps-hand.house img{transform:scaleX(-1)}
.rps-hand.pump img{animation:pump .42s ease-in-out 3}
@keyframes pump{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-22px) rotate(-12deg)}}
.rps-hand.house.pump img{animation-name:pumpR}
@keyframes pumpR{0%,100%{transform:scaleX(-1) translateY(0)}50%{transform:scaleX(-1) translateY(-22px) rotate(-12deg)}}
.rps-hand.won{box-shadow:0 0 0 4px var(--gold-2),0 0 30px rgba(255,211,77,.8)}
.rps-vs{font:800 30px var(--head);color:var(--gold-2);z-index:1;text-shadow:0 3px 0 rgba(0,0,0,.25)}

/* dice */
.dice-row{display:flex;gap:26px;z-index:1}
.die{width:64px;height:64px;perspective:500px}
.die3d{position:relative;width:64px;height:64px;transform-style:preserve-3d;transition:transform 1.3s cubic-bezier(.2,.8,.3,1)}
.die.roll{animation:hop 1.4s ease-out}
@keyframes hop{0%{transform:translateY(0)}30%{transform:translateY(-50px)}60%{transform:translateY(0)}75%{transform:translateY(-12px)}100%{transform:translateY(0)}}
.die-f{position:absolute;inset:0;background:#fff;border-radius:12px;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);padding:8px;box-shadow:inset 0 0 0 2px #dfe5f3,inset 0 -6px 10px rgba(0,0,0,.06)}
.die-f i{display:block;margin:auto;width:11px;height:11px;border-radius:50%}
.die-f i.p{background:var(--ink)}
.die-f.f1 i.p,.die-f.f4 i.p{background:var(--red)}
.die-f.f1 i.p{width:16px;height:16px}
.f1{transform:translateZ(32px)} .f6{transform:rotateY(180deg) translateZ(32px)}
.f2{transform:rotateY(90deg) translateZ(32px)} .f5{transform:rotateY(-90deg) translateZ(32px)}
.f3{transform:rotateX(90deg) translateZ(32px)} .f4{transform:rotateX(-90deg) translateZ(32px)}
.dice-sum{position:absolute;bottom:10px;left:0;right:0;text-align:center;color:#dce6ff;font:500 14px var(--head);z-index:1}
.dice-sum b{color:var(--gold-2);font-size:20px}
.dice-bets h3{font-size:14px;color:var(--ink-3);margin:12px 0 6px}
.dice-bets button{padding:6px 4px}
.dice-bets button small{font:500 11px var(--head);color:var(--ink-3)}
.dice-hl b{font-size:20px}
.dice-sums{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:6px}
@media (max-width:520px){.dice-sums{grid-template-columns:repeat(4,minmax(0,1fr))}}

/* mini lotto */
.ml-machine{position:relative;z-index:1;padding:16px 22px 10px;border-radius:20px;background:linear-gradient(180deg,#ff4d5e,#c81e2e);box-shadow:0 10px 24px rgba(0,0,0,.35),inset 0 2px 0 rgba(255,255,255,.3);text-align:center}
.ml-lights{position:absolute;left:12px;right:12px;top:6px;height:6px;background:radial-gradient(circle,#ffd34d 2px,transparent 3px) 0 0/14px 6px repeat-x}
.ml-machine.spin .ml-lights{animation:lights .3s steps(2) infinite}
@keyframes lights{50%{opacity:.3}}
.ml-reels{display:flex;gap:10px;margin-top:6px}
.ml-reel{width:74px;height:96px;border-radius:12px;background:#fff;display:grid;place-items:center;box-shadow:inset 0 6px 10px rgba(0,0,0,.18)}
.ml-reel b{font:800 56px var(--head);color:var(--blue)}
.ml-machine.spin .ml-reel:not(.stop) b{filter:blur(1.5px)}
.ml-reel.stop b{animation:pop .25s}
.ml-pick{margin:8px 0 0;color:#ffe3e6;font:500 13px var(--head)}
.ml-pick b{color:#fff;font-size:18px}
.ml-grid{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:4px}
.ml-grid button{padding:6px 0;border-radius:8px;font-size:14px;border-width:1.5px}
.ml-rand{margin-top:10px}
@media (max-width:520px){.gm-stage{height:200px}.ml-grid button{font-size:12px;padding:5px 0}}
.gm-hero{position:relative}
.gm-hero-img{position:absolute;right:max(16px,calc(50% - 560px));bottom:30px;width:130px;height:auto;filter:drop-shadow(0 8px 18px rgba(0,0,0,.25))}
@media (max-width:640px){.gm-hero-img{width:84px;bottom:44px}}
.gm-result{display:flex;align-items:center;justify-content:center;gap:8px}
.gm-result img{width:44px;height:44px}

.gm-deco{position:absolute;left:10px;bottom:8px;width:84px;height:auto;opacity:.95;z-index:0;filter:drop-shadow(0 6px 10px rgba(0,0,0,.3))}
.gm-ml .gm-deco{left:auto;right:8px;width:90px}
@media (max-width:520px){.gm-deco{width:60px}}
.gm-tile img,.gm-others img{object-fit:contain}

/* fairness panel: Thai explanation + client seed controls */
.gm-fair-how{font-size:14px;color:var(--ink-2);margin:6px 0 10px}
.gm-fair-how p{margin:0 0 4px}
.gm-fair-how ol{margin:0;padding-left:20px;line-height:1.6}
.gm-cseed-row{display:flex;gap:6px;align-items:center;margin-top:-4px}
.gm-cseed-row .input{flex:1;min-width:0;font-family:ui-monospace,Consolas,monospace}
.gm-cseed-row .btn{flex:none}