:root,html[data-theme=day]{color-scheme:light;--ink: #2a2a2a;--ink-soft: #707070;--paper: #f5f5f5;--paper-2: #fafafa;--page-bg: #ececec;--line: #e0e0e0;--danger: #c4473a;--conflict-ink: #2a2a2a;--conflict-pulse-mid: #ffffff;--shadow: 0 10px 30px rgba(0, 0, 0, .06);--piece: #2a2a2a;--given-dot: rgba(42, 42, 42, .24);--page-glow: #f8f8f8;--phone-shadow: 0 30px 80px rgba(0, 0, 0, .08);--fab-active: #2a2a2a;--fab-active-text: #fff;--intro-target-ring: #000;--radius: 18px;--cell-radius: 3px;--cell: 52px;--gap: 5px;--n: 8}html[data-theme=night]{color-scheme:dark;--ink: #eceae4;--ink-soft: #a8a6a0;--paper: #000000;--paper-2: #141414;--page-bg: #1c1c1f;--line: rgba(255, 255, 255, .16);--danger: #e07068;--conflict-ink: #2a2a2a;--conflict-pulse-mid: #ffffff;--shadow: 0 10px 28px rgba(0, 0, 0, .45);--piece: #eceae4;--given-dot: rgba(255, 255, 255, .22);--page-glow: #000000;--phone-shadow: 0 30px 80px rgba(0, 0, 0, .45);--fab-active: #eceae4;--fab-active-text: #000000;--intro-target-ring: #fff}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:var(--page-bg);color:var(--ink);font-family:Nunito,Trebuchet MS,sans-serif}#app{min-height:100dvh;min-height:-webkit-fill-available;height:100dvh;display:grid;place-items:center;overflow:hidden}.shell{position:relative;width:min(100%,460px);height:min(100dvh,860px);max-height:100%;margin:0;padding:max(18px,env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px)) 0 max(16px,env(safe-area-inset-left,0px));display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--line);border-radius:28px;box-shadow:var(--phone-shadow);background:radial-gradient(1200px 500px at 50% -10%,var(--page-glow),transparent 60%),var(--paper)}.play-area{flex:1 1 auto;display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;padding:16px 0 0;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;background:transparent}.play-area:has(.history-page),.play-area:has(.catalog-page),.play-area:has(.settings-page){justify-content:flex-start;padding-top:0}.bottom-bar{flex-shrink:0;margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:40px;padding-top:16px;padding-bottom:max(12px,env(safe-area-inset-bottom,0px));background:transparent}.top{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-shrink:0;position:relative;z-index:30;background:radial-gradient(1200px 500px at 50% -10%,var(--page-glow),transparent 60%),var(--paper)}.top-brand{display:flex;align-items:center;gap:8px;min-width:0}.top-home-btn{appearance:none;border:0;background:transparent;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;min-width:0;text-align:left;display:flex;align-items:center;gap:8px}.top-home-btn:active{transform:scale(.98)}.top-brand-mark{width:clamp(24px,6vw,28px);height:clamp(24px,6vw,28px);flex-shrink:0;border-radius:6px}.top-home-title{font-size:clamp(1.22rem,5vw,1.42rem);font-weight:800;letter-spacing:-.02em}.beta-tag{font-size:.45em;font-weight:800;letter-spacing:.08em;vertical-align:super;margin-left:.15em;color:var(--ink-soft)}.top-title{flex:1;text-align:center}.top-heading{flex:1;min-width:0;text-align:center}.top-heading .top-title{flex:none;margin:0;font-size:1.05rem;font-weight:800}.top-subtitle{margin:3px 0 0;font-size:.72rem;font-weight:700;color:var(--ink-soft);line-height:1.35}.top-subtitle-line{display:block}.top-spacer{width:40px;flex-shrink:0}.menu-btn{appearance:none;border:1px solid var(--line);background:var(--paper-2);color:var(--ink);width:40px;height:40px;border-radius:10px;font:inherit;font-size:1.05rem;font-weight:800;line-height:1;cursor:pointer;flex-shrink:0;display:grid;place-items:center}.menu-btn:active{transform:scale(.97)}.history-page{padding:4px 0 12px}.history-tabs{display:flex;justify-content:center;gap:20px;margin:0 0 18px}.history-tab{appearance:none;border:none;background:none;font:inherit;font-size:.88rem;font-weight:700;color:var(--ink-soft);padding:4px 2px 7px;cursor:pointer;border-bottom:2px solid transparent}.history-tab.is-on{color:var(--ink);border-bottom-color:var(--ink)}.catalog-page{padding:4px 0 16px}.settings-page{flex:1;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;padding:4px 0 8px;scrollbar-width:none;-ms-overflow-style:none}.settings-page::-webkit-scrollbar{display:none}.settings-section{margin-bottom:20px}.settings-section:last-of-type{margin-bottom:0}.settings-section{margin-bottom:18px}.settings-section-title{margin:0 0 10px;font-size:.82rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}.settings-choice-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.settings-choice-row.is-triple{grid-template-columns:1fr 1fr 1fr}.settings-choice-btn{appearance:none;width:100%;min-width:0;border:1px solid var(--line);background:var(--paper-2);color:var(--ink);border-radius:10px;font:inherit;font-size:.92rem;font-weight:700;padding:11px 10px;text-align:center;cursor:pointer}.settings-choice-btn.is-on{border-color:var(--ink-soft);background:var(--paper);box-shadow:inset 0 0 0 1px var(--ink-soft)}.settings-palette-btn{padding:8px}.settings-palette-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:2px;width:100%;max-width:92px;margin:0 auto;aspect-ratio:1}.settings-palette-cell{display:block;aspect-ratio:1;border-radius:2px}.settings-toggle-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:40px;padding:2px 0}.settings-toggle-label{font-size:.95rem;font-weight:700;color:var(--ink)}.settings-toggle{appearance:none;position:relative;flex-shrink:0;width:50px;height:30px;border:1px solid var(--line);border-radius:999px;background:var(--paper-2);cursor:pointer;padding:0;transition:background .16s ease,border-color .16s ease}.settings-toggle.is-on{background:var(--ink);border-color:var(--ink)}.settings-toggle-thumb{position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:var(--paper);box-shadow:0 1px 3px #00000024;transition:transform .16s ease}.settings-toggle.is-on .settings-toggle-thumb{transform:translate(20px)}.settings-toggle:focus-visible{outline:2px solid var(--ink-soft);outline-offset:2px}.settings-legal{display:flex;flex-direction:column;gap:10px;margin-top:28px;padding-top:24px;border-top:1px solid var(--line)}.settings-legal a,.settings-legal .legal-link{appearance:none;border:0;background:none;padding:0;margin:0;text-align:left;cursor:pointer;font:inherit;color:var(--ink-soft);font-size:.92rem;font-weight:700;text-decoration:none}.settings-legal a:hover,.settings-legal a:focus-visible,.settings-legal .legal-link:hover,.settings-legal .legal-link:focus-visible{color:var(--ink);text-decoration:underline}.legal-page{flex:1;min-height:0;overflow:auto;padding:4px 2px 16px;-webkit-overflow-scrolling:touch}.legal-doc-updated{margin:0 0 18px;color:var(--ink-soft);font-size:.84rem;font-weight:600}.legal-section{margin-bottom:22px}.legal-section-title{margin:0 0 8px;font-size:1rem;font-weight:800}.legal-section p{margin:0 0 10px;color:var(--ink-soft);font-size:.92rem;line-height:1.5}.legal-section p:last-child{margin-bottom:0}.settings-version{margin:8px 0 0;color:color-mix(in srgb,var(--ink-soft) 50%,transparent);font-size:.78rem;font-weight:500}.settings-copy{margin:2px 0 0;color:color-mix(in srgb,var(--ink-soft) 50%,transparent);font-size:.78rem;font-weight:500}.settings-version-update{display:block;margin:6px 0 0;padding:0;border:0;background:none;font:inherit;font-size:.78rem;font-weight:700;color:var(--accent, var(--ink));text-decoration:underline;cursor:pointer;text-align:left}.catalog-card{border:1px solid var(--line);background:var(--paper-2);border-radius:14px;padding:14px 14px 12px}.catalog-card+.catalog-card{margin-top:12px}.catalog-card-head{display:flex;flex-direction:column;align-items:flex-start;gap:4px;margin-bottom:10px}.catalog-card-title{margin:0;font-size:.95rem;font-weight:800;color:var(--ink)}.catalog-card-solved{margin:0;font-size:.82rem;font-weight:700;color:var(--ink-soft)}.catalog-progress{height:6px;border-radius:999px;background:var(--paper);overflow:hidden;margin-bottom:12px}.catalog-progress>span{display:block;height:100%;border-radius:inherit;background:var(--fab-active);min-width:0;transition:width .2s ease}.catalog-hist{list-style:none;margin:0;padding:0;display:grid;gap:6px}.catalog-hist li{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:.88rem;font-weight:700;color:var(--ink-soft)}.catalog-hist strong{font-size:.92rem;font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}.catalog-empty{margin:0;font-size:.88rem;font-weight:700;color:var(--ink-soft)}.history-empty{margin:24px 0 0;text-align:center;color:var(--ink-soft);font-size:.92rem;font-weight:700}.history-section+.history-section{margin-top:22px}.history-section-title{margin:0 0 10px;font-size:.82rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}.history-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.history-card{appearance:none;border:1px solid var(--line);background:var(--paper-2);border-radius:12px;padding:8px 8px 10px;cursor:pointer;text-align:center;color:inherit;font:inherit}.history-card.locked{opacity:.72}.history-card:active{transform:scale(.98)}.history-board{display:grid;grid-template-columns:repeat(8,1fr);gap:1px;width:100%;aspect-ratio:1;margin:6px auto 0}.history-cell{display:grid;place-items:center;border-radius:1px;min-width:0;min-height:0}.history-piece{font-size:.42rem;font-weight:800;line-height:1}.history-card-meta{display:flex;flex-direction:column;gap:2px;margin-top:8px}.history-card-id{font-size:.78rem;font-weight:800;color:var(--ink);letter-spacing:.04em;display:block}.history-card-time{font-size:.72rem;font-weight:700;color:var(--ink-soft);font-variant-numeric:tabular-nums}.history-card-ago{font-size:.66rem;font-weight:600;color:var(--ink-muted, var(--ink-soft));opacity:.85}.bottom-tools{display:flex;align-items:center;gap:8px;flex-shrink:0}.lang-switch{display:flex;gap:4px}.lang-btn{appearance:none;border:1px solid var(--line);background:transparent;color:var(--ink-soft);border-radius:6px;width:32px;height:40px;font:inherit;font-size:.68rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;padding:0}.lang-btn.is-on{background:var(--paper-2);color:var(--ink);border-color:var(--ink-soft)}h1{margin:0;font-size:1.65rem;font-weight:800;letter-spacing:-.03em;text-align:left}.level-picker{display:flex;align-items:center;gap:8px;font-size:.82rem;font-weight:700;color:var(--ink-soft);flex-shrink:0}.level-label{white-space:nowrap}.level-menu-wrap{position:relative}.level-trigger{appearance:none;border:1px solid var(--line);background:var(--paper-2);color:var(--ink);font:inherit;font-weight:800;font-size:.82rem;padding:5px 28px 5px 10px;border-radius:6px;cursor:pointer;min-width:6.4em;text-align:left;position:relative;box-shadow:0 1px #0000000a}.level-trigger:after{content:"";position:absolute;right:10px;top:50%;width:10px;height:6px;transform:translateY(-50%);background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath fill='%236d645c' d='M1 1l4 4 4-4'/%3E%3C/svg%3E") no-repeat center / contain;transition:transform .15s ease}.level-menu-wrap.open .level-trigger:after{transform:translateY(-50%) rotate(180deg)}.level-trigger:focus-visible{outline:2px solid var(--ink-soft);outline-offset:2px}.level-menu{position:absolute;top:calc(100% + 4px);right:0;min-width:100%;display:none;padding:4px;border:1px solid var(--line);border-radius:8px;background:var(--paper-2);box-shadow:var(--shadow);z-index:40}.level-menu-wrap.open .level-menu{display:grid;gap:2px;animation:menu-in .12s ease}.level-option{appearance:none;border:0;background:transparent;color:var(--ink);font:inherit;font-weight:700;font-size:.82rem;padding:8px 10px;border-radius:5px;cursor:pointer;text-align:left;white-space:nowrap}.level-option:hover,.level-option:focus-visible{background:var(--paper)}.level-option.active{background:var(--fab-active);color:var(--fab-active-text);font-weight:800}@keyframes menu-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.fab{appearance:none;border:1px solid var(--line);background:var(--paper-2);color:var(--ink-soft);font:inherit;font-weight:800;cursor:pointer;box-shadow:var(--shadow);flex-shrink:0}.fab.help-btn,.fab.theme-btn,.fab.sound-btn{width:40px;height:40px;border-radius:50%;font-size:1rem;line-height:1;padding:0}.fab.sound-btn{display:grid;place-items:center;color:var(--ink-soft)}.fab.sound-btn .sound-icon{width:18px;height:18px}.fab.sound-btn .sound-on{display:block}.fab.sound-btn .sound-off,.fab.sound-btn.is-muted .sound-on{display:none}.fab.sound-btn.is-muted .sound-off{display:block}.fab.theme-btn{font-size:.95rem}.meta-panel{margin-bottom:18px;flex-shrink:0}.meta-row{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:0;padding:0 2px;font-size:.78rem;font-weight:700;color:var(--ink-soft);font-variant-numeric:tabular-nums;flex-shrink:0}.meta-hint{min-height:1.25em;margin:6px 0 0;padding:0 4px;font-size:.72rem;font-weight:700;line-height:1.25;text-align:center;color:var(--danger)}.meta-hint-row{display:inline-flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:10px}.meta-hint-text{color:var(--danger)}.conflict-hint-btn{appearance:none;border:1px solid color-mix(in srgb,var(--danger) 35%,var(--line));background:color-mix(in srgb,var(--danger) 10%,var(--paper));color:var(--danger);font:inherit;font-size:.72rem;font-weight:800;line-height:1.2;border-radius:999px;padding:4px 10px;cursor:pointer;white-space:nowrap;box-shadow:0 1px 4px #0000000f}.conflict-hint-btn:active{transform:scale(.97)}.meta-hint:empty{visibility:hidden}.meta-schema{flex-shrink:0}.meta-row-intro{justify-content:space-between;align-items:center}.intro-exit-btn{appearance:none;border:0;background:transparent;color:var(--ink-soft);font:inherit;font-size:.78rem;font-weight:700;padding:2px 0;cursor:pointer;text-decoration:underline;text-underline-offset:2px;white-space:nowrap;flex-shrink:0;margin-left:auto}.intro-exit-btn:hover,.intro-exit-btn:focus-visible{color:var(--ink)}.meta-schema strong{color:var(--ink);letter-spacing:.04em;font-weight:800}.meta-details{display:flex;flex-direction:row;align-items:center;justify-content:flex-end;gap:0;flex-shrink:1;min-width:0}.meta-line{white-space:nowrap;text-align:right;letter-spacing:-.01em}.meta-line strong{color:var(--ink);font-weight:800;font-variant-numeric:tabular-nums}.meta-sep{padding:0 .15em;color:var(--ink-soft)}.board-wrap{position:relative;-webkit-user-select:none;user-select:none}.board.has-intro-guide{position:relative}.board.has-intro-guide .intro-guide-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:2}.intro-guide-line,.intro-guide-mark{stroke:var(--intro-target-ring);stroke-width:3px;vector-effect:non-scaling-stroke;stroke-linecap:round}.rules{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;padding:4px 0 0}.rule{min-width:0;padding:4px 2px 6px;text-align:center}.rule p{margin:6px 0 0;font-size:.6rem;line-height:1.3;font-weight:400;color:var(--ink-soft);text-wrap:pretty}.mini{display:grid;grid-template-columns:repeat(4,10px);gap:1px;width:43px;margin:0 auto}.mini span{width:10px;height:10px;border-radius:2px;display:grid;place-items:center;font-size:.5rem;font-weight:800;letter-spacing:-.06em}.modal-overlay[data-modal=help] .modal{display:flex;flex-direction:column;width:min(100%,420px);max-height:calc(100dvh - 40px);overflow:hidden;padding:22px 20px 18px;background:var(--paper)}.modal-overlay[data-modal=help] .help-rules{margin:0;text-align:left}.modal-overlay[data-modal=help] .help-modal-actions{flex-shrink:0;margin-top:16px;padding-top:0;border-top:0;justify-content:stretch;gap:10px}.modal-overlay[data-modal=help] .help-modal-actions .modal-btn{flex:1}.modal-overlay[data-modal=help] .rules{flex:1;min-height:0;overflow-x:hidden;overflow-y:auto;--mini-cell: 28px;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 16px;padding:0}.modal-overlay[data-modal=help] .help-tip{flex-shrink:0;margin:16px 0 0;padding-top:14px;border-top:1px solid var(--line);font-size:.88rem;line-height:1.45;font-weight:700;color:var(--ink-soft)}.modal-overlay[data-modal=help] .modal-title{font-size:1.3rem;margin-bottom:18px;color:var(--ink)}.modal-overlay[data-modal=help] .rule{padding:8px 6px 10px;min-width:0}.modal-overlay[data-modal=help] .rule p{margin:14px 0 0;font-size:.95rem;line-height:1.4;font-weight:700;color:var(--ink-soft)}.modal-overlay[data-modal=help] .mini{grid-template-columns:repeat(4,var(--mini-cell));gap:3px;width:calc(var(--mini-cell) * 4 + 9px)}.modal-overlay[data-modal=help] .mini span{width:var(--mini-cell);height:var(--mini-cell);border-radius:var(--cell-radius);font-size:.85rem}.modal-overlay[data-modal=help] .mini-cell.empty{box-shadow:inset 0 0 0 1px var(--line)}.modal-overlay[data-modal=help] .mini-cell.mark{font-size:1.2rem;line-height:1;font-weight:800}.modal-overlay[data-modal=help] .mini-cell.piece{font-size:1rem;font-weight:800}.modal-overlay{position:absolute;inset:0;z-index:100;display:grid;place-items:center;padding:20px;background:#0000006b;animation:fade-in .18s ease}.modal{width:min(100%,380px);background:var(--paper-2);border:1px solid var(--line);border-radius:var(--radius);padding:18px 16px 16px;box-shadow:var(--shadow);animation:pop .22s ease}.modal-title{margin:0 0 12px;font-size:1.1rem;font-weight:800;text-align:center;color:var(--ink)}.modal-text{margin:0;text-align:center;font-weight:700;color:var(--ink-soft);line-height:1.45}.modal-actions{display:flex;gap:10px;margin-top:18px}.modal-btn{flex:1;appearance:none;border:1px solid var(--line);background:var(--paper-2);color:var(--ink);font:inherit;font-weight:800;border-radius:12px;padding:11px 12px;cursor:pointer}.modal-btn.primary{background:var(--fab-active);border-color:var(--fab-active);color:var(--fab-active-text)}.modal-overlay[data-modal=win] .modal{background:#e7f6e4;border-color:#b5dbad}.modal-overlay[data-modal=win] .modal-title{color:#215c28}html[data-theme=night] .modal-overlay[data-modal=win] .modal{background:#141414;border-color:#ffffff29}html[data-theme=night] .modal-overlay[data-modal=win] .modal-title{color:#b8dfc4}.board{display:grid;grid-template-columns:repeat(var(--n),1fr);gap:var(--gap)}.cell{position:relative;border:0;padding:0;aspect-ratio:1;border-radius:var(--cell-radius);cursor:pointer;display:grid;place-items:center;container-type:size;touch-action:manipulation;transition:transform .08s ease}.cell:active{transform:scale(.96)}.cell.conflict .piece{animation:conflict-pulse 1.4s ease-in-out infinite}@keyframes conflict-pulse{0%,to{color:var(--conflict-ink)}50%{color:var(--conflict-pulse-mid)}}.board-wrap.locked{pointer-events:none}.board-wrap.locked .cell{cursor:default}.board-wrap.locked .cell:active{transform:none}.toolbar.locked .tool,.toolbar.locked .tool.active{opacity:1;background:var(--paper-2);border-color:var(--line);color:var(--ink-soft);transform:none;box-shadow:none;cursor:default}.tool:disabled{opacity:1;pointer-events:none;cursor:default}.cell.given{cursor:default}.cell.given:after{content:"";position:absolute;top:5px;right:5px;width:6px;height:6px;border-radius:50%;background:var(--given-dot);z-index:2}html[data-palette=dark] .cell.given:after{background:#fff6}.piece{display:grid;place-items:center;font-weight:800;line-height:1;letter-spacing:-.06em;z-index:1;font-size:52cqmin}.piece.guess{font-weight:400}.toolbar{display:flex;align-items:center;justify-content:space-between;width:100%;max-width:calc(var(--cell) * var(--n) + var(--gap) * (var(--n) - 1));margin:16px auto 0;padding-bottom:4px;flex-shrink:0}.toolbar-tools{display:flex;gap:var(--gap)}.toolbar-history{display:flex;gap:6px;align-items:center;margin-left:auto}.history-btn{width:var(--cell);height:var(--cell);border-radius:var(--cell-radius);border:1px solid var(--ink);background:var(--paper-2);color:var(--ink);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0;box-shadow:none}.history-btn .history-icon{width:calc(var(--cell) * .5);height:calc(var(--cell) * .5);display:block;flex-shrink:0}.history-btn:disabled{opacity:.35;pointer-events:none;cursor:default;box-shadow:none;border-color:var(--line)}.toolbar.locked .history-btn{opacity:.35;pointer-events:none;cursor:default;box-shadow:none;border-color:var(--line)}.solved-summary{width:100%;max-width:calc(var(--cell) * var(--n) + var(--gap) * (var(--n) - 1));margin:16px auto 0;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:var(--paper-2);flex-shrink:0}.solved-summary-text{margin:0;text-align:center;font-size:.92rem;font-weight:800;line-height:1.45;color:var(--ink)}.tool{width:var(--cell);height:var(--cell);border-radius:var(--cell-radius);border:1px solid var(--ink);background:var(--paper-2);color:var(--ink);font:inherit;font-weight:800;font-size:calc(var(--cell) * .52);letter-spacing:-.06em;line-height:1;cursor:pointer;display:grid;place-items:center;box-shadow:none;position:relative;padding:0;overflow:hidden}.tool.active{background:var(--fab-active);border-color:var(--fab-active);color:var(--fab-active-text)}.tool.intro-tool-target{animation:intro-tool-target-pulse 1s ease-in-out infinite}@keyframes intro-tool-target-pulse{0%,to{box-shadow:0 0 0 3px var(--intro-target-ring)}50%{box-shadow:0 0 0 4px var(--intro-target-ring)}}.new-btn{width:auto;max-width:100%;height:40px;flex:1 1 auto;min-width:0;appearance:none;border:1px solid var(--line);background:var(--paper-2);color:var(--ink);font:inherit;font-weight:800;font-size:.82rem;border-radius:8px;padding:0 16px;cursor:pointer;box-shadow:0 1px #0000000a;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center}.new-btn.is-muted{color:var(--ink-soft)}.busy,.error{margin:0;text-align:center;font-weight:800;color:var(--ink-soft)}.error{color:var(--danger)}@keyframes pop{0%{transform:scale(.96);opacity:0}to{transform:scale(1);opacity:1}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@media(display-mode:standalone){#app{display:block;height:100dvh}.shell{width:100%;height:100dvh;max-height:100dvh;border:0;border-radius:0;box-shadow:none;min-height:100dvh;overflow:hidden;padding-bottom:max(12px,env(safe-area-inset-bottom,0px))}.play-area{flex:1 1 auto;min-height:0;justify-content:center;overflow-y:auto;padding:28px 0 12px}.play-area:has(.history-page),.play-area:has(.catalog-page),.play-area:has(.settings-page){justify-content:flex-start;padding-top:0}.bottom-bar{padding-top:12px}}@media(max-width:430px){#app{display:block;height:100dvh}.shell{width:100%;height:100dvh;max-height:100dvh;border:0;border-radius:0;box-shadow:none}h1{font-size:1.5rem}.level-picker,.level-trigger,.level-option{font-size:.76rem}.level-trigger{padding:4px 26px 4px 8px}.play-area{padding:8px 0}.meta-panel{margin-bottom:12px}.meta-row{margin-bottom:0}.toolbar{margin-top:12px}.solved-summary{margin-top:12px;padding:12px 14px}.solved-summary-text{font-size:.86rem}.modal-overlay[data-modal=help] .modal{padding:18px 16px 16px}.modal-overlay[data-modal=help] .rules{--mini-cell: 26px;grid-template-columns:1fr;gap:18px}.modal-overlay[data-modal=help] .rule p{font-size:.88rem}.modal-overlay[data-modal=help] .mini-cell.mark{font-size:1.05rem}.modal-overlay[data-modal=help] .mini-cell.piece{font-size:.92rem}.meta-row{font-size:.72rem}.tutorial{padding-top:max(16px,env(safe-area-inset-top,0px));padding-bottom:max(12px,env(safe-area-inset-bottom,0px))}.tutorial-title{margin-top:10px;font-size:1.3rem}.tutorial-body,.tutorial-after{margin-top:10px;font-size:.86rem;line-height:1.45}.tutorial-demo{margin-top:10px;gap:8px}.tutorial-board-wrap{max-width:min(100%,300px)}.tutorial-nav{margin-top:10px}}@media(max-width:430px)and (max-height:780px){.tutorial-board-wrap{max-width:min(100%,268px)}}.welcome{position:absolute;inset:0;z-index:90;display:flex;flex-direction:column;padding:max(28px,env(safe-area-inset-top,0px)) max(20px,env(safe-area-inset-right,0px)) max(20px,env(safe-area-inset-bottom,0px)) max(20px,env(safe-area-inset-left,0px));background:radial-gradient(1200px 500px at 50% -10%,var(--page-glow),transparent 60%),var(--paper);color:var(--ink)}.welcome-main{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:center}.welcome-top{display:flex;align-items:center;justify-content:flex-end;min-height:40px;margin-bottom:8px;flex-shrink:0}.welcome-top-spacer{flex:1}.welcome-publisher-link{appearance:none;border:0;background:none;padding:0;margin:0 0 10px;font:inherit;font-size:.72rem;font-weight:800;letter-spacing:-.01em;color:var(--ink-soft);cursor:pointer;text-align:left;line-height:1;align-self:flex-start;width:fit-content;max-width:100%}.welcome-publisher-link:hover,.welcome-publisher-link:focus-visible{color:var(--ink)}.welcome-publisher-link:focus-visible{outline:2px solid var(--ink-soft);outline-offset:2px;border-radius:4px}.welcome-publisher-static{cursor:default;pointer-events:none}.welcome-publisher-mark{font-family:inherit;font-weight:inherit}.welcome-top-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.welcome-toolbar-btn{appearance:none;border:1px solid var(--line);background:var(--paper-2);color:var(--ink-soft);width:40px;height:40px;border-radius:10px;display:grid;place-items:center;cursor:pointer;padding:0;font:inherit;font-size:1rem;font-weight:800;line-height:1;flex-shrink:0}.welcome-toolbar-btn:active{transform:scale(.97)}.welcome-toolbar-btn.theme-btn{font-size:.95rem}.welcome-toolbar-btn.sound-btn .sound-icon{width:18px;height:18px}.welcome-toolbar-btn.sound-btn .sound-on{display:block}.welcome-toolbar-btn.sound-btn .sound-off,.welcome-toolbar-btn.sound-btn.is-muted .sound-on{display:none}.welcome-toolbar-btn.sound-btn.is-muted .sound-off{display:block}.welcome-menu-wrap{position:relative}.welcome-menu-btn,.welcome-settings-btn{appearance:none;border:1px solid var(--line);background:var(--paper-2);color:var(--ink-soft);width:40px;height:40px;border-radius:10px;display:grid;place-items:center;cursor:pointer;padding:0}.welcome-menu-btn:active,.welcome-settings-btn:active{transform:scale(.97)}.welcome-menu-btn.is-open{color:var(--ink);border-color:var(--ink-soft)}.menu-icon,.settings-icon{width:20px;height:20px}.welcome-menu{position:absolute;top:calc(100% + 6px);right:0;min-width:188px;padding:8px;border:1px solid var(--line);border-radius:12px;background:var(--paper);box-shadow:var(--shadow);z-index:40;display:grid;gap:2px;animation:menu-in .12s ease}.welcome-menu-item{appearance:none;border:0;background:transparent;color:var(--ink);font:inherit;font-weight:800;font-size:.88rem;padding:10px 12px;border-radius:8px;cursor:pointer;text-align:left;white-space:nowrap}.welcome-menu-item:active,.welcome-menu-item:hover,.welcome-menu-item:focus-visible{background:var(--paper-2);color:var(--ink)}.welcome-menu-item-danger{color:#c2410c}.welcome-menu-item-danger:hover,.welcome-menu-item-danger:focus-visible{background:color-mix(in srgb,#c2410c 8%,var(--paper-2))}.welcome-settings-view{display:flex;flex-direction:column;min-height:0;height:100%;overflow:hidden;justify-content:flex-start;gap:0}.welcome-settings-head{display:grid;grid-template-columns:40px 1fr 40px;align-items:center;gap:8px;margin-bottom:8px;flex-shrink:0}.welcome-settings-title{margin:0;font-size:1.05rem;font-weight:800;text-align:center}.welcome-publisher-logos{width:50%;margin:0 0 12px}.welcome-publisher-logo{display:block;width:100%;height:auto}.welcome-publisher-logo-night,html[data-theme=night] .welcome-publisher-logo-day{display:none}html[data-theme=night] .welcome-publisher-logo-night{display:block}.welcome-logo{margin:0;font-size:4rem;font-weight:800;letter-spacing:-.02em;line-height:.95}.welcome-tag{margin:10px 0 0;color:var(--ink-soft);font-size:.95rem;line-height:1.45;max-width:28em}.welcome-spectrum{display:grid;grid-template-columns:repeat(8,1fr);gap:4px;margin:22px 0 8px;max-width:320px}.welcome-spectrum span{height:12px;border-radius:3px}.welcome-play{appearance:none;width:100%;margin-top:auto;border:0;border-radius:999px;padding:14px 18px;font:inherit;font-size:1.1rem;font-weight:800;cursor:pointer;background:var(--fab-active);color:var(--fab-active-text);box-shadow:var(--shadow)}.welcome-play:active{transform:scale(.98)}.publisher-modal-overlay{z-index:120}.publisher-modal .publisher-brand{margin:0 0 12px;text-align:center;font-size:.95rem;font-weight:800;letter-spacing:-.01em;color:var(--ink-soft)}.publisher-modal .publisher-intro{margin-bottom:16px}.publisher-games{display:flex;flex-direction:column;gap:10px;margin-bottom:4px}.publisher-game-link{display:flex;align-items:center;justify-content:center;min-height:56px;padding:10px 16px;border-radius:12px;text-decoration:none;background:var(--fab-active);border:1px solid var(--fab-active);color:var(--fab-active-text);box-shadow:0 2px 8px #0000001a}.publisher-game-link:active{transform:scale(.98)}.publisher-game-brand{display:inline-flex;align-items:center;justify-content:center;gap:10px}.publisher-game-mark{width:32px;height:32px;flex-shrink:0;display:block;object-fit:contain}.publisher-game-name{font-size:1.24rem;font-weight:800;letter-spacing:-.01em;line-height:1}.publisher-game-name-plain{color:var(--fab-active-text)}.publisher-game-name-chessrelay{color:color-mix(in srgb,#fff 86%,#d4b483 14%)}.publisher-game-link .rainbow-word{margin:0;display:inline-flex;align-items:center}.publisher-game-link .rainbow-word span:nth-child(1){color:#f27d7d}.publisher-game-link .rainbow-word span:nth-child(2){color:#f2c17d}.publisher-game-link .rainbow-word span:nth-child(3){color:#dff27d}.publisher-game-link .rainbow-word span:nth-child(4){color:#9af27d}.publisher-game-link .rainbow-word span:nth-child(5){color:#7df2a4}.publisher-game-link .rainbow-word span:nth-child(6){color:#7df2e8}.publisher-game-link .rainbow-word span:nth-child(7){color:#7db8f2}.publisher-game-link .rainbow-word span:nth-child(8){color:#877df2}.publisher-game-link .rainbow-word span:nth-child(9){color:#cb7df2}.publisher-game-link .rainbow-word span:nth-child(10){color:#f27dd5}.publisher-modal-actions{margin-top:16px}.publisher-modal-actions .modal-btn{flex:0 1 auto;min-width:120px;margin:0 auto}.publisher-modal-actions .modal-btn.primary{background:var(--paper-2);border-color:var(--line);color:var(--ink)}html[data-theme=night] .publisher-modal-overlay{background:#00000094}html[data-theme=night] .publisher-modal-overlay .publisher-modal{background:#2c2c30;border-color:#ffffff2e}html[data-theme=night] .publisher-game-link{background:#000;border:1px solid rgba(255,255,255,.32);color:#fff;box-shadow:none}html[data-theme=night] .publisher-game-name-plain{color:#fff}html[data-theme=night] .publisher-modal-actions .modal-btn.primary{background:#000;border-color:#ffffff52;color:#fff}.cell.intro-target{z-index:3;animation:intro-target-pulse 1s ease-in-out infinite}.cell.intro-flash{animation:intro-flash .18s ease}@keyframes intro-target-pulse{0%,to{box-shadow:inset 0 0 0 4px var(--intro-target-ring)}50%{box-shadow:inset 0 0 0 3px var(--intro-target-ring)}}@keyframes intro-flash{0%{box-shadow:inset 0 0 0 3px var(--danger)}to{box-shadow:none}}.intro-callout{margin:10px 0 0;padding:12px 14px;background:#ffe566;border:3px solid #c4473a;border-radius:12px;box-shadow:0 2px 10px #c4473a2e}.intro-callout p{margin:0;font-size:clamp(14px,3.8vw,16px);font-weight:700;line-height:1.45;color:var(--ink);text-align:left}.intro-step{white-space:nowrap}.intro-welcome-overlay{z-index:130}.intro-welcome-panel{text-align:center}.intro-welcome-title{margin-bottom:12px}.intro-welcome-lead{margin-bottom:14px}.intro-welcome-rules{margin:0 auto 14px;padding-left:1.35em;max-width:28rem;text-align:left;list-style:disc}.intro-welcome-rules li{margin:.55em 0;line-height:1.45}.intro-welcome-rules li::marker{color:var(--ink-soft)}.intro-welcome-footer{margin-bottom:16px}.intro-welcome-actions{justify-content:center}.intro-welcome-skip{appearance:none;border:0;background:transparent;color:var(--ink-soft);font:inherit;font-size:.82rem;font-weight:600;margin-top:14px;padding:4px 8px;cursor:pointer;text-decoration:underline;text-underline-offset:2px}.intro-complete-panel{margin-top:12px}.intro-complete-lead{margin:0 0 10px;font-weight:800}.intro-complete-rules{margin-bottom:0}.intro-callout .intro-complete-rules li{font-size:.88rem;line-height:1.4}.intro-complete-actions{display:flex;gap:10px;margin-top:12px}.intro-complete-actions .modal-btn{flex:1}.shell.is-intro .play-area{padding-top:4px}.shell.is-intro .meta-panel{margin-bottom:6px}.shell.is-intro .meta-hint{display:none}.shell.is-intro .intro-bottom-bar{justify-content:flex-end}.shell.is-intro .intro-bottom-bar .bottom-tools{margin-left:auto}.tutorial{position:absolute;inset:0;z-index:100;display:flex;flex-direction:column;padding:max(28px,env(safe-area-inset-top,0px)) max(20px,env(safe-area-inset-right,0px)) max(20px,env(safe-area-inset-bottom,0px)) max(20px,env(safe-area-inset-left,0px));background:radial-gradient(1200px 500px at 50% -10%,var(--page-glow),transparent 60%),var(--paper);color:var(--ink)}.tutorial-main{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column;width:100%}.tutorial-top{display:flex;align-items:baseline;justify-content:space-between;gap:12px;width:100%;flex-shrink:0}.tutorial-kicker{margin:0;color:var(--ink-soft);font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.tutorial-title{margin:18px 0 0;font-size:clamp(1.35rem,6vw,1.65rem);font-weight:800;line-height:1.15}.tutorial-body,.tutorial-after{margin:18px 0 0;color:var(--ink-soft);font-size:.92rem;line-height:1.5}.tutorial-body p,.tutorial-after p{margin:0}.tutorial-body p+p,.tutorial-after p+p{margin-top:1em}.tutorial-closing{margin:1.35em 0 0;color:var(--ink);font-size:1.12rem;font-weight:700;line-height:1.35;text-align:center}.tutorial-demo{margin:18px auto 0;display:flex;flex-direction:column;align-items:center;gap:12px;width:100%}.tutorial-demo:empty{display:none}.tutorial-caption{margin:0;font-size:.74rem;font-weight:700;color:var(--ink-soft);text-align:center}.tutorial-board-wrap{width:100%;max-width:calc(var(--cell) * var(--n) + var(--gap) * (var(--n) - 1));margin:0 auto}.tutorial-board-wrap .cell{cursor:default;pointer-events:none}.tutorial-board-wrap .cell:active{transform:none}.tutorial-board-wrap .tutorial-mark-x{position:relative;z-index:1;display:grid;place-items:center;font-weight:800;font-size:52cqmin;line-height:1;color:var(--ink-soft);opacity:.72}.tutorial-skip{appearance:none;border:0;background:transparent;color:var(--ink-soft);font:inherit;font-size:.86rem;font-weight:700;cursor:pointer;padding:0;margin:0;flex-shrink:0;white-space:nowrap}.tutorial-nav{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;width:100%;margin:16px auto 0;flex-shrink:0}.tutorial-back{appearance:none;border:1px solid var(--line);background:var(--paper-2);color:var(--ink);font:inherit;font-size:.86rem;font-weight:700;border-radius:999px;padding:10px 16px;cursor:pointer;justify-self:start}.tutorial-back.is-off{visibility:hidden;pointer-events:none}.tutorial-dots{display:flex;gap:6px;justify-content:center}.tutorial-dots span{width:7px;height:7px;border-radius:50%;background:var(--line)}.tutorial-dots span.is-on{background:var(--ink)}.tutorial-next{justify-self:end;min-width:96px;padding:10px 18px}.cookie-consent{position:fixed;inset:0;z-index:200;display:grid;place-items:center;padding:max(16px,env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px)) max(16px,env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px));background:#00000073;pointer-events:auto}.cookie-consent[hidden]{display:none!important;pointer-events:none!important}.cookie-consent-card{width:min(420px,100%);padding:16px 16px 14px;background:var(--paper, var(--card-bg, #f3eee6));color:var(--ink, var(--text, #1c1612));border:2px solid var(--line);border-radius:16px;box-shadow:0 12px 40px #0000003d}.cookie-consent-title{margin:0 0 8px;font-size:1.05rem;font-weight:800}.cookie-consent-body{margin:0 0 12px;font-size:.88rem;line-height:1.45;color:var(--ink-soft, var(--muted, #5c534a))}.cookie-consent-privacy{appearance:none;border:0;background:none;padding:0;margin:0;font:inherit;font-weight:700;color:var(--accent, var(--ink, var(--text)));cursor:pointer;text-decoration:underline}.cookie-consent-actions{display:flex;gap:8px}.cookie-consent-actions button{flex:1;height:42px;border-radius:12px;font:inherit;font-weight:800;cursor:pointer}.cookie-consent-reject{background:var(--paper-2, var(--panel, #ebe4d9));color:var(--ink, var(--text));border:2px solid var(--line)}.cookie-consent-accept{background:var(--fab-active, var(--btn-primary-bg, var(--accent, #1c1612)));color:var(--fab-active-text, var(--btn-primary-text, #fff));border:2px solid transparent}.app-update{position:fixed;inset:0;z-index:210;display:grid;place-items:center;padding:max(16px,env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px)) max(16px,env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px));background:#00000073;pointer-events:auto}.app-update[hidden]{display:none!important;pointer-events:none!important}.app-update-card{width:min(420px,100%);padding:16px 16px 14px;background:var(--paper, var(--card-bg, #f3eee6));color:var(--ink, var(--text, #1c1612));border:2px solid var(--line);border-radius:16px;box-shadow:0 12px 40px #0000003d}.app-update-title{margin:0 0 8px;font-size:1.05rem;font-weight:800}.app-update-body{margin:0 0 12px;font-size:.88rem;line-height:1.45;color:var(--ink-soft, var(--muted, #5c534a))}.app-update-actions{display:flex;flex-direction:column;gap:8px}.app-update-reload{width:100%;height:42px;border-radius:12px;font:inherit;font-weight:800;cursor:pointer;background:var(--fab-active, var(--btn-primary-bg, var(--accent, #1c1612)));color:var(--fab-active-text, var(--btn-primary-text, #fff));border:2px solid transparent}.app-update-later{appearance:none;border:0;background:none;padding:4px 8px 2px;font:inherit;font-size:.82rem;font-weight:700;color:var(--ink-soft, var(--muted, #5c534a));cursor:pointer;text-decoration:underline;text-underline-offset:2px}.rotate-lock{display:none;position:fixed;inset:0;z-index:400;place-items:center;padding:32px;background:#0c0c0e;color:#eceae4}.rotate-lock-card{width:min(28rem,100%);text-align:center}.rotate-lock-title{margin:0 0 10px;font-size:1.35rem;font-weight:800}.rotate-lock-body{margin:0;font-size:1rem;font-weight:600;line-height:1.45;color:#a8a6a0}@media(orientation:landscape)and (pointer:coarse){.rotate-lock{display:grid}}
