/* ============================================================
   千星隐修会 · 军团网站 全局样式
   设计系统：深空深色 + 液态玻璃（Glassmorphism）

   模块结构（一期单文件，二期迁移 Vite 时按模块拆分）：
   [1] 基础层     变量 / Reset / 深空背景 / 星空
   [2] 布局层     容器 / 章节 / 网格 / 间距工具
   [3] 通用组件层 玻璃卡片 / 信息框 / 按钮 / 页面标题 / 标签
   [4] 交互组件层 toast / 悬浮球 / 登录弹窗 / 自定义下拉 / 确认层
   [5] 页面组件层 英雄区 / 门户区 / 工具卡片 / 公告 / 锁定提示
   [6] 导航层     顶部导航 / 页脚
   [7] 可见性控制 内容分级(data-access) / 访客模式(is-guest)
   [8] 响应式     媒体查询
   ============================================================ */

/* ============================================================
   [1] 基础层
   ============================================================ */

/* ---------- CSS 变量：色板与设计 token ---------- */
:root {
  /* 深空色板 */
  --bg-deep: #07060b;
  --nebula-1: #1a0a2e;
  --nebula-2: #2d0a4a;
  --nebula-3: #4a0e3a;

  /* 品牌色（来自 Logo） */
  --gold-dim: #b8941f;
  --gold: #d4af37;
  --gold-bright: #f5d76e;
  --crimson: #8b1a1a;
  --crimson-bright: #c43030;

  /* 语义色（组件级微调色，统一入口，改一处全联动） */
  --gold-soft-bg: rgba(212, 175, 55, 0.06);     /* info-box 底色 */
  --gold-soft-border: rgba(212, 175, 55, 0.15); /* info-box 边框 */
  --gold-chip-bg: rgba(212, 175, 55, 0.15);     /* tag / tool-card-tag 底色 */
  --gold-chip-border: rgba(212, 175, 55, 0.30); /* tag / tool-card-tag 边框 */
  --gold-hover-bg: rgba(212, 175, 55, 0.12);    /* select-option hover 底色 */
  --crimson-chip-bg: rgba(139, 26, 26, 0.15);   /* soon 标签底色 */
  --crimson-chip-border: rgba(196, 48, 48, 0.30); /* soon 标签边框 */
  --crimson-soft-bg: rgba(139, 26, 26, 0.12);   /* lock-hint 底色 */
  --crimson-soft-border: rgba(196, 48, 48, 0.25); /* lock-hint 边框 */
  --deep-overlay: rgba(13, 12, 20, 0.94);       /* toast / confirm-layer 深色底 */
  --deep-overlay-strong: rgba(13, 12, 20, 0.92); /* toast 深色底（较普通版略透；命名沿用历史） */
  --modal-scrim: rgba(7, 6, 11, 0.7);           /* 弹窗遮罩（login-modal / 详情 / 表单 / 删除确认） */

  /* 文字 */
  --text-primary: #f0eee6;
  --text-secondary: #b8b6ad;
  --text-muted: #6b6a64;

  /* 玻璃态（全站统一参数，唯一权威来源，导航栏例外） */
  --glass-bg: rgba(255, 255, 255, 0.05);
  --glass-bg-strong: rgba(255, 255, 255, 0.08);
  --glass-border: rgba(255, 255, 255, 0.08);
  --glass-border-bright: rgba(212, 175, 55, 0.30);
  --glass-blur: 1px;
  --glass-saturate: 130%;
  --glass-shadow: 0 8px 32px rgba(0, 0, 0, 0.30);
  --glass-shadow-lg: 0 16px 48px rgba(0, 0, 0, 0.40);

  /* 导航栏玻璃（顶部横条 + ☰ 展开面板 + 页脚，老板特别调整，独立于全站玻璃） */
  --nav-glass-bg: rgba(255, 255, 255, 0.1);
  --nav-glass-blur: 16px;
  --nav-glass-saturate: 150%;

  /* 间距 */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 24px;
  --space-6: 32px;
  --space-8: 48px;
  --space-10: 64px;
  --space-12: 96px;

  /* 圆角 */
  --radius-sm: 6px;
  --radius-md: 12px;
  --radius-lg: 20px;
  --radius-xl: 28px;

  /* 字体 */
  --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC",
               "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif;
  --font-display: "PingFang SC", "Microsoft YaHei", -apple-system, sans-serif;

  /* 过渡 */
  --t-fast: 0.18s ease;
  --t-base: 0.28s cubic-bezier(0.4, 0, 0.2, 1);
}

/* ---------- Reset ---------- */
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
/* hidden 属性兜底：防作者样式 display 覆盖（如 .video-modal-mask 的 flex）导致弹层初始可见 */
[hidden] { display: none !important; }
html { height: 100%; }
body {
  font-family: var(--font-sans);
  font-size: 16px;
  line-height: 1.6;
  color: var(--text-primary);
  background: var(--bg-deep);
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: hidden;
}
/* 主内容区撑开弹性空间，页脚固定贴底 */
main { flex: 1 0 auto; }
a { color: var(--gold-bright); text-decoration: none; transition: color var(--t-fast); }
a:hover { color: var(--gold); }
img { max-width: 100%; height: auto; display: block; }
h1, h2, h3, h4 { font-family: var(--font-display); font-weight: 600; line-height: 1.3; margin: 0 0 var(--space-4); color: var(--text-primary); }
h1 { font-size: clamp(2rem, 4vw, 3rem); letter-spacing: 0.02em; }
h2 { font-size: clamp(1.5rem, 2.5vw, 2rem); }
h3 { font-size: 1.25rem; }
p { margin: 0 0 var(--space-4); color: var(--text-secondary); }

/* ---------- 深空背景：大占比黑 + 淡星云（真实背景图层） ---------- */
body::before {
  content: '';
  position: fixed;
  inset: 0;
  z-index: -3;
  background:
    radial-gradient(ellipse at 75% 85%, color-mix(in srgb, var(--nebula-2) 28%, transparent) 0%, transparent 45%),
    radial-gradient(ellipse at 15% 20%, color-mix(in srgb, var(--nebula-3) 20%, transparent) 0%, transparent 50%),
    var(--bg-deep);
  animation: nebulaDrift 42s ease-in-out infinite alternate;
}
@keyframes nebulaDrift {
  from { transform: translate3d(0, 0, 0) scale(1); }
  to { transform: translate3d(-2.5%, -1.5%, 0) scale(1.06); }
}

/* 随机星空层（真实背景内容，玻璃模糊后与外部清晰对比 → 半透明可见） */
.stars {
  position: fixed;
  inset: 0;
  z-index: -2;
  pointer-events: none;
}
.star {
  position: absolute;
  border-radius: 50%;
  background: #fff;
  animation: starTwinkle var(--tw-dur, 5s) ease-in-out infinite alternate;
  animation-delay: var(--tw-delay, 0s);
}
@keyframes starTwinkle {
  from { opacity: 0.15; transform: scale(0.8); }
  to { opacity: 0.9; transform: scale(1.15); }
}

/* ============================================================
   [2] 布局层
   ============================================================ */

/* ---------- 容器 ---------- */
.container {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 var(--space-5);
}
.container-narrow {
  max-width: 800px;
  margin: 0 auto;
  padding: 0 var(--space-5);
}

/* ---------- 章节 ---------- */
.section {
  padding: var(--space-10) 0;
}
.section-title {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  margin-bottom: var(--space-6);
}
.section-title::before {
  content: '';
  width: 4px;
  height: 24px;
  background: linear-gradient(180deg, var(--gold), var(--crimson));
  border-radius: 2px;
}

/* ---------- 内容卡片网格（自动排布） ---------- */
/* 列数随容器宽度自动计算（auto-fit）：宽屏约 4 列、窄容器 2-3 列、手机 1 列；卡片数量增减自动换行 */
.grid {
  display: grid;
  gap: var(--space-5);
  margin-top: var(--space-6);
}
.grid-auto { grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }

/* ---------- 间距工具类（替代内联 margin-top/margin-bottom） ---------- */
.mt-4 { margin-top: var(--space-4); }
.mt-6 { margin-top: var(--space-6); }
.mt-8 { margin-top: var(--space-8); }
.mt-10 { margin-top: var(--space-10); }
.mb-0 { margin-bottom: 0; }
.mb-5 { margin-bottom: var(--space-5); }

/* 守卫页防闪屏：鉴权通过前整页隐藏（initGuards 移除 hidden） */
body[hidden] {
  display: none;
}

/* ============================================================
   [3] 通用组件层
   ============================================================ */

/* ---------- 液态玻璃卡片（低模糊映射） ---------- */
/* 玻璃卡片：半透明白底色 + 低模糊，映射下方真实内容 */
.glass {
  background: var(--glass-bg);
  backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturate));
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturate));
  border: 1px solid var(--glass-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--glass-shadow);
  position: relative;
  overflow: hidden;
  transition:
    transform 0.35s cubic-bezier(0.34, 1.4, 0.64, 1),
    border-color 0.3s ease,
    box-shadow 0.3s ease;
  will-change: transform;
}

/* 边缘折射色散环：静态固定参数（光效已删） */
.glass::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  padding: 2px;
  pointer-events: none;
  background: conic-gradient(from 0deg,
    rgba(245, 215, 110, 0.11) 0deg,
    rgba(212, 175, 55, 0.07) 60deg,
    rgba(196, 48, 48, 0.06) 120deg,
    rgba(80, 140, 220, 0.06) 200deg,
    rgba(212, 175, 55, 0.08) 280deg,
    rgba(245, 215, 110, 0.11) 360deg);
  -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite: xor;
  mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  mask-composite: exclude;
  opacity: 0.2;
  transition: opacity 0.3s ease, padding 0.3s ease;
}

/* 悬停：轻微表面张力微变形 + 折射加强（折射带扩大至 3px）
   M8.4 弹起动效固定 px（老板 2026-08-24）：scale 比例 → 固定位移 -2px */
.glass:hover {
  transform: translateY(-2px);
  border-color: var(--glass-border-bright);
}
.glass:hover::before {
  opacity: 0.25;
  padding: 3px;
}

/* 激活（按压）态：回弹——仅最末级激活时触发
   点击子级（tool-card/按钮等）时父级 .glass 不动画（:has 检测激活子级），点哪个哪个动
   M8.4：按压回弹固定位移 +1px */
.glass:active:not(:has(*:active)) {
  transform: translateY(1px);
  transition-duration: 0.12s;
}
/* 卡片类（可点击整体）：按压回弹不受子级影响——卡片是点击单位，点击任意部位（含文字）都应有反馈 */
.tool-card:active {
  transform: translateY(1px);
  transition-duration: 0.12s;
}

/* ---------- 门户卡片拖拽排序（桌面端） ---------- */
.tool-card.drag-sortable { cursor: grab; }
.tool-card.dragging { opacity: 0.45; }
.tool-card.drag-over { border-color: var(--gold-soft-border); box-shadow: var(--glass-shadow); }
.portal-sort-hint { margin: var(--space-2) 0 var(--space-4); font-size: 0.82rem; color: var(--text-secondary); }
.qrcode { max-width: 300px; border-radius: var(--radius-md); margin: 0 auto; }

