:root{--bg: #0f1020;--bg-2: #16182e;--panel: #1c1f3a;--panel-2: #242848;--line: #2e3360;--text: #e7e9ff;--muted: #9aa0c8;--accent: #7c8cff;font-family:system-ui,-apple-system,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif}*{box-sizing:border-box}html,body{margin:0;padding:0;min-height:100%}body{background:radial-gradient(1200px 600px at 80% -10%,#25204a 0%,transparent 60%),radial-gradient(1000px 500px at -10% 110%,#1b2b46 0%,transparent 55%),var(--bg);color:var(--text);-webkit-tap-highlight-color:transparent;overflow-x:hidden}#app{max-width:1100px;margin:0 auto;padding:20px 18px 48px}button{font-family:inherit;cursor:pointer}.app-header{display:flex;flex-direction:column;gap:6px;padding:16px 4px 26px}.brand{display:inline-flex;align-items:center;gap:12px;cursor:pointer;width:fit-content}.brand-logo{font-size:34px;filter:drop-shadow(0 4px 12px rgba(124,140,255,.5))}.brand-name{font-size:30px;font-weight:800;letter-spacing:.5px;background:linear-gradient(90deg,#8ab4ff,#c98bff 60%,#ff9bd0);-webkit-background-clip:text;background-clip:text;color:transparent}.brand-sub{color:var(--muted);font-size:14px;padding-left:2px}.hub-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}.card{display:flex;gap:14px;text-align:left;background:linear-gradient(160deg,var(--panel),var(--bg-2));border:1px solid var(--line);border-radius:18px;padding:16px;color:var(--text);transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease;position:relative;overflow:hidden}.card:before{content:"";position:absolute;inset:0;background:radial-gradient(120px 120px at 12% 0%,color-mix(in srgb,var(--accent) 30%,transparent),transparent 70%);opacity:.7;pointer-events:none}.card:hover{transform:translateY(-4px);border-color:var(--accent);box-shadow:0 14px 34px -16px var(--accent)}.card:active{transform:translateY(-1px)}.card-icon{font-size:38px;width:58px;height:58px;flex:none;display:grid;place-items:center;border-radius:14px;background:color-mix(in srgb,var(--accent) 18%,var(--panel-2));border:1px solid color-mix(in srgb,var(--accent) 40%,var(--line))}.card-body{display:flex;flex-direction:column;gap:4px;min-width:0}.card-title{font-size:18px;font-weight:700}.card-en{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:1px}.card-desc{font-size:13px;color:var(--muted);line-height:1.5;margin-top:2px}.card-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.tag{font-size:11px;padding:2px 9px;border-radius:999px;background:var(--panel-2);border:1px solid var(--line);color:var(--muted)}.tag-best{color:#1b1300;background:linear-gradient(90deg,#ffd76a,#ffb01f);border-color:transparent;font-weight:700}.game-header{display:flex;align-items:center;gap:12px;padding:10px 2px 18px}.back-btn{background:var(--panel);border:1px solid var(--line);color:var(--text);border-radius:10px;padding:8px 14px;font-size:15px;transition:background .15s,border-color .15s}.back-btn:hover{border-color:var(--accent);background:var(--panel-2)}.game-head-title{display:flex;align-items:center;gap:8px;font-size:20px;font-weight:700}.game-head-icon{font-size:24px}.game-head-spacer{flex:1}.game-main{display:flex;justify-content:center}.stage{width:100%;display:flex;flex-direction:column;align-items:center}.loading{color:var(--muted);padding:60px;font-size:16px}.game-panel{display:flex;flex-direction:column;align-items:center;gap:14px;width:100%}.scorebar{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}.stat{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:8px 16px;min-width:84px;text-align:center}.stat-label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:1px}.stat-value{font-size:22px;font-weight:800;font-variant-numeric:tabular-nums}.surface{position:relative;background:var(--bg-2);border:1px solid var(--line);border-radius:16px;padding:14px;box-shadow:0 20px 50px -28px #000}canvas{display:block;border-radius:10px;touch-action:none}.controls{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}.btn{background:linear-gradient(180deg,var(--panel-2),var(--panel));border:1px solid var(--line);color:var(--text);border-radius:12px;padding:10px 20px;font-size:15px;font-weight:600;transition:transform .12s,border-color .15s,background .15s}.btn:hover{border-color:var(--accent)}.btn:active{transform:scale(.96)}.btn-primary{background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 80%,#fff 0%),var(--accent));border-color:transparent;color:#0b0c1c}.hint{color:var(--muted);font-size:13px;text-align:center;max-width:460px;line-height:1.6}.overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;background:#080914d1;backdrop-filter:blur(3px);border-radius:16px;text-align:center;padding:20px;z-index:5}.overlay h2{margin:0;font-size:30px}.overlay p{margin:0;color:var(--muted)}.hidden{display:none!important}.dpad{display:grid;grid-template-columns:repeat(3,56px);grid-template-rows:repeat(3,56px);gap:8px;justify-content:center}.dpad button{background:var(--panel);border:1px solid var(--line);border-radius:12px;color:var(--text);font-size:22px}.dpad button:active{background:var(--panel-2)}.dpad .up{grid-area:1 / 2}.dpad .left{grid-area:2 / 1}.dpad .right{grid-area:2 / 3}.dpad .down{grid-area:3 / 2}.dpad .mid{grid-area:2 / 2;visibility:hidden}.next-wrap{display:flex;flex-direction:column;align-items:center;gap:8px;background:var(--bg-2);border:1px solid var(--line);border-radius:14px;padding:12px}.next-canvas{background:#14162b;border-radius:8px}.g2048-board{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;width:min(86vw,380px);aspect-ratio:1}.g2048-cell{background:#191c34;border-radius:10px;display:grid;place-items:center;font-weight:800;font-variant-numeric:tabular-nums;color:#fff;transition:transform .08s ease}.g2048-cell.filled{animation:pop .12s ease}@keyframes pop{0%{transform:scale(.8)}to{transform:scale(1)}}.mine-board{display:grid;gap:3px;user-select:none}.mine-cell{width:30px;height:30px;border:1px solid var(--line);border-radius:5px;background:linear-gradient(180deg,#2a2f55,#20244a);color:#fff;font-weight:800;font-size:15px;display:grid;place-items:center;padding:0}.mine-cell:hover:not(.open){border-color:var(--accent)}.mine-cell.open{background:#15172c;border-color:#232844;cursor:default}.mine-cell.flag{background:linear-gradient(180deg,#3a2f55,#2a244a)}.mine-cell.mine{background:#2a1620}.mine-cell.exploded{background:#ef4444}.memory-board{display:grid;gap:10px;width:min(90vw,460px)}.memory-card{aspect-ratio:3 / 4;background:transparent;border:none;padding:0;perspective:700px}.memory-inner{position:relative;width:100%;height:100%;transition:transform .4s;transform-style:preserve-3d}.memory-card.flipped .memory-inner{transform:rotateY(180deg)}.memory-face{position:absolute;inset:0;display:grid;place-items:center;border-radius:12px;backface-visibility:hidden;font-size:clamp(26px,8vw,40px);border:1px solid var(--line)}.memory-back{background:linear-gradient(160deg,var(--panel-2),var(--panel));color:var(--muted)}.memory-front{background:#14162b;transform:rotateY(180deg)}.memory-card.matched .memory-front{background:#16351f;border-color:#22c55e}.whack-board{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;width:min(88vw,440px);padding:18px;border-radius:16px;background:radial-gradient(140px 90px at 18% 12%,rgba(255,255,255,.07),transparent 70%),linear-gradient(160deg,#2f6b33,#1d4a24 70%);box-shadow:inset 0 2px #ffffff14,inset 0 -10px 24px #00000059}.whack-hole{aspect-ratio:1;border:none;border-radius:50%;background:radial-gradient(circle at 50% 72%,#4a3520,#2a1c0d 55%,#170e04);box-shadow:inset 0 -10px 18px #000000b3,inset 0 8px 12px #0000008c,0 2px #ffffff12;position:relative;overflow:hidden;display:grid;place-items:end center;padding:0 0 6px}.whack-hole:after{content:"";position:absolute;left:8%;right:8%;bottom:4%;height:26%;border-radius:50%;background:radial-gradient(ellipse at 50% 30%,#5a3e23e6,#281a0bf2 75%);pointer-events:none}.whack-mole{font-size:clamp(30px,9vw,46px);transform:translateY(120%);transition:transform .12s ease;line-height:1}.whack-hole.up .whack-mole{transform:translateY(8%)}.whack-hole.whacked .whack-mole{transform:translateY(8%) scale(.7) rotate(-12deg);filter:brightness(1.4)}.ttt-board{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;width:min(80vw,330px)}.ttt-cell{aspect-ratio:1;border:1px solid var(--line);border-radius:14px;background:#14162b;font-size:clamp(40px,12vw,64px);font-weight:800;color:var(--text);display:grid;place-items:center;transition:background .15s,transform .08s}.ttt-cell:hover:empty{background:var(--panel-2);border-color:var(--accent)}.ttt-cell.x{color:#60a5fa}.ttt-cell.o{color:#f472b6}.ttt-cell.win{background:#16351f;border-color:#22c55e}.sudoku-board{display:grid;grid-template-columns:repeat(9,1fr);width:min(92vw,414px);aspect-ratio:1;background:#14162b;border:2px solid var(--line);border-radius:8px;overflow:hidden}.sud-cell{border:none;border-right:1px solid #232844;border-bottom:1px solid #232844;background:transparent;color:#93c5fd;font-size:clamp(15px,4vw,21px);font-weight:600;display:grid;place-items:center;padding:0;position:relative}.sud-cell.bl{border-left:2px solid var(--line)}.sud-cell.bt{border-top:2px solid var(--line)}.sud-cell.br{border-right:none}.sud-cell.bb{border-bottom:none}.sud-cell.given{color:var(--text)}.sud-cell.peer{background:#7c8cff14}.sud-cell.same{background:#7c8cff38}.sud-cell.sel{background:#7c8cff61}.sud-cell.wrong{color:#f87171;background:#ef444429}.sud-notes{display:grid;grid-template-columns:repeat(3,1fr);width:100%;height:100%;font-size:9px;color:var(--muted);font-weight:400;line-height:1;place-items:center}.sudoku-pad{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;max-width:460px}.sudoku-num{min-width:44px;padding:10px 0;font-size:17px}.td-info{display:flex;gap:10px;flex-wrap:wrap;align-items:center;justify-content:center;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:10px 16px;min-height:48px;color:var(--muted);font-size:14px;max-width:560px}.td-label{font-weight:600;color:var(--text)}.btn:disabled{opacity:.45;cursor:not-allowed}@media (max-width: 560px){.brand-name{font-size:24px}.hub-grid{grid-template-columns:1fr}#app{padding:12px 12px 36px}.mine-cell{width:26px;height:26px;font-size:13px}}
