/* ============== 通用 ============== */
.sggame-rules-box{background:#eff6ff;border-left:3px solid #6366f1;padding:10px 14px;border-radius:6px;font-size:13px;color:#334155;margin-bottom:14px;line-height:1.6}
.sggame-info{color:#64748b;font-size:13px}
.sggame-history-table{width:100%;border-collapse:collapse;margin-top:10px;font-size:13px}
.sggame-history-table th,.sggame-history-table td{padding:6px 10px;border-bottom:1px solid #f1f5f9;text-align:left}
.sggame-history-table th{background:#f8fafc;color:#64748b;font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:0.5px}
.sggame-empty{text-align:center;padding:30px;color:#94a3b8}
.sggame-btn.small{padding:5px 12px;font-size:12px}

/* ============== 汉诺塔 ============== */
.sggame-hanoi-toolbar{display:flex;gap:14px;align-items:center;margin-bottom:14px;flex-wrap:wrap}
.sggame-hanoi-stats{display:flex;gap:20px;background:#f8fafc;padding:10px 14px;border-radius:8px;font-size:14px;margin-bottom:14px}
.sggame-hanoi-stats b{color:#6366f1}
.sggame-hanoi-board{display:flex;justify-content:space-around;background:linear-gradient(180deg,#fef3c7 0%,#fed7aa 100%);height:280px;border-radius:12px;padding:20px 0;position:relative}
.sggame-hanoi-tower{flex:1;display:flex;flex-direction:column-reverse;align-items:center;cursor:pointer;position:relative;transition:all .2s}
.sggame-hanoi-tower:hover{background:rgba(255,255,255,0.2)}
.sggame-hanoi-tower.selected{background:rgba(99,102,241,0.15);box-shadow:inset 0 0 0 2px #6366f1}
.sggame-hanoi-pole{position:absolute;top:20px;bottom:30px;left:50%;width:4px;background:#78350f;transform:translateX(-50%);border-radius:2px;z-index:0}
.sggame-hanoi-base{position:absolute;bottom:20px;left:10%;right:10%;height:8px;background:#78350f;border-radius:4px}
.sggame-hanoi-disk{height:24px;background:linear-gradient(180deg,#6366f1,#4f46e5);border-radius:12px;color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;margin-bottom:2px;box-shadow:0 2px 4px rgba(0,0,0,0.2);z-index:1;position:relative}
.sggame-hanoi-disk[data-size="1"]{background:linear-gradient(180deg,#ef4444,#dc2626)}
.sggame-hanoi-disk[data-size="2"]{background:linear-gradient(180deg,#f59e0b,#d97706)}
.sggame-hanoi-disk[data-size="3"]{background:linear-gradient(180deg,#eab308,#ca8a04)}
.sggame-hanoi-disk[data-size="4"]{background:linear-gradient(180deg,#10b981,#059669)}
.sggame-hanoi-disk[data-size="5"]{background:linear-gradient(180deg,#06b6d4,#0891b2)}
.sggame-hanoi-disk[data-size="6"]{background:linear-gradient(180deg,#6366f1,#4f46e5)}
.sggame-hanoi-disk[data-size="7"]{background:linear-gradient(180deg,#a855f7,#9333ea)}

/* ============== 2048 ============== */
.sggame-2048-toolbar{display:flex;gap:14px;align-items:center;margin-bottom:14px;flex-wrap:wrap}
.sggame-2048-score,.sggame-2048-best{background:#f8fafc;padding:6px 12px;border-radius:6px;font-size:13px}
.sggame-2048-score b,.sggame-2048-best b{color:#6366f1;font-size:16px}
.sggame-2048-board{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;background:#bbada0;padding:8px;border-radius:8px;max-width:400px;margin:0 auto;aspect-ratio:1}
.sggame-2048-cell{background:rgba(238,228,218,0.35);border-radius:6px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:24px;color:#776e65;transition:all .15s;aspect-ratio:1}
.sggame-2048-cell[data-val="2"]{background:#eee4da;color:#776e65}
.sggame-2048-cell[data-val="4"]{background:#ede0c8;color:#776e65}
.sggame-2048-cell[data-val="8"]{background:#f2b179;color:#fff}
.sggame-2048-cell[data-val="16"]{background:#f59563;color:#fff}
.sggame-2048-cell[data-val="32"]{background:#f67c5f;color:#fff}
.sggame-2048-cell[data-val="64"]{background:#f65e3b;color:#fff}
.sggame-2048-cell[data-val="128"]{background:#edcf72;color:#fff;font-size:22px}
.sggame-2048-cell[data-val="256"]{background:#edcc61;color:#fff;font-size:22px}
.sggame-2048-cell[data-val="512"]{background:#edc850;color:#fff;font-size:22px}
.sggame-2048-cell[data-val="1024"]{background:#edc53f;color:#fff;font-size:18px}
.sggame-2048-cell[data-val="2048"]{background:#edc22e;color:#fff;font-size:18px;box-shadow:0 0 20px rgba(237,194,46,0.6)}
.sggame-2048-tip{text-align:center;color:#94a3b8;font-size:12px;margin-top:10px}

/* ============== 华容道 ============== */
.sggame-sliding-toolbar{display:flex;gap:14px;align-items:center;margin-bottom:14px;flex-wrap:wrap}
.sggame-sliding-stats{display:flex;gap:20px;background:#f8fafc;padding:10px 14px;border-radius:8px;font-size:14px;margin-bottom:14px}
.sggame-sliding-stats b{color:#6366f1}
.sggame-sliding-board{display:grid;gap:6px;background:#1e293b;padding:8px;border-radius:8px;max-width:400px;margin:0 auto;aspect-ratio:1}
.sggame-sliding-cell{background:linear-gradient(135deg,#6366f1,#4f46e5);border-radius:6px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:22px;color:#fff;cursor:pointer;transition:all .15s;aspect-ratio:1;box-shadow:0 2px 6px rgba(0,0,0,0.2)}
.sggame-sliding-cell:hover:not(.empty){transform:scale(0.95)}
.sggame-sliding-cell.empty{background:transparent;box-shadow:none;cursor:default}

/* ============== 数独 ============== */
.sggame-sudoku-toolbar,.sggame-sudoku-toolbar2{display:flex;gap:14px;align-items:center;margin-bottom:14px;flex-wrap:wrap}
.sggame-sudoku-stats{display:flex;gap:20px;background:#f8fafc;padding:10px 14px;border-radius:8px;font-size:14px;margin-bottom:14px;align-items:center;flex-wrap:wrap}
.sggame-sudoku-stats b{color:#6366f1}
.sggame-sudoku-board{display:grid;grid-template-columns:repeat(9,1fr);max-width:480px;margin:0 auto;border:2px solid #1e293b;border-radius:6px;background:#fff;width:100%;position:relative}
.sggame-sudoku-cell{position:relative !important;top:auto !important;left:auto !important;right:auto !important;bottom:auto !important;float:none !important;aspect-ratio:1;min-height:36px;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:600;border:1px solid #e2e8f0;cursor:pointer;color:#1e293b;background:#fff;transition:all .1s;box-sizing:border-box;width:auto !important;height:auto !important}
.sggame-sudoku-cell:hover{background:#eff6ff}
.sggame-sudoku-cell.is-fixed{background:#f8fafc;color:#475569;cursor:default;font-weight:700}
.sggame-sudoku-cell.is-related{background:#eff6ff !important}
.sggame-sudoku-cell.is-related.is-fixed{background:#e0e7ff !important}
.sggame-sudoku-cell.is-same-num{background:#fef3c7 !important;color:#b45309 !important}
.sggame-sudoku-cell.is-selected{background:#dbeafe !important;box-shadow:inset 0 0 0 2px #6366f1;color:#3730a3 !important}
.sggame-sudoku-cell.is-conflict{color:#dc2626 !important;background:#fee2e2 !important}
.sggame-sudoku-cell.is-conflict.is-selected{background:#fecaca !important;box-shadow:inset 0 0 0 2px #dc2626}
.sggame-sudoku-cell.is-error{background:#fee2e2;color:#dc2626;animation:shake .4s}
.sggame-sudoku-cell.is-flash{animation:flash-warn .5s}
@keyframes flash-warn{0%,100%{background:#fff}50%{background:#fecaca}}
.sggame-sudoku-cell.right-border{border-right:2px solid #1e293b}
.sggame-sudoku-cell.bottom-border{border-bottom:2px solid #1e293b}

.sggame-sudoku-cell-hint{
    margin:0 auto 12px;max-width:480px;padding:10px 14px;border-radius:8px;
    font-size:13px;line-height:1.5;text-align:center;
    background:#eff6ff;color:#1e40af;border:1px solid #bfdbfe;
}
.sggame-sudoku-cell-hint.warn{background:#fef3c7;color:#92400e;border-color:#fcd34d}
.sggame-sudoku-cell-hint b{color:#1d4ed8;font-weight:700;letter-spacing:1px}
.sggame-sudoku-cell-hint.warn b{color:#b45309}

.sggame-sudoku-key{
    position:relative !important;
    padding:10px 0;background:#fff;border:1.5px solid #cbd5e1;border-radius:8px;
    font-size:18px;font-weight:600;color:#1e293b;cursor:pointer;transition:all .15s;
    display:flex;align-items:center;justify-content:center;flex-direction:column;line-height:1;gap:2px;
}
.sggame-sudoku-key small{font-size:9px;color:#94a3b8;font-weight:500}
.sggame-sudoku-key:hover:not(:disabled){border-color:#3b82f6;color:#3b82f6;transform:translateY(-1px)}
.sggame-sudoku-key.is-invalid{background:#fef2f2;border-color:#fecaca;color:#b91c1c}
.sggame-sudoku-key.is-invalid small{color:#fca5a5}
.sggame-sudoku-key.is-invalid:hover{border-color:#dc2626;color:#dc2626;transform:none}
.sggame-sudoku-key.is-invalid::after{
    content:'';position:absolute;left:14%;right:14%;top:50%;height:2px;background:#dc2626;
    transform:rotate(-12deg);border-radius:2px;opacity:0.7;
}
.sggame-sudoku-key.is-done{background:#f1f5f9;color:#cbd5e1;border-color:#e2e8f0;cursor:not-allowed}
.sggame-sudoku-key.is-done small{color:#cbd5e1}
.sggame-sudoku-key.is-flash{animation:flash-warn .5s}
.sggame-sudoku-key.clear{background:#1e293b;color:#fff;border-color:#1e293b;font-size:13px}
.sggame-sudoku-key.clear:hover{background:#334155;color:#fff}
@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}
.sggame-sudoku-keypad{display:grid;grid-template-columns:repeat(10,1fr);gap:6px;max-width:480px;margin:14px auto}
.sggame-sudoku-key{background:#6366f1;color:#fff;border:none;border-radius:6px;padding:10px;font-weight:600;cursor:pointer;font-size:16px;transition:all .15s}
.sggame-sudoku-key:hover{background:#4f46e5}
.sggame-sudoku-key.clear{background:#ef4444;grid-column:span 2;font-size:13px}

/* ============== 狼人杀 ============== */
.sggame-ww-tabs{display:flex;gap:4px;border-bottom:2px solid #e2e8f0;margin-bottom:16px}
.sggame-ww-tab{padding:10px 18px;background:transparent;border:none;font-size:13px;font-weight:600;color:#64748b;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .15s}
.sggame-ww-tab:hover{color:#1e293b}
.sggame-ww-tab.active{color:#6366f1;border-bottom-color:#6366f1}
.sggame-ww-pane{display:none}
.sggame-ww-pane.active{display:block}
.sggame-ww-pane label{display:block;margin-bottom:12px;font-size:13px;color:#334155}
.sggame-ww-pane input,.sggame-ww-pane select{padding:8px 12px;border:1.5px solid #e2e8f0;border-radius:8px;font-size:13px;margin-left:8px;outline:none}
.sggame-ww-pane input:focus,.sggame-ww-pane select:focus{border-color:#6366f1}
.sggame-ww-lobby-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;font-weight:600;color:#334155}
.sggame-ww-room-item{display:flex;justify-content:space-between;align-items:center;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:12px 16px;margin-bottom:8px}
.sggame-ww-room-item .info{display:flex;flex-direction:column;gap:4px}
.sggame-ww-room-item .meta{font-size:12px;color:#64748b}
.sggame-ww-game-head{display:flex;justify-content:space-between;align-items:center;background:linear-gradient(135deg,#1e293b,#0f172a);color:#fff;padding:14px 20px;border-radius:10px;margin-bottom:14px}
.sggame-ww-game-title{display:flex;flex-direction:column;gap:4px}
.sggame-ww-game-title b{font-size:16px}
.sggame-ww-code-display{font-size:11px;opacity:0.7;font-family:monospace}
.sggame-ww-phase-info{display:flex;gap:14px;align-items:center;font-size:13px}
.sggame-ww-phase-info b{color:#fbbf24}
.sggame-ww-myrole{background:#fef3c7;border-left:3px solid #f59e0b;padding:10px 14px;border-radius:6px;font-size:14px;margin-bottom:14px;color:#78350f}
.sggame-ww-myrole b{color:#dc2626}
.sggame-ww-seats{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px;margin-bottom:14px}
.sggame-ww-seat{background:#fff;border:2px solid #e2e8f0;border-radius:10px;padding:10px;text-align:center;transition:all .15s}
.sggame-ww-seat.mine{border-color:#6366f1;background:#eff6ff}
.sggame-ww-seat.dead{opacity:0.4;background:#f1f5f9;position:relative}
.sggame-ww-seat.dead::after{content:'已出局';display:block;color:#dc2626;font-size:11px;font-weight:700;margin-top:4px}
.sggame-ww-seat .seat-no{display:inline-block;background:#1e293b;color:#fff;width:24px;height:24px;line-height:24px;border-radius:50%;font-size:12px;margin-bottom:4px}
.sggame-ww-seat .name{font-size:13px;font-weight:600;color:#334155}
.sggame-ww-seat .role{display:block;font-size:11px;color:#dc2626;margin-top:4px;font-weight:600}
.sggame-ww-actions{background:#fff;border:1px dashed #cbd5e1;border-radius:10px;padding:14px;min-height:80px}
.sggame-ww-tip{font-size:14px;color:#475569;margin-bottom:10px;font-weight:500}
.sggame-ww-targets{display:flex;flex-wrap:wrap;gap:6px}
.sggame-ww-targets .target{background:#f1f5f9;color:#1e293b;border:1px solid #e2e8f0;padding:6px 12px;border-radius:6px;cursor:pointer;font-size:13px;transition:all .15s}
.sggame-ww-targets .target:hover{background:#dbeafe;border-color:#6366f1}
.sggame-ww-end{background:linear-gradient(135deg,#fbbf24,#f59e0b);color:#fff;padding:20px;text-align:center;border-radius:10px;font-size:18px;font-weight:700}
.sggame-ww-host-actions{margin-top:14px;text-align:center}
.sggame-ww-host-actions button:disabled{opacity:0.5;cursor:not-allowed}
.sggame-ww-witch-btns{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.sggame-ww-witch{background:#a855f7;color:#fff;border:none;padding:8px 16px;border-radius:6px;cursor:pointer;font-size:13px;font-weight:600}
.sggame-ww-witch:hover{background:#9333ea}