.glass-pad { padding: var(--space-6); }
.glass-pad-lg { padding: var(--space-8); }

/* ---------- 信息提示框（金色强调，替代内联样式） ---------- */
.info-box {
  background: var(--gold-soft-bg);
  border: 1px solid var(--gold-soft-border);
  border-radius: var(--radius-md);
  padding: var(--space-5);
}
.info-box p { margin: 0; color: var(--text-secondary); }

/* ---------- 按钮（玻璃样式） ---------- */
.btn {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-3) var(--space-5);
  border-radius: var(--radius-md);
  font-family: var(--font-sans);
  font-size: 0.95rem;
  font-weight: 500;
  letter-spacing: 0.02em;
  cursor: pointer;
  border: 1px solid var(--glass-border);
  background: var(--glass-bg);
  backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturate));
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturate));
  color: var(--text-primary);
  transition: all var(--t-base);
  text-decoration: none;
  position: relative;
  overflow: hidden;
}
/* 按钮顶部细亮线（玻璃边缘高光） */
.btn::after {
  content: '';
  position: absolute;
  top: 0;
  left: 12%;
  right: 12%;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.30), transparent);
  pointer-events: none;
  opacity: 0.6;
  transition: opacity var(--t-fast);
}
/* 看板按钮选中态：绿色突出（军团快递/指名快递/已接单快递，2026-08-20 老板） */
.btn.selected {
  background: rgba(90, 200, 120, 0.15);
  border-color: rgba(90, 200, 120, 0.55);
  color: #7cd67c;
}
.btn:hover {
  background: var(--glass-bg-strong);
  border-color: var(--glass-border-bright);
  transform: translateY(-1px);
  color: var(--gold-bright);
}
.btn:hover::after { opacity: 1; }
.btn-primary {
  background: linear-gradient(135deg, var(--gold-dim), var(--gold));
  border-color: var(--gold);
  color: var(--bg-deep);
  font-weight: 600;
}
.btn-primary::after { display: none; }
.btn-primary:hover {
  background: linear-gradient(135deg, var(--gold), var(--gold-bright));
  color: var(--bg-deep);
  box-shadow: 0 8px 24px rgba(212, 175, 55, 0.3);
}

/* ---------- 内页统一页头（替代内联样式） ---------- */
.page-header {
  text-align: center;
  margin-bottom: var(--space-8);
}
.page-title {
  font-size: clamp(2rem, 4vw, 3rem);
  letter-spacing: 0.08em;
  background: linear-gradient(135deg, var(--gold-bright) 0%, var(--gold) 50%, var(--crimson-bright) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  margin-bottom: var(--space-4);
}

/* ---------- 通用标签 ---------- */
.tag {
  display: inline-block;
  font-size: 0.75rem;
  padding: 2px 10px;
  border-radius: 999px;
  background: var(--gold-chip-bg);
  color: var(--gold-bright);
  border: 1px solid var(--gold-chip-border);
}
/* M7 多角色切换下拉（portal 身份区） */
.role-switch {
  margin-left: var(--space-3);
  padding: 3px 10px;
  border: 1px solid var(--glass-border);
  border-radius: var(--radius-sm);
  background: var(--bg-panel);
  color: var(--text-primary);
  font-family: var(--font-sans);
  font-size: 0.85rem;
  cursor: pointer;
}
/* M7.2 档案页：当前角色卡高亮 + 当前标签 */
.loss-item-current {
  border-color: rgba(255, 215, 130, 0.45);
}
.tag-current {
  background: rgba(90, 200, 120, 0.12);
  color: #7cd67c;
  border-color: rgba(90, 200, 120, 0.35);
}
/* M7.2 档案页：权限标签（superadmin 金 / admin 蓝 / member 灰） */
.tag-superadmin {
  background: rgba(255, 215, 130, 0.14);
  color: var(--gold-bright);
  border-color: var(--gold-chip-border);
}
.tag-admin {
  background: rgba(110, 160, 255, 0.12);
  color: #7aa7ff;
  border-color: rgba(110, 160, 255, 0.35);
}
.tag-member {
  background: rgba(140, 150, 170, 0.12);
  color: #9aa4b8;
  border-color: rgba(140, 150, 170, 0.3);
}
/* M7.8 访客身份标签（离团角色） */
.tag-guest {
  background: rgba(120, 120, 130, 0.1);
  color: #7c8496;
  border-color: rgba(120, 120, 130, 0.25);
  font-style: italic;
}
.tag-main {
  background: rgba(255, 215, 130, 0.14);
  color: var(--gold-bright);
  border-color: var(--gold-chip-border);
}
/* M7.2 档案页：档案摘要卡（通用玻璃样式，2026-08-21 老板定稿） */
.profile-summary-card {
  padding: var(--space-6);
}
.profile-summary-head {
  display: flex;
  align-items: center;
  gap: var(--space-4);
  margin-bottom: var(--space-5);
}
.profile-avatar {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.8rem;
  font-weight: 700;
  background: var(--glass-bg);
  border: 1px solid var(--glass-border);
  color: var(--gold-bright);
  flex-shrink: 0;
}
/* M7.2：ESI 角色头像（摘要卡大 / 角色卡小）*/
.profile-portrait {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  border: 1px solid var(--glass-border);
  object-fit: cover;
  flex-shrink: 0;
}
.profile-portrait-sm {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  border: 1px solid var(--glass-border);
  object-fit: cover;
  flex-shrink: 0;
}
/* 安全等级：高安绿 / 低安黄 */
.sec-high { color: #7cd67c; }
.sec-low { color: #f0c060; }
.profile-name {
  font-size: 1.35rem;
  font-weight: 700;
  color: var(--text-primary);
  margin-bottom: var(--space-2);
  display: flex;
  align-items: center;
  gap: var(--space-2);
  flex-wrap: wrap;
}
.profile-summary-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: var(--space-3);
}
.profile-stat {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  padding: var(--space-3);
  border-radius: var(--radius-sm);
  background: var(--glass-bg);
  border: 1px solid var(--glass-border);
}
.profile-stat-label {
  font-size: 0.78rem;
  color: var(--text-secondary);
}
.profile-stat-value {
  font-size: 1rem;
  font-weight: 600;
  color: var(--text-primary);
}
/* KM 详情弹窗：已发放（绿）/ 被驳回（红）标签 */
.tag.tag-paid {
  background: rgba(110, 200, 110, 0.12);
  color: #7cd67c;
  border-color: rgba(110, 200, 110, 0.35);
}
.tag.tag-rejected {
  background: rgba(220, 90, 90, 0.12);
  color: #ff8a8a;
  border-color: rgba(220, 90, 90, 0.35);
}

/* ============================================================
   [4] 交互组件层
   ============================================================ */

/* ---------- toast 轻提示 ---------- */
.toast {
  position: fixed;
  bottom: 32px;
  left: 50%;
  transform: translateX(-50%) translateY(20px);
  background: var(--deep-overlay-strong);
  backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturate));
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturate));
  border: 1px solid var(--glass-border-bright);
  border-radius: var(--radius-md);
  padding: var(--space-3) var(--space-5);
  color: var(--text-primary);
  font-size: 0.9rem;
  z-index: 200;
  opacity: 0;
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  pointer-events: none;
  box-shadow: var(--glass-shadow-lg);
  white-space: nowrap;
}
.toast.show {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}
/* M7.7 强调提示：协议勾选提醒 字号大一档 + 金红渐变（老板 2026-08-22） */
.toast-agree {
  font-size: 0.95rem;
  font-weight: 600;
  padding: var(--space-3) var(--space-6);
  z-index: 10000; /* 始终最上层（高于登录弹窗 300 / 下拉 999 / 确认弹窗 9999，老板 2026-08-22） */
}
.toast-agree .toast-text-gradient {
  background: linear-gradient(135deg, var(--gold-bright) 0%, var(--gold) 50%, var(--crimson-bright) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}

/* ---------- 返回门户悬浮球（通用玻璃样式，50px，hover 浮出文字） ---------- */
.back-float {
  position: fixed;
  right: 24px;
  bottom: 24px;
  width: 50px;
  height: 50px;
  border-radius: 50%;
  z-index: 90;
  display: flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
  background: var(--glass-bg);
  backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturate));
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturate));
  border: 1px solid var(--glass-border);
  box-shadow: var(--glass-shadow);
  transition: all var(--t-base);
}
/* 悬浮球内部：返回箭头（SVG 白色，与全站图标集一致） */
.back-float::before {
  content: '';
  width: 18px;
  height: 18px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m15 18-6-6 6-6'/%3E%3C/svg%3E") center / contain no-repeat;
}
/* 文字气泡：默认隐藏，hover 时浮出在球左侧 */
.back-float-text {
  position: absolute;
  right: calc(100% + 10px);
  top: 50%;
  transform: translateY(-50%);
  white-space: nowrap;
  font-size: 0.75rem;
  color: var(--text-primary);
  background: var(--glass-bg);
  backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturate));
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturate));
  border: 1px solid var(--glass-border);
  border-radius: var(--radius-sm);
  padding: var(--space-1) var(--space-3);
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--t-fast);
}
.back-float:hover .back-float-text {
  opacity: 1;
}
.back-float:hover {
  transform: translateY(-2px);
  border-color: var(--glass-border-bright);
  box-shadow: var(--glass-shadow-lg);
}
.back-float:hover::before {
  animation: backNudge 0.6s ease infinite alternate;
}
@keyframes backNudge {
  from { transform: translateX(0); }
  to { transform: translateX(-3px); }
}

