:root{color-scheme:light;--page:#e8f1ed;--paper:#fffaf2;--surface:#ffffff;--ink:#292735;--muted:#716d7b;--line:#d8d5d0;--line-strong:#817a78;--accent:#ef5b5f;--accent-dark:#b93848;--teal:#1d8d84;--teal-dark:#12685f;--gold:#f2bd3c;--blue:#4a7ed6;--danger:#d94255;--shadow:0 9px 24px rgba(53,43,52,0.12);--board-edge:min(84vw,560px,calc(100dvh - 318px));--sprite-url:url("../assets/mascot/cat-puzzle-game-sprites.png");font-family:"Trebuchet MS","Microsoft YaHei UI","Microsoft YaHei",sans-serif;font-synthesis:none}*{box-sizing:border-box;letter-spacing:0}html,body{width:100%;min-height:100%;margin:0;overscroll-behavior:none}body{min-height:100dvh;overflow-x:hidden;color:var(--ink);background-color:var(--page);-webkit-tap-highlight-color:transparent;user-select:none}button,input,select{color:inherit;font:inherit}button{border:0;cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,label:focus-within{outline:3px solid rgba(74,126,214,0.36);outline-offset:2px}button:disabled{cursor:default;opacity:0.38}[hidden]{display:none !important}.cat-puzzle-game-app{position:relative;display:flex;flex-direction:column;width:min(100%,820px);min-height:100dvh;margin:0 auto;overflow:hidden;background-color:var(--paper);box-shadow:0 0 0 1px rgba(41,39,53,0.07),0 16px 54px rgba(41,39,53,0.1)}.game-topbar{display:grid;grid-template-columns:52px minmax(0,1fr) 52px;align-items:center;width:min(100%,720px);min-height:82px;margin:0 auto;padding:max(12px,env(safe-area-inset-top)) 16px 8px}.round-icon-btn{display:inline-grid;place-items:center;width:46px;height:46px;padding:0;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:50%;box-shadow:0 4px 0 rgba(41,39,53,0.08);transition:transform 140ms ease,box-shadow 140ms ease,color 140ms ease}.round-icon-btn:hover{color:var(--teal-dark);transform:translateY(-1px);box-shadow:0 5px 0 rgba(41,39,53,0.09)}.round-icon-btn:active{transform:translateY(2px);box-shadow:0 1px 0 rgba(41,39,53,0.1)}.round-icon-btn svg{width:23px;height:23px;stroke-width:2.4}.round-icon-btn.compact{width:38px;height:38px;box-shadow:none}.round-icon-btn.compact svg{width:19px;height:19px}.level-heading{display:flex;flex-direction:column;align-items:center;min-width:0;padding:0 8px;background:transparent}.level-title-line{display:flex;align-items:center;justify-content:center;min-width:0;gap:8px}.level-title-line>strong{overflow:hidden;font-size:27px;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}.hard-badge{display:inline-flex;align-items:center;gap:3px;min-height:25px;padding:3px 7px;color:#fff;font-size:12px;font-weight:900;line-height:1;background:var(--accent);border-radius:6px}.hard-badge svg{width:14px;height:14px;fill:currentColor}.lives{display:flex;min-height:22px;margin-top:6px;gap:4px}.life-heart{width:20px;height:20px;color:var(--accent);fill:currentColor;filter:drop-shadow(0 2px 0 rgba(185,56,72,0.16));transition:color 180ms ease,transform 180ms ease,opacity 180ms ease}.life-heart.lost{color:#bbb7b3;fill:transparent;opacity:0.62;transform:scale(0.8)}.rule-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:min(calc(100% - 28px),700px);min-height:72px;margin:4px auto 8px;overflow:hidden;background:var(--surface);border:2px solid var(--line-strong);border-radius:8px;box-shadow:0 5px 0 rgba(41,39,53,0.08);transform-origin:top center;transition:opacity 180ms ease,transform 180ms ease,min-height 180ms ease,margin 180ms ease}body.rules-hidden{--board-edge:min(90vw,600px,calc(100dvh - 236px))}body.rules-hidden .rule-strip{min-height:0;height:0;margin-top:0;margin-bottom:0;border-width:0;opacity:0;pointer-events:none;transform:scaleY(0.75)}.rule-item{display:flex;align-items:center;justify-content:center;min-width:0;padding:9px 10px;gap:9px;color:#554d54;font-size:13px;font-weight:800;line-height:1.25;text-align:left}.rule-item + .rule-item{border-left:1px solid var(--line)}.rule-glyph{position:relative;flex:0 0 34px;display:grid;width:34px;height:34px;padding:2px;gap:2px}.rule-glyph b{display:block;background:#a9d8d2;border-radius:2px}.rule-glyph em{position:absolute;width:10px;height:10px;background:var(--ink);border:2px solid #fff;border-radius:50%;box-shadow:0 1px 0 rgba(0,0,0,0.18)}.region-rule{grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr}.region-rule b:nth-child(2),.region-rule b:nth-child(4){background:#f3cc68}.region-rule em{right:3px;bottom:3px}.line-rule{grid-template-columns:repeat(3,1fr)}.line-rule b:nth-child(2){background:#f0a3ae}.line-rule em{left:12px;top:12px}.neighbor-rule{grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);padding:0}.neighbor-rule b{background:#c7c0dc}.neighbor-rule em{left:12px;top:12px}.challenge-toast{position:absolute;z-index:30;top:max(84px,calc(env(safe-area-inset-top) + 70px));left:50%;display:flex;align-items:center;width:min(calc(100% - 32px),430px);min-height:58px;padding:10px 14px;gap:10px;color:#fff;background:#302e3a;border:1px solid rgba(255,255,255,0.14);border-radius:7px;box-shadow:var(--shadow);transform:translate(-50%,-16px);opacity:0;pointer-events:none}.challenge-toast.show{animation:challengeInOut 4.4s ease both}.challenge-icon{display:grid;place-items:center;flex:0 0 36px;width:36px;height:36px;color:#3a2d05;background:var(--gold);border-radius:50%}.challenge-icon svg{width:19px;height:19px}.challenge-toast>span:last-child{display:flex;flex-direction:column;min-width:0}.challenge-toast small{color:#c9c5d0;font-size:11px}.challenge-toast strong{overflow-wrap:anywhere;font-size:14px;line-height:1.35}.play-zone{display:flex;flex:1 1 auto;flex-direction:column;align-items:center;justify-content:center;min-height:0;padding:2px 12px 8px}.meme-progress{display:inline-flex;align-items:center;min-height:37px;margin:0 0 8px;padding:4px 12px 4px 5px;gap:7px;color:var(--muted);font-size:12px;font-weight:800;background:var(--surface);border:1px solid var(--line);border-radius:18px;box-shadow:0 3px 0 rgba(41,39,53,0.07)}.meme-progress strong{color:var(--ink);font-size:17px}.mini-meme,.dock-meme,.completion-meme,.cell-meme,.meme-preview{position:relative;display:block;overflow:hidden}.mini-meme{width:29px;height:29px;background:#f4d7d2;border-radius:50%}.meme-sprite,.mini-meme>img,.dock-meme>img,.completion-meme>img,.cell-meme>img,.meme-preview>img{position:absolute;inset:0;display:block;width:100%;height:100%}.meme-sprite{background-image:var(--sprite-url);background-repeat:no-repeat;background-position:0 0;background-size:200% 200%}.mini-meme>img,.dock-meme>img,.completion-meme>img,.cell-meme>img,.meme-preview>img{display:none;object-fit:contain}body.custom-meme .mini-meme .meme-sprite,body.custom-meme .dock-meme .meme-sprite,body.custom-meme .completion-meme .meme-sprite,body.custom-meme .cell-meme .meme-sprite,body.custom-meme .meme-preview .meme-sprite{display:none}body.custom-meme .mini-meme>img,body.custom-meme .dock-meme>img,body.custom-meme .completion-meme>img,body.custom-meme .cell-meme>img,body.custom-meme .meme-preview>img{display:block}.board-stage{--n:4;--cell-radius:6px;--board-gap:clamp(2px,calc(17px / var(--n)),5px);--mark-width:clamp(2px,calc(var(--board-edge) / var(--n) * 0.085),6px);display:grid;grid-template-columns:0 var(--board-edge);grid-template-rows:0 var(--board-edge);width:var(--board-edge);height:var(--board-edge);transition:width 180ms ease,height 180ms ease}body.show-coordinates .board-stage{grid-template-columns:25px var(--board-edge);grid-template-rows:22px var(--board-edge);width:calc(var(--board-edge) + 25px);height:calc(var(--board-edge) + 22px)}.axis-corner,.column-labels,.row-labels{display:none}body.show-coordinates .axis-corner,body.show-coordinates .column-labels,body.show-coordinates .row-labels{display:grid}.column-labels{grid-column:2;grid-row:1;grid-template-columns:repeat(var(--n),minmax(0,1fr))}.row-labels{grid-column:1;grid-row:2;grid-template-rows:repeat(var(--n),minmax(0,1fr))}.column-labels span,.row-labels span{display:grid;place-items:center;color:var(--muted);font-size:11px;font-weight:900}.board{position:relative;grid-column:2;grid-row:2;display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));grid-template-rows:repeat(var(--n),minmax(0,1fr));width:var(--board-edge);height:var(--board-edge);padding:clamp(4px,0.7vw,7px);gap:var(--board-gap);overflow:hidden;background:var(--surface);border:2px solid var(--line-strong);border-radius:8px;box-shadow:0 8px 0 rgba(41,39,53,0.08),0 18px 32px rgba(41,39,53,0.09)}.cell{position:relative;display:block;min-width:0;min-height:0;padding:0;overflow:hidden;background:var(--cell-color);border:0;border-radius:var(--cell-radius);touch-action:none;transform:translateZ(0);transition:filter 120ms ease,box-shadow 120ms ease}.cell:hover{filter:brightness(1.04) saturate(1.04)}.cell:active{filter:brightness(0.96)}.cell::after{position:absolute;z-index:1;inset:0;content:"";border:2px solid transparent;border-radius:inherit;pointer-events:none}.cell.guide-target::after,.cell.hint-target::after{border-color:#fff;box-shadow:inset 0 0 0 2px var(--blue),0 0 0 2px var(--blue);animation:targetPulse 1.25s ease-in-out infinite}.cell-meme{position:absolute;z-index:3;inset:1%;display:none;pointer-events:none;filter:drop-shadow(0 2px 1px rgba(41,39,53,0.18))}.cell.has-cat .cell-meme{display:block}.cell.has-cat.placing .cell-meme{animation:memeLand 520ms cubic-bezier(0.2,0.9,0.28,1.25) both}.cell.has-cat.placing{z-index:7;animation:memeCellPop 520ms cubic-bezier(0.2,0.9,0.28,1.18) both}.cell.has-cat.placing .meme-sprite{animation:memeFrames 520ms steps(1,end) both}.cell.has-cat.celebrating .cell-meme{animation:memeCelebrate 760ms cubic-bezier(0.24,0.84,0.33,1.25) both}.cell.has-cat.celebrating{z-index:7;animation:memeCellPop 760ms cubic-bezier(0.24,0.84,0.33,1.18) both}.cell.has-cat.celebrating .meme-sprite{background-position:0 100%}.cell.has-cat.placing::before{position:absolute;z-index:2;left:50%;bottom:7%;width:58%;height:18%;content:"";border:2px solid rgba(255,255,255,0.76);border-radius:50%;transform:translateX(-50%) scale(0.35);opacity:0;animation:landingRing 500ms ease-out both;pointer-events:none}.mark-symbol{position:absolute;z-index:4;left:50%;top:50%;display:none;width:54%;aspect-ratio:1;transform:translate(-50%,-50%);pointer-events:none}.cell.has-mark .mark-symbol{display:block}.mark-symbol::before,.mark-symbol::after{position:absolute;left:calc(50% - var(--mark-width) / 2);top:2%;width:var(--mark-width);height:96%;content:"";background:#fff;border-radius:999px;box-shadow:0 1px 1px rgba(41,39,53,0.38)}.mark-symbol::before{transform:rotate(45deg)}.mark-symbol::after{transform:rotate(-45deg)}.cell.marking{animation:markCell 240ms ease both}.cell.marking .mark-symbol{animation:markPop 240ms cubic-bezier(0.2,0.9,0.35,1.4) both}.cell.invalid{z-index:6;animation:invalidCell 420ms ease both}.cell.invalid::after{border-color:var(--danger);box-shadow:inset 0 0 0 2px #fff}body.colorblind .cell::before{position:absolute;z-index:1;inset:0;content:"";opacity:0.25;pointer-events:none}body.colorblind .cell[data-pattern="0"]::before{background-image:repeating-linear-gradient(45deg,transparent 0 7px,rgba(35,30,46,0.42) 7px 9px)}body.colorblind .cell[data-pattern="1"]::before{background-image:radial-gradient(circle at center,rgba(35,30,46,0.52) 0 1.5px,transparent 1.8px);background-size:9px 9px}body.colorblind .cell[data-pattern="2"]::before{background-image:repeating-linear-gradient(90deg,transparent 0 8px,rgba(35,30,46,0.4) 8px 10px)}body.colorblind .cell[data-pattern="3"]::before{background-image:repeating-linear-gradient(-45deg,transparent 0 6px,rgba(255,255,255,0.65) 6px 8px)}body.colorblind .cell[data-pattern="4"]::before{background-image:linear-gradient(45deg,rgba(35,30,46,0.36) 25%,transparent 25%,transparent 75%,rgba(35,30,46,0.36) 75%);background-size:10px 10px}body.colorblind .cell[data-pattern="5"]::before{background-image:repeating-linear-gradient(0deg,transparent 0 6px,rgba(255,255,255,0.65) 6px 8px)}.action-dock{position:sticky;z-index:20;bottom:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));width:100%;min-height:78px;margin-top:auto;padding:7px max(10px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left));gap:6px;background:color-mix(in srgb,var(--paper) 94%,transparent);border-top:1px solid var(--line);backdrop-filter:blur(12px)}.dock-tool{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;min-height:60px;padding:5px 4px 3px;gap:2px;color:var(--muted);background:transparent;border:1px solid transparent;border-radius:6px;transition:color 130ms ease,background 130ms ease,transform 130ms ease}.dock-tool:hover,.dock-tool.active{color:var(--teal-dark);background:rgba(29,141,132,0.09)}.dock-tool:active{transform:translateY(2px) scale(0.97)}.dock-tool>svg{width:26px;height:26px;stroke-width:2.2}.dock-tool>span:not(.dock-meme){overflow:hidden;max-width:100%;font-size:12px;font-weight:900;text-overflow:ellipsis;white-space:nowrap}.dock-meme{width:32px;height:32px}.tool-count{position:absolute;top:2px;right:max(6px,calc(50% - 32px));display:grid;place-items:center;min-width:21px;height:21px;padding:0 5px;color:#fff;font-size:11px;background:var(--blue);border:2px solid var(--paper);border-radius:11px}.guide-overlay{position:fixed;z-index:80;inset:0;pointer-events:none}.guide-shade{position:fixed;background:rgba(24,23,31,0.66);transition:inset 220ms ease,width 220ms ease,height 220ms ease}.guide-ring{position:fixed;border:3px solid #fff;border-radius:8px;box-shadow:0 0 0 3px var(--gold),0 0 22px rgba(242,189,60,0.65);pointer-events:none;animation:guideRing 1.25s ease-in-out infinite}.guide-card{position:fixed;z-index:83;left:50%;bottom:max(94px,calc(env(safe-area-inset-bottom) + 86px));width:min(calc(100% - 28px),430px);padding:16px;color:var(--ink);background:var(--surface);border:2px solid var(--ink);border-radius:8px;box-shadow:0 7px 0 rgba(41,39,53,0.25);transform:translateX(-50%);pointer-events:auto}.guide-card.above{top:max(92px,calc(env(safe-area-inset-top) + 78px));bottom:auto}.guide-kicker,.dialog-kicker{display:block;color:var(--teal-dark);font-size:11px;font-weight:900;text-transform:uppercase}.guide-card h2{margin:4px 0 6px;font-size:20px;line-height:1.2}.guide-card p{margin:0;color:var(--muted);font-size:14px;line-height:1.55}.guide-actions{display:flex;align-items:center;margin-top:12px;gap:8px}.guide-hand{--hand-dx:70px;--hand-dy:0px;position:fixed;z-index:82;display:grid;place-items:center;width:50px;height:50px;color:#34486f;background:#fff;border:2px solid #34486f;border-radius:50%;box-shadow:0 5px 0 rgba(32,40,57,0.26);animation:guideSwipe 1.8s ease-in-out infinite;pointer-events:none}.guide-hand svg{width:28px;height:28px;fill:#d9e6ff}dialog{color:var(--ink)}dialog::backdrop{background:rgba(27,25,32,0.58);backdrop-filter:blur(3px)}.sheet-dialog,.completion-dialog{width:min(calc(100% - 24px),460px);max-width:none;max-height:calc(100dvh - 24px);margin:auto;padding:0;overflow:visible;background:transparent;border:0}.dialog-panel,.completion-panel{overflow:auto;max-height:calc(100dvh - 24px);padding:18px;background:var(--paper);border:2px solid var(--ink);border-radius:8px;box-shadow:0 9px 0 rgba(23,21,29,0.22)}.dialog-header{display:flex;align-items:flex-start;justify-content:space-between;min-height:46px;gap:12px}.dialog-header>div{min-width:0}.dialog-header h2{margin:4px 0 0;overflow-wrap:anywhere;font-size:22px;line-height:1.2}.meme-actions{display:flex;margin:18px 0 0;padding:0;gap:8px}.primary-btn,.secondary-btn,.text-btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 14px;gap:7px;font-size:14px;font-weight:900;border-radius:6px;transition:transform 120ms ease,box-shadow 120ms ease}.primary-btn{color:#fff;background:var(--teal);box-shadow:0 4px 0 var(--teal-dark)}.primary-btn:hover,.secondary-btn:hover{transform:translateY(-1px)}.primary-btn:active,.secondary-btn:active{transform:translateY(2px);box-shadow:none}.primary-btn svg,.secondary-btn svg{width:18px;height:18px}.secondary-btn{color:var(--ink);background:var(--surface);border:1px solid var(--line-strong);box-shadow:0 3px 0 rgba(41,39,53,0.12)}.text-btn{min-height:38px;padding:8px 10px;color:var(--muted);background:transparent}.full{width:100%}.settings-panel{padding-bottom:8px}.settings-list{margin-top:10px}.setting-row{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;width:100%;min-height:53px;margin:0;padding:8px 2px;gap:10px;color:var(--ink);font-size:14px;font-weight:800;text-align:left;background:transparent;border-bottom:1px solid var(--line)}.setting-row>svg{width:21px;height:21px;color:var(--teal-dark)}.setting-row>svg:last-child{color:var(--muted)}.setting-row input[role="switch"]{position:relative;width:44px;height:25px;margin:0;appearance:none;background:#cac6c2;border:0;border-radius:14px;transition:background 150ms ease}.setting-row input[role="switch"]::after{position:absolute;left:3px;top:3px;width:19px;height:19px;content:"";background:#fff;border-radius:50%;box-shadow:0 1px 3px rgba(41,39,53,0.28);transition:transform 150ms ease}.setting-row input[role="switch"]:checked{background:var(--teal)}.setting-row input[role="switch"]:checked::after{transform:translateX(19px)}.language-row select{max-width:132px;height:35px;padding:0 28px 0 9px;background:var(--surface);border:1px solid var(--line-strong);border-radius:5px}.link-row{grid-template-columns:28px minmax(0,1fr) 20px}.meme-preview{width:148px;height:148px;margin:16px auto 10px;overflow:hidden;background:#f2d3d1;border:2px solid var(--line-strong);border-radius:50%;box-shadow:inset 0 -8px 0 rgba(255,255,255,0.32)}.meme-status{margin:0;color:var(--muted);font-size:13px;text-align:center}.meme-actions{flex-direction:column}.upload-btn{cursor:pointer}.level-panel{width:min(100%,460px)}.level-list{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));max-height:62dvh;margin-top:12px;padding:2px;gap:7px;overflow:auto}.level-button{position:relative;display:grid;place-items:center;aspect-ratio:1;min-width:0;color:var(--ink);font-size:14px;font-weight:900;background:var(--surface);border:1px solid var(--line);border-radius:6px}.level-button.current{color:#fff;background:var(--teal);border-color:var(--teal-dark)}.level-button.complete::after{position:absolute;right:3px;top:3px;width:7px;height:7px;content:"";background:var(--gold);border-radius:50%}.level-button.hard::before{position:absolute;left:3px;top:2px;content:"◆";color:var(--accent);font-size:9px}.fail-panel{text-align:center}.fail-panel h2{margin:8px 0 6px}.fail-panel p{margin:0 0 18px;color:var(--muted);font-size:14px;line-height:1.55}.fail-icon{display:grid;place-items:center;width:72px;height:72px;margin:0 auto;color:#fff;background:var(--accent);border-radius:50%}.fail-icon svg{width:38px;height:38px}.completion-panel{position:relative;overflow:hidden;padding:18px 20px 22px;text-align:center}.completion-panel h2{position:relative;z-index:3;margin:5px 0 7px;font-size:25px}.completion-panel>p{position:relative;z-index:3;margin:0 auto 16px;max-width:340px;color:var(--muted);font-size:14px;line-height:1.5}.completion-visual{position:relative;z-index:2;display:grid;place-items:center;width:180px;height:180px;margin:2px auto 8px}.celebration-halo{position:absolute;width:170px;height:170px;background:repeating-conic-gradient(from 0deg,rgba(242,189,60,0.8) 0 10deg,transparent 10deg 23deg);border-radius:50%;opacity:0.78;animation:haloSpin 7s linear infinite}.celebration-halo::after{position:absolute;inset:24px;content:"";background:var(--paper);border-radius:50%}.completion-meme{z-index:2;width:138px;height:138px;animation:completionMeme 900ms cubic-bezier(0.22,0.9,0.25,1.22) both;filter:drop-shadow(0 8px 7px rgba(41,39,53,0.18))}.completion-meme .meme-sprite{background-position:0 100%}.completion-stats{position:relative;z-index:3;display:grid;grid-template-columns:1fr 1fr;margin:0 0 17px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.completion-stats div{padding:10px}.completion-stats div + div{border-left:1px solid var(--line)}.completion-stats dt{color:var(--muted);font-size:11px}.completion-stats dd{margin:3px 0 0;font-size:18px;font-weight:900}.fireworks{position:absolute;z-index:1;inset:0;overflow:hidden;pointer-events:none}.firework-particle{--x:0px;--y:0px;--delay:0ms;position:absolute;left:50%;top:32%;width:7px;height:12px;background:var(--particle-color,var(--accent));border-radius:2px;opacity:0;animation:firework 1.2s var(--delay) cubic-bezier(0.17,0.72,0.24,1) both}.toast{position:fixed;z-index:120;left:50%;bottom:max(96px,calc(env(safe-area-inset-bottom) + 88px));max-width:min(calc(100% - 30px),430px);padding:10px 14px;color:#fff;font-size:13px;font-weight:800;line-height:1.4;text-align:center;background:#302e3a;border-radius:6px;box-shadow:var(--shadow);transform:translate(-50%,12px);opacity:0;pointer-events:none;transition:opacity 160ms ease,transform 160ms ease}.toast.show{opacity:1;transform:translate(-50%,0)}body.night-mode{color-scheme:dark;--page:#171820;--paper:#20222b;--surface:#2a2d37;--ink:#f5f2ed;--muted:#b9b5bd;--line:#454852;--line-strong:#737681;--teal:#42b7aa;--teal-dark:#83d8cf;--shadow:0 9px 24px rgba(0,0,0,0.28)}body.night-mode .rule-item{color:#e6dde0}body.night-mode .cell{filter:brightness(0.82) saturate(0.92)}body.night-mode .cell:hover{filter:brightness(0.9) saturate(0.96)}body.night-mode .mark-symbol::before,body.night-mode .mark-symbol::after{background:#fff}@keyframes challengeInOut{0%{opacity:0;transform:translate(-50%,-16px)}9%,84%{opacity:1;transform:translate(-50%,0)}100%{opacity:0;transform:translate(-50%,-10px)}}@keyframes targetPulse{0%,100%{opacity:0.7}50%{opacity:1}}@keyframes markCell{0%{transform:scale(1)}48%{transform:scale(0.86)}100%{transform:scale(1)}}@keyframes markPop{0%{opacity:0;transform:translate(-50%,-50%) scale(0.45) rotate(-10deg)}65%{opacity:1;transform:translate(-50%,-50%) scale(1.14) rotate(2deg)}100%{opacity:1;transform:translate(-50%,-50%) scale(1)}}@keyframes memeLand{0%{opacity:0;transform:scale(1.5) translateY(-7%)}58%{opacity:1;transform:scale(0.92) translateY(2%)}78%{transform:scale(1.06) translateY(-1%)}100%{opacity:1;transform:scale(1) translateY(0)}}@keyframes memeFrames{0%,24%{background-position:0 0}25%,49%{background-position:100% 0}50%,78%{background-position:0 100%}79%,100%{background-position:100% 100%}}@keyframes landingRing{0%,48%{opacity:0;transform:translateX(-50%) scale(0.35)}56%{opacity:0.85}100%{opacity:0;transform:translateX(-50%) scale(1.45)}}@keyframes memeCelebrate{0%{transform:scale(1)}45%{transform:scale(1.5) rotate(-3deg)}72%{transform:scale(1.12) rotate(2deg)}100%{transform:scale(1) rotate(0)}}@keyframes memeCellPop{0%{transform:scale(1)}45%{transform:scale(1.1)}100%{transform:scale(1)}}@keyframes invalidCell{0%,100%{transform:translateX(0);filter:none}18%{transform:translateX(-7%);filter:saturate(1.7)}36%{transform:translateX(7%)}54%{transform:translateX(-5%)}72%{transform:translateX(4%)}}@keyframes guideRing{0%,100%{box-shadow:0 0 0 2px var(--gold),0 0 14px rgba(242,189,60,0.5)}50%{box-shadow:0 0 0 5px var(--gold),0 0 26px rgba(242,189,60,0.82)}}@keyframes guideSwipe{0%,15%{transform:translate(0,0) scale(0.92)}26%{transform:translate(0,0) scale(0.84)}72%{transform:translate(var(--hand-dx),var(--hand-dy)) scale(0.84)}84%,100%{transform:translate(var(--hand-dx),var(--hand-dy)) scale(0.98)}}@keyframes haloSpin{to{transform:rotate(360deg)}}@keyframes completionMeme{0%{opacity:0;transform:scale(1)}34%{opacity:1;transform:scale(1.5)}63%{transform:scale(0.9)}82%{transform:scale(1.08)}100%{transform:scale(1)}}@keyframes firework{0%{opacity:0;transform:translate(0,0) rotate(0) scale(0.5)}18%{opacity:1}100%{opacity:0;transform:translate(var(--x),var(--y)) rotate(320deg) scale(1)}}@media (max-width:560px){:root{--board-edge:min(88vw,calc(100dvh - 330px))}body.rules-hidden{--board-edge:min(92vw,calc(100dvh - 248px))}.game-topbar{min-height:76px;padding-right:12px;padding-left:12px}.level-title-line>strong{font-size:24px}.rule-strip{width:calc(100% - 20px);min-height:68px}.rule-item{flex-direction:column;padding:6px 3px;gap:3px;font-size:11px;line-height:1.15;text-align:center}.rule-glyph{flex-basis:28px;width:28px;height:28px}.rule-glyph em{transform:scale(0.86)}.line-rule em,.neighbor-rule em{left:9px;top:9px}.play-zone{justify-content:flex-start;padding-top:0}.meme-progress{margin-bottom:7px}.action-dock{min-height:74px}.dock-tool{min-height:56px}.guide-card{bottom:max(86px,calc(env(safe-area-inset-bottom) + 79px))}}@media (max-height:760px){:root{--board-edge:min(78vw,calc(100dvh - 300px))}body.rules-hidden{--board-edge:min(84vw,calc(100dvh - 220px))}.game-topbar{min-height:68px;padding-top:max(6px,env(safe-area-inset-top));padding-bottom:4px}.round-icon-btn{width:41px;height:41px}.level-title-line>strong{font-size:22px}.lives{margin-top:3px}.life-heart{width:17px;height:17px}.rule-strip{min-height:58px;margin-bottom:5px}.rule-glyph{flex-basis:24px;width:24px;height:24px}.meme-progress{min-height:32px;margin-bottom:5px}.action-dock{min-height:66px;padding-top:4px}.dock-tool{min-height:50px}.dock-tool>svg{width:22px;height:22px}.dock-meme{width:27px;height:27px}}@media (min-width:900px) and (min-height:820px){.game-topbar{min-height:92px}.rule-strip{margin-top:7px;margin-bottom:12px}.action-dock{padding-right:42px;padding-left:42px}}@media (prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto !important;animation-duration:1ms !important;animation-iteration-count:1 !important;transition-duration:1ms !important}}.home-screen{position:fixed;z-index:60;inset:0;display:flex;flex-direction:column;width:min(100%,820px);min-height:100dvh;margin:0 auto;padding:max(12px,env(safe-area-inset-top)) 18px max(16px,env(safe-area-inset-bottom));overflow:hidden;background:#fffaf2;box-shadow:0 0 50px rgba(41,39,53,0.1)}.home-topbar{display:grid;grid-template-columns:48px 1fr 48px;align-items:center}.home-life-chip{display:inline-flex;align-items:center;justify-self:center;min-width:86px;height:42px;padding:0 15px;gap:8px;background:#fff;border:1px solid #ddd7cf;border-radius:22px;box-shadow:0 4px 0 rgba(41,39,53,0.08)}.home-life-chip svg{width:22px;color:var(--accent);fill:currentColor}.home-brand{position:relative;z-index:3;margin-top:clamp(18px,5dvh,58px);text-align:center}.home-brand h1{margin:3px 0 0;font-family:"Trebuchet MS","Microsoft YaHei UI",sans-serif;font-size:clamp(40px,12vw,68px);line-height:0.98;text-shadow:0 5px 0 rgba(41,39,53,0.1)}.home-brand p{margin:7px 0 0;color:var(--teal-dark);font-size:13px;font-weight:900;letter-spacing:2px;text-transform:uppercase}.brand-puzzle{display:inline-grid;grid-template-columns:repeat(4,13px);gap:4px}.brand-puzzle i{height:13px;background:var(--accent);border-radius:4px}.brand-puzzle i:nth-child(2){background:var(--gold)}.brand-puzzle i:nth-child(3){background:var(--teal)}.brand-puzzle i:nth-child(4){background:var(--blue)}.home-mascot{position:relative;z-index:2;width:clamp(210px,58vw,330px);aspect-ratio:1.08;margin:clamp(5px,2dvh,22px) auto -54px;filter:drop-shadow(0 12px 10px rgba(41,39,53,0.12));animation:homeCatFloat 4.8s ease-in-out infinite}.home-mascot .meme-sprite{background-position:0 0}.continue-stage{position:relative;z-index:4;width:min(100%,390px);margin:0 auto;padding:52px 22px 20px;text-align:center;background:#fff;border:1px solid #d9d3ca;border-radius:8px;box-shadow:0 7px 0 rgba(41,39,53,0.1),0 18px 35px rgba(41,39,53,0.08)}.continue-kicker{color:var(--teal-dark);font-size:12px;font-weight:900}.continue-stage h2{margin:4px 0 12px;font-size:25px}.home-mini-board{display:grid;grid-template-columns:repeat(3,31px);grid-template-rows:repeat(3,31px);justify-content:center;gap:4px;margin-bottom:17px}.home-mini-board i{position:relative;display:block;background:var(--mini-color);border-radius:5px}.home-mini-board i.x::before,.home-mini-board i.x::after{position:absolute;left:14px;top:7px;width:3px;height:17px;content:"";background:#fff;border-radius:3px;transform:rotate(45deg)}.home-mini-board i.x::after{transform:rotate(-45deg)}.home-continue{width:100%;min-height:52px;font-size:17px;background:var(--accent);box-shadow:0 5px 0 var(--accent-dark)}.home-nav{display:grid;grid-template-columns:repeat(3,1fr);width:min(100%,390px);margin:auto auto 0;padding-top:12px;border-top:1px solid #ded8d0}.home-nav button{display:flex;flex-direction:column;align-items:center;min-height:56px;gap:4px;color:var(--muted);background:transparent;font-size:11px;font-weight:900}.home-nav svg{width:24px}body.home-open .cat-puzzle-game-app{visibility:hidden}.rule-glyph,.region-rule,.line-rule,.neighbor-rule{grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);width:38px;height:38px;padding:1px;gap:2px}.rule-glyph b,.region-rule b:nth-child(n),.line-rule b:nth-child(n),.neighbor-rule b:nth-child(n){position:relative;background:#b8ddd7;border-radius:2px}.region-rule b:nth-child(1),.region-rule b:nth-child(4),.region-rule b:nth-child(5),.region-rule b:nth-child(7){background:#f2ca67}.line-rule b{background:#b8ddd7}.line-rule b:nth-child(2),.line-rule b:nth-child(5),.line-rule b:nth-child(8){background:#ef9daa}.neighbor-rule b{background:#cbc4df}.rule-glyph b.x::before,.rule-glyph b.x::after{position:absolute;left:calc(50% - 1px);top:18%;width:2px;height:64%;content:"";background:#fff;border-radius:2px;transform:rotate(45deg)}.rule-glyph b.x::after{transform:rotate(-45deg)}.rule-glyph b.cat::after{position:absolute;left:50%;top:50%;width:7px;height:7px;content:"";background:var(--ink);border:1px solid #fff;border-radius:50% 50% 45% 45%;transform:translate(-50%,-50%)}.rule-item.guide-rule-target{position:relative;z-index:85}.guide-mask-svg,.guide-rings{position:fixed;z-index:80;inset:0;width:100%;height:100%;pointer-events:none}.guide-cell-ring{position:fixed;z-index:82;display:block;border:2px solid #fff;border-radius:7px;box-shadow:0 0 0 3px var(--gold),0 0 20px rgba(242,189,60,0.62);animation:guideRing 1.25s ease-in-out infinite}.guide-cell-ring.rule-ring{border-radius:10px;box-shadow:0 0 0 3px var(--teal),0 0 18px rgba(29,141,132,0.56)}.cell.guide-target::after,.cell.hint-target::after{border-color:transparent;box-shadow:none;animation:none}.guide-card{border:1px solid #ddd6cd;border-left:5px solid var(--accent);border-radius:8px;box-shadow:0 7px 0 rgba(41,39,53,0.2),0 18px 45px rgba(20,18,25,0.25)}.guide-hand{animation:none}.cell.preview-cat .cell-meme,.cell.preview-mark .mark-symbol{display:block;opacity:0.4;filter:grayscale(0.15)}.cell.preview-cat::after,.cell.preview-mark::after{border:2px dashed rgba(255,255,255,0.82)}.board-stage.board-enter{animation:boardArrival 620ms cubic-bezier(0.18,0.88,0.25,1.08) both}.cell.has-cat:not(.placing):not(.celebrating) .cell-meme{animation:memeIdle 5.2s ease-in-out infinite}.cell.has-cat:not(.placing):not(.celebrating) .meme-sprite{animation:memeIdleFrames 5.2s steps(1,end) infinite}body.custom-meme .cell.has-cat:not(.placing):not(.celebrating) .meme-sprite{animation:none}.action-dock{grid-template-columns:.78fr 1.22fr 1.22fr .78fr;min-height:88px;padding-top:8px;gap:9px}.dock-tool.utility-tool{color:#9d989f;opacity:0.74}.dock-tool.power-tool{min-height:68px;color:var(--ink);background:#fff;border:1px solid #d8d1c9;border-radius:8px;box-shadow:0 5px 0 rgba(41,39,53,0.12)}.dock-tool.power-tool:active{transform:translateY(3px);box-shadow:0 2px 0 rgba(41,39,53,0.1)}.dock-tool.power-tool>svg{color:var(--gold)}.dock-tool.power-tool .dock-meme{width:36px;height:36px}body.colorblind .cell::before{opacity:0.52}body.colorblind .cell[data-pattern="0"]::before{background-image:repeating-linear-gradient(45deg,transparent 0 6px,rgba(255,255,255,.78) 6px 9px)}body.colorblind .cell[data-pattern="1"]::before{background-image:radial-gradient(circle,rgba(35,30,46,.72) 0 2px,transparent 2.4px);background-size:10px 10px}body.colorblind .cell[data-pattern="2"]::before{background-image:repeating-linear-gradient(90deg,transparent 0 7px,rgba(255,255,255,.78) 7px 10px)}body.colorblind .cell[data-pattern="3"]::before{background-image:repeating-linear-gradient(-45deg,transparent 0 6px,rgba(35,30,46,.66) 6px 9px)}body.colorblind .cell[data-pattern="4"]::before{background-image:linear-gradient(45deg,rgba(255,255,255,.72) 25%,transparent 25%,transparent 75%,rgba(255,255,255,.72) 75%);background-size:12px 12px}body.colorblind .cell[data-pattern="5"]::before{background-image:repeating-linear-gradient(0deg,transparent 0 6px,rgba(35,30,46,.65) 6px 9px)}body.colorblind .cell[data-pattern="6"]::before{background-image:radial-gradient(circle,transparent 0 3px,rgba(255,255,255,.8) 3.5px 5px,transparent 5.5px);background-size:14px 14px}body.colorblind .cell[data-pattern="7"]::before{background-image:repeating-linear-gradient(45deg,rgba(35,30,46,.55) 0 2px,transparent 2px 7px),repeating-linear-gradient(-45deg,rgba(35,30,46,.55) 0 2px,transparent 2px 7px)}body.colorblind .cell[data-pattern="8"]::before{background-image:radial-gradient(ellipse at center,rgba(255,255,255,.75) 0 2px,transparent 2.5px);background-size:14px 8px}body.colorblind .cell[data-pattern="9"]::before{background-image:linear-gradient(90deg,rgba(35,30,46,.55) 50%,transparent 50%);background-size:8px 100%}.page-dialog{width:min(100%,820px);height:100dvh;max-height:none;margin:0 auto}.page-dialog::backdrop{background:rgba(41,39,53,.28)}.page-dialog .dialog-panel{width:100%;height:100%;max-height:none;padding:max(18px,env(safe-area-inset-top)) clamp(18px,6vw,54px) max(22px,env(safe-area-inset-bottom));background:var(--paper);border:0;border-radius:0;box-shadow:none}.page-dialog .dialog-header{display:grid;grid-template-columns:42px 1fr 42px;align-items:center;text-align:center}.page-dialog .dialog-header h2{font-size:28px}.settings-cat,.meme-help{display:grid;place-items:center;width:42px;height:42px}.settings-cat{position:relative;overflow:hidden;border-radius:50%}.settings-cat .meme-sprite{transform:scale(1.55) translateY(12%);transform-origin:center}.meme-help{color:var(--gold)}.page-dialog .settings-list{width:min(100%,520px);margin:clamp(32px,7dvh,72px) auto 0;padding:7px 20px;background:#fff;border:1px solid #ded7ce;border-radius:8px;box-shadow:0 6px 0 rgba(41,39,53,.08)}.page-dialog .setting-row{min-height:58px}.settings-home-btn{display:flex;width:min(100%,520px);min-height:50px;margin:22px auto 0}.meme-stage{position:relative;width:min(100%,480px);min-height:330px;margin:clamp(30px,7dvh,70px) auto 16px;padding:30px;overflow:hidden;background:#dff2ed;border:2px dashed rgba(29,141,132,.4);border-radius:8px;box-shadow:0 7px 0 rgba(29,141,132,.12)}.meme-stage-copy{display:block;color:var(--teal-dark);font-size:13px;font-weight:900;text-align:center}.meme-stage .meme-preview{width:220px;height:220px;margin:18px auto 0;background:#fff;border-color:#fff;box-shadow:0 9px 24px rgba(29,141,132,.18)}.page-dialog .meme-actions{width:min(100%,480px);margin:20px auto 0}.completion-dialog{width:min(100%,820px);height:100dvh;max-height:none;margin:0 auto}.completion-dialog::backdrop{background:var(--paper);backdrop-filter:none}.completion-panel{display:flex;flex-direction:column;justify-content:center;width:100%;height:100%;max-height:none;padding:max(36px,env(safe-area-inset-top)) 26px max(28px,env(safe-area-inset-bottom));overflow:hidden;background:var(--paper);border:0;border-radius:0;box-shadow:none}.completion-panel h2{margin:8px 0 0;font-size:clamp(30px,9vw,48px)}.completion-visual{width:min(78vw,360px);height:min(78vw,360px);margin:10px auto -4px}.celebration-halo{width:150%;height:150%;background:repeating-conic-gradient(from 0deg,rgba(242,189,60,.9) 0 8deg,transparent 8deg 19deg);opacity:.82;mask-image:radial-gradient(circle,#000 0 28%,rgba(0,0,0,.86) 38%,rgba(0,0,0,.34) 58%,transparent 76%);animation-duration:14s}.celebration-halo::after{display:none}.completion-meme{width:58%;height:58%}.completion-panel>p{margin-bottom:12px}.completion-stats{width:min(100%,430px);margin:0 auto 20px}.completion-panel .primary-btn{width:min(100%,430px);margin:0 auto;min-height:54px;font-size:17px}@keyframes boardArrival{0%{opacity:0;transform:translateY(-34px) scale(.96)}68%{opacity:1;transform:translateY(5px) scale(1.01)}100%{opacity:1;transform:translateY(0) scale(1)}}@keyframes memeLand{0%{opacity:0;transform:scale(1)}45%{opacity:1;transform:scale(1.5)}75%{transform:scale(.98)}100%{opacity:1;transform:scale(1)}}@keyframes memeIdle{0%,72%,100%{transform:translateY(0) rotate(0)}78%{transform:translateY(-3%) rotate(-1.5deg)}84%{transform:translateY(0) rotate(1deg)}}@keyframes memeIdleFrames{0%,74%{background-position:0 0}75%,82%{background-position:100% 100%}83%,100%{background-position:0 0}}@keyframes homeCatFloat{0%,100%{transform:translateY(0) rotate(-.5deg)}50%{transform:translateY(-7px) rotate(.5deg)}}@media (max-height:700px){.home-brand{margin-top:8px}.home-brand h1{font-size:38px}.home-mascot{width:190px;margin-top:-2px;margin-bottom:-52px}.continue-stage{padding-top:45px}.home-mini-board{grid-template-columns:repeat(3,25px);grid-template-rows:repeat(3,25px)}.home-nav{padding-top:5px}}@media (max-width:360px){.rule-item{padding:6px 4px;gap:4px;font-size:10px}.rule-glyph,.region-rule,.line-rule,.neighbor-rule{flex-basis:27px;width:27px;height:27px}.action-dock{gap:5px}.dock-tool.power-tool{min-height:58px}}
