:root{font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,Segoe UI,Roboto,Arial,sans-serif;font-weight:400;line-height:1.5}*,:before,:after{box-sizing:border-box}body{background:#f1eac5;min-width:320px;min-height:100vh;margin:0}.landing{color:#3d3018;place-items:center;min-height:100vh;display:grid}button{color:#fdf4df;cursor:pointer;background-color:#b23a30;border:1px solid #7c2a22;border-radius:8px;padding:.48rem .72rem;font-family:inherit;font-size:.92rem;font-weight:600}button:hover:not(:disabled){background-color:#c74a3e;border-color:#e8b45a}button:disabled{opacity:.6;cursor:not-allowed}button:focus-visible{outline-offset:2px;outline:3px solid #f0cf6e}.bg-layer{z-index:0;pointer-events:none;position:fixed;inset:0;overflow:hidden}.bg-svg{width:100%;height:100%;position:absolute;inset:0}.bg-logo{z-index:1;width:clamp(170px,24vw,410px);height:auto;position:absolute;top:clamp(16px,4vh,44px);left:clamp(20px,4.5vw,72px)}.bg-bob,.bg-bob-slow,.bg-sway,.bg-drift,.bg-drift-slow,.bg-breathe,.bg-spin{transform-box:fill-box;transform-origin:50%}.bg-bob{animation:9s ease-in-out infinite bg-bob}.bg-bob-slow{animation:15s ease-in-out infinite bg-bob}.bg-sway{animation:12s ease-in-out infinite bg-sway}.bg-drift{animation:24s ease-in-out infinite alternate bg-drift}.bg-drift-slow{animation:38s ease-in-out infinite alternate bg-drift}.bg-breathe{animation:18s ease-in-out infinite bg-breathe}.bg-spin{animation:90s linear infinite bg-spin}.bg-dash-march{animation:40s linear infinite bg-dash-march}.bg-twinkle{animation:14s ease-in-out infinite bg-twinkle}@keyframes bg-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-12px)}}@keyframes bg-sway{0%,to{transform:translate(0)rotate(0)}50%{transform:translate(8px,-7px)rotate(12deg)}}@keyframes bg-drift{0%{transform:translate(0)scale(1)}to{transform:translate(-18px,14px)scale(1.03)}}@keyframes bg-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.045)}}@keyframes bg-spin{to{transform:rotate(360deg)}}@keyframes bg-dash-march{to{stroke-dashoffset:-390px}}@keyframes bg-twinkle{0%,to{opacity:.8}50%{opacity:.5}}@media (prefers-reduced-motion:reduce){.bg-layer *{animation:none!important}}.smoke-puffs{pointer-events:none;position:absolute;inset:0}.smoke-puff{filter:blur(2px);opacity:0;background:radial-gradient(circle at 45% 40%,#fffffffa,#f2eee0e0 55%,#e8e4d400 72%);border-radius:50%;animation-name:smoke-puff;animation-timing-function:ease-out;animation-fill-mode:both;position:absolute;transform:translate(-50%,-50%)}@keyframes smoke-puff{0%{opacity:0;translate:0;scale:.15}18%{opacity:1;scale:.9}55%{opacity:.9}to{opacity:0;scale:1.5;translate:var(--drift-x) var(--drift-y)}}@media (prefers-reduced-motion:reduce){.smoke-puff{display:none}}.countdown-layer{z-index:1000;pointer-events:none;position:fixed;inset:0}.countdown-box{aspect-ratio:1;width:640px;position:absolute;top:50%;left:50%}.countdown-figure-slot{justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.countdown-figure{letter-spacing:-.02em;color:#e04553;text-shadow:0 10px 40px #1f060473;text-box:trim-both cap alphabetic;animation:countdown-figure-cycle var(--figure-ms) linear both;font-size:460px;font-weight:900;line-height:1;position:relative}.countdown-figure.go{font-size:600px}.countdown-figure:before,.countdown-figure:after{content:attr(data-label);text-align:center;opacity:0;text-shadow:none;text-box:trim-both cap alphabetic;position:absolute;inset:0}.countdown-figure:before{color:#3d3d3d;animation:countdown-glitch-a var(--figure-ms) steps(1, end) both}.countdown-figure:after{color:#8a2830;animation:countdown-glitch-b var(--figure-ms) steps(1, end) both}@keyframes countdown-figure-cycle{0%{opacity:0;color:#f2a9ad;animation-timing-function:cubic-bezier(.22,1,.36,1);scale:1.8}16%{opacity:1;color:#e04553;scale:1}45%{color:#8a2830}70%{color:#2b2b2b;opacity:1;transform:skew(0)}76%{transform:skew(-8deg)}82%{color:#1c1c1c;opacity:.85;transform:skew(6deg)}88%{opacity:.65;transform:skew(-10deg)}to{color:#0f0f0f;opacity:0;transform:skew(12deg)}}@keyframes countdown-glitch-a{0%,70%{opacity:0}72%{opacity:.8;clip-path:inset(12% 0 62%);translate:-26px}78%{opacity:.7;clip-path:inset(48% 0 30%);translate:20px}86%{opacity:.6;clip-path:inset(70% 0 8%);translate:-30px}94%{opacity:.4;clip-path:inset(30% 0 45%);translate:34px}to{opacity:0}}@keyframes countdown-glitch-b{0%,70%{opacity:0}74%{opacity:.7;clip-path:inset(58% 0 18%);translate:28px}80%{opacity:.6;clip-path:inset(8% 0 74%);translate:-22px}88%{opacity:.5;clip-path:inset(40% 0 38%);translate:30px}96%{opacity:.35;clip-path:inset(66% 0 12%);translate:-34px}to{opacity:0}}@media (prefers-reduced-motion:reduce){.countdown-figure{animation:none}.countdown-figure:before,.countdown-figure:after{display:none}}.stage{color:#f3e9d0;touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;place-items:center;display:grid;position:fixed;inset:0;overflow:hidden}.scene{place-items:center;display:grid;position:absolute;top:50%;left:50%}.badge-layer{z-index:4;pointer-events:none;position:fixed;inset:0}.badge-layer-fade{animation-name:badge-layer-fade-in;animation-timing-function:ease-out;animation-fill-mode:both}@keyframes badge-layer-fade-in{0%{opacity:0}to{opacity:1}}.scene-marker-overlay{z-index:5;pointer-events:none}.board-wrap.board-ghost{box-shadow:none;background:0 0;border-color:#0000}.board-ghost .board{aspect-ratio:1}.board-wrap{z-index:1;background:#58ab57;border:2px solid #3c7a3b;width:640px;padding:.6rem;position:relative;box-shadow:0 8px 28px #00000059}.board-wrap.board-entering{animation:1.2s ease-out both board-materialize}.board-wrap.board-entering.quick{animation-duration:.6s}@keyframes board-materialize{0%{opacity:0;scale:.92}35%{opacity:0}75%{opacity:1}to{scale:1}}.board-smoke{aspect-ratio:1;pointer-events:none;z-index:2;width:640px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.board{grid-template-columns:repeat(5,minmax(0,1fr));gap:.5rem;display:grid;position:relative}.tile{aspect-ratio:1;color:#3d3018;text-align:left;background:#f8efcd;border:1px solid #3c7a3b;border-radius:0;align-content:space-between;justify-items:start;min-height:0;padding:.55rem;font-size:.82rem;transition:border-color .16s,box-shadow .16s,transform .16s;display:grid;position:relative}.tile-image{object-fit:cover;border-radius:inherit;pointer-events:none;width:100%;height:100%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.player-marker-layer{pointer-events:none;z-index:2;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.player-marker{will-change:transform;position:absolute;top:0;left:0}.player-marker-sprite{width:auto;max-width:none;display:block}.player-marker-sprite.entering{transform-origin:50% 90%;animation:.55s cubic-bezier(.34,1.56,.64,1) .2s both player-pop-in}@keyframes player-pop-in{0%{opacity:0;scale:.2}to{opacity:1;scale:1}}.player-puffs{pointer-events:none;position:absolute}.winner-zoom{z-index:2;background:#f8efcd;border:1px solid #3c7a3b;width:100%;height:100%;animation:.7s cubic-bezier(.22,1,.36,1) both winner-zoom-fill;position:absolute;top:0;left:0;overflow:hidden}.winner-zoom .tile-image{--prize-physical-size:3cm;width:calc(var(--prize-physical-size) / var(--scene-scale,1));height:calc(var(--prize-physical-size) / var(--scene-scale,1))}@keyframes winner-zoom-fill{0%{top:calc(var(--winner-row) * ((100% - 2rem) / 5 + .5rem));left:calc(var(--winner-col) * ((100% - 2rem) / 5 + .5rem));width:calc(20% - .4rem);height:calc(20% - .4rem)}}.tile:disabled{opacity:1;cursor:default}.screen-flash{opacity:.9;z-index:999;pointer-events:none;background:#fff;animation:.5s ease-out forwards screen-flash;position:fixed;inset:0}@keyframes screen-flash{0%{opacity:.9}to{opacity:0}}.badge-button{pointer-events:auto;cursor:pointer;background:0 0;border:none;border-radius:50%;padding:0;line-height:0;position:absolute;transform:translate(-50%,-50%)}.badge-button svg{width:100%;height:100%;display:block}.badge-button:disabled{opacity:1;cursor:not-allowed}.badge-button.bursting{pointer-events:none;z-index:1;animation-name:badge-burst;animation-timing-function:ease-out;animation-fill-mode:forwards}@keyframes badge-burst{0%{opacity:1;filter:brightness();transform:translate(-50%,-50%)scale(1)}35%{opacity:1;filter:brightness(2.4)saturate(.6);transform:translate(-50%,-50%)scale(1.35)}to{opacity:0;filter:brightness(3)saturate(.3);transform:translate(-50%,-50%)scale(2)}}@media (prefers-reduced-motion:reduce){.tile,.screen-flash,.winner-zoom,.board-wrap.board-entering,.player-marker-sprite.entering,.badge-layer-fade,.badge-button.bursting{transition:none;animation:none}}