/* ---------- 登录表单弹窗 ---------- */
.login-modal {
  position: fixed;
  inset: 0;
  z-index: 300;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--space-5);
  background: var(--modal-scrim);
}
.login-modal[hidden] {
  display: none;
}
.login-modal-card {
  width: 100%;
  max-width: 420px;
  text-align: center;
  /* 覆盖 .glass 的 overflow:hidden，让自定义下拉菜单可溢出显示 */
  overflow: visible;
  /* 导航栏玻璃样式（老板要求，登录弹窗与导航栏同质感） */
  background: var(--nav-glass-bg);
  backdrop-filter: blur(var(--nav-glass-blur)) saturate(var(--nav-glass-saturate));
  -webkit-backdrop-filter: blur(var(--nav-glass-blur)) saturate(var(--nav-glass-saturate));
  border: 1px solid var(--glass-border);
  box-shadow: var(--glass-shadow-lg);
}
/* M7.7 确认弹窗（showConfirm）：与导航栏/登录弹窗同款玻璃（老板要求） */
.qx-modal-confirm {
  background: var(--nav-glass-bg);
  backdrop-filter: blur(var(--nav-glass-blur)) saturate(var(--nav-glass-saturate));
  -webkit-backdrop-filter: blur(var(--nav-glass-blur)) saturate(var(--nav-glass-saturate));
  border: 1px solid var(--glass-border);
  box-shadow: var(--glass-shadow-lg);
}
/* 弹窗卡片不使用玻璃卡片的 hover 变形 */
.login-modal-card:hover {
  transform: none;
  border-color: var(--glass-border);
}
.login-modal-title {
  font-size: 1.5rem;
  letter-spacing: 0.06em;
  background: linear-gradient(135deg, var(--gold-bright) 0%, var(--gold) 50%, var(--crimson-bright) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  margin-bottom: var(--space-4);
}
.login-field {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  text-align: left;
  margin-bottom: var(--space-5);
}
.login-field span {
  font-size: 0.85rem;
  color: var(--text-secondary);
}
.login-field input {
  width: 100%;
  padding: var(--space-3) var(--space-4);
  border-radius: var(--radius-md);
  border: 1px solid var(--glass-border);
  background: var(--nav-glass-bg);
  color: var(--text-primary);
  font-family: var(--font-sans);
  font-size: 0.95rem;
  backdrop-filter: blur(var(--nav-glass-blur)) saturate(var(--nav-glass-saturate));
  -webkit-backdrop-filter: blur(var(--nav-glass-blur)) saturate(var(--nav-glass-saturate));
}
.login-field input::placeholder {
  color: var(--text-muted);
}
.login-field input:focus {
  outline: none;
  border-color: var(--glass-border-bright);
}
.login-actions {
  display: flex;
  gap: var(--space-3);
  justify-content: center;
}
/* 登录弹窗协议同意勾选（横排：勾选框 + 说明文字） */
.login-field.login-agree {
  flex-direction: row;
  align-items: flex-start;
  gap: var(--space-3);
  font-size: 0.95rem;   /* 老板 2026-08-22：调大一档 */
  line-height: 1.5;
  /* 金红渐变（与标题 .page-title 同款，老板 2026-08-22） */
  color: transparent;
  background: linear-gradient(135deg, var(--gold-bright) 0%, var(--gold) 50%, var(--crimson-bright) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
.login-agree input[type="checkbox"] {
  width: auto;
  flex-shrink: 0;
  margin-top: 3px;
  accent-color: var(--gold);
}
.login-agree a { color: inherit; } /* 随整行金红渐变，不单独着色（老板 2026-08-22） */

/* ---------- 自定义下拉（导航栏玻璃样式，可复用组件） ---------- */
.select-box {
  position: relative;
  width: 100%;
}
.select-trigger {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  border-radius: var(--radius-md);
  border: 1px solid var(--glass-border);
  background: var(--nav-glass-bg);
  backdrop-filter: blur(var(--nav-glass-blur)) saturate(var(--nav-glass-saturate));
  -webkit-backdrop-filter: blur(var(--nav-glass-blur)) saturate(var(--nav-glass-saturate));
  color: var(--text-primary);
  font-family: var(--font-sans);
  font-size: 0.95rem;
  cursor: pointer;
  transition: border-color var(--t-fast);
}
.select-trigger:hover {
  border-color: var(--glass-border-bright);
}
.select-arrow {
  color: var(--gold-bright);
  font-size: 0.8rem;
  transition: transform var(--t-fast);
}
.select-box.open .select-arrow {
  transform: rotate(180deg);
}
.select-menu {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  right: 0;
  z-index: 999; /* 下拉菜单打开时始终最上层（高于各类弹层 400/345 等，避免被遮挡） */
  list-style: none;
  margin: 0;
  padding: var(--space-2);
  border-radius: var(--radius-md);
  border: 1px solid var(--glass-border);
  background: var(--nav-glass-bg);
  backdrop-filter: blur(var(--nav-glass-blur)) saturate(var(--nav-glass-saturate));
  -webkit-backdrop-filter: blur(var(--nav-glass-blur)) saturate(var(--nav-glass-saturate));
  box-shadow: var(--glass-shadow-lg);
  /* 选项多时限制高度出现滚动条（如规则分类全量 146 项） */
  max-height: 280px;
  overflow-y: auto;
  overscroll-behavior: contain;
}
.select-menu[hidden] {
  display: none;
}
.select-option {
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-sm);
  color: var(--text-secondary);
  font-size: 0.9rem;
  cursor: pointer;
  transition: background var(--t-fast), color var(--t-fast);
}
.select-option:hover {
  background: var(--gold-hover-bg);
  color: var(--gold-bright);
}
.select-option[aria-selected="true"] {
  color: var(--gold-bright);
  font-weight: 600;
}

/* ---------- 外部工具二次确认层（覆盖整卡，确认后跳转，取消/点其他区域复原） ---------- */
.confirm-layer {
  position: absolute;
  inset: 0;
  z-index: 5;
  display: none;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--space-4);
  padding: var(--space-5);
  text-align: center;
  background: var(--deep-overlay);
  border-radius: inherit;
  cursor: default;
}
.tool-card.confirming .confirm-layer {
  display: flex;
}
.confirm-layer p {
  margin: 0;
  font-size: 0.9rem;
  color: var(--text-primary);
}
.confirm-actions {
  display: flex;
  gap: var(--space-3);
}
/* 确认态下抑制卡片 hover 变形，避免确认层抖动 */
.tool-card.confirming:hover {
  transform: none;
}

/* ============================================================
   [5] 页面组件层
   ============================================================ */

/* ---------- 英雄区（首页） ---------- */
.hero {
  padding: var(--space-8) 0;
  text-align: center;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
}
.hero-logo {
  width: 150px;
  height: 150px;
  margin: 0 auto var(--space-6);
  border-radius: 50%;
  -webkit-mask-image: radial-gradient(circle, #000 55%, transparent 72%);
  mask-image: radial-gradient(circle, #000 55%, transparent 72%);
  filter: drop-shadow(0 0 24px rgba(212, 175, 55, 0.35))
          drop-shadow(0 0 60px rgba(139, 26, 26, 0.25));
  animation: floatLogo 6s ease-in-out infinite;
}
@keyframes floatLogo {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-8px); }
}
.hero-title {
  font-size: clamp(2.5rem, 5vw, 4rem);
  background: linear-gradient(135deg, var(--gold-bright) 0%, var(--gold) 50%, var(--crimson-bright) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  margin-bottom: var(--space-4);
  letter-spacing: 0.08em;
}
.hero-subtitle {
  font-size: clamp(1rem, 1.5vw, 1.2rem);
  color: var(--text-secondary);
  max-width: 640px;
  margin: 0 auto var(--space-6);
}
.hero-cta {
  display: flex;
  gap: var(--space-4);
  justify-content: center;
  flex-wrap: wrap;
}

/* ---------- 门户问候区 ---------- */
.portal-hero {
  text-align: center;
  padding: var(--space-8) 0 var(--space-5);
}
/* 生日当天全站色系统一为深蓝星空（2026-08-21 老板：仅生日当天生效，平时保持紫红星云） */
body.birthday-theme {
  --bg-deep: #060b14;
  --nebula-1: #0d1b33;
  --nebula-2: #123056;
  --nebula-3: #1b4a7a;
  --deep-overlay: rgba(9, 14, 24, 0.94);
  --deep-overlay-strong: rgba(9, 14, 24, 0.92);
  --modal-scrim: rgba(6, 10, 18, 0.7);
}
/* 门户生日星空横幅（2026-08-21 老板定稿：仅主角色生日当天显示） */
.birthday-hero {
  position: relative;
  overflow: hidden;
  border-radius: 20px;
  background: linear-gradient(160deg, #0c2440 0%, #0a1830 55%, #071224 100%);
  border: 1px solid rgba(133, 183, 235, 0.28);
  padding: 36px 30px 30px;
  text-align: center;
}
.birthday-stars { position: absolute; inset: 0; pointer-events: none; }
.birthday-stars div { position: absolute; }
.birthday-sparkle {
  color: #fac775;
  font-size: 22px;
  letter-spacing: 6px;
  text-shadow: 0 0 12px rgba(250, 199, 117, 0.5);
  position: relative;
}
.birthday-title {
  margin-top: 10px;
  font-size: clamp(1.5rem, 2.6vw, 2.2rem);
  font-weight: 700;
  color: #faeeda;
  letter-spacing: 2px;
  position: relative;
}
.birthday-badge {
  display: inline-block;
  margin-top: 14px;
  padding: 5px 18px;
  border: 1px solid rgba(250, 199, 117, 0.45);
  border-radius: 999px;
  background: rgba(250, 199, 117, 0.1);
  color: #fac775;
  font-size: 13px;
  letter-spacing: 2px;
  position: relative;
}
.birthday-thanks {
  margin-top: 10px;
  color: #85b7eb;
  font-size: 13px;
  letter-spacing: 2px;
  line-height: 1.8;
  position: relative;
}
.birthday-identity { margin-top: 18px; position: relative; }
.birthday-identity .bday-label { color: #7d95b8; font-size: 12px; }
.birthday-identity .bday-name { color: #e8eef8; font-size: 13px; }
.birthday-identity .bday-role { color: #fac775; font-size: 12px; }
.birthday-hero .btn { margin-top: 14px; position: relative; }
.portal-hero .hero-logo { width: 90px; height: 90px; margin-bottom: var(--space-4); }
.portal-title {
  font-size: clamp(1.8rem, 3vw, 2.5rem);
  letter-spacing: 0.06em;
  background: linear-gradient(135deg, var(--gold-bright) 0%, var(--gold) 50%, var(--crimson-bright) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  margin-bottom: var(--space-3);
}

/* ---------- 管理页功能模块切换（admin.html，chip 由 tpl-filter-chip 渲染） ---------- */
.admin-tabs {
  display: flex;
  gap: var(--space-3);
  margin-bottom: var(--space-5);
}

/* ---------- 成员管理（portal，仅管理员+可见） ---------- */
.member-hint {
  color: var(--text-secondary);
  font-size: 0.9rem;
  margin-bottom: var(--space-4);
}
.member-sub {
  font-size: 0.95rem;
  letter-spacing: 0.04em;
  color: var(--gold-bright);
  margin-bottom: var(--space-2);
}
/* 财务管理面板子标题：字号统一增大 + 金红渐变（老板 2026-08-24 二次增大） */
.finance-admin .member-sub {
  font-size: 1.15rem;
  color: transparent;
  background: linear-gradient(135deg, var(--gold-bright) 0%, var(--gold) 50%, var(--crimson-bright) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
/* 财务管理：双饼图各占半宽 + 中间两端渐隐浅灰竖线 + 图例下置（老板 2026-08-24）
   图例单列显示（老板 2026-08-24 第二次调整） */
.fin-pie-half { min-width: 0; }
.fin-pie-divider {
  width: 1px;
  background: linear-gradient(180deg, transparent 0%, rgba(184, 182, 173, 0.5) 50%, transparent 100%);
}
.fin-pie-legend {
  display: grid;
  grid-template-columns: 1fr;
  gap: 5px;
  margin-top: 12px;
  font-size: 12px;
  color: var(--text-secondary);
}
.fin-legend-item {
  display: flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
}
.fin-legend-item span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.fin-legend-dot {
  width: 10px;
  height: 10px;
  border-radius: 3px;
  flex: none;
}
.fin-pie-other {
  margin-top: 8px;
  font-size: 12px;
  color: var(--text-secondary);
}
.member-row {
  display: flex;
  align-items: center;
  gap: var(--space-4);
  padding: var(--space-3) 0;
  border-bottom: 1px solid var(--glass-border);
}
.member-row:last-child {
  border-bottom: none;
}
.member-name {
  flex: 1;
  font-weight: 500;
}
.member-role-select {
  width: 160px;
}
/* 移除按钮（次级，crimson 语义色） */
.member-remove {
  color: var(--crimson-bright);
  border-color: var(--crimson-chip-border);
  background: var(--crimson-chip-bg);
}
.member-remove:hover {
  border-color: var(--crimson-bright);
  color: var(--crimson-bright);
}
/* M7.8 注销档案（危险操作，crimson 语义色） */
.profile-danger-zone {
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-2);
  padding-top: var(--space-5);
  border-top: 1px solid var(--glass-border);
}
.profile-delete-btn {
  color: var(--crimson-bright);
  border-color: var(--crimson-chip-border);
  background: var(--crimson-chip-bg);
}
.profile-delete-btn:hover {
  border-color: var(--crimson-bright);
  color: var(--crimson-bright);
}
.profile-delete-btn:disabled {
  opacity: 0.5;
  pointer-events: none;
}
/* 只读行（admin 看 admin/superadmin）：操作禁用 */
.member-row.is-readonly .select-trigger,
.member-row.is-readonly .member-save,
.member-row.is-readonly .member-remove {
  opacity: 0.5;
  pointer-events: none;
}
/* 空列表占位 */
.member-empty {
  color: var(--text-muted);
  font-size: 0.9rem;
  padding: var(--space-3) 0;
}
/* M7.5 权限域分配行：身份标签 + 5 域勾选 + 保存 */
.admin-role-row .member-name {
  flex: 0 0 200px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.admin-role-row > .tag {
  flex: 0 0 auto;
  margin-right: var(--space-2);
}
.admin-perm-checks {
  flex: 1;
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2) var(--space-4);
  align-items: center;
}
.admin-perm-checks .perm-check {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 0.85rem;
  color: var(--text-muted);
  cursor: pointer;
  white-space: nowrap;
}
.admin-perm-checks input[type="checkbox"] {
  accent-color: var(--gold-bright);
  cursor: pointer;
}
.admin-role-row .admin-perm-save {
  flex: 0 0 auto;
}
@media (max-width: 720px) {
  .admin-role-row {
    flex-wrap: wrap;
  }
  .admin-role-row .member-name {
    flex-basis: 100%;
  }
}
/* 组件就地权限调整（超级管理员 ⚙ 角标 + 浮层面板） */
.has-perm-btn {
  position: relative;
}
.perm-btn {
  position: absolute;
  top: 6px;
  right: 6px;
  z-index: 6;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  border: 1px solid var(--glass-border-bright);
  background: var(--deep-overlay);
  color: var(--gold-bright);
  font-size: 12px;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0.75;
  transition: opacity var(--t-fast), transform var(--t-fast);
}
.perm-btn:hover {
  opacity: 1;
  /* M8.4 弹起动效固定 px：scale → 固定位移 -2px */
  transform: translateY(-2px);
}
/* ⚙ 角标 hover 提示卡（tpl-tool-card 渲染，仅标题文字；禁用卡片 hover/active 动画） */
.perm-tip {
  max-width: 200px;
  pointer-events: none;
}
.perm-tip .tool-card {
  padding: var(--space-2) var(--space-4);
  cursor: default;
}
.perm-tip .tool-card-icon,
.perm-tip .tool-card-desc {
  display: none;
}
.perm-tip .tool-card-title {
  font-size: 0.78rem;
  letter-spacing: 0.02em;
}
.perm-tip .tool-card:hover,
.perm-tip .tool-card:active {
  transform: none;
  border-color: var(--glass-border);
  box-shadow: var(--glass-shadow);
}
.perm-panel {
  min-width: 300px;
  padding: var(--space-4);
  border-radius: var(--radius-md);
  border: 1px solid var(--glass-border);
  background: var(--nav-glass-bg);
  backdrop-filter: blur(var(--nav-glass-blur)) saturate(var(--nav-glass-saturate));
  -webkit-backdrop-filter: blur(var(--nav-glass-blur)) saturate(var(--nav-glass-saturate));
  box-shadow: var(--glass-shadow-lg);
}
/* 权限浮层面板内容（tpl-perm-pop） */
.perm-pop-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  margin-bottom: var(--space-3);
}
.perm-pop-name {
  font-weight: 600;
  color: var(--gold-bright);
}
.perm-pop-close {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  border: 1px solid var(--glass-border);
  background: transparent;
  color: var(--text-secondary);
  font-size: 14px;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
}
.perm-pop-close:hover {
  color: var(--gold-bright);
  border-color: var(--glass-border-bright);
}
.perm-pop-select {
  margin-bottom: var(--space-3);
}
.perm-pop-actions {
  display: flex;
  gap: var(--space-2);
}
/* 自己不可修改：下拉与保存按钮禁用态 */
.member-row.is-self .select-trigger,
.member-row.is-self .member-save,
.member-row.is-self .member-remove {
  opacity: 0.5;
  pointer-events: none;
}
.member-row.is-self .member-name::after {
  content: '（自己）';
  color: var(--text-muted);
  font-size: 0.8rem;
  font-weight: normal;
  margin-left: var(--space-2);
}

/* ---------- 招新管理（管理页，仅管理员+可见） ---------- */
.recruit-row {
  display: flex;
  align-items: center;
  gap: var(--space-4);
  padding: var(--space-3) 0;
  border-bottom: 1px solid var(--glass-border);
}
.recruit-row:last-child {
  border-bottom: none;
}
.recruit-name {
  flex-shrink: 0;
  font-weight: 500;
  min-width: 120px;
}
.recruit-desc {
  flex: 1;
  color: var(--text-secondary);
  font-size: 0.9rem;
}
.recruit-actions {
  display: flex;
  gap: var(--space-2);
  flex-shrink: 0;
}
/* 申请状态色：待审核（默认金）/ 已通过 / 已拒绝 */
.recruit-status.status-approved {
  background: var(--gold-chip-bg);
  color: var(--gold-bright);
  border-color: var(--gold-chip-border);
}
.recruit-status.status-rejected {
  background: var(--crimson-chip-bg);
  color: var(--crimson-bright);
  border-color: var(--crimson-chip-border);
}

/* ---------- 视频轮播（军团百态，B 站多视频） ---------- */
.video-carousel {
  position: relative;
  overflow: hidden;
  border-radius: var(--radius-lg);
  border: 1px solid var(--glass-border);
  background: #000;
}
.video-track {
  display: flex;
  transition: transform 0.5s ease;
}
.video-slide {
  flex: 0 0 100%;
  aspect-ratio: 16 / 9;
  position: relative;
}
.video-slide iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}
.video-arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 40px;
  height: 40px;
  border-radius: 50%;
  border: 1px solid var(--glass-border);
  background: var(--nav-glass-bg);
  backdrop-filter: blur(var(--nav-glass-blur)) saturate(var(--nav-glass-saturate));
  -webkit-backdrop-filter: blur(var(--nav-glass-blur)) saturate(var(--nav-glass-saturate));
  color: var(--text-primary);
  font-size: 14px;
  cursor: pointer;
  z-index: 6;
  transition: color var(--t-fast), border-color var(--t-fast), transform var(--t-fast);
  display: flex;
  align-items: center;
  justify-content: center;
}
.video-arrow:hover {
  color: var(--gold-bright);
  border-color: var(--glass-border-bright);
  /* M8.4 弹起动效固定 px：去比例缩放，保留垂直居中定位 */
  transform: translateY(-50%);
}
.video-arrow-prev { left: 12px; }
.video-arrow-next { right: 12px; }

/* ---------- 区块标题行（标题 + 右侧操作按钮） ---------- */
.section-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  flex-wrap: wrap;
}
.section-head .mt-8 {
  margin-top: 0; /* 标题行内的 h2 由容器间距控制 */
}
.section-actions {
  display: flex;
  gap: var(--space-3);
}

/* ---------- 视频提交/管理弹层（遮罩 + 居中卡片） ---------- */
.video-modal-mask {
  position: fixed;
  inset: 0;
  z-index: 400;
  background: var(--modal-scrim);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--space-4);
}
.video-modal-card {
  width: 100%;
  max-width: 460px;
  max-height: 85vh;
  overflow-y: auto;
  border-radius: var(--radius-lg);
  border: 1px solid var(--glass-border);
  background: var(--nav-glass-bg);
  backdrop-filter: blur(var(--nav-glass-blur)) saturate(var(--nav-glass-saturate));
  -webkit-backdrop-filter: blur(var(--nav-glass-blur)) saturate(var(--nav-glass-saturate));
  box-shadow: var(--glass-shadow-lg);
  padding: var(--space-5);
}
.video-modal-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--space-4);
}
.video-modal-title {
  font-family: var(--font-display);
  font-size: 1.15rem;
  color: var(--text-primary);
}
.video-modal-close {
  background: none;
  border: none;
  color: var(--text-muted);
  font-size: 1.4rem;
  cursor: pointer;
  line-height: 1;
  padding: 0 var(--space-1);
}
.video-modal-close:hover { color: var(--gold-bright); }
.video-form-label {
  display: block;
  color: var(--text-secondary);
  font-size: 0.85rem;
  margin: var(--space-4) 0 var(--space-2);
}
.video-form-input {
  width: 100%;
  box-sizing: border-box;
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-md);
  border: 1px solid var(--glass-border);
  background: var(--glass-bg);
  color: var(--text-primary);
  font-size: 0.9rem;
}
.video-form-input:focus {
  outline: none;
  border-color: var(--glass-border-bright);
}
.video-form-submitter {
  margin: 0;
  color: var(--text-primary);
  font-size: 0.9rem;
}
.video-form-error {
  margin: var(--space-3) 0 0;
  color: var(--crimson-bright);
  font-size: 0.85rem;
}
.video-modal-actions {
  display: flex;
  justify-content: flex-end;
  gap: var(--space-3);
  margin-top: var(--space-5);
}
.video-manage-hint {
  color: var(--text-muted);
  font-size: 0.8rem;
  margin: 0 0 var(--space-3);
}
.video-manage-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.video-manage-row {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-3);
  border: 1px solid var(--glass-border);
  border-radius: var(--radius-md);
  background: var(--glass-bg);
  cursor: grab;
}
.video-manage-row.dragging {
  opacity: 0.5;
  border-color: var(--glass-border-bright);
}
.video-manage-drag {
  color: var(--text-muted);
  font-size: 1rem;
  cursor: grab;
  user-select: none;
}
.video-manage-info {
  flex: 1;
  min-width: 0;
}
.video-manage-info .vm-bvid {
  font-family: var(--font-sans);
  font-size: 0.85rem;
  color: var(--text-primary);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.video-manage-info .vm-meta {
  font-size: 0.75rem;
  color: var(--text-muted);
  margin-top: 2px;
}
.video-manage-tag {
  font-size: 0.75rem;
  flex-shrink: 0;
}
.video-manage-ops {
  display: flex;
  gap: var(--space-2);
  flex-shrink: 0;
}
.video-manage-ops .btn {
  padding: var(--space-1) var(--space-2);
  font-size: 0.75rem;
}
.video-manage-ops .btn.video-manage-del.danger {
  color: var(--crimson-bright);
  border-color: var(--crimson-chip-border);
}

/* ---------- 图集占位（备用，素材待填充） ---------- */
.gallery-stub {
  border: 1px dashed var(--glass-border-bright);
  border-radius: var(--radius-lg);
  padding: var(--space-6);
  text-align: center;
  color: var(--text-muted);
  background: var(--glass-bg);
  font-size: 0.9rem;
  line-height: 1.8;
}

/* ---------- CTA 行（页面底部动作按钮居中） ---------- */
.cta-row {
  display: flex;
  justify-content: center;
  margin-top: var(--space-6);
}

/* ---------- 工具卡片 ---------- */
.tool-card {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  padding: var(--space-5);
  cursor: pointer;
}
.tool-card:hover {
  /* M8.4 弹起动效固定 px：去比例缩放，悬停统一 -2px */
  transform: translateY(-2px);
  border-color: var(--glass-border-bright);
  box-shadow: var(--glass-shadow-lg);
}
.tool-card-icon {
  width: 48px;
  height: 48px;
  border-radius: var(--radius-md);
  background: linear-gradient(135deg, var(--gold-dim), var(--crimson));
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.5rem;
  margin-bottom: var(--space-2);
}
/* SVG 线性图标集（全站统一，2026-08-17 起替代 emoji；尺寸与颜色由 CSS 统一控制，覆盖 HTML 内联值） */
.tool-card-icon { color: #fff; }
.tool-card-icon svg { width: 26px; height: 26px; }
.perm-btn svg { width: 14px; height: 14px; }
.nav-toggle svg, .select-arrow svg, .video-arrow svg { display: block; color: #fff; }
.nav-toggle svg { width: 20px; height: 20px; }
.select-arrow svg { width: 14px; height: 14px; }
.video-arrow svg { width: 18px; height: 18px; }
#notice-publish-btn svg { width: 16px; height: 16px; color: var(--bg-deep); }
.tool-card-title {
  font-size: 1.1rem;
  font-weight: 600;
  color: var(--text-primary);
  margin: 0;
}
.tool-card-desc {
  font-size: 0.9rem;
  color: var(--text-secondary);
  margin: 0;
  flex: 1;
}

/* ---------- 入团流程：整行长条形卡片（页面级定制，仅 #recruit-steps 生效） ----------
   覆盖通用 tool-card 的垂直布局：容器单列占满整行，卡片内部 icon 左、文案右 */
#recruit-steps {
  grid-template-columns: 1fr;
}
#recruit-steps .tool-card {
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-2);
  padding: var(--space-5) var(--space-6);
}
#recruit-steps .tool-card-icon {
  display: none; /* 序号图标已从数据移除，隐藏模板空占位 */
}
#recruit-steps .tool-card-title {
  font-size: 1.15rem;
}
/* 提示文字（如「点击查看军团介绍」）靠右弱化显示 */
#recruit-steps .tool-card-tag {
  align-self: flex-end;
  margin-top: var(--space-1);
  background: transparent;
  border-color: transparent;
  color: var(--text-secondary);
  font-size: 0.8rem;
}
.tool-card-tag {
  display: inline-block;
  font-size: 0.75rem;
  padding: 2px 10px;
  border-radius: 999px;
  background: var(--gold-chip-bg);
  color: var(--gold-bright);
  border: 1px solid var(--gold-chip-border);
  align-self: flex-start;
}
.tool-card-tag.soon {
  background: var(--crimson-chip-bg);
  color: var(--crimson-bright);
  border-color: var(--crimson-chip-border);
}

