@font-face{font-family:'DM Sans';src:url('../grid-rush/assets/fonts/DMSans.woff2') format('woff2');font-weight:100 1000;font-display:swap}
@font-face{font-family:'Space Grotesk';src:url('../grid-rush/assets/fonts/SpaceGrotesk.woff2') format('woff2');font-weight:300 700;font-display:swap}
:root{--paper:#f8f6f0;--ink:#263a32;--muted:#627068;--sage:#dfe7d6;--green:#355b45;--peach:#f2b89d;--peach-dark:#934b34;--line:#d9ddd1;--display:'Space Grotesk','DM Sans',sans-serif;--spring:cubic-bezier(.22,1.35,.36,1)}
*{box-sizing:border-box}html{color-scheme:light;scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.6 'DM Sans',system-ui,sans-serif}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button:disabled{cursor:default;opacity:.4}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #365f9a;outline-offset:4px}[hidden]{display:none!important}svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round}button{touch-action:manipulation}h1,h2,p{margin:0}a{color:inherit}.site-top{max-width:1180px;min-height:105px;margin:0 auto;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:30px;padding:22px 20px}.brand{display:flex;align-items:center;gap:10px;font:600 26px var(--display);letter-spacing:-1.3px;text-decoration:none;white-space:nowrap}.brand svg{width:30px;height:32px;stroke-width:2}.brand-dot{color:var(--peach-dark)}.header-note{margin-left:auto;font:500 12.1px var(--display);letter-spacing:1.2px;color:var(--muted)}.site-top .playground-home{font-size:12.1px}
main{max-width:1180px;padding:0 20px;margin:auto}.intro{display:flex;justify-content:space-between;align-items:flex-end;padding:43px 0 38px;gap:25px}.eyebrow{font:600 12.1px/1.6 var(--display);letter-spacing:1.3px}.intro>.eyebrow,.intro .eyebrow{display:flex;align-items:center;gap:9px;color:var(--green)}.spark{color:#739454;font-size:25px;line-height:1}h1{font:500 clamp(44px,5.4vw,68px)/1.02 var(--display);letter-spacing:-3.5px;margin-top:16px}h1 em{font-style:normal;color:var(--peach-dark)}.intro>p{font-size:14px;line-height:1.8;color:var(--muted);padding-bottom:4px;max-width:290px}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:30px;align-items:start}.play-panel{position:relative;min-width:0;background:#eef1e7;border:1px solid var(--line);border-radius:24px;overflow:clip;isolation:isolate;view-transition-name:game-stage}.stage-top{display:flex;align-items:center;justify-content:space-between;padding:24px 28px;gap:12px;color:var(--muted)}.stage-top .eyebrow{font-size:10px}.edition{font:500 10px var(--display);letter-spacing:.8px}.stage-top .text-button{font-size:12.1px;min-height:32px;padding:0}.scene{position:relative;min-height:580px;padding:32px 36px 36px;text-align:center;isolation:isolate}.scene.is-entering{animation:scene-arrive 430ms cubic-bezier(.2,.8,.2,1) both}.scene h2{font:500 43px/1.12 var(--display);letter-spacing:-1.8px;margin:14px 0 18px;overflow-wrap:anywhere}.scene>p:not(.eyebrow){color:var(--muted);line-height:1.8;font-size:14px}.scene>.primary-button{max-width:340px;margin:30px auto 0}.stage-bottom{border-top:1px solid #d5dece;margin:0 28px;display:flex;align-items:center;justify-content:space-between;padding:19px 0 22px;font-size:12.1px;color:var(--muted)}.stage-bottom svg{width:42px;height:16px;stroke-width:1.3}
.welcome-scene{padding-top:8px}.welcome-art{position:relative;height:310px;perspective:700px}.clock-face{position:absolute;width:230px;height:230px;top:38px;left:calc(50% - 115px);border:1px solid #d3bca4;border-radius:50%;background:#f1d4bc;box-shadow:inset 0 4px 7px #fff7,0 15px 30px #4a503516;display:flex;flex-direction:column;align-items:center;justify-content:center;transform:translate3d(var(--art-x,0px),var(--art-y,0px),24px);transition:transform 100ms linear}.clock-label{font:500 10px var(--display);letter-spacing:1.7px;color:#6f5141}.clock-number{font:400 89px/1.25 var(--display);letter-spacing:-6px;color:#4e5746}.clock-number>span{font-size:28px;letter-spacing:-1px;margin-left:5px}.clock-face svg{width:41px;height:18px;stroke:#8d624b;stroke-width:1.4}.orbit{position:absolute;left:calc(50% - 145px);top:9px;width:290px;height:290px;border:1px dashed #a1b08d;border-radius:50%;transform:translate3d(calc(var(--art-x,0px)*.3),calc(var(--art-y,0px)*.3),0)}.orbit-front{width:270px;height:270px;left:calc(50% - 135px);top:19px;border-style:solid;opacity:.45}.float-note{position:absolute;border-radius:9px;padding:9px 13px;font:500 12.1px var(--display);background:#fffdf6;border:1px solid #d7ddcc;box-shadow:0 5px 12px #3d4e3b09;z-index:2;transform:translate3d(calc(var(--art-x,0px)*1.6),calc(var(--art-y,0px)*1.6),40px) rotate(-8deg)}.note-a{left:calc(50% - 190px);top:74px}.note-b{right:calc(50% - 182px);bottom:59px;transform:translate3d(calc(var(--art-x,0px)*1.6),calc(var(--art-y,0px)*1.6),40px) rotate(6deg);background:#e5edd6}.art-dot{position:absolute;width:12px;height:12px;border-radius:50%;background:#839d68;top:30px;left:calc(50% + 70px)}.dot-b{width:8px;height:8px;top:257px;left:calc(50% - 90px);background:#bd8062}.welcome-scene h2{margin-top:18px;font-size:36px}.welcome-scene>p{font-size:13px}.mini-rule{display:flex;align-items:center;gap:12px;justify-content:center;margin:25px auto 0;font-size:12px;color:var(--muted)}.mini-rule>span{font:500 10px var(--display);border:1px solid #bccbb0;border-radius:50%;width:26px;height:26px;display:grid;place-items:center}.primary-button{position:relative;width:100%;min-height:52px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 18px;border:1px solid var(--ink);border-radius:12px;background:var(--ink);color:#fffdf5;font-size:13px;font-weight:600;text-align:left}.primary-button>span{font-size:21px;line-height:1}.text-button{background:none;border:0;min-height:44px;padding:10px 4px;font-size:12px;color:var(--green)}.sidebar{display:grid;gap:22px}.setup-card,.round-card{padding:27px;background:#fffdf8;border:1px solid var(--line);border-radius:21px}.setup-card>.eyebrow{color:var(--muted);font-size:10px}h2{font:500 33px/1.1 var(--display);letter-spacing:-1.3px}.setup-card h2{margin:17px 0 14px}.setup-copy{font-size:12px;line-height:1.8;color:var(--muted)}.count-control{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:19px 0 15px;font-size:12px;border-top:1px solid var(--line);margin-top:24px}.count-control>div{display:flex;align-items:center;gap:5px}.count-control button{height:44px;width:44px;border:1px solid var(--line);border-radius:50%;font-size:22px;background:#f4f5ed;line-height:1}.count-control output{min-width:21px;text-align:center;font:500 17px var(--display)}.player-rows{display:grid;gap:10px;margin-bottom:22px}.player-row{display:flex;align-items:center;gap:10px;animation:row-arrive 300ms var(--spring) both;transform-origin:50% 0}.player-row label{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#e6eddf;color:#46603b;font:500 12.1px var(--display);flex-shrink:0}.player-row:nth-child(2n) label{background:#f3dfcf;color:#7b513c}.player-row input{width:100%;min-width:0;border:0;border-bottom:1px solid var(--line);padding:10px 4px;background:none;font-size:13px;color:var(--ink);border-radius:0;min-height:44px}.footnote{font-size:12.1px;line-height:1.8;color:var(--muted);margin-top:17px;text-align:center}.how-to-play{padding:0 9px}.how-to-play summary{display:flex;align-items:center;justify-content:space-between;min-height:44px;font:600 12.1px var(--display);letter-spacing:1px;cursor:pointer;list-style:none}.how-to-play summary::-webkit-details-marker{display:none}.how-to-play summary>span{font:400 23px var(--display);transition:rotate 200ms}.how-to-play[open] summary>span{rotate:45deg}.how-to-play ol{list-style:none;counter-reset:steps;padding:4px 0 0;margin:0;display:grid;gap:17px}.how-to-play li{position:relative;padding-left:27px;counter-increment:steps;font-size:12px;line-height:1.8;color:var(--muted)}.how-to-play li:before{content:'0' counter(steps);position:absolute;left:0;top:2px;font:500 10px/1.8 var(--display);color:var(--peach-dark)}.how-to-play b{display:block;font-size:12px;color:var(--ink)}.quiet-note{display:flex;align-items:center;gap:12px;padding:16px 12px;border-top:1px solid var(--line);color:var(--muted);font-size:12.1px;line-height:1.8}.quiet-note svg{width:29px;height:32px;stroke-width:1.4;flex-shrink:0}.round-target{font:400 84px/1 var(--display);letter-spacing:-5px;margin:24px 0 15px}.round-target small{font-size:29px;margin-left:4px;letter-spacing:0}.round-card>p:last-of-type{font-size:12px;color:var(--muted)}.round-people{display:flex;flex-wrap:wrap;gap:8px;margin-top:24px;padding-top:20px;border-top:1px solid var(--line)}.person-token{width:34px;height:34px;display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;font:500 12.1px var(--display);background:#edf1e5}.person-token.done{background:var(--green);color:white}.person-token.current{outline:2px solid var(--peach-dark);outline-offset:2px}
.player-stack{height:122px;position:relative;width:120px;margin:8px auto 22px}.player-stack>span{position:absolute;inset:7px 10px;border-radius:22px;background:#d0dbc5;border:1px solid #b3c0a9;transform:rotate(-11deg) translate(-12px,3px)}.player-stack .stack-mid{background:#ead8c5;border-color:#cdb69f;transform:rotate(9deg) translate(9px,1px)}.player-stack .player-initial{display:grid;place-items:center;background:#fffaf0;border-color:#d6d9c9;transform:rotate(-3deg);font:400 55px var(--display);box-shadow:0 10px 22px #4a503512}.target-chip{display:flex;align-items:center;justify-content:center;gap:26px;margin:25px auto 0;width:fit-content;background:#e3e9d9;border:1px solid #c4d0b7;border-radius:13px;padding:10px 24px}.target-chip>span{font-size:12px;color:var(--muted)}.target-chip b{font:500 33px var(--display);letter-spacing:-1.5px}.target-chip small{font:400 14px var(--display);margin-left:3px}.turn-line{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:25px;color:var(--muted)}.turn-name{font-size:12px;max-width:60%;overflow-wrap:anywhere;border:1px solid #ced8c2;background:#e4ebda;padding:4px 12px;border-radius:99px}.play-scene{padding-top:10px}.play-scene h2{font-size:34px;margin-bottom:13px}.hold-area{position:relative;display:grid;place-items:center;min-height:330px;margin:10px auto 8px}.pad-orbit{position:absolute;width:292px;height:292px;border:1px dashed #acb99c;border-radius:50%;pointer-events:none}.hold-pad{position:relative;width:242px;height:242px;border:1px solid #bea887;border-radius:50%;padding:10px;background:#e0c5a9;box-shadow:inset 0 -3px 4px #a9845b26,0 13px 24px #3e4e3220;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;isolation:isolate;cursor:grab;transform:translate(var(--pad-x,0px),var(--pad-y,0px)) scale(var(--pad-scale,1));will-change:transform}.pad-surface{display:flex;width:100%;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:13px;border:1px solid #fff7;border-radius:50%;background:radial-gradient(circle at 35% 20%,#f6e5d1,#e5c7a6);box-shadow:inset 0 4px 9px #fff5;transform:scale(calc(1 + var(--strain,0)),calc(1 - var(--strain,0)*.65));transition:background 150ms}.fingerprint{width:49px;height:49px;stroke:#6b684e;stroke-width:1.7}.pad-surface>#pad-label{font:500 16px var(--display);letter-spacing:-.4px}.pad-small{font:500 10px var(--display);letter-spacing:1.2px;color:#564836;max-width:155px}.hold-pad.is-holding{cursor:grabbing;background:#55734d;border-color:#627d51;box-shadow:0 4px 12px #3e4e321c}.hold-pad.is-holding .pad-surface{background:#d8e4c9;border-color:#f4f7eb}.hold-pad.is-holding .fingerprint{stroke:#355b45}.keyboard-help{font-size:12.1px!important;max-width:360px;margin:0 auto;line-height:1.7!important}.cancel-note{min-height:25px;margin-top:10px;font-size:12px!important;color:var(--peach-dark)!important}.lock-seal{width:104px;height:104px;border-radius:50%;display:grid;place-items:center;margin:25px auto 28px;background:#dce9d0;border:1px solid #b1c49e}.lock-seal svg{height:48px;width:48px;stroke-width:2.6;stroke-dasharray:42;stroke-dashoffset:0}.is-entering .lock-seal svg{animation:seal-check 400ms 100ms both}.locked-receipt{display:flex;justify-content:space-between;gap:20px;width:min(340px,100%);margin:28px auto 0;padding:17px 3px;border-block:1px dashed #aabb9b;font-size:13px;overflow-wrap:anywhere}.receipt-status{display:flex;gap:7px;align-items:center;white-space:nowrap;font:500 10px var(--display);letter-spacing:1px;color:var(--green)}.receipt-status svg{width:17px;height:17px;stroke-width:1.4}.results-scene{text-align:left;padding-top:18px}.winner-art{width:52px;height:52px;stroke:#8b6545;fill:#efd5a7;stroke-width:1.6;margin-top:16px}.results-scene h2{font-size:36px;margin:10px 0 15px}.results-scene>p{font-size:13px!important}.result-target{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:15px 0;border-block:1px solid #c8d3bc;margin-top:22px;font-size:12px;color:var(--muted)}.result-target strong{font:500 24px var(--display);color:var(--ink);letter-spacing:-.7px}.standings{list-style:none;padding:0;margin:10px 0 0;display:grid;gap:7px}.result-row{display:grid;grid-template-columns:27px minmax(0,1fr) auto;align-items:center;gap:13px;border-radius:12px;padding:14px 10px;animation:row-arrive 400ms var(--spring) backwards;animation-delay:calc(var(--row)*65ms);border:1px solid transparent}.result-row.winner{background:#fff8e8;border-color:#d8c8a8}.place{font:500 12px var(--display);color:var(--muted)}.result-person strong{display:block;font-size:14px;overflow-wrap:anywhere;font-weight:600}.result-person small{display:block;color:var(--muted);font-size:12.1px;margin-top:3px}.result-time{text-align:right;white-space:nowrap;font:500 21px var(--display);letter-spacing:-.7px}.result-time small{font:400 12.1px 'DM Sans',sans-serif;margin-left:2px;color:var(--muted)}.results-scene>.primary-button{max-width:none;margin-top:20px}.results-scene>.text-button{display:block;margin:8px auto 0}.round-tracker{position:relative;border:1px solid #d6dfcd;background:#e5ebdd;padding:5px;border-radius:13px;margin:0 28px 21px;isolation:isolate;overflow:hidden}.round-tracker ol{list-style:none;padding:0;margin:0;display:flex;position:relative;z-index:1}.round-tracker li{flex:1;text-align:center;font:500 12.1px/28px var(--display);color:var(--muted);transition:color 180ms}.round-tracker li.current{color:var(--ink)}.tracker-ink{position:absolute;top:5px;left:5px;height:28px;width:var(--ink-width,50%);background:#fffdf5;border:1px solid #d5dbc9;border-radius:8px;transform:translateX(var(--ink-x,0px)) scaleX(var(--ink-stretch,1));transform-origin:center;box-shadow:0 2px 4px #32492b08;will-change:transform}.round-tracker li.done:after{content:' ✓';color:var(--green)}footer{display:flex;justify-content:space-between;gap:25px;padding:25px 0 30px;border-top:1px solid var(--line);margin-top:35px;font-size:12.1px;color:var(--muted)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.noscript-note{text-align:center;padding:30px}.is-timing .round-tracker,.is-timing .stage-bottom{opacity:.6}.is-timing .hold-pad:focus-visible{outline-color:#355b45}
@keyframes scene-arrive{from{opacity:.4;clip-path:circle(5% at 50% 55%);transform:translateY(8px)}to{opacity:1;clip-path:circle(130% at 50% 55%);transform:translateY(0)}}@keyframes row-arrive{from{opacity:0;transform:translateY(9px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes seal-check{from{stroke-dashoffset:42}to{stroke-dashoffset:0}}
@media(max-width:1000px){.game-layout{grid-template-columns:minmax(0,1fr) 280px;gap:20px}.scene{padding-inline:25px}.header-note{font-size:10px}.setup-card,.round-card{padding:23px}.intro{padding:32px 0}.stage-top{padding:20px}.edition{display:none}.float-note{font-size:10px;padding:7px 9px}.note-a{left:calc(50% - 160px)}.note-b{right:calc(50% - 160px)}}
@media(max-width:760px){.site-top{min-height:84px;margin:0 16px;padding:18px 0;gap:18px}.brand{font-size:23px}.brand svg{width:26px}.header-note{display:none}.site-top .playground-home{margin-left:auto}main{padding:0 16px}.intro{gap:20px;padding:28px 0}.intro h1{font-size:49px;letter-spacing:-2.6px}.intro .eyebrow{font-size:10px;letter-spacing:.9px}.intro>p{font-size:12px;max-width:170px}.game-layout{display:flex;flex-direction:column;gap:20px}.play-panel{width:100%;order:1}.sidebar{display:contents}.setup-card{width:100%;order:0;padding:22px}.setup-card h2{font-size:29px;display:inline-block;margin:11px 0}.setup-card h2 br{display:none}.setup-copy{font-size:12px}.count-control{margin-top:17px;padding:10px 0}.player-rows{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 20px;margin-bottom:20px}.footnote br{display:none}.footnote{margin-top:12px}.round-card{display:none!important}.how-to-play{order:2;width:100%}.quiet-note{order:3;width:100%}.scene{min-height:550px;padding:20px 22px 30px}.welcome-scene{padding-top:0}.welcome-art{height:300px}.scene h2{font-size:37px}.welcome-scene h2{font-size:32px}.stage-top{padding:19px 20px}.stage-bottom{margin:0 20px}.hold-area{min-height:310px}.play-scene{padding-top:5px}.play-scene h2{font-size:29px}.turn-line{margin-bottom:20px}.stage-top .text-button{min-height:44px}.round-tracker{margin:0 20px 18px}.results-scene h2{font-size:32px}.results-scene .result-row{gap:9px;padding:13px 7px}.results-scene .result-time{font-size:20px}footer{flex-direction:column;gap:6px;margin-top:25px;padding-bottom:calc(25px + env(safe-area-inset-bottom))}}
@media(max-width:420px){.intro{display:block}.intro>p{max-width:none;margin-top:17px;font-size:12px}.intro>p br{display:none}.intro h1{font-size:49px}.player-rows{grid-template-columns:1fr}.setup-card{padding:20px}.scene{padding-inline:17px}.stage-top .eyebrow{font-size:10px;letter-spacing:.7px}.stage-top{padding:14px 17px}.hold-pad{width:220px;height:220px}.pad-orbit{width:263px;height:263px}.hold-area{min-height:288px}.float-note{font-size:10px;padding:7px}.note-a{left:0;top:68px}.note-b{right:0}.scene>p:not(.eyebrow){font-size:13px}.welcome-art{height:285px}.clock-face{width:212px;height:212px;left:calc(50% - 106px)}.orbit{width:264px;height:264px;left:calc(50% - 132px);top:12px}.orbit-front{width:245px;height:245px;left:calc(50% - 122.5px);top:22px}.welcome-scene{min-height:555px}.scene h2{font-size:32px}.play-scene h2{font-size:27px}.result-person strong{font-size:12px}.result-person small{font-size:12.1px}.results-scene .result-time{font-size:18px}.results-scene .result-row{grid-template-columns:20px minmax(0,1fr) auto;gap:7px}.round-tracker{margin-inline:17px}.target-chip{gap:20px;padding:8px 20px}.scene>.primary-button{margin-top:24px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.hold-pad,.clock-face,.float-note,.orbit{will-change:auto}.scene.is-entering{clip-path:none;transform:none}.tracker-ink{will-change:auto}}

#app{view-transition-name:none}

.spark{width:24px;height:24px;stroke:#739454;stroke-width:1.8;flex-shrink:0}
.skip-link{position:absolute;top:8px;left:8px;padding:10px 16px;background:var(--ink);color:white;z-index:50;transform:translateY(-150%);border-radius:8px}
.skip-link:focus{transform:translateY(0)}
@media(max-width:760px){.player-row input{font-size:16px}}
#result-title:focus{outline:none}
.result-target strong small{font:400 14px 'DM Sans',sans-serif;margin-left:4px;color:var(--muted)}
.result-time,.round-target,.clock-number{font-variant-numeric:tabular-nums}
