/* ==========================================================
   重装忒修斯 · 废土工业金属设计系统
   （2026-10-11 由复古怀旧风切换为金属磨砂反光·废土朋克工业风）
   正文用系统楷体（清晰易读）；数字/英文保留像素味。 */

/* 像素字体本地化：自托管 woff2，避免 Google Fonts 外部请求阻塞首屏渲染（国内网络易超时白屏） */
@font-face {
  font-family: 'Press Start 2P';
  src: url('../fonts/press-start-2p.woff2') format('woff2');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

:root{
  /* 暖色 FC 像素色板（怀旧养眼，主体场景用）
     银金属框+深黑内屏 仅保留在登录/注册/音量/签到等"设置界面" */
  --bg:        #acb975;   /* 橄榄绿大背景（NES/FCEPA 绿） */
  --bg-2:      #362a1e;
  --panel:     #4a3826;   /* 暖木棕面板 */
  --panel-2:   #5b4530;
  --line:      #6b5436;
  --line-2:    #8a6c44;
  --cream:     #e5d4b0;   /* 暖米（文字/亮边） */
  --steel:     #d8dade;   /* 仅金属框相关点缀 */
  --amber:     #e8a33d;   /* 暖橙主强调 */
  --amber-dim: #b5762a;
  --olive:     #8fae4a;   /* 橄榄绿（公告栏保留） */
  --blue:      #3f7fbf;   /* 点踩（下三角）蓝，未点击三角色 & 点击后背景色 */
  --blue-dark: #1f3f66;   /* 点踩按下硬阴影 */
  --rust:      #c0562f;
  --red:       #d1503f;
  --teal:      #4f9c95;
  --text:      #f0e6d2;   /* 暖米正文 */
  --dim:       #b3a084;
  --dimmer:    #7d6c52;

  --px: 2px;
  --shadow-hard: 4px 4px 0 #1a130c;
  /* 楼中楼缩进量＝一个头像身位（顶层作者栏头像区宽度），右侧不缩进保持对齐 */
  --sub-indent: 74px;
  /* 暖色凸起像素框（主体场景）：浅暖上左 + 深褐下右 = 立体砖块 */
  --bevel-light: #7c6038;
  --bevel-dark:  #1a130c;
  --metal-frame: url('../img/metal-frame.png');
  --warm-bg: url('../img/warm-bg.png');
  --font-pixel: "Press Start 2P", "KaiTi", "Kaiti SC", "STKaiti", "DFKai-SB", "Microsoft YaHei", monospace;
  --font-body: "KaiTi", "Kaiti SC", "STKaiti", "DFKai-SB", "Microsoft YaHei", "PingFang SC", "Hiragino Sans GB", serif;
}

*{ box-sizing:border-box; }

html,body{ margin:0; padding:0; }
body{
  min-height:100vh; display:flex; flex-direction:column;   /* 粘性布局：短页面时页脚贴浏览器底边 */
  background:
    linear-gradient(180deg, rgba(45,52,28,.28) 0%, rgba(40,46,24,.42) 45%, rgba(30,34,18,.55) 100%),
    var(--warm-bg) 0 0 / 128px 128px repeat #acb975;
  color: var(--text);
  font-family: var(--font-body);
  font-size:17px;
  line-height: 1.75;
  -webkit-font-smoothing: none;
}
main.main-view{ flex:1; position:relative; z-index:1; }

/* CRT 扫描线（很轻，怀旧但不刺眼） */
.scanlines{
  position:fixed; inset:0; pointer-events:none; z-index:9999; opacity:.08;
  background: repeating-linear-gradient(
    to bottom, rgba(0,0,0,0) 0 2px, rgba(0,0,0,.5) 2px 4px
  );
  mix-blend-mode: multiply;
}

a{ color: var(--amber); text-decoration:none; }
a:hover{ color:#ffc866; }

img{ max-width:100%; }
img.pixelated, .hero-map, .hero-tank, .board-man, .diary-face, .brand-ship,
.mm-auth-logo, .mm-auth-copy, .avatar-box, .checkin-cell, #bgmIcon{
  image-rendering: pixelated;
}

/* 全站自定义指针：诺亚手指（32×32，热点在指尖 12,4） */
/* 用 !important 压过各元素自带的 cursor:pointer（如 .hero-map、#bgmVol 等） */
*, *::before, *::after{
  cursor: url('../img/cursor-pointer.png') 12 4, auto !important;
}
/* 可交互元素：同图，回退 pointer（保留"可点"语义），含缩略图与音量条 */
a, button, .btn, .mm-btn, .mm-mode, input[type=range], select, label,
.mm-btn-eye, .hero-map, .hero-map-link, .card, .btn-close,
#bgmVol, #bgmMute, #bgmIcon{
  cursor: url('../img/cursor-pointer.png') 12 4, pointer !important;
}
/* 禁用态保留 not-allowed 语义 */
.btn:disabled, .mm-btn:disabled, input[disabled], select[disabled], [disabled]{
  cursor: url('../img/cursor-pointer.png') 12 4, not-allowed !important;
}

/* 主体窄容器：两侧留出大量留白，让 fixed 悬浮面板（左世界频道300 / 右签到214+排行榜300）落在留白区，不压主内容 */
/* 主体容器：在常见分辨率下留出适量留白，让 fixed 悬浮面板（左世界频道300 / 右签到214+排行榜300）落在留白区，不压主内容 */
.wrap{ width:100%; max-width:1120px; margin:0 auto; padding:0 16px; }