/* ---------- 公告分类筛选 ---------- */
.notice-filters {
  display: flex;
  gap: var(--space-2);
  flex-wrap: wrap;
  margin-bottom: var(--space-5);
  justify-content: center;
}
.filter-chip {
  display: inline-block;
  padding: var(--space-1) var(--space-4);
  border-radius: 999px;
  font-size: 0.85rem;
  cursor: pointer;
  color: var(--text-secondary);
  background: var(--glass-bg);
  border: 1px solid var(--glass-border);
  transition: all var(--t-fast);
  user-select: none;
}
.filter-chip:hover {
  color: var(--gold-bright);
  border-color: var(--glass-border-bright);
}
.filter-chip.active {
  color: var(--bg-deep);
  background: linear-gradient(135deg, var(--gold-dim), var(--gold));
  border-color: var(--gold);
  font-weight: 600;
}
.filter-chip[data-filter] { text-decoration: none; }

/* ---------- 公告列表 ---------- */
.notice-list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.notice-item {
  padding: var(--space-4) 0;
  border-bottom: 1px solid var(--glass-border);
  cursor: pointer;
  transition: background var(--t-fast);
  border-radius: var(--radius-sm);
  padding-left: var(--space-2);
  padding-right: var(--space-2);
  margin-left: calc(var(--space-2) * -1);
  margin-right: calc(var(--space-2) * -1);
}
.notice-item:hover {
  background: var(--nav-glass-bg);
}
.notice-item:last-child { border-bottom: none; }
.notice-meta {
  font-size: 0.8rem;
  color: var(--text-muted);
  margin-bottom: var(--space-2);
  letter-spacing: 0.05em;
}
.notice-title {
  font-size: 1.05rem;
  color: var(--text-primary);
  margin: 0 0 var(--space-2);
  font-weight: 500;
}
.notice-excerpt {
  color: var(--text-secondary);
  font-size: 0.9rem;
  margin: 0;
  /* 列表正文限定 2 行，超出行数省略号 */
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* ---------- 公告详情大卡片（点击公告展开，浮最上层） ---------- */
.notice-detail-mask {
  position: fixed;
  inset: 0;
  z-index: 340;
  background: var(--modal-scrim);
  backdrop-filter: blur(2px);
  -webkit-backdrop-filter: blur(2px);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--space-5);
}
.notice-detail-card {
  position: relative;
  width: 100%;
  max-width: 640px;
  max-height: 80vh;
  overflow-y: auto;
  padding: var(--space-6);
  border-radius: var(--radius-lg);
  border: 1px solid var(--glass-border);
  background: var(--nav-glass-bg);
  backdrop-filter: blur(var(--nav-glass-blur)) saturate(var(--nav-glass-saturate));
  -webkit-backdrop-filter: blur(var(--nav-glass-blur)) saturate(var(--nav-glass-saturate));
  box-shadow: var(--glass-shadow-lg);
}
.notice-detail-close {
  position: absolute;
  top: var(--space-3);
  right: var(--space-3);
  width: 28px;
  height: 28px;
  border-radius: 50%;
  border: 1px solid var(--glass-border);
  background: transparent;
  color: var(--text-secondary);
  font-size: 15px;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
}
.notice-detail-close:hover {
  color: var(--gold-bright);
  border-color: var(--glass-border-bright);
}
/* 详情卡内正文不限行（显示完整内容） */
.notice-detail-card .notice-excerpt {
  display: block;
  -webkit-line-clamp: none;
  overflow: visible;
  white-space: normal;
  font-size: 0.95rem;
  line-height: 1.7;
}
.notice-detail-card .notice-item {
  cursor: default;
  padding: 0;
  border-bottom: none;
  margin: 0;
}
.notice-detail-card .notice-item:hover {
  background: transparent;
}

