:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color-scheme:dark}*,*:before,*:after{box-sizing:border-box}body{margin:0;min-height:100vh;background:#0f172a;color:#f8fafc}#root{min-height:100vh;display:flex;align-items:stretch;justify-content:center}.App-root{width:100%;max-width:100%;margin:0 auto;padding:8px}@media(min-width:640px){.App-root{max-width:640px;padding:12px}}@media(min-width:768px){.App-root{max-width:720px;padding:16px}}.card{background:transparent;border-radius:0;padding:0;box-shadow:none;border:none}button{font:inherit}.app-shell{display:flex;flex-direction:column;gap:8px;min-height:calc(100vh - 16px)}@media(min-width:640px){.app-shell{gap:12px;min-height:calc(100vh - 24px)}}.app-header{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px;padding:4px 0}.header-title{text-align:center;flex:1}.title-main{font-size:18px;font-weight:700;letter-spacing:.05em}@media(min-width:480px){.title-main{font-size:20px;letter-spacing:.08em}}.title-sub{font-size:11px;opacity:.75}.header-spacer{width:48px;display:flex;align-items:center;justify-content:flex-start}@media(min-width:640px){.header-spacer{width:56px}}.header-back{display:flex;align-items:center;justify-content:flex-start;width:auto;min-width:0}.header-back .ghost-button{padding:4px 8px;font-size:13px}.app-main{flex:1;display:flex;flex-direction:column;gap:8px}@media(min-width:640px){.app-main{gap:12px}}.board-section{padding:8px 0}.board-label{font-size:11px;letter-spacing:.1em;text-transform:uppercase;opacity:.85;margin-bottom:8px}.board-cards-row{display:flex;justify-content:space-between;gap:8px}.card-slot{flex:1;display:flex;justify-content:center}.card-slot-button{all:unset;cursor:pointer;display:flex;justify-content:center}.poker-card{width:72px;height:96px;border-radius:12px;background:linear-gradient(135deg,#f8fafc,#e2e8f0);box-shadow:0 8px 18px #00000073;color:#020617;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:6px 6px 8px;position:relative}.poker-label{font-weight:700;font-size:18px}.poker-suit{font-size:20px}.poker-value{font-size:13px;opacity:.7}.card-slot-used .poker-card{opacity:.35;transform:translateY(2px)}.expression-section{display:flex;flex-direction:column;gap:6px}.expression-label{font-size:12px;opacity:.85}.expression-row{display:flex;gap:8px}.expression-input{flex:1;border-radius:999px;border:1px solid rgba(148,163,184,.8);background:#0f172ad9;color:#e5e7eb;padding:8px 12px;font-size:14px;outline:none}.expression-input::placeholder{color:#94a3b8e6}.expression-input:focus-visible{border-color:#34d399;box-shadow:0 0 0 1px #34d39999}.operator-section{padding-top:4px}.operator-row{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}.operator-button{border-radius:999px;border:1px solid rgba(148,163,184,.7);background:#0f172ae6;color:#e5e7eb;padding:8px 0;font-size:16px;cursor:pointer;transition:background .15s ease,transform .05s ease,box-shadow .15s ease}.operator-button:hover{background:#1e40afe6;box-shadow:0 0 0 1px #818cf8cc}.operator-button:active{transform:translateY(1px);box-shadow:none}.app-footer{margin-top:8px;display:flex;align-items:center;justify-content:space-between;gap:8px}.primary-button,.secondary-button,.ghost-button{border-radius:999px;padding:8px 12px;font-size:14px;border:none;cursor:pointer;transition:background .15s ease,box-shadow .15s ease,transform .05s ease,opacity .15s ease}.primary-button{flex:1.2;background:linear-gradient(135deg,#22c55e,#16a34a);color:#022c22;font-weight:600;box-shadow:0 10px 30px #16a34a99}.primary-button:hover{background:linear-gradient(135deg,#4ade80,#22c55e)}.primary-button:active{transform:translateY(1px);box-shadow:0 4px 12px #16a34ab3}.secondary-button{padding-inline:10px;background:#0f172ae6;color:#e5e7eb;border:1px solid rgba(148,163,184,.7)}.secondary-button:hover{background:#1e40afe6;box-shadow:0 0 0 1px #818cf8cc}.ghost-button{background:transparent;color:#e5e7eb;border:1px dashed rgba(148,163,184,.8);white-space:nowrap}.ghost-button:hover{background:#0f172acc}.ghost-button:disabled{opacity:.45;cursor:default}.timer{display:flex;flex-direction:column;align-items:flex-end;gap:2px;font-size:11px}.timer-label{opacity:.7}.timer-value{font-variant-numeric:tabular-nums;font-weight:600}.timer-danger .timer-value{color:#f97316}.score-panel{display:flex;justify-content:space-between;gap:8px;margin-bottom:4px}.score-item{flex:1;padding:6px 8px;border-radius:999px;background:#0f172ad9;border:1px solid rgba(30,64,175,.8)}.score-label{font-size:10px;opacity:.75}.score-value{font-size:16px;font-weight:600}.expression-message{margin-top:4px;font-size:12px;color:#facc15}.overlay{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0f172abf}.overlay-card{position:relative;z-index:1;width:90%;max-width:360px;background:#0f172afa;border-radius:20px;padding:20px 18px 16px;box-shadow:0 24px 60px #000000a6;display:flex;flex-direction:column;gap:12px}.overlay-title{font-size:18px;font-weight:700;margin-bottom:4px}.overlay-body{font-size:14px;display:flex;flex-direction:column;gap:2px}.game-grid{margin-top:4px;display:grid;grid-template-columns:1fr;gap:8px}@media(min-width:480px){.game-grid{grid-template-columns:repeat(2,1fr);gap:10px}}@media(min-width:768px){.game-grid{grid-template-columns:repeat(3,1fr);gap:12px}}.game-card{all:unset;cursor:pointer;border-radius:10px;padding:12px;background:linear-gradient(135deg,#1e3a8ad9,#0f172ae6);box-shadow:0 2px 10px #0000004d;display:flex;flex-direction:column;gap:6px;position:relative;overflow:hidden;min-height:100px}@media(min-width:480px){.game-card{border-radius:12px;padding:14px;min-height:120px}}@media(min-width:768px){.game-card{border-radius:14px;padding:16px;box-shadow:0 4px 20px #00000059;min-height:140px}}.game-card--has-bg{background-size:cover;background-position:center}.game-card--has-bg:after{content:"";position:absolute;inset:0;background:linear-gradient(135deg,#020617e0,#020617b3 55%,#020617d9);pointer-events:none}.game-card--ready.game-card--has-bg:after{background:linear-gradient(135deg,#020617b3,#02061766 55%,#020617a6)}.game-card>*{position:relative;z-index:1}.game-card:focus-visible{outline:2px solid #22c55e;outline-offset:2px}.game-card:disabled{cursor:default;opacity:.65}.game-card-header{display:flex;justify-content:space-between;align-items:center;gap:8px}.game-card-title{font-size:20px;font-weight:700;line-height:1.4;min-height:2em;overflow:hidden;text-overflow:ellipsis}@media(min-width:480px){.game-card-title{font-size:24px}}.game-card-subtitle{font-size:12px;opacity:.85;line-height:1.4}@media(min-width:480px){.game-card-subtitle{font-size:13px;opacity:.9}}.game-card-tags{margin-top:6px;display:flex;flex-wrap:wrap;gap:4px}.game-card-tag{font-size:10px;padding:3px 8px;border-radius:999px;background:#0f172ab3;line-height:1.2}@media(min-width:480px){.game-card-tag{font-size:11px;padding:2px 8px;background:#0f172acc}}.game-card-badge{position:absolute;bottom:10px;right:10px;font-size:11px;padding:4px 10px;border-radius:999px;font-weight:500;z-index:5}.badge-ready{background:#16a34ae6;color:#022c22}.badge-planned{background:#1e40afd9;color:#e5e7eb}.game-card--footer-placeholder{background:linear-gradient(135deg,#3341558c,#0f172aeb);border:1px dashed rgba(148,163,184,.45);box-shadow:0 8px 24px #0f172a73}.game-card--footer-placeholder .game-card-title{font-size:14px;font-weight:500;line-height:1.45;flex:1;text-align:left}.game-card--footer-placeholder:disabled{opacity:.92;cursor:default}.badge-footer{background:#475569e6;color:#e2e8f0;flex-shrink:0}.ttt-section{display:flex;flex-direction:column;gap:12px}.ttt-status{font-size:14px;opacity:.95;text-align:center}.ttt-board{width:100%;aspect-ratio:1 / 1;position:relative;border-radius:18px;background:#0f172aa6;box-shadow:inset 0 0 0 1px #94a3b859,0 10px 35px #00000040;overflow:hidden}.ttt-line{position:absolute;background:#94a3b8e6;border-radius:999px;box-shadow:0 2px #02061740;pointer-events:none}.ttt-line--v1{left:calc(33.333% - 1px);top:10%;bottom:10%;width:2px;transform:rotate(-.6deg);opacity:.95}.ttt-line--v2{left:calc(66.666% - 1px);top:10%;bottom:10%;width:2px;transform:rotate(.6deg);opacity:.95}.ttt-line--h1{top:calc(33.333% - 1px);left:10%;right:10%;height:2px;transform:rotate(.6deg);opacity:.95}.ttt-line--h2{top:calc(66.666% - 1px);left:10%;right:10%;height:2px;transform:rotate(-.6deg);opacity:.95}.ttt-piece{position:absolute;transform:translate(-50%,-50%);font-size:44px;font-weight:900;line-height:1;text-shadow:0 10px 26px rgba(0,0,0,.35);pointer-events:none;-webkit-user-select:none;user-select:none}.ttt-piece--X{color:#fb7185}.ttt-piece--O{color:#60a5fa}.ttt-actions{display:flex;gap:10px}.ttt-hint{font-size:12px;opacity:.8;line-height:1.6}.g2048-section{display:flex;flex-direction:column;gap:12px}.g2048-status{font-size:14px;opacity:.95;text-align:center;line-height:1.6}.g2048-board{position:relative;width:100%;aspect-ratio:1 / 1;padding:12px;border-radius:18px;background:#0f172a8c;box-shadow:inset 0 0 0 1px #94a3b840,0 12px 40px #00000040;touch-action:none;-webkit-user-select:none;user-select:none}.g2048-grid-bg,.g2048-tile-layer{position:absolute;inset:12px;display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(4,1fr);gap:10px}.g2048-cell-bg{border-radius:14px;background:#0f172a8c;box-shadow:inset 0 0 0 1px #ffffff08}.g2048-tile-layer{pointer-events:none;z-index:1}.g2048-tile{width:100%;height:100%;min-width:0;min-height:0;display:flex;align-items:stretch;justify-content:stretch;will-change:transform}.g2048-tile-face{flex:1;border-radius:14px;display:flex;align-items:center;justify-content:center;box-shadow:inset 0 0 0 1px #ffffff0f}.g2048-tile-value{font-weight:900;letter-spacing:.02em;text-shadow:0 10px 26px rgba(0,0,0,.25);font-variant-numeric:tabular-nums;line-height:1}@keyframes g2048-tile-spawn{0%{transform:scale(.55);opacity:.75}to{transform:scale(1);opacity:1}}@keyframes g2048-tile-merge{0%{transform:scale(1.12)}to{transform:scale(1)}}.g2048-tile--spawn .g2048-tile-face{animation:g2048-tile-spawn .2s cubic-bezier(.34,1.2,.64,1) both}.g2048-tile--merge .g2048-tile-face{animation:g2048-tile-merge .18s cubic-bezier(.34,1.2,.64,1) both}.g2048-score-summary{margin-top:2px}.g2048-actions{display:flex;gap:10px;align-items:center}.g2048-actions>button{flex:1}.g2048-dir-buttons{display:grid;--dir-size: clamp(44px, 12vw, 56px);grid-template-columns:repeat(3,var(--dir-size));grid-template-rows:repeat(3,var(--dir-size));gap:10px;justify-content:center;align-items:center}.g2048-dir-button{border-radius:14px;border:1px solid rgba(148,163,184,.35);background:#0f172ad9;color:#e5e7eb;padding:0;width:100%;height:100%;font-size:20px;cursor:pointer;transition:transform .05s ease,background .15s ease,box-shadow .15s ease,opacity .15s ease;display:flex;align-items:center;justify-content:center;line-height:1;box-sizing:border-box}.g2048-dir-button:hover{background:#1e40af8c;box-shadow:0 0 0 1px #818cf899}.g2048-dir-button:active{transform:translateY(1px)}.g2048-dir-button:disabled{opacity:.45;cursor:default;box-shadow:none}.g2048-dir-button--up{grid-column:2;grid-row:1}.g2048-dir-button--left{grid-column:1;grid-row:2}.g2048-dir-button--right{grid-column:3;grid-row:2}.g2048-dir-button--down{grid-column:2;grid-row:3}.guess-round{width:72px;text-align:right;font-size:11px;opacity:.85;font-variant-numeric:tabular-nums}.guess-rules-list{margin:0;padding-left:1.15em;font-size:14px;line-height:1.65;opacity:.95}.guess-rules-list li{margin-bottom:8px}.guess-rules-list li:last-child{margin-bottom:0}.guess-history{max-height:170px;overflow-y:auto;border-radius:10px;background:#0f172ac7;border:1px solid rgba(148,163,184,.28);padding:8px 10px;display:flex;flex-direction:column;gap:6px}.guess-history-empty{font-size:13px;opacity:.75;line-height:1.6}.guess-history-row{display:flex;align-items:center;justify-content:space-between;font-variant-numeric:tabular-nums;font-size:14px}.guess-input-section{display:flex;flex-direction:column;gap:8px}.guess-input-slots{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.guess-input-slot{height:50px;border-radius:12px;border:1px solid rgba(148,163,184,.55);background:#0f172ae0;display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:700;font-variant-numeric:tabular-nums}.guess-keypad{display:flex;flex-direction:column;gap:8px}.guess-keypad-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.guess-key{border-radius:12px;border:1px solid rgba(148,163,184,.5);background:#0f172ae6;color:#e5e7eb;min-height:48px;font-size:18px;font-weight:700;cursor:pointer;transition:background .15s ease,box-shadow .15s ease,transform .05s ease,opacity .15s ease}.guess-key:hover{background:#1e40afb3;box-shadow:0 0 0 1px #818cf899}.guess-key:active{transform:translateY(1px)}.guess-key:disabled{opacity:.45;cursor:default;box-shadow:none}.guess-key--func{font-size:14px}.category-nav-section{padding:0 0 4px}.category-nav{display:flex;gap:8px;overflow-x:auto;padding:4px 0;scrollbar-width:none;-ms-overflow-style:none}.category-nav::-webkit-scrollbar{display:none}.category-nav-item{flex-shrink:0;padding:8px 16px;border-radius:20px;border:1px solid rgba(255,255,255,.15);color:#ffffffe6;font-size:13px;font-weight:500;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);white-space:nowrap;background:linear-gradient(180deg,#1e293be6,#0f172af2);box-shadow:0 2px 8px #0000004d,inset 0 1px #ffffff1a;position:relative;overflow:hidden}@media(min-width:640px){.category-nav-item{padding:10px 20px;font-size:14px;border-radius:24px}}.category-nav-item--all{background:linear-gradient(180deg,#3b82f659,#1e3a8a80);border-color:#60a5fa4d}.category-nav-item--益智{background:linear-gradient(180deg,#8b5cf659,#4c1d9580);border-color:#a78bfa4d}.category-nav-item--策略{background:linear-gradient(180deg,#06b6d459,#155e7580);border-color:#22d3ee4d}.category-nav-item--休闲{background:linear-gradient(180deg,#6366f159,#312e8180);border-color:#818cf84d}.category-nav-item--多人{background:linear-gradient(180deg,#4f46e559,#3730a380);border-color:#818cf84d}.category-nav-item:hover{transform:translateY(-2px);box-shadow:0 4px 16px #0006,inset 0 1px #fff3}.category-nav-item--all:hover{background:linear-gradient(180deg,#3b82f680,#2563ebb3);border-color:#60a5fa80}.category-nav-item--益智:hover{background:linear-gradient(180deg,#8b5cf680,#7c3aedb3);border-color:#a78bfa80}.category-nav-item--策略:hover{background:linear-gradient(180deg,#06b6d480,#0891b2b3);border-color:#22d3ee80}.category-nav-item--休闲:hover{background:linear-gradient(180deg,#6366f180,#4f46e5b3);border-color:#818cf880}.category-nav-item--多人:hover{background:linear-gradient(180deg,#4f46e580,#4338cab3);border-color:#818cf880}.category-nav-item--active{font-weight:600;box-shadow:0 4px 20px #0006,inset 0 1px #ffffff4d}.category-nav-item--active.category-nav-item--all{background:linear-gradient(180deg,#60a5fae6,#2563ebf2);border-color:#93c5fd99;color:#fff}.category-nav-item--active.category-nav-item--益智{background:linear-gradient(180deg,#a78bfae6,#7c3aedf2);border-color:#c4b5fd99;color:#fff}.category-nav-item--active.category-nav-item--策略{background:linear-gradient(180deg,#22d3eee6,#0891b2f2);border-color:#67e8f999;color:#0c4a6e}.category-nav-item--active.category-nav-item--休闲{background:linear-gradient(180deg,#818cf8e6,#4f46e5f2);border-color:#a5b4fc99;color:#fff}.category-nav-item--active.category-nav-item--多人{background:linear-gradient(180deg,#818cf8e6,#4338caf2);border-color:#a5b4fc99;color:#fff}.category-nav-item--active:hover{transform:translateY(-2px);filter:brightness(1.1)}.games-section{display:flex;flex-direction:column;gap:12px}.empty-games-message{padding:40px 20px;text-align:center;font-size:14px;opacity:.75;background:#0f172a80;border-radius:12px;border:1px dashed rgba(148,163,184,.3)}.sudoku-game{display:flex;flex-direction:column;gap:8px;width:100%}.sudoku-loading{text-align:center;padding:40px;font-size:16px;opacity:.8}.sudoku-header{display:flex;justify-content:space-between;align-items:center;padding:4px 8px}.sudoku-difficulty{font-size:16px;font-weight:600;color:#f8fafc}.sudoku-timer{display:flex;flex-direction:column;align-items:flex-end;gap:2px}.sudoku-timer-label{font-size:10px;opacity:.7}.sudoku-timer-value{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums;color:#4ade80}.sudoku-board{display:flex;flex-direction:column;background:#fff;border-radius:4px;padding:0;box-shadow:0 2px 10px #0000001a;border:1px solid #374151;width:100%}.sudoku-row{display:flex}.sudoku-cell{flex:1;aspect-ratio:1;border:.5px solid #d1d5db;background:#fff;color:#111827;font-size:clamp(18px,5vw,28px);font-weight:600;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .1s ease;padding:0;margin:0;min-height:0}.sudoku-cell:hover:not(:disabled){background:#f3f4f6}.sudoku-cell--selected{box-shadow:inset 0 0 0 2px #22c55e;background:#dcfce7!important}.sudoku-cell--same-number{box-shadow:inset 0 0 0 2px #3b82f6}.sudoku-cell--selected.sudoku-cell--same-number{box-shadow:inset 0 0 0 2px #22c55e}.sudoku-cell--highlight-row,.sudoku-cell--highlight-col,.sudoku-cell--highlight-box{background:#f0fdf4}.sudoku-cell--highlight-row.sudoku-cell--user,.sudoku-cell--highlight-col.sudoku-cell--user,.sudoku-cell--highlight-box.sudoku-cell--user{background:#dcfce7}.sudoku-cell--highlight-row.sudoku-cell--initial,.sudoku-cell--highlight-col.sudoku-cell--initial,.sudoku-cell--highlight-box.sudoku-cell--initial{background:#f0fdf4}.sudoku-cell--initial{background:#fff;color:#000;font-weight:700}.sudoku-cell--user{background:#fff;color:#16a34a}.sudoku-cell--hint{background:#fff;color:#15803d;font-weight:700}.sudoku-cell--candidate{background:#fff;color:#ca8a04}.sudoku-cell--error{background:#fff;color:#dc2626}.sudoku-cell--readonly{cursor:default}.sudoku-cell--box-right{border-right-width:1.5px;border-right-color:#374151}.sudoku-cell--box-bottom{border-bottom-width:1.5px;border-bottom-color:#374151}.sudoku-cell--duplicate{background:#ef4444!important;color:#fff!important;box-shadow:inset 0 0 0 2px #dc2626;animation:sudoku-duplicate-pulse 1s ease-in-out infinite}@keyframes sudoku-duplicate-pulse{0%,to{box-shadow:inset 0 0 0 2px #dc2626}50%{box-shadow:inset 0 0 0 4px #b91c1c}}.sudoku-keypad{display:flex;flex-direction:column;gap:6px;width:100%}.sudoku-keypad-numbers{display:grid;grid-template-columns:repeat(9,1fr);gap:4px;width:100%}.sudoku-key{border-radius:4px;border:1px solid rgba(148,163,184,.4);background:#0f172ae6;color:#e5e7eb;aspect-ratio:1;font-size:clamp(14px,4vw,20px);font-weight:600;cursor:pointer;transition:all .15s ease;padding:0}.sudoku-key:hover{background:#1e40afb3;box-shadow:0 0 0 1px #818cf899}.sudoku-key:active{transform:translateY(1px)}.sudoku-key--candidate{background:#facc1540;border-color:#facc1580;color:#facc15}.sudoku-key--candidate:hover{background:#facc1566}.sudoku-keypad-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px;width:100%}.sudoku-key--action{aspect-ratio:auto;padding:10px 4px;font-size:clamp(12px,3.5vw,14px);background:#475569e6;border-radius:4px;width:100%}.sudoku-key--reset{background:#ef4444cc;border-color:#ef444499}.sudoku-key--reset:hover{background:#ef4444e6}.sudoku-key--used{background:#47556980;border-color:#64748b66;color:#64748b;cursor:not-allowed}.sudoku-key--used:hover{background:#47556980;box-shadow:none}.sudoku-key{display:flex;align-items:center;justify-content:center;position:relative;padding:0;overflow:hidden}.sudoku-key-bg-grid{position:absolute;inset:2px;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);gap:1px;z-index:0}.sudoku-bg-cell{background:#ffffff1a;border-radius:1px;width:100%;height:100%}.sudoku-bg-cell--filled{background:#22c55e99}.sudoku-key--candidate .sudoku-bg-cell{background:#ffffff26}.sudoku-key--candidate .sudoku-bg-cell--filled{background:#22c55eb3}.sudoku-key--used .sudoku-bg-cell{background:#64748b33}.sudoku-key--used .sudoku-bg-cell--filled{background:#64748b66}.sudoku-key-text{position:relative;z-index:1;font-size:20px;font-weight:700;color:#f8fafc;text-shadow:0 1px 2px rgba(0,0,0,.5)}.sudoku-key--used .sudoku-key-text{color:#64748b;text-shadow:none}.sudoku-controls{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;width:100%}.sudoku-control-btn{border-radius:6px;border:1px solid rgba(148,163,184,.4);background:#0f172ae6;color:#e5e7eb;padding:10px 4px;font-size:clamp(12px,3.5vw,14px);font-weight:500;cursor:pointer;transition:all .15s ease;white-space:nowrap}.sudoku-control-btn:hover:not(:disabled){background:#1e40afb3;box-shadow:0 0 0 1px #818cf899}.sudoku-control-btn:active:not(:disabled){transform:translateY(1px)}.sudoku-control-btn:disabled{opacity:.4;cursor:not-allowed}.sudoku-control-btn--candidate{background:#facc1540;border-color:#facc1580;color:#facc15}.sudoku-control-btn--candidate:hover{background:#facc1566}.sudoku-control-btn--confirm{background:#22c55e4d;border-color:#22c55e99;color:#4ade80}.sudoku-control-btn--confirm:hover{background:#22c55e80}.sudoku-control-btn--status{background:#facc1533;border-color:#facc1566;color:#facc15;cursor:default}.sudoku-control-btn--cancel{background:#ef44444d;border-color:#ef444499;color:#f87171}.sudoku-control-btn--cancel:hover{background:#ef444480}.sudoku-difficulty-list{display:flex;flex-direction:column;gap:12px}.sudoku-difficulty-btn{all:unset;cursor:pointer;border-radius:12px;padding:16px;background:#0f172ae6;border:1px solid rgba(148,163,184,.3);transition:all .2s ease;text-align:left}.sudoku-difficulty-btn:hover{transform:translateY(-2px);box-shadow:0 8px 24px #0000004d}.sudoku-difficulty-btn--beginner{background:linear-gradient(135deg,#22c55e40,#0f172af2);border-color:#22c55e66}.sudoku-difficulty-btn--beginner:hover{border-color:#22c55eb3}.sudoku-difficulty-btn--normal{background:linear-gradient(135deg,#3b82f640,#0f172af2);border-color:#3b82f666}.sudoku-difficulty-btn--normal:hover{border-color:#3b82f6b3}.sudoku-difficulty-btn--expert{background:linear-gradient(135deg,#ef444440,#0f172af2);border-color:#ef444466}.sudoku-difficulty-btn--expert:hover{border-color:#ef4444b3}.sudoku-difficulty-title{font-size:18px;font-weight:700;margin-bottom:6px;display:flex;align-items:center;gap:8px}.sudoku-continue-badge{font-size:11px;padding:2px 8px;border-radius:999px;background:#facc15e6;color:#0f172a;font-weight:600}.sudoku-difficulty-desc{font-size:13px;opacity:.85;line-height:1.5}.sudoku-rules-list{margin:0;padding-left:1.2em;font-size:13px;line-height:1.8;opacity:.95}.sudoku-rules-list li{margin-bottom:6px}.sudoku-win-actions{display:flex;gap:10px;margin-top:8px}.sudoku-win-actions button{flex:1}.sudoku-card{padding:8px;width:100%;max-width:100%}.sudoku-card .app-main{padding:0;gap:8px}.sudoku-card .sudoku-game{gap:8px}.sudoku-card .sudoku-header{padding:4px 8px}.sudoku-card .sudoku-keypad,.sudoku-card .sudoku-controls{gap:6px}.page-loader{display:flex;align-items:center;justify-content:center;min-height:100vh;flex-direction:column;gap:16px}.page-loader-spinner{width:48px;height:48px;border:3px solid rgba(16,185,129,.2);border-top-color:#10b981e6;border-radius:50%;animation:page-loader-spin 1s linear infinite}@keyframes page-loader-spin{to{transform:rotate(360deg)}}.page-loader-text{font-size:14px;opacity:.8}.memory-game{display:flex;flex-direction:column;gap:16px}.memory-top-bar{height:80px;display:flex;align-items:center;justify-content:center}.memory-top-bar .memory-status,.memory-top-bar .memory-phase-indicator,.memory-top-bar .memory-start-section{width:100%}.memory-hint-text{text-align:center;opacity:.8;margin-bottom:8px;font-size:13px}.memory-start-btn{min-width:120px}.memory-status{display:flex;justify-content:center;gap:24px;padding:12px 16px;background:#0f172a99;border-radius:12px}.memory-stat{display:flex;flex-direction:column;align-items:center;gap:4px}.memory-stat-label{font-size:11px;opacity:.7}.memory-stat-value{font-size:20px;font-weight:700;font-variant-numeric:tabular-nums;color:#4ade80}.memory-stat--urgent .memory-stat-value{color:#f87171;animation:memory-urgent-pulse .5s ease-in-out infinite}@keyframes memory-urgent-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.memory-phase-indicator{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;height:64px;background:#3b82f633;border-radius:12px;border:1px solid rgba(59,130,246,.4)}.memory-phase-text{font-size:14px;font-weight:600;color:#60a5fa}.memory-timer{font-size:28px;font-weight:700;font-variant-numeric:tabular-nums;color:#4ade80;line-height:1}.memory-timer--urgent{color:#f87171;animation:memory-timer-urgent .5s ease-in-out infinite}@keyframes memory-timer-urgent{0%,to{opacity:1}50%{opacity:.5}}.memory-start-section{display:flex;flex-direction:column;align-items:center;justify-content:center;height:64px}.memory-board-container{flex:1;display:flex;align-items:flex-start;justify-content:center;min-height:400px}.memory-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;padding:12px;background:#0f172a99;border-radius:16px;transition:opacity .3s ease;width:100%;max-width:400px}.memory-grid--flash{opacity:.3}.memory-card{all:unset;aspect-ratio:3 / 4;cursor:pointer;perspective:1000px}.memory-card:disabled{cursor:default}.memory-card-inner{position:relative;width:100%;height:100%;transform-style:preserve-3d;transition:transform .4s ease}.memory-card--flipped .memory-card-inner{transform:rotateY(180deg)}.memory-card-front,.memory-card-back{position:absolute;inset:0;backface-visibility:hidden;border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:0 4px 12px #0000004d}.memory-card-front{background:linear-gradient(135deg,#1e3a5f,#0f172a);border:2px solid rgba(148,163,184,.3)}.memory-card-front:before{content:"";position:absolute;inset:6px;border:1px dashed rgba(148,163,184,.3);border-radius:6px}.memory-card-symbol{font-size:28px;font-weight:700;color:#94a3b8cc}.memory-card-back{transform:rotateY(180deg);background:linear-gradient(135deg,#f8fafc,#e2e8f0);border:2px solid rgba(0,0,0,.1);gap:4px}.memory-card-back--red{color:#dc2626}.memory-card-back--black{color:#1f2937}.memory-card-value{font-size:20px;font-weight:700;line-height:1}.memory-card-suit{font-size:24px;line-height:1}.memory-card--matched .memory-card-back{background:linear-gradient(135deg,#4ade80,#22c55e);color:#fff;animation:memory-matched .5s ease}@keyframes memory-matched{0%{transform:rotateY(180deg) scale(1)}50%{transform:rotateY(180deg) scale(1.1)}to{transform:rotateY(180deg) scale(1)}}.home-footer{text-align:center;padding:16px 0 8px;margin-top:auto}.beian-link{font-size:12px;color:#94a3b8b3;text-decoration:none;transition:color .2s ease}.beian-link:hover{color:#94a3b8;text-decoration:underline}.beian-divider{font-size:12px;color:#94a3b8b3;margin:0 6px}.skyscraper-game{display:flex;flex-direction:column;gap:12px;width:100%}.skyscraper-loading{text-align:center;padding:40px;font-size:16px;opacity:.8}.skyscraper-header{display:flex;justify-content:space-between;align-items:center;padding:4px 8px}.skyscraper-difficulty{font-size:16px;font-weight:600;color:#f8fafc}.skyscraper-board-wrapper{width:100%;display:flex;justify-content:center}.skyscraper-board{display:flex;flex-direction:column;background:#fff;border-radius:8px;padding:0;box-shadow:0 4px 20px #0003;border:2px solid #374151;width:100%;max-width:min(500px,calc(100vw - 16px))}.skyscraper-clues-top,.skyscraper-clues-bottom{display:flex;justify-content:center;padding:4px 0;gap:1px}.skyscraper-clues-top .skyscraper-clue,.skyscraper-clues-bottom .skyscraper-clue{width:var(--cell-size);min-width:0;text-align:center;font-size:clamp(11px,2.5vw,15px);font-weight:700;color:#111827;flex-shrink:0}.skyscraper-main{display:flex;justify-content:center;gap:1px}.skyscraper-clues-left,.skyscraper-clues-right{display:flex;flex-direction:column;gap:1px}.skyscraper-clues-left .skyscraper-clue,.skyscraper-clues-right .skyscraper-clue{height:var(--cell-size);min-height:0;width:24px;display:flex;align-items:center;justify-content:center;font-size:clamp(11px,2.5vw,15px);font-weight:700;color:#111827;flex-shrink:0}.skyscraper-grid{display:grid;grid-template-columns:repeat(var(--size),var(--cell-size));grid-template-rows:repeat(var(--size),var(--cell-size));gap:1px;background:#374151;width:var(--grid-size);height:var(--grid-size)}.skyscraper-cell{background:#fff;border:none;color:#111827;font-size:clamp(18px,4vw,24px);font-weight:700;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .1s ease;padding:0;margin:0}.skyscraper-cell:hover:not(:disabled){background:#f3f4f6}.skyscraper-cell--selected{box-shadow:inset 0 0 0 2px #22c55e;background:#dcfce7!important}.skyscraper-cell--user{background:#fff;color:#16a34a}.skyscraper-cell--hint{background:#fff;color:#15803d;font-weight:700}.skyscraper-cell--error{background:#fff;color:#dc2626}.skyscraper-cell--duplicate{box-shadow:inset 0 0 0 3px #ef4444!important;animation:skyscraper-duplicate-pulse 1s ease-in-out infinite}.skyscraper-cell--same-number{box-shadow:inset 0 0 0 2px #22c55e}.skyscraper-cell--row-col-duplicate{box-shadow:inset 0 0 0 2px #ef4444}.skyscraper-cell--readonly{cursor:default}@keyframes skyscraper-duplicate-pulse{0%,to{box-shadow:inset 0 0 0 3px #ef4444}50%{box-shadow:inset 0 0 0 3px #dc2626}}.skyscraper-keypad{display:flex;flex-direction:column;gap:8px;width:100%;max-width:500px;margin:0 auto}.skyscraper-keypad-numbers{display:grid;grid-template-columns:repeat(auto-fit,minmax(44px,1fr));gap:6px;width:100%}.skyscraper-key{border-radius:8px;border:1px solid rgba(148,163,184,.4);background:#0f172ae6;color:#e5e7eb;aspect-ratio:1;font-size:clamp(16px,4vw,22px);font-weight:700;cursor:pointer;transition:all .15s ease;padding:0;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}.skyscraper-key:hover:not(:disabled){background:#1e40afb3;box-shadow:0 0 0 1px #818cf899}.skyscraper-key:active:not(:disabled){transform:translateY(1px)}.skyscraper-key--used{background:#47556980;border-color:#64748b66;color:#64748b;cursor:not-allowed}.skyscraper-key--used:hover{background:#47556980;box-shadow:none}.skyscraper-key-text{position:relative;z-index:1}.skyscraper-key-bg-grid{position:absolute;inset:2px;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(2,1fr);gap:1px;z-index:0}.skyscraper-bg-cell{background:#ffffff1a;border-radius:1px}.skyscraper-bg-cell--filled{background:#22c55e99}.skyscraper-key--used .skyscraper-bg-cell{background:#64748b33}.skyscraper-key--used .skyscraper-bg-cell--filled{background:#64748b66}.skyscraper-key--clear{width:100%;aspect-ratio:auto;padding:12px;font-size:14px;background:#475569e6;border-radius:8px}.skyscraper-controls{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;width:100%;max-width:500px;margin:0 auto}.skyscraper-control-btn{border-radius:8px;border:1px solid rgba(148,163,184,.4);background:#0f172ae6;color:#e5e7eb;padding:12px 8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .15s ease}.skyscraper-control-btn:hover:not(:disabled){background:#1e40afb3;box-shadow:0 0 0 1px #818cf899}.skyscraper-control-btn:active:not(:disabled){transform:translateY(1px)}.skyscraper-control-btn:disabled{opacity:.4;cursor:not-allowed}.skyscraper-win-actions{display:flex;gap:10px;margin-top:8px}.skyscraper-win-actions button{flex:1}.skyscraper-fireworks{position:fixed;inset:0;pointer-events:none;z-index:100}.firework{position:absolute;width:8px;height:8px;border-radius:50%;animation:firework-burst 1.5s ease-out forwards}.firework:before,.firework:after{content:"";position:absolute;width:100%;height:100%;border-radius:50%}.firework:nth-child(1){background:#f59e0b}.firework:nth-child(1):before{background:#ef4444;animation:firework-ray 1.5s ease-out forwards}.firework:nth-child(1):after{background:#22c55e;animation:firework-ray 1.5s ease-out .1s forwards}.firework:nth-child(2){background:#8b5cf6}.firework:nth-child(2):before{background:#ec4899;animation:firework-ray 1.5s ease-out .2s forwards}.firework:nth-child(2):after{background:#3b82f6;animation:firework-ray 1.5s ease-out .3s forwards}.firework:nth-child(3){background:#f97316}.firework:nth-child(3):before{background:#eab308;animation:firework-ray 1.5s ease-out .1s forwards}.firework:nth-child(3):after{background:#10b981;animation:firework-ray 1.5s ease-out .4s forwards}.firework:nth-child(4){background:#06b6d4}.firework:nth-child(4):before{background:#8b5cf6;animation:firework-ray 1.5s ease-out .3s forwards}.firework:nth-child(4):after{background:#f43f5e;animation:firework-ray 1.5s ease-out .2s forwards}.firework:nth-child(5){background:#84cc16}.firework:nth-child(5):before{background:#f59e0b;animation:firework-ray 1.5s ease-out .4s forwards}.firework:nth-child(5):after{background:#6366f1;animation:firework-ray 1.5s ease-out .1s forwards}.firework:nth-child(6){background:#ec4899}.firework:nth-child(6):before{background:#14b8a6;animation:firework-ray 1.5s ease-out .2s forwards}.firework:nth-child(6):after{background:#f97316;animation:firework-ray 1.5s ease-out .3s forwards}.firework:nth-child(7){background:#3b82f6}.firework:nth-child(7):before{background:#84cc16;animation:firework-ray 1.5s ease-out .1s forwards}.firework:nth-child(7):after{background:#8b5cf6;animation:firework-ray 1.5s ease-out .4s forwards}@keyframes firework-burst{0%{transform:scale(0);opacity:1}50%{transform:scale(1);opacity:1}to{transform:scale(1.5);opacity:0}}@keyframes firework-ray{0%{transform:scale(1) translate(0);opacity:1}to{transform:scale(1) translate(var(--tx, 30px),var(--ty, -30px));opacity:0}}.firework:nth-child(1):before{--tx: 25px;--ty: -35px}.firework:nth-child(1):after{--tx: -30px;--ty: -25px}.firework:nth-child(2):before{--tx: 35px;--ty: 20px}.firework:nth-child(2):after{--tx: -25px;--ty: 30px}.firework:nth-child(3):before{--tx: 20px;--ty: -40px}.firework:nth-child(3):after{--tx: -35px;--ty: 15px}.firework:nth-child(4):before{--tx: 30px;--ty: 25px}.firework:nth-child(4):after{--tx: -20px;--ty: -30px}.firework:nth-child(5):before{--tx: -25px;--ty: 35px}.firework:nth-child(5):after{--tx: 40px;--ty: -15px}.firework:nth-child(6):before{--tx: 15px;--ty: -30px}.firework:nth-child(6):after{--tx: -40px;--ty: -20px}.firework:nth-child(7):before{--tx: 30px;--ty: 35px}.firework:nth-child(7):after{--tx: -15px;--ty: -40px}.skyscraper-difficulty-list{display:flex;flex-direction:column;gap:12px}.skyscraper-difficulty-btn{all:unset;cursor:pointer;border-radius:12px;padding:16px;background:#0f172ae6;border:1px solid rgba(148,163,184,.3);transition:all .2s ease;text-align:left}.skyscraper-difficulty-btn:hover{transform:translateY(-2px);box-shadow:0 8px 24px #0000004d}.skyscraper-difficulty-btn--easy{background:linear-gradient(135deg,#22c55e40,#0f172af2);border-color:#22c55e66}.skyscraper-difficulty-btn--easy:hover{border-color:#22c55eb3}.skyscraper-difficulty-btn--normal{background:linear-gradient(135deg,#3b82f640,#0f172af2);border-color:#3b82f666}.skyscraper-difficulty-btn--normal:hover{border-color:#3b82f6b3}.skyscraper-difficulty-btn--hard{background:linear-gradient(135deg,#ef444440,#0f172af2);border-color:#ef444466}.skyscraper-difficulty-btn--hard:hover{border-color:#ef4444b3}.skyscraper-difficulty-title{font-size:18px;font-weight:700;margin-bottom:6px;display:flex;align-items:center;gap:8px}.skyscraper-difficulty-desc{font-size:13px;opacity:.85;line-height:1.5}.skyscraper-rules-list{margin:0;padding-left:1.2em;font-size:13px;line-height:1.8;opacity:.95}.skyscraper-rules-list li{margin-bottom:6px}.skyscraper-card{padding:8px;width:100%;max-width:100%}.skyscraper-card .app-main{padding:0;gap:8px}.skyscraper-card .skyscraper-game{gap:12px}.skyscraper-card .skyscraper-header{padding:4px 8px}.header-user{display:flex;align-items:center;justify-content:flex-end;min-width:60px}.login-link{font-size:14px;color:#60a5fa;text-decoration:none;padding:6px 12px;border-radius:6px;background:#3b82f61a;transition:background .2s}.login-link:hover{background:#3b82f633}.user-widget{position:relative}.user-name{font-size:14px;color:#f8fafc;background:#ffffff14;border:none;border-radius:6px;padding:6px 12px;cursor:pointer;transition:background .2s}.user-name:hover{background:#ffffff24}.user-dropdown{position:absolute;top:calc(100% + 6px);right:0;background:#1e293b;border:1px solid #334155;border-radius:8px;padding:4px;min-width:120px;box-shadow:0 4px 12px #0000004d;z-index:100}.user-dropdown button{width:100%;text-align:left;padding:8px 12px;border-radius:6px;border:none;background:transparent;color:#f8fafc;font-size:14px;cursor:pointer}.user-dropdown button:hover{background:#ffffff14}.user-dropdown .dropdown-link{display:block;width:100%;text-align:left;padding:8px 12px;border-radius:6px;color:#f8fafc;font-size:14px;text-decoration:none;transition:background .2s}.user-dropdown .dropdown-link:hover{background:#ffffff14}.admin-badge-sm{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;background:#3b82f6;color:#fff;border-radius:50%;font-size:9px;font-weight:700;margin-left:4px;vertical-align:middle;border:1px solid #60a5fa}.avatar-img{width:32px;height:32px;border-radius:50%;object-fit:cover}.avatar-fallback{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:14px;font-weight:600}.dropdown-user-info{padding:8px 12px;font-size:13px;color:#94a3b8;border-bottom:1px solid #334155;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:160px}.avatar-img{width:32px;height:32px;border-radius:50%;object-fit:cover;background:#0a0a1a}.user-avatar-btn{background:none;border:none;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center}.dropdown-user-info{display:flex;align-items:center;gap:8px;padding:8px 12px;font-size:13px;color:#f8fafc;border-bottom:1px solid #334155;white-space:nowrap}.dropdown-user-info .avatar-img{width:40px;height:40px}.dropdown-user-info span{overflow:hidden;text-overflow:ellipsis;max-width:120px}.avatar-img-sm{width:32px;height:32px;border-radius:50%;object-fit:cover;background:#0a0a1a}.avatar-img-md{width:40px;height:40px;border-radius:50%;object-fit:cover;background:#0a0a1a}.avatar-img-lg{width:64px;height:64px;border-radius:50%;object-fit:cover;background:#0a0a1a}.game-favorite-btn{position:absolute;top:8px;right:8px;width:32px;height:32px;border-radius:50%;background:#00000080;border:none;color:#9ca3af;font-size:18px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:10;transition:all .2s;padding:0 0 2px}.game-favorite-btn:hover{background:#000000b3;transform:scale(1.1)}.game-favorite-btn.favorited{color:#f59e0b}.game-favorite-btn.favorited:hover{color:#fbbf24}.game-favorite-btn.loading{opacity:.6;cursor:not-allowed}.game-card{position:relative}.mahjong-card{padding:8px;width:100%;max-width:100%}.mahjong-card .app-main{padding:0;gap:8px}.mahjong-game{display:flex;flex-direction:column;gap:8px;width:100%}.mahjong-header{display:flex;justify-content:space-between;align-items:center;padding:4px 8px;flex-wrap:wrap;gap:8px}.mahjong-stats{display:flex;gap:12px}.mahjong-stat{display:flex;flex-direction:column;align-items:center;gap:2px}.mahjong-stat-label{font-size:10px;opacity:.7}.mahjong-stat-value{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums;color:#4ade80}.mahjong-title{font-size:16px;font-weight:600;color:#f8fafc}.mahjong-powerups{display:flex;gap:6px}.mahjong-powerup-btn{display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px 8px;border-radius:8px;border:1px solid rgba(148,163,184,.4);background:#0f172ae6;color:#e5e7eb;cursor:pointer;transition:all .15s ease;min-width:44px}.mahjong-powerup-btn:hover:not(:disabled){background:#1e40afb3;box-shadow:0 0 0 1px #818cf899}.mahjong-powerup-btn:active:not(:disabled){transform:translateY(1px)}.mahjong-powerup-btn:disabled{opacity:.4;cursor:not-allowed}.mahjong-powerup-btn.used{opacity:.5;background:#47556980}.mahjong-powerup-icon{font-size:16px}.mahjong-powerup-label{font-size:10px}.mahjong-message-container{height:36px;display:flex;align-items:center;justify-content:center;padding:6px 12px}.mahjong-message{text-align:center;padding:6px 16px;font-size:13px;color:#9ca3af;background:#0f172a99;border-radius:8px;border:1px solid rgba(148,163,184,.2);width:100%;transition:all .2s ease}.mahjong-message.active{color:#facc15;background:#facc1526;border-color:#facc1566}.mahjong-board-wrapper{display:flex;justify-content:center;align-items:center;overflow:auto;padding:8px;min-height:320px}.mahjong-board{position:relative;background:linear-gradient(145deg,#1a2a1a,#0d1a0d);border-radius:12px;padding:12px;box-shadow:inset 0 2px 10px #00000080,0 8px 32px #0006,0 0 0 1px #94a3b81a}.mahjong-tile{position:absolute;width:46px;height:58px;cursor:pointer;transition:transform .12s ease,filter .12s ease;transform-style:preserve-3d}.mahjong-tile:hover:not(.shuffling):not(.matched){transform:translateY(-4px) scale(1.02);filter:brightness(1.1)!important;z-index:1000!important}.mahjong-tile.shuffling{animation:mahjong-shuffle .6s ease-in-out}@keyframes mahjong-shuffle{0%{transform:scale(1) rotateY(0)}50%{transform:scale(.7) rotateY(180deg)}to{transform:scale(1) rotateY(360deg)}}.mahjong-tile-face{width:100%;height:100%;border-radius:6px;background:linear-gradient(160deg,#fafafa,#e8e8e8,#d4d4d4);position:relative;overflow:hidden;border:1px solid rgba(0,0,0,.1);box-sizing:border-box}.mahjong-tile-shine{position:absolute;top:0;left:0;right:0;height:40%;background:linear-gradient(to bottom,rgba(255,255,255,.5),transparent);border-radius:6px 6px 0 0;pointer-events:none}.mahjong-tile-body{position:absolute;inset:2px;display:flex;flex-direction:column;border-radius:4px;overflow:hidden;background:#fff}.mahjong-tile-top-bar,.mahjong-tile-bottom-bar{height:4px;width:100%}.mahjong-tile-content{flex:1;display:flex;align-items:center;justify-content:center;padding:2px}.mahjong-tile-main-text{font-size:18px;font-weight:700;text-align:center;line-height:1.1;text-shadow:0 1px 0 rgba(255,255,255,.8);font-family:Noto Sans SC,Microsoft YaHei,sans-serif}.mahjong-tile-baiban{width:70%;height:70%;border:2px solid #374151;border-radius:2px;background:#fff}.mahjong-tile-image{width:100%;height:100%;border-radius:6px;object-fit:contain;background:transparent}.mahjong-tile.selected .mahjong-tile-face{box-shadow:0 0 0 3px #22c55e,0 0 20px #22c55e80,0 6px 16px #00000059;transform:scale(1.05)}.mahjong-tile.hinted .mahjong-tile-face{animation:mahjong-hint-pulse .6s ease-in-out infinite}@keyframes mahjong-hint-pulse{0%,to{box-shadow:0 0 0 3px #facc15,0 0 15px #facc1580,0 4px 12px #0000004d}50%{box-shadow:0 0 0 5px #facc15,0 0 25px #facc15b3,0 6px 16px #0006}}.mahjong-tile.matched{pointer-events:none}.mahjong-tile.matched .mahjong-tile-face{opacity:.2;filter:grayscale(1)}.mahjong-controls{display:flex;gap:10px;justify-content:center;padding:8px}.mahjong-tile--wan .mahjong-tile-body{background:linear-gradient(180deg,#fff5f5,#fef2f2)}.mahjong-tile--tong .mahjong-tile-body{background:linear-gradient(180deg,#eff6ff,#dbeafe)}.mahjong-tile--tiao .mahjong-tile-body{background:linear-gradient(180deg,#f0fdf4,#dcfce7)}.mahjong-tile--feng .mahjong-tile-body{background:linear-gradient(180deg,#f5f3ff,#ede9fe)}.mahjong-tile--zi .mahjong-tile-body{background:linear-gradient(180deg,#f9fafb,#f3f4f6)}.challenge-map-container{display:flex;flex-direction:column;align-items:center;gap:16px;padding:16px}.challenge-map-svg-wrapper{background:#0f172acc;border-radius:16px;padding:16px;border:1px solid rgba(148,163,184,.3)}.challenge-map-svg{display:block}.challenge-map-svg circle{transition:all .2s ease}.challenge-map-svg g:hover circle{transform:scale(1.2);filter:brightness(1.2)}.challenge-map-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;padding:8px 16px;background:#0f172a99;border-radius:12px}.challenge-legend-item{display:flex;align-items:center;gap:6px;font-size:12px;opacity:.9}.challenge-legend-dot{width:12px;height:12px;border-radius:50%;border:1px solid rgba(255,255,255,.2)}
