:root{--font:"Be Vietnam Pro",Arial,sans-serif;--paper:#fbf4e4;--ink:#2d1d0f;--gold:#f3c34b;--pw:250px;--bsize:min(calc(100vw - 2 * var(--pw) - 64px), calc(100dvh - 76px), 780px)}*{box-sizing:border-box}[hidden]{display:none!important}body,html{margin:0;height:100%}body{background:radial-gradient(ellipse at 50% 45%,rgba(255,190,110,.16),transparent 60%),radial-gradient(ellipse at 50% 0,#4a2e1a,#170d06 78%);font-family:var(--font);color:var(--paper);overflow:hidden;-webkit-tap-highlight-color:transparent}button{font-family:var(--font);cursor:pointer}.app{display:flex;flex-direction:column;height:100dvh}.top{display:flex;align-items:center;gap:10px;padding:8px 14px}.back{color:#f6dcb6;font-weight:700;font-size:14px;text-decoration:none;white-space:nowrap}.top h1{margin:0;font-size:22px;font-weight:900;letter-spacing:.02em;background:linear-gradient(180deg,#ffe7a8,#f3b23b);-webkit-background-clip:text;background-clip:text;color:transparent}.grow{flex:1}.icon-btn{width:36px;height:36px;border:0;border-radius:50%;background:rgba(255,255,255,.1);color:#fff;font-size:16px;font-weight:800}.icon-btn:hover{background:rgba(255,255,255,.2)}.icon-btn.on{background:var(--gold)}.stage{flex:1;min-height:0;display:grid;grid-template-columns:var(--pw) var(--bsize) var(--pw);grid-template-rows:1fr 1fr;justify-content:center;align-content:center;column-gap:18px;row-gap:0;padding:0 12px 12px}.board-wrap{grid-column:2;grid-row:1/3;align-self:center;width:var(--bsize);height:var(--bsize);padding:calc(var(--bsize) * .022);border-radius:calc(var(--bsize) * .045);background:linear-gradient(145deg,rgba(255,255,255,.18),transparent 35%),repeating-linear-gradient(100deg,rgba(0,0,0,.06) 0 3px,transparent 3px 9px),linear-gradient(145deg,#9a6230,#6b3f1f 45%,#3f230f);box-shadow:inset 0 0 0 2px rgba(255,220,160,.28),inset 0 -4px 10px rgba(0,0,0,.35),0 22px 50px rgba(0,0,0,.6)}.board{position:relative;width:100%;height:100%;overflow:hidden;border-radius:calc(var(--bsize) * .025);background:linear-gradient(160deg,#f8efd9,#e9dbb8);box-shadow:inset 0 0 0 2px rgba(0,0,0,.18),inset 0 0 30px rgba(120,80,30,.25)}.board.shake{animation:shake .35s}@keyframes shake{20%{transform:translate(-4px,2px)}40%{transform:translate(4px,-2px)}60%{transform:translate(-3px,1px)}80%{transform:translate(2px,0)}}.cells,.horses{position:absolute;inset:0}.cell{position:absolute;width:calc(100% / 15);height:calc(100% / 15);display:grid;place-items:center;padding:1.5px;font-weight:900;font-size:calc(var(--bsize) / 15 * .4);color:rgba(255,255,255,.95)}.cell::before{content:"";position:absolute;inset:1.5px;border-radius:22%;background:linear-gradient(160deg,#fffdf7,#f3e7cb);box-shadow:inset 0 -2px 0 rgba(120,80,30,.18),0 1px 1px rgba(0,0,0,.12)}.cell>span{position:relative}.cell.home::before,.cell.start::before{background:linear-gradient(160deg,color-mix(in srgb,var(--c) 78%,#fff),var(--c) 60%,color-mix(in srgb,var(--c) 80%,#000));box-shadow:inset 0 -2px 0 rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.35),0 1px 1px rgba(0,0,0,.15)}.cell.door::before{background:linear-gradient(160deg,color-mix(in srgb,var(--c) 18%,#fffdf7),color-mix(in srgb,var(--c) 34%,#f3e7cb))}.cell.start span{display:block;text-shadow:0 1px 2px rgba(0,0,0,.35)}.cell.home span{font-size:.8em;text-shadow:0 1px 2px rgba(0,0,0,.3)}.cell.door.off,.cell.home.off,.cell.start.off{filter:saturate(.2) brightness(1.12);opacity:.75}.center{position:absolute;left:40%;top:40%;width:20%;height:20%;display:grid;place-items:center;box-shadow:inset 0 0 12px rgba(0,0,0,.25)}.center img{position:relative;z-index:1;width:48%;filter:drop-shadow(0 3px 4px rgba(0, 0, 0, .4));animation:crown 2.4s ease-in-out infinite}@keyframes crown{50%{transform:translateY(-4%) scale(1.04)}}.stable{position:absolute;width:40%;height:40%;border-radius:10px;background:radial-gradient(circle at 30% 25%,rgba(255,255,255,.28),transparent 55%),linear-gradient(160deg,color-mix(in srgb,var(--c) 85%,#fff),var(--c) 55%,color-mix(in srgb,var(--c) 75%,#000));box-shadow:inset 0 0 0 3px rgba(0,0,0,.1),inset 0 -4px 0 rgba(0,0,0,.15)}.stable::before{content:"";position:absolute;inset:10%;border-radius:18%;background:radial-gradient(circle at 50% 40%,#fffdf5,#f1e4c6);box-shadow:inset 0 3px 8px rgba(0,0,0,.2),0 2px 0 rgba(255,255,255,.35)}.stable.off{filter:saturate(.15) brightness(1.08);opacity:.55}.slot{position:absolute;width:19%;height:19%;border-radius:50%;background:radial-gradient(circle at 50% 35%,color-mix(in srgb,var(--c) 18%,#fff),color-mix(in srgb,var(--c) 38%,#f3e7cb));box-shadow:inset 0 2px 4px rgba(0,0,0,.25),0 0 0 3px color-mix(in srgb,var(--c) 75%,#000);transform:translate(-50%,-50%)}.horse{position:absolute;z-index:10;width:calc(100% / 15 * 1.05);aspect-ratio:1;padding:0;border:0;background:url("assets/horses.webp") var(--fx,0) 0/400% 100% no-repeat;transform:translate(-50%,-62%);transition:left .3s ease,top .3s ease;cursor:default;filter:drop-shadow(0 2px 1px rgba(0, 0, 0, .3))}.horse.in-stable{width:calc(100% / 15 * 1.3)}.horse.moving{transition:left var(--step, .1s) ease-out,top var(--step, .1s) ease-out;animation:hop var(--step,.1s) ease-in-out infinite;z-index:60!important}@keyframes hop{50%{transform:translate(-50%,-82%)}}.horse.can{cursor:pointer;animation:canPulse .7s ease-in-out infinite alternate;z-index:50!important}@keyframes canPulse{to{transform:translate(-50%,-72%);filter:drop-shadow(0 0 5px #fff) drop-shadow(0 0 10px var(--gold))}}.horse.kicked{transition:left .55s cubic-bezier(.3, 1.4, .5, 1),top .55s cubic-bezier(.3, 1.4, .5, 1);animation:spin .55s}@keyframes spin{to{transform:translate(-50%,-62%) rotate(360deg)}}.horse:disabled{cursor:default}.tgt{position:absolute;z-index:8;width:calc(100% / 15 * .62);aspect-ratio:1;padding:0;border:3px dashed rgba(255,255,255,.95);border-radius:50%;background:rgba(243,195,75,.5);box-shadow:0 0 10px rgba(243,195,75,.8);transform:translate(-50%,-50%);animation:tgtPulse .8s ease-in-out infinite alternate}.tgt.kick{background:rgba(228,64,52,.65);box-shadow:0 0 12px rgba(228,64,52,.9)}@keyframes tgtPulse{to{transform:translate(-50%,-50%) scale(1.15)}}.pp{position:relative;display:flex;align-items:center;gap:10px;width:var(--pw);padding:10px 12px;border-radius:20px;background:linear-gradient(160deg,rgba(255,255,255,.1),rgba(255,255,255,.03));box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--c) 45%,transparent),0 10px 24px rgba(0,0,0,.35);opacity:.78;transition:opacity .25s,box-shadow .25s,background .25s,transform .25s}.pp.c0{grid-column:1;grid-row:1;align-self:start}.pp.c1{grid-column:3;grid-row:1;align-self:start;flex-direction:row-reverse;text-align:right}.pp.c2{grid-column:3;grid-row:2;align-self:end;flex-direction:row-reverse;text-align:right}.pp.c3{grid-column:1;grid-row:2;align-self:end}.pp.turn{opacity:1;background:linear-gradient(160deg,color-mix(in srgb,var(--c) 45%,rgba(255,255,255,.08)),color-mix(in srgb,var(--c) 18%,rgba(0,0,0,.2)));box-shadow:inset 0 0 0 2px var(--c),0 0 26px color-mix(in srgb,var(--c) 70%,transparent),0 10px 24px rgba(0,0,0,.35);transform:scale(1.03)}.pp.win{opacity:1;box-shadow:inset 0 0 0 3px var(--gold),0 0 30px rgba(243,195,75,.8)}.pp-av{position:relative;flex:none;display:grid;place-items:center;width:58px;height:58px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff6dc,#e2c48f);box-shadow:0 0 0 3px var(--c),0 3px 8px rgba(0,0,0,.35);font-size:32px}.pp.me .pp-av::after{content:"BẠN";position:absolute;bottom:-7px;left:50%;padding:0 5px;border-radius:6px;background:var(--c);color:#fff;font-size:9px;font-weight:900;line-height:14px;transform:translateX(-50%)}.pp-meta{flex:1;display:grid;min-width:0}.pp-meta b{overflow:hidden;font-size:17px;white-space:nowrap;text-overflow:ellipsis}.pp-meta small{color:#ecdcc0;font-size:13px;font-weight:600;line-height:1.3}.pp-clock{position:absolute;left:14px;right:14px;bottom:4px;height:3px;border-radius:3px;background:#5ec8ff;transform-origin:left;opacity:0}.pp.clock .pp-clock{opacity:1;animation:clockBar var(--clock,20s) linear forwards}@keyframes clockBar{to{transform:scaleX(0)}}.pdie{position:relative;flex:none;width:72px;height:72px;padding:0;border:0;border-radius:14px;background:0 0;cursor:default}.pdie i{position:absolute;inset:0;background:url("assets/dice.webp") 100% 0/600% 100% no-repeat;filter:drop-shadow(0 4px 3px rgba(0, 0, 0, .4))}.pd-shadow{position:absolute;left:12%;right:12%;bottom:-8px;height:12px;border-radius:50%;background:radial-gradient(closest-side,rgba(0,0,0,.55),transparent);opacity:.55}.pdie em{position:absolute;top:-8px;right:-10px;z-index:2;padding:0 5px;border-radius:8px;background:var(--gold);color:var(--ink);font-style:normal;font-weight:900;font-size:11px;line-height:17px}.pdie em:empty{display:none}.pp:not(.turn) .pdie i{filter:grayscale(.4) brightness(.9) drop-shadow(0 3px 2px rgba(0, 0, 0, .35))}.pdie.can{cursor:pointer}.pdie.can i{animation:dieReady .75s ease-in-out infinite alternate}.pdie.can::after{content:"Gieo!";position:absolute;left:50%;bottom:-20px;padding:0 8px;border-radius:8px;background:var(--gold);color:var(--ink);font-weight:900;font-size:11px;line-height:17px;transform:translateX(-50%);animation:dieReady .75s ease-in-out infinite alternate}@keyframes dieReady{to{transform:translateY(-4px);filter:drop-shadow(0 0 8px #fff) drop-shadow(0 0 16px var(--gold))}}.pdie.can::after{animation-name:none}.pdie.six i{filter:drop-shadow(0 0 6px #fff) drop-shadow(0 0 14px var(--gold))!important}.pdie.landed i{animation:landPop .32s ease-out}@keyframes landPop{45%{transform:scale(1.14)}}.btn{height:44px;padding:0 16px;border:0;border-radius:12px;background:#ead6b5;color:var(--ink);font-weight:800;font-size:15px;box-shadow:0 3px 0 rgba(0,0,0,.25)}.btn:active{transform:translateY(2px);box-shadow:0 1px 0 rgba(0,0,0,.25)}.btn:disabled{opacity:.45;cursor:default;transform:none}.btn.primary{background:linear-gradient(180deg,#ffd65a,#f0b324)}.btn.green{background:#3fc07a;color:#fff}.btn.big{height:52px;font-size:17px}.online-btn{background:#2f7fd8;color:#fff}.overlay{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:14px;background:rgba(10,6,2,.6);backdrop-filter:blur(3px)}.sheet{position:relative;display:grid;gap:12px;width:min(100%,440px);max-height:calc(100dvh - 28px);overflow:auto;padding:20px;border-radius:20px;background:var(--paper);color:var(--ink);box-shadow:0 0 0 4px #c98a45,0 20px 40px rgba(0,0,0,.5);animation:sheetIn .3s cubic-bezier(.3,1.4,.5,1)}@keyframes sheetIn{from{transform:scale(.9) translateY(10px);opacity:0}}.sheet h2{margin:0;font-size:24px;text-align:center}.lobby-head{display:flex;align-items:center;justify-content:center;gap:12px}.lobby-head h2{text-align:left}.lobby-head p{margin:2px 0 0;color:#8b6b4b;font-weight:600;font-size:13px}.lobby-horses{width:104px;height:26px;object-fit:cover}.group{display:grid;gap:6px}.group label{font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#9a7650}.seg{display:flex;padding:3px;border-radius:11px;background:#ead6b5}.seg button{flex:1;height:36px;border:0;border-radius:8px;background:0 0;color:#6b4a2b;font-weight:700;font-size:14px}.seg button.on{background:#fff;color:#b4410f;box-shadow:0 1px 3px rgba(0,0,0,.18)}.seg button:disabled{opacity:.4;cursor:default}.opps{display:flex;gap:8px}.opp{flex:1;display:grid;justify-items:center;gap:2px;min-width:0;padding:8px 4px;border-radius:12px;background:#f5e7cc;font-size:12px}.mate .av,.opp .av{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff6dc,#e2c48f);font-size:19px}.opp b{max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.stats{display:flex;justify-content:center;gap:8px}.stats p{margin:0;color:#9a7650;font-size:12px;text-align:center}.stats div{flex:1;display:grid;justify-items:center;padding:6px;border-radius:10px;background:#f5e7cc}.stats small{color:#9a7650;font-size:11px}.close{position:absolute;top:10px;right:10px;width:32px;height:32px;border:0;border-radius:50%;background:#ead6b5;color:var(--ink);font-size:20px;line-height:1}.rules{width:min(100%,560px);gap:6px}.rules h3{margin:8px 0 0;font-size:15px;color:#b4410f}.rules p{margin:0;font-size:14px;line-height:1.5}.rules .credit{margin-top:10px;color:#9a7650;font-size:12px}.result-sheet{text-align:center}.res-ico{font-size:46px}.res-sub{margin:0;color:#8b6b4b;font-weight:700}.res-table{width:100%;border-collapse:collapse;font-size:14px}.res-table th{color:#9a7650;font-size:11px;text-transform:uppercase}.res-table td,.res-table th{padding:6px 4px;border-top:1px solid #ead6b5}.res-table tr.mine td{background:#fff1c9}.res-table .who{text-align:left;font-weight:700}.res-table .dot{display:inline-block;width:10px;height:10px;margin-right:6px;border-radius:50%}.row{display:flex;gap:8px}.row .btn{flex:1}.reopen{position:fixed;left:50%;bottom:18px;z-index:90;transform:translateX(-50%)}.toast{position:fixed;left:50%;top:70px;z-index:120;padding:10px 18px;border-radius:99px;background:rgba(20,12,4,.9);color:#fff;font-weight:800;font-size:15px;box-shadow:0 8px 20px rgba(0,0,0,.4);transform:translateX(-50%);animation:toastIn .25s;pointer-events:none}.toast.big{font-size:18px;background:linear-gradient(180deg,#e4572e,#b8321a)}@keyframes toastIn{from{transform:translate(-50%,-10px);opacity:0}}.on-grid{display:grid;gap:12px}.txt{width:100%;height:42px;padding:0 12px;border:2px solid #e0c69c;border-radius:11px;background:#fff;color:var(--ink);font:700 16px var(--font);outline:0}.txt:focus{border-color:#b4410f}.txt.code{text-align:center;letter-spacing:.3em;text-transform:uppercase;font-size:20px}.join-row{display:flex;gap:8px}.join-row .btn{flex:none;min-width:88px}.avs{display:flex;flex-wrap:wrap;gap:6px}.avs button{width:38px;height:38px;border:0;border-radius:50%;background:#f0dfc0;font-size:20px;line-height:1}.avs button.on{background:radial-gradient(circle at 35% 30%,#fff6dc,#e2c48f);box-shadow:0 0 0 3px #b4410f}.on-status{min-height:1.2em;margin:0;color:#8b6b4b;font-weight:700;font-size:13px;text-align:center}.on-status.err{color:#c8231b}.on-help{margin:0;color:#a08060;font-size:12px;text-align:center}.room-code{display:grid;justify-items:center;padding:10px;border-radius:14px;background:#f5e7cc}.room-code small,.room-code span{color:#9a7650;font-weight:700;font-size:12px}.room-code b{padding-left:.25em;color:#b4410f;font-size:40px;letter-spacing:.25em;line-height:1.1}.mates{display:grid;gap:6px}.mate{display:flex;align-items:center;gap:10px;padding:6px 10px;border-radius:12px;background:#f5e7cc;font-size:14px}.mate b{flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mate small{color:#9a7650;font-weight:700}.mate.bot,.mate.off{opacity:.55}@media (max-aspect-ratio:4/3){:root{--bsize:min(calc(100vw - 16px), calc(100dvh - 64px - 2 * 74px - 30px))}.stage{grid-template-columns:repeat(2,calc(var(--bsize)/ 2));grid-template-rows:auto var(--bsize) auto;column-gap:0;row-gap:10px;align-content:center;padding:4px 8px 8px}.board-wrap{grid-column:1/3;grid-row:2}.pp{width:calc(var(--bsize)/ 2 - 6px);gap:8px;padding:8px 10px;border-radius:16px}.pp.c0{grid-row:1;grid-column:1;align-self:end}.pp.c1{grid-row:1;grid-column:2;justify-self:end;align-self:end}.pp.c2{grid-row:3;grid-column:2;justify-self:end;align-self:start}.pp.c3{grid-row:3;grid-column:1;align-self:start}.pp.turn{transform:none}.pp-av{width:38px;height:38px;font-size:21px}.pp-meta b{font-size:13px}.pp-meta small{font-size:11px}.pdie{width:50px;height:50px}.top h1{font-size:18px}}@media (max-height:520px) and (min-aspect-ratio:4/3){:root{--pw:170px;--bsize:min(calc(100vw - 2 * var(--pw) - 40px), calc(100dvh - 58px))}.stage{grid-template-columns:var(--pw) var(--bsize) var(--pw);grid-template-rows:1fr 1fr;column-gap:10px;padding:0 8px 8px}.top{padding:4px 12px}.pp{width:var(--pw);gap:6px;padding:6px 8px}.pp-av{width:34px;height:34px;font-size:19px}.pdie{width:46px;height:46px}}.net-badge{padding:3px 10px;border-radius:99px;background:rgba(63,192,122,.22);box-shadow:inset 0 0 0 1px rgba(63,192,122,.6);color:#c9f5da;font-weight:700;font-size:12px;white-space:nowrap}.net-badge.relay{background:rgba(94,160,255,.22);box-shadow:inset 0 0 0 1px rgba(94,160,255,.65);color:#d4e5ff}@media (max-width:600px){.net-badge{max-width:42vw;overflow:hidden;text-overflow:ellipsis;font-size:11px}}