:root{--bg:#e8efe8;--bg-deep:#d4e0d6;--surface:#f4f7f4;--surface-raised:#fff;--accent:#7a9e8a;--accent-strong:#5f8570;--accent-2:#d4896a;--accent-2-soft:#e8b39a;--ink:#3d4a42;--ink-soft:#6b7a72;--success:#6a9b78;--warn:#c4a35a;--shadow:#3d4a421f;--radius:20px;--radius-sm:14px;--tap-min:64px;--font:"Nunito", system-ui, sans-serif;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;overflow:hidden}body{font-family:var(--font);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}#app{width:100%;height:100dvh;overflow:hidden}button{cursor:pointer;color:inherit;background:0 0;border:none;font-family:inherit}button:focus-visible{outline:3px solid var(--accent);outline-offset:3px}img,svg{max-width:100%;display:block}@keyframes star-float{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(-48px)scale(1.3)}}@keyframes soft-pulse{0%,to{box-shadow:0 0 #0000}50%{box-shadow:0 0 0 12px #7a9e8a33}}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-6px)}75%{transform:translate(6px)}}@keyframes pop-in{0%{opacity:0;transform:scale(.7)}70%{transform:scale(1.06)}to{opacity:1;transform:scale(1)}}@keyframes card-flip{0%{transform:rotateY(90deg)}to{transform:rotateY(0)}}.star-float{pointer-events:none;z-index:1000;font-size:1.75rem;animation:.7s ease-out forwards star-float;position:fixed}@keyframes victory-burst{0%{opacity:1;transform:translate(0)scale(.4)rotate(0)}to{opacity:0;transform:translate(var(--vx), var(--vy)) scale(1.35) rotate(180deg)}}.victory-burst-star{z-index:1000;pointer-events:none;font-size:clamp(1.1rem,4vw,1.75rem);animation:.85s ease-out forwards victory-burst;position:fixed}.shake{animation:.35s shake}.win-pulse{animation:.8s soft-pulse}.hub{height:100%;padding:calc(1rem + var(--safe-top)) calc(1.25rem + var(--safe-right)) calc(1.25rem + var(--safe-bottom)) calc(1.25rem + var(--safe-left));background:radial-gradient(ellipse 80% 50% at 20% 10%, #d4896a2e, transparent 55%), radial-gradient(ellipse 70% 45% at 90% 80%, #7a9e8a47, transparent 50%), linear-gradient(160deg, var(--bg) 0%, var(--bg-deep) 100%);-webkit-overflow-scrolling:touch;flex-direction:column;display:flex;overflow-y:auto}.hub-top{flex-shrink:0;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.5rem;display:flex}.hub-brand{flex-direction:column;gap:.15rem;display:flex}.hub-brand h1{letter-spacing:-.02em;color:var(--ink);font-size:clamp(1.75rem,6vw,2.5rem);font-weight:800;line-height:1.1}.hub-brand p{color:var(--ink-soft);font-size:.95rem;font-weight:600}.hub-controls{align-items:center;gap:.5rem;display:flex}.hub-score{background:var(--surface-raised);box-shadow:0 4px 16px var(--shadow);border-radius:999px;align-items:center;gap:.4rem;min-height:48px;padding:.55rem .9rem;font-size:1.1rem;font-weight:800;display:flex}.hub-score span{color:var(--accent-2)}.icon-btn{background:var(--surface-raised);width:48px;min-width:48px;height:48px;box-shadow:0 4px 16px var(--shadow);border-radius:50%;place-items:center;font-size:1.25rem;transition:transform .15s,background .15s;display:grid}.icon-btn:active{transform:scale(.94)}.hub-grid{flex:1;grid-template-columns:1fr;align-content:start;gap:1rem;padding-bottom:1rem;display:grid}@media (width>=520px){.hub-grid{grid-template-columns:1fr 1fr}}@media (width>=900px){.hub-grid{grid-template-columns:repeat(3,1fr);width:100%;max-width:960px;margin:0 auto}}.game-card{background:var(--surface-raised);border-radius:var(--radius);min-height:140px;box-shadow:0 6px 24px var(--shadow);flex-direction:column;justify-content:center;align-items:center;gap:.75rem;padding:1.25rem;transition:transform .18s,box-shadow .18s;animation:.4s backwards pop-in;display:flex}.game-card:first-child{animation-delay:50ms}.game-card:nth-child(2){animation-delay:.1s}.game-card:nth-child(3){animation-delay:.15s}.game-card:nth-child(4){animation-delay:.2s}.game-card:nth-child(5){animation-delay:.25s}.game-card:nth-child(6){animation-delay:.3s}.game-card:nth-child(7){animation-delay:.35s}.game-card:nth-child(8){animation-delay:.4s}.game-card:nth-child(9){animation-delay:.45s}.game-card:nth-child(10){animation-delay:.5s}.game-card:nth-child(11){animation-delay:.55s}.game-card:nth-child(12){animation-delay:.6s}.game-card:active{transform:scale(.96)}.game-card-icon{background:var(--bg);border-radius:50%;place-items:center;width:72px;height:72px;font-size:2.25rem;display:grid}.game-card-title{text-align:center;font-size:1.15rem;font-weight:800}.game-view{background:radial-gradient(ellipse 60% 40% at 50% 0%, #7a9e8a33, transparent 60%), var(--bg);flex-direction:column;height:100%;display:flex}.game-hud{padding:calc(.75rem + var(--safe-top)) calc(.75rem + var(--safe-right)) .75rem calc(.75rem + var(--safe-left));z-index:10;flex-shrink:0;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.game-hud-left,.game-hud-right{align-items:center;gap:.5rem;display:flex}.hud-btn{min-width:var(--tap-min);background:var(--surface-raised);min-height:48px;box-shadow:0 4px 14px var(--shadow);border-radius:999px;justify-content:center;align-items:center;gap:.35rem;padding:0 1rem;font-size:1rem;font-weight:800;transition:transform .15s;display:inline-flex}.hud-btn:active{transform:scale(.94)}.hud-btn.icon-only{width:48px;padding:0;font-size:1.25rem}.hud-session{background:var(--surface-raised);box-shadow:0 4px 14px var(--shadow);border-radius:999px;align-items:center;gap:.35rem;padding:.5rem 1rem;font-size:1.15rem;font-weight:800;display:flex}.hud-session .star{color:var(--accent-2)}.game-stage{min-height:0;padding:.5rem calc(.75rem + var(--safe-right)) calc(.75rem + var(--safe-bottom)) calc(.75rem + var(--safe-left));flex:1;justify-content:center;align-items:center;display:flex;position:relative}.game-stage>*{width:100%;max-width:720px;height:100%;max-height:100%}.game-stage:has(.ludo-root){max-width:none;padding-left:calc(.5rem + var(--safe-left));padding-right:calc(.5rem + var(--safe-right));overflow:visible}.game-stage:has(.ludo-root)>*{width:auto;max-width:none;height:auto;max-height:none;overflow:visible}.playfield{flex-direction:column;justify-content:center;align-items:center;gap:1.5rem;padding:1rem;display:flex}.prompt{text-align:center;color:var(--ink);font-size:clamp(1.25rem,4vw,1.75rem);font-weight:800}.prompt-visual{justify-content:center;align-items:center;gap:.5rem;min-height:80px;display:flex}.options-row{flex-wrap:wrap;justify-content:center;align-items:center;gap:1rem;width:100%;display:flex}.big-tap{width:clamp(88px,28vw,120px);height:clamp(88px,28vw,120px);min-width:var(--tap-min);min-height:var(--tap-min);border-radius:var(--radius);background:var(--surface-raised);box-shadow:0 6px 20px var(--shadow);place-items:center;font-size:clamp(2rem,8vw,3rem);transition:transform .15s,background .2s;animation:.35s pop-in;display:grid}.big-tap:active{transform:scale(.92)}.big-tap.correct{background:#6a9b7859}.big-tap.wrong{background:#d4896a40}.doors-row{flex-wrap:wrap;justify-content:center;gap:1rem;width:100%;display:flex}.door{border-radius:var(--radius);background:var(--accent);width:clamp(100px,28vw,140px);height:clamp(140px,36vw,180px);box-shadow:0 8px 24px var(--shadow);justify-content:center;align-items:flex-end;padding-bottom:1rem;transition:transform .15s;display:flex;position:relative;overflow:hidden}.door:active{transform:scale(.96)}.door-face{background:linear-gradient(180deg, var(--accent) 0%, var(--accent-strong) 100%);color:#ffffff59;place-items:center;font-size:2rem;transition:transform .35s;display:grid;position:absolute;inset:0}.door.open .door-face{transform:translateY(-100%)}.door-animal{opacity:0;z-index:1;font-size:clamp(2.5rem,10vw,3.5rem);transition:opacity .2s .15s}.door.open .door-animal{opacity:1}.count-orbs{flex-wrap:wrap;justify-content:center;gap:1rem;max-width:400px;display:flex}.count-orb{background:radial-gradient(circle at 35% 30%, var(--accent-2-soft), var(--accent-2));width:clamp(72px,20vw,96px);height:clamp(72px,20vw,96px);box-shadow:0 6px 18px var(--shadow);border-radius:50%;transition:transform .15s,opacity .2s;animation:.3s pop-in}.count-orb:active{transform:scale(.88)}.count-orb.tapped{opacity:.35;pointer-events:none;transform:scale(.75)}.dots-row{justify-content:center;gap:.6rem;display:flex}.dot{background:var(--accent);border-radius:50%;width:28px;height:28px}.memory-grid{grid-template-columns:repeat(3,1fr);gap:.75rem;width:100%;max-width:420px;margin:0 auto;display:grid}.memory-card{aspect-ratio:1;border-radius:var(--radius-sm);perspective:600px;cursor:pointer;min-height:var(--tap-min)}.memory-card-inner{width:100%;height:100%;transform-style:preserve-3d;-webkit-transform-style:preserve-3d;transition:transform .35s;position:relative}.memory-card.flipped .memory-card-inner,.memory-card.matched .memory-card-inner{transform:rotateY(180deg)}.memory-face{backface-visibility:hidden;border-radius:var(--radius-sm);box-shadow:0 4px 14px var(--shadow);place-items:center;font-size:clamp(1.75rem,7vw,2.5rem);display:grid;position:absolute;inset:0}.memory-back{background:var(--accent);color:#fff6}.memory-front{background:var(--surface-raised);transform:rotateY(180deg)}.memory-card.matched .memory-front{background:#6a9b784d}.canvas-wrap{border-radius:var(--radius);touch-action:none;background:linear-gradient(#dfeadf 0%,#c9d8cb 100%);width:100%;height:100%;position:relative;overflow:hidden;box-shadow:inset 0 0 0 3px #7a9e8a40}.canvas-wrap canvas{width:100%;height:100%;display:block}.color-swatch{width:clamp(72px,20vw,96px);height:clamp(72px,20vw,96px);box-shadow:0 6px 18px var(--shadow);border:4px solid var(--surface-raised);border-radius:50%}.color-option{border:4px solid #ffffff8c}.color-option.correct{box-shadow:0 0 0 4px var(--success)}.color-option.wrong{opacity:.7}.size-row{align-items:flex-end;gap:1.5rem}.size-tap{border-radius:var(--radius);background:var(--surface-raised);box-shadow:0 6px 20px var(--shadow);place-items:center;transition:transform .15s,background .2s;animation:.35s pop-in;display:grid}.size-tap.is-big{width:clamp(140px,40vw,180px);height:clamp(140px,40vw,180px);font-size:clamp(3.5rem,14vw,5rem)}.size-tap.is-small{width:clamp(72px,20vw,96px);height:clamp(72px,20vw,96px);font-size:clamp(1.75rem,7vw,2.25rem)}.size-tap:active{transform:scale(.94)}.size-tap.correct{background:#6a9b7859}.size-tap.wrong{background:#d4896a40}.scribble-root{flex-direction:column;gap:.75rem;width:100%;height:100%;display:flex}.scribble-toolbar{flex-wrap:wrap;flex-shrink:0;justify-content:center;align-items:center;gap:.6rem;display:flex}.scribble-swatch{width:44px;min-width:44px;height:44px;box-shadow:0 3px 10px var(--shadow);border:3px solid #0000;border-radius:50%}.scribble-swatch.active{border-color:var(--ink);transform:scale(1.08)}.scribble-clear{background:var(--surface-raised);min-height:44px;box-shadow:0 3px 10px var(--shadow);border-radius:999px;padding:0 1rem;font-weight:800}.scribble-canvas-host{flex:1;min-height:0}.stack-playfield{gap:1rem}.stack-area{border-radius:var(--radius);background:#ffffff59;flex-direction:column-reverse;justify-content:flex-start;align-items:center;gap:.35rem;width:min(280px,80%);min-height:220px;padding:1rem;display:flex;box-shadow:inset 0 0 0 2px #7a9e8a33}.stack-block{width:70%;height:36px;box-shadow:0 4px 12px var(--shadow);border-radius:10px;animation:.3s backwards pop-in}.stack-btn{background:var(--accent);color:#fff;width:clamp(88px,24vw,112px);height:clamp(88px,24vw,112px);box-shadow:0 8px 22px var(--shadow);border-radius:50%;font-size:2.5rem;font-weight:800;transition:transform .15s}.stack-btn:active{transform:scale(.92)}.rabbit-playfield{gap:.85rem}.rabbit-meta{color:var(--ink-soft);font-size:clamp(1rem,3.2vw,1.2rem);font-weight:800}.rabbit-field{aspect-ratio:1;border-radius:var(--radius);width:min(100%,420px,58dvh);box-shadow:inset 0 0 0 3px #5f857047, 0 8px 22px var(--shadow);background:radial-gradient(70% 50% at 50% 12%,#ffffff47,#0000 58%),linear-gradient(#c5d6b4 0%,#9bb584 100%);grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);gap:clamp(.65rem,2.6vw,1.15rem);padding:clamp(.85rem,3vw,1.25rem);display:grid}.rabbit-field.done{opacity:.72;pointer-events:none}.rabbit-hole{min-width:var(--tap-min);min-height:var(--tap-min);background:0 0;place-items:center;display:grid;position:relative}.rabbit-well{aspect-ratio:1.18;background:radial-gradient(at 50% 32%,#4a3b30 0%,#1c1511 72%);border-radius:50%;width:82%;position:relative;overflow:hidden;box-shadow:inset 0 10px 16px #00000073,0 2px 0 3px #6e5642,0 7px 14px #3d4a4238}.rabbit-sprite{pointer-events:none;font-size:clamp(2rem,11vw,3.35rem);line-height:1;transition:transform .3s cubic-bezier(.22,1.15,.36,1);position:absolute;bottom:-6%;left:50%;transform:translate(-50%,110%)}.rabbit-hole.peeking .rabbit-sprite{animation:.55s ease-in-out infinite rabbit-bob;transform:translate(-50%,16%)}.rabbit-hole.caught .rabbit-sprite{animation:none;transform:translate(-50%,-8%)scale(1.12)}.rabbit-hole.hiding .rabbit-sprite{transition:transform .26s ease-in;animation:none;transform:translate(-50%,110%)}@keyframes rabbit-bob{0%,to{transform:translate(-50%,16%)}50%{transform:translate(-50%,8%)}}.rabbit-again{background:var(--accent);color:#fff;min-width:clamp(88px,24vw,128px);min-height:52px;box-shadow:0 8px 22px var(--shadow);border-radius:999px;padding:0 1.4rem;font-size:1.2rem;font-weight:800;transition:transform .15s}.rabbit-again:active{transform:scale(.94)}.ludo-root{--ludo-red:#ef6b67;--ludo-red-dark:#e53935;--ludo-red-light:#ff8a80;--ludo-green:#9ccc65;--ludo-green-dark:#7cb342;--ludo-green-light:#c5e1a5;--ludo-yellow:#ffca28;--ludo-yellow-dark:#ffb300;--ludo-yellow-light:#ffe082;--ludo-blue:#81d4fa;--ludo-blue-dark:#4fc3f7;--ludo-blue-light:#b3e5fc;--yard-red-top:#ffebee;--yard-red-mid:#ffcdd2;--yard-red-bot:#ef9a9a;--yard-green-top:#e8f5e9;--yard-green-mid:#c8e6c9;--yard-green-bot:#a5d6a7;--yard-yellow-top:#fff8e1;--yard-yellow-mid:#ffecb3;--yard-yellow-bot:#ffe082;--yard-blue-top:#e3f2fd;--yard-blue-mid:#bbdefb;--yard-blue-bot:#90caf9;--ludo-dice-stack:calc(var(--tap-min) + 1.1rem);--ludo-board-size:min(calc(100vw - 32px - var(--safe-left) - var(--safe-right)), calc(100dvh - 220px - var(--safe-top) - var(--safe-bottom)), 520px);touch-action:manipulation;flex-direction:column;justify-content:center;align-items:center;width:100%;max-width:none;height:100%;min-height:0;display:flex;position:relative;overflow:visible}.ludo-mode{flex-wrap:wrap;justify-content:center;align-items:center;gap:1.25rem;padding:1rem;display:flex}.ludo-mode-btn,.ludo-replay{width:var(--tap-min);height:var(--tap-min);min-width:var(--tap-min);min-height:var(--tap-min);background:var(--surface-raised);box-shadow:0 6px 20px var(--shadow);touch-action:manipulation;-webkit-tap-highlight-color:transparent;border-radius:50%;place-items:center;font-size:1.75rem;animation:.35s pop-in;display:grid}.ludo-mode-btn:active,.ludo-replay:active,.ludo-mode-text:active{transform:scale(.94)}.ludo-mode-stack{flex-direction:column}.ludo-mode-text{min-width:min(16rem,80vw);min-height:var(--tap-min);background:var(--surface-raised);box-shadow:0 6px 20px var(--shadow);touch-action:manipulation;-webkit-tap-highlight-color:transparent;border-radius:999px;padding:0 1.4rem;font-size:1.15rem;font-weight:800;animation:.35s pop-in}.ludo-online{flex-direction:column;justify-content:center;align-items:center;gap:1.1rem;width:min(100%,320px);padding:1rem;display:flex}.ludo-code{background:0 0;gap:.45rem;padding:.2rem;animation:.35s pop-in;display:flex}.ludo-code span{background:var(--surface-raised);width:3.1rem;height:3.6rem;box-shadow:0 6px 18px var(--shadow);letter-spacing:.04em;color:var(--ink);border-radius:14px;place-items:center;font-size:1.85rem;font-weight:800;display:grid}.ludo-code-input{background:var(--surface-raised);width:min(100%,16rem);height:4.2rem;box-shadow:0 6px 18px var(--shadow);text-align:center;font:inherit;letter-spacing:.55rem;text-transform:uppercase;color:var(--ink);-webkit-user-select:text;user-select:text;border:0;border-radius:18px;padding:0 .6rem 0 1.1rem;font-size:2rem;font-weight:800;animation:.35s pop-in}.ludo-code-input:focus{outline:3px solid var(--accent);outline-offset:2px}.ludo-qr{width:168px;height:168px;box-shadow:0 6px 18px var(--shadow);background:#fff;border-radius:18px;padding:8px;animation:.45s pop-in}.ludo-qr svg{width:100%;height:100%;display:block}.ludo-wait{background:var(--accent);border-radius:50%;width:18px;height:18px;animation:1.2s ease-out infinite ludo-wait-pulse;box-shadow:0 0 #7a9e8a73}.ludo-corner.mine{opacity:1}.ludo-layout{justify-content:center;align-items:center;width:100%;height:100%;min-height:0;padding:0;display:flex;overflow:visible}.ludo-board-frame{width:var(--ludo-board-size);padding-top:calc(var(--ludo-dice-stack) + .45rem);padding-bottom:calc(var(--ludo-dice-stack) + .45rem);box-sizing:content-box;flex-shrink:0;position:relative}.ludo-board-wrap{width:var(--ludo-board-size);height:var(--ludo-board-size)}.ludo-flipped .ludo-board{transform:rotate(180deg)}.ludo-board{width:var(--ludo-board-size);height:var(--ludo-board-size);touch-action:manipulation;background:#eceff1;border:4px solid #fff;border-radius:14px;grid-template-rows:repeat(15,1fr);grid-template-columns:repeat(15,1fr);display:grid;position:relative;overflow:visible;box-shadow:0 10px 28px #0000002e}.ludo-dice-slot{z-index:12;justify-content:center;align-items:center;display:flex;position:absolute;overflow:visible}.ludo-dice-slot.tr{top:0;right:0}.ludo-dice-slot.bl{bottom:0;left:0}.ludo-corner{border-radius:var(--radius-sm);opacity:.65;flex-direction:column;align-items:center;gap:.35rem;padding:.35rem;transition:opacity .2s,transform .2s;display:flex}.ludo-corner.hue-red{--wave-color:#e539358c}.ludo-corner.hue-yellow{--wave-color:#f9a82599}.ludo-corner.active{opacity:1}.ludo-dice-wrap{width:var(--tap-min);height:var(--tap-min);place-items:center;display:grid;position:relative}.ludo-dice-wave{border:2px solid var(--wave-color,#e5393580);box-shadow:0 0 0 0 var(--wave-color,transparent);pointer-events:none;opacity:0;z-index:0;border-radius:20px;position:absolute;inset:0}.ludo-corner.active .ludo-dice-wave{animation:1.7s ease-out infinite ludo-dice-wave}.ludo-corner.active .ludo-dice-wave:nth-child(2){animation-delay:.55s}.ludo-corner.active .ludo-dice-wave:nth-child(3){animation-delay:1.1s}:is(.ludo-corner.active:has(.rolling) .ludo-dice-wave,.ludo-corner.winner .ludo-dice-wave){opacity:0;animation:none}.ludo-corner.winner{opacity:1;animation:1.1s ease-in-out infinite ludo-corner-win}.ludo-progress{pointer-events:none;align-items:center;gap:.28rem;display:flex}.ludo-dot{background:#ffffff80;border:2px solid #0000001f;border-radius:50%;width:10px;height:10px}.ludo-dot.hue-red.filled{background:var(--ludo-red);border-color:var(--ludo-red-dark)}.ludo-dot.hue-yellow.filled{background:var(--ludo-yellow);border-color:var(--ludo-yellow-dark)}.ludo-dot.hue-green.filled{background:var(--ludo-green);border-color:var(--ludo-green-dark)}.ludo-dot.hue-blue.filled{background:var(--ludo-blue);border-color:var(--ludo-blue-dark)}.ludo-cell{border:.5px solid #00000014;min-width:0;min-height:0;position:relative}.ludo-cell.path{background:#fafafa}.ludo-cell.empty{background:#e0e0e0}.ludo-cell.yard{border-color:#0000}.ludo-cell.yard.frame{box-shadow:none}.ludo-cell.yard.red.frame{background:linear-gradient(160deg, var(--ludo-red-light), var(--ludo-red) 45%, var(--ludo-red-dark))}.ludo-cell.yard.green.frame{background:linear-gradient(160deg, var(--ludo-green-light), var(--ludo-green) 45%, var(--ludo-green-dark))}.ludo-cell.yard.yellow.frame{background:linear-gradient(160deg, var(--ludo-yellow-light), var(--ludo-yellow) 45%, var(--ludo-yellow-dark))}.ludo-cell.yard.blue.frame{background:linear-gradient(160deg, var(--ludo-blue-light), var(--ludo-blue) 45%, var(--ludo-blue-dark))}.ludo-cell.yard.red.nest{background:#fff5f5}.ludo-cell.yard.green.nest{background:#f1f8f1}.ludo-cell.yard.yellow.nest{background:#fffbeb}.ludo-cell.yard.blue.nest{background:#f3f8ff}.ludo-cell.yard.pad{z-index:1;background:#fff;border-radius:50%}.ludo-cell.yard.red.pad{box-shadow:inset 0 0 0 2.5px var(--ludo-red), 0 2px 5px #b71c1c47}.ludo-cell.yard.green.pad{box-shadow:inset 0 0 0 2.5px var(--ludo-green), 0 2px 5px #1b5e2047}.ludo-cell.yard.yellow.pad{box-shadow:inset 0 0 0 2.5px var(--ludo-yellow-dark), 0 2px 5px #f57f1747}.ludo-cell.yard.blue.pad{box-shadow:inset 0 0 0 2.5px var(--ludo-blue), 0 2px 5px #0d47a147}.ludo-cell.home.red{background:linear-gradient(to top, var(--ludo-red-dark), var(--ludo-red) 40%, var(--ludo-red-light));box-shadow:inset 0 0 0 1px #ffffff47}.ludo-cell.home.yellow{background:linear-gradient(to bottom, var(--ludo-yellow-light), var(--ludo-yellow) 40%, var(--ludo-yellow-dark));box-shadow:inset 0 0 0 1px #ffffff47}.ludo-cell.home.green{background:linear-gradient(to right, var(--ludo-green-dark), var(--ludo-green) 40%, var(--ludo-green-light));box-shadow:inset 0 0 0 1px #ffffff47}.ludo-cell.home.blue{background:linear-gradient(to left, var(--ludo-blue-dark), var(--ludo-blue) 40%, var(--ludo-blue-light));box-shadow:inset 0 0 0 1px #ffffff47}.ludo-cell.center.c-6-6{background:var(--ludo-green)}.ludo-cell.center.c-6-7,.ludo-cell.center.c-6-8{background:var(--ludo-yellow)}.ludo-cell.center.c-7-6{background:var(--ludo-green)}.ludo-cell.center.c-7-7{background:conic-gradient(from 45deg, var(--ludo-yellow) 0deg 90deg, var(--ludo-blue) 90deg 180deg, var(--ludo-red) 180deg 270deg, var(--ludo-green) 270deg 360deg);z-index:1;border-radius:22%;box-shadow:0 0 0 2px #fff,0 2px 8px #0000002e}.ludo-cell.center.c-7-8{background:var(--ludo-blue)}.ludo-cell.center.c-8-6,.ludo-cell.center.c-8-7{background:var(--ludo-red)}.ludo-cell.center.c-8-8{background:var(--ludo-blue)}.ludo-cell.path.safe.red{background:var(--yard-red-mid)}.ludo-cell.path.safe.green{background:var(--yard-green-mid)}.ludo-cell.path.safe.yellow{background:var(--yard-yellow-mid)}.ludo-cell.path.safe.blue{background:var(--yard-blue-mid)}.ludo-cell.path.safe.star{background:#fff3c4}.ludo-cell.path.safe.red .ludo-safe{color:var(--ludo-red-dark)}.ludo-cell.path.safe.green .ludo-safe{color:var(--ludo-green-dark)}.ludo-cell.path.safe.yellow .ludo-safe{color:var(--ludo-yellow-dark)}.ludo-cell.path.safe.blue .ludo-safe{color:var(--ludo-blue-dark)}.ludo-cell.path.safe.star .ludo-safe{color:#ef6c00}.ludo-cell.has-stack{z-index:4;overflow:visible}.ludo-cell.has-movable{z-index:8}.ludo-cell.safe-stack:not(.path.safe):after{content:"★";color:#f57f17e6;pointer-events:none;z-index:2;text-shadow:0 0 4px #ffffffe6;font-size:clamp(7px,1.5vw,10px);position:absolute;bottom:1px;left:50%;transform:translate(-50%)}.ludo-safe{pointer-events:none;opacity:.9;place-items:center;font-size:clamp(8px,1.8vw,11px);display:grid;position:absolute;inset:0}.ludo-cell-hit{z-index:20;touch-action:manipulation;-webkit-tap-highlight-color:transparent;pointer-events:auto;background:#ffffff24;border:2px dashed #ffffffbf;border-radius:8px;animation:1.35s ease-in-out infinite ludo-cell-pick;position:absolute;inset:-55% -6px -6px;box-shadow:inset 0 0 8px #fff3}.ludo-cell:has(.ludo-cell-hit) .ludo-piece{pointer-events:none}.ludo-piece{z-index:3;width:82%;height:82%;transform:translate(var(--dx,0), var(--dy,0));touch-action:manipulation;-webkit-tap-highlight-color:transparent;border:2.5px solid #ffffffd9;border-radius:50%;position:absolute;top:9%;left:9%;box-shadow:0 3px 8px #00000059,inset 0 2px #ffffff8c}.ludo-piece:before{content:"";position:absolute;inset:-10px}.ludo-piece.stacked{width:72%;height:72%;top:18%;left:14%;box-shadow:0 5px 10px #0000006b,inset 0 2px #fff9}.ludo-piece.hue-red{--piece-glow:#e5393552;--piece-ring:#e53935b3;background:radial-gradient(circle at 35% 30%, var(--ludo-red-light), var(--ludo-red) 55%, var(--ludo-red-dark))}.ludo-piece.hue-yellow{--piece-glow:#f9a82552;--piece-ring:#f9a825b3;background:radial-gradient(circle at 35% 30%, var(--ludo-yellow-light), var(--ludo-yellow) 55%, var(--ludo-yellow-dark))}.ludo-piece.hue-green{--piece-glow:#2e7d3252;--piece-ring:#2e7d32b3;background:radial-gradient(circle at 35% 30%, var(--ludo-green-light), var(--ludo-green) 55%, var(--ludo-green-dark))}.ludo-piece.hue-blue{--piece-glow:#1565c052;--piece-ring:#1565c0b3;background:radial-gradient(circle at 35% 30%, var(--ludo-blue-light), var(--ludo-blue) 55%, var(--ludo-blue-dark))}.ludo-piece.can-move{z-index:5;cursor:pointer;animation:1.35s ease-in-out infinite ludo-piece-pick}.ludo-board.pick-phase .ludo-piece:not(.can-move){pointer-events:none}.ludo-piece.can-move:after{content:"";border:2px solid var(--piece-ring,#fff);pointer-events:none;border-radius:50%;animation:1.35s ease-in-out infinite ludo-piece-ring;position:absolute;inset:-10%}.ludo-piece.hopping{z-index:6}.ludo-piece-fly{z-index:12;pointer-events:none;will-change:transform;filter:drop-shadow(0 10px 8px #00000047);margin:0;position:absolute;top:0;left:0}.ludo-piece-fly.eater{z-index:14;animation:.22s ease-in-out infinite ludo-chomp}.ludo-piece-fly.eater:before{display:none}.ludo-piece-fly.eater:after{content:"";width:16%;height:16%;box-shadow:none;top:16%;left:46%;background:#2a2a2a;border:0;border-radius:50%;animation:none;position:absolute;inset:auto}.ludo-piece.is-eaten{z-index:2;pointer-events:none;animation:.48s ease-in forwards ludo-swallowed}.ludo-crumb{z-index:13;pointer-events:none;border-radius:50%;width:7px;height:7px;margin:-3.5px 0 0 -3.5px;animation:.65s ease-out forwards ludo-crumb;position:absolute}.ludo-crumb.hue-red{background:var(--ludo-red)}.ludo-crumb.hue-yellow{background:var(--ludo-yellow)}.ludo-crumb.hue-green{background:var(--ludo-green)}.ludo-crumb.hue-blue{background:var(--ludo-blue)}.ludo-cell.has-movable:before{content:"";pointer-events:none;z-index:1;background:#ffffff14;border:1px dashed #ffffff8c;border-radius:5px;animation:1.35s ease-in-out infinite ludo-cell-glow;position:absolute;inset:3px}.ludo-dice{width:var(--tap-min);height:var(--tap-min);min-width:var(--tap-min);min-height:var(--tap-min);z-index:1;touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:linear-gradient(160deg,#fff 0%,#f4f4f4 45%,#e8e8e8 100%);border:3px solid #ffffffe6;border-radius:18px;place-items:center;padding:7px;transition:transform .12s,box-shadow .2s;display:grid;position:relative;box-shadow:inset 0 1px #ffffffe6,inset 0 -3px #0000001f,0 8px 18px #00000038}.ludo-dice:after{content:"";pointer-events:none;border-radius:12px;position:absolute;inset:9px;box-shadow:inset 0 2px 5px #00000012}.ludo-dice-face{z-index:1;place-items:center;width:100%;height:100%;display:grid;position:relative}.ludo-dice-face.idle .ludo-dice-grid{opacity:.45}.ludo-dice-grid{aspect-ratio:1;grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);gap:4px;width:72%;height:72%;display:grid}.ludo-pip{background:0 0;border-radius:50%;width:100%;height:100%}.ludo-pip.on{background:radial-gradient(circle at 35% 30%, var(--dice-pip-light), var(--dice-pip) 70%);box-shadow:0 1px 2px #00000040,inset 0 -1px 1px #00000026}.ludo-pip.hint.on{background:var(--dice-pip);opacity:.22;box-shadow:none}.ludo-dice.hue-red{--dice-pip:var(--ludo-red-dark);--dice-pip-light:var(--ludo-red-light);outline:3px solid var(--ludo-red);outline-offset:1px}.ludo-dice.hue-yellow{--dice-pip:var(--ludo-yellow-dark);--dice-pip-light:var(--ludo-yellow-light);outline:3px solid var(--ludo-yellow);outline-offset:1px}.ludo-corner.active .ludo-dice.hue-red:not(.rolling){animation:1.25s ease-in-out infinite ludo-dice-turn-red;box-shadow:inset 0 1px #ffffffe6,inset 0 -3px #0000001f,0 0 0 4px #e5393566,0 10px 24px #e5393580}.ludo-corner.active .ludo-dice.hue-yellow:not(.rolling){animation:1.25s ease-in-out infinite ludo-dice-turn-yellow;box-shadow:inset 0 1px #ffffffe6,inset 0 -3px #0000001f,0 0 0 4px #f9a82573,0 10px 24px #f9a82580}.ludo-dice.is-idle{opacity:.8;filter:saturate(.85)}.ludo-dice.can-roll:active{transform:scale(.92)translateY(2px);box-shadow:inset 0 1px #ffffffe6,inset 0 -1px #0000001a,0 4px 10px #0003}.ludo-dice.rolling{animation:.22s ease-in-out infinite ludo-dice-roll}@keyframes ludo-dice-roll{0%,to{transform:rotate(-6deg)scale(1.03)}50%{transform:rotate(6deg)scale(1.03)}}.ludo-replay{z-index:25;pointer-events:auto;font-size:1.5rem;font-weight:800;animation:.6s cubic-bezier(.34,1.56,.64,1) .45s both ludo-replay-pop;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ludo-board-frame.victory{animation:1.4s ease-in-out infinite ludo-frame-glow}.ludo-board.victory{animation:1.4s ease-in-out infinite ludo-board-win}.ludo-victory-overlay{z-index:22;pointer-events:none;background:radial-gradient(circle,#ffffff6b 0%,#ffffff14 55%,#0000 75%);place-items:center;animation:.45s ludo-victory-fade-in;display:grid;position:absolute;inset:0;overflow:hidden}.ludo-victory-confetti{pointer-events:none;position:absolute;inset:0;overflow:hidden}.ludo-confetti{top:-12%;left:var(--left);background:var(--c);opacity:0;width:8px;height:14px;animation:2.4s ease-in forwards ludo-confetti-fall;animation-delay:var(--delay);border-radius:2px;position:absolute}.ludo-victory-card{background:#fffffff5;border-radius:22px;flex-direction:column;align-items:center;gap:.25rem;padding:.85rem 1.35rem 1rem;animation:.7s cubic-bezier(.34,1.56,.64,1) ludo-victory-pop;display:flex;box-shadow:0 14px 36px #00000038,0 0 0 4px #ffffffd9}.ludo-victory-card.hue-red{box-shadow:0 14px 36px #e5393559,0 0 0 4px #e5393573}.ludo-victory-card.hue-yellow{box-shadow:0 14px 36px #f9a82559,0 0 0 4px #f9a82573}.ludo-victory-icon{font-size:clamp(2.6rem,12vw,4rem);line-height:1;animation:1.1s ease-in-out infinite ludo-victory-trophy}.ludo-victory-stars{letter-spacing:.35rem;color:var(--accent-2);font-size:clamp(1rem,4.5vw,1.35rem);animation:1.2s ease-in-out infinite ludo-victory-stars}.ludo-piece.winner-piece{z-index:7;animation:.85s ease-in-out infinite ludo-winner-dance}.ludo-piece.winner-piece:after{display:none}@keyframes ludo-replay-pop{0%{opacity:0;transform:translate(-50%,-50%)scale(.5)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}@keyframes ludo-frame-glow{0%,to{filter:drop-shadow(0 0 #0000)}50%{filter:drop-shadow(0 0 18px #ffd7408c)}}@keyframes ludo-board-win{0%,to{transform:scale(1);box-shadow:0 10px 28px #0000002e}50%{transform:scale(1.035);box-shadow:0 16px 36px #0000003d,0 0 0 6px #ffd74059}}@keyframes ludo-victory-fade-in{0%{opacity:0}to{opacity:1}}@keyframes ludo-victory-pop{0%{opacity:0;transform:scale(.35)rotate(-8deg)}70%{transform:scale(1.08)rotate(2deg)}to{opacity:1;transform:scale(1)rotate(0)}}@keyframes ludo-victory-trophy{0%,to{transform:translateY(0)scale(1)rotate(-4deg)}50%{transform:translateY(-10%)scale(1.12)rotate(4deg)}}@keyframes ludo-victory-stars{0%,to{opacity:.65;transform:scale(.95)}50%{opacity:1;transform:scale(1.08)}}@keyframes ludo-confetti-fall{0%{opacity:0;transform:translateY(0)rotate(0)}10%{opacity:1}to{opacity:0;transform:translateY(115vh)rotate(540deg)}}@keyframes ludo-winner-dance{0%,to{transform:translate(var(--dx,0), var(--dy,0)) scale(1) rotate(0deg);box-shadow:0 3px 8px #00000059}25%{transform:translate(var(--dx,0), calc(var(--dy,0) - 14%)) scale(1.2) rotate(-8deg)}75%{transform:translate(var(--dx,0), calc(var(--dy,0) - 10%)) scale(1.15) rotate(8deg)}}@keyframes ludo-corner-win{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}@keyframes ludo-dice-wave{0%{opacity:.7;transform:scale(1)}to{opacity:0;transform:scale(1.72)}}@keyframes ludo-dice-turn-red{0%,to{transform:scale(1);box-shadow:inset 0 1px #ffffffe6,inset 0 -3px #0000001f,0 0 0 4px #e5393559,0 8px 18px #e5393559}50%{transform:scale(1.06);box-shadow:inset 0 1px #ffffffe6,inset 0 -3px #0000001f,0 0 0 6px #e5393580,0 12px 28px #e539358c}}@keyframes ludo-dice-turn-yellow{0%,to{transform:scale(1);box-shadow:inset 0 1px #ffffffe6,inset 0 -3px #0000001f,0 0 0 4px #f9a82559,0 8px 18px #f9a82559}50%{transform:scale(1.06);box-shadow:inset 0 1px #ffffffe6,inset 0 -3px #0000001f,0 0 0 6px #f9a8258c,0 12px 28px #f9a8258c}}@keyframes ludo-wait-pulse{0%{transform:scale(.85);box-shadow:0 0 #7a9e8a73}70%{transform:scale(1);box-shadow:0 0 0 12px #7a9e8a00}to{transform:scale(.85);box-shadow:0 0 #7a9e8a00}}@keyframes ludo-shake{0%,to{transform:rotate(-4deg)scale(1.02)}50%{transform:rotate(4deg)scale(1.02)}}@keyframes ludo-chomp{0%,to{clip-path:polygon(0 0,100% 0,100% 28%,52% 50%,100% 72%,100% 100%,0 100%)}50%{clip-path:polygon(0 0,100% 0,100% 48%,52% 50%,100% 52%,100% 100%,0 100%)}}@keyframes ludo-swallowed{0%{transform:translate(var(--dx,0), var(--dy,0)) scale(1);opacity:1}55%{transform:translate(var(--dx,0), var(--dy,0)) scale(.42);opacity:.75}to{transform:translate(var(--dx,0), var(--dy,0)) scale(0);opacity:0}}@keyframes ludo-crumb{0%{opacity:1;transform:translate(0)scale(1)}to{opacity:0;transform:translate(var(--dx), var(--dy)) scale(.3)}}@keyframes ludo-hop{0%{transform:translate(var(--dx,0), var(--dy,0)) scale(1)}45%{transform:translate(var(--dx,0), calc(var(--dy,0) - 18%)) scale(1.12)}to{transform:translate(var(--dx,0), var(--dy,0)) scale(1)}}@keyframes ludo-piece-pick{0%,to{transform:translate(var(--dx,0), var(--dy,0)) scale(1);box-shadow:0 0 0 0 var(--piece-glow,#ffffff59), 0 3px 8px #00000059, inset 0 2px 0 #ffffff8c}50%{transform:translate(var(--dx,0), calc(var(--dy,0) - 7%)) scale(1.1);box-shadow:0 0 0 5px var(--piece-glow,#ffffff38), 0 6px 12px #00000061, inset 0 2px 0 #fff9}}@keyframes ludo-piece-ring{0%,to{opacity:.75;transform:scale(1)}50%{opacity:.35;transform:scale(1.18)}}@keyframes ludo-cell-glow{0%,to{opacity:.45}50%{opacity:.75}}@keyframes ludo-cell-pick{0%,to{opacity:.7}50%{opacity:.95}}@media (orientation:landscape) and (height<=520px){.ludo-root{--ludo-board-size:min(calc(100dvh - 72px - var(--safe-top) - var(--safe-bottom)), calc(100vw - 180px - var(--safe-left) - var(--safe-right)), 520px)}.ludo-board-frame{width:var(--ludo-board-size);padding-top:0;padding-bottom:0;padding-left:calc(var(--ludo-dice-stack) + .45rem);padding-right:calc(var(--ludo-dice-stack) + .45rem)}.ludo-dice-slot.tr{top:50%;right:0;transform:translateY(-50%)}.ludo-dice-slot.bl{top:50%;bottom:auto;left:0;transform:translateY(-50%)}}