/* ---------- 公告管理（admin：发布 / 编辑 / 删除） ---------- */
.notice-publish-row {
  display: flex;
  justify-content: flex-end;
  margin-bottom: var(--space-3);
}
/* hidden 属性显式覆盖（display:flex 会压过浏览器默认 [hidden] 隐藏） */
.notice-publish-row[hidden] {
  display: none;
}
/* 发布按钮与筛选 chip 高度一致 */
.notice-publish-row .btn-primary {
  padding: var(--space-1) var(--space-4);
  font-size: 0.85rem;
  border-radius: 999px;
}
/* 公告操作区（admin：置顶/编辑/删除，公告下部，hover 显示；右上角留给 ⚙） */
.notice-ops {
  display: flex;
  gap: var(--space-2);
  justify-content: flex-end;
  margin-top: var(--space-2);
  opacity: 0;
  transition: opacity var(--t-fast);
}
.notice-item:hover .notice-ops {
  opacity: 1;
}
.notice-op {
  padding: var(--space-1) var(--space-3);
  border-radius: 999px;
  border: 1px solid var(--glass-border);
  background: var(--nav-glass-bg);
  color: var(--text-secondary);
  font-size: 0.75rem;
  cursor: pointer;
  transition: color var(--t-fast), border-color var(--t-fast);
}
.notice-op:hover {
  color: var(--gold-bright);
  border-color: var(--glass-border-bright);
}
.notice-op-del {
  color: var(--crimson-bright);
  border-color: var(--crimson-chip-border);
}
.notice-op-del:hover {
  border-color: var(--crimson-bright);
}
/* 空态 */
.notice-empty {
  color: var(--text-muted);
  padding: var(--space-4) 0;
  list-style: none;
}
/* 表单弹层 */
.notice-form-mask,
.notice-del-mask {
  position: fixed;
  inset: 0;
  z-index: 345;
  background: var(--modal-scrim);
  backdrop-filter: blur(2px);
  -webkit-backdrop-filter: blur(2px);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--space-5);
}
.notice-form-mask[hidden],
.notice-del-mask[hidden] {
  display: none;
}
.notice-form-card {
  width: 100%;
  max-width: 560px;
  max-height: 85vh;
  overflow-y: auto;
  padding: var(--space-6);
  border-radius: var(--radius-lg);
  border: 1px solid var(--glass-border);
  background: var(--nav-glass-bg);
  backdrop-filter: blur(var(--nav-glass-blur)) saturate(var(--nav-glass-saturate));
  -webkit-backdrop-filter: blur(var(--nav-glass-blur)) saturate(var(--nav-glass-saturate));
  box-shadow: var(--glass-shadow-lg);
}
.notice-form-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--space-4);
}
.notice-form-title {
  font-weight: 600;
  color: var(--gold-bright);
}
.notice-form-edited {
  color: var(--text-muted);
  font-size: 0.75rem;
  margin-bottom: var(--space-3);
}
.notice-form-close {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  border: 1px solid var(--glass-border);
  background: transparent;
  color: var(--text-secondary);
  font-size: 15px;
  cursor: pointer;
}
.notice-form-close:hover {
  color: var(--gold-bright);
  border-color: var(--glass-border-bright);
}
.notice-form-label {
  display: block;
  color: var(--text-secondary);
  font-size: 0.8rem;
  margin-bottom: var(--space-1);
}
.notice-form-input,
.notice-form-select,
.notice-form-textarea {
  width: 100%;
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-md);
  border: 1px solid var(--glass-border);
  background: var(--nav-glass-bg);
  color: var(--text-primary);
  font-family: var(--font-sans);
  font-size: 0.9rem;
  margin-bottom: var(--space-3);
  box-sizing: border-box;
}
.notice-form-textarea {
  resize: vertical;
}
.notice-form-actions {
  display: flex;
  gap: var(--space-2);
  justify-content: flex-end;
}
/* 删除确认 */
.notice-del-card {
  width: 100%;
  max-width: 360px;
  padding: var(--space-6);
  border-radius: var(--radius-lg);
  border: 1px solid var(--glass-border);
  background: var(--nav-glass-bg);
  backdrop-filter: blur(var(--nav-glass-blur)) saturate(var(--nav-glass-saturate));
  -webkit-backdrop-filter: blur(var(--nav-glass-blur)) saturate(var(--nav-glass-saturate));
  box-shadow: var(--glass-shadow-lg);
  text-align: center;
}
.notice-del-text {
  color: var(--text-secondary);
  margin-bottom: var(--space-4);
}
.notice-del-actions {
  display: flex;
  gap: var(--space-2);
  justify-content: center;
}

