/* ══════════════════════════════════════════════════════════
   app/player.css — 个人中心按钮 / 徽章解锁通知 / 稀有徽章动效 / 彩蛋 / 修改密码 / 确认框 / 挑战码 / 游戏菜单
   由原 assets/app.css 第 375–715 行拆出；七个文件按 index.html 里的顺序加载，层叠顺序与原来一致
   ══════════════════════════════════════════════════════════ */
/* ══ 玩家个人中心按钮 ══ */
/* 导航栏个人中心按钮高亮 */
.btn-player-center-nav{position:relative;}
.btn-player-center-nav::after{content:'';position:absolute;bottom:-3px;left:50%;transform:translateX(-50%);width:4px;height:4px;border-radius:50%;background:var(--pink-sakura);box-shadow:0 0 6px var(--pink-sakura);display:none;}
.player-center-modal{position:fixed;inset:0;z-index:7500;display:none;align-items:center;justify-content:center;padding:20px;background:rgba(4,6,20,.45);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);}
body.theme-light .player-center-modal{background:rgba(240,160,190,.28);backdrop-filter:blur(20px);}
body.theme-light .pc-shell{
  background:linear-gradient(160deg,#fff0f6 0%,#fce4f0 55%,#f9d5ea 100%);
  border-color:rgba(220,80,130,.22);
  box-shadow:0 32px 80px rgba(210,60,110,.18),0 0 0 1px rgba(255,160,200,.2);
}
body.theme-light .pc-header{background:linear-gradient(135deg,rgba(240,100,150,.15),rgba(230,80,140,.1));border-bottom-color:rgba(220,80,130,.18);}
body.theme-light .pc-title{color:#8b1a3a;}
body.theme-light .pc-uid{color:rgba(160,60,90,.5);}
body.theme-light .pc-close{background:rgba(220,80,130,.08);border-color:rgba(220,80,130,.2);color:rgba(160,50,80,.6);}
body.theme-light .pc-close:hover{background:rgba(220,80,130,.18);color:#a0203a;}
body.theme-light .pc-logout-btn{background:rgba(220,80,130,.1);border-color:rgba(220,80,130,.22);color:#b0204a;}
body.theme-light .pc-logout-btn:hover{background:rgba(220,80,130,.2);}
body.theme-light .pc-name{color:#6b1535;}
body.theme-light .pc-stat{border-right-color:rgba(220,80,130,.12);}
body.theme-light .pc-card{background:rgba(255,200,220,.18);border-color:rgba(220,80,130,.16);}
body.theme-light .pc-card-hd{color:rgba(190,50,90,.75);}
body.theme-light .pc-volume-val{color:rgba(140,50,80,.5);}
body.theme-light .pc-wp-placeholder{color:rgba(180,80,110,.4);}
body.theme-light .pc-wallpaper-preview{background:rgba(255,200,220,.2);border-color:rgba(220,80,130,.15);}
body.theme-light .pc-admin-btn{background:rgba(220,80,130,.1);border-color:rgba(220,80,130,.22);}
body.theme-light .pc-admin-btn:hover{background:rgba(220,80,130,.2);}
body.theme-light .pc-admin-title{color:#7a1535;}
body.theme-light .pc-admin-sub{color:rgba(140,50,80,.55);}
body.theme-light .pc-action-challenge{background:rgba(220,80,130,.1);border-color:rgba(220,80,130,.25);color:#a01040;}
body.theme-light .pc-action-accept{background:rgba(220,80,130,.1);border-color:rgba(220,80,130,.22);color:#b0204a;}
body.theme-light .pc-action-upload{background:rgba(220,80,130,.08);border-color:rgba(220,80,130,.2);color:#8b1535;}
body.theme-light .pc-action-clear-wp{background:rgba(220,60,60,.08);border-color:rgba(220,60,60,.18);color:#b01020;}
body.theme-light .pc-toggle{background:rgba(220,80,130,.12);border-color:rgba(220,80,130,.28);color:#8b1535;}
body.theme-light .pc-toggle.muted{background:rgba(220,80,130,.05);border-color:rgba(220,80,130,.12);color:rgba(160,50,80,.45);}
body.theme-light .pc-role-super{background:rgba(220,60,60,.1);border-color:rgba(220,60,60,.25);color:#a01020;}
body.theme-light .pc-role-admin{background:rgba(220,80,130,.1);border-color:rgba(220,80,130,.25);color:#8b1535;}
body.theme-light .pc-role-user{background:rgba(220,80,130,.06);border-color:rgba(220,80,130,.12);color:rgba(140,50,80,.6);}
.player-center-modal.active{display:flex;animation:gmFadeIn .3s ease;}
.pc-shell{width:500px;max-width:calc(100vw - 24px);max-height:calc(100dvh - 32px);background:rgba(12,8,30,.68);backdrop-filter:blur(36px) saturate(1.5);-webkit-backdrop-filter:blur(36px) saturate(1.5);border:1px solid rgba(167,139,250,.2);border-radius:24px;box-shadow:0 32px 80px rgba(0,0,0,.5),0 0 0 1px rgba(255,255,255,.05),inset 0 1px 0 rgba(255,255,255,.08);display:flex;flex-direction:column;overflow:hidden;}
.pc-header{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid rgba(255,255,255,.06);flex-shrink:0;}
.pc-title{font-size:1rem;font-weight:700;color:#c7d2fe;letter-spacing:1px;}
.pc-close{width:28px;height:28px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);color:rgba(255,255,255,.5);border-radius:50%;cursor:pointer;font-size:.75rem;display:flex;align-items:center;justify-content:center;transition:all .15s;}
.pc-close:hover{background:rgba(248,113,113,.2);color:#f87171;}
.pc-avatar-row{display:flex;align-items:center;gap:14px;padding:16px 16px 10px;flex-shrink:0;}
.pc-avatar{width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.5rem;font-weight:700;flex-shrink:0;cursor:pointer;border:2px solid rgba(255,255,255,.15);transition:transform .2s;}
.pc-avatar:hover{transform:scale(1.08);}
/* 状态选择器按钮 */
.sp-btn{display:flex;flex-direction:column;align-items:center;gap:3px;padding:9px 4px;border-radius:12px;border:1px solid rgba(255,255,255,.07);background:rgba(255,255,255,.04);color:#e2e8f0;cursor:pointer;font-size:1.2rem;transition:.15s;font-family:inherit;}
.sp-btn span{font-size:.68rem;color:rgba(255,255,255,.55);line-height:1;}
.sp-btn:hover{background:rgba(255,160,200,.12);border-color:rgba(255,160,200,.3);}
.sp-btn.sp-sel{background:rgba(232,80,122,.2);border-color:rgba(232,80,122,.55);box-shadow:0 0 8px rgba(232,80,122,.25);}
.pc-name-col{flex:1;}
.pc-name{font-size:1.05rem;font-weight:700;color:#fff;margin-bottom:3px;}
.pc-stat{flex:1;text-align:center;padding:10px 8px 12px;border-right:1px solid rgba(255,255,255,.05);}
.pc-stat:last-child{border-right:none;}
.pc-games-list{flex:1;overflow-y:auto;padding:12px 16px;scrollbar-width:thin;scrollbar-color:rgba(167,139,250,.2) transparent;}
/* pc-body — flex 列布局，卡片间距 */
.pc-body{flex:1;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(167,139,250,.2) transparent;padding:12px 14px 18px;display:flex;flex-direction:column;gap:10px;}
/* ── 卡片：轻量边框，紧凑内边距；flex-shrink:0 防止被 pc-body 压扁 ── */
.pc-card{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.09);border-radius:14px;overflow:hidden;flex-shrink:0;}
body.theme-light .pc-card{background:rgba(0,0,0,.03);border-color:rgba(0,0,0,.08);}
/* 卡片标题：小号标签样式，无分割线，内嵌在卡片顶部 */
.pc-card-hd{font-size:.66rem;letter-spacing:1.8px;color:rgba(167,139,250,.75);text-transform:uppercase;font-weight:700;padding:11px 16px 0;}
body.theme-light .pc-card-hd{color:rgba(180,80,140,.7);}
/* 卡片内容区 */
.pc-card-bd{padding:8px 16px 14px;}
/* 游戏列表在卡片内清除自带 padding */
.pc-card .pc-games-list{padding:0;overflow-y:visible;flex:none;}
/* game action buttons */
.pc-game-actions{display:flex;gap:8px;}
.pc-action-btn{flex:1;padding:10px 12px;border-radius:12px;cursor:pointer;font-size:.8rem;font-family:var(--font-body);transition:all .15s;text-align:center;border:1px solid transparent;display:flex;align-items:center;justify-content:center;gap:5px;}
.pc-action-challenge{background:rgba(99,102,241,.15);border-color:rgba(99,102,241,.35);color:#c7d2fe;}
.pc-action-challenge:hover{background:rgba(99,102,241,.28);}
.pc-action-accept{background:rgba(232,80,122,.12);border-color:rgba(232,80,122,.3);color:#fda4af;}
.pc-action-accept:hover{background:rgba(232,80,122,.24);}
/* sound section */
.pc-toggle{display:flex;align-items:center;gap:6px;padding:7px 14px;border-radius:20px;background:rgba(74,222,128,.12);border:1px solid rgba(74,222,128,.3);color:#4ade80;cursor:pointer;font-size:.78rem;font-family:var(--font-body);transition:all .15s;}
.pc-toggle.muted{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.12);color:rgba(255,255,255,.4);}
.pc-toggle:hover{filter:brightness(1.15);}
.pc-volume-slider{flex:1;-webkit-appearance:none;height:4px;border-radius:2px;background:rgba(99,102,241,.2);outline:none;cursor:pointer;}
.pc-volume-slider::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;background:linear-gradient(135deg,#a78bfa,#7c3aed);cursor:pointer;box-shadow:0 2px 8px rgba(124,58,237,.4);}
.pc-volume-val{font-size:.72rem;color:rgba(255,255,255,.4);width:28px;text-align:right;}
/* 成就徽章 */
.ach-badge{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:20px;
  font-size:.75rem;background:rgba(167,139,250,.1);border:1px solid rgba(167,139,250,.2);
  color:var(--text-main);cursor:default;transition:background .15s;}
.ach-badge:hover{background:rgba(167,139,250,.2);}
.ach-badge.locked{opacity:.35;filter:grayscale(.8);}
.ach-icon{font-size:1rem;}
/* 精选星标 */
.ach-star{margin-left:3px;font-size:.85rem;cursor:pointer;opacity:.55;transition:opacity .15s,transform .15s;line-height:1;}
.ach-star:hover{opacity:1;transform:scale(1.25);}
.ach-star.on{opacity:1;filter:drop-shadow(0 0 4px rgba(251,191,36,.7));}
body.theme-light .ach-badge{background:rgba(147,80,200,.07);border-color:rgba(147,80,200,.18);}
.pc-badge-tile{display:flex;flex-direction:column;align-items:center;gap:3px;padding:10px 8px;border-radius:12px;
  border:1px solid var(--border);background:var(--card);font-size:.75rem;color:var(--text2);
  transition:border-color .15s,background .15s;}
.pc-badge-tile:not(.locked):hover{border-color:rgba(167,139,250,.5);background:rgba(167,139,250,.1);}
.pc-badge-tile.selected{border-color:rgba(167,139,250,.7);background:rgba(167,139,250,.15);color:var(--purple);}
.pc-badge-tile.locked{opacity:.4;filter:grayscale(.6);}
.pc-badge-tile-icon{font-size:1.6em;line-height:1;}
.pc-badge-tile-name{font-weight:600;text-align:center;}
/* 稀有徽章：金色边框 + 微光 */
.pc-badge-tile.rare:not(.locked){border-color:rgba(251,191,36,.45);background:linear-gradient(160deg,rgba(251,191,36,.08),rgba(251,146,60,.05));}
.pc-badge-tile.rare:not(.locked):hover{border-color:rgba(251,191,36,.7);background:linear-gradient(160deg,rgba(251,191,36,.15),rgba(251,146,60,.08));}
.pc-badge-tile.rare.selected{border-color:rgba(251,191,36,.85);background:linear-gradient(160deg,rgba(251,191,36,.18),rgba(251,146,60,.1));color:#fbbf24;box-shadow:0 0 14px rgba(251,191,36,.25);}
.pc-badge-tile.rare .pc-badge-tile-icon{filter:drop-shadow(0 0 4px rgba(251,191,36,.5));}
body.theme-light .pc-badge-tile{background:#fff;border-color:rgba(180,80,140,.15);}
body.theme-light .pc-badge-tile.selected{background:rgba(200,80,140,.08);border-color:rgba(200,80,140,.4);color:#a0185a;}
body.theme-light .pc-badge-tile.rare.selected{color:#b8860b;border-color:rgba(218,165,32,.7);}
/* 时间徽章：当前等级可佩戴（绿调），旧档已达成（半灰展示） */
.pc-badge-tile.time-cur:not(.selected){border-color:rgba(74,222,128,.4);background:linear-gradient(160deg,rgba(74,222,128,.08),rgba(34,197,94,.04));}
.pc-badge-tile.time-cur:hover{border-color:rgba(74,222,128,.65);background:rgba(74,222,128,.12);}
.pc-badge-tile.time-cur.selected{border-color:rgba(74,222,128,.8);background:rgba(74,222,128,.16);color:#4ade80;box-shadow:0 0 12px rgba(74,222,128,.22);}
.pc-badge-tile.time-old{opacity:.55;filter:grayscale(.3);cursor:default;}

/* ══ 徽章解锁通知 ══ */
#badge-unlock-stack{position:fixed;top:74px;right:18px;z-index:10000;display:flex;flex-direction:column;gap:10px;pointer-events:none;max-width:300px;}
.badge-unlock-card{pointer-events:auto;display:flex;align-items:center;gap:12px;padding:13px 16px 13px 13px;border-radius:16px;
  background:linear-gradient(150deg,rgba(20,10,40,.97),rgba(34,16,58,.97));border:1px solid var(--bu-accent,rgba(167,139,250,.5));
  box-shadow:0 12px 40px rgba(0,0,0,.55),0 0 22px var(--bu-glow,rgba(167,139,250,.25));
  cursor:pointer;transform:translateX(120%);opacity:0;transition:transform .45s cubic-bezier(.16,1,.3,1),opacity .45s;}
.badge-unlock-card.show{transform:translateX(0);opacity:1;}
.badge-unlock-ico{width:48px;height:48px;flex-shrink:0;border-radius:14px;display:flex;align-items:center;justify-content:center;
  font-size:1.8rem;background:var(--bu-icobg,rgba(167,139,250,.16));border:1px solid var(--bu-accent,rgba(167,139,250,.4));
  filter:drop-shadow(0 0 6px var(--bu-glow,rgba(167,139,250,.4)));animation:buPop .5s cubic-bezier(.16,1.4,.5,1);}
@keyframes buPop{0%{transform:scale(.3) rotate(-20deg);}60%{transform:scale(1.15) rotate(6deg);}100%{transform:scale(1) rotate(0);}}
.badge-unlock-txt{flex:1;min-width:0;}
.badge-unlock-head{font-size:.66rem;font-weight:700;letter-spacing:1px;color:var(--bu-accent,#a78bfa);text-transform:uppercase;}
.badge-unlock-name{font-size:.92rem;font-weight:800;color:#f4ecff;margin:1px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.badge-unlock-cond{font-size:.68rem;color:#94a3b8;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
body.theme-light .badge-unlock-card{background:linear-gradient(150deg,#fff6fb,#fce4f0);}
body.theme-light .badge-unlock-name{color:#3a1530;}
body.theme-light .badge-unlock-cond{color:#8a6080;}

/* ══ 稀有徽章动态效果（按稀有度分级，越稀有越炫） ══ */
.badge-dyn{display:inline-block;will-change:transform,filter;transform-origin:center;}
@keyframes brGlow{0%,100%{filter:drop-shadow(0 0 1px var(--brg));}50%{filter:drop-shadow(0 0 7px var(--brg));}}
@keyframes brBeat{0%,100%{transform:scale(1);}50%{transform:scale(1.16);}}
@keyframes brWob{0%,100%{transform:rotate(-8deg) scale(1.02);}50%{transform:rotate(8deg) scale(1.12);}}
@keyframes brHue{0%{filter:hue-rotate(0deg) drop-shadow(0 0 4px var(--brg)) saturate(1.4);}100%{filter:hue-rotate(360deg) drop-shadow(0 0 8px var(--brg)) saturate(1.4);}}
/* 稀有：青色呼吸光晕 */
.badge-dyn.r-rare{--brg:rgba(56,189,248,.8);animation:brGlow 2.4s ease-in-out infinite;}
/* 史诗：紫色呼吸 + 心跳缩放 */
.badge-dyn.r-epic{--brg:rgba(167,139,250,.9);animation:brGlow 1.9s ease-in-out infinite,brBeat 2.6s ease-in-out infinite;}
/* 传说：金色光晕 + 左右摇摆 */
.badge-dyn.r-legendary{--brg:rgba(251,191,36,1);animation:brGlow 1.5s ease-in-out infinite,brWob 2.2s ease-in-out infinite;}
/* 神话：彩虹色相流转 + 心跳 */
.badge-dyn.r-mythic{--brg:rgba(244,114,182,1);animation:brHue 3.5s linear infinite,brBeat 1.9s ease-in-out infinite;}
@media (prefers-reduced-motion: reduce){.badge-dyn{animation:none !important;}}

/* ══ 隐藏彩蛋特效 ══ */
#egg-canvas{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:9998;display:none;}
@keyframes eggRainbowFlash{0%,100%{filter:none;}25%{filter:hue-rotate(90deg) saturate(1.6);}50%{filter:hue-rotate(200deg) saturate(2);}75%{filter:hue-rotate(310deg) saturate(1.6);}}
body.egg-rainbow{animation:eggRainbowFlash 2.2s ease-in-out;}

/* wallpaper section */
.pc-wallpaper-preview{height:80px;border-radius:12px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.03);overflow:hidden;margin-bottom:10px;display:flex;align-items:center;justify-content:center;background-size:cover;background-position:center;}
.pc-wp-placeholder{font-size:.78rem;color:rgba(255,255,255,.25);}
.pc-wp-actions{display:flex;gap:8px;margin-bottom:8px;}
.pc-action-upload{background:rgba(56,189,248,.1);border-color:rgba(56,189,248,.3);color:#7dd3fc;cursor:pointer;}
.pc-action-upload:hover{background:rgba(56,189,248,.22);}
.pc-action-clear-wp{background:rgba(248,113,113,.08);border-color:rgba(248,113,113,.2);color:#f87171;}
.pc-action-clear-wp:hover{background:rgba(248,113,113,.18);}

/* ══ 修改密码区块 ══ */
.pc-pwd-form{display:flex;flex-direction:column;gap:10px;}
.pc-pwd-input{background:rgba(255,255,255,.06);border:1px solid rgba(255,183,197,.15);border-radius:10px;padding:9px 14px;color:var(--text-main);font-size:.84rem;outline:none;font-family:var(--font-body);transition:border-color .2s;}
.pc-pwd-input:focus{border-color:rgba(255,183,197,.4);background:rgba(255,183,197,.06);}
body.theme-light .pc-pwd-input{background:rgba(255,220,235,.5);border-color:rgba(220,80,130,.25);color:#5a1025;}
body.theme-light .pc-pwd-input:focus{border-color:rgba(220,80,130,.55);}
.pc-pwd-btn{padding:9px;border-radius:10px;background:rgba(255,183,197,.12);border:1px solid rgba(255,183,197,.28);color:var(--pink-sakura);cursor:pointer;font-size:.84rem;font-family:var(--font-body);font-weight:600;transition:background .15s;}
.pc-pwd-btn:hover{background:rgba(255,183,197,.22);}
.pc-pwd-btn:disabled{opacity:.4;cursor:not-allowed;}
.pc-pwd-msg{font-size:.76rem;padding:6px 10px;border-radius:8px;display:none;}
.pc-pwd-msg.ok{display:block;background:rgba(74,222,128,.1);border:1px solid rgba(74,222,128,.2);color:#4ade80;}
.pc-pwd-msg.err{display:block;background:rgba(248,113,113,.1);border:1px solid rgba(248,113,113,.2);color:#f87171;}

/* 蜘蛛纸牌动效 */
@keyframes sp-shimmer-sweep{0%{background-position:150% 0;opacity:.9;}100%{background-position:-50% 0;opacity:0;}}
@keyframes sp-win-text-in{0%{opacity:0;transform:translate(-50%,-50%) scale(.4);}60%{transform:translate(-50%,-50%) scale(1.08);}100%{opacity:1;transform:translate(-50%,-50%) scale(1);}}
@keyframes sp-win-text-out{to{opacity:0;transform:translate(-50%,-50%) scale(1.6);}}
@keyframes sp-particle-rise{to{transform:translateY(-120px) rotate(720deg);opacity:0;}}

/* 快捷键速查卡：见 assets/hotkeys.css */

/* @keyframes 补全 */
@keyframes gmFadeIn{from{opacity:0;}to{opacity:1;}}

/* ══ 自定义确认对话框 ══ */
.sakura-confirm-overlay{position:fixed;inset:0;z-index:99990;display:flex;align-items:center;justify-content:center;background:rgba(4,6,20,.6);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);animation:gmFadeIn .2s ease;}
.sakura-confirm-box{background:rgba(14,10,34,.96);border:1px solid rgba(255,183,197,.2);border-radius:20px;padding:32px 36px 24px;min-width:280px;max-width:380px;box-shadow:0 24px 64px rgba(0,0,0,.7),0 0 0 1px rgba(255,255,255,.04);text-align:center;animation:scConfirmIn .25s cubic-bezier(.16,1,.3,1);}
@keyframes scConfirmIn{from{opacity:0;transform:scale(.88) translateY(12px);}to{opacity:1;transform:scale(1) translateY(0);}}
.sakura-confirm-icon{font-size:2rem;margin-bottom:12px;}
.sakura-confirm-msg{color:var(--text-main);font-size:.95rem;line-height:1.6;margin-bottom:24px;letter-spacing:.3px;}
.sakura-confirm-btns{display:flex;gap:10px;justify-content:center;}
.sakura-confirm-btn{padding:9px 28px;border-radius:50px;border:none;cursor:pointer;font-size:.85rem;font-family:var(--font-body);letter-spacing:.5px;transition:var(--transition);font-weight:500;}
.sakura-confirm-btn.cancel{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.12);color:var(--text-sub);}
.sakura-confirm-btn.cancel:hover{background:rgba(255,255,255,.12);color:var(--text-main);}
.sakura-confirm-btn.ok{background:linear-gradient(135deg,#e8507a,#c0305a);color:#fff;box-shadow:0 4px 16px rgba(232,80,122,.35);}
.sakura-confirm-btn.ok:hover{filter:brightness(1.1);box-shadow:0 6px 24px rgba(232,80,122,.5);}
body.theme-light .sakura-confirm-box{background:rgba(255,248,255,.97);border-color:rgba(210,80,120,.25);box-shadow:0 24px 64px rgba(180,80,120,.18),0 0 0 1px rgba(0,0,0,.04);}
body.theme-light .sakura-confirm-btn.cancel{background:rgba(0,0,0,.04);border-color:rgba(0,0,0,.1);color:#7a4060;}
body.theme-light .sakura-confirm-btn.cancel:hover{background:rgba(0,0,0,.08);color:#2a1520;}

/* ══ 樱花密度控制 ══ */
.sakura-density-wrap{display:flex;align-items:center;gap:6px;font-size:.72rem;color:var(--text-sub);}
.sakura-density-wrap input[type=range]{width:70px;accent-color:var(--pink-glow);cursor:pointer;}

/* ══ 挑战码弹窗 ══ */
.challenge-modal{position:fixed;inset:0;z-index:8500;display:none;align-items:center;justify-content:center;padding:20px;background:rgba(4,6,20,.8);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);}
.challenge-modal.active{display:flex;animation:gmFadeIn .3s ease;}
.challenge-shell{width:360px;max-width:calc(100vw - 32px);background:linear-gradient(160deg,rgba(12,8,32,.99),rgba(18,10,45,.99));border:1px solid rgba(99,102,241,.25);border-radius:22px;box-shadow:0 32px 80px rgba(0,0,0,.7);padding:28px;display:flex;flex-direction:column;gap:16px;}
.challenge-title{font-size:1rem;font-weight:700;color:#c7d2fe;text-align:center;}
.challenge-game-name{font-size:.8rem;color:rgba(255,255,255,.45);text-align:center;margin-top:-8px;}
.challenge-code{background:rgba(99,102,241,.1);border:1px solid rgba(99,102,241,.3);border-radius:14px;padding:18px;text-align:center;font-family:var(--font-display);font-size:1.4rem;letter-spacing:4px;color:#818cf8;cursor:pointer;transition:background .15s;user-select:all;}
.challenge-code:hover{background:rgba(99,102,241,.18);}
.challenge-desc{font-size:.78rem;color:rgba(255,255,255,.45);text-align:center;line-height:1.6;}
.challenge-input{width:100%;padding:10px 14px;border-radius:12px;background:rgba(255,255,255,.06);border:1px solid rgba(99,102,241,.3);color:#fff;font-size:.9rem;font-family:var(--font-display);letter-spacing:3px;text-align:center;outline:none;transition:border-color .15s;}
.challenge-input:focus{border-color:#818cf8;}
.challenge-result{font-size:.85rem;text-align:center;padding:10px;border-radius:10px;}
.challenge-result.win{background:rgba(74,222,128,.1);color:#4ade80;}
.challenge-result.lose{background:rgba(248,113,113,.1);color:#f87171;}
.challenge-result.tie{background:rgba(251,191,36,.1);color:#fbbf24;}
.challenge-btns{display:flex;gap:8px;}
.challenge-btn{flex:1;padding:11px;border-radius:12px;cursor:pointer;font-size:.82rem;font-family:var(--font-body);transition:all .15s;}
.challenge-btn-primary{background:linear-gradient(135deg,rgba(99,102,241,.3),rgba(139,92,246,.22));border:1px solid rgba(99,102,241,.5);color:#e0e7ff;}
.challenge-btn-primary:hover{background:linear-gradient(135deg,rgba(99,102,241,.45),rgba(139,92,246,.38));}
.challenge-btn-ghost{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);color:rgba(255,255,255,.5);}

/* 游戏按钮点开的是全屏游戏中心，样式见 assets/game-center.css */
