:root{--bg:#f2f3fa;--surface:#fff;--surface-2:#f7f8fd;--ink:#1b1a2e;--muted:#6d6d8a;--line:#e4e5f0;--brand:#6c4cf1;--brand-2:#9b7bff;--accent:#ffc23c;--good:#16b981;--bad:#f2545b;--stage:#131a2b;--stage-2:#1b2438;--stage-line:#ffffff1f;--stage-ink:#e9eefb;--stage-muted:#93a2c4;--radius:14px;--radius-lg:22px;--shadow-sm:0 1px 2px #1b1a2e0f, 0 2px 8px #1b1a2e0d;--shadow:0 8px 28px #1b1a2e1f;--max:1340px;--header-h:64px;--rail-w:208px}*{box-sizing:border-box}html,body,#root{min-height:100%}body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;margin:0;font-family:system-ui,-apple-system,Segoe UI,PingFang SC,Microsoft YaHei,Helvetica Neue,Arial,sans-serif;font-size:16px;line-height:1.6}h1,h2,h3{letter-spacing:-.015em;margin:0 0 .5em;line-height:1.25}p{margin:0 0 1em}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}.btn{border:1px solid var(--line);background:var(--surface);cursor:pointer;white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;gap:.4em;padding:.62em 1.15em;font-weight:700;transition:transform .12s,background .2s,border-color .2s,box-shadow .2s;display:inline-flex}.btn:active{transform:scale(.96)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--brand);color:#fff;border-color:#0000;box-shadow:0 4px 14px #6c4cf152}.btn-primary:hover{background:#5b3ce0}.btn-ghost:hover{background:var(--surface-2);border-color:#d6d7e6}.header{z-index:40;background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0}.header-inner{max-width:var(--max);min-height:var(--header-h);align-items:center;gap:12px;margin:0 auto;padding:0 14px;display:flex}.brand{flex:none;align-items:center;gap:10px;display:flex}.brand-mark{background:linear-gradient(140deg, var(--brand), var(--brand-2));color:#fff;border-radius:11px;place-items:center;width:34px;height:34px;font-size:13px;display:grid}.brand-text{letter-spacing:-.01em;flex-direction:column;font-weight:900;line-height:1.1;display:flex}.brand-text em{color:var(--muted);letter-spacing:0;font-size:10px;font-style:normal;font-weight:600}.search-form{flex:1;max-width:420px;margin-left:auto;position:relative}.search-icon{opacity:.55;pointer-events:none;font-size:.85rem;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.search{border:1px solid var(--line);background:var(--surface-2);border-radius:999px;outline:none;width:100%;padding:9px 14px 9px 34px;font-size:.94rem}.search:focus{border-color:var(--brand);background:var(--surface)}.nav{gap:2px;display:none}.nav-link{color:var(--muted);border-radius:999px;padding:7px 12px;font-size:.93rem;font-weight:700}.nav-link:hover{color:var(--ink);background:var(--surface-2)}.nav-link.active{color:var(--brand);background:#6c4cf11a}.header-right{flex:none;align-items:center;gap:8px;display:flex}.lang-switch{border:1px solid var(--line);background:var(--surface-2);border-radius:999px;padding:3px;display:flex}.lang-btn{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:999px;padding:3px 11px;font-size:.82rem;font-weight:800;transition:all .18s}.lang-btn.active{background:var(--brand);color:#fff}.menu-btn{border:1px solid var(--line);background:var(--surface-2);cursor:pointer;border-radius:12px;width:38px;height:38px}@media (width>=1080px){.nav{display:flex}.menu-btn{display:none}}@media (width<=620px){.search-form{flex-basis:100%;order:3;max-width:none;margin:0 0 10px}.header-inner{flex-wrap:wrap;padding-top:10px}.brand{margin-right:auto}}@media (width<=1079px){.nav.open{background:var(--surface);border-bottom:1px solid var(--line);box-shadow:var(--shadow);flex-direction:column;gap:2px;padding:8px 14px 14px;display:flex;position:absolute;top:100%;left:0;right:0}.nav.open .nav-link{border-radius:12px;padding:12px}}.shell-layout{max-width:var(--max);gap:20px;margin:0 auto;padding:0 14px;display:flex}.content{flex:1;min-width:0}.main{min-height:68vh;padding:20px 0 48px}.center{text-align:center;padding:60px 0}.sidebar{width:var(--rail-w);top:calc(var(--header-h) + 16px);flex:none;align-self:flex-start;padding:16px 0 24px;display:none;position:sticky}@media (width>=1024px){.sidebar{display:block}.grid-section>.chips{display:none}}.sidebar ul{margin:0 0 18px;padding:0;list-style:none}.side-title{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0 0 8px 12px;font-size:.72rem;font-weight:800}.side-link{color:var(--ink);border-radius:12px;align-items:center;gap:10px;padding:9px 12px;font-size:.94rem;font-weight:700;display:flex}.side-link:hover{background:var(--surface)}.side-link.active{background:var(--brand);color:#fff;box-shadow:0 4px 14px #6c4cf147}.side-icon{text-align:center;width:22px;font-size:1.05rem}.side-note{border-radius:var(--radius);background:var(--surface);border:1px dashed var(--line);text-align:center;margin-top:8px;padding:14px}.side-note strong{color:var(--brand);font-size:1.6rem;line-height:1.1;display:block}.side-note span{color:var(--muted);font-size:.78rem}.section-title{margin:26px 0 12px;font-size:1.15rem}.page-title{margin:4px 0 14px;font-size:clamp(1.4rem,4vw,1.9rem)}.page-sub{color:var(--muted);max-width:62ch}.loading{text-align:center;color:var(--muted);letter-spacing:4px;padding:48px 0}.promo{border-radius:var(--radius-lg);background:linear-gradient(135deg, var(--brand), var(--brand-2) 62%, #c4a5ff);color:#fff;box-shadow:var(--shadow);flex-direction:column;gap:18px;padding:24px;display:flex}.promo h1{margin:10px 0 8px;font-size:clamp(1.5rem,4.4vw,2.3rem)}.promo p{color:#ffffffe0;max-width:52ch;margin:0 0 16px;font-size:.96rem}.badge{background:#ffffff2e;border-radius:999px;padding:4px 12px;font-size:.78rem;font-weight:800;display:inline-block}.promo-actions{flex-wrap:wrap;gap:10px;display:flex}.promo-actions .btn-primary{color:var(--brand);box-shadow:none;background:#fff}.promo-actions .btn-primary:hover{background:#f2eeff}.promo-actions .btn-ghost{color:#fff;background:#ffffff29;border-color:#ffffff59}.promo-actions .btn-ghost:hover{background:#ffffff42}.promo-stats{gap:10px;margin:0;padding:0;list-style:none;display:flex}.promo-stats li{text-align:center;border-radius:var(--radius);background:#ffffff29;flex:1;padding:10px 6px}.promo-stats strong{font-size:1.35rem;line-height:1.2;display:block}.promo-stats span{opacity:.9;font-size:.74rem}@media (width>=860px){.promo{flex-direction:row;align-items:center;padding:30px 34px}.promo-text{flex:1}.promo-stats{flex-direction:column;width:168px}}.chips{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.chip-btn{border:1px solid var(--line);background:var(--surface);color:var(--muted);cursor:pointer;border-radius:999px;padding:6px 15px;font-size:.88rem;font-weight:700;transition:all .16s}.chip-btn:hover{color:var(--ink)}.chip-btn.active{background:var(--brand);color:#fff;border-color:#0000}.tiles{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:12px;display:grid}@media (width>=720px){.tiles{grid-template-columns:repeat(auto-fill,minmax(158px,1fr))}}.tile-card{aspect-ratio:1;border-radius:var(--radius-lg);color:#fff;box-shadow:var(--shadow-sm);transition:transform .16s,box-shadow .16s;display:block;position:relative;overflow:hidden}.tile-card:hover{box-shadow:var(--shadow);transform:translateY(-4px)}.tile-card.featured{aspect-ratio:auto;grid-area:span 2/span 2}@media (width<=559px){.tile-card.featured{aspect-ratio:3/2;grid-row:span 1}.tile-card.featured .tile-icon{inset:0 0 96px}}.tile-icon{filter:drop-shadow(0 6px 14px #00000047);place-items:center;font-size:clamp(2.6rem,12vw,3.6rem);transition:transform .2s;display:grid;position:absolute;inset:0 0 34px}.tile-card.featured .tile-icon{font-size:clamp(4rem,14vw,6rem);inset:0 0 118px}.tile-card:hover .tile-icon{transform:scale(1.08)}.tile-meta{background:linear-gradient(#0000,#0000008c);flex-direction:column;padding:26px 12px 10px;display:flex;position:absolute;bottom:0;left:0;right:0}.tile-meta strong{text-shadow:0 1px 3px #00000059;font-size:.95rem;line-height:1.25}.tile-meta em{opacity:.85;font-size:.72rem;font-style:normal}.tile-desc{opacity:.92;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;margin-top:6px;font-size:.86rem;line-height:1.45;display:-webkit-box;overflow:hidden}.tile-play{opacity:0;background:#ffffff38;border-radius:999px;padding:3px 10px;font-size:.76rem;font-weight:800;transition:opacity .16s;position:absolute;top:10px;right:12px}.tile-card:hover .tile-play,.tile-card.featured .tile-play{opacity:1}.tile-card.featured .tile-meta{background:linear-gradient(#0000,#0009 60%);padding:48px 18px 18px}.tile-card.featured .tile-meta strong{font-size:1.3rem}.empty{text-align:center;color:var(--muted);padding:40px 0}.ad-home{min-height:100px;margin:28px 0 0}.crumbs{margin-bottom:10px}.crumbs a{color:var(--muted);font-size:.9rem;font-weight:600}.crumbs a:hover{color:var(--ink)}.stage{background:var(--stage);color:var(--stage-ink);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:18px 14px 20px}.game-head{flex-wrap:wrap;align-items:center;gap:14px;margin:20px 0 0;display:flex}.game-icon{border-radius:16px;flex:none;place-items:center;width:54px;height:54px;font-size:28px;display:grid}.game-head>div{flex:1;min-width:200px}.feedback-btn{margin-left:auto}.game-head h1{margin:0 0 2px;font-size:clamp(1.3rem,4vw,1.8rem)}.game-head p{color:var(--muted);margin:0;font-size:.92rem}.howto{border-radius:var(--radius-lg);background:var(--surface);border:1px solid var(--line);margin:18px 0 4px;padding:18px}.howto h2{margin-bottom:12px;font-size:1rem}.howto dl{gap:12px;margin:0;display:grid}@media (width>=720px){.howto dl{grid-template-columns:1fr 1fr}}.howto dt{margin-bottom:2px;font-size:.9rem;font-weight:800}.howto dd{color:var(--muted);margin:0;font-size:.9rem}.shell{flex-direction:column;align-items:center;gap:12px;display:flex}.shell-bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;width:100%;max-width:520px;display:flex}.stats{flex-wrap:wrap;gap:8px;display:flex}.stat{border:1px solid var(--stage-line);text-align:center;background:#ffffff0d;border-radius:12px;min-width:62px;padding:6px 12px;line-height:1.2}.stat-hi{border-color:var(--bad);animation:1s infinite pulse}@keyframes pulse{50%{opacity:.55}}.stat-label{color:var(--stage-muted);text-transform:uppercase;letter-spacing:.06em;font-size:.66rem;display:block}.stat-value{font-variant-numeric:tabular-nums;font-size:1.05rem;font-weight:800;display:block}.shell-actions{gap:8px;display:flex}.stage .btn{border-color:var(--stage-line);color:var(--stage-ink);background:#ffffff14;padding:.42em .9em;font-size:.86rem}.stage .btn:hover{background:#ffffff29}.stage .btn-primary{background:var(--brand);color:#fff;border-color:#0000;padding:.62em 1.15em;font-size:1rem}.board-wrap{justify-content:center;width:100%;max-width:520px;display:flex;position:relative}.canvas-holder{justify-content:center;width:100%;display:flex}.canvas-holder canvas{border-radius:var(--radius);border:1px solid var(--stage-line);touch-action:none;display:block}.overlay{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);border-radius:var(--radius);z-index:5;background:#0a0f1cc7;place-items:center;display:grid;position:absolute;inset:0}.overlay-card{text-align:center;border-radius:var(--radius-lg);background:var(--stage-2);border:1px solid var(--stage-line);box-shadow:var(--shadow);max-width:84%;padding:22px 26px}.overlay-card h3{margin:0 0 6px;font-size:1.3rem}.overlay-card p{color:var(--stage-muted);margin:0 0 14px;font-size:.92rem}.overlay-badge{background:var(--accent);color:#3a2600;border-radius:999px;margin-bottom:8px;padding:3px 11px;font-size:.76rem;font-weight:800;display:inline-block}.controls{justify-content:center;padding-top:4px;display:flex}.dbtn{border:1px solid var(--stage-line);width:54px;height:54px;color:var(--stage-ink);cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none;background:#ffffff14;border-radius:14px;font-size:1.05rem}.dbtn:active{background:#fff3}.dpad{grid-template-rows:repeat(2,54px);grid-template-columns:repeat(3,54px);gap:6px;display:grid}.dpad-up{grid-area:1/2}.dpad-left{grid-area:2/1}.dpad-down{grid-area:2/2}.dpad-right{grid-area:2/3}.btn-row{gap:8px;display:flex}@media (width>=900px) and (hover:hover){.controls{display:none}}.g2048{aspect-ratio:1;border-radius:var(--radius);background:var(--stage-2);border:1px solid var(--stage-line);touch-action:none;grid-template-columns:repeat(4,1fr);gap:8px;width:100%;max-width:420px;padding:8px;display:grid}.tile{color:#2a1c0d;background:#ffffff0d;border-radius:8px;place-items:center;font-size:clamp(1rem,6vw,1.9rem);font-weight:800;transition:background .12s;display:grid}.tile-0{color:#0000}.tile-2{background:#eee4da}.tile-4{background:#ede0c8}.tile-8{background:#f2b179}.tile-16{color:#fff;background:#f59563}.tile-32{color:#fff;background:#f67c5f}.tile-64{color:#fff;background:#f65e3b}.tile-128{background:#edcf72;font-size:clamp(.9rem,5vw,1.6rem)}.tile-256{background:#edcc61;font-size:clamp(.9rem,5vw,1.6rem)}.tile-512{background:#edc850;font-size:clamp(.9rem,5vw,1.6rem)}.tile-1024{color:#fff;background:#edc53f;font-size:clamp(.75rem,4vw,1.3rem)}.tile-2048{color:#fff;background:#edc22e;font-size:clamp(.75rem,4vw,1.3rem);box-shadow:0 0 24px #edc22e99}.tile-big{color:#fff;background:#3c3a32;font-size:clamp(.7rem,3.6vw,1.2rem)}.mine-grid{aspect-ratio:1;border-radius:var(--radius);background:var(--stage-2);border:1px solid var(--stage-line);grid-template-columns:repeat(9,1fr);gap:3px;width:100%;max-width:400px;padding:6px;display:grid}.mine-cell{cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none;color:var(--stage-ink);border:0;border-radius:5px;place-items:center;padding:0;font-size:clamp(.8rem,3.4vw,1.05rem);font-weight:800;display:grid}.mine-cell.closed{background:linear-gradient(160deg,#2c3a5a,#202b45);border-top:1px solid #ffffff24}.mine-cell.closed:hover{background:linear-gradient(160deg,#35476c,#263351)}.mine-cell.open{cursor:default;background:#ffffff0f}.mine-cell.boom{background:var(--bad)}.mine-cell.n1{color:#7aa2ff}.mine-cell.n2{color:#5ee7a0}.mine-cell.n3{color:#ff8a80}.mine-cell.n4{color:#c4a5ff}.mine-cell.n5{color:#ffd66b}.mine-cell.n6{color:#6ee7ff}.mine-cell.n7,.mine-cell.n8{color:#fff}.memo-grid{grid-template-columns:repeat(4,1fr);gap:8px;width:100%;max-width:400px;display:grid}.memo-card{aspect-ratio:3/4;perspective:700px;cursor:pointer;background:0 0;border:0;padding:0}.memo-inner{width:100%;height:100%;transform-style:preserve-3d;transition:transform .35s;display:block;position:relative}.memo-card.up .memo-inner{transform:rotateY(180deg)}.memo-back,.memo-front{backface-visibility:hidden;border:1px solid var(--stage-line);border-radius:12px;place-items:center;display:grid;position:absolute;inset:0}.memo-back{color:#b9c4e6;background:linear-gradient(150deg,#33427a,#232f52);font-size:1.4rem;font-weight:800}.memo-front{background:var(--stage-2);font-size:clamp(1.5rem,8vw,2.2rem);transform:rotateY(180deg)}.memo-card.matched .memo-front{border-color:var(--good);box-shadow:0 0 18px #16b98166}.whack-grid{aspect-ratio:1;grid-template-columns:repeat(3,1fr);gap:10px;width:100%;max-width:400px;display:grid}.whack-hole{border:1px solid var(--stage-line);cursor:pointer;touch-action:manipulation;background:radial-gradient(circle at 50% 30%,#22304e,#10182a 70%);border-radius:50%;place-items:center;display:grid;overflow:hidden}.whack-thing{font-size:clamp(1.8rem,9vw,2.6rem);transition:transform .13s ease-out;transform:translateY(120%)}.whack-thing.up{transform:translateY(0)}.board-form{border-radius:var(--radius-lg);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-sm);margin:16px 0;padding:20px}.board-form h2{margin-bottom:14px;font-size:1.05rem}.field{margin-bottom:14px;display:block}.field>span{color:var(--muted);justify-content:space-between;margin-bottom:6px;font-size:.82rem;font-weight:700;display:flex}.counter{font-variant-numeric:tabular-nums;font-style:normal}.field input,.field select,.field textarea{border:1px solid var(--line);background:var(--surface-2);resize:vertical;border-radius:12px;outline:none;width:100%;padding:10px 12px}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--brand);background:var(--surface)}.field-row{gap:0;display:grid}@media (width>=620px){.field-row{grid-template-columns:1fr 1fr;gap:14px}}.form-error{color:var(--bad);margin:0 0 10px;font-size:.88rem}.note{color:var(--muted);background:var(--surface);border:1px dashed #d3d4e4;border-radius:12px;padding:12px 14px;font-size:.84rem}.board-list ul{gap:12px;margin:0;padding:0;list-style:none;display:grid}.msg{border-radius:var(--radius);background:var(--surface);border:1px solid var(--line);padding:14px 16px}.msg-top{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:6px;display:flex}.msg-avatar{background:var(--surface-2);border:1px solid var(--line);border-radius:50%;place-items:center;width:28px;height:28px;font-size:.9rem;display:grid}.msg-chip{border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:2px 8px;font-size:.72rem}.msg-chip.game{color:var(--brand);background:#6c4cf112;border-color:#6c4cf159}.msg-time{color:var(--muted);margin-left:auto;font-size:.76rem}.msg-del{color:var(--bad);cursor:pointer;background:0 0;border:0;padding:0 2px;font-size:.78rem}.msg-text{white-space:pre-wrap;word-break:break-word;margin:0;font-size:.94rem}.toast{z-index:60;background:var(--good);color:#fff;box-shadow:var(--shadow);border-radius:999px;padding:11px 20px;font-weight:700;animation:.25s rise;position:fixed;bottom:26px;left:50%;transform:translate(-50%)}@keyframes rise{0%{opacity:0;transform:translate(-50%,12px)}}.prose{max-width:68ch}.prose p{color:var(--muted)}.prose h2{margin-top:28px;font-size:1.1rem}.rules{gap:10px;padding:0;list-style:none;display:grid}.rules li{border-radius:var(--radius);background:var(--surface);border:1px solid var(--line);gap:10px;padding:12px 14px;font-size:.94rem;display:flex}.tick{color:var(--good);font-weight:800}.inline-link{color:var(--brand);font-weight:700}.footer{border-top:1px solid var(--line);text-align:center;color:var(--muted);flex-direction:column;align-items:center;gap:10px;padding:20px 0 30px;font-size:.86rem;display:flex}.footer-inner{display:contents}.footer-links{gap:16px;display:flex}.footer-links a:hover{color:var(--ink)}.dot{margin:0 6px}@media (width>=720px){.footer{text-align:left;flex-direction:row;justify-content:space-between}}