/* ---------- 锁定提示（访客锁定） ---------- */
.lock-hint {
  display: none;
  align-items: center;
  gap: var(--space-2);
  margin-top: var(--space-2);
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-sm);
  background: var(--crimson-soft-bg);
  border: 1px solid var(--crimson-soft-border);
  color: var(--text-secondary);
  font-size: 0.85rem;
}
.lock-hint::before {
  content: '';
  width: 14px;
  height: 14px;
  flex-shrink: 0;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='18' height='11' x='3' y='11' rx='2' ry='2'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* ---------- 自研工具页（补损/快递，二期） ---------- */
.loss-bar, .contract-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-3);
  margin-bottom: var(--space-4);
}
/* 快递页顶部标题行：左侧标题 + 右侧管理员「快递员视图」切换键（2026-08-20） */
.contract-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  flex-wrap: wrap;
  margin-bottom: var(--space-4);
}
.contract-head .section-title { margin-bottom: 0; }
.contract-head-actions {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  flex-wrap: wrap;
}
/* 装运规划：标题与说明间距恰 6px（老板 2026-08-20） */
.plan-title { margin-bottom: 0; }
.plan-desc {
  margin-top: 6px;
  margin-bottom: var(--space-4);
}
/* 装运规划：起点 / 终点各自占满整行，长名换行（老板 2026-08-20） */
.plan-start-end {
  flex-basis: 100%;
  width: 100%;
}
/* 覆盖 .loss-select 的 max-width 340px 限制，下拉框体拉满整行（2026-08-20 修复） */
.plan-start-end .loss-select {
  width: 100%;
  min-width: 0;
  max-width: none;
  flex: 1;
}
.plan-start-end .select-current {
  white-space: normal;
  overflow-wrap: anywhere;
}
/* 装运规划结果：统计框压缩到文本高度（老板 2026-08-20） */
.plan-info {
  padding: var(--space-3) var(--space-4);
}
/* 装运规划结果：起点 / 终点各占满整行，长名称换行 */
.plan-item {
  flex-basis: 100%;
  align-items: flex-start;
}
.plan-route-stop {
  flex-basis: 100%;
  min-width: 0;
  font-size: 0.9rem;
  color: var(--text-secondary);
  overflow-wrap: anywhere;
}
/* 装运规划：最优连续路线链（停靠点序列） */
.plan-route-chain {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--space-2);
  padding: var(--space-3) var(--space-4);
  margin-bottom: var(--space-4);
  background: var(--bg-panel);
  border: 1px solid var(--glass-border);
  border-radius: var(--radius-sm);
}
.plan-route-chain-stop {
  font-weight: 600;
  font-size: 0.9rem;
  color: var(--text-primary);
}
.plan-route-chain-arrow {
  color: var(--gold-bright);
  font-size: 1.2rem;
  line-height: 1;
}
/* 装运规划结果：段间「接单位置」分隔（2026-08-20 老板） */
.plan-stop-divider {
  text-align: center;
  color: var(--gold-bright);
  font-size: 0.85rem;
  padding: var(--space-3) 0;
  letter-spacing: 0.08em;
  opacity: 0.9;
}
/* 装运规划结果：第一条前的起点地点行（2026-08-21 老板） */
.plan-stop-start {
  font-weight: 600;
  opacity: 1;
}
/* 合同条目线路：起点框 → 箭头 → 终点框（起终点均分、箭头水平居中、软换行，2026-08-20） */
.loss-item-main [data-field="route"] {
  display: block;
  width: 100%;
}
.contract-route-mini {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  width: 100%;
}
.contract-route-mini-stop {
  flex: 1;
  min-width: 0;
  text-align: center;
  font-weight: 600;
  font-size: 0.9rem;
  line-height: 1.3;
  padding: 2px 10px;
  background: var(--bg-panel);
  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: var(--radius-sm);
  white-space: normal; /* 软换行 */
  overflow-wrap: anywhere;
}
.contract-route-mini-arrow {
  flex-shrink: 0;
  font-size: 2rem;
  line-height: 1;
  color: var(--gold-bright);
}
/* 快递详情弹窗：线路 = 起点框 → 大箭头 → 终点框（老板 2026-08-20） */
#cd-title {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  width: 100%;
}
.contract-route-stop {
  flex: 1;
  min-width: 0;
  font-weight: 600;
  font-size: 1.05rem;
  line-height: 1.4;
  padding: var(--space-3) var(--space-4);
  background: var(--bg-panel);
  border: 1px solid var(--glass-border);
  border-radius: var(--radius-sm);
  text-align: center;
}
.contract-route-arrow {
  flex-shrink: 0;
  font-size: 1.7rem;
  line-height: 1;
  color: var(--gold-bright);
}
}
/* 管理员入口：按钮靠右 */
#loss-admin-entry {
  justify-content: flex-end;
}
.loss-field {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}
.loss-field span {
  font-size: 0.85rem;
  color: var(--text-secondary);
  white-space: nowrap;
}
.loss-field input {
  background: var(--bg-panel);
  border: 1px solid var(--glass-border);
  color: var(--text-primary);
  border-radius: var(--radius-sm);
  padding: 6px 10px;
  font-size: 0.9rem;
}
.loss-field input:focus {
  outline: none;
  border-color: var(--gold-bright);
}
.loss-select {
  /* 统一下拉组件容器（.select-box）的宽度约束；trigger 自带视觉样式 */
  width: auto;
  min-width: 200px;
  max-width: 340px;
}
.loss-select .select-trigger {
  font-size: 0.9rem;
  padding: var(--space-2) var(--space-3);
}
/* 已筛选 KM 标题收紧：与下方说明间距 10px（覆盖 section-title 默认 32px） */
.loss-title-tight {
  margin-bottom: 10px;
}
/* 「自行添加」标签：醒目（加粗/金色/浅底）但字号继承父级不变 */
.badge-manual {
  display: inline-block;
  font-weight: 600;
  color: var(--gold-bright);
  background: rgba(255, 200, 87, 0.12);
  border: 1px solid rgba(255, 200, 87, 0.35);
  border-radius: 4px;
  padding: 0 6px;
  line-height: 1.5;
  vertical-align: middle;
}

