/* 星盾主站样式：单文件、无构建、移动优先 */
:root{
  --bg:#0a0e24; --bg2:#0e1430; --panel:#141a3a; --line:rgba(255,255,255,.10);
  --txt:#eef1ff; --muted:#9aa3c7; --gold:#ffd96a; --jade:#2ee6a8; --red:#ff6b81;
  --radius:14px; --wrap:1120px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--bg);color:var(--txt);
  font:15px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
code{font-family:ui-monospace,Menlo,Consolas,monospace;letter-spacing:.06em}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 20px}
.wrap.narrow{max-width:820px}
.center{text-align:center}
.muted{color:var(--muted)}
.small{font-size:13px}
.num{color:var(--muted);font-size:13px}
.empty{color:var(--muted);padding:28px 0;text-align:center}
.danger{color:var(--red)}

/* 头部 */
.hd{position:sticky;top:0;z-index:20;background:rgba(10,14,36,.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.hd-in{display:flex;align-items:center;gap:18px;height:60px}
.logo{display:flex;align-items:baseline;gap:8px;font-weight:700;font-size:17px}
.logo b{color:var(--gold)}
.logo span{font-size:11px;color:var(--muted);font-weight:400;letter-spacing:.14em}
.nav{display:flex;gap:18px;flex:1;font-size:14px}
.nav a{color:var(--muted)}
.nav a:hover{color:var(--txt)}
.u{font-size:13px;padding:6px 12px;border:1px solid var(--line);border-radius:99px}

/* 按钮 */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  padding:11px 20px;border-radius:10px;border:1px solid var(--line);
  font-size:14px;font-weight:600;cursor:pointer;background:transparent;color:var(--txt);
  transition:transform .15s ease,filter .15s ease;
}
.btn:hover{transform:translateY(-1px)}
.btn-main{background:linear-gradient(135deg,#ffd96a,#ffb03a);color:#231a05;border-color:transparent}
.btn-gold{background:linear-gradient(135deg,#2ee6a8,#12b98a);color:#052a1f;border-color:transparent}
.btn-ghost{background:rgba(255,255,255,.06)}
.btn.big{padding:15px 26px;font-size:16px}
.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}

/* 首屏 */
.hero{padding:64px 0 44px;background:radial-gradient(1000px 420px at 20% -10%,rgba(255,217,106,.14),transparent 70%),rgba(46,230,168,.06)}
.hero h1{margin:0 0 12px;font-size:clamp(26px,4vw,42px);line-height:1.2;letter-spacing:-.01em}
.hero .sub{margin:0 0 22px;color:var(--muted);font-size:clamp(13px,1.6vw,16px)}
.hero-act{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:24px}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}
.chip{padding:6px 14px;border-radius:99px;border:1px solid var(--line);font-size:13px;color:var(--muted);background:rgba(255,255,255,.03)}
.chip:hover,.chip.on{color:var(--txt);border-color:rgba(255,217,106,.5);background:rgba(255,217,106,.1)}

/* 区块 */
.sec{padding:42px 0}
.sec.alt{background:var(--bg2)}
.sec-h{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:18px}
.sec-h h2{margin:0;font-size:22px}
.sec-h a{color:var(--muted);font-size:13px}
.h2{font-size:22px;margin:0 0 18px}
.h3{font-size:16px;margin:26px 0 8px}

/* 卡片网格 */
.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;transition:transform .18s,border-color .18s}
.card:hover{transform:translateY(-3px);border-color:rgba(255,217,106,.42)}
.card-img{position:relative;aspect-ratio:16/10;background:#0b1026;overflow:hidden}
.card-img img{width:100%;height:100%;object-fit:cover}
.card-img .ph{display:flex;align-items:center;justify-content:center;height:100%;font-size:30px;color:rgba(255,255,255,.5)}
.badge{position:absolute;left:8px;top:8px;padding:3px 8px;border-radius:6px;background:rgba(255,107,129,.92);color:#fff;font-size:11px;font-weight:700}
.card-b{padding:10px 12px 12px}
.card-b b{display:block;font-size:14px;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card-b .meta{font-size:12px;color:var(--muted)}

/* 详情页 */
/* 背景图变量用 --bg-url；原来这里写的是 --bg2（一个颜色值），
   而 HTML 设的是 --bg，两边对不上，主视觉背景从上线起就没显示过。 */
.ghero{position:relative;padding:38px 0;background-color:var(--bg2)}
/* 背景图只在桌面端加载：它被 86–96% 不透明的深色渐变盖住，手机上多下这十几 KB
   换不来任何观感，不如省掉。桌面端用 --bg-url（见 HTML 的 inline style）。 */
@media(min-width:768px){
  .ghero{background-image:linear-gradient(rgba(10,14,36,.86),rgba(10,14,36,.96)),var(--bg-url,none);
    background-size:cover;background-position:center}
}
.ghero-in{display:flex;gap:26px;align-items:flex-start}
.gcover{flex:0 0 200px}
.gcover img{border-radius:var(--radius);border:1px solid var(--line)}
.ginfo{flex:1;min-width:0}
.ginfo h1{margin:0 0 6px;font-size:clamp(22px,3vw,32px)}
.gsub{margin:0 0 12px;color:var(--gold);font-size:14px}
.tbs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.tb{font-size:11.5px;color:var(--muted);border:1px solid var(--line);border-radius:6px;padding:3px 8px}
.gain{display:inline-block;padding:9px 14px;border-radius:10px;margin-bottom:16px;
  background:rgba(255,217,106,.12);border:1px solid rgba(255,217,106,.34);color:#ffe89f;font-size:13.5px;font-weight:600}
.gcta{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.gmeta{display:flex;gap:16px;color:var(--muted);font-size:13px}
.feats{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
.feat{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px}
.feat b{display:block;margin-bottom:6px;font-size:14.5px}
.feat p{margin:0;color:var(--muted);font-size:13px;line-height:1.7}
.shots{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.shots img{border-radius:12px;border:1px solid var(--line);aspect-ratio:16/9;object-fit:cover}
/* 截图包在 <a> 里：无 JS 时直接打开大图，有 JS 时被拦截成浮层 */
.shots a.shot{display:block;position:relative;border-radius:12px;overflow:hidden;
  transition:transform .18s ease,border-color .18s ease;line-height:0}
.shots a.shot:hover img,.shots a.shot:focus-visible img{border-color:rgba(255,217,106,.5)}
.shots a.shot:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.shots a.shot::after{
  content:"⤢";position:absolute;right:8px;bottom:8px;
  width:24px;height:24px;line-height:24px;text-align:center;border-radius:7px;
  background:rgba(10,14,36,.72);color:#fff;font-size:13px;
  opacity:0;transition:opacity .18s ease}
.shots a.shot:hover::after{opacity:1}
.shots-hint{margin:10px 0 0;font-size:12.5px;color:var(--muted);text-align:center}

/* ---------- 灯箱 ---------- */
.lb{
  position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;
  background:rgba(6,9,22,.94);padding:24px;
  opacity:0;transition:opacity .18s ease}
.lb[hidden]{display:none}
.lb.open{opacity:1}
.lb-img{
  max-width:min(1200px,94vw);max-height:88vh;width:auto;height:auto;
  border-radius:10px;box-shadow:0 24px 70px rgba(0,0,0,.6)}
.lb-btn{
  position:absolute;background:rgba(255,255,255,.1);color:#fff;border:1px solid rgba(255,255,255,.2);
  border-radius:50%;width:44px;height:44px;font-size:22px;line-height:1;cursor:pointer;
  display:flex;align-items:center;justify-content:center;transition:background .15s ease}
.lb-btn:hover{background:rgba(255,255,255,.22)}
.lb-close{top:18px;right:18px}
.lb-prev{left:18px;top:50%;transform:translateY(-50%)}
.lb-next{right:18px;top:50%;transform:translateY(-50%)}
.lb-count{position:absolute;bottom:16px;left:50%;transform:translateX(-50%);
  font-size:12.5px;color:rgba(255,255,255,.7);letter-spacing:.05em}
@media(max-width:767px){
  .lb{padding:12px}
  .lb-btn{width:38px;height:38px;font-size:19px}
  .lb-prev{left:8px}.lb-next{right:8px}.lb-close{top:10px;right:10px}
}
@media(prefers-reduced-motion:reduce){
  .lb{transition:none}
}
.list .row{display:block;padding:14px 16px;border:1px solid var(--line);border-radius:12px;margin-bottom:10px;background:rgba(255,255,255,.02)}
.list .row b{display:block;margin-bottom:4px}
.list .row span{color:var(--muted);font-size:13px}
.faqs details{border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-bottom:10px;background:rgba(255,255,255,.02)}
.faqs summary{cursor:pointer;font-weight:600}
.faqs p{margin:10px 0 0;color:var(--muted);font-size:13.5px}
.reviews{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.rv{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.rv-h{display:flex;justify-content:space-between;margin-bottom:6px;font-size:13px}
.rv p{margin:0;color:var(--muted);font-size:13.5px}
.rv-t{display:block;margin-top:8px;font-size:12px;color:var(--muted);opacity:.8}
.srvs .srv{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;border:1px solid var(--line);border-radius:12px;margin-bottom:10px;background:rgba(255,255,255,.02)}
.srv .t{display:block;font-size:12px;color:var(--muted)}
.srv b{font-size:14px}
.st{font-size:12px;padding:4px 10px;border-radius:99px;border:1px solid var(--line);color:var(--muted)}
.st.open{color:var(--jade);border-color:rgba(46,230,168,.3);background:rgba(46,230,168,.1)}
.dl{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:10px}

/* 列表页 */
.search{display:flex;gap:10px;margin:16px 0 22px}
.search input{flex:1;padding:11px 14px;border-radius:10px;border:1px solid var(--line);background:var(--panel);color:var(--txt);font-size:14px}
.pager{display:flex;gap:8px;margin-top:24px;flex-wrap:wrap}
.pg{padding:7px 13px;border-radius:8px;border:1px solid var(--line);font-size:13px;color:var(--muted)}
.pg.on{color:#231a05;background:var(--gold);border-color:transparent;font-weight:700}

/* 礼包 */
.glist{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.gcard{display:block;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px}
.gcard:hover{border-color:rgba(255,217,106,.42)}
.gcard b{display:block;font-size:15px;margin-bottom:4px}
.gname{display:block;font-size:12px;color:var(--gold);margin-bottom:8px}
.gcont{display:block;font-size:13px;color:var(--muted);margin-bottom:10px;min-height:40px}
.gstock{font-size:12px;color:var(--jade)}
.giftbox{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:28px}
.giftbox h1{margin:0 0 10px;font-size:26px}
.gcont-lg{color:var(--gold);font-size:15px;margin:0 0 18px}
.gd{display:grid;grid-template-columns:80px 1fr;gap:8px 14px;margin:0 0 22px;font-size:13.5px}
.gd dt{color:var(--muted)}
.gd dd{margin:0}
.codebox{display:flex;flex-direction:column;gap:4px;padding:16px;border-radius:12px;background:rgba(255,217,106,.1);border:1px solid rgba(255,217,106,.3)}
.codebox b{font-size:22px;letter-spacing:.14em;color:var(--gold);font-family:ui-monospace,monospace}
.codebox small{color:var(--muted)}

/* 表单 */
.authbox{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:30px}
.authbox h1{margin:0 0 6px;font-size:24px}
.authbox form{display:flex;flex-direction:column;gap:14px;margin-top:20px}
.authbox label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted)}
.authbox input{padding:12px 14px;border-radius:10px;border:1px solid var(--line);background:rgba(255,255,255,.04);color:var(--txt);font-size:15px}
.authbox input:focus{outline:2px solid rgba(255,217,106,.5);outline-offset:1px}
.err{padding:10px 14px;border-radius:10px;background:rgba(255,107,129,.12);border:1px solid rgba(255,107,129,.35);color:#ffb3bf;font-size:13px}
.switch{margin:18px 0 0;font-size:13px;color:var(--muted)}
.switch a{color:var(--gold)}
.hint{font-size:12px;color:var(--muted);margin:8px 0 0}

/* 账号 */
.mylist .myrow{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--line);border-radius:12px;margin-bottom:10px;background:rgba(255,255,255,.02)}
.myrow b{display:block;font-size:14px}
.myrow span{display:block;font-size:12px;color:var(--muted)}
.myrow code{color:var(--gold);font-size:15px;letter-spacing:.1em}

/* 开服表 */
.srv-list .srv-row{display:grid;grid-template-columns:150px 1fr 1fr 90px;gap:12px;align-items:center;padding:12px 16px;border:1px solid var(--line);border-radius:12px;margin-bottom:10px;background:rgba(255,255,255,.02);font-size:13.5px}
.srv-row .t{color:var(--muted)}

.back{display:inline-block;margin-bottom:16px;color:var(--muted);font-size:13px}
.article{font-size:15px;line-height:1.9;color:#dfe3f7}

/* 页脚 */
.ft{border-top:1px solid var(--line);padding:34px 0 40px;margin-top:20px;font-size:12.5px;color:var(--muted)}
.ft-links{display:flex;gap:18px;flex-wrap:wrap;margin-bottom:12px}
.ft-note{margin:0 0 8px;line-height:1.7}
.ft-copy{margin:0;opacity:.72}

/* 响应式：四档 */
@media(min-width:1025px){.grid{grid-template-columns:repeat(4,1fr)}}
@media(max-width:1024px){
  .grid{grid-template-columns:repeat(3,1fr)}
  .glist{grid-template-columns:repeat(2,1fr)}
  .srv-list .srv-row{grid-template-columns:130px 1fr 1fr 80px}
}
@media(max-width:767px){
  .nav{display:none}
  .grid{grid-template-columns:repeat(2,1fr)}
  .glist{grid-template-columns:1fr}
  .feats,.reviews,.shots{grid-template-columns:1fr}
  .ghero-in{flex-direction:column;gap:16px}
  .gcover{flex:none;width:120px}
  .srv-list .srv-row{grid-template-columns:1fr 1fr;row-gap:6px}
  .sec{padding:30px 0}
}
@media(max-width:375px){
  .wrap{padding:0 14px}
  .hero{padding:40px 0 30px}
  .gcta .btn{width:100%}
  /* 这里原来有一条 .grid{grid-template-columns:1fr}，已删除。
     它让卡片在 375 及以下塌成单列：一张卡占满整屏，
     而卡片图的 sizes 是按两列（46vw）写的，于是 345px 的槽位只拿到 360px 的图，
     在 2 倍屏上等于欠采样一倍——屏幕看着糊就是这么来的。
     两列在 320px 宽下每列仍有 139px，够用。 */
}

/* ============================================================
   前端补全：筛选条 / 排行榜 / 福利商城 / 个人中心
   ============================================================ */

/* 筛选条：左侧标签 + 右侧 chip 组 */
.filters{margin:6px 0 4px}
.frow{display:flex;align-items:flex-start;gap:12px;padding:8px 0;border-bottom:1px dashed var(--line)}
.frow:last-child{border-bottom:none}
.fl{flex:0 0 38px;font-size:12.5px;color:var(--muted);padding-top:7px}
.frow .chips{margin:0}
.sel{padding:11px 14px;border-radius:10px;border:1px solid var(--line);background:var(--panel);color:var(--txt);font-size:14px;min-width:200px}

/* 排行榜 */
.rklist{display:flex;flex-direction:column;gap:8px;margin-top:16px}
.rk{display:grid;grid-template-columns:44px 64px 1fr auto;gap:14px;align-items:center;
  padding:10px 14px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.03)}
.rk:hover{border-color:rgba(255,217,106,.42);background:rgba(255,217,106,.05)}
.rk-no{font-size:17px;font-weight:700;color:var(--muted);text-align:center}
.rk.top1 .rk-no{color:#ffd96a}
.rk.top2 .rk-no{color:#d6dae8}
.rk.top3 .rk-no{color:#e0a878}
.rk-img{width:64px;height:40px;border-radius:8px;overflow:hidden;background:#0b1026;
  display:flex;align-items:center;justify-content:center}
.rk-img img{width:100%;height:100%;object-fit:cover}
.rk-img .ph{font-size:18px;color:rgba(255,255,255,.5)}
.rk-body b{display:block;font-size:14.5px}
.rk-body .meta{font-size:12px;color:var(--muted)}
.rk-val{font-size:12.5px;color:var(--gold);white-space:nowrap}

/* 福利商城 */
.notice{padding:12px 16px;border-radius:12px;margin:14px 0 20px;font-size:13px;line-height:1.7;
  color:#ffe89f;background:rgba(255,217,106,.1);border:1px solid rgba(255,217,106,.28)}
.mgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.mcard{display:flex;flex-direction:column;padding:16px;border-radius:14px;
  border:1px solid var(--line);background:var(--panel)}
.mcard:hover{border-color:rgba(46,230,168,.45)}
.mcard-top{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px}
.mcard-top b{font-size:15px}
.mtag{font-size:11.5px;padding:2px 8px;border-radius:99px;color:#052a1f;background:var(--jade)}
.mgame{margin:0 0 8px;font-size:12px;color:var(--gold)}
.mcont{margin:0 0 14px;font-size:13px;color:var(--muted);line-height:1.7;min-height:44px}
.mgo{margin-top:auto;font-size:13px;color:var(--jade)}

/* 个人中心两栏 */
.cols2{display:grid;grid-template-columns:320px 1fr;gap:16px;margin-top:16px}
.panel-dark{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:18px}
.panel-dark .gd{grid-template-columns:72px 1fr}
.inline-form-f{display:inline}
.h3{font-size:15px;margin:0 0 12px;color:var(--txt)}
.gstock.zero{color:var(--muted)}

@media(max-width:1024px){
  .mgrid{grid-template-columns:repeat(2,1fr)}
  .cols2{grid-template-columns:1fr}
}
@media(max-width:767px){
  /* 筛选区在手机上原来是"标签一行 + chip 换行"，四组用掉近 400px，
     打开游戏库第一屏连一款游戏都看不到（实测 375×667 下首屏全是筛选）。
     改成：标签固定在左、chip 单行横向滚动，四组压到 190px 左右，
     并且不引入 JS、不隐藏任何筛选项。 */
  .frow{flex-direction:row;align-items:center;gap:8px;padding:5px 0;border-bottom:none}
  .fl{flex:0 0 32px;padding-top:0;font-size:12px}
  .frow .chips{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;gap:6px;padding:2px 0;
    -webkit-overflow-scrolling:touch;scrollbar-width:none}
  .frow .chips::-webkit-scrollbar{display:none}
  .frow .chip{flex:0 0 auto;padding:7px 12px}
  .filters{margin:2px 0 0}
  .search{margin:12px 0 16px}
  /* 游戏截图在手机上是横向滑动画廊，不是单列大图。
     原因有两个：单列满宽在 3 倍屏要 1060px 的图（候选最大只有 640，等于欠一半采样）；
     而且每张截图占一整屏，用户根本不知道后面还有几张。
     画廊宽 78vw，右侧露出下一张的边缘，天然提示"还能滑"。 */
  .shots{display:flex;gap:10px;overflow-x:auto;overflow-y:hidden;padding:2px 0 6px;
    scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .shots::-webkit-scrollbar{display:none}
  .shots a.shot{flex:0 0 78%;scroll-snap-align:start}
  .shots-hint{text-align:left}
  /* 触控尺寸：手机上 chip 和头部链接原来只有 28–35px 高，指腹按下去容易点到旁边。
     40px 是通用下限（iOS HIG 44、Material 48，取 40 作为密集列表的折中）。 */
  .chip{min-height:40px;display:inline-flex;align-items:center}
  .logo{padding:6px 0}
  .u{padding:10px 14px;min-height:40px;display:inline-flex;align-items:center}
  .rk{grid-template-columns:32px 52px 1fr;row-gap:4px}
  .rk-val{grid-column:2 / 4;font-size:12px}
  .mgrid{grid-template-columns:1fr}
  .sel{width:100%}
}

/* ---------- 收藏 ---------- */
.btn.fav{gap:6px}
.btn.fav .fav-i{font-size:15px;line-height:1;color:var(--muted)}
.btn.fav.on{border-color:rgba(255,217,106,.55);background:rgba(255,217,106,.12)}
.btn.fav.on .fav-i{color:var(--gold)}
.favlist{display:flex;flex-direction:column;gap:8px}
.favrow{display:flex;justify-content:space-between;align-items:center;gap:10px;
  padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.03)}
.favrow:hover{border-color:rgba(255,217,106,.4)}
.favrow b{font-size:13.5px}
.favrow span{font-size:12px;color:var(--gold)}

/* ---------- 正文排版（Markdown 渲染结果） ---------- */
.article h2,.article h3,.article h4{margin:26px 0 10px;line-height:1.4}
.article h2{font-size:20px}
.article h3{font-size:17px}
.article h4{font-size:15px;color:var(--muted)}
.article p{margin:0 0 14px}
.article ul,.article ol{margin:0 0 14px;padding-left:22px}
.article li{margin-bottom:6px}
.article blockquote{margin:0 0 14px;padding:10px 14px;border-left:3px solid rgba(255,217,106,.5);
  background:rgba(255,217,106,.06);border-radius:0 8px 8px 0;color:var(--muted)}
.article code{padding:1px 6px;border-radius:5px;background:rgba(255,255,255,.08);font-size:13px}
.article hr{border:none;border-top:1px solid var(--line);margin:22px 0}
.article a{color:var(--gold);text-decoration:underline;text-underline-offset:3px}
