@font-face{font-family:Fredoka;src:url(/fonts/fredoka.woff2) format("woff2");font-weight:300 700;font-style:normal;font-display:swap}@font-face{font-family:Nunito Sans;src:url(/fonts/nunito-sans.woff2) format("woff2");font-weight:400 900;font-style:normal;font-display:swap}@font-face{font-family:Barlow Condensed;src:url(/fonts/barlow-condensed.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}:root{font-family:Nunito Sans,sans-serif;color:#47554d;background:#f6f2e7;font-synthesis:none;--paper:#f6f2e7;--ink:#47554d;--muted:#5f685b;--coral:#df735f;--coral-dark:#b95345;--teal:#51988f;--teal-dark:#346f68;--yellow:#edc66a;--tray:#d9dfd0;--tile:#e9eddf;--line:#dfe2d4;--font-display:Fredoka,sans-serif;--button-shadow:#c6a34b}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 48% 14%,#fffdf5 0,transparent 72%);min-height:100vh}button,a,summary{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;border:0}button:disabled{cursor:default}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid var(--teal-dark);outline-offset:5px}button{touch-action:manipulation}a{color:inherit;text-decoration-thickness:1px;text-underline-offset:3px}a:hover{color:var(--teal-dark)}[hidden]{display:none!important}.shell{max-width:900px;padding:28px 34px 24px;margin:auto}.skip-link{position:fixed;top:10px;left:10px;z-index:9;padding:10px;background:var(--paper);transform:translateY(-150%)}.skip-link:focus{transform:none}.masthead{position:relative;text-align:center}.masthead h1{font-family:var(--font-display);font-weight:500;font-size:56px;line-height:1.08;letter-spacing:-2.4px;margin:0}.logo-jev{color:var(--coral)}.logo-toe{color:var(--teal)}.logo-bang{color:#c89b2f;display:inline-block;transform:rotate(7deg)}.tagline{font-size:14px;font-weight:600;color:var(--muted);margin:9px 0 0}.help-button{position:absolute;right:0;top:10px;width:43px;height:43px;border-radius:50%;background:#e8eadb;box-shadow:0 3px #d4d9c7;font:26px var(--font-display)}.help-button:hover{transform:rotate(-8deg)}.mode-switch{width:328px;max-width:100%;margin:31px auto 0;display:flex;gap:4px;border-radius:17px;background:#e3e7d9;padding:4px}.mode-button{display:flex;align-items:center;justify-content:center;flex:1;gap:10px;padding:10px 8px;background:none;border-radius:13px;color:var(--muted);font:500 19px/1.05 var(--font-display);min-height:55px}.mode-button:first-child{flex-direction:column;gap:0}.mode-button small{display:block;font:700 10px Nunito Sans,sans-serif;margin-top:4px}.mode-button.active{background:#fffdf1;color:var(--teal-dark);box-shadow:0 2px #bdcbb3}.bolt{font:46px/1 Barlow Condensed,sans-serif;color:#b98416;transform:skew(-5deg)}.connection-row{display:flex;align-items:center;justify-content:center;gap:13px;margin:12px 0 23px;min-height:25px;font-size:11px}.connection-label{display:inline-flex;gap:6px;align-items:center;color:var(--muted)}.connection-label i{width:5px;height:5px;border-radius:50%;background:var(--teal)}.connection-label.practice i{background:#b48930}.text-button{background:transparent;text-decoration:underline;text-underline-offset:3px;padding:7px 2px;font-size:11px;color:var(--teal-dark)}.text-button:disabled{opacity:.5}.notice{max-width:630px;margin:-7px auto 20px;padding:12px 17px;border:1px solid #d9c79a;border-radius:12px;background:#fbefd1;text-align:center;color:#71582c;font-size:13px;line-height:1.5}.arena{display:grid;grid-template-columns:minmax(0,440px) minmax(0,290px);gap:54px;justify-content:center}.players{display:flex;align-items:center;justify-content:space-between;gap:10px}.player{display:flex;align-items:center;gap:12px}.player strong{font:500 21px var(--font-display);display:block}.player small{display:block;font-size:11px;color:var(--muted);font-weight:700;margin-top:3px}.player-token{display:flex;align-items:center;justify-content:center;width:46px;height:51px;border-radius:13px;background:var(--coral);box-shadow:0 5px 0 var(--coral-dark);transform:rotate(-7deg)}.player-token .mark{width:29px;height:29px}.player-token .mark-x:before,.player-token .mark-x:after{background:#fffdf1;width:5px}.opponent{text-align:right}.opponent .player-token{background:var(--teal);box-shadow:0 5px 0 var(--teal-dark);transform:rotate(7deg)}.opponent .mark-o{width:24px;height:24px;border-width:5px;border-color:#fffdf1}.versus{font-size:14px;color:var(--muted)}.turn-status{text-align:center;min-height:88px;padding:23px 5px 18px}.turn-status h2{font:500 28px/1.15 var(--font-display);margin:0 0 6px}.turn-status p{font-size:14px;color:var(--muted);margin:0;line-height:1.4}.board-wrap{position:relative}.board{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;padding:14px;background:var(--tray);border:2px solid #cbd5c1;border-radius:31px;box-shadow:0 7px #bcc8b2,0 17px 26px #47554d0c;aspect-ratio:1;isolation:isolate}.square{position:relative;display:flex;align-items:center;justify-content:center;background:var(--tile);border-radius:17px;box-shadow:0 3px #cbd6c0 inset;min-width:0;aspect-ratio:1;transition:background .15s,transform .15s,box-shadow .15s}.square:not(:disabled):hover{background:#f4f5e9;transform:translateY(-2px)}.square:not(:disabled):active{transform:translateY(1px)}.square small{position:absolute;right:12px;bottom:10px;color:#53684e;font-size:10px;font-weight:900}.mark{position:relative;display:block;width:59%;height:59%;pointer-events:none}.mark-x:before,.mark-x:after{content:"";position:absolute;background:var(--coral);width:12%;height:100%;left:44%;top:0;border-radius:10px;transform:rotate(45deg)}.mark-x:after{transform:rotate(-45deg)}.mark-o{border:10px solid var(--teal);border-radius:50%;width:56%;height:56%}.square.played .mark{animation:pop .2s ease-out}.square.winner{background:#f4d88d;box-shadow:inset 0 3px #debd68}.square.winner .mark{animation:celebrate .55s ease both}.square.preview .mark{opacity:.8}.board.busy{cursor:wait}.doodle{position:absolute;font:500 28px var(--font-display);color:#dfb134;pointer-events:none}.doodle-cross{left:-27px;bottom:24%;transform:rotate(17deg)}.doodle-dot{right:-26px;top:12%;font-size:43px}.game-actions{text-align:center;margin-top:29px}.round-button{display:inline-flex;gap:7px;align-items:center;justify-content:center;background:var(--yellow);min-height:47px;padding:11px 26px;border-radius:16px;box-shadow:0 4px 0 var(--button-shadow),inset 0 2px #ffe3a1;font:500 19px var(--font-display);color:#64542f;transition:transform .15s,box-shadow .15s}.round-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 0 var(--button-shadow),inset 0 2px #ffe3a1}.round-button:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px 0 var(--button-shadow)}.round-button:disabled{opacity:.55}.game-actions p{font-size:11px;color:var(--muted);font-weight:700;margin:13px 0 0}.retry-button{display:block;margin:0 auto 18px;min-height:44px;background:var(--teal-dark);color:#fffdf1;border-radius:12px;padding:10px 18px;font-weight:800}.retry-button:disabled{opacity:.65}.journal{padding-top:11px;min-width:0;display:flex;flex-direction:column;align-self:start}.journal-heading{display:flex;align-items:center;gap:12px;padding-bottom:19px;border-bottom:2px dashed var(--line)}.journal-ring{width:30px;height:30px;border:2px solid var(--teal);border-radius:50%;flex-shrink:0}.journal-heading h2{font:500 21px var(--font-display);margin:0 0 4px}.journal-heading p{font-size:12px;color:var(--muted);margin:0}.journal-dot{width:6px;height:6px;border-radius:50%;background:var(--teal);margin-left:auto}.journal-entries{flex:1;min-height:440px;max-height:580px;overflow-y:auto;scrollbar-width:thin;padding:10px 0;background:repeating-linear-gradient(transparent 0,transparent 29px,#dfdfcb22 29px,#dfdfcb22 30px)}.journal-empty{text-align:center;padding-top:94px}.little-tiles{display:flex;justify-content:center;gap:8px;margin-bottom:21px}.little-tiles span{display:flex;align-items:center;justify-content:center;width:43px;height:48px;border-radius:10px;font:500 34px var(--font-display);background:#f3d3c3;color:var(--coral-dark);box-shadow:0 4px #e9baa5;transform:rotate(-9deg)}.little-tiles span:nth-child(2){background:#f0e1b3;box-shadow:0 4px #dac88e;color:#a27d26;transform:translateY(-5px)}.little-tiles span:nth-child(3){background:#cce0d6;box-shadow:0 4px #a9cbbc;color:var(--teal-dark);transform:rotate(9deg)}.journal-empty h3{font:500 25px var(--font-display);margin:0 0 11px}.journal-empty p{font-size:14px;line-height:1.7;color:var(--muted);margin:0}.journal-explainer{padding:17px 0;border-top:2px dashed var(--line);font-size:12px;color:var(--muted);margin-top:8px}.journal-explainer summary{cursor:pointer;min-height:24px}.journal-explainer p{line-height:1.7;margin:12px 0 0}.move-card{padding:13px 0 16px;border-bottom:1px dashed var(--line);animation:arrive .3s ease-out}.move-card:last-child{border:0}.move-eyebrow{display:flex;justify-content:space-between;font-size:10px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;color:var(--muted)}.move-card h3{font:500 21px var(--font-display);margin:7px 0 5px}.move-reason{font-size:12px;line-height:1.5;color:var(--muted);margin:0 0 12px}.probability-row{display:grid;grid-template-columns:1fr auto;position:relative;padding:7px 8px;margin:4px 0;border-radius:7px;overflow:hidden;font-size:12px;isolation:isolate}.probability-row:before{content:"";position:absolute;inset:0 auto 0 0;width:var(--probability);background:#dae4d5;z-index:-1;min-width:0}.probability-row.chosen{color:var(--teal-dark);font-weight:800;outline:1px solid #b5cfc0}.probability-row.chosen:before{background:#cfe2d6}.probability-label{display:flex;align-items:center;gap:6px}.played-tag{font-size:8px;letter-spacing:.2px;text-transform:uppercase;color:var(--teal-dark);background:#edf3e7;padding:2px 4px;border-radius:3px}.probability-value{font-variant-numeric:tabular-nums}.more-moves summary{font-size:11px;padding:8px 1px;color:var(--muted);cursor:pointer}.confidence{font-size:10px;color:var(--muted);margin:10px 0 0;line-height:1.6}.practice-candidates{font-size:12px;line-height:1.6;background:#e5e9da;padding:8px 10px;border-radius:8px}.pending-move{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--teal-dark);padding:20px 0}.pending-dots{display:flex;gap:3px}.pending-dots i{width:5px;height:5px;background:var(--teal);border-radius:50%;animation:pulse 1s infinite}.pending-dots i:nth-child(2){animation-delay:.15s}.pending-dots i:nth-child(3){animation-delay:.3s}.scoreboard{margin-top:44px}.scoreboard h2{display:flex;align-items:center;gap:17px;text-align:center;font:500 20px var(--font-display);margin:0 0 22px;white-space:nowrap}.scoreboard h2:before,.scoreboard h2:after{content:"";flex:1;border-top:2px dashed var(--line)}.score-grid{display:grid;grid-template-columns:repeat(4,1fr);text-align:center}.score-grid>div{border-right:1px solid #e6e4d6}.score-grid>div:last-child{border:0}.score-grid strong{display:block;font:500 35px var(--font-display);font-variant-numeric:tabular-nums}.score-grid span{display:block;font-size:11px;font-weight:800;margin-top:4px}.score-human{color:var(--coral-dark)}.score-opponent{color:var(--teal-dark)}.scores-caption{text-align:center;color:var(--muted);font-size:10px;margin:20px 0 11px}.recent-rounds>summary{cursor:pointer;list-style:none;text-align:center;font-size:12px;font-weight:800;padding:12px}.recent-rounds>summary::-webkit-details-marker{display:none}.recent-rounds summary span{display:inline-block;margin-left:5px}.recent-rounds[open] summary span{transform:rotate(180deg)}#recent-list{display:flex;flex-wrap:wrap;justify-content:center;gap:16px;padding:15px 0 0}#recent-list>p{font-size:12px;color:var(--muted)}.recent-game{text-align:center;font-size:10px;color:var(--muted);width:75px}.mini-board{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;padding:5px;background:var(--tray);border-radius:8px;width:75px;aspect-ratio:1;margin-bottom:7px}.mini-board span{display:flex;justify-content:center;align-items:center;font:500 17px var(--font-display);background:var(--tile);border-radius:3px;color:var(--coral-dark)}.mini-board span.o{color:var(--teal-dark)}footer{display:flex;justify-content:space-between;gap:20px;margin-top:27px;font-size:11px;color:var(--muted);line-height:1.6}footer a{text-decoration:none}footer a:hover{text-decoration:underline}dialog{border:1px solid #dddcca;border-radius:26px;max-width:490px;width:calc(100% - 32px);padding:36px;color:var(--ink);background:var(--paper);box-shadow:0 24px 100px #182c2255}dialog::backdrop{background:#33443e66;backdrop-filter:blur(5px)}.dialog-close{position:absolute;right:16px;top:12px;width:36px;height:36px;background:transparent;font:30px var(--font-display)}.dialog-eyebrow{color:var(--muted);font-size:11px}dialog h2{font:500 37px var(--font-display);margin:8px 0 20px}dialog p{font-size:14px;line-height:1.7}dialog h3{font:500 22px var(--font-display);margin:0}.help-modes{display:grid;grid-template-columns:1fr 1fr;gap:20px;border-block:1px dashed var(--line);padding-top:20px;margin-top:20px}.help-modes p{font-size:13px}.coral{color:var(--coral-dark)}.teal{color:var(--teal-dark)}kbd{font:700 12px Nunito Sans,sans-serif;padding:2px 5px;background:var(--tray);border-radius:4px}dialog .round-button{margin-top:10px}.noscript{position:fixed;bottom:0;left:0;right:0;padding:20px;background:#f4d88d;text-align:center}.blitz-banner{display:none}.timer-track{position:relative;height:18px;margin:0 0 13px;background:#243c43;border-radius:7px;overflow:hidden}.timer-track>span:first-child{display:block;background:var(--yellow);width:100%;height:100%;transform-origin:left;will-change:transform}.timer-track>span:last-child{position:absolute;inset:0;text-align:center;font-size:11px;line-height:18px;font-weight:900;font-variant-numeric:tabular-nums;color:#17291f}.timer-track.urgent>span:first-child{background:#fc7966}body[data-mode=blitz]{--paper:#101b24;--ink:#e9efe4;--muted:#a0b9b5;--tray:#213641;--tile:#2c4650;--line:#375159;--coral:#ff7d69;--coral-dark:#ff9a87;--teal:#89d3c1;--teal-dark:#a4ead8;--yellow:#d9f678;--button-shadow:#85a94c;--font-display:"Barlow Condensed",sans-serif;background:radial-gradient(ellipse at 40% 5%,#1b3540 0,transparent 65%),#101b24;color:var(--ink)}body[data-mode=blitz] .masthead h1{font-size:64px;font-weight:700;letter-spacing:-1px;text-transform:uppercase}body[data-mode=blitz] .tagline{letter-spacing:1px}body[data-mode=blitz] .logo-bang{color:var(--yellow)}body[data-mode=blitz] .help-button,body[data-mode=blitz] .mode-switch{background:#263d45;box-shadow:none}body[data-mode=blitz] .mode-button{font-size:23px;text-transform:uppercase}body[data-mode=blitz] .mode-button.active{background:var(--yellow);color:#223523;box-shadow:0 2px #88a64c}body[data-mode=blitz] .mode-button small{text-transform:none}body[data-mode=blitz] .bolt{color:var(--yellow)}body[data-mode=blitz] .mode-button.active .bolt{color:#29452b}body[data-mode=blitz] .blitz-banner{display:flex;justify-content:center;align-items:center;gap:24px;font:700 19px var(--font-display);letter-spacing:2px;color:var(--yellow);border-block:1px solid var(--line);margin:-6px 0 27px;padding:7px}.banner-bolt{font-size:28px;line-height:1}body[data-mode=blitz] .board{border-color:#35515c;box-shadow:0 7px #0a141c,0 16px 35px #0003}body[data-mode=blitz] .square{box-shadow:0 3px #1a2e36 inset}body[data-mode=blitz] .square small{color:#b8d0c2}body[data-mode=blitz] .square:not(:disabled):hover{background:#3b5961}body[data-mode=blitz] .square.winner{background:#536b43}body[data-mode=blitz] .round-button{color:#1d3327;box-shadow:0 4px var(--button-shadow)}body[data-mode=blitz] .player strong{font-size:27px}body[data-mode=blitz] .player-token{box-shadow:0 5px #934c45}body[data-mode=blitz] .opponent .player-token{box-shadow:0 5px #427c73}body[data-mode=blitz] .mark-x:before,body[data-mode=blitz] .mark-x:after{box-shadow:0 0 18px #ff7d6910}body[data-mode=blitz] .opponent .player-token .mark-o{border-color:#203b39}body[data-mode=blitz] .turn-status h2{font-size:34px;text-transform:uppercase;letter-spacing:.5px}body[data-mode=blitz] .journal-heading h2{font-size:25px}body[data-mode=blitz] .journal-entries{background:repeating-linear-gradient(transparent 0,transparent 29px,#a0b9b508 29px,#a0b9b508 30px)}body[data-mode=blitz] .little-tiles span{background:#683f39;box-shadow:0 4px #422c2b;color:#ff9b8a}body[data-mode=blitz] .little-tiles span:nth-child(2){background:#4b5734;box-shadow:0 4px #333e2d;color:#d9f678}body[data-mode=blitz] .little-tiles span:nth-child(3){background:#325b57;box-shadow:0 4px #22403f;color:#94dece}body[data-mode=blitz] .journal-empty h3{font-size:30px}body[data-mode=blitz] .probability-row:before{background:#304e50}body[data-mode=blitz] .probability-row.chosen:before{background:#385f53}body[data-mode=blitz] .played-tag{color:#d7f0df;background:#345444}body[data-mode=blitz] .practice-candidates{background:#263f47}body[data-mode=blitz] .score-grid>div{border-color:#2a4148}body[data-mode=blitz] .score-grid strong{font-size:39px}body[data-mode=blitz] .scoreboard h2{font-size:25px}body[data-mode=blitz] .retry-button{color:#193c32}body[data-mode=blitz] .notice{color:#d7e8bf;border-color:#526640;background:#2f3c2b}body[data-mode=blitz] button:focus-visible,body[data-mode=blitz] summary:focus-visible,body[data-mode=blitz] a:focus-visible{outline-color:var(--yellow)}@keyframes pop{0%{transform:scale(.7);opacity:.35}to{transform:scale(1);opacity:1}}@keyframes celebrate{50%{transform:scale(1.12) rotate(-4deg)}}@keyframes arrive{0%{transform:translateY(5px);opacity:0}to{transform:none;opacity:1}}@keyframes pulse{0%,80%,to{opacity:.3;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}@media(max-width:760px){.shell{max-width:510px;padding:22px 22px 24px}.arena{grid-template-columns:minmax(0,1fr);gap:32px}.masthead h1{font-size:49px}.help-button{right:0;top:6px;width:37px;height:37px;font-size:24px}.mode-switch{margin-top:23px}.connection-row{margin-bottom:22px}.journal{padding-top:0}.journal-entries{min-height:150px;max-height:510px;overflow:auto;scrollbar-width:thin}.journal-empty{padding:27px 0 18px}.little-tiles{margin-bottom:16px}.journal-empty h3{font-size:24px}.journal-empty p br{display:none}.journal-empty p{font-size:13px}.journal-heading{padding-bottom:14px}.journal-heading h2{font-size:20px}.journal-explainer{padding:13px 0}.journal-entries:has(.move-card){padding:2px 5px 2px 0}.scoreboard{margin-top:27px}.scoreboard h2{font-size:18px;gap:10px;margin-bottom:18px}.score-grid strong{font-size:30px}.score-grid span{font-size:10px}.doodle-cross{left:-19px}.doodle-dot{right:-18px}footer{font-size:10px;gap:18px;margin-top:23px}footer span{max-width:65%}body[data-mode=blitz] .blitz-banner{margin-bottom:24px;gap:20px}body[data-mode=blitz] .masthead h1{font-size:54px}body[data-mode=blitz] .scoreboard h2{font-size:21px}.game-actions{margin-top:26px}}@media(max-width:420px){.shell{padding:18px 18px 22px}.masthead h1{font-size:44px;letter-spacing:-1.5px}.tagline{font-size:12px}.help-button{width:33px;height:33px;font-size:22px;right:0}.mode-switch{width:328px;margin-top:20px}.mode-button{font-size:18px;min-height:49px;padding:8px}.mode-button small{font-size:9px}.connection-row{font-size:10px;margin:9px 0 18px;gap:10px}.text-button{font-size:10px}.player{gap:10px}.player-token{width:39px;height:44px;border-radius:11px}.player-token .mark{width:25px;height:25px}.opponent .mark-o{width:23px;height:23px}.player strong{font-size:19px}.player small{font-size:10px}.turn-status{padding:21px 0 15px;min-height:80px}.turn-status h2{font-size:26px}.turn-status p{font-size:12px}.board{gap:10px;padding:11px;border-radius:26px}.square{border-radius:14px}.square small{bottom:8px;right:10px;font-size:9px}.mark-o{border-width:8px}.round-button{font-size:18px;min-height:45px}.game-actions p{margin-top:12px;font-size:10px}.scoreboard h2{font-size:16px}.score-grid strong{font-size:28px}.score-grid span{font-size:9px}.journal-heading h2{font-size:20px}.help-modes{gap:12px}dialog{padding:27px 24px}dialog h2{font-size:32px}body[data-mode=blitz] .masthead h1{font-size:50px}body[data-mode=blitz] .blitz-banner{font-size:18px}body[data-mode=blitz] .player strong{font-size:24px}body[data-mode=blitz] .turn-status h2{font-size:31px}body[data-mode=blitz] .score-grid strong{font-size:33px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}.bolt,.banner-bolt{display:inline-block;flex-shrink:0;width:23px;height:33px;background:currentColor;clip-path:polygon(53% 0,6% 57%,42% 57%,27% 100%,96% 36%,59% 36%,78% 0);font-size:0;transform:none}.banner-bolt{width:14px;height:25px}