/* ---------------- Header ---------------- */
.site-header{
  background:
    linear-gradient(180deg, #5b4530 0%, #4a3826 62%, #3a2c1e 100%);
  border-bottom: 3px solid #1a130c;
  box-shadow: 0 4px 0 #1a130c, inset 0 1px 0 rgba(255,235,200,.14);
  position: sticky; top:0; z-index: 60;
}
.header-inner{
  display:flex; align-items:center; gap:18px;
  min-height:66px; flex-wrap:wrap;
}
.brand{ display:flex; align-items:center; gap:10px; color:var(--text); }
.brand:hover{ color:var(--text); }
.brand-mark{
  font-family: var(--font-pixel);
  font-size:17px; line-height:1;
  background: var(--amber); color:#1a1206;
  padding:8px 6px; display:inline-block;
  box-shadow: 3px 3px 0 var(--rust);
}
.brand-text{ display:flex; flex-direction:column; align-items:center; margin-top:8px; }
.brand-text b{ font-size:19px; letter-spacing:3px; text-align:center; }
.brand-text i{
  font-style:normal; font-family:var(--font-pixel);
  font-size:8px; color:var(--dim); letter-spacing:1px; margin-top:3px;
  text-align:center;
}

.main-nav{ display:flex; gap:2px; flex:1; flex-wrap:wrap; }
.main-nav a{
  color: var(--dim);
  padding:7px 11px;
  font-size:17px; letter-spacing:1px;
  border: var(--px) solid transparent;
}
.main-nav a:hover{
  border-color:var(--line); background:#00000040;
  transform:scale(1.12);
  transition:transform .12s ease, color .12s ease;
}
/* 导航 hover 七色：紫 → 红（与栏目从左到右对调） */
.main-nav a[data-nav="news"]:hover{ color:#33cccc; }
.main-nav a[data-nav="forum"]:hover{ color:#33cc55; }
.main-nav a[data-nav="works"]:hover{ color:#ffdd00; }
.main-nav a[data-nav="people"]:hover{ color:#ff3333; }
.main-nav a[data-nav="doujin"]:hover{ color:#aa55ff; }
.main-nav a[data-nav="books"]:hover{ color:#ff8800; }
.main-nav a[data-nav="creation"]:hover{ color:#3399ff; }
.main-nav a.active{
  color:#1a1206; background:var(--amber);
  border-color:var(--amber);
  box-shadow: 3px 3px 0 var(--amber-dim);
}

.user-slot{ display:flex; align-items:center; gap:8px; }
/* 用户条：仿左侧 MM 标记的暖像素凸起风格（琥珀像素块 + rust 硬阴影 + 像素字），与标题栏整体协调 */
.user-chip{
  display:flex; align-items:center; gap:6px;
  background: var(--amber); color:#1a1206;
  border: 3px solid #1a130c;
  box-shadow: inset 2px 2px 0 rgba(255,235,200,.4), 3px 3px 0 var(--rust);
  padding:4px 10px; font-size:15px;
}
.user-chip .nick{ color:#1a1206; font-weight:bold; font-family:var(--font-pixel); font-size:15px; letter-spacing:1px;
  display:block; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:34px; }
/* 用户条头像：边长 = 左侧小船宽度 52px，像素显示 */
.user-chip .chip-avatar{
  width:52px; height:52px; flex-shrink:0;
  background-color:#0a0806; background-repeat:no-repeat;
  border:3px solid #1a130c; box-shadow:2px 2px 0 var(--rust);
  image-rendering:pixelated;
}

/* ---------------- Header 移动端 ---------------- */
@media (max-width:720px){
  .header-inner{
    display:grid;
    grid-template-columns: 1fr auto;
    grid-template-rows: auto auto;
    gap:8px 10px;
    min-height:auto;
    padding-top:10px; padding-bottom:10px;
  }
  .brand{ grid-column:1; grid-row:1; gap:8px; }
  .user-slot{ grid-column:2; grid-row:1; align-self:center; justify-self:end; }
  .main-nav{
    grid-column:1 / -1; grid-row:2;
    display:grid;
    grid-template-columns: repeat(4, 1fr);
    gap:4px;
  }
  .main-nav a{
    text-align:center;
    font-size:13px; letter-spacing:0;
    padding:6px 2px;
  }
  .brand-mark{ font-size:14px; padding:6px 5px; box-shadow:2px 2px 0 var(--rust); }
  .brand-ship{ height:34px; width:auto; }
  .brand-text{ margin-top:0; align-items:flex-start; }
  .brand-text i{ display:none; }          /* 手机端隐藏英文副标题，减少拥挤 */
  .brand-text b{ font-size:16px; letter-spacing:2px; }
  .user-chip{ padding:3px 8px; }
  .user-chip .chip-avatar{ width:38px; height:38px; border-width:2px; }
  .user-chip .nick{ font-size:13px; max-width:30px; }
}

/* ---------------- Buttons ----------------
   回归 FC 怀旧像素暖调：去掉强制银色金属面，改为与周围暖绿场景协调的
   暖色像素凸起按钮（深褐描边 + 立体斜边），按场景配语义色。 */
.btn{
  font-family: var(--font-body);
  font-size:16px; letter-spacing:1px;
  padding:7px 15px;
  background: var(--amber);
  color:#1a1206;
  border: 3px solid #1a130c;
  box-shadow:
    inset 2px 2px 0 rgba(255,235,200,.4),
    inset -2px -2px 0 rgba(0,0,0,.28),
    3px 3px 0 #1a130c;
  cursor:pointer;
  text-align:center;
  transition: transform .06s steps(2);
}
.btn:hover{ filter:brightness(1.05); }
.btn:active{ transform: translate(2px,2px); box-shadow: inset 2px 2px 0 rgba(255,235,200,.3), 0 0 0 #1a130c; }
/* 变体：语义暖色，仍带像素凸起斜边，与暖绿场景协调 */
.btn-primary{ background: var(--amber); color:#1a1206; }
.btn-olive{ background: var(--olive); color:#141808; border-color:#1a130c; }
/* 下载按钮：1cm 高的黄金分割比浅蓝像素按钮，一律靠左 */
.btn-download{
  display:flex;
  align-items:center;
  justify-content:center;
  box-sizing:border-box;
  height:1cm;
  width:1.618cm;
  padding:0;
  margin:0;
  align-self:flex-start;
  font-size:13px;
  letter-spacing:1px;
  white-space:nowrap;
  background:#8ecae6;
  color:#0d2c36;
  border:3px solid #1a130c;
  box-shadow:
    inset 2px 2px 0 rgba(255,255,255,.45),
    inset -2px -2px 0 rgba(0,45,70,.38),
    3px 3px 0 #1a130c;
  text-align:center;
}
.btn-download:hover{ background:#a8d8ef; filter:brightness(1.03); }
.btn-download:active{ transform:translate(2px,2px); box-shadow:inset 2px 2px 0 rgba(255,255,255,.35), 0 0 0 #1a130c; }
/* 下载扣费后 1 秒跳转等待中：按钮禁用、不可重复点击 */
.btn-download.dl-busy{ opacity:.6; pointer-events:none; cursor:wait; }
/* 下载按钮行：按钮靠左，总下载次数小字靠右 */
.dl-row{ display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; }
.dl-count{ font-size:12px; color:var(--text); opacity:.85; white-space:nowrap; }
/* 据点详情「十大最佳重装同人排名」单行显示在作品名下方；字号比常规 .kv 大 2px（14→16），填「无」时占位保持下方栏位置 */
.doujin-ranking{ display:flex; align-items:center; gap:8px; font-size:16px; margin:6px 0 12px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; min-height:24px; }
.doujin-ranking span{ color:var(--dim); flex-shrink:0; }
.doujin-ranking b{ color:var(--amber); font-weight:normal; flex-shrink:0; }
.doujin-ranking--empty{ visibility:hidden; }
/* 详情页「编辑」按钮 + 其正下方居中扣费提示（点击 1 次扣 1 G 才跳转编辑页） */
.edit-op{ display:flex; flex-direction:column; align-items:stretch; gap:2px; }
.edit-cost-note{ font-size:12px; color:#fff; letter-spacing:1px; text-align:center; text-shadow:0 1px 0 rgba(0,0,0,.55); }
.btn-ghost{ background:#f0e6d2; color:#3a2c1e; }
.btn-danger{ background: var(--red); color:#fff; }
/* 公民管理「+5G」每日发放专属按钮：黄底 */
.btn-daily5{ background:#f2c832; color:#3a2a05; border-color:#1a130c; }
.btn-daily5:hover{ background:#f7d44e; }
/* ME 页假「后台管理」按钮碎裂态：换成整图按钮素材，去按钮底框只留像素图 */
.btn-broken{ background:none; border:none; box-shadow:none; padding:0; min-width:0; min-height:0; }
.btn-broken:hover{ filter:brightness(1.05); }
.btn-broken:active{ transform:none; box-shadow:none; }
.btn-broken img{ display:block; image-rendering:pixelated; }
/* 素材位置：不改图片本身，按「水平中线重合」整体下移。
   按钮底边固定、图片越高中心越往上跑 → 下移量 = (图片高 - 原按钮高) / 2，
   由 JS 首次量到的原按钮高度写入 --fake-admin-h（mailBox_2=38px、mailBox_3=55px 为素材原始高度）。
   只调垂直中线，水平方向不做对齐（跟随按钮的右对齐）。 */
.btn-broken img[src*="mailBox_2"]{ transform: translateY(calc((38px - var(--fake-admin-h, 30px)) / 2)); }
.btn-broken img[src*="mailBox_3"]{ transform: translateY(calc((55px - var(--fake-admin-h, 30px)) / 2)); }
.btn.block{ display:block; width:100%; }
.btn:disabled{ opacity:.5; cursor:not-allowed; transform:none; filter:grayscale(.4); }

.btn-close{
  background:transparent; border:none; color:var(--dim);
  font-size:23px; line-height:1; cursor:pointer; padding:0 4px;
}
.btn-close:hover{ color:var(--red); }

/* ---------------- Layout / Panels ----------------
   主体内容场景 = 暖色像素砖块（深褐外描 + 内嵌立体斜边），
   银金属框+深黑内屏 只留给登录/注册/音量/签到等设置界面。 */
.main-view{ min-height:0; padding-top:22px; padding-bottom:24px; }

/* 暖色像素凸起块：深褐外描 3px + 内嵌立体斜边（左上受光、右下阴影） */
.pixel-block{
  background: var(--panel);
  border: 3px solid #1a130c;
  box-shadow:
    inset 3px 3px 0 rgba(255,235,200,.09),
    inset -3px -3px 0 rgba(0,0,0,.35),
    4px 4px 0 #1a130c;
}
/* 内容区块直接复用像素凸起外观 */
.panel{
  background: var(--panel);
  border: 3px solid #1a130c;
  box-shadow: inset 3px 3px 0 rgba(255,235,200,.09), inset -3px -3px 0 rgba(0,0,0,.35), 4px 4px 0 #1a130c;
  padding:16px;
}
/* 账号信息栏：背景纯黑（不透出大背景绿） */
.panel.info-panel{ background:#000; box-shadow: inset 3px 3px 0 rgba(255,235,200,.06), 4px 4px 0 #1a130c; }
.panel + .panel{ margin-top:16px; }

.page-head{
  display:flex; align-items:flex-end; justify-content:space-between;
  gap:12px; flex-wrap:wrap; margin-bottom:16px;
  border-bottom: var(--px) dashed var(--line);
  padding-bottom:10px;
}
/* 后台列表页页头右侧的操作组（如举报审核的状态筛选） */
.adm-row-ops{ display:flex; gap:8px; flex-wrap:wrap; }
.page-title{
  font-family: var(--font-pixel);
  font-size:18px; letter-spacing:2px; color:var(--amber);
  margin:0; line-height:1.4; cursor:pointer;
}
.page-title::before{
  /* 返回箭头前缀（点击标题直接回首页） */
  content:'←\00a0'; display:inline; margin-right:8px;
  color:var(--amber);
}
/* 鼠标移到栏目标题不出现下划线（仅箭头/字色轻微变化） */
.page-title:hover{ color:#ffc866; }
.page-sub{ color:var(--text); font-size:18px; margin:8px 0 0; letter-spacing:1px; }

.section-title{
  font-size:17px; letter-spacing:2px; color:var(--amber);
  margin:0 0 12px; padding-left:10px;
  border-left: 5px solid var(--amber-dim);
}

/* 栏目标题「← 」前缀：点击直接回首页（箭头在 .page-title::before） */

.grid{ display:grid; gap:14px; }
.grid-2{ grid-template-columns: repeat(2, minmax(0,1fr)); }
.grid-3{ grid-template-columns: repeat(3, minmax(0,1fr)); }
.grid-4{ grid-template-columns: repeat(4, minmax(0,1fr)); }
@media (max-width: 880px){
  .grid-2,.grid-3,.grid-4{ grid-template-columns: repeat(2, minmax(0,1fr)); }
}
@media (max-width: 560px){
  .grid-2,.grid-3,.grid-4{ grid-template-columns: 1fr; }
}

/* ---------------- Cards ---------------- */
.card{
  background: var(--panel);
  border:3px solid #1a130c;
  box-shadow: inset 2px 2px 0 rgba(255,235,200,.08), inset -2px -2px 0 rgba(0,0,0,.35), 3px 4px 0 #1a130c;
  padding:14px;
  display:flex; flex-direction:column; gap:8px;
  transition: transform .06s steps(2);
}
.card:hover{ transform: translate(-1px,-1px); box-shadow: inset 2px 2px 0 rgba(255,235,200,.10), inset -2px -2px 0 rgba(0,0,0,.35), 4px 5px 0 #1a130c; }
.card h3{ margin:0; font-size:17px; line-height:1.5; }
.card h3 a{ color:var(--text); }
.card h3 a:hover{ color:var(--amber); }
.card .meta{ color:var(--dim); font-size:14px; display:flex; gap:10px; flex-wrap:wrap; }
.card p{ margin:0; color:#e7d9bd; font-size:15px; }

/* 首页两栏：左「大航海日记」撑满栏高，底边与右栏「风暴中心（最热资源）」对齐 */
.home-cols{ align-items:stretch; }
.home-cols > div{ display:flex; flex-direction:column; }
.home-diary .diary-grid{ flex:1 1 auto; display:flex; }
.home-diary .diary-grid > *{ flex:1 1 auto; }
/* 首页日记卡：正文排版与详情页一致；创建者小字沉到撑高后的卡片底角 */
.diary-body{ font-size:15px; color:#e7d9bd; line-height:1.85; word-break:break-word; }
.card > .article-foot{ margin-top:auto; padding-top:14px; }
/* 首页日记卡标题：上下各空一行（后续首页日记统一此格式） */
.home-diary .diary-grid .diary-title{ margin:26px 0; }
/* 首页日记卡：diary.jpg 羊皮纸背景铺满，文字统一换深褐墨水色保证可读 */
/* 首页日记卡：diary.jpg 羊皮纸背景铺满；
   文字整体放大 2 号并收入背景安全区——padding 避开四角花卉角饰与左右卷草纹，
   标题/日期行/创建者居中，正文左对齐，占据背景中间合理面积 */
.home-diary .diary-grid > .card{
  background-image:url('../img/diary.jpg');
  background-size:100% 100%;
  background-repeat:no-repeat;
  background-position:center;
  color:#4a3420;
  padding:9% 11% 8%;
  gap:10px;
}
.home-diary .diary-grid > .card .meta{
  justify-content:center; text-align:center;
  color:#8a6d42; font-size:16px;
}
.home-diary .diary-grid > .card .meta .byline b{ color:#6b4d22; }
.home-diary .diary-grid > .card .diary-title{
  margin:26px 0; color:#3a2a18; font-size:20px; text-align:center;
}
.home-diary .diary-grid > .card .diary-body{
  color:#4a3420; font-size:17px; line-height:1.9;
}
.home-diary .diary-grid > .card .article-foot{ padding-top:10px; text-align:center; }
.home-diary .diary-grid > .card .article-foot .item-creator{
  color:#8a6d42; font-size:14px; letter-spacing:2px;
}

/* ---------------- 风暴中心（首页右侧 5 栏目） ---------------- */
.storm-stack{ display:flex; flex-direction:column; gap:14px; }
.storm-card h3{ font-size:16px; display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.storm-card-link{ display:block; color:var(--text); text-decoration:none; }
.storm-card-link:hover{ border-color:var(--amber-dim); }
.storm-card-link .storm-title-link{ color:var(--amber); }
.storm-ico{ color:var(--amber); font-family:var(--font-pixel); }
.storm-tip{ font-size:12px; font-weight:normal; }
.storm-list{ display:flex; flex-direction:column; }
.storm-row{
  display:flex; align-items:center; gap:8px; justify-content:space-between;
  padding:7px 8px; border:var(--px) solid var(--line); background:#00000030;
  color:var(--text); text-decoration:none; margin-top:6px;
}
.storm-row:hover{ background:#00000048; border-color:var(--amber-dim); }
.storm-row .sr-main{ min-width:0; display:flex; flex-direction:column; gap:2px; }
.storm-row .sr-main b{ font-size:14px; color:var(--text); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.storm-row .sr-sub{ font-size:12px; color:var(--dim); }
.storm-row .sr-side{ font-family:var(--font-pixel); font-size:13px; color:var(--amber); flex-shrink:0; }
.storm-empty{ font-size:13px; color:var(--dimmer); padding:6px 4px; }
.storm-empty-help{ font-size:15px; color:#fff; text-align:center; letter-spacing:1px; }

.thumb{
  background: linear-gradient(135deg, #5b4530, #241a11);
  border: var(--px) solid var(--line);
  height:110px; display:flex; align-items:center; justify-content:center;
  font-family: var(--font-pixel); font-size:21px; color:var(--cream);
  overflow:hidden;
}
.thumb img{ width:100%; height:100%; object-fit:cover; }

.tag{
  display:inline-block; background:var(--bg-2); border:var(--px) solid var(--line);
  color:var(--dim); font-size:12px; padding:1px 7px; letter-spacing:1px;
}
.tag-amber{ color:var(--amber); border-color:var(--amber-dim); }
.tag-olive{ color:var(--olive); border-color:#5c7a2c; }
.tag-rust{ color:var(--rust); border-color:#8a4023; }
.tag-gray{ color:#9a8f7a; border-color:#6f6450; background:rgba(0,0,0,.18); }

/* 身份徽章：彩色像素字，无边框（区别于 .tag 的长方边框） */
.rank-badge{
  display:inline-block; font-family:var(--font-pixel); font-size:16px;
  letter-spacing:2px; color:var(--dim);
}
.rank-badge.tag-amber{ color:var(--amber); }
.rank-badge.tag-olive{ color:var(--olive); }
.rank-badge.tag-rust{ color:var(--rust); }

/* ---------------- Hero ---------------- */
.hero{
  position:relative; overflow:hidden;
  background: linear-gradient(180deg, #5b4530 0%, #2c2115 100%);
  border:3px solid #1a130c;
  box-shadow: inset 3px 3px 0 rgba(255,235,200,.10), inset -3px -3px 0 rgba(0,0,0,.4), 5px 5px 0 #1a130c;
  padding:28px 22px;
  text-align:center;
  margin-bottom:20px;
}
.hero h1{
  font-family: var(--font-pixel);
  font-size:25px; color:var(--amber); margin:0 0 12px; letter-spacing:3px;
  text-shadow: 3px 3px 0 #1a130c;
}
.hero p{ color:#e7d9bd; margin:0 auto 16px; max-width:620px; font-size:15px; }
.hero-actions{ display:flex; gap:10px; justify-content:center; flex-wrap:wrap; }
.hero-actions .btn:hover{
  transform:scale(1.12);
  transition:transform .12s ease;
}
.hero-tank{
  position:absolute; right:14px; bottom:30px; width:140px;  /* red-wolf 70×46 → 整数 2 倍，像素不糊 */
  image-rendering: pixelated; opacity:.92; pointer-events:none;
}
/* 小地图（world-map.png 自带边框与指南针）：与右侧坦克同排，点击进入整页地图 */
.hero-map-link{
  position:absolute; left:14px; bottom:30px; display:block; line-height:0;
}
.hero-map{
  display:block; width:150px;
  image-rendering: pixelated;
  cursor:pointer;
}
.hero-map-link:hover .hero-map{ opacity:.85; }
.hero-rock{ width:36px; image-rendering:pixelated; vertical-align:middle; margin:0 6px; }
/* 红色坦克热区：覆盖 hero-tank 的透明可点区域，触发地图动画 */
.hero-tank-hit{
  position:absolute; right:14px; bottom:30px; width:140px; height:96px;
  background:transparent; border:0; padding:0; margin:0;
  opacity:0; z-index:3;
}
.hero-tank-hit:focus, .hero-tank-hit:focus-visible{ outline:0; box-shadow:none; opacity:0; }
@media (max-width:560px){ .hero-tank-hit{ width:96px; } }
@media (max-width:860px){ .hero-map-link{ display:none; } }
@media (max-width:560px){
  .hero h1{ font-size:15px; }
  .hero-tank{ width:96px; opacity:.5; }
}

/* ---------------- MM1 世界地图整页 ---------------- */
.map-fullpage{ padding:6px 0 20px; }
.map-backline{ margin:0 0 10px; }
.map-full{
  display:block; width:100%; max-width:1400px; margin:0 auto;
  image-rendering: auto;   /* 大尺寸地图缩小显示：用平滑缩放，避免 pixelated 摩尔纹点阵 */
  border:6px solid #000;
  background:#000;
}

/* ---------------- 城镇页「按地区」：世界地图 + 正传节点 ---------------- */
.works-view-toggle{ display:flex; gap:8px; margin:0 0 14px; }
.works-view-btn{
  font-family:var(--font-body); font-size:14px; padding:6px 14px; cursor:pointer;
  background:#3a2c1e; color:var(--dim);
  border:3px solid #1a130c;
  box-shadow: inset 2px 2px 0 rgba(255,235,200,.08), 3px 3px 0 #1a130c;
}
.works-view-btn.active{ background:var(--amber); color:#1a1206; }

.world-map-wrap{
  position:relative; width:100%; max-width:900px; margin:0 auto;
  background:#0a0806; border:6px solid #000;
}
.world-map{
  display:block; width:100%; height:auto; image-rendering:auto;
  border:0; background:#0a0806;
}
.world-map-nodes{ position:absolute; inset:0; pointer-events:none; }
.map-node{
  position:absolute; transform:translate(-50%,-50%); pointer-events:auto;
  display:flex; flex-direction:column; align-items:center; gap:2px;
  text-decoration:none;
}
/* 节点圆点：暖橙像素方点 + 锈红硬阴影，像地图上的一座城镇标记 */
.map-node-dot{
  width:13px; height:13px; background:var(--amber); border:2px solid #1a1206;
  box-shadow:2px 2px 0 var(--rust); display:block;
  animation:map-node-pulse 1.6s ease-in-out infinite;
}
@keyframes map-node-pulse{ 0%,100%{ box-shadow:2px 2px 0 var(--rust);} 50%{ box-shadow:2px 2px 0 var(--rust), 0 0 8px rgba(232,163,61,.8);} }
.map-node-label{
  font-family:var(--font-pixel); font-size:10px; letter-spacing:1px; color:var(--text);
  background:#1a1206cc; padding:2px 4px; white-space:nowrap; line-height:1;
}
.map-node:hover .map-node-dot{ background:#ffc866; }
.map-node:hover .map-node-label{ color:#000; background:var(--amber); }
.world-map-tip{
  text-align:center; font-size:13px; color:var(--dim);
  margin:10px 0 0; padding:0 8px; letter-spacing:1px;
}

.stat-row{ display:flex; gap:14px; justify-content:center; flex-wrap:wrap; margin-top:18px; }
.stat{
  background:#00000040; border:2px solid var(--line);
  box-shadow: inset 1px 1px 0 rgba(255,235,200,.08), 2px 2px 0 #1a130c;
  padding:8px 14px; min-width:96px;
}
.stat b{ display:block; font-family:var(--font-pixel); font-size:16px; color:var(--amber); }
.stat span{ font-size:14px; color:var(--dim); letter-spacing:1px; }

/* 站点数据排行榜 */
.card-stats h3{ color:var(--amber); }
/* 后台管理首页：条目审核 / 举报审核 / 私信箱 三卡护眼黄 */
.card.card--red{ background:#c9a84e; border-color:#1a130c; }
.card.card--red h3{ color:#1a130c; }
.card.card--red p{ color:#1a130c; }
.card.card--red:hover{ background:#d4b76a; }
/* 短信频控监控告警卡：超阈值时琥珀色描边 + 标题高亮 */
.card-warn{ border-color:var(--amber); box-shadow:inset 0 0 0 2px var(--amber), 4px 4px 0 #1a130c; }
.card-warn h3{ color:#e8a33d; }
.rank-tabs{
  display:flex; gap:8px; margin:0 0 16px;
}
.rank-tab{
  background: var(--panel);
  border:3px solid #1a130c;
  box-shadow: inset 2px 2px 0 rgba(255,235,200,.08), inset -2px -2px 0 rgba(0,0,0,.35), 3px 3px 0 #1a130c;
  color:var(--text);
  padding:6px 16px; font-family:var(--font-body); font-size:16px; cursor:pointer;
}
.rank-tab:hover{ filter:brightness(1.05); }
.rank-tab.active{
  background:var(--amber); color:#1a1206;
}
/* 短信排行：可点击排序列头（互斥，再点恢复） */
.rank-table th.th-sort{ cursor:pointer; }
.rank-table th.th-sort:hover{ color:#fff; }
.rank-table th.th-sort.active{ color:#fff; }
.rank-table th.th-sort .th-arrow{ display:inline-block; margin-left:4px; font-size:11px; }
.rank-table th.th-sort .th-arrow::after{ content:'▽'; opacity:.4; }
.rank-table th.th-sort.active .th-arrow::after{ content:'▼'; opacity:1; color:#fff; }
.rank-table-wrap{ overflow-x:auto; }
.rank-table{
  width:100%; border-collapse:separate; border-spacing:0;
  background:var(--panel); border:3px solid #1a130c;
  box-shadow: inset 2px 2px 0 rgba(255,235,200,.08), inset -2px -2px 0 rgba(0,0,0,.35), 4px 4px 0 #1a130c;
}
.rank-table th,.rank-table td{
  padding:10px 12px; text-align:left; border-bottom:2px solid #1a130c;
}
.rank-table th{
  background:#1a1206cc; color:var(--amber); font-weight:normal; font-size:15px; white-space:nowrap;
}
.rank-table td{ font-size:16px; vertical-align:top; }
.rank-table tr:last-child td{ border-bottom:none; }
.rank-table small{ display:block; color:var(--dim); font-size:13px; margin-top:2px; }
.rank-num{
  font-family:var(--font-pixel); font-size:15px; color:var(--amber); text-align:center; width:46px;
}
.rank-user{ min-width:160px; }
.rank-user .tag{ margin:0 6px; }
.rank-res{ white-space:nowrap; }
.rank-total{ font-family:var(--font-pixel); color:var(--amber); white-space:nowrap; }
.empty-cell{ text-align:center; color:var(--dim); padding:28px; }

/* ---------------- List rows ---------------- */
.list{ display:flex; flex-direction:column; gap:10px; }
.row{
  background: var(--panel);
  border:3px solid #1a130c;
  box-shadow: inset 2px 2px 0 rgba(255,235,200,.08), inset -2px -2px 0 rgba(0,0,0,.35), 3px 4px 0 #1a130c;
  padding:14px 16px;
  display:flex; align-items:center; gap:14px;
}
.row:hover{ box-shadow: inset 2px 2px 0 rgba(255,235,200,.12), inset -2px -2px 0 rgba(0,0,0,.35), 3px 4px 0 #1a130c; }
.row .row-main{ flex:1; min-width:0; }
.row .row-main h4{ margin:0 0 4px; font-size:17px; font-weight:normal; }
.row .row-main h4 a{ color:var(--text); }
.row .row-main h4 a:hover{ color:var(--amber); }
.row .row-main p{ margin:0; color:var(--dim); font-size:14px; }
.row .row-side{
  text-align:right; font-size:14px; color:var(--dim); flex-shrink:0;
  display:flex; flex-direction:column; gap:3px; align-items:flex-end;
}
.row .row-side b{ font-family:var(--font-pixel); font-size:14px; color:var(--amber); }

.badge-count{
  font-family:var(--font-pixel); font-size:12px;
  background:var(--bg-2); border:var(--px) solid var(--line);
  color:var(--amber); padding:4px 7px; min-width:52px; text-align:center;
}

/* ---------------- Article ---------------- */
.article{ max-width:820px; }
.article h1{ font-size:24px; margin:0 0 8px; letter-spacing:1px; }
.article-cover{ margin:0 0 16px; max-width:360px; }
.article-cover .thumb{ height:auto; aspect-ratio:3/4; font-size:29px; }
.article-cover .thumb img{ width:100%; height:100%; object-fit:cover; }
.article .meta{ color:var(--dim); font-size:14px; margin-bottom:14px; }
.article .body{ font-size:17px; color:#efe3c8; line-height:1.95; }
.article .body p{ margin:0 0 14px; white-space:pre-wrap; }
.article .body h2{
  font-size:17px; color:var(--amber); margin:22px 0 10px;
  padding-left:10px; border-left:6px solid var(--amber-dim);
}

/* ---------------- 赏金首列表通缉令卡片 ---------------- */
.wanted-card{
  position:relative;
  display:block;
  background:transparent url('../img/WantedPoster.png') top center no-repeat;
  background-size:100% 100%;
  border:none;
  box-shadow:none;
  color:var(--text);
  text-align:center;
  text-decoration:none;
  aspect-ratio:192/216;
  overflow:hidden;
}
.wanted-card::before{
  content:'';
  position:absolute; left:0; right:0; bottom:0; top:0;
  pointer-events:none;
  border:3px solid #1a130c;
}
.wanted-card-stage{
  position:absolute;
  left:10.4%; right:10.9%;
  top:9.3%; bottom:25%;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
}
.wanted-card-media{
  flex:0 1 auto;
  width:5cm; max-width:100%;
  max-height:calc(100% - 44px);
  aspect-ratio:1 / 1;
  min-height:0;
  display:flex; align-items:center; justify-content:center;
  overflow:hidden;
  transform:translateY(-0.5cm);
}
.wanted-card-media img{
  max-width:100%; max-height:100%;
  width:auto; height:auto;
  object-fit:contain; display:block; image-rendering:pixelated;
}
.wanted-card-media--fallback{
  display:flex; align-items:center; justify-content:center;
  font-family:var(--font-pixel);
  font-size:clamp(18px, 50%, 48px);
  color:#fff;
}
.wanted-card-foot{
  position:absolute; left:0; right:0; bottom:0;
  height:40px;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
}
.wanted-card h3{
  font-family:var(--font-pixel);
  font-size:clamp(10px, 4.2vw, 15px);
  letter-spacing:1px;
  color:#fff; margin:0 0 1px; line-height:1.2;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.wanted-card-bio{
  font-size:clamp(9px, 3.6vw, 12px);
  line-height:1.25; color:#fff; margin:0;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.wanted-card:hover{ filter:brightness(1.1); }
@media(max-width:560px){
  .wanted-card-foot{ height:34px; }
}

/* 详情页图集：最多 5 张，横向排列，超出换行 */
.img-gallery{ display:flex; gap:10px; flex-wrap:wrap; margin:0 0 16px; }
.img-gallery-item{
  display:block; width:180px; height:120px; flex-shrink:0;
  border:3px solid #1a130c; background:var(--bg-2);
  box-shadow: inset 2px 2px 0 rgba(255,235,200,.06), 3px 3px 0 #1a130c;
  overflow:hidden;
}
.img-gallery-item img{ width:100%; height:100%; object-fit:cover; display:block; image-rendering:pixelated; }
/* 城镇详情页大图头：左第2张缩略图，右第1张完整大图 */
.work-hero{ display:flex; gap:16px; flex-wrap:wrap; align-items:flex-start; margin:0 0 16px; }
.work-hero-left{ flex:0 0 180px; }
.work-hero-left .thumb{ height:120px; margin:0; }
.work-hero-right{ flex:1 1 300px; min-width:260px; }
.work-hero-cover{
  display:block; width:100%; max-height:420px;
  border:3px solid #1a130c; background:var(--bg-2);
  box-shadow: inset 2px 2px 0 rgba(255,235,200,.06), 3px 3px 0 #1a130c;
  overflow:hidden;
}
.work-hero-cover img{ width:100%; height:100%; max-height:420px; object-fit:contain; display:block; image-rendering:pixelated; }
/* 猎人公会条目只显示书名、封面、下载按钮；封面按 √2:1 比例 */
.book-card{ text-align:center; background:#6b5a3a; } /* 猎人公会列表卡片：深暖棕（与据点原色对调） */
.book-card h3{
  margin:0 0 8px;
  line-height:1.4;
  min-height:2.8em;
  display:flex;
  align-items:center;
  justify-content:center;
}
.book-card .thumb,
.book-cover-hero .thumb{
  height:auto;
  aspect-ratio: 1000 / 1414;
  font-size:29px;
}
.book-card .thumb img,
.book-cover-hero .thumb img{ width:100%; height:100%; object-fit:cover; }
.book-cover-hero{ max-width:420px; margin:0 auto 4px; }
.book-cover-hero .thumb{ margin:0; }
/* 猎人公会详情：左侧信息，右侧完整封面大图 */
.book-detail-hero{ display:grid; grid-template-columns:1fr 1fr; gap:18px; align-items:start; margin:14px 0 18px; }
.book-detail-info{ min-width:0; }
.book-detail-info h1{ margin:0 0 12px; }
.book-detail-info .kv{ margin:4px 0; }
.book-detail-cover{ min-width:0; }
.book-detail-cover .book-cover-hero{ max-width:none; margin:0; display:block; width:100%; border:3px solid #1a130c; background:var(--bg-2); box-shadow:inset 2px 2px 0 rgba(255,235,200,.06), 3px 3px 0 #1a130c; overflow:hidden; }
.book-detail-cover .book-cover-hero img{ width:100%; height:auto; display:block; image-rendering:pixelated; }
@media(max-width:640px){ .book-detail-hero{ grid-template-columns:1fr; } }
/* 研究所列表卡片：护眼蓝灰 */
.creation-card{ background:#4a5d6b; }
.creation-card .muted{ color:var(--dim); }
/* 据点详情页：左侧信息，右侧完整大图 */
.doujin-hero{ display:grid; grid-template-columns:1fr 1fr; gap:18px; align-items:start; margin:14px 0 18px; }
.doujin-hero-left{ min-width:0; }
.doujin-hero-left h1{ margin:0 0 12px; }
.doujin-hero-left .kv{ margin:4px 0; }
.doujin-hero-right{ min-width:0; }
.doujin-hero-cover{
  display:block; width:100%; min-height:240px;
  border:3px solid #1a130c; background:var(--bg-2);
  box-shadow: inset 2px 2px 0 rgba(255,235,200,.06), 3px 3px 0 #1a130c;
  overflow:hidden;
}
.doujin-hero-cover.no-cover{
  display:flex; align-items:center; justify-content:center;
  background:var(--bg-2);
}
.doujin-hero-cover.no-cover span{ color:var(--dim); font-size:14px; }
.doujin-hero-cover img{ width:100%; height:auto; display:block; min-height:240px; image-rendering:pixelated; }
/* 据点详情页：第2~5张图片放在简介下方，2×2网格，每张尺寸与顶部封面一致 */
.doujin-extra-grid{ display:grid; grid-template-columns:1fr 1fr; gap:18px; margin:18px 0; }
.doujin-extra-grid .doujin-hero-cover{ margin:0; }
@media(max-width:640px){ .doujin-hero{ grid-template-columns:1fr; } }
/* 条目右下角创建者小字 */
.article-foot{ margin-top:18px; text-align:right; }
.item-creator{
  margin:0; font-size:12px; color:var(--dimmer); letter-spacing:1px;
}

/* ---------------- Forum ---------------- */
.thread-head{
  background:var(--panel);
  border:3px solid #1a130c;
  box-shadow: inset 2px 2px 0 rgba(255,235,200,.08), inset -2px -2px 0 rgba(0,0,0,.35), 4px 4px 0 #1a130c;
  padding:16px; margin-bottom:14px;
}
.thread-head-title{
  display:flex; align-items:center; gap:12px; flex-wrap:wrap;
}
.thread-head-title h1{ margin:0 0 0 1cm; font-size:21px; flex:1; min-width:260px; }
/* 帖子详情页返回版面的像素向左箭头：黄色箭头本身（无方框、无文字）；比初版放大 1.5 倍并下移 0.5cm */
.btn-back-thread{
  display:inline-flex; align-items:center; justify-content:center;
  width:63px; height:63px; flex-shrink:0;
  margin-top:0.5cm;
  background:transparent; border:none; box-shadow:none;
  text-decoration:none; cursor:pointer;
}
.btn-back-thread::before{
  content:""; display:block;
  width:0; height:0;
  border-top:20px solid transparent;
  border-bottom:20px solid transparent;
  border-right:30px solid var(--amber);
}
.btn-back-thread:hover::before{ border-right-color:var(--amber-dim); }
/* 帖子详情元信息行与标题左对齐（标题左缘 = 返回箭头宽 63 + 间距 12 + 标题左移 1cm ≈ 113px） */
.thread-meta{ margin:6px 0 0 113px; font-size:13px; }
@media (max-width:560px){
  .btn-back-thread{ width:54px; height:54px; }
  .btn-back-thread::before{ border-top-width:16px; border-bottom-width:16px; border-right-width:25px; }
  .thread-head-title h1{ font-size:18px; min-width:180px; }
  .thread-meta{ margin-left:104px; }
}
.post{
  background:var(--panel);
  border:3px solid #1a130c;
  box-shadow: inset 2px 2px 0 rgba(255,235,200,.06), 3px 4px 0 #1a130c;
  margin-bottom:10px;
  display:flex; min-height:96px;
}
.post-author{
  width:148px; flex-shrink:0; background:var(--bg-2);
  border-right:var(--px) solid var(--line);
  padding:10px; text-align:center; font-size:13px; color:var(--dim);
}
.post-author .nick{ color:var(--amber); display:block; margin-bottom:4px; font-size:15px; }
.post-author .floor{ font-family:var(--font-pixel); font-size:11px; color:var(--amber-dim); }
.post-op .post-author{ width:148px; }
/* ---- 作者信息卡（像素头像 + 昵称 + 性别 + 身份）---- */
.author-card{
  display:flex; flex-direction:column; align-items:center; gap:6px;
  padding:6px 8px; margin-bottom:6px;
  background:var(--panel); border:3px solid #1a130c;
  box-shadow:inset 3px 3px 0 rgba(255,235,200,.09), inset -3px -3px 0 rgba(0,0,0,.35);
}
.author-card .ac-av{ display:flex; align-items:center; justify-content:center; }
.author-card .ac-av-master{ background:#0a0806; }
/* 普通用户无头像格时的中性像素占位（不借用站长通缉令头像） */
.author-card .ac-av-none{
  background:#3a2c1e; border:3px solid #1a130c;
  font-family:var(--font-pixel); font-size:23px; color:var(--amber); text-align:center;
  image-rendering:pixelated; flex-shrink:0; line-height:1;
}
.author-card .ac-av-none span{ line-height:1; margin-top:2px; }
.author-card .ac-info{ display:flex; flex-direction:column; align-items:center; gap:2px; text-align:center; }
.author-card .ac-nick{
  font-family:var(--font-pixel); font-size:14px; color:var(--text);
  max-width:112px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
/* UID 数字（不带 "UID" 前缀字样） */
.author-card .ac-uid{
  font-family:var(--font-pixel); font-size:10px; color:var(--amber-dim);
  letter-spacing:1px;
}
.author-card .ac-meta{ font-family:var(--font-pixel); font-size:11px; color:var(--dim); letter-spacing:0; }
/* 性别·身份 过长时：分两行单独显示（无中间点） */
.author-card .ac-meta--stack{ display:flex; flex-direction:column; align-items:center; gap:1px; }
.author-card .ac-gender{ color:var(--teal); }
.author-card .ac-role{ color:var(--amber-dim); }
.author-card .ac-role.role-ruler, .author-card.ac-ruler .ac-role{ color:var(--amber); }
.author-card .ac-role.role-admin, .author-card.ac-admin .ac-role{ color:var(--olive); }
/* 楼主卡：删除橘黄外描边与头像内描边（用户要求去掉橙色边框） */
.post-op .author-card{ outline:none; }
/* 删帖/删回复小按钮（作者卡右下角） */
.btn-del{
  margin-top:8px; font-family:var(--font-pixel); font-size:10px;
  color:var(--red); background:#00000040; border:2px solid #1a130c;
  padding:2px 8px; cursor:pointer; box-shadow:2px 2px 0 rgba(0,0,0,.4);
}
.btn-del:hover{ background:var(--red); color:#fff; }
/* ---- 点赞 / 点踩 / 收藏 工具条（像素拇指 + 红色小心心 + 数字）---- */
.react-bar{
  display:flex; gap:8px; flex-wrap:wrap; align-items:center;
  padding:8px 10px; margin:2px 0 10px;
  background:var(--bg-2); border:3px solid #1a130c;
  box-shadow:inset 3px 3px 0 rgba(255,235,200,.07), inset -3px -3px 0 rgba(0,0,0,.35);
}
.react-btn{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-pixel); font-size:13px;
  background:var(--panel); color:var(--text);
  border:3px solid #1a130c; padding:6px 10px; cursor:pointer;
  box-shadow:3px 3px 0 rgba(0,0,0,.4);
}
.react-btn .r-ico{
  display:inline-block; width:16px; text-align:center;
  font-family:var(--font-pixel); font-size:16px; line-height:1;
}
/* 像素大拇指：点赞=▲（拇指朝上），点踩=▼（拇指朝下）；收藏=❤ 红色小心心 */
.react-btn .r-ico{
  display:inline-block; width:14px; text-align:center;
  font-family:var(--font-pixel); font-size:15px; line-height:14px;
  color:var(--text); text-shadow:1px 1px 0 #1a130c;
}
.react-btn .r-ico.r-heart{ color:var(--red); font-size:16px; }
/* 未点击：上三角=琥珀黄、下三角=蓝，各自与「点击后背景色」保持一致 */
.react-btn[data-kind="like"] .r-ico.r-like{ color:var(--amber); }
.react-btn[data-kind="dislike"] .r-ico.r-dislike{ color:var(--blue); }
.react-btn .r-num{ min-width:14px; text-align:center; color:var(--text); }
/* 已点状态：上色 + 高亮 */
.react-btn.on{ background:var(--amber); color:#1a1206; box-shadow:3px 3px 0 var(--rust); }
.react-btn.on .r-ico{ color:#1a1206; text-shadow:0 0 0 transparent; }
.react-btn.on .r-ico.r-heart{ color:var(--red); }
.react-btn.on .r-num{ color:#1a1206; }
.react-btn.r-bookmark.on{ background:var(--red); color:#fff; }
.react-btn.r-bookmark.on .r-ico.r-heart{ color:#fff; }
.react-btn.r-bookmark.on .r-num{ color:#fff; }
/* 点踩点击后：蓝色背景（与未点击下三角同色）；点赞点击后：保持琥珀背景（与未点击上三角同色） */
.react-btn[data-kind="dislike"].on{ background:var(--blue); color:#fff; box-shadow:3px 3px 0 var(--blue-dark); }
.react-btn[data-kind="dislike"].on .r-ico{ color:#fff; }
.react-btn[data-kind="dislike"].on .r-num{ color:#fff; }
.react-btn[data-kind="like"].on{ background:var(--amber); color:#1a1206; box-shadow:3px 3px 0 var(--rust); }
.react-btn[data-kind="like"].on .r-ico{ color:#1a1206; }
.react-btn[data-kind="like"].on .r-num{ color:#1a1206; }
/* ⭐ 加精按钮：紫色星（仅将军/执政官可点）；已加精 = 紫底白星。
   ★ 为文本符号（非 emoji），颜色随 CSS color 生效；行高与 ▲▼❤ 对齐保证居中 */
.react-btn[data-kind="featured"] .r-ico.r-star{ color:#9b59d0; font-size:16px; line-height:14px; text-shadow:1px 1px 0 #1a130c; }
.react-btn[data-kind="featured"]:disabled{ opacity:.45; cursor:not-allowed; }
.react-btn[data-kind="featured"].on{ background:#9b59d0; color:#fff; box-shadow:3px 3px 0 #5d2f80; }
.react-btn[data-kind="featured"].on .r-ico.r-star{ color:#fff; text-shadow:0 0 0 transparent; }
/* 点赞后字样（▲ 与数字）改白色 */
.react-btn[data-kind="like"].on{ background:var(--amber); color:#fff; box-shadow:3px 3px 0 var(--rust); }
.react-btn[data-kind="like"].on .r-ico{ color:#fff; text-shadow:0 0 0 transparent; }
.react-btn[data-kind="like"].on .r-num{ color:#fff; }
.react-bar.disabled{ opacity:.5; }
.react-bar.disabled .react-btn{ cursor:not-allowed; }
/* 后台酒吧管理：加精按钮（紫色）；版面列表置顶占位行 */
.btn-purple{ background:#9b59d0; color:#fff; }
.btn-purple:hover{ filter:brightness(1.12); }
.row-reserved{ min-height:52px; display:flex; align-items:center; opacity:.65; }
/* 个人收藏卡（首页论坛版区 / 酒吧版面列表里那一条） */
.card-bookmark h3,
.row.card-bookmark h4{ color:var(--red); }
/* 精华推荐卡：紫色 ★ 徽章 + 紫色标题 */
.card-featured .badge-count{ color:#9b59d0; }
.card-featured h4{ color:#9b59d0; }
.heart-ico{
  display:inline-block; color:var(--red); font-size:19px; margin-right:4px;
}
.post-body{ flex:1; padding:12px 14px; min-width:0; display:flex; flex-direction:column; }
.post-body .content{ font-size:16px; color:#efe3c8; white-space:pre-wrap; flex:1; }
.post-body .foot{ margin-top:auto; padding-top:10px; font-size:13px; color:var(--dimmer); display:flex; gap:10px; justify-content:space-between; }
/* 「跟帖回复」链接：楼中楼里也可用，样式压低一档避免抢正文 */
.btn-reply{ color:var(--amber-dim); cursor:pointer; text-decoration:none; }
.btn-reply:hover{ color:var(--amber); text-decoration:underline; }
.post-sub .btn-reply{ font-size:12px; }
/* ==========================================================
   楼层右下角 赞/踩（贴吧式，每层除 1 楼主外都有；与顶栏同一套 .react-btn 按钮）
   ========================================================== */
.post-reacts{
  /* 覆盖 .react-bar 的大盒子边框/背景，做成紧凑内联，贴到 .foot 右下角 */
  display:inline-flex; gap:6px; flex-wrap:nowrap; align-items:center;
  padding:0; margin:0; background:transparent; border:none; box-shadow:none;
}
.post-reacts .react-btn{ padding:3px 8px; font-size:12px; border-width:2px; box-shadow:2px 2px 0 rgba(0,0,0,.4); }
.post-reacts .react-btn .r-ico{ font-size:13px; line-height:12px; width:12px; }
.post-reacts .r-num{ min-width:12px; font-size:12px; }
/* 楼中楼里更小一档 */
.post-reacts--sm .react-btn{ padding:2px 6px; font-size:11px; }
.post-reacts--sm .react-btn .r-ico{ font-size:11px; line-height:11px; }
.post-reacts--sm .r-num{ font-size:11px; }
.post-reacts.disabled{ opacity:.45; }
.post-reacts.disabled .react-btn{ cursor:not-allowed; }
/* 反应条右侧的 4 个工具按钮（只看楼主/热门/正序/倒序）——无数字，造型同 .react-btn */
.react-bar-tools{ display:inline-flex; gap:6px; margin-left:auto; flex-wrap:wrap; }
.react-tool{ padding:3px 9px; font-size:12px; box-shadow:2px 2px 0 rgba(0,0,0,.4); }
.react-tool.on{ background:var(--amber); color:#1a1206; border-color:var(--amber-dim); box-shadow:2px 2px 0 var(--rust); }
/* 最佳楼层角标（默认排序时置顶的那层） */
.floor-badge{
  font-family:var(--font-pixel); font-size:11px; color:#1a1206;
  background:linear-gradient(180deg, var(--amber), var(--amber-dim));
  border:2px solid #1a130c; box-shadow:2px 2px 0 var(--rust);
  padding:2px 7px; white-space:nowrap;
}
/* 最佳楼层角标与举报按钮同处一行：角标在左、举报 ✉️ 在右 */
.post-meta-top{
  display:flex; justify-content:space-between; align-items:flex-start;
  gap:10px; margin:-4px 0 6px;
}
.post-meta-top .post-report-row{
  margin:0;
}
/* ==========================================================
   楼层举报：每层（主帖/顶层楼/楼中楼）右上角 ✉️ 标志 + 右侧小字说明，
   点击弹 report.js 模态（理由 + 至多 1 张图 → 提交管理员审核）
   ========================================================== */
.post-report-row{
  display:flex; justify-content:flex-end; align-items:center; gap:8px;
  margin:-2px 0 6px; flex-wrap:wrap;
}
.post-report-row .report-hint{ font-size:11px; color:var(--dimmer); letter-spacing:.5px; }
.post-report{
  font-size:36px; line-height:1; cursor:pointer; flex-shrink:0;
  background:transparent; color:#1a1306;
  border:none; box-shadow:none;
  padding:0; margin:0;
}
.post-report:hover{ color:var(--amber); }
/* 楼中楼里压低一档 */
.post-sub .post-report{ font-size:32px; }
/* 楼层右下角操作组：赞/踩与举报按钮紧凑排在同一行（举报 ○ 与左侧按钮间距为初版 2 倍） */
.post-foot-right{ display:inline-flex; gap:4px; align-items:center; }
.post-reacts + .post-report{ margin-left:0; }
.post-sub .post-reacts + .post-report{ margin-left:0; }
/* 举报弹窗：暖棕像素面板（右上角叉用全站统一的 .mm-x）；整体放大 1.5 倍，内容往中心收敛，页面边距 0.5cm 内保持空白 */
.modal.report-box{
  max-width:945px;
}
.report-box{
  position:relative; padding:0.5cm;
  background:var(--panel); border:3px solid #1a130c;
  box-shadow:inset 2px 2px 0 rgba(255,235,200,.08), 4px 5px 0 #1a130c;
}
.report-box .mm-x{
  width:51px; height:51px; font-size:28px;
  top:0.5cm; right:0.5cm;
}
.report-box .report-title{
  margin:0 0 12px; font-family:var(--font-pixel); font-size:26px; color:var(--amber);
}
.report-box .pm-title-input{
  width:100%; box-sizing:border-box;
  font-family:var(--font-pixel); font-size:21px; color:var(--text);
  background:#1a1306; border:3px solid #0d0a06; padding:10px 12px; margin-bottom:10px;
}
.report-box .pm-title-input::placeholder{ color:var(--dimmer); }
.report-box .report-target{
  margin:0 0 15px; font-size:19px; color:var(--dim);
  max-height:63px; overflow:hidden;
}
.report-box textarea{ min-height:250px; font-size:21px; }
.report-img-row{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-top:12px; }
.report-img-row .btn{ font-size:18px; padding:10px 22px; }
.report-img-note{ font-size:18px; color:var(--amber); min-height:21px; }
.report-img-prev{ display:flex; gap:12px; flex-wrap:wrap; margin:12px 0 0; }
.report-img-prev:empty{ display:none; }
.report-foot{
  margin-top:18px; display:flex; align-items:center; justify-content:space-between; gap:15px; flex-wrap:wrap;
}
.report-foot .report-limit{ font-size:16px; color:var(--dimmer); }
.report-foot .btn{ font-size:18px; padding:10px 22px; }
.report-box .form-msg{ margin:12px 0 0; font-size:22px; }
@media (max-width:560px){
  .report-box{ padding:18px 14px 14px; }
  .report-box .report-title{ font-size:17px; }
  .report-box textarea{ min-height:120px; font-size:16px; }
  .report-img-row .btn, .report-foot .btn{ font-size:15px; padding:7px 14px; }
}
/* ==========================================================
   楼中楼（贴吧式）：跟帖回复不落帖尾，而是内嵌在其所属「顶层楼」正下方。
   左侧整体后移一个头像身位（--sub-indent），右缘与顶层楼保持对齐 → 视觉上从属于该楼层。
   ========================================================== */
.sub-wrap{
  margin: -4px 0 10px var(--sub-indent, 74px);   /* 负上边距贴合顶层楼，右缘 0 = 与上层对齐 */
  position:relative;
}
/* 从属引导线：自顶层楼左侧垂下，末端渐隐 */
.sub-wrap::before{
  content:''; position:absolute; left:-14px; top:0; bottom:14px; width:3px;
  background:linear-gradient(180deg, var(--rust), rgba(0,0,0,0));
  opacity:.55;
}
.post-sub{
  min-height:0;
  margin-bottom:6px;
  background:#4a3826;              /* 与顶层同色，靠左侧引导线区分层级 */
  box-shadow: inset 2px 2px 0 rgba(255,235,200,.05), 2px 3px 0 #1a130c;
}
.post-sub .post-author{ width:104px; padding:8px 6px; }
.post-sub .post-body{ padding:10px 12px; }
.post-sub .post-body .content{ font-size:15px; }
/* 楼中楼作者卡紧凑版：头像小一号、昵称小一号，去掉内描边避免过于厚重 */
.author-card--compact{ padding:4px 4px; margin-bottom:4px; gap:4px; box-shadow:none; background:transparent; border-color:transparent; }
.author-card--compact .ac-nick{ font-size:13px; max-width:92px; }
.author-card--compact .ac-uid{ font-size:9px; }
.author-card--compact .ac-meta{ font-size:10px; }
.post-sub .reply-quote{ font-size:12px; padding:4px 8px; margin-bottom:6px; }
/* 窄屏：楼中楼缩进收窄，避免正文被挤没 */
@media (max-width:720px){
  .sub-wrap{ margin-left:26px; }
  .sub-wrap::before{ left:-8px; width:2px; }
  .post-sub .post-author{ width:76px; }
}
.reply-quote{
  background:#00000040; border-left:4px solid var(--rust);
  padding:6px 10px; margin-bottom:8px; font-size:13px; color:var(--dim);
}
/* 帖子/回复内嵌图片（本地压缩后上传，≤1MB） */
.post-body .content .post-img{
  display:block; max-width:100%; max-height:420px;
  margin:8px 0; border:var(--px) solid var(--line); background:#000;
}
/* 图片加载失败（多为跨用户签名未授权）：显示占位框而非黑屏 */
.post-body .content .post-img.post-img-broken{
  min-height:56px; width:100%; max-height:56px; object-fit:cover;
  background:#2a2016; color:var(--dim); font-family:var(--font-pixel);
  font-size:11px; letter-spacing:1px;
}
/* 「＋图片」上传工具条 */
.img-tools{ display:flex; align-items:center; gap:8px; margin:8px 0; flex-wrap:wrap; }
.img-tools .btn{ white-space:nowrap; }
.img-note{ font-size:13px; color:var(--amber); min-height:14px; }
/* 评论/回复额度提示：移到该行末尾（右对齐），复古暖棕像素字 */
.post-limit-note{
  margin-left:auto;   /* 贴到 flex 行右侧末尾 */
  color:var(--amber);
  font-family:var(--font-pixel); font-size:12px; letter-spacing:.5px;
  background:rgba(0,0,0,.28); padding:3px 8px;
  border:2px solid #1a130c; box-shadow:2px 2px 0 rgba(0,0,0,.4);
}
.img-preview{ display:flex; gap:8px; flex-wrap:wrap; margin:8px 0; }
.img-preview-item{
  width:72px; height:72px; overflow:hidden;
  border:var(--px) solid var(--line); background:#000; position:relative;
}
.img-preview-thumb{ width:100%; height:100%; object-fit:cover; display:block; }
@media (max-width:560px){
  .post{ flex-direction:column; }
  .post-author{ width:100%; border-right:none; border-bottom:var(--px) solid var(--line); text-align:left; }
}

/* ---------------- Forms ---------------- */
.field{ display:block; margin-bottom:10px; }
/* 字段下方补充说明（如「序号」规则说明） */
.field-hint{
  margin:-4px 0 12px; padding-left:2px; font-size:12px; line-height:1.5;
}
.field > span{
  display:block; font-size:14px; color:var(--dim); margin-bottom:5px; letter-spacing:1px;
}
.field-row{ display:flex; gap:8px; }
.field-row input{ flex:1; }
/* 昵称行：输入框 + 右侧「修改」按钮 + 下方 10G/次 提示（与抽卡同款布局） */
.field-nick-row{ display:flex; gap:10px; align-items:flex-start; }
.field-nick-row > input{ flex:1; min-width:0; }
.field-nick-ops{ display:flex; flex-direction:column; align-items:center; flex-shrink:0; }
.field-nick-ops .hint{ margin-top:4px; }
/* 后台封面/图片上传：按钮 + 隐藏输入 + 缩略图预览 */
.adm-img-row{ display:flex; gap:10px; align-items:center; }
.adm-img-row .btn-adm-imgpick{ flex-shrink:0; }
.adm-img-prev{ flex:1; min-width:0; }
.adm-img-thumb{ display:block; max-width:96px; max-height:96px; image-rendering:auto; border:2px solid var(--line); }
/* 签名档：textarea 加高至约 2 行 + 右侧「抽签名」按钮（与昵称/抽卡同款布局） */
.field-sign-row{ display:flex; gap:10px; align-items:flex-start; }
.field-sign-row > textarea{ flex:1; min-width:0; min-height:56px; resize:none; line-height:1.5; }
.field-sign-ops{ display:flex; flex-direction:column; align-items:center; flex-shrink:0; }
.field-sign-ops .hint{ margin-top:4px; }
input, textarea, select{
  width:100%; background:#000; color:var(--text);
  border: 2px solid var(--line);
  padding:9px 10px; font-family:var(--font-body); font-size:16px;
  outline:none;
}
/* 帖子页「回复本帖」输入区字号整体大 2 号（用户要求）：textarea 15→17，占位字随之放大 */
#replyContent{ font-size:18px; }
#replyContent::placeholder{ font-size:17px; }
input:focus, textarea:focus, select:focus{ border-color:var(--amber); }
textarea{ min-height:130px; resize:vertical; line-height:1.7; }
.field-error{ color:var(--red); font-size:14px; margin:-4px 0 8px; min-height:18px; }
.hint{ color:var(--dim); font-size:14px; margin:0 0 10px; }
.form-msg{ font-size:15px; min-height:20px; color:var(--rust); margin:8px 0 0; }
.form-msg.ok{ color:var(--olive); }

/* ---------------- Modal ---------------- */
.modal-mask{
  position:fixed; inset:0; background:#000000cc; z-index:200;
  display:flex; align-items:center; justify-content:center; padding:16px;
}
.modal{ width:100%; max-width:420px; padding:0; }
/* 关键修复：display:flex 会覆盖 hidden 属性，导致弹窗关不掉 */
.modal-mask[hidden]{ display:none !important; }

/* ---------------- 登录弹窗（MM1 起名界面布局，游戏原版金属窗框） ----------------
   2026-10-11：外框改用 register-login.png（游戏原版银金属窗框，含四角/边螺丝、
   上 25% 处一条白色横杠分隔条、纯黑内屏），整图铺满 4:3 弹窗；内屏为深黑。 */
.mm-auth{
  position:relative;
  height:min(776px, 90vh);            /* 1.5 倍：690×518 → 1035×776 */
  aspect-ratio:4/3; width:auto; max-width:94vw;
  background: url('../img/register-login.png') center / 100% 100% no-repeat #000;
  box-shadow: 0 10px 0 rgba(0,0,0,.6), 0 16px 44px rgba(0,0,0,.72);
  padding:0;
  display:flex; flex-direction:column;
}
/* Turnstile 人机验证：固定悬浮在页面顶部导航栏正中（弹窗之外、遮罩之上）。
   容器挂在 body 上（见 cloud.js），不参与弹窗内部布局，因此不会挤压或遮挡表单字段。
   导航栏高度 = .header-inner min-height 66px + 3px 底边框 ≈ 69px；验证框原始 300×65，
   故 top:2px + scale(.92)（→276×60）正好落在导航条内垂直居中，不再压住弹窗上边框。 */
#cfTurnstile{
  position:fixed; top:2px; left:50%;
  transform:translateX(-50%) scale(.92); transform-origin:top center;
  z-index:300;                      /* 高于 .modal-mask 的 200，浮在弹窗遮罩之上 */
  display:flex; justify-content:center; align-items:center;
  margin:0; pointer-events:auto;
}
#cfTurnstile iframe{ max-width:none; }
/* 窄屏：导航换行会变高，验证框同样贴顶并再缩一点，避免压住弹窗标题 */
@media (max-width:560px){
  #cfTurnstile{
    top:6px; transform:translateX(-50%) scale(.86); transform-origin:top center;
  }
}
.mm-auth .btn-close{
  position:absolute; top:-64px; right:-8px; z-index:2;
  color:#9a9a9a; font-size:46px;
  background:#000; border:3px solid #6a6a6a; width:58px; height:58px; line-height:50px;
}
.mm-auth .btn-close:hover{ color:var(--amber); border-color:var(--amber); }

/* 上部条带：登录=LOGO（上下各留 1px，绝不越出上边框）；注册=「起 名 ？」+ 起名行 */
.mm-auth-top{
  position:relative; flex:none; height:24%;
  display:flex; flex-direction:column; justify-content:center;
  padding:0 42px; overflow:hidden;
}
.mm-auth-bottom{
  position:relative;
  flex:1; display:flex; flex-direction:column; justify-content:flex-start;
  padding:92px 92px 46px; background:transparent;
  overflow:hidden;
}
/* 注册 / 找回密码：表单行较多（手机+QQ+密码+验证码 或 手机+验证码+新密码+确认），
   底部留足空间，避免被绝对定位贴底的 GO 按钮（.mm-auth-foot）遮挡提示行 */
.mm-auth-regmode .mm-auth-bottom,
.mm-auth-resetmode .mm-auth-bottom{ padding-bottom:120px; }

/* LOGO：等比缩小（蓝框→红框），在条带内水平居中；整体下移避开顶部白色横条，不遮挡白边 */
.mm-auth-logo{
  position:relative; left:1.57%;   /* 右移 1.57%：螺丝中点 329.25/640（比正中右 1.445% 全宽 ≈ 1.57% 内容盒宽） */
  display:block; margin:22px auto 0;
  height:70%; width:auto;
  object-fit:contain; object-position:center;
  align-self:center;
  image-rendering:pixelated;
}
/* 注册模式：「起 名 ？」标题 + 名字输入行，两行垂直居中；stretch 让名字行撑满宽度（margin 再缩进），与下方表单行左对齐 */
.mm-auth-head{
  display:flex; flex-direction:column; align-items:stretch;
  justify-content:center; gap:12px; padding:7px 0;   /* 上 padding 8→7px：注册界面名字区整体上移 1px */
}
.mm-auth-head .mm-auth-title{
  position:relative; left:1.57%;   /* 右移 1.57%：「名」字落在两螺丝中点 329.25/640 处 */
  font-family:var(--font-pixel); font-size:43px; color:#fff;
  letter-spacing:14px; text-align:center; white-space:nowrap; margin:0;
  padding-left:14px;   /* 抵消末字符字距，保证视觉正中 */
}
.mm-auth-top .mm-auth-line{ margin-bottom:0; }
.mm-auth-logo[hidden], .mm-auth-head[hidden]{ display:none; }
/* 登录模式：LOGO 可见、标题行隐藏；注册模式：反之 */
.mm-auth-loginmode .mm-auth-head{ display:none; }
.mm-auth-loginmode .mm-auth-logo{ display:block; }
.mm-auth-regmode .mm-auth-logo{ display:none; }
.mm-auth-regmode .mm-auth-head{ display:flex; }

/* 底部：GO 大按钮 + 版权条（©1996 两行字）。绝对定位贴底（与登录模式相同高度），登录/注册两模式水平位置完全一致 */
.mm-auth-foot{
  position:absolute; left:0; right:0; bottom:46px;
  display:flex; flex-direction:column; align-items:center;
  /* 关键：这一层是全宽浮层，会盖住底部的「忘记密码？」/「返回登录」按钮导致点不动。
     故整层不接收鼠标事件，只让内部真正的按钮/图片接收。 */
  pointer-events:none;
}
.mm-auth-foot > *{ pointer-events:auto; }
.mm-auth-foot .mm-btn-go{ margin:0 auto; }
.mm-auth-copy{
  display:block; margin:14px auto 0;
  width:40%; max-width:360px; height:auto;
  image-rendering:pixelated;
}

/* 右上角两个按钮：永远固定在同一位置上下排列（登录在上、注册在下），
   位置/可见性完全不随模式变化。
   - 两行文字本身 = 白色常亮，不变色、不闪烁
   - 「当前所在模式」那行两侧的 [ ] 方括号光标 = 琥珀色闪烁（登录模式→登录闪烁；注册模式→注册闪烁） */
.mm-mode-col{
  position:absolute; right:39px; top:26px;   /* 再下移 10px：※登录 字样(约33px)完全避开顶部白边框(结束于约23px)，留 ~9px 空隙，不接触 */
  display:flex; flex-direction:column; align-items:flex-start; gap:4px;
}
.mm-mode{
  position:relative; background:none; border:none; cursor:pointer;
  font-family:var(--font-body); font-size:23px; letter-spacing:3px;
  line-height:1.2; color:#fff; padding:3px 8px;   /* 文字永远白色，不变色不闪烁 */
}
.mm-mode:hover{ color:var(--amber); }
/* 方括号光标：默认隐藏，只给「当前模式」那行显示 [ 和 ]，且仅光标闪烁 */
.mm-mode-col .mm-mode::before,
.mm-mode-col .mm-mode::after{
  content:none;
  position:absolute; top:50%; transform:translateY(-50%);
  font-family:var(--font-pixel); font-size:29px; line-height:1;
  color:var(--amber);
}
.mm-auth-loginmode .mm-mode--login::before,
.mm-auth-regmode .mm-mode--reg::before{
  content:'['; left:-22px;
  animation:mm-blink 0.9s step-end infinite;
}
.mm-auth-loginmode .mm-mode--login::after,
.mm-auth-regmode .mm-mode--reg::after{
  content:']'; right:-22px;
  animation:mm-blink 0.9s step-end infinite;
}
@keyframes mm-blink{ 0%,55%{ opacity:1; } 56%,100%{ opacity:0; } }

.mm-auth-line{ display:flex; align-items:flex-end; gap:13px; margin-bottom:18px; }
.mm-auth-line:last-of-type{ margin-bottom:0; }
.mm-auth-top .mm-auth-line{ margin:0 50px; }   /* 42+50=92px，与下方表单行左右对齐 */
/* 关键：display:flex 会覆盖 hidden 属性，导致登录模式 QQ/验证行仍然可见 */
.mm-auth-line[hidden]{ display:none !important; }
.mm-label{
  color:#fff; font-family:var(--font-body); font-size:25px;
  letter-spacing:2px; white-space:nowrap; line-height:1.6;
}
/* 标签两侧成对的半括号 */
.mm-label::before{ content:'「'; color:var(--amber); margin-right:4px; }
.mm-label::after{ content:'」'; color:var(--amber); margin-left:4px; }
/* 邮箱输入框后的 @qq.com 固定后缀（邮箱本地部分由用户填写） */
.mm-suffix{
  color:#8a8a8a; font-family:var(--font-pixel); font-size:24px; letter-spacing:2px;
  white-space:nowrap; align-self:flex-end; padding-bottom:9px;
}
.mm-auth input{
  background:transparent; border:none; border-bottom:4px solid #e8e8e8;
  color:#fff; font-family:var(--font-pixel); font-size:26px;
  letter-spacing:3px; padding:7px 4px; width:100%; border-radius:0;
  min-width:0;
}
.mm-auth input:focus{ border-bottom-color:var(--amber); outline:none; }
.mm-auth input::placeholder{ color:#6f6f6f; letter-spacing:3px; }
.mm-auth-hint{ color:#8a8a8a; font-size:20px; margin:8px 0 0; letter-spacing:2px; }
/* 提示行左端与「※验证」输入框左端对齐：内容盒 padding 92px（被 hint 自身 margin 抵消后）+ 标签「※验证」~105px + 行内 gap 13px ≈ 204px */
.mm-auth-bottom .mm-auth-hint{ margin-left:204px; }
/* 找回密码入口（登录模式）/ 返回登录（找回密码模式）：小号像素风文字按钮，左对齐表单 */
.mm-auth-fpw{
  position:relative; z-index:3;   /* 抬到 .mm-auth-foot 浮层之上，保证可点 */
  align-self:flex-start; margin:8px 0 0; padding:2px 4px;
  background:none; border:none; cursor:pointer;
  font-family:var(--font-body); font-size:19px; letter-spacing:1px; color:var(--amber);
}
.mm-auth-fpw:hover{ text-decoration:underline; }

.mm-btn{
  background: #d8d8d8;
  color:#000; border:6px solid transparent;
  border-image: url('../img/button.png') 6 / 5px stretch;
  font-family:var(--font-body); font-size:25px; letter-spacing:2px;
  padding:8px 16px; cursor:pointer; white-space:nowrap;
}
.mm-btn:hover{ filter:brightness(1.06); }
.mm-btn:disabled{ filter:grayscale(.5) brightness(.85); color:#333; cursor:not-allowed; }
.mm-btn-mini{ font-size:23px; padding:6px 13px; flex-shrink:0; }
/* 密码可见切换（诺亚眼球） */
.mm-btn-eye{ padding:3px 7px; flex-shrink:0; display:flex; align-items:center; }
.mm-btn-eye img{ width:30px; height:auto; image-rendering:pixelated; display:block; }
.mm-btn-go{ font-size:29px; letter-spacing:6px; padding:14px; width:50%; margin:0 auto; }
.mm-auth .field-error{ color:#ff7a6b; margin:8px 0 0; min-height:0; font-size:20px; }
.mm-auth .form-msg{ margin:10px 0 0; font-size:20px; }
@media (max-width:560px){
  .mm-auth{
    width:min(420px, calc(100vw - 24px));
    height:auto; max-height:86vh; aspect-ratio:auto;
    overflow-y:auto; padding:18px 14px; gap:8px;
  }
  .mm-auth .btn-close{ top:-44px; right:4px; width:44px; height:44px; line-height:38px; font-size:34px; }
  .mm-auth-top{ height:auto; min-height:0; padding:0; overflow:visible; }
  .mm-auth-logo{ height:auto; max-height:48px; margin-top:8px; left:0; }
  /* 登录/注册模式切换按钮不再 absolute，避免与 logo 重叠 */
  .mm-mode-col{ position:static; align-self:flex-end; margin-top:-34px; gap:0; right:auto; top:auto; }
  .mm-mode{ font-size:15px; padding:2px 6px; }
  .mm-auth-loginmode .mm-mode--login::before,
  .mm-auth-regmode .mm-mode--reg::before{ font-size:17px; left:-12px; right:auto; }
  .mm-auth-loginmode .mm-mode--login::after,
  .mm-auth-regmode .mm-mode--reg::after{ font-size:17px; right:-12px; left:auto; }
  /* 注册/找回密码模式：登录/注册按钮 absolute 回到右上角顶部，避免压住名字行的随机按钮；
     同时顶部条带内容靠上对齐，让「起名？」标题和名字行位于上方小长方形边框区域内 */
  .mm-auth-regmode .mm-auth-top,
  .mm-auth-resetmode .mm-auth-top{ justify-content:flex-start; }
  .mm-auth-regmode .mm-mode-col,
  .mm-auth-resetmode .mm-mode-col{ position:absolute; right:14px; top:8px; margin-top:0; }
  .mm-auth-regmode .mm-auth-head,
  .mm-auth-resetmode .mm-auth-head{ padding-top:16px; }
  .mm-auth-bottom{ padding:10px 4px 90px; overflow:visible; }   /* 底部留空间给绝对定位的 GO 按钮/版权条 */
  .mm-auth-regmode .mm-auth-bottom{ padding-bottom:130px; }
  .mm-auth-resetmode .mm-auth-bottom{ padding-bottom:110px; }
  .mm-auth-foot{ bottom:12px; }
  .mm-auth-copy{ width:60%; max-width:200px; margin:6px auto 0; }
  .mm-auth-line{ gap:6px; margin-bottom:10px; }
  .mm-auth-top .mm-auth-line{ margin:0; }
  /* 注册模式顶部「起名？」标题 + 名字行，手机端整体放大导致挤占下方表单，单独压小 */
  .mm-auth-head{ padding:4px 0; gap:4px; }
  .mm-auth-head .mm-auth-title{ font-size:26px; letter-spacing:5px; padding-left:5px; left:0; }
  .mm-label{ font-size:12px; letter-spacing:1px; }
  .mm-auth input{ font-size:15px; padding:5px 2px; letter-spacing:1px; }
  /* 手机端 @qq.com 后缀：桌面 24px 在窄行里比整行还高，会上下溢出压住相邻字段，这里压到与输入框同级 */
  .mm-suffix{ font-size:12px; letter-spacing:0; padding-bottom:2px; }
  .mm-btn{ font-size:13px; padding:5px 8px; border-width:2px; }
  .mm-btn-eye img{ width:22px; }
  .mm-btn-go{ font-size:16px; padding:8px; width:80%; }
  .mm-auth-fpw{ font-size:13px; }
  .mm-auth .field-error,
  .mm-auth .form-msg,
  .mm-auth-hint{ font-size:12px; margin-top:4px; }
  .mm-auth-bottom .mm-auth-hint{ margin-left:0; }
  /* 栏目页头（DIARIES / 日记、BAR / 帖子等）：手机端文字与右侧像素图标不要并排，防止描述换行后压住图标 */
  .page-head{ flex-direction:column; align-items:flex-start; gap:8px; padding-bottom:8px; }
  .page-title{ font-size:15px; letter-spacing:1px; }
  .page-sub{ font-size:13px; margin-top:4px; }
  /* 用 .page-head 前缀提升特异性，压过桌面 .sec-icon 的 margin-top:-22px（源码更靠后会被优先采用），
     否则手机端图标仍会被上提 22px 压进单行的栏目简介里 */
  .page-head .sec-icon{ height:90px; width:auto; margin-top:0; align-self:flex-start; }
  /* 城镇详情页大图头：手机端左图占满宽度、右图紧随其后 */
  .work-hero{ flex-direction:column; }
  .work-hero-left,
  .work-hero-right{ flex:1 1 auto; width:100%; min-width:auto; }
  .work-hero-cover,
  .work-hero-cover img{ max-height:300px; }
}
.modal-head{
  display:flex; align-items:center; justify-content:space-between;
  padding:12px 14px; border-bottom:var(--px) solid var(--line);
  background:var(--panel-2);
}
.modal-head h3{ margin:0; font-size:16px; letter-spacing:2px; color:var(--amber); }
.modal-body{ padding:16px; }

/* ---------------- Toast ---------------- */
/* 提示消息：左上角、音量控件下方（音量控 left:10/top:68，框高约 66px → 底边约 134px） */
.toast{
  position:fixed; left:10px; top:142px; z-index:500;
  background:var(--panel-2); border:var(--px) solid var(--amber);
  color:var(--text); padding:10px 18px;
  box-shadow: var(--shadow-hard); font-size:15px; max-width:88vw;
}
@media (max-width:560px){
  .toast{ left:6px; top:128px; }
}

/* ---------------- Admin ---------------- */
.form-actions{ display:flex; gap:8px; margin-top:12px; }
.field-inline{
  display:flex; align-items:center; gap:10px;
}
.field-inline > span{ margin-bottom:0; }
.field-inline input{ width:auto; }
.uid-box{
  display:block; background:var(--bg); border:var(--px) solid var(--line);
  padding:9px 10px; color:var(--amber); font-size:14px; word-break:break-all;
}
/* 我的页：gamericon 头像格（gamericon.png 960×1008 = 20列×21行，每格 48px；放大 2 倍 = 96px 显示） */
.avatar-box{
  width:96px; height:96px; flex-shrink:0;
  image-rendering:pixelated;
  border:4px solid var(--line-2); box-shadow:3px 3px 0 #0a0806;
  background-repeat:no-repeat; background-color:#0a0806;
}
/* 我的页：左右两面板对称、等宽等高，整组居中（相对页面中线对称） */
.me-grid{ align-items:stretch; margin:0 auto; }
.me-grid .panel{ margin-top:0; }   /* 覆盖 .panel+.panel 的 16px 上边距：网格内上下边框严格平齐 */
.me-panel{ display:flex; flex-direction:column; }
.me-panel > *{ align-self:stretch; }          /* 表单行通栏；按钮自行控制 */
.me-panel .field{ align-self:stretch; }
.me-panel > .btn{ align-self:flex-end; }
/* 头像区与账号信息行 */
.panel-avatar{ display:flex; gap:18px; align-items:center; margin-bottom:16px; }
.avatar-ops{
  flex:1; min-width:0;
  display:flex; flex-direction:column; align-items:flex-end;   /* 抽卡按钮靠面板右侧（红框位） */
}
/* 按钮 + 下方费用提示：居中列，让「N G/次」正好落在按钮正下方 */
.ops-col{ display:flex; flex-direction:column; align-items:center; }
.ops-col .ops-cost{ margin:6px 0 0; font-size:13px; }
.avatar-ops .hint{ margin-top:8px; }
/* 保存 / 后台管理：贴各自面板右下角，相互对称（左=保存，右=后台管理） */
.me-save-row{ display:flex; justify-content:flex-end; margin-top:auto; }
.admin-entry{ text-align:right; margin-top:auto; }
/* G 数额大字显示（信息页，复刻游戏 G:NN 风格） */
.g-display{
  display:flex; align-items:baseline; gap:6px;
  margin:2px 0 16px; padding:8px 12px;
  background:#000; border:3px solid var(--line-2); box-shadow:inset 0 0 0 2px #000;
}
.g-display span{ font-family:var(--font-pixel); font-size:21px; color:#fff; letter-spacing:2px; }
.g-display b{ font-family:var(--font-pixel); font-size:21px; color:#fff; }
/* 当月签到表：仿电子公告栏（金属斜角框 + 深黑内屏），拉宽让整月日历都在框内 */
.checkin-box{
  position:fixed; top:88px; right:16px; z-index:55;
  width:214px;
  background:#000;
  border:10px solid transparent;
  border-image: url('../img/metal-frame.png') 12 / 10px stretch;
  box-shadow:3px 4px 0 rgba(0,0,0,.55);
  padding:0;
}
/* 窄屏时右侧签到表会与表单/输入框重叠并拦截点击（尤其手机发帖），直接隐藏 */
@media (max-width:760px){
  .checkin-box{ display:none !important; }
  .forbes-box{ display:none !important; }
  .broadcast-box{ display:none !important; }
}

/* ---------------- 世界广播频道《致12点的你》（福布斯原位置：网页左侧） ---------------- */
.broadcast-box{
  position:fixed; right:16px; top:460px; z-index:55;
  width:300px;
  background: var(--panel);
  border:3px solid #1a130c;
  box-shadow: inset 3px 3px 0 rgba(255,235,200,.09), inset -3px -3px 0 rgba(0,0,0,.35), 4px 4px 0 #1a130c;
  padding:0; color:var(--text);
}
.broadcast-head{
  position:relative; display:flex; align-items:center; justify-content:center;
  padding:10px 8px; background:var(--panel);
  border-bottom:2px solid #1a130c;
}
.broadcast-head .bc-megaphone{
  position:absolute; left:4px; top:50%; transform:translateY(-50%);
  width:78px; height:39px; object-fit:contain; display:block;
  image-rendering:pixelated;
  filter:drop-shadow(1px 1px 0 #1a130c);
}
.broadcast-head .bc-title{
  font-family:var(--font-pixel); font-size:14px; color:var(--amber); letter-spacing:0;
}
/* 消息列表：恒显 12 行（下部分留 2 行空间），不足留空 */
.broadcast-list{ background:var(--panel); padding:4px 8px; min-height:180px; }
.broadcast-msg{
  display:flex; align-items:flex-start; gap:6px;
  font-size:12px; line-height:1.5; color:var(--text);
  padding:4px 0; border-bottom:1px solid rgba(26,19,12,.35);
}
.broadcast-msg:last-of-type{ border-bottom:none; }
.broadcast-msg .bc-nick{ font-family:var(--font-pixel); font-size:11px; color:var(--amber); flex-shrink:0; }
.broadcast-msg .bc-uid{ font-family:var(--font-pixel); font-size:9px; color:var(--dimmer); flex-shrink:0; }
.broadcast-msg .bc-text{ color:var(--text); word-break:break-word; }
.broadcast-blank{ min-height:18px; padding:4px 0; }
/* 举报页：私信按钮 + QQ 联系方式同行 */
.pm-contact-row{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.pm-contact-inline{ font-size:15px; color:var(--text); }
/* 发言输入框：与底部标语统一为暗色底纹区域，去掉硬横线 */
.broadcast-input{
  display:flex; gap:6px; align-items:center;
  padding:10px 10px 6px;
  background:rgba(26,19,12,.28);
}
.broadcast-input input{
  flex:1; min-width:0; background:rgba(0,0,0,.35); color:var(--text);
  border:2px solid rgba(26,19,12,.55); font-family:var(--font-body); font-size:12px;
  padding:6px 8px; outline:none;
  box-shadow:inset 2px 2px 0 rgba(0,0,0,.25), inset -1px -1px 0 rgba(255,235,200,.05);
}
.broadcast-input input::placeholder{ color:var(--dimmer); }
.broadcast-input input:focus{ border-color:var(--amber); }
.broadcast-input .bc-send{
  flex-shrink:0;
  padding:6px 10px; font-size:11px; line-height:1.2;
  border:2px solid rgba(26,19,12,.55);
  box-shadow:inset 1px 1px 0 rgba(255,235,200,.12), 2px 2px 0 rgba(0,0,0,.35);
}
.broadcast-input .bc-send[disabled]{ filter:grayscale(.7); cursor:default; }
/* 底部提示：与标题同款像素字、琥珀色，靠右融入暗色底纹 */
.bc-foot{
  margin:0; padding:6px 10px 10px;
  text-align:right;
  font-family:var(--font-pixel); font-size:14px; color:var(--amber); letter-spacing:1px;
  background:rgba(26,19,12,.28);
}
/* 位置由 JS 动态对位（#checkinBox 底部 + 1cm≈38px）；CSS 兜底：右侧、签到表下方 */
.forbes-box{
  position:fixed; left:16px; top:225px; z-index:55;   /* top 兜底，JS 会覆盖为动态值 */
  width:300px;
  background:#c8a05e;
  background-image:url('../img/parchment.png');
  background-size:100% 100%;   /* 羊皮纸拉伸铺满，撕边对齐面板四角 */
  background-repeat:no-repeat;
  box-shadow:0 6px 0 rgba(0,0,0,.35), 0 0 0 1px rgba(70,45,15,.6);
  padding:2px;
}
/* 标题：羊皮纸做旧金字，居中；去掉「TOP10 ·」 */
.forbes-month{
  padding:12px 8px 8px;
  border-bottom:2px dashed rgba(90,55,15,.55);
  text-align:center;
}
.forbes-title{
  display:block;
  font-family:var(--font-pixel); font-size:21px; letter-spacing:3px; font-weight:700;
  color:#d00000; text-shadow:1px 1px 0 rgba(255,240,200,.4);
}
/* 表头 + 行：4 列 grid。排名 | 姓名(大写,预留 6 汉字) | UID(小写) | 财富 */
.forbes-head, .forbes-row{
  display:grid; grid-template-columns:22px 84px 58px 72px; gap:4px;
  padding:4px 12px; align-items:center;
}
.forbes-head{
  background:rgba(120,80,30,.18);
  border-bottom:2px dashed rgba(90,55,15,.55);
  align-items:end; line-height:1;
}
/* 表头 4 个字段：字号/粗细/行高统一，底部对齐到同一水平线 */
.forbes-head .hdr-cell{
  font-family:var(--font-pixel); font-size:10px; font-weight:400;
  color:#5a3a12; letter-spacing:1px; line-height:1; text-align:left;
}
.forbes-head .hdr-rich{ text-align:right; }
/* 数据行：UID 一律小写、姓名一律大写（拉丁自动转换，汉字不受影响） */
.fr-uid{ text-transform:lowercase; }
.fr-name{ text-transform:uppercase; }
.forbes-list{ padding:2px 0; }
.forbes-row{ font-size:14px; color:#3a2708; min-height:24px; }
.forbes-row + .forbes-row{ border-top:1px solid rgba(90,55,15,.28); }
.fr-rank{ font-family:var(--font-pixel); color:#6b4a1c; text-align:center; }
.fr-name{
  color:#3a2708; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  max-width:84px;   /* 预留 6 汉字，超长截断，hover title 看全名 */
}
.fr-uid{ color:#6b4a1c; font-family:var(--font-pixel); font-size:12px; }
.fr-rich{ color:#7a1d10; font-family:var(--font-pixel); font-size:14px; text-align:right; }
/* 前三名：名次点亮琥珀铜色，财富强调（做旧棕金） */
.forbes-row.fr-top .fr-rank{ color:#a3470f; }
.forbes-row.fr-top .fr-rich{ color:#8a2408; font-weight:bold; }
/* 恒显 12 行，用户不足 12 个时缺失行留空 */
.forbes-empty{ padding:2px 12px; min-height:24px; color:rgba(90,55,15,.5); font-size:13px; }
/* 第 11 行（页脚条）：与第 10 行之间为同款 2px 虚线，「每 6h 更新」靠右末尾 */
.forbes-refresh{
  padding:4px 12px; min-height:24px;
  border-top:2px dashed rgba(90,55,15,.55);
  text-align:right;
  font-family:var(--font-body); font-size:12px; color:#5a3a12; letter-spacing:.5px;
}
.checkin-month{
  font-family:var(--font-pixel); font-size:11px; letter-spacing:1px;
  color:var(--amber); text-align:center;
  padding:7px 8px;
  background:#000;
  border-bottom:2px dashed #2f5a37;
}
.checkin-grid{
  display:grid; grid-template-columns:repeat(7, 1fr); gap:3px;
  padding:8px; background:#000;
}
.checkin-cell{
  aspect-ratio:1; height:auto; text-align:center;
  font-family:var(--font-pixel); font-size:9px; line-height:1;
  display:flex; align-items:center; justify-content:center;
  background:#0c0f13; border:1px solid #3a424b; color:var(--dimmer);
}
.checkin-cell.on{ background:var(--amber); color:#0a0c0e; border-color:#c07f22; }
.checkin-cell.today{ border-color:var(--steel); }
/* 星期表头行：暖橙像素字、无底无框；空格（当月首日前）彻底透明 */
.checkin-cell.wk{
  aspect-ratio:auto; background:none; border:none;
  color:var(--amber); font-size:8px; padding:2px 0;
}
.checkin-cell.blank{ aspect-ratio:auto; background:none; border:none; }
.checkin-foot{
  display:flex; align-items:center; justify-content:space-between; gap:8px;
  padding:7px 8px; background:#000; border-top:2px dashed #2f5a37;
}
/* 「本月 N 天」占右下角（原「每日12点刷新」小字已删；签到按自然日 0 点刷新，无需提示） */
.checkin-sum{ font-size:11px; color:var(--dim); font-family:var(--font-pixel); letter-spacing:1px; margin-left:auto; }
.btn-checkin{
  font-family:var(--font-body); font-size:12px; padding:4px 10px;
  background: var(--amber); color:#1a1206; cursor:pointer;
  border: 2px solid #1a130c;
  box-shadow: inset 1px 1px 0 rgba(255,235,200,.4), 1px 2px 0 #1a130c; flex-shrink:0;
}
.btn-checkin:active{ transform:translate(1px,1px); box-shadow:none; }
.btn-checkin[disabled]{ filter:grayscale(.6); cursor:default; }
.checkin-sum{ font-size:11px; color:var(--dim); font-family:var(--font-pixel); letter-spacing:1px; }
/* +N G 浮动动画（每次 G 变化从左侧缓缓上升，贴音量控一侧） */
.g-fly-layer{ position:fixed; left:18px; bottom:0; top:0; width:120px; z-index:9990; pointer-events:none; overflow:visible; }
.g-fly{
  position:absolute; left:6px; bottom:20%;
  font-family:var(--font-pixel); font-size:19px; color:var(--amber);
  text-shadow:2px 2px 0 #0a0806; white-space:nowrap;
  animation:g-fly-up 2.6s ease-out forwards;
}
.g-fly.neg{ color:var(--rust); }
@keyframes g-fly-up{
  0%{ opacity:0; transform:translateY(0); }
  12%{ opacity:1; }
  100%{ opacity:0; transform:translateY(-320px); }
}
.adm-head{
  display:flex; align-items:center; gap:8px;
  padding:8px 10px; font-size:12px; color:var(--dimmer);
  border:var(--px) solid var(--line); background:var(--panel-2);
}
.adm-list{ border:var(--px) solid var(--line); border-top:none; }
.adm-row{
  display:flex; align-items:center; gap:10px;
  padding:10px; border-bottom:var(--px) solid var(--line); background:#00000022;
}
.adm-row:hover{ background:#00000044; }
.adm-main{ flex:1; min-width:0; }
.adm-main b{ font-size:15px; }
.adm-main p{ margin:2px 0 0; }
/* 操作按钮：统一排成一排、整体靠右对齐（删除按钮在 DOM 中排最右即自然位于最右） */
.adm-ops{ display:flex; gap:6px; flex-wrap:nowrap; justify-content:flex-end; align-items:center; flex:0 0 auto; }
.adm-ops .btn{ padding:4px 8px; font-size:13px; white-space:nowrap; }
/* 最左序号/编号列：有序号属性（sort_order）显示序号，否则显示条目本身的编号（id / 帖子编号 / UID） */
.adm-sort{ flex:0 0 66px; font-size:14px; font-weight:bold; color:#000; text-align:center; }
.adm-sort-h{ flex:0 0 66px; font-weight:bold; text-align:center; }
/* 用户管理行：红框；背景还原为标准深色行 */
.adm-row--user{
  border:2px solid var(--rust);
  background:#00000022;          /* 还原为之前的深色背景（同 .adm-row） */
  color:var(--text);
}
.adm-row--user:hover{ background:#00000044; }
.adm-row--user .adm-main{ min-width:0; }
.adm-row--user .adm-main b{ color:var(--text); font-size:15px; }
.adm-row--user .muted{ color:var(--dim); }
.adm-row--user .tag{ background:var(--bg-2); border-color:var(--line); color:var(--dim); }
.adm-row--user .tag-amber{ color:var(--amber); border-color:var(--amber-dim); background:transparent; }
.adm-row--user .tag-olive{ color:var(--olive); border-color:#5c7a2c; background:transparent; }
.adm-row--user .tag-rust{ color:var(--rust); border-color:#8a4023; background:transparent; }
/* 公民管理：搜索框 + 分页器 + 第一行固定位置（被搜到/空缺） */
.user-search{ display:flex; gap:8px; margin:0 0 12px; flex-wrap:wrap; }
.user-search input{
  flex:1; min-width:220px; background:#000; border:2px solid var(--line-2);
  color:var(--text); font-family:var(--font-pixel); font-size:14px; padding:7px 10px;
}
.user-pagers{ display:flex; gap:8px; margin:12px 0; flex-wrap:wrap; }
.user-pager{
  font-family:var(--font-pixel); font-size:13px; padding:5px 10px;
  background:var(--panel-2); color:var(--text); border:2px solid var(--line); cursor:pointer;
}
.user-pager.active{ background:var(--amber); color:#1a1206; border-color:var(--amber-dim); }
/* 第一行固定位：被搜到用户（琥珀描边高亮） / 空缺（占位灰） */
.adm-row--user.adm-row--matched{ border-color:var(--amber); box-shadow:2px 2px 0 var(--amber-dim); }
.adm-row--user.adm-row--reserved{ display:block; background:#00000022; border:2px dashed var(--line); color:var(--dimmer); padding:14px; }
@media (max-width:720px){
  .adm-head{ display:none; }
  .adm-row{ flex-wrap:wrap; }
  .adm-ops{ flex-wrap:wrap; justify-content:flex-start; }
}

/* 后台管理页：灰色字统一改为黑色（表格表头、muted、hint、dim、page-sub、tag 等） */
#view.admin-view .adm-head,
#view.admin-view .muted,
#view.admin-view .hint,
#view.admin-view .dim,
#view.admin-view .page-sub,
#view.admin-view .tag,
#view.admin-view .row-main p,
#view.admin-view .row-side,
#view.admin-view .adm-main p,
#view.admin-view .adm-row--reserved{ color:#000; }
#view.admin-view .tag{ background:var(--bg-2); border-color:var(--line); }

/* ---------------- BGM 悬浮音控（暖色像素砖块，融入绿场景；仅播放键+音量条） ---------------- */
#bgmDock{
  position:fixed; left:10px; top:72px; z-index:60;
  display:block;
  background:#241a12;   /* 暖深褐内屏（非纯黑，与整体暖绿协调） */
  border:3px solid #1a130c;
  box-shadow:
    inset 2px 2px 0 rgba(255,235,200,.12),
    inset -2px -2px 0 rgba(0,0,0,.4),
    3px 3px 0 #1a130c;
  padding:0;
}
#bgmDock .bgm-dock-row{
  display:flex; align-items:center; gap:8px;
  padding:8px 10px; background:#241a12;
}
#bgmIcon{
  width:45px; image-rendering:pixelated; cursor:pointer;   /* 音波仪器放大 1.5 倍（30→45） */
  flex-shrink:0; display:block;
}
#bgmIcon:hover{ filter:brightness(1.25); }
#bgmMute{
  background:none; border:none; padding:0; cursor:pointer;
  color:var(--steel); width:18px; height:18px; flex-shrink:0;
}
#bgmMute svg{ width:100%; height:100%; display:block; }
#bgmMute:hover{ color:var(--amber); }
#bgmMute.muted{ color:#5c646d; }
#bgmVol{
  -webkit-appearance:none; appearance:none;
  width:74px; height:8px; background:#0c0f13; cursor:pointer;
  border:1px solid #3a424b; margin:0;
}
#bgmVol::-webkit-slider-thumb{
  -webkit-appearance:none; appearance:none;
  width:12px; height:16px; background:linear-gradient(#e8a33d,#c07f22);
  border:1px solid #0a0c0e; box-shadow:1px 1px 0 rgba(0,0,0,.5);
  border-radius:0;
}
#bgmVol::-moz-range-thumb{
  width:10px; height:14px; background:linear-gradient(#e8a33d,#c07f22);
  border:1px solid #0a0c0e; border-radius:0;
}
@media (max-width:560px){
  #bgmDock{ left:6px; top:64px; min-width:110px; }
  #bgmIcon{ width:26px; }
  #bgmVol{ width:54px; }
}

/* 左上角品牌区：MM 后面的动态船 */
.brand-ship{
  width:52px; image-rendering:pixelated; flex-shrink:0;
  margin:0 2px;
  transform:translateY(2px);
}
/* 小船可点（触发绕场行走动画）：加可点指针 + hover 微提示 */
#brandShip{ cursor:url('../img/cursor-pointer.png') 12 4, pointer !important; transition:filter .12s; }
#brandShip:hover{ filter:drop-shadow(0 0 4px var(--amber)); }
/* 行走中的小船精灵：覆盖视口、按方向切帧（4×4 sprite sheet 400% 切片） */
#mmShipWalk{
  position:fixed; left:0; top:0; z-index:80; pointer-events:none;
  image-rendering:pixelated;
  filter:drop-shadow(3px 3px 0 #0a0806);
}

/* ---------------- 首页电子公告栏（马歇尔兄弟托举） ---------------- */
.board-dock{
  display:flex; align-items:flex-end;
  margin:30px 0 2px; width:fit-content; max-width:100%;
}
.board-man{
  width:72px; image-rendering:pixelated; flex-shrink:0;
  filter:drop-shadow(3px 3px 0 #0a0806);
}
.board-man:hover{ animation:board-bounce .5s steps(2) infinite; }
@keyframes board-bounce{
  0%,100%{ transform:translateY(0); }
  50%{ transform:translateY(-4px); }
}
.board-panel{
  background:#071a0e;                         /* 电子屏深绿底 */
  border:3px solid #8fae4a;
  box-shadow: inset 0 0 0 2px #04120a, 4px 4px 0 #0a0806;
  padding:10px 18px 12px;
  margin:0 2px 16px;                          /* 底部抬高，像被小人的手臂托着 */
  min-width:190px;
}
.board-title{
  font-family:var(--font-pixel); color:var(--amber);
  font-size:13px; letter-spacing:2px; text-align:center;
  border-bottom:2px dashed #2f5a37; padding-bottom:6px; margin-bottom:8px;
}
.board-panel a{
  display:block; color:#9fd66b;
  font-family:var(--font-body); font-size:14px; letter-spacing:1px;
  text-decoration:none; padding:3px 0;
}
.board-panel a::before{ content:'▸ '; color:#5d8a3c; }
.board-panel a:hover{ color:var(--amber); }
/* 今日已登录小字：占满整行、水平居中，落在首页底部黑色条位置 */
.today-login-note{
  width:100%; margin:4px 0 0; text-align:center;
  font-size:13px; letter-spacing:1px; color:var(--dim);
}
.today-login-note b{ font-family:var(--font-pixel); font-size:13px; color:var(--amber); }
@media (max-width:560px){
  .board-man{ width:52px; }
  .board-panel{ min-width:150px; padding:8px 12px 10px; }
}

/* ---------------- Misc ---------------- */
.empty{
  text-align:center; padding:34px 16px; color:var(--dim);
  border: var(--px) dashed var(--line); background:#00000030;
}
/* 大航海日记空状态：通缉令头像靠左 + 文案 */
.diary-empty{ display:flex; align-items:center; justify-content:flex-start; gap:20px; padding-left:26px; text-align:left; }
.diary-empty p{ margin:0; }
.diary-face{ width:120px; image-rendering:pixelated; flex-shrink:0; }
.loading{ text-align:center; padding:34px; color:var(--amber-dim); font-family:var(--font-pixel); font-size:12px; }
.dim{ color:var(--dim); }
.muted{ color:var(--dimmer); font-size:13px; }
.pager{ display:flex; gap:8px; justify-content:center; margin-top:18px; flex-wrap:wrap; }
.pager .btn{ padding:6px 12px; font-size:14px; }
.divider{ height:var(--px); background:var(--line); margin:18px 0; border:0; }
.kv{ display:flex; gap:10px; font-size:14px; margin-bottom:6px; }
.kv span{ color:var(--dim); width:78px; flex-shrink:0; }
.kv a{ color:var(--amber); text-decoration:none; word-break:break-all; }
.kv a:hover{ text-decoration:underline; }
.kv b{ font-weight:normal; color:var(--text); }
/* QQ 行：QQ 值弹性占位，「重新绑定」按钮+5G/次提示贴行最右，与抽卡同款 */
.kv.kv-qq{ align-items:flex-start; }
.kv.kv-qq b{ flex:1; }
/* 手机号行：号码占满，朝左眼睛按钮贴行最右（默认闭眼=11 个 ※，点击睁眼显示真实号码） */
.kv.kv-phone{ align-items:center; }
.kv.kv-phone b{ flex:1; letter-spacing:1px; }
.kv .phone-eye{
  background:none; border:none; padding:0; cursor:pointer; flex-shrink:0;
  align-self:center;
}
.kv .phone-eye img{ width:26px; height:auto; display:block; image-rendering:pixelated; }
.kv .phone-eye:hover img{ filter:brightness(1.3); }
.kv .rebind-ops{
  display:flex; flex-direction:column; align-items:center; flex-shrink:0;
  margin-top:2px;
}
.kv .rebind-ops .hint{ margin-top:4px; }
/* 栏目页头图标：大尺寸（底对齐页头，顶边顶到内容区顶黑线），像素锐化 */
/* 栏目像素图标：加同款「像素凸起」边框（深褐外描 + 立体斜边 + 暖褐底衬），
   与全站 .pixel-block/.panel 同风格，消除裸图贴绿底的突兀感 */
.sec-icon{
  height:140px; width:auto; image-rendering:pixelated; flex-shrink:0; align-self:flex-end; margin-top:-22px;
  display:block;
  padding:5px; background:var(--panel);
  border:3px solid #1a130c;
  box-shadow: inset 3px 3px 0 rgba(255,235,200,.09), inset -3px -3px 0 rgba(0,0,0,.35), 4px 4px 0 #1a130c;
}
/* 栏目「说明框 + 按钮」同行：灰框 flex:1 自动裁剪到按钮左侧，按钮贴右（不再另起一行） */
.sec-ops-row{ display:flex; gap:10px; align-items:stretch; margin-bottom:14px; }
.sec-ops-row .notice{ flex:1; display:flex; align-items:center; }
.sec-ops-row .btn{ align-self:center; flex-shrink:0; }
.notice.tight{ margin-bottom:0; }

.notice{
  background:#3a2c1a; border:var(--px) solid var(--amber-dim);
  padding:10px 12px; font-size:13px; color:#e7d3a0; margin-bottom:14px;
}

/* 举报页：卡片内文字放大 2 号（h3 16→18px，p 14→16px） */
.report-cards .card h3{ font-size:19px; }
.report-cards .card p{ font-size:17px; }

.site-footer{
  border-top: var(--px) solid var(--line);
  background: var(--panel);
  padding:20px 0; text-align:center; font-size:13px; color:var(--dim);
}
.site-footer p{ margin:0 0 6px; }
.footer-inner{
  display:flex; align-items:center; justify-content:center;
  gap:48px; text-align:center;   /* 48px = 4 个汉字（12px），头像相对右侧文字往左挪 4 字 */
}
.footer-inner > div{ min-width:0; }

/* ---------------- 站长标志头像 ---------------- */
.face-master{
  display:inline-block; object-fit:cover;
  border-radius:50%;                       /* 四角已涂黑，再强制圆形 */
  border:none;                              /* 去掉橘黄描边（2026-10-13） */
  background:#000;
  image-rendering:auto;                     /* 照片头像平滑渲染，不糊 */
  vertical-align:-6px;
  box-shadow:0 0 0 2px #0a0806, 2px 2px 0 #0a0806;
}
.face-master-lg{ width:72px; height:72px; vertical-align:middle; }
.byline{ display:inline-flex; align-items:center; gap:5px; }
.byline b{ color:var(--amber); font-weight:400; }
@media (max-width:560px){
  .footer-inner{ flex-direction:column; text-align:center; }
}

/* ============ 坦克地图动画（点击红狼战车触发） ============ */
/* 全屏透明覆盖层：位于所有元素之上，但不拦截点击（pointer-events:none），
   用户在动画期间点击其它交互位置跳页时可被立刻中断 */
#mmAnimLayer{
  position:fixed; inset:0; z-index:10000; pointer-events:none; overflow:hidden;
}
#mmAnimLayer .mm-anim-sprite{
  position:absolute; top:0; left:0; image-rendering:pixelated;
  will-change:transform,opacity;
}
/* 动画坦克：与 hero-tank 同尺寸显示 */
#mmTank{ width:140px; }
/* 红狼角色：从头像框跳出扎进坦克。RedWolf.png 为 32×32 单帧精灵，2× = 64px 像素不糊 */
#mmWolf{
  width:64px; height:64px;
  background:url('../img/RedWolf.png') no-repeat;
  background-size:100% 100%;   /* 单帧贴满；若日后换成精灵表可再改为 background-size:400% 切片 */
}
/* 黑色履带轨迹（贴在坦克身下，向右越长越长） */
#mmTrail{
  position:absolute; top:0; left:0; height:7px; background:#000;
  border-radius:1px; will-change:width,transform; opacity:.9;
}
/* 小地图旋转/放大：world-map.png 克隆体，居中旋转 360° */
#mmMapSpin{ width:150px; image-rendering:auto; will-change:transform,opacity; }
/* 大地图：mm1-map.png，停留 3s；放大显示时用平滑缩放，避免像素块/网格 */
#mmMapBig{
  position:absolute; image-rendering:auto;
  border:6px solid #000; background:#000;
  box-shadow:0 8px 30px rgba(0,0,0,.5);
  will-change:transform,opacity;
}
.mm-anim-run{ overscroll-behavior:none; }
@media (max-width:560px){ #mmTank{ width:96px; } }

/* ---------------- 坦克大战游戏框：大地图消失瞬间原位生成，复古怀旧像素外框 ---------------- */
/* 外框尺寸 = 大地图 bigW；左/上同大地图，保证「消失→生成」位置完全重合 */
.mm-game-frame{
  position:absolute;
  background:var(--panel);
  /* 复古怀旧风：深褐像素砖凸起外框（4px 硬阴影台阶 + 内嵌立体斜边），配暖橙点缀 */
  border:3px solid #1a130c;
  box-shadow:
    inset 4px 4px 0 rgba(255,235,200,.12),
    inset -4px -4px 0 rgba(0,0,0,.4),
    0 0 0 3px #1a130c,
    8px 8px 0 rgba(0,0,0,.35);
  padding:14px;
  /* 外框内四角螺丝点缀（金属怀旧） */
  background-image:
    radial-gradient(circle at 10px 10px, var(--amber) 0 3px, #1a130c 3px 4px, transparent 4px),
    radial-gradient(circle at calc(100% - 10px) 10px, var(--amber) 0 3px, #1a130c 3px 4px, transparent 4px),
    radial-gradient(circle at 10px calc(100% - 10px), var(--amber) 0 3px, #1a130c 3px 4px, transparent 4px),
    radial-gradient(circle at calc(100% - 10px) calc(100% - 10px), var(--amber) 0 3px, #1a130c 3px 4px, transparent 4px);
  background-size:14px 14px, 14px 14px, 14px 14px, 14px 14px;
  background-position:left top, right top, left bottom, right bottom;
  background-repeat:no-repeat;
}
.mm-game-frame-iframe{
  display:block; width:100%; height:100%; border:0;
  background:#000;
  box-shadow:inset 0 0 0 2px #000, inset 0 0 24px rgba(0,0,0,.7);
}

/* ---------------- #/game 游戏页：外框 + 内嵌 iframe + 右上角黄色 ×（结算关闭） ---------------- */
.game-stage{ display:flex; flex-direction:column; align-items:center; padding:12px; }
.game-frame{
  position:relative; background:var(--panel);
  border:3px solid #1a130c;
  box-shadow:
    inset 4px 4px 0 rgba(255,235,200,.12),
    inset -4px -4px 0 rgba(0,0,0,.4),
    0 0 0 3px #1a130c, 8px 8px 0 rgba(0,0,0,.35);
  padding:10px;
}
/* iframe 撑满外框内部（100%），游戏 canvas 会随之铺满，不再只占左上角 */
.game-frame{ display:flex; flex-direction:column; }
.game-frame-iframe{
  display:block; flex:1; min-height:0; width:100%; height:100%; border:0;
  background:#000;
}
/* ---------------- 通用「右上角叉」像素风格（站点所有 关闭/退出/移除 的叉 统一用 .mm-x）
   定版设计源自「小游戏 结算关闭叉」：暖橙底 + 像素字 + 深褐描边 + 硬阴影。
   以后任何需要右上角叉退出/删除的地方，直接加 class="mm-x"（小格用 .mm-x--sm）。 */
.mm-x, .game-close{
  position:absolute; top:6px; right:6px; z-index:60;
  width:34px; height:34px; line-height:1;
  display:flex; align-items:center; justify-content:center;
  font-family:var(--font-pixel); font-size:19px; cursor:pointer;
  color:#1a130c; background:var(--amber);
  border:3px solid #1a130c; box-shadow:2px 2px 0 #1a130c;
}
.mm-x:hover, .game-close:hover{ background:#f5b74f; }
/* 小尺寸变体：贴在 72px 缩略图右上角，用于「删除刚插入的图片」 */
.mm-x--sm{ top:2px; right:2px; width:22px; height:22px; font-size:14px; border-width:2px; }
/* 预览图右上角删除叉：视觉全部由 .mm-x .mm-x--sm 提供（暖橙像素叉），此处仅作可查询标记 */
.img-preview-remove{ }
.game-hint{ margin:8px 0 0; font-size:13px; }

/* ==========================================================
   审核提交流程样式（ReviewForm + 后台 diff）
   ========================================================== */
.review-form{ margin:14px 0; }
.review-form-body{ display:flex; flex-direction:column; gap:10px; }
.review-form-foot{ margin-top:14px; display:flex; flex-direction:column; align-items:flex-start; gap:10px; }
.review-diff-wrap{ display:grid; grid-template-columns:1fr 1fr; gap:14px; margin:14px 0; }
.review-diff-col{ background:var(--panel); border:3px solid #1a130c; padding:10px; box-shadow:3px 3px 0 #1a130c; }
.review-diff-col-new{ background:#3f3226; }
.review-diff-title{ font-size:15px; margin:0 0 10px; color:var(--amber); }
.review-diff-body{ display:flex; flex-direction:column; gap:8px; }
.review-diff-empty{ min-height:120px; display:flex; align-items:center; justify-content:center; opacity:.6; }
.review-diff-row{ display:grid; grid-template-columns:90px 1fr; gap:8px; padding:6px; background:rgba(0,0,0,.25); border-radius:2px; }
.review-diff-row b{ color:var(--dim); font-weight:normal; overflow-wrap:anywhere; }
.review-diff-row span{ color:var(--text); overflow-wrap:anywhere; }
.review-diff-changed{ background:rgba(232,163,61,.18); outline:2px dashed var(--amber); }
.review-diff-old{ color:var(--red); text-decoration:line-through; }
.review-action-panel{ margin-bottom:20px; }
.review-action-panel .form-actions{ margin-top:14px; display:flex; gap:10px; flex-wrap:wrap; }
.card-amber{ border-color:var(--amber); }
.btn-edit-sec, .btn-edit-item{ white-space:nowrap; }
@media (max-width:760px){
  .review-diff-wrap{ grid-template-columns:1fr; }
}

/* ==========================================================
   悬浮面板自适应：当窗口缩窄到面板与主体 .wrap 边界接触/重叠时，自动隐藏面板
   ========================================================== */
.panel-collapsed{
  display:none !important;
}

/* ==========================================================
   颜文字表情：大段输入框「＋ 表情」按钮 + 选择器弹层
   ========================================================== */
.emoji-btn{ margin-top:6px; }
.emoji-pop{
  position:fixed; z-index:600; width:min(360px, 92vw);
  background:var(--panel); border:3px solid #1a130c; color:var(--text);
  box-shadow: inset 3px 3px 0 rgba(255,235,200,.09), inset -3px -3px 0 rgba(0,0,0,.35), 4px 4px 0 #1a130c;
  padding:10px;
}
.emoji-tabs{ display:flex; flex-wrap:wrap; gap:4px; margin-bottom:8px; }
.emoji-tab{
  font-family:var(--font-pixel); font-size:12px; color:var(--dim);
  background:#3a2b1c; border:2px solid #1a130c; padding:3px 8px; cursor:pointer;
}
.emoji-tab:hover{ color:var(--text); }
.emoji-tab.on{ color:#1a130c; background:var(--amber); }
.emoji-body{ display:flex; flex-direction:column; gap:4px; max-height:560px; overflow:auto; }
.emoji-item{
  font-size:14px; color:var(--text); background:#241a12;
  border:2px solid #1a130c; padding:6px 8px; cursor:pointer; text-align:center;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.emoji-item:hover{ background:var(--amber); color:#1a130c; }

/* ==========================================================
   签名像素气泡（任意头像上悬浮 2s 触发）：白底黑像素框 + 底部尾巴
   框图 assets/img/bubble-frame.png 整体拉伸，尾巴随图居中朝下
   ========================================================== */
#sigBubble,
#fixBubble{
  position:fixed; z-index:99990; display:none; pointer-events:none;
  box-sizing:border-box; max-width:300px; min-width:180px; min-height:128px;
  padding:16px 18px 40px;                       /* 底部大留白 = 图内尾巴区(新图约26%高)，文字不压尾巴 */
  background:url(../img/bubble-frame.png?v=2) no-repeat center / 100% 100%;
  image-rendering:pixelated;
  font-size:14px; line-height:1.6; color:#111; text-align:center; word-break:break-word;
  display:none; flex-direction:column; align-items:center; justify-content:center;
}
#sigBubble.on,
#fixBubble.on{ display:flex; }
/* 显示时的上下抖动（1 次后停） */
@keyframes sigBob{
  0%{ transform:translateY(0); }
  30%{ transform:translateY(-6px); }
  60%{ transform:translateY(5px); }
  80%{ transform:translateY(-2px); }
  100%{ transform:translateY(0); }
}
#sigBubble.on,
#fixBubble.on{ animation:sigBob .5s steps(6,end) 1; }

/* ---- 帖子楼层页码器（« ‹ 1 2 3 › » 共 N 页，当前页琥珀高亮） ---- */
.pager-nums{ align-items:center; gap:6px; }
.pager-btn{
  min-width:34px; height:34px; padding:0 8px; box-sizing:border-box;
  display:inline-flex; align-items:center; justify-content:center;
  background:#f0e6d2; color:#3a2c1e; border:2px solid #1a130c;
  font-size:14px; font-weight:bold; cursor:pointer; text-decoration:none;
  box-shadow:2px 2px 0 #1a130c;
}
.pager-btn:hover{ background:var(--amber); }
.pager-btn.pager-cur{ background:var(--amber); color:#1a1206; cursor:default; box-shadow:inset 2px 2px 0 rgba(0,0,0,.28); }
.pager-btn.pager-jump{ font-size:16px; }
.pager-ellipsis{ color:var(--text); opacity:.75; padding:0 2px; }
.pager-total{ color:var(--text); font-size:13px; letter-spacing:1px; margin-left:6px; opacity:.9; }
/* 顶部空间不足（右上角用户条）→ 气泡显示在头像下方、尾巴朝上（用上下翻转的框图） */
#sigBubble.flip{
  padding:40px 18px 16px;                        /* 翻转后尾巴区在顶部，留白跟着对调 */
  background:url(../img/bubble-frame-flip.png?v=2) no-repeat center / 100% 100%;
}

/* 日记详情：楼主（执政官）作者卡与评论区同款两列布局，正文面板随其右移对齐 */
.post.news-op{ position:relative; margin-top:2cm; margin-bottom:0; }
.news-back-link{ position:absolute; top:-1.3cm; left:0; margin:0; font-size:16px; font-weight:bold; z-index:2; pointer-events:auto; }
.news-back-link a{ color:var(--amber); text-shadow:1px 1px 0 #1a130c; }
.post.news-op .post-body .article h1{ margin-top:0; }

/* ==========================================================
   未读消息中心：首页 hero 右上角像素白信封 + 消息面板 + 详情弹窗
   ========================================================== */

/* 白框位置（首页 hero 右上） */
.hero-inbox-slot{
  position:absolute; top:14px; right:14px; z-index:10;
  width:56px; height:44px;
  background:#3a2c1e;
  border:2px solid #fff;
  box-shadow: inset 2px 2px 0 rgba(255,235,200,.12), 3px 3px 0 rgba(0,0,0,.35);
  display:flex; align-items:center; justify-content:center;
}

/* 像素白信封按钮 */
.msg-envelope{
  position:relative; display:flex; align-items:center; justify-content:center;
  width:100%; height:100%; padding:0; margin:0;
  background:transparent; border:0; cursor:pointer;
}
.msg-envelope .env-icon{ display:block; }
.msg-envelope:hover{ filter:brightness(1.12); }

/* 未读徽标 */
.msg-badge{
  position:absolute; top:-10px; right:-10px;
  min-width:18px; height:18px; padding:0 4px;
  background:var(--red); color:#fff; border:2px solid #1a130c;
  font-family:var(--font-pixel); font-size:11px; line-height:14px; text-align:center;
  border-radius:2px; pointer-events:none;
}

/* 有未读时缓慢轻微抖动 */
@keyframes envShake{
  0%, 100%{ transform:rotate(0deg); }
  25%{ transform:rotate(-3deg); }
  75%{ transform:rotate(3deg); }
}
.msg-envelope.has-unread{ animation:envShake 1.6s ease-in-out infinite; }

/* 消息下拉面板 */
.msg-panel{
  position:fixed; top:100px; right:14px; z-index:120;
  width:360px; max-width:94vw; max-height:70vh; overflow-y:auto;
  background:var(--panel); border:3px solid #1a130c;
  box-shadow:6px 6px 0 rgba(0,0,0,.45);
}
.msg-panel-head{
  padding:10px 12px; border-bottom:3px solid #1a130c;
  font-family:var(--font-pixel); font-size:13px; color:var(--amber);
  background:rgba(0,0,0,.18);
  display:flex; justify-content:space-between; align-items:center; gap:8px;
}
.msg-readall{
  font-family:var(--font-ui); font-size:12px; color:var(--text);
  background:transparent; border:2px solid var(--amber); padding:3px 10px;
  cursor:pointer; line-height:1.3;
}
.msg-readall:hover{ background:rgba(232,163,61,.18); }
.msg-readall:disabled{ opacity:.5; cursor:default; }
.msg-empty{ padding:22px; text-align:center; color:var(--dim); font-size:14px; }

.msg-item{
  padding:10px 12px; border-bottom:2px solid #2a1f14;
  cursor:pointer; transition:background .08s;
}
.msg-item:hover{ background:rgba(232,163,61,.14); }
.msg-item--read{ opacity:.5; }
.msg-item-head{ display:flex; justify-content:space-between; align-items:center; gap:8px; margin-bottom:3px; }
.msg-kind{ font-family:var(--font-pixel); font-size:11px; color:var(--amber); }
.msg-time{ font-size:11px; color:var(--dim); flex-shrink:0; }
.msg-title{ font-size:14px; color:var(--text); margin:3px 0; line-height:1.35; word-break:break-word; }
.msg-excerpt{ font-size:12px; color:var(--dim); line-height:1.4; overflow:hidden; text-overflow:ellipsis; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }

/* 消息详情弹窗 */
.notif-detail-mask{
  position:fixed; inset:0; z-index:200;
  background:rgba(0,0,0,.55);
  display:flex; align-items:center; justify-content:center;
}
.notif-detail-mask[hidden],
.msg-panel[hidden]{
  display:none !important;
}
.notif-detail{
  width:min(520px, 92vw); max-height:86vh; overflow-y:auto;
  background:var(--panel); border:3px solid #1a130c;
  box-shadow:6px 6px 0 rgba(0,0,0,.5);
  padding:18px 20px 22px;
  position:relative;
}
.notif-detail h3{ margin:0 0 8px; font-size:18px; color:var(--amber); font-family:var(--font-pixel); line-height:1.4; }
.notif-detail-close{
  position:absolute; top:8px; right:10px;
  background:transparent; border:0; color:var(--text);
  font-size:28px; line-height:1; cursor:pointer;
}
.notif-detail-close:hover{ color:var(--amber); }
.nd-meta{ font-size:12px; color:var(--dim); margin-bottom:14px; }
.nd-status{ font-size:15px; margin:10px 0; }
.nd-status.approved{ color:#5cdb5c; }
.nd-status.rejected{ color:var(--red); }
.nd-reward{ font-size:14px; color:var(--amber); margin:6px 0; }
.nd-note{ margin:14px 0; }
.nd-note h4{ font-size:13px; color:var(--amber); margin:0 0 6px; }
.nd-note p{ color:var(--text); font-size:14px; line-height:1.6; white-space:pre-wrap; }
.nd-action{ margin-top:18px; }

/* 楼层跳转后高亮闪烁 */
@keyframes postFlash{
  0%{ box-shadow:0 0 0 3px var(--amber); }
  100%{ box-shadow:0 0 0 0 transparent; }
}
.post-flash{ animation:postFlash 2s ease-out; }

/* @提及：正文里的可点击提及（@昵称 / @//uid/） */
.mention{
  color:var(--amber);
  background:rgba(232,163,61,.12);
  border-radius:3px;
  padding:0 3px;
  cursor:pointer;
  white-space:nowrap;
}
.mention:hover{ background:rgba(232,163,61,.28); text-decoration:underline; }

/* @提及弹窗：悬浮展示对方作者卡 */
#mentionPopup{
  position:fixed;
  z-index:9999;
  display:none;
  background:var(--panel);
  border:3px solid #2c2014;
  box-shadow:0 4px 0 rgba(0,0,0,.4);
  padding:8px;
  max-width:280px;
}
#mentionPopup.on{ display:block; }
#mentionPopup .author-card{ background:transparent; border:none; box-shadow:none; padding:0; }
#mentionPopup .mention-empty{ padding:6px 10px; color:var(--text); }

/* 城镇列表卡片：FC 卡带黄色 + 顶部圆角 + 底部中央插舌 */
.cart-wrap{
  position:relative;
  filter: drop-shadow(3px 4px 0 #1a130c);
  transition: transform .08s ease;
  will-change: transform;
  transform: translateZ(0);   /* 提升到独立合成层，避免悬停抖动时遗留黑色残影 */
}
.cart-wrap:hover{
  transform: translate(-1px,-1px) translateZ(0);
}
.cart-wrap .card{
  background:#a9801e;        /* 深黄，低饱和护眼 */
  color:#1a130c;             /* 城镇卡带文字统一黑色 */
  border:none;
  height:100%;
  box-shadow: inset 0 0 0 3px #1a130c;
  border-radius: 0.5cm 0.5cm 0 0;
  clip-path: polygon(
    0 0,
    100% 0,
    100% calc(100% - 1cm),
    calc(100% - 1cm) calc(100% - 1cm),
    calc(100% - 1cm) 100%,
    1cm 100%,
    1cm calc(100% - 1cm),
    0 calc(100% - 1cm)
  );
}
.cart-wrap .card h3,
.cart-wrap .card h3 a,
.cart-wrap .card p,
.cart-wrap .card .meta,
.cart-wrap .card .muted,
.cart-wrap .card .cart-summary{ color:#1a130c; }
/* 据点卡带文字保持浅色（深黑/深棕背景上必须用暖米字） */
.cart-wrap.cart-wrap--gang .card h3,
.cart-wrap.cart-wrap--gang .card h3 a,
.cart-wrap.cart-wrap--gang .card p,
.cart-wrap.cart-wrap--gang .card .meta,
.cart-wrap.cart-wrap--gang .card .muted,
.cart-wrap.cart-wrap--gang .card .cart-summary{ color:var(--text); }
/* 卡带标题与日文名副标题统一右移 1cm */
.cart-wrap .card h3,
.cart-wrap .card .muted{ padding-left:1cm; }
/* 卡带简介文字居中 */
.cart-wrap .card p:not(.muted){ text-align:center; }
.cart-wrap .card .cart-summary{
  margin:8px 0 0;
  line-height:1.4;
}
/* 据点列表卡带：复用城镇 FC 卡带造型，背景改为护眼黑色 */
.cart-wrap.cart-wrap--gang .card{ background:#222222; color:var(--text); }

/* 首页骨架：区块数据未到达时的占位提示（替代整页空白） */
.feed-loading{
  color:var(--dim);
  padding:22px 12px;
  text-align:center;
  font-size:13px;
  letter-spacing:1px;
  animation:pulse 1.1s ease-in-out infinite;
}
@keyframes pulse{ 0%,100%{ opacity:.45 } 50%{ opacity:.9 } }

