{"id":1468,"date":"2026-07-08T06:19:20","date_gmt":"2026-07-08T06:19:20","guid":{"rendered":"https:\/\/stadiaorg.com\/?page_id=1468"},"modified":"2026-09-12T09:45:07","modified_gmt":"2026-09-12T09:45:07","slug":"mind-arena","status":"publish","type":"page","link":"https:\/\/staging.stadiaorg.com\/de\/mind-arena\/","title":{"rendered":"Arena"},"content":{"rendered":"\n<div id=\"sv-arena-page\">\n\n<style>\n#sv-arena-page{\n  width:100%;\n  max-width:none;\n  margin:0 auto;\n  padding:0 0 100px;\n  background:#ffffff;\n  color:#0f172a;\n  font-family:Arial,Helvetica,sans-serif;\n  overflow:hidden;\n}\n\n#sv-arena-page *{\n  box-sizing:border-box;\n}\n\nbody:has(#sv-arena-page) .entry-content,\nbody:has(#sv-arena-page) .wp-block-post-content,\nbody:has(#sv-arena-page) main,\nbody:has(#sv-arena-page) .site-main{\n  width:100% !important;\n  max-width:none !important;\n  margin-left:auto !important;\n  margin-right:auto !important;\n  padding-left:0 !important;\n  padding-right:0 !important;\n}\n\n#sv-arena-page .sv-wrap{\n  width:min(1380px,94vw);\n  margin:0 auto;\n  padding:0 28px;\n}\n\n\/* HERO *\/\n#sv-arena-page .sv-hero{\n  padding:90px 0 76px;\n  background:\n    radial-gradient(circle at 80% 24%,rgba(106,92,255,.18),transparent 34%),\n    radial-gradient(circle at 12% 18%,rgba(225,29,72,.10),transparent 30%),\n    linear-gradient(180deg,#ffffff,#f8fafc);\n  border-radius:0 0 46px 46px;\n}\n\n#sv-arena-page .sv-hero-grid{\n  display:grid;\n  grid-template-columns:minmax(0,1.05fr) minmax(420px,.95fr);\n  gap:54px;\n  align-items:center;\n}\n\n#sv-arena-page .sv-kicker{\n  display:inline-flex;\n  padding:10px 16px;\n  border-radius:999px;\n  background:#eef2ff;\n  color:#4f46e5;\n  font-size:13px;\n  font-weight:900;\n  letter-spacing:.08em;\n  text-transform:uppercase;\n  margin-bottom:22px;\n}\n\n#sv-arena-page h1{\n  margin:0 0 22px;\n  font-size:74px;\n  line-height:.98;\n  letter-spacing:-.06em;\n  font-weight:900;\n  color:#0f172a;\n}\n\n#sv-arena-page .sv-lead{\n  max-width:780px;\n  margin:0 0 22px;\n  color:#334155;\n  font-size:23px;\n  line-height:1.6;\n}\n\n#sv-arena-page .sv-sub{\n  max-width:760px;\n  margin:0 0 34px;\n  color:#64748b;\n  font-size:18px;\n  line-height:1.8;\n}\n\n#sv-arena-page .sv-actions{\n  display:flex;\n  flex-wrap:wrap;\n  gap:14px;\n  align-items:center;\n}\n\n#sv-arena-page .sv-btn{\n  display:inline-flex;\n  justify-content:center;\n  align-items:center;\n  min-height:54px;\n  padding:14px 24px;\n  border-radius:18px;\n  background:#6a5cff;\n  color:#ffffff !important;\n  text-decoration:none !important;\n  border:none;\n  cursor:pointer;\n  font-size:15px;\n  font-weight:900;\n  box-shadow:0 18px 42px rgba(106,92,255,.22);\n}\n\n#sv-arena-page .sv-btn-dark{\n  background:#0f172a;\n  box-shadow:0 18px 42px rgba(15,23,42,.18);\n}\n\n#sv-arena-page .sv-btn-light{\n  background:#ffffff;\n  color:#0f172a !important;\n  border:1px solid #e2e8f0;\n  box-shadow:0 14px 34px rgba(15,23,42,.08);\n}\n\n#sv-arena-page .sv-hero-card{\n  padding:34px;\n  border-radius:38px;\n  background:#ffffff;\n  border:1px solid #e2e8f0;\n  box-shadow:0 28px 80px rgba(15,23,42,.12);\n}\n\n#sv-arena-page .sv-hero-card-main{\n  padding:30px;\n  border-radius:30px;\n  background:\n    radial-gradient(circle at top right,rgba(106,92,255,.18),transparent 38%),\n    linear-gradient(180deg,#f8fafc,#ffffff);\n  border:1px solid #e2e8f0;\n  margin-bottom:16px;\n}\n\n#sv-arena-page .sv-hero-card-main strong{\n  display:block;\n  margin-bottom:10px;\n  font-size:32px;\n  line-height:1.08;\n  letter-spacing:-.04em;\n}\n\n#sv-arena-page .sv-hero-card-main span{\n  display:block;\n  color:#64748b;\n  font-size:16px;\n  line-height:1.7;\n}\n\n#sv-arena-page .sv-mini-grid{\n  display:grid;\n  grid-template-columns:repeat(3,1fr);\n  gap:12px;\n}\n\n#sv-arena-page .sv-mini{\n  padding:16px;\n  border-radius:20px;\n  background:#ffffff;\n  border:1px solid #e2e8f0;\n}\n\n#sv-arena-page .sv-mini strong{\n  display:block;\n  font-size:15px;\n  margin-bottom:6px;\n}\n\n#sv-arena-page .sv-mini span{\n  color:#64748b;\n  font-size:13px;\n  line-height:1.5;\n}\n\n\/* ADS *\/\n#sv-arena-page .sv-ad-strip{\n  margin:44px auto 0;\n  display:grid;\n  grid-template-columns:repeat(3,1fr);\n  gap:18px;\n}\n\n#sv-arena-page .sv-ad{\n  min-height:132px;\n  padding:24px;\n  border-radius:26px;\n  border:1px dashed #93c5fd;\n  background:\n    radial-gradient(circle at top right,rgba(106,92,255,.10),transparent 40%),\n    #ffffff;\n  display:flex;\n  flex-direction:column;\n  justify-content:center;\n  text-align:center;\n  box-shadow:0 12px 34px rgba(15,23,42,.05);\n}\n\n#sv-arena-page .sv-ad strong{\n  display:block;\n  margin-bottom:8px;\n  font-size:18px;\n}\n\n#sv-arena-page .sv-ad span{\n  color:#64748b;\n  font-size:14px;\n  line-height:1.55;\n}\n\n\/* SECTION *\/\n#sv-arena-page .sv-section-title{\n  margin:86px auto 42px;\n  max-width:940px;\n  text-align:center;\n}\n\n#sv-arena-page .sv-section-title h2{\n  margin:0 0 16px;\n  font-size:54px;\n  line-height:1.05;\n  letter-spacing:-.05em;\n}\n\n#sv-arena-page .sv-section-title p{\n  max-width:820px;\n  margin:0 auto;\n  color:#64748b;\n  font-size:19px;\n  line-height:1.75;\n}\n\n\/* GAME GRID *\/\n#sv-arena-page .sv-games-grid{\n  display:grid;\n  grid-template-columns:repeat(2,1fr);\n  gap:26px;\n  align-items:start;\n}\n\n\/* STADIA CHESS LAB 10x8 *\/\n#sv-arena-page .sv-counter-card{\n  grid-column:1 \/ -1;\n  background:linear-gradient(145deg,#ffffff,#f8fafc);\n}\n\n#svCounterChessBoard{\n  display:grid;\n  grid-template-columns:repeat(10,minmax(0,1fr));\n  grid-template-rows:repeat(8,minmax(0,1fr));\n  width:min(100%,760px);\n  aspect-ratio:10 \/ 8;\n  border:3px solid #0f172a;\n  border-radius:14px;\n  overflow:hidden;\n  background:#f8fafc;\n}\n\n#svCounterChessBoard .sq{\n  position:relative;\n  display:flex;\n  align-items:center;\n  justify-content:center;\n  border:0;\n  padding:0;\n  min-width:0;\n  min-height:0;\n  width:100%;\n  height:100%;\n  cursor:pointer;\n  font-family:\"Segoe UI Symbol\",\"Arial Unicode MS\",sans-serif;\n  font-size:clamp(24px,4.4vw,54px);\n  line-height:1;\n}\n\n#svCounterChessBoard .light{background:#f3d7a5;}\n#svCounterChessBoard .dark{background:#b9855a;}\n#svCounterChessBoard .selected{\n  outline:4px solid #6a5cff;\n  outline-offset:-4px;\n}\n#svCounterChessBoard .legal{\n  box-shadow:inset 0 0 0 5px rgba(34,197,94,.45);\n}\n#svCounterChessBoard .special-piece{\n  display:flex;\n  align-items:center;\n  justify-content:center;\n  width:68%;\n  aspect-ratio:1;\n  border-radius:50%;\n  font-family:Arial,Helvetica,sans-serif;\n  font-size:.48em;\n  font-weight:900;\n  letter-spacing:-.04em;\n  border:3px solid currentColor;\n  box-shadow:0 2px 6px rgba(15,23,42,.25);\n}\n#svCounterChessBoard .white-special{color:#ffffff;background:#334155;text-shadow:0 1px 2px #000;}\n#svCounterChessBoard .black-special{color:#111827;background:#e2e8f0;}\n#sv-arena-page .sv-counter-rules{\n  margin-top:22px;\n  padding:20px 22px;\n  border:1px solid #c7d2fe;\n  border-radius:22px;\n  background:#eef2ff;\n  color:#334155;\n  line-height:1.65;\n}\n#sv-arena-page .sv-counter-rules strong{color:#0f172a;}\n#sv-arena-page .sv-patent-pending{\n  display:inline-flex;\n  align-items:center;\n  margin-top:10px;\n  padding:8px 12px;\n  border-radius:999px;\n  background:#fff7ed;\n  border:1px solid #fdba74;\n  color:#9a3412;\n  font-size:12px;\n  font-weight:900;\n  letter-spacing:.04em;\n  text-transform:uppercase;\n}\n#sv-arena-page .sv-control-label{\n  display:block;\n  margin-bottom:8px;\n  font-size:13px;\n  font-weight:900;\n  color:#475569;\n  text-transform:uppercase;\n  letter-spacing:.05em;\n}\n#sv-arena-page .sv-control-select{\n  width:100%;\n  min-height:44px;\n  padding:8px 12px;\n  border:1px solid #cbd5e1;\n  border-radius:12px;\n  background:#fff;\n  color:#0f172a;\n  font-weight:700;\n}\n\n#sv-arena-page .sv-game-card{\n  padding:28px;\n  border-radius:34px;\n  border:1px solid #e2e8f0;\n  background:#ffffff;\n  box-shadow:0 22px 58px rgba(15,23,42,.08);\n}\n\n#sv-arena-page .sv-game-card h3{\n  margin:0 0 10px;\n  font-size:30px;\n  line-height:1.1;\n  letter-spacing:-.035em;\n}\n\n#sv-arena-page .sv-game-card p{\n  margin:0 0 22px;\n  color:#64748b;\n  font-size:15px;\n  line-height:1.7;\n}\n\n#sv-arena-page .sv-game-head{\n  display:flex;\n  justify-content:space-between;\n  gap:16px;\n  align-items:flex-start;\n  margin-bottom:18px;\n}\n\n#sv-arena-page .sv-score{\n  padding:10px 14px;\n  border-radius:999px;\n  background:#eef2ff;\n  color:#4f46e5;\n  font-size:13px;\n  font-weight:900;\n  white-space:nowrap;\n}\n\n\/* CHESS *\/\n#sv-arena-page .sv-chess-layout{\n  display:grid;\n  grid-template-columns:minmax(0,360px) minmax(220px,1fr);\n  gap:18px;\n  align-items:start;\n}\n\n#svArenaChessBoard{\n  width:100%;\n  max-width:360px;\n  aspect-ratio:1\/1;\n  display:grid;\n  grid-template-columns:repeat(8,1fr);\n  grid-template-rows:repeat(8,1fr);\n  border:3px solid #0f172a;\n  border-radius:14px;\n  overflow:hidden;\n  background:#f8fafc;\n}\n\n#svArenaChessBoard .sq{\n  width:100%;\n  height:100%;\n  aspect-ratio:1\/1;\n  min-width:0;\n  min-height:0;\n  display:flex;\n  align-items:center;\n  justify-content:center;\n  font-size:30px;\n  line-height:1;\n  cursor:pointer;\n  user-select:none;\n  padding:0 !important;\n  margin:0 !important;\n}\n\n#svArenaChessBoard .light{\n  background:#f3d7a5;\n}\n\n#svArenaChessBoard .dark{\n  background:#b9855a;\n}\n\n#svArenaChessBoard .selected{\n  outline:4px solid #6a5cff;\n  outline-offset:-4px;\n}\n\n#svArenaChessBoard .legal{\n  box-shadow:inset 0 0 0 5px rgba(34,197,94,.45);\n}\n\n#sv-arena-page .sv-side-box{\n  padding:16px;\n  border-radius:18px;\n  border:1px solid #e2e8f0;\n  background:#f8fafc;\n  margin-bottom:10px;\n}\n\n#sv-arena-page .sv-side-box strong{\n  display:block;\n  margin-bottom:7px;\n  font-size:14px;\n}\n\n#sv-arena-page .sv-side-box span{\n  color:#334155;\n  font-size:14px;\n  line-height:1.5;\n}\n\n#sv-arena-page .sv-game-buttons{\n  display:flex;\n  flex-wrap:wrap;\n  gap:10px;\n  margin-top:14px;\n}\n\n#sv-arena-page .sv-small-btn{\n  min-height:42px;\n  padding:10px 15px;\n  border-radius:14px;\n  background:#0f172a;\n  color:#ffffff !important;\n  font-size:13px;\n  font-weight:900;\n  border:none;\n  cursor:pointer;\n  display:inline-flex;\n  align-items:center;\n  justify-content:center;\n  text-decoration:none !important;\n}\n\n#sv-arena-page .sv-small-btn.light{\n  background:#ffffff;\n  color:#0f172a !important;\n  border:1px solid #e2e8f0;\n}\n\n\n\/* PREMIUM PRIVATE CHESS *\/\n#svRemoteChessBoard{\n  width:100%;\n  max-width:360px;\n  aspect-ratio:1\/1;\n  display:grid;\n  grid-template-columns:repeat(8,1fr);\n  grid-template-rows:repeat(8,1fr);\n  border:3px solid #0f172a;\n  border-radius:14px;\n  overflow:hidden;\n  background:#f8fafc;\n}\n\n#svRemoteChessBoard .sq{\n  width:100%;\n  height:100%;\n  min-width:0;\n  min-height:0;\n  display:flex;\n  align-items:center;\n  justify-content:center;\n  font-size:30px;\n  line-height:1;\n  user-select:none;\n  padding:0 !important;\n  margin:0 !important;\n}\n\n#svRemoteChessBoard .light{background:#f3d7a5;}\n#svRemoteChessBoard .dark{background:#b9855a;}\n#svRemoteChessBoard .waiting{opacity:.72;}\n\n#sv-arena-page .sv-price{\n  padding:10px 14px;\n  border-radius:999px;\n  background:#ecfdf5;\n  color:#15803d;\n  font-size:13px;\n  font-weight:900;\n  white-space:nowrap;\n}\n\n#sv-arena-page .sv-room-code{\n  font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace;\n  letter-spacing:.08em;\n  font-weight:900;\n}\n\n\/* SUDOKU *\/\n#svSudokuGrid{\n  width:min(100%,378px);\n  aspect-ratio:1\/1;\n  display:grid;\n  grid-template-columns:repeat(9,1fr);\n  grid-template-rows:repeat(9,1fr);\n  border:3px solid #0f172a;\n  border-radius:14px;\n  overflow:hidden;\n  background:#0f172a;\n}\n\n#svSudokuGrid input{\n  width:100%;\n  height:100%;\n  min-width:0;\n  min-height:0;\n  border:1px solid #cbd5e1;\n  text-align:center;\n  font-size:20px;\n  font-weight:800;\n  color:#0f172a;\n  background:#ffffff;\n  outline:none;\n  padding:0 !important;\n  margin:0 !important;\n  border-radius:0 !important;\n}\n\n#svSudokuGrid input:nth-child(3n){\n  border-right:2px solid #0f172a;\n}\n\n#svSudokuGrid input:nth-child(n+19):nth-child(-n+27),\n#svSudokuGrid input:nth-child(n+46):nth-child(-n+54){\n  border-bottom:2px solid #0f172a;\n}\n\n#svSudokuGrid input.fixed{\n  background:#eef2ff;\n  color:#4f46e5;\n}\n\n#svSudokuGrid input.ok{\n  background:#ecfdf5;\n}\n\n#svSudokuGrid input.bad{\n  background:#fff1f2;\n}\n\n\/* MEMORY *\/\n#svMemoryGrid{\n  display:grid;\n  grid-template-columns:repeat(4,1fr);\n  gap:12px;\n  max-width:420px;\n}\n\n#svMemoryGrid .mem-card{\n  aspect-ratio:1\/1;\n  border-radius:18px;\n  border:1px solid #e2e8f0;\n  background:#eef2ff;\n  color:#4f46e5;\n  font-size:34px;\n  font-weight:900;\n  display:flex;\n  align-items:center;\n  justify-content:center;\n  cursor:pointer;\n  user-select:none;\n  box-shadow:0 12px 28px rgba(15,23,42,.06);\n}\n\n#svMemoryGrid .mem-card.open,\n#svMemoryGrid .mem-card.done{\n  background:#ffffff;\n}\n\n\/* REACTION *\/\n#svReactionBox{\n  width:100%;\n  min-height:260px;\n  border-radius:28px;\n  background:#eef2ff;\n  border:1px solid #c4b5fd;\n  display:flex;\n  align-items:center;\n  justify-content:center;\n  text-align:center;\n  cursor:pointer;\n  padding:24px;\n  color:#4f46e5;\n  font-weight:900;\n  font-size:24px;\n  line-height:1.25;\n}\n\n#svReactionBox.wait{\n  background:#fff7ed;\n  border-color:#fdba74;\n  color:#c2410c;\n}\n\n#svReactionBox.go{\n  background:#ecfdf5;\n  border-color:#86efac;\n  color:#15803d;\n}\n\n#svReactionBox.too-soon{\n  background:#fff1f2;\n  border-color:#fda4af;\n  color:#be123c;\n}\n\n\/* PRIVACY \/ AD NOTICE *\/\n#sv-arena-page .sv-privacy-note{\n  margin-top:46px;\n  padding:26px 30px;\n  border-radius:28px;\n  background:#f8fafc;\n  border:1px solid #e2e8f0;\n  color:#475569;\n  font-size:15px;\n  line-height:1.75;\n}\n\n#sv-arena-page .sv-privacy-note strong{\n  display:block;\n  margin-bottom:8px;\n  color:#0f172a;\n  font-size:18px;\n}\n\n\/* MONETIZATION *\/\n#sv-arena-page .sv-monetize{\n  margin-top:90px;\n  padding:58px;\n  border-radius:42px;\n  background:\n    radial-gradient(circle at top right,rgba(106,92,255,.14),transparent 34%),\n    linear-gradient(180deg,#f8fafc,#ffffff);\n  border:1px solid #e2e8f0;\n  text-align:center;\n}\n\n#sv-arena-page .sv-monetize h2{\n  margin:0 0 16px;\n  font-size:48px;\n  letter-spacing:-.04em;\n}\n\n#sv-arena-page .sv-monetize p{\n  max-width:820px;\n  margin:0 auto 28px;\n  color:#64748b;\n  line-height:1.75;\n  font-size:18px;\n}\n\n@media(max-width:1200px){\n  #sv-arena-page .sv-hero-grid,\n  #sv-arena-page .sv-games-grid{\n    grid-template-columns:1fr;\n  }\n\n  #sv-arena-page h1{\n    font-size:58px;\n  }\n\n  #sv-arena-page .sv-ad-strip{\n    grid-template-columns:1fr;\n  }\n}\n\n@media(max-width:760px){\n  #sv-arena-page .sv-wrap{\n    width:100%;\n    padding:0 16px;\n  }\n\n  #sv-arena-page .sv-hero{\n    padding:58px 0 62px;\n  }\n\n  #sv-arena-page h1{\n    font-size:42px;\n  }\n\n  #sv-arena-page .sv-lead{\n    font-size:19px;\n  }\n\n  #sv-arena-page .sv-mini-grid,\n  #sv-arena-page .sv-chess-layout{\n    grid-template-columns:1fr;\n  }\n\n  #sv-arena-page .sv-section-title h2,\n  #sv-arena-page .sv-monetize h2{\n    font-size:36px;\n  }\n\n  #sv-arena-page .sv-btn{\n    width:100%;\n  }\n\n  #svArenaChessBoard,\n  #svRemoteChessBoard,\n  #svCounterChessBoard{\n    max-width:100%;\n  }\n\n  #svArenaChessBoard .sq,\n  #svRemoteChessBoard .sq,\n  #svCounterChessBoard .sq{\n    font-size:24px;\n  }\n\n  #svMemoryGrid{\n    grid-template-columns:repeat(4,1fr);\n  }\n}\n<\/style>\n\n<div class=\"sv-wrap\">\n\n  <section class=\"sv-hero\">\n    <div class=\"sv-hero-grid\">\n\n      <div>\n        <div class=\"sv-kicker\">Mind Arena<\/div>\n\n        <h1>\n          Train focus,<br>\n          patience and strategy.\n        <\/h1>\n\n        <p class=\"sv-lead\">\n          A calmer arena for small cognitive games: chess, sudoku, memory and reaction.\n        <\/p>\n\n        <p class=\"sv-sub\">\n          Stadia is not only conversation. It is also attention, decision-making and mental clarity.\n          The Arena gives visitors a reason to return, play and stay longer.\n        <\/p>\n\n        <div class=\"sv-actions\">\n          <a class=\"sv-btn\" href=\"#chess\">Play Free Chess \u2192<\/a>\n          <a class=\"sv-btn sv-btn-dark\" href=\"#remote-chess\">Private Online Chess \u2192<\/a>\n          <a class=\"sv-btn sv-btn-light\" href=\"#sudoku\">Sudoku \u2192<\/a>\n        <\/div>\n      <\/div>\n\n      <div class=\"sv-hero-card\">\n        <div class=\"sv-hero-card-main\">\n          <strong>Games create return visits.<\/strong>\n          <span>\n            The Arena can become a simple engagement layer: play, focus, return, and discover Stadia\u2019s deeper conversation paths.\n          <\/span>\n        <\/div>\n\n        <div class=\"sv-mini-grid\">\n          <div class=\"sv-mini\">\n            <strong>Focus<\/strong>\n            <span>Attention and patience.<\/span>\n          <\/div>\n          <div class=\"sv-mini\">\n            <strong>Strategy<\/strong>\n            <span>Choice and consequence.<\/span>\n          <\/div>\n          <div class=\"sv-mini\">\n            <strong>Return<\/strong>\n            <span>Reasons to revisit.<\/span>\n          <\/div>\n        <\/div>\n      <\/div>\n\n    <\/div>\n\n  <\/section>\n\n  <section class=\"sv-section-title\">\n    <h2>Choose your arena.<\/h2>\n    <p>\n      Each game is simple, fast and useful: a small mental reset before returning to conversation, growth and direction.\n    <\/p>\n  <\/section>\n\n  <section class=\"sv-games-grid\">\n\n    <!-- CHESS -->\n    <div class=\"sv-game-card\" id=\"chess\">\n      <div class=\"sv-game-head\">\n        <div>\n          <h3>\u265f Chess Arena<\/h3>\n          <p>Play a legal chess game against the Stockfish 18 chess engine.<\/p>\n        <\/div>\n        <div class=\"sv-score\">Strategy<\/div>\n      <\/div>\n\n      <div class=\"sv-chess-layout\" id=\"svArenaChessApp\">\n        <div id=\"svArenaChessBoard\"><\/div>\n\n        <div>\n          <div class=\"sv-side-box\">\n            <strong>Status<\/strong>\n            <span id=\"svArenaChessStatus\">Loading&#8230;<\/span>\n          <\/div>\n\n          <div class=\"sv-side-box\">\n            <strong>Saved Wins<\/strong>\n            <span id=\"svArenaChessWins\">0<\/span>\n          <\/div>\n\n          <div class=\"sv-side-box\">\n            <strong>Last Move<\/strong>\n            <span id=\"svArenaChessLast\">No moves yet<\/span>\n          <\/div>\n\n          <div class=\"sv-side-box\">\n            <label class=\"sv-control-label\" for=\"svArenaChessLevel\">Algorithm level<\/label>\n            <select class=\"sv-control-select\" id=\"svArenaChessLevel\">\n              <option value=\"normal\" selected>Normal \u00b7 Stockfish 1500 Elo<\/option>\n              <option value=\"advanced\">Advanced \u00b7 Stockfish 2200 Elo<\/option>\n            <\/select>\n          <\/div>\n\n          <div class=\"sv-side-box\">\n            <strong>How to play<\/strong>\n            <span>Click a white piece, then click a highlighted legal square.<\/span>\n          <\/div>\n\n          <div class=\"sv-game-buttons\">\n            <button class=\"sv-small-btn\" id=\"svArenaChessReset\" type=\"button\">Reset Game<\/button>\n            <button class=\"sv-small-btn light\" id=\"svArenaChessClearWins\" type=\"button\">Clear Wins<\/button>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n\n    <!-- STADIA CHESS LAB: CLASSICO CONTROSPIONAGGIO 10x8 -->\n    <div class=\"sv-game-card sv-counter-card\" id=\"counter-chess\">\n      <div class=\"sv-game-head\">\n        <div>\n          <h3>\u265c Stadia Chess Lab \u00b7 Classico Controspionaggio<\/h3>\n          <p>La nuova variante 10\u00d78 con Alfiere Trasparente e Intercettore. Gioca con il Bianco contro il computer.<\/p>\n          <span class=\"sv-patent-pending\">Sistema in corso di brevetto \u00b7 Domanda ufficiale depositata e pendente \u00b7 Patent Pending<\/span>\n        <\/div>\n        <div class=\"sv-score\">Nuovo \u00b7 10\u00d78<\/div>\n      <\/div>\n\n      <div class=\"sv-chess-layout\" id=\"svCounterChessApp\">\n        <div id=\"svCounterChessBoard\" aria-label=\"Scacchiera Classico Controspionaggio 10 per 8\"><\/div>\n\n        <div>\n          <div class=\"sv-side-box\">\n            <strong>Stato<\/strong>\n            <span id=\"svCounterChessStatus\">Caricamento\u2026<\/span>\n          <\/div>\n          <div class=\"sv-side-box\">\n            <strong>Ultima mossa<\/strong>\n            <span id=\"svCounterChessLast\">Nessuna mossa<\/span>\n          <\/div>\n          <div class=\"sv-side-box\">\n            <strong>Vittorie salvate<\/strong>\n            <span id=\"svCounterChessWins\">0<\/span>\n          <\/div>\n          <div class=\"sv-side-box\">\n            <label class=\"sv-control-label\" for=\"svCounterChessLevel\">Livello computer<\/label>\n            <select class=\"sv-control-select\" id=\"svCounterChessLevel\">\n              <option value=\"1\">Rapido<\/option>\n              <option value=\"2\" selected>Equilibrato<\/option>\n              <option value=\"3\">Strategico<\/option>\n            <\/select>\n          <\/div>\n          <div class=\"sv-side-box\">\n            <label class=\"sv-control-label\" for=\"svCounterChessPromotion\">Promozione pedone<\/label>\n            <select class=\"sv-control-select\" id=\"svCounterChessPromotion\">\n              <option value=\"Q\">Regina<\/option>\n              <option value=\"R\">Torre<\/option>\n              <option value=\"B\">Alfiere<\/option>\n              <option value=\"N\">Cavallo<\/option>\n              <option value=\"T\">Alfiere Trasparente<\/option>\n              <option value=\"I\">Intercettore<\/option>\n            <\/select>\n          <\/div>\n          <div class=\"sv-game-buttons\">\n            <button class=\"sv-small-btn\" id=\"svCounterChessReset\" type=\"button\">Nuova partita<\/button>\n            <button class=\"sv-small-btn light\" id=\"svCounterChessClearWins\" type=\"button\">Azzera vittorie<\/button>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"sv-counter-rules\">\n        <strong>T \u00b7 Alfiere Trasparente:<\/strong> si muove in diagonale fino a 3 caselle e pu\u00f2 oltrepassare un solo pezzo, lasciandolo sulla scacchiera.\n        <strong>I \u00b7 Intercettore:<\/strong> si muove di una casella in ogni direzione; quando \u00e8 adiacente a un T nemico ne neutralizza la capacit\u00e0 di attraversare i pezzi.\n        Le altre figure seguono le regole classiche, con arrocco adattato alla 10\u00d78, en passant e promozione a Q\/R\/B\/N\/T\/I.\n        <br><strong>Protezione:<\/strong> sistema in corso di brevetto. La domanda ufficiale di brevetto \u00e8 stata depositata ed \u00e8 attualmente pendente (Patent Pending).\n      <\/div>\n    <\/div>\n\n\n    <!-- PREMIUM PRIVATE CHESS -->\n    <div class=\"sv-game-card\" id=\"remote-chess\">\n      <div class=\"sv-game-head\">\n        <div>\n          <h3>\u265a Private Online Chess<\/h3>\n          <p>Create a private chess room, send one secure invitation link and play on the same synchronized board from two different devices.<\/p>\n        <\/div>\n        <div class=\"sv-price\">Premium \u2022 CHF 9<\/div>\n      <\/div>\n\n      <div class=\"sv-chess-layout\" id=\"svRemoteChessApp\">\n        <div id=\"svRemoteChessBoard\" class=\"waiting\" aria-label=\"Private online chess preview\"><\/div>\n\n        <div>\n          <div class=\"sv-side-box\">\n            <strong>One link. Two players.<\/strong>\n            <span>The room creator opens Premium Chess, creates a private room and sends the invitation link.<\/span>\n          <\/div>\n\n          <div class=\"sv-side-box\">\n            <strong>Only one Premium access is required<\/strong>\n            <span>Only the player who creates the room needs Premium access. The invited opponent joins that game free.<\/span>\n          <\/div>\n\n          <div class=\"sv-side-box\">\n            <strong>Two devices, one synchronized board<\/strong>\n            <span>You play White. Your opponent opens the private link and joins as Black. Moves synchronize automatically.<\/span>\n          <\/div>\n\n          <div class=\"sv-side-box\">\n            <strong>Already have an invitation or room code?<\/strong>\n            <span>Open Premium Arena. A private invitation joins you directly; a room code can be entered there manually.<\/span>\n          <\/div>\n\n          <div class=\"sv-game-buttons\">\n            <a class=\"sv-small-btn\" href=\"\/premium-arena-access\/\">Play Private Chess \u2192<\/a>\n            <a class=\"sv-small-btn light\" href=\"\/premium-arena-access\/\">Enter Premium Arena \u2192<\/a>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- SUDOKU -->\n    <div class=\"sv-game-card\" id=\"sudoku\">\n      <div class=\"sv-game-head\">\n        <div>\n          <h3>\ud83d\udd22 Sudoku<\/h3>\n          <p>Complete the grid. The page checks your entries against a fixed beginner puzzle.<\/p>\n        <\/div>\n        <div class=\"sv-score\" id=\"svSudokuScore\">0 \/ 81<\/div>\n      <\/div>\n\n      <div id=\"svSudokuGrid\"><\/div>\n\n      <div class=\"sv-game-buttons\">\n        <button class=\"sv-small-btn\" id=\"svSudokuCheck\" type=\"button\">Check Sudoku<\/button>\n        <button class=\"sv-small-btn light\" id=\"svSudokuReset\" type=\"button\">Reset<\/button>\n      <\/div>\n    <\/div>\n\n    <!-- MEMORY -->\n    <div class=\"sv-game-card\" id=\"memory\">\n      <div class=\"sv-game-head\">\n        <div>\n          <h3>\ud83e\udde0 Memory<\/h3>\n          <p>Find all matching pairs. A simple exercise for attention and recall.<\/p>\n        <\/div>\n        <div class=\"sv-score\" id=\"svMemoryScore\">0 pairs<\/div>\n      <\/div>\n\n      <div id=\"svMemoryGrid\"><\/div>\n\n      <div class=\"sv-game-buttons\">\n        <button class=\"sv-small-btn\" id=\"svMemoryReset\" type=\"button\">New Memory Game<\/button>\n      <\/div>\n    <\/div>\n\n    <!-- REACTION -->\n    <div class=\"sv-game-card\" id=\"reaction\">\n      <div class=\"sv-game-head\">\n        <div>\n          <h3>\u26a1 Reaction Test<\/h3>\n          <p>Wait until the box turns green, then click as fast as possible.<\/p>\n        <\/div>\n        <div class=\"sv-score\" id=\"svReactionBest\">Best: \u2014<\/div>\n      <\/div>\n\n      <div id=\"svReactionBox\">Click to start<\/div>\n\n      <div class=\"sv-game-buttons\">\n        <button class=\"sv-small-btn light\" id=\"svReactionReset\" type=\"button\">Reset Best<\/button>\n      <\/div>\n    <\/div>\n\n  <\/section>\n\n  <section class=\"sv-ad-strip\">\n    <div class=\"sv-ad\">\n      <strong>Native Sponsor Block<\/strong>\n      <span>\u201cSupported by\u2026\u201d text, sponsor logo, or educational partner.<\/span>\n    <\/div>\n\n    <div class=\"sv-ad\">\n      <strong>Affiliate \/ Course Space<\/strong>\n      <span>Future links to learning tools, books, games, concentration apps.<\/span>\n    <\/div>\n\n    <div class=\"sv-ad\">\n      <strong>Premium Banner<\/strong>\n      <span>Reserved area for paid visibility, newsletter promotion or sponsor placement.<\/span>\n    <\/div>\n  <\/section>\n\n  <section class=\"sv-privacy-note\">\n    <strong>Advertising and consent notice<\/strong>\n    <span>\n      This page may include advertising, sponsor placements or partner messages.\n      Some advertising services may use cookies or similar technologies and may require user consent depending on privacy settings and applicable regulations.\n    <\/span>\n  <\/section>\n\n  <section class=\"sv-monetize\">\n    <h2>Advertising and sponsor spaces<\/h2>\n    <p>\n      Game pages can increase time on site and return visits. These spaces can later be used for sponsor placements,\n      partner messages, affiliate links, newsletter promotion or advertising services that respect user consent choices.\n    <\/p>\n\n    <div class=\"sv-actions\" style=\"justify-content:center;\">\n      <a class=\"sv-btn\" href=\"\/premium-arena-access\/\">Private Online Chess \u2014 CHF 9 \u2192<\/a>\n      <a class=\"sv-btn sv-btn-dark\" href=\"#chess\">Play Free Chess \u2192<\/a>\n      <a class=\"sv-btn sv-btn-light\" href=\"\/growth-profile-test\/\">Growth Profile \u2192<\/a>\n    <\/div>\n  <\/section>\n\n<\/div>\n\n<script>\n(function(){\n\n  if(window.__stadiaMindArenaInitialized){return;}\n  window.__stadiaMindArenaInitialized=true;\n\n  function loadChessJs(callback){\n    if(window.Chess){\n      callback();\n      return;\n    }\n\n    var s=document.createElement(\"script\");\n    s.src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/chess.js\/0.10.3\/chess.min.js\";\n    s.onload=callback;\n    s.onerror=function(){\n      var st=document.getElementById(\"svArenaChessStatus\");\n      if(st){st.textContent=\"Chess engine could not load.\";}\n    };\n    document.head.appendChild(s);\n  }\n\n  function initArena(){\n\n    \/* CHESS *\/\n    var chessRoot=document.getElementById(\"svArenaChessApp\");\n\n    if(chessRoot){\n      loadChessJs(function(){\n        var game=new Chess();\n        var selected=null;\n        var winAlreadySaved=false;\n\n        var symbols={\n          wp:\"\u2659\",wn:\"\u2658\",wb:\"\u2657\",wr:\"\u2656\",wq:\"\u2655\",wk:\"\u2654\",\n          bp:\"\u265f\",bn:\"\u265e\",bb:\"\u265d\",br:\"\u265c\",bq:\"\u265b\",bk:\"\u265a\"\n        };\n\n        var boardEl=document.getElementById(\"svArenaChessBoard\");\n        var statusEl=document.getElementById(\"svArenaChessStatus\");\n        var winsEl=document.getElementById(\"svArenaChessWins\");\n        var lastEl=document.getElementById(\"svArenaChessLast\");\n        var resetBtn=document.getElementById(\"svArenaChessReset\");\n        var clearWinsBtn=document.getElementById(\"svArenaChessClearWins\");\n        var levelEl=document.getElementById(\"svArenaChessLevel\");\n\n        if(!boardEl || !statusEl || !winsEl || !lastEl){\n          return;\n        }\n\n        function squareName(row,col){\n          return \"abcdefgh\"[col]+(8-row);\n        }\n\n        function getStoredWins(){\n          return parseInt(localStorage.getItem(\"svArenaChessWins\") || \"0\",10);\n        }\n\n        function setStoredWins(value){\n          localStorage.setItem(\"svArenaChessWins\",String(value));\n          winsEl.textContent=String(value);\n        }\n\n        function addWin(){\n          if(winAlreadySaved){return;}\n          winAlreadySaved=true;\n          setStoredWins(getStoredWins()+1);\n        }\n\n        function updateStatus(){\n          if(stockfishError){statusEl.textContent=stockfishError;return;}\n          if(!stockfishReady){statusEl.textContent=\"Loading Stockfish\u2026 Please wait.\";return;}\n          if(game.in_checkmate()){\n            if(game.turn()===\"b\"){\n              statusEl.textContent=\"Checkmate. You win!\";\n              addWin();\n            }else{\n              statusEl.textContent=\"Checkmate. Algorithm wins.\";\n            }\n            return;\n          }\n\n          if(game.in_draw()){\n            statusEl.textContent=\"Draw.\";\n            return;\n          }\n\n          if(game.in_check()){\n            statusEl.textContent=game.turn()===\"w\" ? \"White in check.\" : \"Black in check.\";\n            return;\n          }\n\n          var levelName=levelEl && levelEl.value===\"advanced\" ? \"Advanced\" : \"Normal\";\n          statusEl.textContent=game.turn()===\"w\" ? \"White to move\" : \"Stockfish thinking (\"+levelName+\")...\";\n        }\n\n        function draw(){\n          boardEl.innerHTML=\"\";\n          var b=game.board();\n\n          for(var r=0;r<8;r++){\n            for(var c=0;c<8;c++){\n              var sq=document.createElement(\"div\");\n              var name=squareName(r,c);\n              var piece=b[r][c];\n\n              sq.className=\"sq \"+(((r+c)%2===0) ? \"light\" : \"dark\");\n              sq.dataset.square=name;\n              sq.innerHTML=piece ? symbols[piece.color+piece.type] : \"\";\n\n              sq.addEventListener(\"click\",function(){\n                clickSquare(this.dataset.square);\n              });\n\n              boardEl.appendChild(sq);\n            }\n          }\n\n          updateStatus();\n        }\n\n        function clearMarks(){\n          boardEl.querySelectorAll(\".sq\").forEach(function(s){\n            s.classList.remove(\"selected\");\n            s.classList.remove(\"legal\");\n          });\n        }\n\n        function markMoves(square){\n          var moves=game.moves({square:square,verbose:true});\n          moves.forEach(function(m){\n            var el=boardEl.querySelector('[data-square=\"'+m.to+'\"]');\n            if(el){el.classList.add(\"legal\");}\n          });\n        }\n\n        function clickSquare(square){\n          if(!stockfishReady || stockfishError || game.game_over() || game.turn()!==\"w\"){return;}\n\n          var piece=game.get(square);\n\n          if(!selected){\n            if(!piece || piece.color!==\"w\"){return;}\n            selected=square;\n            clearMarks();\n\n            var selectedEl=boardEl.querySelector('[data-square=\"'+square+'\"]');\n            if(selectedEl){selectedEl.classList.add(\"selected\");}\n\n            markMoves(square);\n            return;\n          }\n\n          var move=null;\n\n          try{\n            move=game.move({from:selected,to:square,promotion:\"q\"});\n          }catch(e){\n            move=null;\n          }\n\n          selected=null;\n          clearMarks();\n\n          if(move){\n            lastEl.textContent=move.from+\" \u2192 \"+move.to;\n            draw();\n\n            if(!game.game_over()){\n              setTimeout(aiMove,500);\n            }\n          }\n        }\n\n        \/* Stockfish: one worker per game, no silent fallback. *\/\n        var STOCKFISH_WORKER_URL=\"\/wp-content\/uploads\/stadia-stockfish\/stockfish-18-lite-single.js\";\n        var stockfishWorker=null;\n        var stockfishReady=false;\n        var stockfishSearching=false;\n        var stockfishPendingFen=\"\";\n        var stockfishError=\"\";\n        var stockfishTimer=null;\n\n        function engineFailed(message){\n          clearTimeout(stockfishTimer);\n          stockfishReady=false;\n          stockfishSearching=false;\n          stockfishError=message;\n          if(stockfishWorker){stockfishWorker.terminate();}\n          stockfishWorker=null;\n          updateStatus();\n        }\n\n        function initStockfish(){\n          clearTimeout(stockfishTimer);\n          if(stockfishWorker){stockfishWorker.terminate();}\n          stockfishWorker=null;\n          stockfishReady=false;\n          stockfishSearching=false;\n          stockfishPendingFen=\"\";\n          stockfishError=\"\";\n          updateStatus();\n          try{\n            var worker=new Worker(STOCKFISH_WORKER_URL);\n            stockfishWorker=worker;\n            stockfishTimer=setTimeout(function(){\n              if(stockfishWorker===worker){\n                engineFailed(\"Stockfish loading timed out. Press Reset Game to retry.\");\n              }\n            },60000);\n            worker.onmessage=function(event){\n              if(stockfishWorker!==worker){return;}\n              String(event.data || \"\").split(\/\\r?\\n\/).forEach(function(raw){\n                if(stockfishWorker!==worker){return;}\n                var line=raw.trim();\n                if(line===\"uciok\"){\n                  worker.postMessage(\"setoption name Hash value 32\");\n                  worker.postMessage(\"ucinewgame\");\n                  worker.postMessage(\"isready\");\n                }else if(line===\"readyok\"){\n                  clearTimeout(stockfishTimer);\n                  stockfishReady=true;\n                  updateStatus();\n                  if(game.turn()===\"b\"){aiMove();}\n                }else if(line.indexOf(\"bestmove \")===0 &#038;&#038; stockfishSearching){\n                  clearTimeout(stockfishTimer);\n                  stockfishSearching=false;\n                  if(game.fen()!==stockfishPendingFen || game.turn()!==\"b\"){return;}\n                  var uci=line.split(\/\\s+\/)[1] || \"\";\n                  var move=null;\n                  if(\/^[a-h][1-8][a-h][1-8][qrbn]?$\/.test(uci)){\n                    try{\n                      move=game.move({from:uci.slice(0,2),to:uci.slice(2,4),promotion:uci.slice(4,5)||\"q\"});\n                    }catch(error){}\n                  }\n                  if(!move){\n                    engineFailed(\"Stockfish returned an invalid move. Press Reset Game to retry.\");\n                    return;\n                  }\n                  stockfishPendingFen=\"\";\n                  lastEl.textContent=move.from+\" \u2192 \"+move.to;\n                  draw();\n                }\n              });\n            };\n            worker.onerror=function(){\n              if(stockfishWorker===worker){\n                engineFailed(\"Stockfish could not load or stopped. Press Reset Game to retry.\");\n              }\n            };\n            worker.postMessage(\"uci\");\n          }catch(error){\n            engineFailed(\"Stockfish could not start. Press Reset Game to retry.\");\n          }\n        }\n\n        function aiMove(){\n          if(game.game_over() || game.turn()!==\"b\" || stockfishSearching){return;}\n          if(!stockfishReady || !stockfishWorker){updateStatus();return;}\n          var advanced=levelEl &#038;&#038; levelEl.value===\"advanced\";\n          var worker=stockfishWorker;\n          stockfishSearching=true;\n          stockfishPendingFen=game.fen();\n          updateStatus();\n          try{\n            worker.postMessage(\"setoption name UCI_LimitStrength value true\");\n            worker.postMessage(\"setoption name UCI_Elo value \"+(advanced ? 2200 : 1500));\n            var history=game.history({verbose:true}).map(function(move){\n              return move.from+move.to+(move.promotion || \"\");\n            });\n            worker.postMessage(\"position startpos moves \"+history.join(\" \"));\n            worker.postMessage(\"go movetime \"+(advanced ? 2500 : 800));\n            stockfishTimer=setTimeout(function(){\n              if(stockfishWorker===worker &#038;&#038; stockfishSearching){\n                engineFailed(\"Stockfish did not respond. Press Reset Game to retry.\");\n              }\n            },20000);\n          }catch(error){\n            engineFailed(\"Stockfish stopped. Press Reset Game to retry.\");\n          }\n        }\n\n        function resetGame(){\n          game.reset();\n          selected=null;\n          winAlreadySaved=false;\n          lastEl.textContent=\"No moves yet\";\n          initStockfish();\n          draw();\n        }\n\n        if(resetBtn){resetBtn.addEventListener(\"click\",resetGame);}\n        if(clearWinsBtn){clearWinsBtn.addEventListener(\"click\",function(){setStoredWins(0);});}\n        if(levelEl){\n          var savedLevel=localStorage.getItem(\"svArenaChessLevel\");\n          if(savedLevel===\"normal\" || savedLevel===\"advanced\"){levelEl.value=savedLevel;}\n          levelEl.addEventListener(\"change\",function(){\n            localStorage.setItem(\"svArenaChessLevel\",levelEl.value);\n            updateStatus();\n          });\n        }\n\n        winsEl.textContent=String(getStoredWins());\n        initStockfish();\n        draw();\n      });\n    }\n\n\n    \/* STADIA CHESS LAB \u00b7 CLASSICO CONTROSPIONAGGIO 10x8 *\/\n    (function(){\n      var root=document.getElementById(\"svCounterChessApp\");\n      if(!root){return;}\n\n      var W=10,H=8,WHITE=\"w\",BLACK=\"b\",FILES=\"abcdefghij\";\n      var boardEl=document.getElementById(\"svCounterChessBoard\");\n      var statusEl=document.getElementById(\"svCounterChessStatus\");\n      var lastEl=document.getElementById(\"svCounterChessLast\");\n      var winsEl=document.getElementById(\"svCounterChessWins\");\n      var levelEl=document.getElementById(\"svCounterChessLevel\");\n      var promotionEl=document.getElementById(\"svCounterChessPromotion\");\n      var resetEl=document.getElementById(\"svCounterChessReset\");\n      var clearEl=document.getElementById(\"svCounterChessClearWins\");\n      var selected=null,thinking=false,winSaved=false,state;\n      var dirs8=[[-1,-1],[0,-1],[1,-1],[-1,0],[1,0],[-1,1],[0,1],[1,1]];\n      var diag=[[-1,-1],[1,-1],[-1,1],[1,1]];\n      var ortho=[[-1,0],[1,0],[0,-1],[0,1]];\n      var knights=[[-2,-1],[-2,1],[-1,-2],[-1,2],[1,-2],[1,2],[2,-1],[2,1]];\n      var symbols={P:\"\u2659\",N:\"\u2658\",B:\"\u2657\",R:\"\u2656\",Q:\"\u2655\",K:\"\u2654\",p:\"\u265f\",n:\"\u265e\",b:\"\u265d\",r:\"\u265c\",q:\"\u265b\",k:\"\u265a\"};\n      var values={P:100,N:310,B:330,R:500,Q:920,T:370,I:350,K:100000};\n\n      function key(x,y){return x+\",\"+y;}\n      function inside(x,y){return x>=0&&x<W&#038;&#038;y>=0&&y<H;}\n      function color(piece){return piece===piece.toUpperCase()?WHITE:BLACK;}\n      function kind(piece){return piece.toUpperCase();}\n      function enemy(side){return side===WHITE?BLACK:WHITE;}\n      function clone(obj){return JSON.parse(JSON.stringify(obj));}\n      function alg(x,y){return FILES.charAt(x)+(y+1);}\n\n      function initialState(){\n        var b={},back=[\"R\",\"N\",\"T\",\"B\",\"K\",\"Q\",\"B\",\"I\",\"N\",\"R\"];\n        for(var x=0;x<W;x++){\n          b[key(x,0)]=back[x]; b[key(x,1)]=\"P\";\n          b[key(x,6)]=\"p\"; b[key(x,7)]=back[x].toLowerCase();\n        }\n        var s={board:b,turn:WHITE,castling:{w:{K:true,Q:true},b:{K:true,Q:true}},ep:null,half:0,full:1,history:[],positions:[]};\n        s.positions.push(positionKey(s));\n        return s;\n      }\n\n      function positionKey(s){\n        var out=[];\n        for(var y=0;y<H;y++){for(var x=0;x<W;x++){out.push(s.board[key(x,y)]||\".\");}}\n        return out.join(\"\")+\"|\"+s.turn+\"|\"+\n          Number(s.castling.w.K)+Number(s.castling.w.Q)+Number(s.castling.b.K)+Number(s.castling.b.Q)+\"|\"+(s.ep?s.ep.join(\",\"):\"-\");\n      }\n\n      function move(src,dst,piece,captured,extra){\n        var m={src:src,dst:dst,piece:piece,captured:captured||null,promotion:null,ep:false,castle:null};\n        if(extra){Object.keys(extra).forEach(function(k){m[k]=extra[k];});}\n        return m;\n      }\n\n      function addTarget(s,out,src,x,y,piece){\n        if(!inside(x,y)){return;}\n        var target=s.board[key(x,y)];\n        if(!target||color(target)!==color(piece)){out.push(move(src,[x,y],piece,target));}\n      }\n\n      function neutralized(s,src,side){\n        return dirs8.some(function(d){\n          var p=s.board[key(src[0]+d[0],src[1]+d[1])];\n          return p&#038;&#038;color(p)!==side&#038;&#038;kind(p)===\"I\";\n        });\n      }\n\n      function transparentMoves(s,src,piece){\n        var out=[],side=color(piece),blocked=neutralized(s,src,side);\n        diag.forEach(function(d){\n          var jumped=false;\n          for(var distance=1;distance<=3;distance++){\n            var x=src[0]+d[0]*distance,y=src[1]+d[1]*distance;\n            if(!inside(x,y)){break;}\n            var target=s.board[key(x,y)];\n            if(blocked){\n              if(!target){out.push(move(src,[x,y],piece));continue;}\n              if(color(target)!==side){out.push(move(src,[x,y],piece,target));}\n              break;\n            }\n            if(!jumped){\n              if(!target){out.push(move(src,[x,y],piece));}\n              else{\n                if(color(target)!==side){out.push(move(src,[x,y],piece,target));}\n                jumped=true;\n              }\n            }else{\n              if(!target){out.push(move(src,[x,y],piece));}\n              else{\n                if(color(target)!==side){out.push(move(src,[x,y],piece,target));}\n                break;\n              }\n            }\n          }\n        });\n        return out;\n      }\n\n      function castleMoves(s,side){\n        var y=side===WHITE?0:7,kp=side===WHITE?\"K\":\"k\",rp=side===WHITE?\"R\":\"r\",out=[];\n        if(s.board[key(4,y)]!==kp||inCheck(s,side)){return out;}\n        var opp=enemy(side);\n        if(s.castling[side].Q&#038;&#038;s.board[key(0,y)]===rp&#038;&#038;[1,2,3].every(function(x){return !s.board[key(x,y)];})&#038;&#038;\n          !squareAttacked(s,[3,y],opp)&#038;&#038;!squareAttacked(s,[2,y],opp)){\n          out.push(move([4,y],[2,y],kp,null,{castle:\"Q\"}));\n        }\n        if(s.castling[side].K&#038;&#038;s.board[key(9,y)]===rp&#038;&#038;[5,6,7,8].every(function(x){return !s.board[key(x,y)];})&#038;&#038;\n          !squareAttacked(s,[5,y],opp)&#038;&#038;!squareAttacked(s,[6,y],opp)){\n          out.push(move([4,y],[6,y],kp,null,{castle:\"K\"}));\n        }\n        return out;\n      }\n\n      function pseudo(s,src,attacksOnly){\n        var piece=s.board[key(src[0],src[1])];\n        if(!piece){return [];}\n        var side=color(piece),k=kind(piece),x=src[0],y=src[1],out=[];\n        if(k===\"P\"){\n          var dy=side===WHITE?1:-1,start=side===WHITE?1:6,promo=side===WHITE?7:0;\n          [-1,1].forEach(function(dx){\n            var nx=x+dx,ny=y+dy;if(!inside(nx,ny)){return;}\n            var target=s.board[key(nx,ny)];\n            if(attacksOnly){out.push(move(src,[nx,ny],piece,target));return;}\n            var isEp=s.ep&#038;&#038;s.ep[0]===nx&#038;&#038;s.ep[1]===ny&#038;&#038;!target;\n            if((target&#038;&#038;color(target)!==side)||isEp){\n              var cap=target||(s.board[key(nx,ny-dy)]||null);\n              if(ny===promo){[\"Q\",\"R\",\"B\",\"N\",\"T\",\"I\"].forEach(function(pr){out.push(move(src,[nx,ny],piece,cap,{promotion:pr,ep:isEp}));});}\n              else{out.push(move(src,[nx,ny],piece,cap,{ep:isEp}));}\n            }\n          });\n          if(attacksOnly){return out;}\n          var one=[x,y+dy];\n          if(inside(one[0],one[1])&#038;&#038;!s.board[key(one[0],one[1])]){\n            if(one[1]===promo){[\"Q\",\"R\",\"B\",\"N\",\"T\",\"I\"].forEach(function(pr){out.push(move(src,one,piece,null,{promotion:pr}));});}\n            else{out.push(move(src,one,piece));}\n            var two=[x,y+2*dy];\n            if(y===start&#038;&#038;!s.board[key(two[0],two[1])]){out.push(move(src,two,piece));}\n          }\n          return out;\n        }\n        if(k===\"N\"){knights.forEach(function(d){addTarget(s,out,src,x+d[0],y+d[1],piece);});return out;}\n        if(k===\"I\"){dirs8.forEach(function(d){addTarget(s,out,src,x+d[0],y+d[1],piece);});return out;}\n        if(k===\"T\"){return transparentMoves(s,src,piece);}\n        if(k===\"B\"||k===\"R\"||k===\"Q\"){\n          var ds=k===\"B\"?diag:(k===\"R\"?ortho:dirs8);\n          ds.forEach(function(d){\n            var nx=x+d[0],ny=y+d[1];\n            while(inside(nx,ny)){\n              var target=s.board[key(nx,ny)];\n              if(target){if(color(target)!==side){out.push(move(src,[nx,ny],piece,target));}break;}\n              out.push(move(src,[nx,ny],piece));nx+=d[0];ny+=d[1];\n            }\n          });\n          return out;\n        }\n        if(k===\"K\"){\n          dirs8.forEach(function(d){addTarget(s,out,src,x+d[0],y+d[1],piece);});\n          if(!attacksOnly){out=out.concat(castleMoves(s,side));}\n        }\n        return out;\n      }\n\n      function kingSquare(s,side){\n        var wanted=side===WHITE?\"K\":\"k\",found=null;\n        Object.keys(s.board).some(function(k){if(s.board[k]===wanted){found=k.split(\",\").map(Number);return true;}return false;});\n        return found;\n      }\n      function squareAttacked(s,square,bySide){\n        return Object.keys(s.board).some(function(k){\n          var p=s.board[k];if(color(p)!==bySide){return false;}\n          var src=k.split(\",\").map(Number);\n          return pseudo(s,src,true).some(function(m){return m.dst[0]===square[0]&#038;&#038;m.dst[1]===square[1];});\n        });\n      }\n      function inCheck(s,side){var ks=kingSquare(s,side);return !ks||squareAttacked(s,ks,enemy(side));}\n\n      function apply(s,m,record){\n        var ns=clone(s),srcKey=key(m.src[0],m.src[1]),dstKey=key(m.dst[0],m.dst[1]);\n        var piece=ns.board[srcKey],side=color(piece),k=kind(piece),captured=m.captured;\n        delete ns.board[srcKey];\n        if(m.ep){var dy=side===WHITE?1:-1,capKey=key(m.dst[0],m.dst[1]-dy);captured=ns.board[capKey];delete ns.board[capKey];}\n        else{delete ns.board[dstKey];}\n        ns.board[dstKey]=m.promotion?(side===WHITE?m.promotion:m.promotion.toLowerCase()):piece;\n        if(m.castle){\n          var y=side===WHITE?0:7,rookFrom=m.castle===\"K\"?[9,y]:[0,y],rookTo=m.castle===\"K\"?[5,y]:[3,y];\n          ns.board[key(rookTo[0],rookTo[1])]=ns.board[key(rookFrom[0],rookFrom[1])];delete ns.board[key(rookFrom[0],rookFrom[1])];\n        }\n        if(k===\"K\"){ns.castling[side].K=false;ns.castling[side].Q=false;}\n        if(k===\"R\"){\n          var home=side===WHITE?0:7;\n          if(m.src[0]===0&#038;&#038;m.src[1]===home){ns.castling[side].Q=false;}\n          if(m.src[0]===9&#038;&#038;m.src[1]===home){ns.castling[side].K=false;}\n        }\n        var opp=enemy(side),oppHome=opp===WHITE?0:7;\n        if(captured&#038;&#038;kind(captured)===\"R\"&#038;&#038;m.dst[1]===oppHome){\n          if(m.dst[0]===0){ns.castling[opp].Q=false;}if(m.dst[0]===9){ns.castling[opp].K=false;}\n        }\n        ns.ep=null;\n        if(k===\"P\"&#038;&#038;Math.abs(m.dst[1]-m.src[1])===2){ns.ep=[m.src[0],(m.src[1]+m.dst[1])\/2];}\n        ns.half=(k===\"P\"||captured)?0:ns.half+1;\n        if(side===BLACK){ns.full++;}\n        ns.turn=opp;\n        if(record){\n          var notation=alg(m.src[0],m.src[1])+\" \u2192 \"+alg(m.dst[0],m.dst[1])+(m.promotion?\" = \"+m.promotion:\"\");\n          ns.history.push(notation);ns.positions.push(positionKey(ns));\n        }\n        return ns;\n      }\n\n      function legalMoves(s,side){\n        side=side||s.turn;var out=[];\n        Object.keys(s.board).forEach(function(k){\n          var p=s.board[k];if(color(p)!==side){return;}\n          var src=k.split(\",\").map(Number);\n          pseudo(s,src,false).forEach(function(m){\n            if(m.captured&#038;&#038;kind(m.captured)===\"K\"){return;}\n            if(!inCheck(apply(s,m,false),side)){out.push(m);}\n          });\n        });\n        return out;\n      }\n\n      function terminal(s){\n        var moves=legalMoves(s);\n        if(!moves.length){return inCheck(s,s.turn)?{winner:enemy(s.turn),reason:\"Scacco matto\"}:{winner:\"draw\",reason:\"Stallo\"};}\n        if(s.half>=100){return {winner:\"draw\",reason:\"Regola delle 50 mosse\"};}\n        var pk=positionKey(s),count=s.positions.filter(function(x){return x===pk;}).length;\n        if(count>=3){return {winner:\"draw\",reason:\"Triplice ripetizione\"};}\n        return null;\n      }\n\n      function material(s,perspective){\n        var score=0;\n        Object.keys(s.board).forEach(function(k){var p=s.board[k],v=values[kind(p)]||0;score+=color(p)===perspective?v:-v;});\n        return score;\n      }\n      function moveScore(s,m,level){\n        var child=apply(s,m,false),score=material(child,BLACK);\n        if(m.captured){score+=(values[kind(m.captured)]||0)*.35;}\n        if(inCheck(child,WHITE)){score+=45;}\n        if(level>=2){score+=legalMoves(child,BLACK).length*.8;}\n        if(level>=3){\n          var replies=legalMoves(child,WHITE),worst=Infinity;\n          replies.slice(0,36).forEach(function(r){worst=Math.min(worst,material(apply(child,r,false),BLACK));});\n          if(worst!==Infinity){score=score*.35+worst*.65;}\n        }\n        return score+Math.random()*(level===1?100:level===2?16:3);\n      }\n\n      function chooseAiMove(){\n        var moves=legalMoves(state),level=parseInt(levelEl.value||\"2\",10);\n        if(!moves.length){return null;}\n        if(level===1){\n          var captures=moves.filter(function(m){return m.captured;});\n          var pool=captures.length&&Math.random()>.35?captures:moves;\n          return pool[Math.floor(Math.random()*pool.length)];\n        }\n        var best=moves[0],bestScore=-Infinity;\n        moves.forEach(function(m){var score=moveScore(state,m,level);if(score>bestScore){bestScore=score;best=m;}});\n        return best;\n      }\n\n      function getWins(){return parseInt(localStorage.getItem(\"svCounterChessWins\")||\"0\",10);}\n      function setWins(n){localStorage.setItem(\"svCounterChessWins\",String(n));winsEl.textContent=String(n);}\n      function sameSquare(a,b){return a&&b&&a[0]===b[0]&&a[1]===b[1];}\n      function sourceMoves(){return selected?legalMoves(state).filter(function(m){return sameSquare(m.src,selected);}):[];}\n\n      function statusText(){\n        var end=terminal(state);\n        if(end){\n          if(end.winner===WHITE&&!winSaved){setWins(getWins()+1);winSaved=true;}\n          return end.reason+\" \u00b7 \"+(end.winner===\"draw\"?\"Patta\":end.winner===WHITE?\"Hai vinto\":\"Ha vinto il computer\");\n        }\n        if(thinking){return \"Il computer sta pensando\u2026\";}\n        var check=inCheck(state,state.turn)?\" \u00b7 Scacco\":\"\";\n        return (state.turn===WHITE?\"Tocca a te (Bianco)\":\"Tocca al computer (Nero)\")+check;\n      }\n\n      function drawCounter(){\n        boardEl.innerHTML=\"\";var targets=sourceMoves();\n        for(var y=7;y>=0;y--){\n          for(var x=0;x<W;x++){\n            var sq=document.createElement(\"button\"),p=state.board[key(x,y)],target=null;\n            sq.type=\"button\";sq.className=\"sq \"+(((x+y)%2)?\"light\":\"dark\");sq.dataset.x=x;sq.dataset.y=y;\n            if(sameSquare(selected,[x,y])){sq.classList.add(\"selected\");}\n            targets.some(function(m){if(sameSquare(m.dst,[x,y])){target=m;return true;}return false;});\n            if(target){sq.classList.add(\"legal\");if(target.captured){sq.classList.add(\"capture\");}}\n            if(p){\n              if(kind(p)===\"T\"||kind(p)===\"I\"){\n                var badge=document.createElement(\"span\");badge.className=\"special-piece \"+(color(p)===WHITE?\"white-special\":\"black-special\");badge.textContent=kind(p);sq.appendChild(badge);\n              }else{sq.textContent=symbols[p]||p;}\n            }\n            sq.setAttribute(\"aria-label\",alg(x,y)+(p?\" \"+kind(p):\"\"));boardEl.appendChild(sq);\n          }\n        }\n        statusEl.textContent=statusText();winsEl.textContent=String(getWins());\n      }\n\n      function finishMove(m){\n        state=apply(state,m,true);lastEl.textContent=state.history[state.history.length-1]||\"Nessuna mossa\";selected=null;drawCounter();\n      }\n      function aiTurn(){\n        if(terminal(state)||state.turn!==BLACK){thinking=false;drawCounter();return;}\n        thinking=true;drawCounter();\n        window.setTimeout(function(){var m=chooseAiMove();if(m){finishMove(m);}thinking=false;drawCounter();},350);\n      }\n      function clickCounter(e){\n        var sq=e.target.closest(\".sq\");if(!sq||thinking||state.turn!==WHITE||terminal(state)){return;}\n        var pos=[parseInt(sq.dataset.x,10),parseInt(sq.dataset.y,10)],p=state.board[key(pos[0],pos[1])];\n        if(selected){\n          var candidates=sourceMoves().filter(function(m){return sameSquare(m.dst,pos);});\n          if(candidates.length){\n            var chosen=candidates[0];\n            if(candidates.some(function(m){return m.promotion;})){\n              chosen=candidates.filter(function(m){return m.promotion===promotionEl.value;})[0]||chosen;\n            }\n            finishMove(chosen);if(!terminal(state)){aiTurn();}return;\n          }\n        }\n        selected=p&#038;&#038;color(p)===WHITE?pos:null;drawCounter();\n      }\n      function resetCounter(){state=initialState();selected=null;thinking=false;winSaved=false;lastEl.textContent=\"Nessuna mossa\";drawCounter();}\n\n      boardEl.addEventListener(\"click\",clickCounter);\n      resetEl.addEventListener(\"click\",resetCounter);\n      clearEl.addEventListener(\"click\",function(){setWins(0);});\n      resetCounter();\n    })();\n\n    \/* PREMIUM PRIVATE CHESS PREVIEW\n       The real Premium Chess room creation, payment entitlement,\n       private invitation and synchronized play are handled on:\n       \/premium-arena-access\/\n    *\/\n    var remoteBoard=document.getElementById(\"svRemoteChessBoard\");\n\n    function drawRemotePreview(){\n      if(!remoteBoard){return;}\n      var start=[\n        \"rnbqkbnr\",\n        \"pppppppp\",\n        \"........\",\n        \"........\",\n        \"........\",\n        \"........\",\n        \"PPPPPPPP\",\n        \"RNBQKBNR\"\n      ];\n      var symbols={P:\"\u2659\",N:\"\u2658\",B:\"\u2657\",R:\"\u2656\",Q:\"\u2655\",K:\"\u2654\",p:\"\u265f\",n:\"\u265e\",b:\"\u265d\",r:\"\u265c\",q:\"\u265b\",k:\"\u265a\"};\n      remoteBoard.innerHTML=\"\";\n      for(var r=0;r<8;r++){\n        for(var c=0;c<8;c++){\n          var sq=document.createElement(\"div\");\n          sq.className=\"sq \"+(((r+c)%2===0)?\"light\":\"dark\");\n          var piece=start[r][c];\n          sq.textContent=piece!==\".\" ? symbols[piece] : \"\";\n          remoteBoard.appendChild(sq);\n        }\n      }\n    }\n\n    drawRemotePreview();\n\n    \/* SUDOKU *\/\n    var sudokuGrid=document.getElementById(\"svSudokuGrid\");\n    var sudokuScore=document.getElementById(\"svSudokuScore\");\n    var sudokuCheck=document.getElementById(\"svSudokuCheck\");\n    var sudokuReset=document.getElementById(\"svSudokuReset\");\n\n    var puzzle=[\n      \"530070000\",\n      \"600195000\",\n      \"098000060\",\n      \"800060003\",\n      \"400803001\",\n      \"700020006\",\n      \"060000280\",\n      \"000419005\",\n      \"000080079\"\n    ];\n\n    var solution=[\n      \"534678912\",\n      \"672195348\",\n      \"198342567\",\n      \"859761423\",\n      \"426853791\",\n      \"713924856\",\n      \"961537284\",\n      \"287419635\",\n      \"345286179\"\n    ];\n\n    function buildSudoku(){\n      if(!sudokuGrid){return;}\n\n      sudokuGrid.innerHTML=\"\";\n\n      for(var r=0;r<9;r++){\n        for(var c=0;c<9;c++){\n          var value=puzzle[r][c];\n          var input=document.createElement(\"input\");\n          input.maxLength=1;\n          input.inputMode=\"numeric\";\n          input.dataset.r=r;\n          input.dataset.c=c;\n\n          if(value!==\"0\"){\n            input.value=value;\n            input.disabled=true;\n            input.className=\"fixed\";\n          }\n\n          input.addEventListener(\"input\",function(){\n            this.value=this.value.replace(\/[^1-9]\/g,\"\").slice(0,1);\n            this.classList.remove(\"ok\",\"bad\");\n            updateSudokuScore();\n          });\n\n          sudokuGrid.appendChild(input);\n        }\n      }\n\n      updateSudokuScore();\n    }\n\n    function updateSudokuScore(){\n      if(!sudokuGrid || !sudokuScore){return;}\n      var filled=0;\n      sudokuGrid.querySelectorAll(\"input\").forEach(function(i){\n        if(i.value){filled++;}\n      });\n      sudokuScore.textContent=filled+\" \/ 81\";\n    }\n\n    function checkSudoku(){\n      if(!sudokuGrid){return;}\n\n      sudokuGrid.querySelectorAll(\"input\").forEach(function(input){\n        if(input.classList.contains(\"fixed\")){return;}\n\n        var r=parseInt(input.dataset.r,10);\n        var c=parseInt(input.dataset.c,10);\n\n        input.classList.remove(\"ok\",\"bad\");\n\n        if(!input.value){return;}\n\n        if(input.value===solution[r][c]){\n          input.classList.add(\"ok\");\n        }else{\n          input.classList.add(\"bad\");\n        }\n      });\n\n      updateSudokuScore();\n    }\n\n    if(sudokuCheck){sudokuCheck.addEventListener(\"click\",checkSudoku);}\n    if(sudokuReset){sudokuReset.addEventListener(\"click\",buildSudoku);}\n    buildSudoku();\n\n    \/* MEMORY *\/\n    var memoryGrid=document.getElementById(\"svMemoryGrid\");\n    var memoryScore=document.getElementById(\"svMemoryScore\");\n    var memoryReset=document.getElementById(\"svMemoryReset\");\n\n    var memoryOpen=[];\n    var memoryDone=0;\n    var memoryLocked=false;\n\n    function shuffle(arr){\n      for(var i=arr.length-1;i>0;i--){\n        var j=Math.floor(Math.random()*(i+1));\n        var t=arr[i];\n        arr[i]=arr[j];\n        arr[j]=t;\n      }\n      return arr;\n    }\n\n    function buildMemory(){\n      if(!memoryGrid){return;}\n\n      memoryGrid.innerHTML=\"\";\n      memoryOpen=[];\n      memoryDone=0;\n      memoryLocked=false;\n\n      var icons=[\"\ud83d\udd25\",\"\ud83e\udded\",\"\ud83d\udcac\",\"\ud83c\udf31\",\"\u265f\ufe0f\",\"\u26a1\",\"\ud83e\udde0\",\"\ud83c\udf0d\"];\n      var deck=shuffle(icons.concat(icons));\n\n      deck.forEach(function(icon){\n        var card=document.createElement(\"div\");\n        card.className=\"mem-card\";\n        card.dataset.icon=icon;\n        card.textContent=\"?\";\n\n        card.addEventListener(\"click\",function(){\n          if(memoryLocked || card.classList.contains(\"done\") || card.classList.contains(\"open\")){\n            return;\n          }\n\n          card.classList.add(\"open\");\n          card.textContent=card.dataset.icon;\n          memoryOpen.push(card);\n\n          if(memoryOpen.length===2){\n            memoryLocked=true;\n\n            if(memoryOpen[0].dataset.icon===memoryOpen[1].dataset.icon){\n              memoryOpen[0].classList.add(\"done\");\n              memoryOpen[1].classList.add(\"done\");\n              memoryDone++;\n              memoryOpen=[];\n              memoryLocked=false;\n              if(memoryScore){memoryScore.textContent=memoryDone+\" pairs\";}\n            }else{\n              setTimeout(function(){\n                memoryOpen.forEach(function(c){\n                  c.classList.remove(\"open\");\n                  c.textContent=\"?\";\n                });\n                memoryOpen=[];\n                memoryLocked=false;\n              },650);\n            }\n          }\n        });\n\n        memoryGrid.appendChild(card);\n      });\n\n      if(memoryScore){memoryScore.textContent=\"0 pairs\";}\n    }\n\n    if(memoryReset){memoryReset.addEventListener(\"click\",buildMemory);}\n    buildMemory();\n\n    \/* REACTION *\/\n    var reactionBox=document.getElementById(\"svReactionBox\");\n    var reactionBest=document.getElementById(\"svReactionBest\");\n    var reactionReset=document.getElementById(\"svReactionReset\");\n    var reactionTimer=null;\n    var reactionStart=0;\n    var reactionState=\"idle\";\n\n    function getBestReaction(){\n      return localStorage.getItem(\"svReactionBest\") || \"\";\n    }\n\n    function setBestReaction(v){\n      localStorage.setItem(\"svReactionBest\",String(v));\n      if(reactionBest){reactionBest.textContent=\"Best: \"+v+\" ms\";}\n    }\n\n    function updateBestReaction(){\n      var b=getBestReaction();\n      if(reactionBest){reactionBest.textContent=b ? \"Best: \"+b+\" ms\" : \"Best: \u2014\";}\n    }\n\n    function resetReactionBox(){\n      if(!reactionBox){return;}\n      reactionBox.className=\"\";\n      reactionBox.textContent=\"Click to start\";\n      reactionState=\"idle\";\n      clearTimeout(reactionTimer);\n    }\n\n    if(reactionBox){\n      reactionBox.addEventListener(\"click\",function(){\n        if(reactionState===\"idle\"){\n          reactionState=\"wait\";\n          reactionBox.className=\"wait\";\n          reactionBox.textContent=\"Wait for green...\";\n          var delay=1200+Math.floor(Math.random()*2600);\n\n          reactionTimer=setTimeout(function(){\n            reactionState=\"go\";\n            reactionStart=Date.now();\n            reactionBox.className=\"go\";\n            reactionBox.textContent=\"Click now!\";\n          },delay);\n\n          return;\n        }\n\n        if(reactionState===\"wait\"){\n          clearTimeout(reactionTimer);\n          reactionState=\"idle\";\n          reactionBox.className=\"too-soon\";\n          reactionBox.textContent=\"Too soon. Click to try again.\";\n          return;\n        }\n\n        if(reactionState===\"go\"){\n          var score=Date.now()-reactionStart;\n          reactionBox.className=\"\";\n          reactionBox.textContent=\"Your reaction: \"+score+\" ms. Click to try again.\";\n          reactionState=\"idle\";\n\n          var best=getBestReaction();\n          if(!best || score<parseInt(best,10)){\n            setBestReaction(score);\n          }\n        }\n      });\n    }\n\n    if(reactionReset){\n      reactionReset.addEventListener(\"click\",function(){\n        localStorage.removeItem(\"svReactionBest\");\n        updateBestReaction();\n        resetReactionBox();\n      });\n    }\n\n    updateBestReaction();\n\n  }\n\n  \/* WordPress e alcuni plugin di ottimizzazione possono eseguire questo\n     blocco dopo DOMContentLoaded. In quel caso inizializziamo subito. *\/\n  if(document.readyState===\"loading\"){\n    document.addEventListener(\"DOMContentLoaded\",initArena,{once:true});\n  }else{\n    initArena();\n  }\n})();\n<\/script>\n\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>Mind Arena Train focus, patience and strategy. A calmer arena for small cognitive games: chess, sudoku, memory and reaction. Stadia is not only conversation. It is also attention, decision-making and mental clarity. The Arena gives visitors a reason to return, play and stay longer. Play Free Chess \u2192 Private Online Chess \u2192 Sudoku \u2192 Games [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1468","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/staging.stadiaorg.com\/de\/wp-json\/wp\/v2\/pages\/1468","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/staging.stadiaorg.com\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/staging.stadiaorg.com\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/staging.stadiaorg.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/staging.stadiaorg.com\/de\/wp-json\/wp\/v2\/comments?post=1468"}],"version-history":[{"count":22,"href":"https:\/\/staging.stadiaorg.com\/de\/wp-json\/wp\/v2\/pages\/1468\/revisions"}],"predecessor-version":[{"id":1902,"href":"https:\/\/staging.stadiaorg.com\/de\/wp-json\/wp\/v2\/pages\/1468\/revisions\/1902"}],"wp:attachment":[{"href":"https:\/\/staging.stadiaorg.com\/de\/wp-json\/wp\/v2\/media?parent=1468"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}