@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important;scroll-behavior:auto!important}}:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;--bg-page: #1a1a1a;--bg-board: #1e1e1e;--bg-section: #1e1e1e;--bg-section-soft: #2a2a2a;--bg-button: #2c2c2c;--bg-die: #fff;--text: #f0f0f0;--text-strong: #fff;--text-muted: #aaa;--text-faint: #666;--border: #444;--border-soft: #2a2a2a;--accent: #ffd700;--shadow-strong: 0 8px 24px rgba(0, 0, 0, .4);color-scheme:dark;color:var(--text);background-color:var(--bg-page);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:root[data-theme=light]{--bg-page: #f4f5f7;--bg-board: #ffffff;--bg-section: #ffffff;--bg-section-soft: #eef0f3;--bg-button: #e9ecef;--bg-die: #1a1a1a;--text: #1c1c1e;--text-strong: #000;--text-muted: #555;--text-faint: #888;--border: #d0d4d8;--border-soft: #e6e9ec;--accent: #c98e00;--shadow-strong: 0 6px 18px rgba(20, 30, 50, .12);color-scheme:light}:root[data-accent=teal]{--accent: #4dd0e1}:root[data-accent=violet]{--accent: #b39ddb}:root[data-accent=coral]{--accent: #ff8a65}:root[data-theme=light][data-accent=teal]{--accent: #00838f}:root[data-theme=light][data-accent=violet]{--accent: #6a1b9a}:root[data-theme=light][data-accent=coral]{--accent: #d84315}a{font-weight:500;color:var(--accent);text-decoration:inherit}a:hover{color:var(--accent);filter:brightness(1.1)}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh;background-color:var(--bg-page);color:var(--text)}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:var(--bg-button);color:var(--text);cursor:pointer;transition:border-color .25s,background .15s}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}.board-grid{--cell-size: clamp(18px, 4.6vw, 40px);display:grid;grid-template-columns:repeat(16,var(--cell-size));grid-template-rows:repeat(16,var(--cell-size));gap:2px;margin:20px auto;position:relative;background-color:var(--bg-board);padding:15px;border-radius:12px;box-shadow:var(--shadow-strong);border:3px solid var(--border)}.square{font-size:calc(var(--cell-size) * .27)}.piece{font-size:calc(var(--cell-size) * .32)}.square{position:relative;border:1px solid #555;transition:all .2s;width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#333;background-color:#f0f0f0}.square.active{border-color:#ff6b35;box-shadow:0 0 8px #ff6b35b3}.square.valid-target{outline:3px solid #ffd700;outline-offset:-2px;cursor:pointer;animation:pulse-gold 1s infinite alternate}.square.drag-target{outline:3px solid #00e676;outline-offset:-2px;background-color:#00e6762e;animation:none}body.dragging-piece .square.valid-target{box-shadow:0 0 12px 4px #ffd7008c}body.dragging-piece .square.drag-target{box-shadow:0 0 14px 5px #00e676a6}.square.last-move{animation:last-move-pulse .7s ease-out 1}@keyframes last-move-pulse{0%{box-shadow:0 0 0 0 var(--accent),inset 0 0 0 2px var(--accent)}60%{box-shadow:0 0 8px 4px var(--accent),inset 0 0 0 2px var(--accent)}to{box-shadow:0 0 0 0 transparent,inset 0 0 0 0 transparent}}.piece{touch-action:none}@keyframes pulse-gold{0%{box-shadow:0 0 4px 2px #ffd70080}to{box-shadow:0 0 10px 4px #ffd700e6}}.square.has-selected{outline:2px solid #ffffff;outline-offset:-2px}.square.hint-target{outline:3px dashed #00e5ff;outline-offset:-2px;animation:pulse-hint 1.1s ease-in-out infinite alternate}.piece.hint-source{animation:pulse-hint-piece 1.1s ease-in-out infinite alternate;z-index:3}@keyframes pulse-hint{0%{box-shadow:0 0 4px 2px #00e5ff73}to{box-shadow:0 0 12px 5px #00e5fff2}}@keyframes pulse-hint-piece{0%{box-shadow:0 0 0 2px #00e5ff8c}to{box-shadow:0 0 8px 4px #00e5ffe6}}.square.outer-red{background-color:#d81b60;color:#fff;border:1px solid #ad1457}.square.outer-blue{background-color:#1976d2;color:#fff;border:1px solid #1565c0}.square.outer-green{background-color:#388e3c;color:#fff;border:1px solid #2e7d32}.square.outer-yellow{background-color:#f57c00;color:#fff;border:1px solid #ef6c00}.square.inner-red{background-color:#f8bbd9;color:#880e4f;border:1px solid #d81b60}.square.inner-blue{background-color:#bbdefb;color:#0d47a1;border:1px solid #1976d2}.square.inner-green{background-color:#c8e6c9;color:#1b5e20;border:1px solid #388e3c}.square.inner-yellow{background-color:#ffe0b2;color:#e65100;border:1px solid #f57c00}.square.safe-red{background-color:#d81b60;color:#fff;border:3px solid #ad1457;box-shadow:inset 0 0 8px #ad14574d}.square.safe-blue{background-color:#1976d2;color:#fff;border:3px solid #1565c0;box-shadow:inset 0 0 8px #1565c04d}.square.safe-green{background-color:#388e3c;color:#fff;border:3px solid #2e7d32;box-shadow:inset 0 0 8px #2e7d324d}.square.safe-yellow{background-color:#f57c00;color:#fff;border:3px solid #ef6c00;box-shadow:inset 0 0 8px #ef6c004d}.square.startzone-red{background-color:#fce4ec;border:2px solid #d81b60;color:#880e4f}.square.startzone-blue{background-color:#e3f2fd;border:2px solid #1976d2;color:#0d47a1}.square.startzone-green{background-color:#e8f5e8;border:2px solid #388e3c;color:#1b5e20}.square.startzone-yellow{background-color:#fff3e0;border:2px solid #f57c00;color:#e65100}.square.endzone-red{background-color:#fce4ec;border:2px dashed #d81b60;color:#880e4f}.square.endzone-blue{background-color:#e3f2fd;border:2px dashed #1976d2;color:#0d47a1}.square.endzone-green{background-color:#e8f5e8;border:2px dashed #388e3c;color:#1b5e20}.square.endzone-yellow{background-color:#fff3e0;border:2px dashed #f57c00;color:#e65100}.dice-well{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;gap:10px;padding:15px;background-color:#000000b3;border-radius:10px;border:2px solid #555}.die{width:40px;height:40px;background-color:#fff;color:#000;display:flex;align-items:center;justify-content:center;font-weight:700;border-radius:5px;box-shadow:0 2px 4px #0003;animation:dice-settle .32s cubic-bezier(.34,1.56,.64,1)}.die.die-rolling{animation:dice-tumble-fast .45s linear infinite}.dice-well.rolling{border-color:gold;box-shadow:0 0 18px #ffd70073}@keyframes dice-tumble-fast{0%{transform:rotate(0) scale(1)}50%{transform:rotate(180deg) scale(1.12)}to{transform:rotate(360deg) scale(1)}}@keyframes dice-settle{0%{transform:scale(1.4)}60%{transform:scale(.92)}to{transform:scale(1)}}.piece{position:absolute;top:50%;left:50%;width:75%;height:75%;border-radius:50%;transition:transform .25s cubic-bezier(.4,0,.2,1),filter .2s,box-shadow .2s;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.5);box-shadow:0 2px 6px #0006,inset 0 -2px 4px #0003,inset 0 2px 3px #ffffff4d;cursor:pointer;-webkit-user-select:none;user-select:none;animation:piece-drop .28s cubic-bezier(.34,1.56,.64,1);contain:layout style}@supports (view-transition-name: piece){.piece{animation:none}}::view-transition-old(*),::view-transition-new(*){animation-duration:.32s;animation-timing-function:cubic-bezier(.4,0,.2,1)}@keyframes piece-drop{0%{transform:translate(-50%,-160%) scale(.4);opacity:0}60%{transform:translate(-50%,-45%) scale(1.1);opacity:1}to{transform:translate(-50%,-50%) scale(1)}}.piece.selected{filter:drop-shadow(0 0 10px rgba(255,215,0,.9));animation:none;transform:translate(-50%,-120%) scale(1.1)}.piece.red{background:radial-gradient(circle at 30% 30%,#f06292,#e91e63);border:2px solid white;box-shadow:0 3px 8px #e91e6380}.piece.blue{background:radial-gradient(circle at 30% 30%,#64b5f6,#2196f3);border:2px solid white;box-shadow:0 3px 8px #2196f380}.piece.green{background:radial-gradient(circle at 30% 30%,#81c784,#4caf50);border:2px solid white;box-shadow:0 3px 8px #4caf5080}.piece.yellow{background:radial-gradient(circle at 30% 30%,#ffb74d,#ff9800);border:2px solid white;box-shadow:0 3px 8px #ff980080}.stats-card{width:min(560px,92vw);max-height:80vh;overflow-y:auto}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin:0 0 18px}.stats-item{background:var(--bg-section-soft);border:1px solid var(--border-soft);border-radius:8px;padding:10px 12px}.stats-item dt{color:var(--text-muted);font-size:11px;text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px}.daily-sparkline{display:block;margin-top:6px;background:#ffffff0a;border-radius:4px;padding:1px}.daily-heatmap{display:block;margin-top:6px}.stats-item dd{margin:0;color:var(--text-strong);font-size:22px;font-weight:700;font-variant-numeric:tabular-nums}.stats-subhead{margin:18px 0 8px;font-size:13px;text-transform:uppercase;letter-spacing:1px;color:var(--accent)}.stats-bars{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.stats-bar-row{display:grid;grid-template-columns:110px 1fr 36px;align-items:center;gap:10px;font-size:13px}.stats-stacked-bar{display:flex;height:10px;width:100%;border-radius:6px;overflow:hidden;background:var(--surface-2, rgba(255, 255, 255, .05));margin:0 0 8px}.stats-stacked-segment{height:100%;display:block;transition:width .2s ease}.stats-mode-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.stats-mode-row{list-style:none;margin:0;padding:0;display:flex;gap:8px;flex-wrap:wrap}.stats-mode-tile{flex:1 1 0;min-width:70px;background:var(--surface-2, rgba(255, 255, 255, .04));border:1px solid var(--border, rgba(255, 255, 255, .08));border-radius:6px;padding:8px 10px;display:flex;flex-direction:column;gap:2px;align-items:center;text-align:center}.stats-mode-label{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted)}.stats-mode-num{font-size:18px;font-weight:700;color:var(--text-strong);font-variant-numeric:tabular-nums}.stats-bar-label{display:flex;align-items:center;gap:6px}.stats-bar-dot{width:12px;height:12px;border-radius:50%}.stats-bar-fill{height:10px;border-radius:5px;min-width:2px;opacity:.85}.stats-bar-num{text-align:right;font-variant-numeric:tabular-nums;color:var(--text);font-weight:600}.stats-most-frequent{display:flex;align-items:center;gap:8px;margin:14px 0 8px;padding:8px 10px;background:var(--bg-section-soft);border:1px solid var(--border-soft);border-radius:8px;font-size:13px}.stats-winrate{display:flex;align-items:center;gap:10px;margin:14px 0 8px;padding:8px 12px;background:var(--bg-section-soft);border:1px solid var(--border-soft);border-radius:8px;font-size:13px}.stats-winrate-trophy{font-size:18px;line-height:1}.stats-winrate-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted)}.stats-winrate-fraction{margin-left:auto;font-variant-numeric:tabular-nums;color:var(--text)}.stats-winrate-pct{font-weight:700;color:var(--accent, #ffd700);font-variant-numeric:tabular-nums;min-width:3ch;text-align:right}.stats-most-frequent-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted)}.stats-most-frequent-color{font-weight:600;color:var(--text-strong)}.stats-most-frequent-count{margin-left:auto;font-variant-numeric:tabular-nums;color:var(--text)}.stats-recent-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.stats-recent-head .stats-subhead{margin:0}.stats-recent-csv{font-size:.78rem;padding:2px 10px}.stats-recent-games{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column;gap:6px}.stats-recent-row{display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--bg-section-soft);border:1px solid var(--border-soft);border-radius:8px;font-size:13px}.stats-recent-color{font-weight:600;color:var(--text-strong);min-width:60px}.stats-recent-date{color:var(--text-muted);font-size:12px;font-variant-numeric:tabular-nums}.stats-recent-moves{margin-left:auto;color:var(--text-muted);font-variant-numeric:tabular-nums}.stats-recent-open{flex:0 0 auto;padding:4px 10px;font-size:12px}.stats-you{color:var(--text-muted);font-size:11px;margin-left:2px}.footer-link-btn{background:none;border:none;padding:0;color:var(--text-muted);cursor:pointer;font:inherit;text-decoration:underline;text-decoration-color:transparent}.footer-link-btn:hover{color:var(--accent);text-decoration-color:currentColor}.tutorial-card{width:min(440px,92vw);text-align:center}.tutorial-panel{padding:12px 8px 4px}.tutorial-icon{font-size:56px;line-height:1;margin-bottom:12px}.tutorial-step-title{margin:0 0 8px;font-size:18px;color:var(--text-strong)}.tutorial-step-body{margin:0;color:var(--text);font-size:14px;line-height:1.5}.tutorial-dots{display:flex;gap:8px;justify-content:center;margin:18px 0 12px}.tutorial-dot{width:8px;height:8px;border-radius:50%;background:var(--border);transition:background .2s}.tutorial-dot.active{background:var(--accent)}.tutorial-actions{display:flex;gap:8px;justify-content:flex-end}.whatsnew-banner{display:flex;align-items:center;gap:10px;width:min(100%,720px);margin:0 auto;padding:8px 14px;background:linear-gradient(135deg,#ffd7002e,#ff98002e);border:1px solid var(--accent);border-radius:10px;color:var(--text);font-size:13px;line-height:1.45}.whatsnew-spark{font-size:16px;flex:0 0 auto}.whatsnew-text{flex:1}.whatsnew-close{flex:0 0 auto;background:transparent;border:1px solid var(--accent);color:var(--accent);width:28px;height:28px;border-radius:50%;cursor:pointer;font-size:18px;line-height:1}.whatsnew-close:hover{background:var(--accent);color:var(--bg-page)}.replay-card{width:min(560px,92vw);max-height:80vh;display:flex;flex-direction:column}.replay-summary{margin:0;color:var(--text-muted);font-size:13px}.replay-summary-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.replay-download{flex:0 0 auto;padding:6px 10px;font-size:12px}.replay-share-flash{font-size:12px;color:var(--text-muted);align-self:center}.replay-shared-badge{font-size:11px;padding:2px 8px;border-radius:999px;background:var(--bg-section-soft);border:1px solid var(--border-soft);color:var(--text-muted);align-self:center}.replay-list{list-style:none;margin:0;padding:0;overflow-y:auto;border:1px solid var(--border-soft);border-radius:8px;background:var(--bg-section-soft)}.replay-board{display:flex;flex-direction:column;gap:4px;margin-bottom:10px;padding:8px 10px;border:1px solid var(--border-soft);border-radius:8px;background:var(--bg-section);font-size:11px}.replay-board-row{display:grid;grid-template-columns:14px 60px 1fr;align-items:center;gap:8px}.replay-board-dot{width:10px;height:10px;border-radius:50%}.replay-board-color{font-weight:600}.replay-board-pieces{display:flex;gap:8px;flex-wrap:wrap;color:var(--text-muted)}.replay-board-piece{display:inline-flex;align-items:center;gap:3px;white-space:nowrap}.replay-board-piece-num{display:inline-block;min-width:12px;text-align:center;font-weight:700;color:var(--text)}.replay-scrubber{display:flex;align-items:center;gap:12px;margin:0 0 10px}.replay-slider{flex:1;cursor:pointer;accent-color:var(--accent)}.replay-play-btn{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;font-size:14px;background:var(--bg-section-soft);border:1px solid var(--border);border-radius:6px;color:var(--text);cursor:pointer;flex-shrink:0;transition:background .1s ease,border-color .1s ease}.replay-play-btn:hover,.replay-play-btn:focus-visible{background:#ffd7001f;border-color:#ffd70099;color:var(--accent, #ffd700);outline:none}.replay-play-btn[aria-pressed=true]{border-color:var(--accent, #ffd700);color:var(--accent, #ffd700)}.replay-speed{display:inline-flex;gap:4px;flex-shrink:0}.replay-speed-btn{padding:2px 8px;font-size:.78rem;background:var(--bg-section-soft);border:1px solid var(--border);border-radius:6px;color:var(--text-muted, #aaa);cursor:pointer;transition:background .1s ease,border-color .1s ease,color .1s ease}.replay-speed-btn:hover,.replay-speed-btn:focus-visible{border-color:#ffd70099;color:var(--accent, #ffd700);outline:none}.replay-speed-btn.active{border-color:var(--accent, #ffd700);color:var(--accent, #ffd700);background:#ffd70014}.replay-cursor{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:12px;min-width:56px;text-align:right}.replay-row{display:grid;grid-template-columns:32px 14px 1fr auto auto;align-items:center;gap:8px;padding:6px 10px;font-size:13px;border-bottom:1px solid var(--border-soft);cursor:pointer}.replay-row.active{background:#ffd7002e;outline:1px solid var(--accent);outline-offset:-1px}.replay-row:last-child{border-bottom:none}.replay-idx{color:var(--text-muted);font-variant-numeric:tabular-nums;text-align:right}.replay-dot{width:12px;height:12px;border-radius:50%}.replay-piece{font-weight:600}.replay-arrow{color:var(--text-muted);justify-self:end}.replay-capture{color:#e91e63;font-weight:700}[data-colorblind=true] .piece.red{border:3px solid white}[data-colorblind=true] .piece.blue{border:3px dashed white}[data-colorblind=true] .piece.green{border:3px dotted white}[data-colorblind=true] .piece.yellow{border:4px double white}.sidebar{width:240px;min-height:600px;background-color:var(--bg-section);border:2px solid var(--border);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:0;color:var(--text);box-shadow:var(--shadow-strong);flex-shrink:0}.sidebar-title{font-size:20px;font-weight:700;text-align:center;margin:0 0 12px;letter-spacing:1px;color:#fff}.sidebar-top{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-bottom:4px}.sidebar-top .sidebar-title{margin:0;flex:1;text-align:left}.mode-switcher{display:flex;gap:4px;background:var(--bg-section-soft);border:1px solid var(--border);border-radius:6px;padding:3px}.difficulty-sublabel{margin-top:8px}.mode-btn{flex:1;background:transparent;border:none;color:var(--text-muted);font-size:12px;font-weight:600;padding:5px 8px;cursor:pointer;border-radius:4px;transition:background .15s,color .15s}.mode-btn:hover:not(.active){color:var(--text);filter:brightness(1.1)}.mode-btn.active{background:var(--accent);color:#111}.mode-btn:focus-visible{outline:none;box-shadow:0 0 0 2px var(--accent)}.mode-btn:disabled{cursor:not-allowed;opacity:.55}.mode-btn-locked.active{background:linear-gradient(135deg,#c2185b,#ad1457);color:#fff}.sidebar-top-controls{display:inline-flex;align-items:center;gap:6px}.sound-btn{background:var(--bg-section-soft);border:1px solid var(--border);border-radius:6px;padding:3px 7px;font-size:14px;color:var(--text);cursor:pointer}.sound-btn[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#111}.sound-btn:hover:not([aria-pressed=true]){filter:brightness(1.08)}.locale-switcher{display:inline-flex;background:var(--bg-section-soft);border:1px solid var(--border);border-radius:6px;overflow:hidden}.locale-btn{background:transparent;border:none;color:var(--text-muted);font-size:11px;font-weight:600;letter-spacing:.5px;padding:4px 8px;cursor:pointer;border-radius:0;transition:background .15s,color .15s}.locale-btn:hover:not(.active){color:var(--text);filter:brightness(1.08)}.locale-btn.active{background:var(--accent);color:#111}.locale-btn:focus,.locale-btn:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--accent)}.winner-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:100;animation:fadein .2s ease}@keyframes fadein{0%{opacity:0}to{opacity:1}}.winner-card{background:var(--bg-section);border:3px solid var(--border);border-radius:16px;padding:32px 48px;text-align:center;color:var(--text);box-shadow:0 16px 48px #0009;max-width:90vw;animation:pop .3s cubic-bezier(.34,1.56,.64,1)}@keyframes pop{0%{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}.winner-trophy{font-size:64px;line-height:1;margin-bottom:8px;filter:drop-shadow(0 4px 8px rgba(255,215,0,.4));animation:trophy-bounce .9s cubic-bezier(.34,1.56,.64,1) 1;transform-origin:50% 100%}@keyframes trophy-bounce{0%{transform:scale(.4) translateY(-8px);opacity:0}40%{transform:scale(1.15) translateY(0);opacity:1}60%{transform:scale(.95)}80%{transform:scale(1.04)}to{transform:scale(1)}}.win-confetti{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none;z-index:1}.win-confetti-piece{position:absolute;top:-16px;width:8px;height:14px;border-radius:2px;opacity:0;animation-name:confetti-fall;animation-timing-function:cubic-bezier(.4,0,.6,1);animation-iteration-count:1;animation-fill-mode:forwards}@keyframes confetti-fall{0%{transform:translate(0) rotate(0);opacity:0}10%{opacity:1}to{transform:translate(var(--confetti-sway),110vh) rotate(var(--confetti-rot));opacity:.4}}.winner-title{font-size:28px;font-weight:700;margin-bottom:16px;letter-spacing:.5px}.winner-progress{font-size:14px;color:var(--text-muted);margin-bottom:6px}.winner-summary{font-size:13px;color:var(--text-faint, var(--text-muted));letter-spacing:.3px;margin-bottom:20px;font-variant-numeric:tabular-nums}.winner-actions{display:flex;flex-direction:column;gap:8px;min-width:200px;margin:0 auto}.sidebar-section{padding:8px 0;border-bottom:1px solid var(--border-soft)}.sidebar-section:last-child{border-bottom:none}.sidebar-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);margin-bottom:6px}.sidebar-muted{font-size:13px;color:#aaa;font-style:italic}.color-picker{display:flex;gap:8px;margin-top:4px}.achievement-filter{display:flex;gap:4px;margin:4px 0 6px}.achievement-filter-btn{padding:2px 10px;font-size:.78rem;background:var(--bg-section-soft);border:1px solid var(--border);border-radius:999px;color:var(--text-muted, #aaa);cursor:pointer;transition:background .1s ease,border-color .1s ease,color .1s ease}.achievement-filter-btn:hover,.achievement-filter-btn:focus-visible{border-color:#ffd70099;color:var(--accent, #ffd700);outline:none}.achievement-filter-btn.active{background:#ffd7001a;border-color:var(--accent, #ffd700);color:var(--accent, #ffd700)}.achievement-filter-empty{color:var(--text-muted, #aaa);font-size:.85rem;font-style:italic;padding:6px 4px}.achievement-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}@media (min-width: 901px){.achievement-list{max-height:260px;overflow-y:auto;padding-right:4px;scrollbar-gutter:stable}}.achievement-row{display:flex;flex-direction:column;font-size:12px;padding:0}.achievement-button{display:flex;align-items:center;gap:8px;width:100%;background:transparent;border:0;padding:4px 0;color:inherit;font:inherit;text-align:left;cursor:pointer}.achievement-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.achievement-detail{padding:4px 0 6px 26px;border-left:2px solid var(--border-soft);margin-left:9px;margin-top:-2px}.achievement-desc{color:var(--text);font-size:11px;line-height:1.4}.achievement-unlocked-at{margin-top:2px;font-size:11px;color:var(--accent);font-weight:600}.achievement-overshoot{margin-top:2px;font-size:11px;color:var(--text-muted);font-style:italic;font-variant-numeric:tabular-nums}.achievement-row.locked{color:var(--text-muted)}.achievement-row.unlocked{color:var(--accent)}.achievement-icon{font-size:14px;width:18px;text-align:center}.achievement-title{flex:1}.achievement-fresh{margin-left:4px;font-size:11px;vertical-align:middle;opacity:.85}.achievement-progress{font-size:11px;font-weight:700;color:var(--text-muted);font-variant-numeric:tabular-nums}.capture-toast-achievement{background:linear-gradient(135deg,gold,#ff9800);color:#1e1e1e;font-weight:700}.capture-toast.capture-toast-clickable{cursor:pointer;font-family:inherit;font-size:14px}.capture-toast.capture-toast-clickable:hover,.capture-toast.capture-toast-clickable:focus-visible{filter:brightness(1.08);outline:2px solid #fff;outline-offset:2px}.achievement-row-flash{animation:achievement-flash 1.5s ease-out}@keyframes achievement-flash{0%{box-shadow:0 0 0 2px #ffd70000}20%{box-shadow:0 0 0 3px #ffd700d9}60%{box-shadow:0 0 0 3px #ffd7008c}to{box-shadow:0 0 0 2px #ffd70000}}.daily-date{font-size:10px;font-weight:700;color:var(--accent);background:#ffd7001f;padding:2px 6px;border-radius:4px;letter-spacing:.4px}.skip-to-main{position:absolute;left:0;top:0;transform:translateY(-150%);background:var(--accent);color:var(--bg-page);padding:8px 14px;font-weight:700;text-decoration:none;border-radius:0 0 8px;z-index:100;transition:transform .15s}.skip-to-main:focus{transform:translateY(0);outline:3px solid #fff;outline-offset:-3px}.help-shortcuts{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px}.help-shortcuts li{display:flex;align-items:center;gap:16px}.help-keys{display:flex;gap:4px;flex-shrink:0;min-width:110px}.help-keys kbd{display:inline-block;padding:3px 8px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px;font-weight:600;background:var(--bg-section-soft);color:var(--text);border:1px solid var(--border);border-radius:4px;box-shadow:0 1px 0 var(--border)}.help-subhead{margin:18px 0 6px;font-size:14px;font-weight:600;color:var(--text)}.help-prose{margin:0 0 8px;font-size:13px;color:var(--text-muted)}.help-tiers{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:4px;font-size:13px}.help-tier-emoji{display:inline-block;width:22px}.help-desc{flex:1;font-size:14px;color:var(--text)}.daily-stats{margin-top:8px;font-size:12px;color:var(--text-muted)}.daily-stat-label{text-transform:uppercase;letter-spacing:.5px;font-size:10px}.daily-stat-value{color:var(--text);font-weight:700}.daily-stat-best{color:var(--accent)}.daily-stat-sep{margin:0 6px;opacity:.5}.winner-daily{margin:12px 0 6px;font-size:14px;color:var(--accent);text-align:center;font-weight:600}.color-swatch{width:28px;height:28px;border-radius:50%;border:2px solid transparent;padding:0;cursor:pointer;transition:transform .12s,border-color .12s;box-shadow:0 1px 3px #0006}.color-swatch:hover:not(.selected){transform:scale(1.08)}.color-swatch.selected{border-color:gold;box-shadow:0 0 0 2px #1e1e1e,0 0 0 4px gold}.color-swatch:focus-visible{outline:none;border-color:gold}.stats-pref-row{display:flex;align-items:center;gap:8px;margin:6px 0 4px;font-size:.95rem;color:var(--text-muted, #aaa);cursor:pointer}.stats-pref-row input[type=checkbox]{cursor:pointer}.accent-picker{display:flex;gap:10px;margin-top:4px}.accent-swatch{width:28px;height:28px;border-radius:50%;border:2px solid transparent;padding:0;cursor:pointer;transition:transform .12s,border-color .12s;box-shadow:0 1px 3px #0006}.accent-swatch:hover:not(.selected){transform:scale(1.08)}.accent-swatch.selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--bg-section),0 0 0 4px var(--accent)}.accent-swatch:focus-visible{outline:none;border-color:var(--accent)}.portability-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.portability-feedback{font-size:12px;color:var(--accent);font-weight:600;margin-left:4px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.turn-badge{display:inline-flex;align-items:center;gap:4px;padding:4px 14px;border-radius:20px;font-size:19px;font-weight:700;text-transform:capitalize;color:#fff;letter-spacing:.5px;text-shadow:0 1px 2px rgba(0,0,0,.35)}.cpu-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#fffffff2;animation:cpu-pulse 1.2s ease-in-out infinite}@keyframes cpu-pulse{0%,to{opacity:.4;transform:scale(.8)}50%{opacity:1;transform:scale(1.2)}}.tournament-progress{position:relative;margin-top:8px;height:14px;border-radius:7px;background:#ffffff14;border:1px solid rgba(255,255,255,.12);overflow:hidden}.tournament-progress-fill{height:100%;border-radius:7px;transition:width .32s ease-out}.tournament-progress-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#ffffffeb;text-shadow:0 1px 2px rgba(0,0,0,.5);letter-spacing:.4px}.tournament-round{margin-top:4px;font-size:11px;color:var(--text-muted);letter-spacing:.3px;text-align:center;font-variant-numeric:tabular-nums}.help-tip{display:inline-block;margin-left:6px;padding:0 4px;font-size:9px;font-weight:700;font-family:ui-monospace,Menlo,Consolas,monospace;color:var(--text-muted);background:#ffffff0f;border:1px solid rgba(255,255,255,.18);border-radius:8px;cursor:help;letter-spacing:.4px;vertical-align:1px;-webkit-user-select:none;user-select:none;transition:color .1s ease,border-color .1s ease}.help-tip:hover,.help-tip:focus-visible{color:var(--accent, #ffd700);border-color:#ffd70099;outline:none}.sidebar-dice{display:flex;gap:6px;flex-wrap:wrap}.sidebar-die{width:34px;height:34px;background:#fff;color:#111;border-radius:6px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:16px;box-shadow:0 2px 4px #0000004d;animation:dice-tumble .45s cubic-bezier(.34,1.56,.64,1)}@keyframes dice-tumble{0%{transform:rotate(0) scale(.6)}25%{transform:rotate(180deg) scale(1.25)}50%{transform:rotate(420deg) scale(.95)}75%{transform:rotate(540deg) scale(1.1)}to{transform:rotate(720deg) scale(1)}}.sidebar-die-sum{background:#444;color:gold;font-size:13px}.piece-moves{margin-bottom:8px;padding:6px 8px;background:#2a2a2a;border-radius:6px;border-left:3px solid transparent}.piece-moves-selected{border-left-color:gold;background:#2e2a1a}.piece-moves-header{display:flex;align-items:center;gap:5px;margin-bottom:4px}.sidebar-piece-dot{width:10px;height:10px;border-radius:50%;border:1px solid rgba(255,255,255,.3);flex-shrink:0}.sidebar-piece-dot.selected{box-shadow:0 0 5px gold}.piece-num{font-size:12px;font-weight:600}.piece-cur-pos{font-size:11px;color:#aaa;margin-left:auto}.move-options{display:flex;flex-direction:column;gap:2px}.move-option{display:flex;align-items:center;gap:4px;padding:2px 4px;font-size:12px;color:#ccc}.move-steps{color:gold;font-weight:600;min-width:24px}.move-arrow{color:#555}.move-dest{color:#bbb}.player-list{display:flex;flex-direction:column;gap:4px}.player-row{display:flex;align-items:center;gap:6px;padding:5px 6px;border-radius:6px;font-size:13px;transition:background .2s}.player-row.player-active{background:var(--bg-section-soft)}.player-row.player-winner{opacity:.7}.player-row.player-leading .player-name{color:#4caf50}.player-row.player-leading .player-name:after{content:" ▲";font-size:9px;vertical-align:middle;color:#4caf50}.player-color-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.player-name{font-weight:600;text-transform:capitalize;flex:1}.player-piece-counts{display:flex;gap:4px;font-size:11px}.count-home{color:#aaa}.count-track{color:#64b5f6}.count-lane{color:#81c784}.count-done{color:gold}.player-trophy{font-size:13px}.player-active-indicator{font-size:11px;color:gold}.sidebar-controls{display:flex;flex-direction:column;gap:8px;margin-top:auto}.sidebar-btn{width:100%;padding:9px 0;font-size:14px;font-weight:600;border:2px solid var(--border);border-radius:8px;background:var(--bg-section-soft);color:var(--text);cursor:pointer;transition:all .2s}.sidebar-btn:hover:not(:disabled){filter:brightness(1.08)}.sidebar-btn:disabled{color:var(--text-faint);opacity:.5;cursor:not-allowed}.sidebar-btn.hint-cooldown:disabled{opacity:.35;position:relative}.hint-button-wrap{position:relative;display:block}.hint-preview-tooltip{position:absolute;left:50%;top:calc(100% + 6px);transform:translate(-50%);z-index:5;pointer-events:none;padding:6px 10px;font-size:12px;font-weight:500;color:var(--text);background:var(--surface-2, rgba(20, 20, 24, .96));border:1px solid rgba(255,215,0,.45);border-radius:6px;box-shadow:0 4px 16px #00000059;white-space:nowrap;animation:hint-preview-in .12s ease-out}.hint-preview-tooltip:before{content:"";position:absolute;left:50%;top:-5px;transform:translate(-50%);width:8px;height:8px;background:var(--surface-2, rgba(20, 20, 24, .96));border-left:1px solid rgba(255,215,0,.45);border-top:1px solid rgba(255,215,0,.45);rotate:45deg}@keyframes hint-preview-in{0%{opacity:0;transform:translate(-50%) translateY(-2px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.sidebar-btn.hint-cooldown:disabled:after{content:"";position:absolute;left:0;bottom:0;height:2px;background:var(--accent, #ffd700);width:100%;transform-origin:left center;animation:hint-cooldown-bar 1.5s linear forwards}@keyframes hint-cooldown-bar{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.kbd-hint{display:inline-block;margin-left:8px;padding:1px 6px;font-size:11px;font-family:ui-monospace,Menlo,Consolas,monospace;background:#ffd70026;color:gold;border:1px solid rgba(255,215,0,.4);border-radius:4px;letter-spacing:0}.sidebar-btn.primary{background:var(--bg-button);border-color:var(--accent)}.sidebar-btn.primary:hover:not(:disabled){filter:brightness(1.1)}.error-boundary{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:#1a1a1a}.error-boundary-card{max-width:480px;background:#222;border:2px solid #444;border-radius:12px;padding:32px;text-align:center;color:#f0f0f0}.error-boundary-icon{font-size:56px;margin-bottom:8px}.error-boundary-card h1{font-size:22px;margin:0 0 8px}.error-boundary-card p{color:#aaa;font-size:14px;line-height:1.5;margin:0 0 16px}.error-boundary-detail{text-align:left;font-size:12px;color:#ff8a8a;background:#111;border:1px solid #333;border-radius:6px;padding:10px;margin:0 0 16px;white-space:pre-wrap;word-break:break-word;font-family:ui-monospace,Menlo,Consolas,monospace}.capture-toast-stack{position:fixed;bottom:24px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:6px;z-index:80;pointer-events:none}.capture-toast-stack .capture-toast{position:static;transform:none;pointer-events:auto}.capture-toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:#1e1e1e;color:#fff;border:2px solid #ffd700;border-radius:999px;padding:10px 18px;font-size:14px;font-weight:600;display:flex;align-items:center;gap:10px;z-index:80;box-shadow:0 8px 24px #00000080;animation:toast-pop .25s cubic-bezier(.34,1.56,.64,1),toast-shake .3s .25s ease-in-out}.capture-toast.capture-toast-pass{animation:toast-pop .25s cubic-bezier(.34,1.56,.64,1)}@keyframes toast-shake{0%,to{transform:translate(-50%)}25%{transform:translate(calc(-50% - 6px))}75%{transform:translate(calc(-50% + 6px))}}.piece.ghost-shake{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;pointer-events:none;z-index:5;animation:captured-shake .35s ease-out forwards}@keyframes captured-shake{0%{transform:translate(0) scale(1);opacity:1}20%{transform:translate(-3px) scale(1);opacity:1}40%{transform:translate(3px) scale(1);opacity:1}60%{transform:translate(-2px) scale(.92);opacity:.7}80%{transform:translate(2px) scale(.7);opacity:.4}to{transform:translate(0) scale(0);opacity:0}}.capture-toast-icon{font-size:18px}.capture-toast.capture-toast-pass{border-color:#888;background:#2a2a2a}@keyframes toast-pop{0%{opacity:0;transform:translate(-50%,20px) scale(.85)}to{opacity:1;transform:translate(-50%) scale(1)}}.history-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;max-height:160px;overflow-y:auto}.history-item{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--text-muted);line-height:1.3}.history-item .player-color-dot{width:7px;height:7px;flex-shrink:0}.history-item:first-child .history-text{color:var(--text);font-weight:500}.sidebar-label-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.sidebar-link-btn{background:transparent;border:none;color:#777;font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:1px;padding:0;cursor:pointer;text-decoration:underline}.sidebar-link-btn:hover{color:gold}.settings-share-btn{text-decoration:none;font-size:14px;letter-spacing:0;line-height:1}.settings-share-wrap{position:relative;display:inline-flex;align-items:center;gap:6px}.settings-share-flash{font-size:10px;color:var(--text-muted);white-space:nowrap}.cpu-disclosure-toggle{display:flex;align-items:center;gap:6px;width:100%;margin-top:8px;padding:4px 6px;background:transparent;border:1px solid var(--border-soft);border-radius:6px;color:var(--text);font:inherit;font-size:11px;cursor:pointer;text-align:left}.cpu-disclosure-toggle:hover,.cpu-disclosure-toggle:focus-visible{border-color:var(--accent)}.cpu-disclosure-arrow{flex:0 0 auto;font-size:10px;color:var(--text-muted)}.cpu-disclosure-label{flex:0 0 auto;font-weight:600;text-transform:uppercase;letter-spacing:1px;font-size:9px;color:var(--text-muted)}.cpu-disclosure-summary{flex:1 1 auto;text-align:right;font-size:11px;color:var(--text-muted);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.win-stats{display:flex;flex-direction:column;gap:3px}.win-stat-row{display:flex;align-items:center;gap:6px;font-size:13px}.win-stat-row .player-color-dot{width:8px;height:8px}.win-stat-count{margin-left:auto;font-weight:700;color:gold;font-variant-numeric:tabular-nums}.rules-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;display:flex;align-items:center;justify-content:center;z-index:90;animation:fadein .15s ease;padding:16px}.rules-card{background:var(--bg-section);border:2px solid var(--border);border-radius:12px;padding:20px 24px;color:var(--text);max-width:520px;width:100%;box-shadow:0 12px 32px #0009;animation:pop .2s ease;max-height:80vh;overflow-y:auto}.rules-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;border-bottom:1px solid var(--border-soft);padding-bottom:8px}.rules-header h2{margin:0;font-size:18px;font-weight:700;letter-spacing:.5px}.rules-close{background:transparent;border:none;color:var(--text-muted);font-size:26px;line-height:1;cursor:pointer;padding:0 6px;border-radius:4px}.rules-close:hover{color:var(--text-strong);background:var(--bg-section-soft)}.rules-card p{margin:0 0 12px;line-height:1.5;color:var(--text)}.rules-card ul{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:8px}.rules-card li{line-height:1.45;color:var(--text)}*,*:before,*:after{box-sizing:border-box}#root{max-width:1400px;width:100%;margin:0 auto;padding:1rem;display:flex;align-items:flex-start;justify-content:center}.app-shell{display:flex;flex-direction:column;align-items:center;width:100%;gap:16px}.game-container{display:flex;flex-direction:row;align-items:flex-start;gap:24px;width:100%;justify-content:center}.about-section{width:100%;max-width:720px;margin:24px auto 0;padding:24px 28px;color:var(--text);background:var(--bg-section);border:1px solid var(--border-soft);border-radius:12px;line-height:1.55;font-size:14px}.about-section h2{margin:0 0 12px;font-size:22px;font-weight:700;color:var(--text-strong);letter-spacing:.3px}.about-section h3{margin:20px 0 8px;font-size:14px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--accent)}.about-section p{margin:0 0 8px}.about-section ul{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:6px}.about-section li{color:var(--text)}.about-build-info{margin-top:18px;padding-top:10px;border-top:1px solid var(--border-soft);font-size:11px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:var(--text-muted);letter-spacing:.2px}.site-footer{width:100%;text-align:center;font-size:12px;color:var(--text-muted);padding:12px 8px 18px;border-top:1px solid var(--border-soft)}.site-footer a{color:var(--text-muted)}.site-footer a:hover{color:var(--accent)}.site-footer .dot{margin:0 8px;color:var(--border)}.site-footer .footer-offline{color:#4caf50;font-weight:600}@media (max-width: 900px){#root{padding:.5rem}.game-container{flex-direction:column;align-items:center;gap:12px}.sidebar{width:min(100%,460px)!important;min-height:0!important}}.mobile-scoreboard{display:none}@media (max-width: 900px){.mobile-scoreboard{position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:center;gap:14px;padding:6px 12px;background:#141414eb;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:0 0 10px 10px;border:1px solid var(--border-soft, rgba(255, 255, 255, .08));border-top:0;font-size:13px;width:100%;max-width:460px}.mobile-scoreboard-cell{display:inline-flex;align-items:center;gap:6px;color:var(--text)}.mobile-scoreboard-cell.mobile-scoreboard-you{text-decoration:underline;text-decoration-color:var(--accent, #ffd700);text-underline-offset:3px}.mobile-scoreboard-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.mobile-scoreboard-num{font-variant-numeric:tabular-nums;font-weight:600}}.mobile-roll-fab{display:none}@media (max-width: 900px){.mobile-roll-fab{display:flex;align-items:center;justify-content:center;position:fixed;right:16px;bottom:16px;width:56px;height:56px;border-radius:50%;border:0;background:var(--accent, #ffd700);color:#111;font-size:26px;box-shadow:0 4px 14px #00000073;cursor:pointer;z-index:60;transition:transform .12s,box-shadow .12s}.mobile-roll-fab:hover,.mobile-roll-fab:focus-visible{transform:scale(1.05);box-shadow:0 6px 18px #0000008c;outline:2px solid #fff;outline-offset:2px}.mobile-roll-fab:active{transform:scale(.96)}}.sidebar-more-toggle{display:none}.sidebar-secondary{display:contents}@media (max-width: 640px){#root{padding:6px}.sidebar-more-toggle{display:block;margin:8px 0 0;padding:8px 12px;width:100%;border-radius:8px;border:1px solid var(--border-soft);background:var(--bg-button);color:var(--text);font-size:13px;cursor:pointer;transition:background .12s,border-color .12s}.sidebar-more-toggle:hover,.sidebar-more-toggle:focus-visible{background:var(--bg-section);border-color:var(--accent)}.sidebar-more-toggle[aria-expanded=true]{background:var(--bg-section)}.sidebar-secondary[data-mobile-open=false]{display:none}.sidebar-secondary[data-mobile-open=true]{display:block}.game-container{gap:8px}.board-grid{margin:8px auto}.sidebar{width:100%!important;padding:12px;gap:0}.sidebar-title{font-size:17px}.sidebar-section{padding:8px 0}.sidebar-label{font-size:10px;margin-bottom:4px}.achievement-row{padding:4px 8px}.move-history-list li{padding:4px 8px;font-size:12px}}@media (max-width: 480px){.about-section{padding:16px 14px;font-size:13px}}.logo{height:6em;padding:1.5em;will-change:filter;transition:filter .3s}.logo:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.react:hover{filter:drop-shadow(0 0 2em #61dafbaa)}@keyframes logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion: no-preference){a:nth-of-type(2) .logo{animation:logo-spin infinite 20s linear}}.card{padding:2em}.read-the-docs{color:#888}