/* ============ KM 详情弹窗 ============ */
.km-detail-card {
  /* 电脑端：两侧距页面边界 50px（老板 2026-08-18 规定）；覆盖 login-modal-card 的 420px 上限 */
  width: calc(100vw - 100px);
  max-width: none;
  max-height: 86vh;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
@media (max-width: 767px) {
  .km-detail-card {
    width: calc(100vw - 60px);
  }
}
.km-detail-head {
  position: relative;
  padding-bottom: var(--space-3);
  border-bottom: 1px solid var(--glass-border);
  margin-bottom: var(--space-4);
}
.km-detail-badges {
  display: flex;
  gap: var(--space-2);
  flex-wrap: wrap;
  margin-bottom: var(--space-3);
}
.km-detail-close {
  position: absolute;
  top: -6px;
  right: -6px;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  border: 1px solid var(--glass-border);
  background: var(--bg-panel);
  color: var(--text-secondary);
  font-size: 1.1rem;
  line-height: 1;
  cursor: pointer;
  transition: border-color var(--t-fast), color var(--t-fast);
}
.km-detail-close:hover {
  border-color: var(--gold-bright);
  color: var(--gold-bright);
}
.km-detail-meta {
  font-size: 0.8rem;
  color: var(--text-secondary);
  margin-top: var(--space-2);
}
.km-detail-body {
  overflow-y: auto;
  padding-right: var(--space-2);
}
.km-detail-cards {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-3);
  margin-bottom: var(--space-4);
}
.km-card {
  background: var(--bg-panel);
  border: 1px solid var(--glass-border);
  border-radius: var(--radius-sm);
  padding: var(--space-3);
  min-width: 0;
}
.km-card-label {
  display: block;
  font-size: 0.72rem;
  color: var(--text-secondary);
  margin-bottom: 4px;
}
.km-card-name {
  display: block;
  font-weight: 600;
  font-size: 0.92rem;
  color: var(--text-primary);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.km-card-sub {
  display: block;
  font-size: 0.72rem;
  color: var(--text-tertiary);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.km-sec-title {
  margin-top: var(--space-4);
  margin-bottom: var(--space-3);
  font-size: 0.95rem;
}
/* ---------- 合同详情弹窗（2026-08-20 老板审批） ---------- */
.contract-detail-card {
  width: min(720px, calc(100vw - 60px));
  max-width: none;
}
.km-detail-title {
  font-size: 1.15rem;
  font-weight: 600;
}
.contract-cards {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
@media (max-width: 767px) {
  .contract-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.contract-detail-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.85rem;
}
.contract-detail-table td {
  padding: 8px 10px;
  border-bottom: 1px solid var(--glass-border);
  vertical-align: top;
}
.contract-detail-table td:first-child {
  color: var(--text-secondary);
  white-space: nowrap;
  width: 90px;
}
.contract-detail-table td:last-child { color: var(--text-primary); }
.contract-id {
  color: var(--gold-bright);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}
.contract-empty { color: var(--text-secondary); }
.km-detail-scroll {
  max-height: 240px;
  overflow-y: auto;
  border: 1px solid var(--glass-border);
  border-radius: var(--radius-sm);
}

/* ============================================================
   [5.5] 组件内部滚动条：弹窗/下拉/列表统一暗色玻璃风格
   （整页滚动条保持浏览器默认，不受影响）
   ============================================================ */
.select-menu::-webkit-scrollbar,
.video-modal-card::-webkit-scrollbar,
.notice-detail-card::-webkit-scrollbar,
.notice-form-card::-webkit-scrollbar,
.km-detail-body::-webkit-scrollbar,
.km-detail-scroll::-webkit-scrollbar,
.loss-rule-items::-webkit-scrollbar,
#loss-standard-body::-webkit-scrollbar,
.fin-modal-body::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}
.select-menu::-webkit-scrollbar-track,
.video-modal-card::-webkit-scrollbar-track,
.notice-detail-card::-webkit-scrollbar-track,
.notice-form-card::-webkit-scrollbar-track,
.km-detail-body::-webkit-scrollbar-track,
.km-detail-scroll::-webkit-scrollbar-track,
.loss-rule-items::-webkit-scrollbar-track,
#loss-standard-body::-webkit-scrollbar-track,
.fin-modal-body::-webkit-scrollbar-track {
  background: transparent;
}
.select-menu::-webkit-scrollbar-thumb,
.video-modal-card::-webkit-scrollbar-thumb,
.notice-detail-card::-webkit-scrollbar-thumb,
.notice-form-card::-webkit-scrollbar-thumb,
.km-detail-body::-webkit-scrollbar-thumb,
.km-detail-scroll::-webkit-scrollbar-thumb,
.loss-rule-items::-webkit-scrollbar-thumb,
#loss-standard-body::-webkit-scrollbar-thumb,
.fin-modal-body::-webkit-scrollbar-thumb {
  background: rgba(255, 255, 255, 0.18);
  border-radius: 8px;
  border: 2px solid transparent;
  background-clip: content-box;
}
.select-menu::-webkit-scrollbar-thumb:hover,
.video-modal-card::-webkit-scrollbar-thumb:hover,
.notice-detail-card::-webkit-scrollbar-thumb:hover,
.notice-form-card::-webkit-scrollbar-thumb:hover,
.km-detail-body::-webkit-scrollbar-thumb:hover,
.km-detail-scroll::-webkit-scrollbar-thumb:hover,
.loss-rule-items::-webkit-scrollbar-thumb:hover,
#loss-standard-body::-webkit-scrollbar-thumb:hover,
.fin-modal-body::-webkit-scrollbar-thumb:hover {
  background: rgba(255, 200, 87, 0.55);
  border: 2px solid transparent;
  background-clip: content-box;
}
/* Firefox 兼容：细滚动条 */
.select-menu,
.video-modal-card,
.notice-detail-card,
.notice-form-card,
.km-detail-body,
.km-detail-scroll,
.loss-rule-items,
#loss-standard-body,
.fin-modal-body {
  scrollbar-width: thin;
  scrollbar-color: rgba(255, 255, 255, 0.28) transparent;
}
.km-atk {
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr) 72px;
  gap: var(--space-3);
  align-items: center;
  padding: var(--space-2) var(--space-3);
  border-bottom: 1px solid var(--glass-border);
  font-size: 0.85rem;
}
.km-atk:last-child {
  border-bottom: none;
}
.km-atk-fb {
  background: rgba(212, 175, 55, 0.08);
}
.km-atk-who {
  min-width: 0;
}
.km-atk-name {
  font-weight: 600;
  color: var(--text-primary);
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.km-atk-fb .km-atk-name {
  color: var(--gold-bright);
}
.km-fb {
  color: var(--gold-bright);
  font-weight: 500;
  font-size: 0.75rem;
}
.km-atk-aff {
  display: block;
  font-size: 0.72rem;
  color: var(--text-tertiary);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.km-atk-ship {
  color: var(--text-secondary);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.km-atk-dmg {
  text-align: right;
  font-variant-numeric: tabular-nums;
  color: var(--text-primary);
}
.km-items {
  border: 1px solid var(--glass-border);
  border-radius: var(--radius-sm);
  overflow: hidden;
}
.km-item {
  display: flex;
  justify-content: space-between;
  gap: var(--space-3);
  padding: var(--space-2) var(--space-3);
  font-size: 0.85rem;
  border-bottom: 1px solid var(--glass-border);
}
.km-item:last-child {
  border-bottom: none;
}
.km-item-qty {
  color: var(--gold-bright);
  font-variant-numeric: tabular-nums;
  flex-shrink: 0;
}
.loss-summary {
  margin-left: auto;
  font-size: 0.85rem;
  color: var(--text-secondary);
}
.loss-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
.loss-item {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
}
.loss-item-main {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  flex-wrap: wrap;
}
.loss-badge { display: inline-flex; }
.loss-ship {
  font-weight: 600;
  color: var(--text-primary);
}
.loss-meta {
  font-size: 0.85rem;
  color: var(--text-secondary);
}
.loss-item-actions {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  margin-left: auto; /* 按键始终位于右侧（含换行场景） */
}
.loss-amount {
  font-size: 0.9rem;
  color: var(--gold-bright);
  white-space: nowrap;
}
.loss-detail {
  flex-basis: 100%;
  font-size: 0.8rem;
  color: var(--text-secondary);
}
.badge-kill { background: rgba(90, 200, 120, 0.15); color: #5ac878; border-color: rgba(90, 200, 120, 0.4); }
.badge-loss { background: rgba(220, 90, 90, 0.15); color: #dc5a5a; border-color: rgba(220, 90, 90, 0.4); }
.btn-sm {
  padding: 4px 12px;
  font-size: 0.8rem;
}
/* 财务管理面板操作按钮：字号与尺寸增大（老板 2026-08-24：刷新/导出CSV等） */
.finance-admin .btn-sm {
  padding: 7px 18px;
  font-size: 0.92rem;
}
/* 两行文本按钮（补损页各分区操作） */
.btn-2line {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  line-height: 1.15;
  padding: 3px 10px;
  font-size: 0.75rem;
}
.btn-share {
  color: var(--gold-bright);
  border-color: rgba(255, 200, 87, 0.45);
  background: rgba(255, 200, 87, 0.08);
}
.btn-share:hover {
  color: #1a1a1a;
  background: var(--gold-bright);
  border-color: var(--gold-bright);
}
.btn-pay {
  color: #5ac878;
  border-color: rgba(90, 200, 120, 0.45);
  background: rgba(90, 200, 120, 0.08);
}
.btn-pay:hover {
  color: #1a1a1a;
  background: #5ac878;
  border-color: #5ac878;
}
/* EIMS 上报按钮（绿色，与 btn-pay 同色系） */
.btn-eims {
  color: #5ac878;
  border-color: rgba(90, 200, 120, 0.45);
  background: rgba(90, 200, 120, 0.08);
}
.btn-eims:hover {
  color: #1a1a1a;
  background: #5ac878;
  border-color: #5ac878;
}
/* 补损/奖励标准公示链接 */
.std-link {
  color: var(--gold-bright);
  text-decoration: underline;
  white-space: nowrap;
}
.std-link:hover { color: var(--gold); }
/* 标准公示表格 */
.std-group { margin-bottom: var(--space-5); }
.std-group h3 {
  font-size: 1rem;
  color: var(--gold-bright);
  margin: 0 0 var(--space-3);
}
.std-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.9rem;
  color: var(--text-primary);
}
.std-table th, .std-table td {
  text-align: left;
  padding: 8px 12px;
  border-bottom: 1px solid var(--glass-border, rgba(255, 255, 255, 0.1));
}
.std-table th {
  color: var(--text-secondary);
  font-weight: 600;
}
.std-table td:last-child { white-space: nowrap; }
.std-empty { color: var(--text-secondary); font-size: 0.9rem; }
/* 「被驳回」标签：醒目（红色系） */
.badge-rejected {
  display: inline-block;
  font-weight: 600;
  color: #ff8a8a;
  background: rgba(220, 90, 90, 0.12);
  border: 1px solid rgba(220, 90, 90, 0.35);
  border-radius: var(--radius-sm);
  padding: 1px 8px;
  margin-left: 6px;
  font-size: 0.8rem;
}
/* 「已过期」标签：灰色系（不在当前自然月内，动态计算） */
.badge-expired {
  display: inline-block;
  font-weight: 600;
  color: var(--text-secondary);
  background: rgba(150, 150, 150, 0.12);
  border: 1px solid rgba(150, 150, 150, 0.35);
  border-radius: var(--radius-sm);
  padding: 1px 8px;
  margin-left: 6px;
  font-size: 0.8rem;
}
/* M8.2「无效KM」标签：灰标（太空舱/轻型护卫舰/穿梭机无有效物品） */
.badge-invalid {
  display: inline-block;
  font-weight: 600;
  color: #9a9a9a;
  background: rgba(120, 120, 120, 0.16);
  border: 1px dashed rgba(150, 150, 150, 0.5);
  border-radius: var(--radius-sm);
  padding: 1px 8px;
  margin-left: 6px;
  font-size: 0.8rem;
}
/* 「已发放」标签：绿色系（已确认发放） */
.badge-paid {
  display: inline-block;
  font-weight: 600;
  color: #7cd67c;
  background: rgba(110, 200, 110, 0.12);
  border: 1px solid rgba(110, 200, 110, 0.35);
  border-radius: var(--radius-sm);
  padding: 1px 8px;
  margin-left: 6px;
  font-size: 0.8rem;
}
/* 规则弹窗：匹配物品预览（2 列，最多同时显示 5 行，其余滚动） */
.loss-rule-items {
  max-height: 168px; /* ~5 行 */
  overflow-y: auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2px 16px;
  align-content: start;
  border: 1px solid var(--glass-border, rgba(255, 255, 255, 0.1));
  border-radius: var(--radius-sm);
  padding: 6px 10px;
  text-align: left;
}
.loss-rule-item {
  padding: 3px 0;
  font-size: 0.85rem;
  color: var(--text-primary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.loss-rule-items-empty {
  font-size: 0.85rem;
  color: var(--text-secondary);
  margin: 0;
  grid-column: 1 / -1;
}
/* 标准公示内容区：允许滚动（标准条目多时防超出视口） */
#loss-standard-body {
  max-height: 60vh;
  overflow-y: auto;
  text-align: left;
  padding-right: 4px;
}
/* 取消发放：红色系 */
.btn-danger {
  color: #dc5a5a;
  border-color: rgba(220, 90, 90, 0.45);
  background: rgba(220, 90, 90, 0.08);
}
.btn-danger:hover {
  color: #1a1a1a;
  background: #dc5a5a;
  border-color: #dc5a5a;
}
/* 规则弹窗分类下拉：与页面工具栏下拉字号统一 */
.loss-rule-cat .select-current {
  font-size: 0.9rem;
}
/* 板块切换（补损 / 奖励） */
.loss-tabs {
  display: flex;
  gap: var(--space-2);
  margin: var(--space-4) 0 var(--space-3);
  border-bottom: 1px solid var(--border-color, rgba(255, 255, 255, 0.12));
  padding-bottom: var(--space-2);
}
.loss-tab {
  padding: 8px 28px;
  font-size: 1rem;
  color: var(--text-secondary);
  background: transparent;
  border: 1px solid transparent;
  border-radius: 8px;
  cursor: pointer;
}
.loss-tab:hover { color: var(--text-primary); background: rgba(255, 255, 255, 0.06); }
.loss-tab.active {
  color: var(--gold-bright);
  border-color: rgba(255, 200, 87, 0.5);
  background: rgba(255, 200, 87, 0.1);
}
/* 分区标题行（标题 + 右端跳转按钮）：按钮与标题同一水平线 */
.loss-sec-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  margin-top: var(--space-10);
}
.mb-1 { margin-bottom: var(--space-1); }
/* 板块分区标题下的说明：与标题文字左对齐（标题含 4px 竖条 + 8px gap） */
.loss-sec-desc {
  margin: -4px 0 var(--space-5);
  max-width: none;
  text-align: left;
  padding-left: 12px;
  font-size: 0.9rem;
  color: var(--text-secondary);
  line-height: 1.6;
}
/* 军团补损：无分区标题时说明紧贴板块切换横线（6px），并抵消 loss-sec-desc 的 -4px */
#loss-corp-panel .loss-tabs { margin-bottom: 6px; }
#loss-corp-panel .loss-sec-desc.loss-corp-desc { margin-top: 0; }
.login-hint {
  margin-top: var(--space-2);
  font-size: 0.8rem;
  color: var(--text-secondary);
}
.login-perm-link {
  color: var(--gold-bright);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.login-perm-link:hover {
  color: var(--gold);
}
/* 登录弹窗·已有账号提示 */
.login-existing {
  margin-bottom: var(--space-4);
  padding: var(--space-3) var(--space-4);
  border-radius: var(--radius-sm);
  background: var(--gold-soft-bg);
  border: 1px solid var(--gold-soft-border);
}
.login-existing-text {
  margin: 0 0 var(--space-3);
  font-size: 0.9rem;
  color: var(--text-primary);
}
.login-existing-text strong {
  color: var(--gold-bright);
}
/* 权限公示页表格 */
.table {
  width: 100%;
  border-collapse: collapse;
  margin: var(--space-4) 0;
  font-size: 0.9rem;
}
.table th, .table td {
  border: 1px solid var(--glass-border);
  padding: var(--space-3);
  text-align: left;
  vertical-align: top;
}
.table th {
  background: var(--glass-bg);
  color: var(--gold-bright);
  font-weight: 600;
  white-space: nowrap;
}
.table code {
  font-size: 0.8rem;
  color: var(--gold-bright);
  word-break: break-all;
}
#login-status { min-height: 1.2em; }
.contract-status { align-self: center; }

/* ============================================================
   [6] 导航层
   ============================================================ */

/* ---------- 顶部导航（玻璃样式） ---------- */
.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: var(--nav-glass-bg);
  backdrop-filter: blur(var(--nav-glass-blur)) saturate(var(--nav-glass-saturate));
  -webkit-backdrop-filter: blur(var(--nav-glass-blur)) saturate(var(--nav-glass-saturate));
  border-bottom: 1px solid var(--glass-border);
}
/* 顶部横条底部折射亮线 */
.site-header::after {
  content: '';
  position: absolute;
  bottom: -1px;
  left: 10%;
  right: 10%;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(245, 215, 110, 0.25), transparent);
  pointer-events: none;
}
.nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 60px;
  padding: 0 var(--space-5);
  max-width: 1200px;
  margin: 0 auto;
}
.nav-brand {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  font-family: var(--font-display);
  font-size: 1.1rem;
  font-weight: 600;
  color: var(--text-primary);
  letter-spacing: 0.05em;
}
.nav-brand img {
  height: 36px;
  width: 36px;
  border-radius: 50%;
  filter: drop-shadow(0 0 8px rgba(212, 175, 55, 0.35));
}
.nav-links {
  position: fixed;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 100%;
  max-width: 1200px;
  height: 60px;
  z-index: 101;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--space-2);
  list-style: none;
  margin: 0;
  padding: 0 var(--space-5);
}
.nav-links a {
  display: inline-block;
  padding: var(--space-2) var(--space-4);
  border-radius: var(--radius-md);
  color: var(--text-secondary);
  font-size: 0.95rem;
  transition: all var(--t-fast);
}
.nav-links a:hover,
.nav-links a.active {
  color: var(--gold-bright);
  background: var(--nav-glass-bg);
}
.nav-toggle {
  display: none;
  background: none;
  border: none;
  color: var(--text-primary);
  font-size: 1.5rem;
  cursor: pointer;
}

/* ---------- 页脚（玻璃样式，内容自适应高度） ---------- */
.site-footer {
  margin-top: var(--space-12);
  min-height: 50px;
  border-top: 1px solid var(--glass-border);
  background: var(--nav-glass-bg);
  backdrop-filter: blur(var(--nav-glass-blur)) saturate(var(--nav-glass-saturate));
  -webkit-backdrop-filter: blur(var(--nav-glass-blur)) saturate(var(--nav-glass-saturate));
  position: relative;
}
/* 页脚顶部折射亮线 */
.site-footer::before {
  content: '';
  position: absolute;
  top: -1px;
  left: 10%;
  right: 10%;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(245, 215, 110, 0.25), transparent);
  pointer-events: none;
}
.footer-inner {
  width: 100%;
  min-height: 50px;
  padding: var(--space-2) var(--space-4);
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: var(--space-1);
  color: var(--text-muted);
  font-size: 0.85rem;
}
.footer-inner a { color: var(--text-secondary); }
.footer-links { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-1); }
.footer-sep { color: var(--text-muted); }
.footer-beian { color: var(--text-muted); }

