:root{color:#f4f7f1;font-synthesis:none;text-rendering:optimizelegibility;--ink:#f4f7f1;--muted:#abb9ad;--surface:#1b2920;--surface-raised:#23352a;--line:#f4f7f124;--gold:#f6ca5b;--gold-dark:#d9a933;--green:#71d99a;--red:#ff8d7e;--shadow:0 24px 70px #0000004d;background:#101914;font-family:Inter,ui-rounded,SF Pro Rounded,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}html{overscroll-behavior:none;background:radial-gradient(circle at 20% 0,#4b845b29,#0000 34rem),#101914;width:100%;min-width:320px;height:100%;overflow:hidden}body{overscroll-behavior:none;width:100%;min-width:320px;height:100%;margin:0;position:fixed;inset:0;overflow:hidden}#root{overscroll-behavior:none;width:100%;height:100%;overflow:hidden}button,input{font:inherit}button{-webkit-tap-highlight-color:transparent}button:disabled{cursor:not-allowed;opacity:.48}:focus-visible{outline:3px solid var(--gold);outline-offset:3px}.centered-screen{width:100%;height:100%;padding:max(24px, env(safe-area-inset-top)) max(18px, env(safe-area-inset-right)) max(24px, env(safe-area-inset-bottom)) max(18px, env(safe-area-inset-left));overscroll-behavior:none;-webkit-overflow-scrolling:touch;place-items:center;display:grid;overflow:hidden auto}.state-card{border:1px solid var(--line);background:linear-gradient(145deg, #ffffff08, transparent 42%), var(--surface);width:min(100%,480px);box-shadow:var(--shadow);border-radius:30px;flex-direction:column;align-items:flex-start;padding:clamp(26px,8vw,48px);display:flex}.hero-card{position:relative;overflow:hidden}.hero-card:after{content:"";border:36px solid #f6ca5b0f;border-radius:50%;width:160px;height:160px;position:absolute;bottom:-72px;right:-72px}.state-card h1{letter-spacing:-.04em;max-width:12ch;margin:0;font-size:clamp(2.2rem,12vw,4.5rem);line-height:.98}.state-card>p:not(.eyebrow,.action-message){color:var(--muted);margin:20px 0 26px;font-size:1.04rem;line-height:1.55}.state-card>small{color:var(--muted);margin-top:18px}.eyebrow{color:var(--gold);letter-spacing:.14em;text-transform:uppercase;margin:0 0 10px;font-size:.72rem;font-weight:850}.letter-mark,.state-icon{color:#192118;background:var(--gold);width:82px;height:82px;box-shadow:0 9px 0 var(--gold-dark), 0 16px 32px #00000042;border:2px solid #f6ca5b66;border-radius:22px;place-items:center;margin-bottom:28px;font-family:Georgia,serif;font-size:3.1rem;font-weight:900;display:grid;transform:rotate(-4deg)}.letter-mark.small{width:68px;height:68px;font-size:2.5rem}.state-icon{width:64px;height:64px;color:var(--ink);box-shadow:none;background:#ff8d7e24;border-color:#ff8d7e61;font-family:inherit;font-size:2rem;transform:none}.primary-button,.secondary-button,.danger-button,.text-button{cursor:pointer;border:0;border-radius:14px;min-height:44px;font-weight:800}.primary-button{color:#172017;background:var(--gold);width:100%;min-height:52px;box-shadow:0 7px 0 var(--gold-dark);justify-content:center;align-items:center;gap:10px;padding:12px 18px;display:inline-flex}.primary-button:active:not(:disabled){box-shadow:0 3px 0 var(--gold-dark);transform:translateY(4px)}.secondary-button{border:1px solid var(--line);color:var(--ink);background:#ffffff0d;padding:10px 16px}.danger-button{color:#ffd7d1;background:#ff8d7e1f;border:1px solid #ff8d7e47;width:100%;padding:12px 18px}.text-button{color:var(--muted);background:0 0;padding:8px 4px}.google-dot{color:#253024;background:#fff;border-radius:50%;place-items:center;width:26px;height:26px;font-weight:900;display:grid}.large-spinner,.spinner{border:3px solid #f6ca5b2e;border-top-color:var(--gold);border-radius:50%;animation:.8s linear infinite spin;display:inline-block}.large-spinner{width:54px;height:54px;margin-bottom:28px}.spinner{width:20px;height:20px}.game-page{width:min(100%,540px);height:100dvh;padding:max(13px, env(safe-area-inset-top)) max(14px, env(safe-area-inset-right)) max(28px, env(safe-area-inset-bottom)) max(14px, env(safe-area-inset-left));overscroll-behavior:none;flex-direction:column;margin:0 auto;display:flex;overflow:hidden}.scoreboard{flex:none;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:10px;display:grid}.push-notification-control{gap:8px;width:100%;margin:12px 0;display:grid}.push-notification-control p{color:var(--muted);text-align:center;margin:0;font-size:.82rem;line-height:1.4}.push-notification-control p[role=alert]{color:#ffd7d1}.push-notification-button{color:#f9e8b9;cursor:pointer;background:#f6ca5b14;border:1px solid #f6ca5b4d;border-radius:14px;justify-content:center;align-items:center;gap:9px;width:100%;min-height:44px;padding:9px 13px;font-weight:800;display:inline-flex}.push-notification-button.is-enabled{color:#bff5d3;opacity:1;background:#71d99a17;border-color:#71d99a4d}.state-card>.push-notification-control{margin-top:16px;margin-bottom:2px}.game-page>.push-notification-control{flex:none;margin-top:0}.score-card{border:1px solid var(--line);background:var(--surface);border-radius:17px;justify-content:space-between;align-items:center;gap:8px;min-width:0;min-height:66px;padding:10px 12px;display:flex}.score-card.has-turn{background:#f6ca5b17;border-color:#f6ca5b8c}.score-card>div{min-width:0}.player-name{text-overflow:ellipsis;white-space:nowrap;font-size:.86rem;font-weight:800;display:block;overflow:hidden}.score-card small{color:var(--muted);margin-top:3px;font-size:.78rem;display:block}.score-card strong{color:var(--gold);font-variant-numeric:tabular-nums;font-size:clamp(1.45rem,7.5vw,2.15rem)}.game-status{flex:none;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;min-height:54px;margin:0 2px 9px;display:grid}.final-result{width:100%;color:var(--muted);text-align:right;margin:0}.game-status>.turn-pill,.game-status>.turn-actions{grid-column:1;justify-self:start}.turn-actions{gap:7px;display:flex}.game-status>.rollback-button{white-space:nowrap;grid-column:3;justify-self:end;width:auto;min-height:38px;padding:7px 11px}.rating-backdrop{z-index:95;background:#030a068c;place-items:center;display:grid;position:fixed;inset:0}.rating-dialog{border:1px solid var(--line);background:var(--surface-raised);width:min(100% - 36px,340px);box-shadow:var(--shadow);border-radius:22px;gap:10px;padding:12px;display:grid}.rating-dialog button{min-height:54px;color:var(--ink);font:inherit;background:#ffffff12;border:0;border-radius:14px;font-weight:900}.turn-pill{border:1px solid var(--line);min-height:34px;color:var(--muted);white-space:nowrap;background:#ffffff0a;border-radius:999px;align-items:center;padding:6px 11px;font-size:.78rem;font-weight:900;display:inline-flex}.turn-pill.is-mine{color:#bff5d3;background:#71d99a1c;border-color:#71d99a61}.turn-pill.is-enemy{color:#ffd7d1;background:#ff8d7e29;border-color:#ff8d7e73}.turn-action{appearance:none;cursor:pointer;width:auto}.turn-action:disabled{cursor:default;opacity:1}.turn-pill.is-surrender{color:#ffd7d1;background:#ff8d7e29;border-color:#ff8d7e73}.turn-pill.is-nudge{color:var(--gold);background:#eebe5c1f;border-color:#eebe5c73}.game-status>.final-result{grid-column:1/-1}.board-shell{border:1px solid var(--line);box-shadow:var(--shadow);background:#152119;border-radius:25px;padding:10px}.board-stage{flex:0 auto;place-items:center;width:100%;height:min(100dvw - 28px,512px);min-height:0;display:grid}.board-stage>.board-shell{aspect-ratio:1;width:auto;max-width:100%;height:100%}.game-board{--board-gap:clamp(4px, 1.5vw, 7px);aspect-ratio:1;touch-action:none;-webkit-user-select:none;user-select:none;gap:var(--board-gap);grid-template-rows:repeat(5,minmax(0,1fr));grid-template-columns:repeat(5,minmax(0,1fr));width:100%;display:grid}.board-cell{min-width:44px;min-height:44px;color:var(--ink);cursor:pointer;isolation:isolate;background:#203127;border:1px solid #f4f7f11f;border-radius:clamp(10px,3vw,16px);padding:0;font-family:Georgia,serif;font-size:clamp(1.45rem,8.5vw,2.6rem);font-weight:900;position:relative;overflow:visible;box-shadow:inset 0 -4px #00000029}.board-cell:empty,.board-cell:not(.is-start,.is-draft,.is-last-path,.is-last-letter){background:#1b2a21}.board-cell.is-start{color:#ffe8a7;background:#33432e;border-color:#f6ca5b40}.board-cell.is-draft{border:2px dashed var(--gold);color:#182017;background:var(--gold);box-shadow:inset 0 -4px #684b0c33,0 0 0 3px #f6ca5b1f}.board-cell.is-last-path{z-index:1;border-color:#71d99a75;box-shadow:inset 0 0 0 2px #71d99a2b,inset 0 -4px #00000029}.board-letter{z-index:2;position:relative}.path-arrow{--arrow-color:var(--green);--arrow-glow:#71d99a38;--arrow-inset:clamp(7px, 2.2vw, 10px);--arrow-stroke:3px;--arrow-half-length:calc(var(--arrow-inset) + var(--board-gap) / 2 + 1px);width:var(--arrow-half-length);z-index:3;pointer-events:none;transform-origin:0;height:12px;display:none;position:absolute}.gesture-path-arrow{--arrow-color:var(--gold);--arrow-glow:#f6ca5b3d}.path-arrow:before{height:var(--arrow-stroke);background:var(--arrow-color);box-shadow:0 0 6px var(--arrow-glow);content:"";border-radius:999px;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}.path-arrow-in:after{border-top:var(--arrow-stroke) solid var(--arrow-color);border-right:var(--arrow-stroke) solid var(--arrow-color);width:7px;height:7px;filter:drop-shadow(0 0 3px var(--arrow-glow));content:"";position:absolute;top:50%;right:1px;transform:translateY(-50%)rotate(45deg)}.board-cell[data-last-next=up] .last-path-arrow.path-arrow-out,.board-cell[data-path-next=up] .gesture-path-arrow.path-arrow-out{top:var(--arrow-inset);display:block;left:50%;transform:translateY(-50%)rotate(-90deg)}.board-cell[data-last-next=right] .last-path-arrow.path-arrow-out,.board-cell[data-path-next=right] .gesture-path-arrow.path-arrow-out{top:50%;left:calc(100% - var(--arrow-inset));display:block;transform:translateY(-50%)rotate(0)}.board-cell[data-last-next=down] .last-path-arrow.path-arrow-out,.board-cell[data-path-next=down] .gesture-path-arrow.path-arrow-out{top:calc(100% - var(--arrow-inset));display:block;left:50%;transform:translateY(-50%)rotate(90deg)}.board-cell[data-last-next=left] .last-path-arrow.path-arrow-out,.board-cell[data-path-next=left] .gesture-path-arrow.path-arrow-out{top:50%;left:var(--arrow-inset);display:block;transform:translateY(-50%)rotate(180deg)}.board-cell[data-last-prev=up] .last-path-arrow.path-arrow-in,.board-cell[data-path-prev=up] .gesture-path-arrow.path-arrow-in{top:calc(var(--board-gap) / -2 - 1px);display:block;left:50%;transform:translateY(-50%)rotate(90deg)}.board-cell[data-last-prev=right] .last-path-arrow.path-arrow-in,.board-cell[data-path-prev=right] .gesture-path-arrow.path-arrow-in{top:50%;left:calc(100% + var(--board-gap) / 2 + 1px);display:block;transform:translateY(-50%)rotate(180deg)}.board-cell[data-last-prev=down] .last-path-arrow.path-arrow-in,.board-cell[data-path-prev=down] .gesture-path-arrow.path-arrow-in{top:calc(100% + var(--board-gap) / 2 + 1px);display:block;left:50%;transform:translateY(-50%)rotate(-90deg)}.board-cell[data-last-prev=left] .last-path-arrow.path-arrow-in,.board-cell[data-path-prev=left] .gesture-path-arrow.path-arrow-in{top:50%;left:calc(var(--board-gap) / -2 - 1px);display:block;transform:translateY(-50%)rotate(0)}.board-cell.is-last-letter{z-index:2;border:2px solid var(--gold);box-shadow:inset 0 0 0 2px #f6ca5b24,inset 0 -4px #00000029}.board-cell.is-in-path{z-index:2;border-color:var(--gold);background:#4b4528}.board-cell.is-in-path .last-path-arrow{display:none}.board-cell.is-path-invalid{border-color:var(--red);background:#4a2925}.board-cell.is-path-invalid .gesture-path-arrow{--arrow-color:var(--red);--arrow-glow:#ff8d7e47}.action-message{color:#f9e8b9;text-align:center;background:#f6ca5b12;border:1px solid #f6ca5b33;border-radius:14px;width:100%;min-height:46px;margin:12px 0;padding:11px 14px;line-height:1.4}.game-page>.danger-button,.game-page>.primary-button{flex:none;margin-top:12px}.move-history{border-top:1px solid var(--line);overscroll-behavior:none;-webkit-overflow-scrolling:touch;flex:1 1 0;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;min-height:0;margin-top:12px;padding-top:14px;display:grid;overflow-y:auto}.move-history-column{min-width:0;padding:0 14px}.move-history-column+.move-history-column{border-left:1px solid var(--line)}.move-history ol{margin:0;padding:0;list-style:none}.move-history li{overflow-wrap:anywhere;letter-spacing:.04em;padding:6px 0;font-family:Georgia,serif;font-size:1.05rem;font-weight:700}.move-history-word{color:inherit;cursor:pointer;font:inherit;letter-spacing:inherit;text-align:left;touch-action:manipulation;background:0 0;border:0;padding:0}.move-history-word:active{color:var(--green)}.confirmation-backdrop{padding:max(18px, env(safe-area-inset-top)) max(18px, env(safe-area-inset-right)) max(18px, env(safe-area-inset-bottom)) max(18px, env(safe-area-inset-left));z-index:90;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#030a06b3;place-items:center;display:grid;position:fixed;inset:0}.confirmation-dialog{border:1px solid var(--line);width:min(100%,340px);color:var(--ink);background:var(--surface-raised);box-shadow:var(--shadow);border-radius:22px;padding:24px}.confirmation-dialog h2{letter-spacing:-.02em;margin:0;font-size:1.35rem}.confirmation-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:22px;display:grid}.confirmation-actions .danger-button,.confirmation-actions .secondary-button{width:100%}.offline-banner{z-index:20;width:min(100% - 24px,420px);min-height:50px;top:max(10px, env(safe-area-inset-top));color:#ffe0dc;background:#3f1d19f0;border:1px solid #ff8d7e4d;border-radius:16px;justify-content:center;align-items:center;gap:9px;padding:8px 14px;font-weight:900;display:flex;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 12px 32px #00000061}.offline-banner small{color:#e8aaa2;font-weight:600}.keyboard-backdrop{padding:18px max(12px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left));z-index:50;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#030a06bd;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.letter-keyboard{border:1px solid var(--line);background:var(--surface-raised);width:min(100%,500px);max-height:calc(100dvh - 36px);box-shadow:var(--shadow);overscroll-behavior:none;-webkit-overflow-scrolling:touch;border-radius:28px;padding:18px;overflow-y:auto}.letter-grid{grid-template-columns:repeat(6,minmax(44px,1fr));gap:6px;display:grid}.letter-key{min-width:44px;min-height:48px;color:var(--ink);cursor:pointer;background:#304537;border:1px solid #f4f7f124;border-radius:12px;padding:0;font-family:Georgia,serif;font-size:1.2rem;font-weight:900;box-shadow:inset 0 -3px #0000002e}.letter-key:active{background:#445b4a;transform:translateY(2px)}.toast-message{z-index:30;width:min(100% - 28px,440px);right:14px;bottom:max(14px, env(safe-area-inset-bottom));color:#ffe0dc;text-align:center;background:#452722;border:1px solid #ff8d7e47;border-radius:14px;padding:13px 16px;position:fixed;left:50%;transform:translate(-50%)}.app-update-backdrop{padding:max(18px, env(safe-area-inset-top)) max(18px, env(safe-area-inset-right)) max(18px, env(safe-area-inset-bottom)) max(18px, env(safe-area-inset-left));z-index:100;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#030a06b3;place-items:center;display:grid;position:fixed;inset:0}.app-update-dialog{border:1px solid var(--line);width:min(100%,340px);max-height:calc(100dvh - 36px);color:var(--ink);background:var(--surface-raised);box-shadow:var(--shadow);border-radius:22px;flex-direction:column;padding:24px;display:flex;overflow:hidden}.app-update-dialog h2{letter-spacing:-.02em;margin:0;font-size:1.35rem}.app-update-dialog ul{overscroll-behavior:none;min-height:0;color:var(--muted);-webkit-overflow-scrolling:touch;gap:8px;margin:18px 0 0;padding-left:22px;padding-right:6px;line-height:1.45;display:grid;overflow-y:auto}.app-update-confirm{width:auto;min-width:92px;margin-top:22px;margin-left:auto;display:flex}@keyframes spin{to{transform:rotate(360deg)}}@media (width>=600px){.game-page{padding-top:max(22px, env(safe-area-inset-top));padding-bottom:44px}.board-shell{padding:14px}}@media (width<=359px){.game-page{padding-left:10px;padding-right:10px}.board-stage{height:min(100dvw - 20px,520px)}.board-shell{padding:7px}.letter-keyboard{padding:12px}.letter-grid{grid-template-columns:repeat(5,minmax(44px,1fr));gap:4px}.score-card{padding:10px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
