:root{--paper:#f2eadf;--ink:#18231f;--muted:#5e6d66;--track:#2b6a57;--candidate:#7df;--overlap:#8d4cc2;--surface-shadow:0 26px 80px #18231f40;--display:"Avenir Next", "Trebuchet MS", sans-serif;font-family:var(--display);color:var(--ink);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:radial-gradient(circle at top,#fff8ecf0,#0000 35%),linear-gradient(160deg,#efe4d2 0%,#d8c0a7 50%,#c7b093 100%)}*{box-sizing:border-box}html,body{min-height:100%}body{touch-action:none;overscroll-behavior:none;min-width:320px;margin:0;overflow:hidden}button{font:inherit}.app-shell{height:100svh;position:relative;overflow:hidden}.restart-button,.throw-button,.cell{cursor:pointer;border:0;transition:transform .18s,box-shadow .18s,background-color .18s,opacity .18s}.restart-button{top:max(16px, env(safe-area-inset-top));right:max(16px, env(safe-area-inset-right));z-index:5;color:var(--ink);box-shadow:var(--surface-shadow);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#fff8efe0;border-radius:999px;padding:12px 16px;position:fixed}.throw-button:hover,.throw-button:focus-visible,.restart-button:hover,.restart-button:focus-visible,.cell.is-confirmable:hover,.cell.is-confirmable:focus-visible{transform:translateY(-1px)scale(1.01)}.board-stage{place-items:center;height:100%;padding:0;display:grid}.board-frame{width:min(96vw,96svh);height:min(96vw,96svh);box-shadow:var(--surface-shadow);background:radial-gradient(circle at top,#fff9f0cc,#0000 34%),linear-gradient(#704a2bf5,#371c0dfa);border-radius:34px;position:relative;overflow:hidden}.board-grid,.dice-box{border-radius:26px;position:absolute;inset:clamp(10px,1.75vmin,18px)}.board-grid{z-index:1;background:linear-gradient(#fffaf11f,#ebdfd014),linear-gradient(135deg,#ffffff1f,#0000 55%);grid-template-columns:repeat(8,minmax(0,1fr));gap:8px;padding:10px;display:grid}.cell{aspect-ratio:1;z-index:1;background:#fff5e9d6;border:1px solid #18231f17;border-radius:20px;place-items:center;font-size:1.2rem;display:grid;position:relative;overflow:hidden}.cell.is-occupied{background:linear-gradient(#2b6a57f5,#13382df5);border-color:#0f3a2db3}.cell.is-wall{background:linear-gradient(#6c8a6b,#4a664a);border-color:#384d38;box-shadow:inset 0 2px 8px #0000004d}.cell.is-exit{background:linear-gradient(#31384feb,#111421f5);border-color:#c6e3ff38}.cell.is-exit-open{background:linear-gradient(#1e5943f5,#09251dfa);border-color:#76ffd280;box-shadow:0 0 0 2px #9effdf2e,inset 0 0 28px #6fffc829}.cell.is-exit-locked{box-shadow:inset 0 0 20px #475e842e}.exit-marker{--exit-progress-fill:0deg;background:conic-gradient(from -90deg, #71ffcdeb 0deg var(--exit-progress-fill), #ffffff17 var(--exit-progress-fill) 360deg);z-index:0;border-radius:17px;place-items:center;display:grid;position:absolute;inset:3px}.exit-marker:before{content:"";background:linear-gradient(#0b121ff5,#162331f0);border-radius:14px;position:absolute;inset:5px}.exit-core{z-index:1;text-align:center;color:#f1fbff;background:linear-gradient(#182735eb,#0b101cf5);border-radius:13px;align-content:center;place-items:center;gap:2px;width:calc(100% - 16px);height:calc(100% - 16px);padding:6px 4px;display:grid;position:relative;box-shadow:inset 0 0 0 1px #aee3ff2e}.cell.is-exit-open .exit-core{color:#ddfff1;background:linear-gradient(#114735eb,#081914f5);box-shadow:inset 0 0 0 1px #8affde3d}.exit-name,.exit-progress{z-index:1;line-height:1;display:block;position:relative}.exit-name{letter-spacing:.18em;text-transform:uppercase;font-size:clamp(.38rem,1.3vmin,.72rem)}.exit-progress{font-size:clamp(.52rem,2vmin,.92rem);font-weight:800}.cell.is-exit-burst{box-shadow:0 0 0 3px #c6ffe94d,0 0 40px #6fffcaf2,0 0 90px #6fffcaad,inset 0 0 34px #aaffdf4d}.cell.is-exit-burst .exit-marker{animation:2s ease-out forwards exitBurst}.cell.is-exit-burst .exit-core{animation:2s ease-out forwards exitGlow}.cell.is-drafted:after,.cell.is-confirmable:after{content:"";pointer-events:none;border-radius:14px;position:absolute;inset:8px}.cell.is-drafted:after{background:linear-gradient(#8cebffb8,#53d6ff66);animation:.54s ease-in-out infinite trailPulse;inset:4px;box-shadow:0 0 30px #86e7ff,0 0 54px #48cdff8f}.cell.is-overlap-destination{background:linear-gradient(#e6d4fff5,#9b65dbf0);box-shadow:0 0 0 4px #8d4cc238}.cell.is-draft-tail{box-shadow:0 0 0 3px #e0faff,0 0 40px #7ee5ff,0 0 66px #4ccdff94}.cell.is-draft-tail:after{background:linear-gradient(#bef7ffe6,#61d9ff80);animation:.4s ease-in-out infinite tailPulse;inset:2px;box-shadow:0 0 38px #c2f8ff,0 0 66px #51d4ff9e}.cell.is-confirmable{z-index:3;animation:.56s cubic-bezier(.2,.9,.3,1) infinite confirmCellPulse;box-shadow:0 0 0 3px #fff7dbfa,0 0 26px #ffd675e0,0 0 56px #ffb039b3}.cell.is-confirmable:after{background:radial-gradient(circle,#fff3c5d1 0%,#ffd67575 55%,#ffb74d14 100%);animation:.56s cubic-bezier(.2,.9,.3,1) infinite confirmPulse;inset:3px;box-shadow:0 0 34px #ffd978f2,0 0 72px #ffa8329e}.confirm-marker{z-index:4;color:#6d3600;letter-spacing:.16em;text-transform:uppercase;text-shadow:0 1px #ffffff80;background:linear-gradient(#fffceafa,#ffd66ef5);border-radius:999px;place-items:center;min-width:58%;padding:.22em .48em;font-size:clamp(.62rem,2.1vmin,1rem);font-weight:900;animation:.56s cubic-bezier(.2,.9,.3,1) infinite confirmGoPulse;display:inline-grid;position:relative;box-shadow:0 0 0 2px #fff7dcf5,0 10px 28px #ffa43085}.cell.is-head{background:linear-gradient(#f7ffdb,#b8d65f);border-color:#3657126b}.head-core{z-index:2;background:#18231fc2;border-radius:999px;width:34%;height:34%;position:relative;box-shadow:0 0 0 4px #f7ffdb47}.head-arrow{z-index:2;font-size:1.4rem;position:relative}.dice-box{z-index:2;pointer-events:none;background:0 0}.throw-button{z-index:3;color:#fff;letter-spacing:.08em;text-transform:uppercase;background:linear-gradient(#1a644f,#0f3a2d);border-radius:999px;min-width:min(42vw,260px);min-height:76px;padding:0 28px;font-size:1.4rem;animation:1.4s ease-in-out infinite throwPulse;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 18px #68ffbe52,0 18px 34px #0f3a2d57}.throw-button.is-hidden{opacity:0;pointer-events:none}.throw-button:disabled:not(.is-hidden){cursor:wait;opacity:.72}.game-over-overlay{z-index:10;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);opacity:0;pointer-events:none;background:#000000bf;flex-direction:column;justify-content:center;align-items:center;transition:opacity .4s;display:flex;position:absolute;inset:0}.has-result-overlay .game-over-overlay{opacity:1;pointer-events:auto}.game-over-title{color:#ff4a4a;text-transform:uppercase;text-shadow:0 4px 24px #ff4a4a99;opacity:0;margin:0 0 24px;font-size:clamp(2.5rem,8vw,4rem);font-weight:700;transition:transform .6s cubic-bezier(.175,.885,.32,1.275),opacity .6s;transform:scale(.3)}.has-result-overlay .game-over-title{opacity:1;transform:scale(1)}.is-won .game-over-title{color:#7bffb9;text-shadow:0 4px 24px #7bffb9b3}.play-again-button{color:#5c3500;opacity:0;cursor:pointer;background:linear-gradient(#ffc107,#ff9800);border:0;border-radius:999px;padding:12px 32px;font-size:1.2rem;font-weight:700;transition:transform .4s .2s,opacity .4s .2s;transform:translateY(20px);box-shadow:0 8px 24px #ff980066}.has-result-overlay .play-again-button{opacity:1;transform:translateY(0)}.play-again-button:hover,.play-again-button:focus-visible{transform:scale(1.05)}.dice-box canvas{width:100%;height:100%}@keyframes throwPulse{0%,to{transform:translate(-50%,-50%)scale(1);box-shadow:0 0 18px #68ffbe52,0 18px 34px #0f3a2d57}50%{transform:translate(-50%,-50%)scale(1.035);box-shadow:0 0 28px #88ffca94,0 22px 40px #0f3a2d6b}}@keyframes trailPulse{0%,to{opacity:.82;transform:scale(.97)}50%{opacity:1;transform:scale(1.12)}}@keyframes tailPulse{0%,to{opacity:.9;transform:scale(.98)}50%{opacity:1;transform:scale(1.16)}}@keyframes confirmPulse{0%,to{opacity:.78;transform:scale(.92)}50%{opacity:1;transform:scale(1.24)}}@keyframes confirmCellPulse{0%,to{transform:scale(.98);box-shadow:0 0 0 3px #fff7dbfa,0 0 26px #ffd675e0,0 0 56px #ffb039b3}50%{transform:scale(1.08);box-shadow:0 0 0 5px #fffbea,0 0 48px #ffe08a,0 0 96px #ffa526e6}}@keyframes confirmGoPulse{0%,to{transform:scale(.9);box-shadow:0 0 0 2px #fff7dcf5,0 10px 28px #ffa43085}50%{transform:scale(1.16);box-shadow:0 0 0 4px #fffbe9,0 14px 36px #ffb03bb8}}@keyframes exitBurst{0%{filter:brightness(1.15);transform:scale(.84)}18%{filter:brightness(1.5);transform:scale(1.3)}36%{filter:brightness(1.2);transform:scale(.96)}54%{filter:brightness(1.45);transform:scale(1.22)}72%{filter:brightness(1.15);transform:scale(1)}to{filter:brightness();transform:scale(1)}}@keyframes exitGlow{0%{box-shadow:inset 0 0 0 1px #8affde3d}20%{box-shadow:inset 0 0 0 1px #dcfff394,0 0 34px #91ffd79e}55%{box-shadow:inset 0 0 0 1px #dcfff37a,0 0 24px #91ffd77a}to{box-shadow:inset 0 0 0 1px #8affde3d}}@media (width<=640px){.board-frame{border-radius:0;width:min(100vw,100svh);height:min(100vw,100svh)}.board-grid,.dice-box{border-radius:22px;inset:8px}.board-grid{gap:6px;padding:8px}.cell{border-radius:16px}.throw-button{min-width:min(56vw,230px);min-height:68px;font-size:1.15rem}.restart-button{top:max(10px, env(safe-area-inset-top));right:max(10px, env(safe-area-inset-right));padding:10px 13px}}.tutorial-tooltip{color:#fff;z-index:1000;pointer-events:none;text-align:center;background:#000000d9;border:1px solid #fff3;border-radius:8px;padding:1rem 2rem;font-size:1.25rem;animation:.3s ease-out tooltip-fade-in;display:none;position:fixed;bottom:20%;left:50%;transform:translate(-50%);box-shadow:0 4px 6px #0000004d}@keyframes tooltip-fade-in{0%{opacity:0;transform:translate(-50%,10px)}to{opacity:1;transform:translate(-50%)}}