/* ============================================================
   [7] 可见性控制（按身份渲染 + 访客模式）
   ============================================================ */

/* ---------- 内容分级（按身份渲染） ---------- */
/* 内部级：成员及以上可见；行政级：管理员及以上可见 */
body:not(.is-member) [data-access="internal"],
body:not(.is-member) [data-access="admin"] {
  display: none;
}
body:not(.is-admin) [data-access="admin"],
body:not(.is-superadmin) [data-access="superadmin"] {
  display: none;
}
/* 访客级：仅访客（未登录）可见，非访客隐藏（如导航「加入我们」入口） */
body:not(.is-guest) [data-access="guest"] {
  display: none;
}
/* 工具卡「入口」语义例外：internal 级工具卡访客可见但点击拦截（JS guard 处理），
   与公告正文「隐藏」语义区分；admin 级工具卡仍按上规则隐藏 */
body:not(.is-member) .tool-card[data-access="internal"] {
  display: flex;
}

/* ---------- 访客模式（is-guest） ---------- */
/* 公告锁定提示显示（正文隐藏由 data-access="internal" 统一控制） */
body.is-guest .lock-hint {
  display: flex;
}
/* 返回门户悬浮球是成员专属（门户）入口，访客隐藏 */
body.is-guest .back-float {
  display: none;
}
/* 公开页返回悬浮球（如权限公示页→返回首页）：访客也可见 */
body.is-guest .back-float--public {
  display: flex;
}

/* ============================================================
   [8] 响应式
   ============================================================ */

/* 小屏页脚内容多行时允许自动增高 */
@media (max-width: 640px) {
  .site-footer { height: auto; padding: var(--space-3) var(--space-5); }
}

@media (max-width: 768px) {
  .nav-links {
    display: none;
    position: fixed;
    top: 60px;
    left: 0;
    right: 0;
    transform: none;
    width: auto;
    max-width: none;
    height: auto;
    flex-direction: column;
    align-items: stretch;
    justify-content: flex-start;
    background: var(--nav-glass-bg);
    backdrop-filter: blur(var(--nav-glass-blur)) saturate(var(--nav-glass-saturate));
    -webkit-backdrop-filter: blur(var(--nav-glass-blur)) saturate(var(--nav-glass-saturate));
    padding: var(--space-4);
    border-bottom: 1px solid var(--glass-border);
  }
  .nav-links.open { display: flex; }
  .nav-toggle { display: block; }
  /* ☰ 展开面板选项：整行可点（a 撑满 li） */
  .nav-links li a {
    display: block;
    width: 100%;
    padding: var(--space-3) var(--space-4);
  }
  .hero { padding: var(--space-8) 0 var(--space-6); }
  .glass-pad-lg { padding: var(--space-5); }
}

/* 无障碍：用户偏好减弱动效时关闭动画/过渡（星尘、光效、回弹等） */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

/* M8.5 收支分类汇总 + 明细/合同弹窗（老板 2026-08-24 批准） */
.fin-cat-bar { display: flex; gap: 8px; margin: 8px 0 12px; flex-wrap: wrap; }
.fin-cat-btn {
  background: rgba(255, 255, 255, 0.06); border: 1px solid rgba(255, 255, 255, 0.12);
  color: var(--text-secondary); border-radius: 6px; padding: 7px 20px; font-size: 14px; cursor: pointer;
  transition: background .15s ease, color .15s ease;
}
.fin-cat-btn:hover { background: rgba(255, 255, 255, 0.12); color: #f0eee6; }
.fin-cat-btn.active {
  background: linear-gradient(135deg, #c8a24b, #c43030); color: #fff; border-color: transparent;
}
.fin-cat-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.fin-cat-col-title { font-size: 13px; font-weight: 600; color: #8a8678; margin-bottom: 8px; }
.fin-cat-table { display: flex; flex-direction: column; gap: 6px; }
.fin-cat-row {
  display: flex; align-items: center; gap: 10px; padding: 8px 10px;
  background: rgba(255, 255, 255, 0.04); border: 1px solid rgba(255, 255, 255, 0.07);
  border-radius: 8px; cursor: pointer; transition: background .15s ease;
}
.fin-cat-row:hover { background: rgba(255, 255, 255, 0.10); }
.fin-cat-name { font-weight: 600; font-size: 13px; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fin-cat-num { font-size: 13px; color: #f0eee6; font-weight: 600; white-space: nowrap; }
.fin-cat-count { font-size: 12px; color: #8a8678; white-space: nowrap; }
.fin-cat-arrow { color: #8a8678; font-size: 14px; }
/* 玻璃弹窗 */
.fin-modal-wrap { position: fixed; inset: 0; z-index: 12000; display: flex; align-items: center; justify-content: center; }
.fin-modal-mask { position: absolute; inset: 0; background: rgba(5, 4, 10, 0.6); backdrop-filter: blur(2px); }
.fin-modal-box {
  position: relative; width: min(720px, calc(100vw - 40px)); max-height: 80vh;
  display: flex; flex-direction: column; overflow: hidden;
  /* 导航栏玻璃（老板 2026-08-24：全部层级弹窗统一） */
  background: var(--nav-glass-bg);
  backdrop-filter: blur(var(--nav-glass-blur)) saturate(var(--nav-glass-saturate));
  -webkit-backdrop-filter: blur(var(--nav-glass-blur)) saturate(var(--nav-glass-saturate));
  border: 1px solid var(--glass-border); border-radius: var(--radius-lg); box-shadow: var(--glass-shadow-lg);
}
.fin-modal-summary { display: flex; align-items: baseline; gap: 10px; padding: 10px 12px; background: rgba(255, 255, 255, 0.06); border: 1px solid rgba(255, 255, 255, 0.10); border-radius: 8px; margin-bottom: 12px; }
.fin-ms-amt { font-size: 16px; font-weight: 700; }
.fin-ms-cnt { font-size: 12px; color: #8a8678; }
.fin-modal-sec { margin-top: 12px; }
.fin-modal-sec-title { font-size: 12px; font-weight: 600; color: #8a8678; margin-bottom: 6px; }
.fin-modal-head { display: flex; align-items: center; justify-content: space-between; padding: 14px 18px; border-bottom: 1px solid rgba(255, 255, 255, 0.08); }
.fin-modal-title { font-size: 14px; font-weight: 600; color: #f0eee6; }
.fin-modal-close { background: none; border: none; color: #8a8678; font-size: 20px; line-height: 1; cursor: pointer; padding: 0 4px; }
.fin-modal-close:hover { color: #f0eee6; }
.fin-modal-body { padding: 14px 18px; overflow-y: auto; }
.fin-modal-table { width: 100%; border-collapse: collapse; font-size: 12px; }
.fin-modal-table th { text-align: left; color: #8a8678; font-weight: 500; padding: 6px 8px; border-bottom: 1px solid rgba(255, 255, 255, 0.08); white-space: nowrap; }
.fin-modal-table td { padding: 6px 8px; border-bottom: 1px solid rgba(255, 255, 255, 0.05); vertical-align: top; }
.fin-modal-table tr:last-child td { border-bottom: none; }
.fin-inc { color: #5ac878; }
.fin-exp { color: #c43030; }
.fin-view-contract { padding: 2px 10px; font-size: 12px; }
.fin-ct-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 16px; font-size: 12px; }
.fin-ct-lbl { color: #8a8678; margin-right: 4px; }
