@font-face{font-family:Fredoka Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/fredoka-hebrew-wght-normal-DdnsCkLr.woff2)format("woff2-variations");unicode-range:U+307-308,U+590-5FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F}@font-face{font-family:Fredoka Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/fredoka-latin-ext-wght-normal-CYrqKuxd.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fredoka Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/fredoka-latin-wght-normal-DM6njrJ3.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color:#1c1915;background:#f7f4ef;font:18px/1.45 Iowan Old Style,Palatino,Georgia,serif}*{box-sizing:border-box}html,body,#app{height:100%}body{margin:0}button{font:inherit;cursor:pointer}.door,.lobby{align-content:center;justify-items:start;max-width:640px;min-height:100%;margin:0 auto;padding:96px 28px 48px;display:grid}.mark{letter-spacing:.16em;text-transform:uppercase;color:#8a5a2b;margin:0 0 12px;font-family:system-ui,sans-serif;font-size:13px}h1,h2,p{margin:0}h1{letter-spacing:-.03em;font-size:56px;font-weight:500}.door p,.status{color:#5c5348;max-width:36ch;margin-top:12px}button{color:#f7f4ef;background:#1c1915;border:0;border-radius:999px;margin-top:28px;padding:12px 22px}button.quiet{color:#1c1915;background:#fff;border:1px solid #1c1915}.face-dock{z-index:2;gap:12px;display:flex;position:fixed;top:20px;left:20px}.slot{background:#fff;border:1px solid #1c1915;border-radius:16px;width:148px;height:104px;position:relative;overflow:hidden;box-shadow:0 10px 24px #1c191514}.slot video{object-fit:cover;background:#efeae3;width:100%;height:100%;display:block}.slot p,.face-note{letter-spacing:.04em;text-transform:uppercase;color:#1c1915;background:#f7f4efe0;border-radius:999px;margin:0;padding:2px 6px;font-family:system-ui,sans-serif;font-size:12px;position:absolute;bottom:8px;left:10px}.portrait.live .face-note{display:none}.game{width:min(100%,420px);box-shadow:none;color:inherit;text-align:left;background:#fff;border:1px solid #d9d3c7;border-radius:22px;margin:0;padding:18px 20px 20px;display:block}.games{gap:12px;margin-top:28px;display:grid}.game .kicker{visibility:hidden}.game.selected{border:1px solid #1c1915;box-shadow:0 0 0 4px #1c19150f}.game.selected .kicker{visibility:visible}.kicker{letter-spacing:.14em;text-transform:uppercase;color:#8a5a2b;font-family:system-ui,sans-serif;font-size:12px}.game h2{margin-top:6px;font-size:32px;font-weight:500}.game p:last-child{color:#5c5348;margin-top:6px}.actions{align-items:center;gap:12px;display:flex}.screen.world-room .lobby,.screen.world-game .lobby{display:none}.world{place-items:center;min-height:100%;padding:132px 24px 150px;display:none}.screen.world-room .floor-world{display:grid}.floor{border:1px solid #1c1915;border-radius:22px;width:min(96vw,150vh - 330px);height:auto;box-shadow:0 16px 40px #1c191514}.pad{z-index:2;touch-action:none;background:radial-gradient(circle,#1c191514,#0000 42%),#fff;border:1px solid #1c1915;border-radius:50%;width:128px;height:128px;position:fixed;bottom:24px;right:24px}.screen:not(.world-room) .pad{display:none}.screen.world-game{--turn:#2f6bff;background:radial-gradient(circle at 50% 55%, color-mix(in srgb, var(--turn) 20%, transparent), transparent 55%), radial-gradient(circle, color-mix(in srgb, var(--turn) 22%, transparent) 1.6px, transparent 2px) 0 0 / 26px 26px, #f7f4ef;height:100dvh;font-family:Fredoka Variable,system-ui,sans-serif;transition:background-color .4s;overflow:hidden}.screen.world-game .face-dock{display:none}.screen.world-tictactoe .marks-world,.screen.world-chess .chess-world{height:100dvh;min-height:0;padding:0;display:block}.stage{grid-template-rows:auto minmax(0,1fr) auto;gap:clamp(10px,2dvh,22px);max-width:1100px;height:100%;margin:0 auto;padding:clamp(12px,2.4dvh,28px) clamp(12px,3vw,32px);display:grid}.versus{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:clamp(10px,2vw,28px);display:grid}.vs{letter-spacing:.04em;color:#1c1915;text-shadow:3px 3px 0 color-mix(in srgb, var(--turn) 35%, transparent);font-size:clamp(22px,3.4dvh,38px);font-weight:700;transform:rotate(-6deg)}.player{--seat:#2f6bff;border:3px solid color-mix(in srgb, var(--seat) 30%, #e6e0d6);width:100%;max-width:420px;box-shadow:0 6px 0 color-mix(in srgb, var(--seat) 25%, #e6e0d6);background:#fff;border-radius:24px;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:14px;padding:10px;transition:transform .25s,box-shadow .25s,border-color .25s,opacity .25s;display:grid}.card-left{justify-self:end}.card-right{justify-self:start}.player.active{border-color:var(--seat);box-shadow:0 8px 0 var(--seat), 0 0 0 6px color-mix(in srgb, var(--seat) 18%, transparent), 0 18px 40px color-mix(in srgb, var(--seat) 30%, transparent);animation:1.6s ease-in-out infinite glow;transform:translateY(-4px)}.player.quiet{opacity:.55}.player-face{aspect-ratio:4/3;background:color-mix(in srgb, var(--seat) 12%, #efeae3);border-radius:16px;width:clamp(72px,16dvh,168px);overflow:hidden}.player-face .slot{width:100%;height:100%;box-shadow:none;border:0;border-radius:0}.player-face .slot p{text-transform:none;letter-spacing:0;font-family:inherit}.player-info{grid-template-rows:auto auto;grid-template-columns:auto minmax(0,1fr);align-items:center;column-gap:10px;min-width:0;display:grid}.player-mark{aspect-ratio:1;width:clamp(34px,6dvh,52px);color:var(--seat);grid-row:span 2}.player-mark svg{width:100%;height:100%}.player-label{font-size:clamp(18px,2.8dvh,28px);font-weight:650;line-height:1.1}.player-note{min-height:1.2em;color:var(--seat);font-size:clamp(13px,1.8dvh,17px);font-weight:500}.arena{place-items:center;min-height:0;display:grid;container-type:size}.board{aspect-ratio:1;border:4px solid var(--turn);width:min(100cqw,100cqh,620px);box-shadow:0 10px 0 var(--turn), 0 30px 70px color-mix(in srgb, var(--turn) 25%, transparent);background:#fff;border-radius:32px;padding:clamp(10px,2cqmin,18px);transition:border-color .35s,box-shadow .35s;position:relative}.grid{grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);gap:clamp(6px,1.6cqmin,14px);width:100%;height:100%;display:grid}.grid button{background:#f7f4ef;border:0;border-radius:20px;place-items:center;width:100%;height:100%;margin:0;padding:12%;transition:background-color .15s,transform .1s;display:grid;box-shadow:inset 0 -5px #1c191512}@media (hover:hover){.grid button:not(:disabled):hover{background:color-mix(in srgb, var(--turn) 14%, #fff);transform:translateY(-2px)}.chunky:hover{transform:translateY(-1px)}}button{touch-action:manipulation;-webkit-tap-highlight-color:transparent}.grid button:not(:disabled):active{transform:translateY(2px)}.grid button svg{width:100%;height:100%}.grid button.won{background:color-mix(in srgb, var(--turn) 20%, #fff);animation:.7s ease-in-out 3 celebrate}.grid button:disabled{cursor:default}.mark-x,.mark-o{fill:none;stroke-width:14px;stroke-linecap:round}.mark-x{stroke:#2f6bff}.mark-o{stroke:#e23d6b}.player-mark .mark-x,.player-mark .mark-o{stroke:currentColor}.mark-x.drawn path,.mark-o.drawn circle{stroke-dasharray:180;stroke-dashoffset:180px;animation:.35s ease-out forwards draw}.mark-x.drawn path:nth-child(2){animation-delay:.12s}.strike{pointer-events:none;width:calc(100% - 2*clamp(10px,2cqmin,18px));height:calc(100% - 2*clamp(10px,2cqmin,18px));position:absolute;inset:clamp(10px,2cqmin,18px);overflow:visible}.strike line{stroke-width:12px;stroke-linecap:round;stroke-dasharray:420;stroke-dashoffset:420px;opacity:0}.strike.shown line{opacity:1;animation:.5s ease-out .2s forwards draw-strike}.action-bar{justify-content:center;align-items:center;gap:clamp(12px,3vw,28px);min-height:clamp(48px,8dvh,72px);display:flex}.action-bar .marks-status{color:var(--turn);text-align:center;margin:0;font-size:clamp(20px,3.4dvh,34px);font-weight:650}.stage.celebrating .marks-status{animation:.45s rise}.chunky{background:var(--turn);color:#fff;box-shadow:0 6px 0 color-mix(in srgb, var(--turn) 60%, #1c1915);border-radius:18px;margin:0;padding:12px 26px;font-family:inherit;font-size:clamp(17px,2.6dvh,22px);font-weight:650;transition:transform 80ms,box-shadow 80ms}.chunky:active{box-shadow:0 1px 0 color-mix(in srgb, var(--turn) 60%, #1c1915);transform:translateY(5px)}.chunky[hidden]{display:none}.chess-board{border-radius:24px;padding:clamp(6px,1.4cqmin,12px)}.chess-grid{border-radius:14px;grid-template-rows:repeat(8,1fr);grid-template-columns:repeat(8,1fr);width:100%;height:100%;display:grid;overflow:hidden;container-type:size}.chess-grid .sq{width:100%;height:100%;box-shadow:none;color:inherit;cursor:pointer;border:0;border-radius:0;place-items:center;margin:0;padding:0;display:grid;position:relative}.sq.light{background:#f3ead8}.sq.dark{background:color-mix(in srgb, var(--turn) 18%, #b98e6a)}.sq.last{background-image:linear-gradient(#ffd23f73,#ffd23f73)}.sq.selected{background-image:linear-gradient(color-mix(in srgb, var(--turn) 45%, transparent), color-mix(in srgb, var(--turn) 45%, transparent))}.sq.check{background-image:radial-gradient(circle,#e23d3df2 0%,#e23d3d8c 45%,#0000 75%)}.sq.target:after{content:"";aspect-ratio:1;background:color-mix(in srgb, var(--turn) 70%, transparent);pointer-events:none;border-radius:50%;width:30%;position:absolute}.sq.capture:after{border:5px solid color-mix(in srgb, var(--turn) 75%, transparent);background:0 0;width:86%}.piece{z-index:1;pointer-events:none;-webkit-user-select:none;user-select:none;font-family:Segoe UI Symbol,Apple Symbols,"Noto Sans Symbols 2",system-ui,sans-serif;font-size:10.5cqmin;line-height:1;position:relative}.piece-white{color:#fffdf8;text-shadow:0 0 1px #1c1915,1px 1px #1c1915,-1px -1px #1c1915,1px -1px #1c1915,-1px 1px #1c1915,0 3px 4px #1c191559}.piece-black{color:#1c1915;text-shadow:0 3px 4px #1c19154d}.sq.selected .piece{transition:transform .12s;transform:scale(1.12)}.coord{z-index:1;opacity:.6;pointer-events:none;font-size:max(9px,2.2cqmin);font-weight:600;position:absolute}.coord.rank{top:3px;left:4px}.coord.file{bottom:2px;right:4px}.player-mark .piece{place-items:center;width:100%;height:100%;font-size:clamp(28px,5dvh,44px);display:grid}.promotion{z-index:3;text-align:center;background:#f7f4eff0;border-radius:28px;place-content:center;gap:14px;padding:20px;display:grid;position:absolute;inset:0}.promotion[hidden]{display:none}.promotion p{margin:0;font-size:clamp(16px,2.6dvh,22px);font-weight:600}.promotion-choices{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.promotion-choices button{border:3px solid var(--turn);color:inherit;background:#fff;border-radius:16px;justify-items:center;gap:4px;margin:0;padding:10px 6px;font-family:inherit;font-size:14px;font-weight:600;display:grid}.promotion-choices .piece{font-size:clamp(34px,7dvh,54px)}.chess-words{justify-items:center;gap:4px;min-width:0;display:grid}.chess-words .marks-status{font-size:clamp(17px,2.8dvh,28px)}.chess-hint{color:#5c5348;text-align:center;max-width:560px;margin:0;font-size:clamp(13px,1.8dvh,16px)}@keyframes draw{to{stroke-dashoffset:0}}@keyframes draw-strike{to{stroke-dashoffset:0}}@keyframes glow{0%,to{box-shadow:0 8px 0 var(--seat), 0 0 0 6px color-mix(in srgb, var(--seat) 18%, transparent), 0 18px 40px color-mix(in srgb, var(--seat) 30%, transparent)}50%{box-shadow:0 8px 0 var(--seat), 0 0 0 10px color-mix(in srgb, var(--seat) 12%, transparent), 0 18px 48px color-mix(in srgb, var(--seat) 40%, transparent)}}.stage{padding-bottom:max(clamp(12px, 2.4dvh, 28px), env(safe-area-inset-bottom))}.screen[data-layout=portrait] .stage{padding:max(12px, env(safe-area-inset-top)) 12px max(14px, env(safe-area-inset-bottom));gap:12px}.screen[data-layout=portrait] .versus{gap:8px}.screen[data-layout=portrait] .vs{font-size:20px}.screen[data-layout=portrait] .player,.screen[data-layout=sideways] .player{text-align:center;grid-template-columns:1fr;justify-items:center;gap:8px}.screen[data-layout=portrait] .player{border-radius:20px;padding:8px}.screen[data-layout=portrait] .player-face{border-radius:14px;width:min(100%,clamp(84px,15dvh,150px))}.screen[data-layout=portrait] .player-info,.screen[data-layout=sideways] .player-info{grid-template-columns:auto auto;justify-content:center}.screen[data-layout=portrait] .player-mark,.screen[data-layout=sideways] .player-mark{width:26px}.screen[data-layout=portrait] .player-label{font-size:18px}.screen[data-layout=portrait] .board{border-radius:26px;width:min(100cqw,100cqh)}.screen[data-layout=portrait] .grid button{border-radius:16px}.screen[data-layout=portrait] .action-bar{flex-direction:column;gap:10px;min-height:0}.screen[data-layout=portrait] .action-bar .marks-status{font-size:22px}.screen[data-layout=portrait] .chunky{width:100%;max-width:360px;padding:14px 20px}.screen[data-layout=sideways] .stage{max-width:none;padding:10px max(14px, env(safe-area-inset-right)) max(10px, env(safe-area-inset-bottom)) max(14px, env(safe-area-inset-left));grid-template:"left arena right"minmax(0,1fr)"left bar right"/minmax(0,1fr) minmax(0,2fr) minmax(0,1fr);gap:8px 14px}.screen[data-layout=sideways] .versus{display:contents}.screen[data-layout=sideways] .vs{display:none}.screen[data-layout=sideways] .card-left{grid-area:left;place-self:center stretch}.screen[data-layout=sideways] .card-right{grid-area:right;place-self:center stretch}.screen[data-layout=sideways] .arena{grid-area:arena}.screen[data-layout=sideways] .action-bar{grid-area:bar;gap:12px;min-height:0}.screen[data-layout=sideways] .player-face{width:min(100%,50.6667dvh)}.screen[data-layout=sideways] .player-label{font-size:17px}.screen[data-layout=sideways] .player-note{font-size:13px}.screen[data-layout=sideways] .board{width:min(100cqw,100cqh);box-shadow:0 6px 0 var(--turn), 0 18px 40px color-mix(in srgb, var(--turn) 22%, transparent);border-width:3px;border-radius:22px;padding:8px}.screen[data-layout=sideways] .grid{gap:6px}.screen[data-layout=sideways] .grid button{border-radius:12px}.screen[data-layout=sideways] .strike{width:calc(100% - 16px);height:calc(100% - 16px);inset:8px}.screen[data-layout=sideways] .action-bar .marks-status{font-size:18px}.screen[data-layout=sideways] .chunky{box-shadow:0 4px 0 color-mix(in srgb, var(--turn) 60%, #1c1915);padding:8px 18px;font-size:16px}.screen[data-layout=portrait] .face-dock,.screen[data-layout=sideways] .face-dock{top:max(10px, env(safe-area-inset-top));left:max(10px, env(safe-area-inset-left));gap:8px}.screen[data-layout=portrait] .face-dock .slot,.screen[data-layout=sideways] .face-dock .slot{border-radius:12px;width:104px;height:74px}.screen[data-layout=portrait] .lobby{padding:112px 18px 32px}.screen[data-layout=sideways] .lobby{padding:96px 24px 24px}.screen[data-layout=portrait] .lobby h1{font-size:40px}.screen[data-layout=portrait] .game{width:100%}.screen[data-layout=portrait] .game h2{font-size:26px}.screen[data-layout=sideways] .games{grid-template-columns:repeat(3,minmax(0,1fr))}.screen[data-layout=portrait] .actions button{flex:1}.screen[data-layout=portrait] .floor-world,.screen[data-layout=sideways] .floor-world{padding:96px 10px 150px}.screen[data-layout=sideways].world-room .face-dock{flex-direction:column}.screen[data-layout=sideways] .floor-world{padding:10px 150px 10px 128px}.screen[data-layout=sideways] .floor{width:min(100%,150dvh - 36px)}.screen[data-layout=sideways] .pad{width:112px;height:112px;right:max(16px, env(safe-area-inset-right));bottom:max(16px, env(safe-area-inset-bottom))}@media (prefers-reduced-motion:reduce){.player.active,.grid button.won,.mark-x.drawn path,.mark-o.drawn circle,.strike.shown line,.stage.celebrating .marks-status{stroke-dashoffset:0;animation:none}}@keyframes celebrate{0%,to{transform:scale(1)}40%{transform:scale(1.06)}}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
