* { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif; background: var(--ds-color-bg); color: #1f2937; line-height: 1.6; }
a { color: var(--ds-color-primary); text-decoration: none; }
a:hover { text-decoration: underline; }
.container { max-width: 1200px; margin: 0 auto; padding: 0 var(--ds-space-4); }

/* Header */
.header { background: linear-gradient(135deg, var(--ds-color-brand-deep), var(--ds-color-primary)); color: #fff; padding: 14px 0; position: relative; z-index: 1000; }
.header .container { display: flex; justify-content: space-between; align-items: center; }
.logo { font-size: 20px; font-weight: 700; color: #fff; }
.nav { display: flex; gap: 24px; }
.nav a { color: rgba(255,255,255,0.9); font-size: 14px; }
.nav a:hover { color: #fff; text-decoration: none; }
.btn-submit { background: #f59e0b; color: #fff; padding: 6px 16px; border-radius: 4px; font-size: 13px; font-weight: 600; }
.btn-submit:hover { text-decoration: none; color: #fff; }

/* Search */
.search-bar { background: var(--ds-color-surface); border-radius: var(--ds-radius-card); padding: var(--ds-space-4); margin: var(--ds-space-5) 0; display: flex; gap: 10px; box-shadow: var(--ds-shadow-sm); }
.search-bar input { flex: 1; padding: 10px 14px; border: 1px solid var(--ds-color-border-strong); border-radius: var(--ds-radius-sm); font-size: 14px; }
.search-bar button { padding: 10px 28px; background: var(--ds-color-primary); color: #fff; border: none; border-radius: var(--ds-radius-sm); font-size: 14px; cursor: pointer; }

/* Category tabs */
.cat-tabs { display: flex; gap: 8px; margin-bottom: 16px; flex-wrap: wrap; }
.cat-tab { padding: 6px 14px; background: var(--ds-color-surface); border: 1px solid var(--ds-color-border-strong); border-radius: var(--ds-radius-full); font-size: 13px; color: var(--ds-color-text-muted); cursor: pointer; }
.cat-tab.active, .cat-tab:hover { background: var(--ds-color-primary); color: #fff; border-color: var(--ds-color-primary); text-decoration: none; }

/* Domain grid */
.domain-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 20px; }
.domain-card { background: var(--ds-color-surface); border: 1px solid var(--ds-color-border-strong); border-radius: var(--ds-radius-card); padding: 14px; transition: all 0.2s; }
.domain-card:hover { border-color: var(--ds-color-primary); box-shadow: 0 2px 12px rgba(59,130,246,0.1); transform: translateY(-1px); }
.domain-name { font-size: 15px; font-weight: 600; color: var(--ds-color-brand-deep); margin-bottom: 4px; }
.domain-price { font-size: 18px; color: var(--ds-color-brand); font-weight: 700; margin-bottom: 8px; }
.domain-tags { display: flex; gap: 4px; margin-bottom: 10px; flex-wrap: wrap; }
.domain-tag { font-size: 11px; padding: 2px 6px; background: var(--ds-color-primary-soft); color: var(--ds-color-primary); border-radius: 3px; }
.domain-actions { display: flex; gap: 6px; }
.btn { padding: var(--ds-space-2) var(--ds-space-3); border-radius: var(--ds-radius-sm); font-size: 12px; cursor: pointer; border: none; text-align: center; display: inline-block; }
.btn-primary { background: var(--ds-color-brand); color: #fff; }
.btn-outline { background: var(--ds-color-surface); color: var(--ds-color-primary); border: 1px solid var(--ds-color-primary); }
.btn-success { background: var(--ds-color-success); color: #fff; }
.btn-warning { background: #f59e0b; color: #fff; }

/* Panel */
.panel { background: var(--ds-color-surface); border-radius: var(--ds-radius-card); padding: var(--ds-space-4) var(--ds-space-5); margin-bottom: var(--ds-space-4); box-shadow: var(--ds-shadow-sm); }
.panel-title { font-size: 16px; font-weight: 600; margin-bottom: 12px; display: flex; justify-content: space-between; align-items: center; }

/* News */
.news-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 20px; }
.news-item { font-size: 13px; color: #475569; padding: 4px 0; }
.news-item a { color: #475569; }

/* Detail page */
.detail-hero { background: linear-gradient(135deg, #f0f9ff, #e0f2fe); border-radius: 8px; padding: 24px; margin-bottom: 16px; text-align: center; }
.detail-domain { font-size: 32px; font-weight: 700; color: var(--ds-color-brand-deep); margin-bottom: 8px; }
.detail-price { font-size: 28px; color: var(--ds-color-brand); font-weight: 700; margin-bottom: 12px; }
.detail-btns { display: flex; gap: 12px; justify-content: center; }
.detail-btn { padding: 10px 32px; border-radius: 6px; font-size: 15px; cursor: pointer; border: none; }
.detail-btn-primary { background: var(--ds-color-brand); color: #fff; }
.detail-btn-secondary { background: #fff; color: var(--ds-color-primary); border: 1px solid var(--ds-color-primary); }

.info-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 16px; }
.info-box { background: var(--ds-color-surface-alt); border-radius: 6px; padding: 12px; text-align: center; }
.info-label { font-size: 12px; color: var(--ds-color-text-faint); margin-bottom: 4px; }
.info-value { font-size: 14px; font-weight: 600; color: var(--ds-color-text-body); }

.ai-section { background: #fefce8; border-left: 4px solid #eab308; border-radius: 0 8px 8px 0; padding: 16px; margin-bottom: 16px; }
.ai-title { font-size: 14px; font-weight: 600; color: #854d0e; margin-bottom: 10px; }
.ai-item { font-size: 13px; color: #713f12; margin-bottom: 8px; line-height: 1.6; }
.ai-item strong { color: #854d0e; }

.alert { padding: var(--ds-space-3) var(--ds-space-4); border-radius: var(--ds-radius-sm); margin-bottom: var(--ds-space-4); font-size: 13px; }
.alert-danger { background: var(--ds-color-danger-soft); border: 1px solid var(--ds-color-danger-border); color: var(--ds-color-danger-text); }
.alert-warning { background: var(--ds-color-warning-soft); border: 1px solid var(--ds-color-warning-border); color: var(--ds-color-warning-text); }
.alert-info { background: var(--ds-color-info-soft); border: 1px solid var(--ds-color-info-border); color: var(--ds-color-info-text); }
.alert-success { background: var(--ds-color-success-soft); border: 1px solid var(--ds-color-success-border); color: var(--ds-color-success-text); }

/* Form */
.form-group { margin-bottom: 14px; }
.form-label { display: block; font-size: 13px; color: #475569; margin-bottom: 4px; }
.form-input, .form-select, .form-textarea { width: 100%; padding: var(--ds-space-2) var(--ds-space-3); border: 1px solid var(--ds-color-border-strong); border-radius: var(--ds-radius-sm); font-size: 13px; }
.form-textarea { min-height: 80px; resize: vertical; }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }

/* Table */
.table { width: 100%; border-collapse: collapse; font-size: 13px; }
.table th, .table td { padding: 10px; text-align: left; border-bottom: 1px solid var(--ds-color-border-soft); }
.table th { background: var(--ds-color-surface-alt); font-weight: 600; color: #475569; }
.admin-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.admin-table th, .admin-table td { padding: 10px 12px; text-align: left; border-bottom: 1px solid var(--ds-color-border-soft); }
.admin-table th { background: var(--ds-color-surface-alt); font-weight: 600; color: #475569; }
.admin-table tr:hover { background: var(--ds-color-surface-alt); }
.badge { display: inline-block; padding: 2px 8px; border-radius: 3px; font-size: 11px; }
.badge-success { background: #dcfce7; color: var(--ds-color-success); }
.badge-warning { background: #fef3c7; color: var(--ds-color-warning); }
.badge-danger { background: #fee2e2; color: var(--ds-color-brand); }
.badge-info { background: #dbeafe; color: #2563eb; }

/* Pagination */
.pagination { display: flex; gap: 6px; justify-content: center; margin: 20px 0; }
.pagination a, .pagination span { padding: 6px 12px; border: 1px solid var(--ds-color-border-strong); border-radius: var(--ds-radius-sm); font-size: 13px; }
.pagination .active { background: var(--ds-color-primary); color: #fff; border-color: var(--ds-color-primary); }

/* Footer */
.footer { width:100%; box-sizing:border-box; background: var(--ds-color-text-strong); color: var(--ds-color-text-faint); padding: 20px 0; text-align: center; font-size: 12px; margin-top: 40px; }
.footer a { color: var(--ds-color-text-faint); margin: 0 8px; }
/* 整页 footer 贴底：消除短页面底部大片白色留白（易被误认为“白块”） */
html { height:100%; }
body { min-height:100vh; display:flex; flex-direction:column; }
/* 关键：body 是 column flex，若只写 flex:1 0 auto + margin:0 auto，
   auto 外边距会阻止子项拉伸，容器按内容宽度(约960px)撑开，导致整站在手机上横向溢出。
   补 width:100%/min-width:0 强制跟随视口，彻底修复 H5/移动端布局。 */
main.container { flex:1 0 auto; width:100%; min-width:0; box-sizing:border-box; }
@media (max-width:768px){ .footer { padding:16px 12px; font-size:11px; } }

/* 404 */
.error-page { text-align: center; padding: 50px 20px 30px; }
.error-code { font-size: 96px; font-weight: 800; line-height:1; background: linear-gradient(135deg,var(--ds-color-brand-deep),var(--ds-color-primary)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; letter-spacing:2px; }
.error-search { max-width:520px; margin:0 auto 20px; display:flex; gap:10px; }
.error-search .form-input { flex:1; padding:11px 14px; border:1px solid #d7dee9; border-radius:9px; font-size:14px; }
.error-search .detail-btn-primary { background:linear-gradient(135deg,var(--ds-color-brand-deep),var(--ds-color-primary)); border:none; padding:0 22px; border-radius:9px; color:#fff; font-weight:600; }
.error-actions { display:flex; gap:10px; justify-content:center; flex-wrap:wrap; margin-bottom:30px; }
.error-actions .detail-btn-primary { background:linear-gradient(135deg,var(--ds-color-brand-deep),var(--ds-color-primary)); border:none; color:#fff; }
.error-recommend { max-width:1000px; margin:0 auto 30px; display:grid; grid-template-columns:1.4fr 1fr 1fr; gap:18px; align-items:start; }
/* v3.2.2: 域名随机推荐卡片三列，铺满不留空 */
.error-recommend .error-col:first-child { grid-column:1 / -1; }
.error-recommend .error-col:first-child .error-domain-grid { grid-template-columns:repeat(3,1fr); }
.error-col { background:#fff; border:1px solid #e8eef7; border-radius:12px; padding:18px 20px; }
.error-col-title { margin:0 0 14px; font-size:15px; color:var(--ds-color-text); padding-bottom:10px; border-bottom:1px solid var(--ds-color-border-soft); }
.error-domain-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.error-domain-card { display:block; background:var(--ds-color-surface-alt); border:1px solid #eef2f7; border-radius:10px; padding:12px; text-decoration:none; transition:.15s; }
.error-domain-card:hover { border-color:var(--ds-color-primary); background:var(--ds-color-primary-soft); text-decoration:none; }
.ed-name { font-weight:700; color:var(--ds-color-text); font-size:14px; word-break:break-all; }
.ed-price { color:var(--ds-color-brand); font-weight:700; font-size:14px; margin-top:4px; }
.ed-views { color:var(--ds-color-text-faint); font-size:12px; margin-top:2px; }
.error-list { list-style:none; padding:0; margin:0; }
.error-list li { padding:9px 0; border-bottom:1px dashed #eef2f7; font-size:13.5px; }
.error-list li:last-child { border-bottom:none; }
.error-list li a { color:var(--ds-color-text-body); }
.error-list li a:hover { color:var(--ds-color-brand-deep); }
.error-tags { max-width:800px; margin:0 auto 40px; text-align:center; }
.error-tag-list { display:flex; flex-wrap:wrap; gap:8px; justify-content:center; margin-top:12px; }
.error-tag { display:inline-block; padding:7px 14px; background:var(--ds-color-primary-soft); color:var(--ds-color-brand-deep); border-radius:20px; font-size:13px; }
.error-tag:hover { background:var(--ds-color-brand-deep); color:#fff; text-decoration:none; }
@media (max-width:860px){ .error-recommend { grid-template-columns:1fr; } .error-domain-grid { grid-template-columns:1fr 1fr; } }
@media (max-width:480px){ .error-code{font-size:72px;} .error-domain-grid{grid-template-columns:1fr;} }

/* User center sidebar */
.user-layout { display: flex; gap: 20px; margin: 20px 0; }
.user-sidebar { width: 200px; background: #fff; border-radius: 8px; padding: 16px; height: fit-content; }
.user-sidebar a { display: block; padding: 8px 12px; color: #475569; border-radius: 4px; margin-bottom: 4px; font-size: 14px; }
.user-sidebar a:hover, .user-sidebar a.active { background: var(--ds-color-primary-soft); color: var(--ds-color-primary); text-decoration: none; }
.user-content { flex: 1; }

/* v2.8.0 用户中心「进入后台管理」快捷区（仅管理员可见） */
.user-admin-quick { background: linear-gradient(135deg, var(--ds-color-primary), var(--ds-color-brand-deep)); border-radius: 10px; padding: 12px; margin-bottom: 14px; }
.user-admin-enter { display: block; text-align: center; background: #fff; color: var(--ds-color-brand-deep); font-weight: 700; font-size: 14px; padding: 10px; border-radius: 7px; text-decoration: none; box-shadow: 0 2px 6px rgba(0,0,0,.12); }
.user-admin-enter:hover { color: var(--ds-color-primary); text-decoration: none; }
.user-admin-quick-links { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 9px; }
.user-admin-quick-links a { flex: 1 1 40%; text-align: center; color: #fff; background: rgba(255,255,255,.16); border-radius: 6px; padding: 6px 4px; font-size: 12.5px; text-decoration: none; }
.user-admin-quick-links a:hover { background: rgba(255,255,255,.3); text-decoration: none; }
.user-admin-banner { display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap; background:linear-gradient(135deg, var(--ds-color-primary), var(--ds-color-brand-deep)); color:#fff; border-radius:10px; padding:14px 18px; margin-bottom:16px; }
.user-admin-banner-btn { background:#fff; color:var(--ds-color-brand-deep); font-weight:700; padding:9px 16px; border-radius:8px; text-decoration:none; white-space:nowrap; box-shadow:0 2px 6px rgba(0,0,0,.12); }
.user-admin-banner-btn:hover { color:var(--ds-color-primary); text-decoration:none; }


/* Admin
 * 注意：后台骨架（admin-layout / admin-sidebar / admin-main / admin-content）
 * 自 v2.5.0 起由 public/css/admin.css 统一负责，此处不再重复定义，
 * 否则会因加载顺序（style.css 在 admin.css 之后）覆盖掉新版布局。
 * 这里只保留与后台数据展示相关的通用样式。 */
.stat-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-bottom: 20px; }
.stat-card { background: #fff; border-radius: 8px; padding: 16px; }
.stat-value { font-size: 24px; font-weight: 700; color: var(--ds-color-brand-deep); }
.stat-label { font-size: 13px; color: var(--ds-color-text-faint); margin-top: 4px; }

@media (max-width: 768px) {
  .domain-grid { grid-template-columns: repeat(2, 1fr); }
  .info-row { grid-template-columns: repeat(2, 1fr); }
  .form-row { grid-template-columns: 1fr; }
  .news-grid { grid-template-columns: 1fr; }
  .user-layout { flex-direction: column; }
  .user-sidebar { width: 100%; }
  .stat-grid { grid-template-columns: repeat(2, 1fr); }
  .nav { display: none; flex-direction: column; position: absolute; top: 56px; left: 0; right: 0; background: var(--ds-color-brand-deep); padding: 10px 16px; gap: 0; z-index: 100; }
  .nav.show { display: flex; }
  .nav a { padding: 12px 0; border-bottom: 1px solid rgba(255,255,255,0.1); }
  .nav-toggle { display: block; background: none; border: none; color: #fff; font-size: 24px; cursor: pointer; }
  .header .container { position: relative; flex-wrap: wrap; }
  .detail-domain { font-size: 22px; }
  .detail-price { font-size: 20px; }
  .detail-btns { flex-direction: column; }
  /* 后台骨架的移动端规则见 public/css/admin.css */
}
.nav-toggle { display: none; }
@media (min-width: 769px) {
  .nav-toggle { display: none; }
}

/* v1.4 增长功能组件 */
/* 导航未读徽标 */
.nav-badge { display:inline-block; min-width:17px; padding:0 5px; background:var(--ds-color-brand); color:#fff; border-radius:9px; font-size:10px; line-height:17px; text-align:center; vertical-align:middle; }

/* 成交喜报滚动条 */
.sold-ticker { display:flex; align-items:center; gap:12px; background:linear-gradient(90deg,#fff7ed,#fef3c7); border:1px solid var(--ds-color-warning-border); border-radius:8px; padding:10px 14px; margin-bottom:16px; overflow:hidden; }
.sold-ticker-label { flex-shrink:0; font-size:13px; font-weight:700; color:#b45309; }
.sold-ticker-track { display:flex; gap:28px; overflow-x:auto; white-space:nowrap; scrollbar-width:none; font-size:13px; color:#78350f; }
.sold-ticker-track::-webkit-scrollbar { display:none; }
.sold-ticker-item b { color:var(--ds-color-brand-deep); }
.sold-ticker-item .price { color:var(--ds-color-brand); }

/* 榜单快捷入口 */
.rank-entry { display:grid; grid-template-columns:repeat(6,1fr); gap:10px; margin-bottom:18px; }
.rank-entry-item { background:#fff; border:1px solid var(--ds-color-border-strong); border-radius:8px; padding:14px 8px; text-align:center; font-size:13px; color:var(--ds-color-text-body); font-weight:600; transition:.2s; }
.rank-entry-item span { display:block; font-size:20px; margin-bottom:4px; }
.rank-entry-item:hover { border-color:var(--ds-color-primary); color:var(--ds-color-brand-deep); text-decoration:none; transform:translateY(-2px); box-shadow:0 4px 12px rgba(59,130,246,.12); }

/* 认证徽章 */
.verify-badge { display:inline-block; background:var(--ds-color-success); color:#fff; border-radius:50%; width:16px; height:16px; line-height:16px; text-align:center; font-size:10px; vertical-align:middle; }
.verify-badge-lg { width:auto; height:auto; padding:2px 9px; border-radius:10px; font-size:12px; font-weight:600; }

/* 详情页操作按钮 */
.detail-actions { display:flex; gap:10px; justify-content:center; margin-top:16px; flex-wrap:wrap; }
.act-btn { display:inline-flex; align-items:center; gap:5px; background:#fff; border:1px solid var(--ds-color-border-strong); border-radius:20px; padding:7px 16px; font-size:13px; color:var(--ds-color-text-muted); cursor:pointer; transition:.2s; }
.act-btn .ic { font-size:15px; }
.act-btn .cnt { font-weight:700; color:var(--ds-color-text-faint); }
.act-btn:hover { border-color:#f59e0b; }
.act-btn.act-on { background:var(--ds-color-warning-soft); border-color:#f59e0b; color:var(--ds-color-warning); }
.act-btn.act-on .ic, .act-btn.act-on .tx { color:var(--ds-color-warning); }
.act-btn.act-on.want { background:var(--ds-color-danger-soft); border-color:var(--ds-color-brand); color:var(--ds-color-brand); }
.act-btn.act-on.want .ic, .act-btn.act-on.want .tx { color:var(--ds-color-brand); }
.detail-btn-guard { background:#fff; color:var(--ds-color-success); border:1px solid var(--ds-color-success); }
.detail-btn-guard:hover { background:var(--ds-color-success-soft); }

/* 浏览趋势柱状图 */
.trend-bars { display:flex; align-items:flex-end; gap:4px; height:104px; padding-top:10px; }
.trend-col { flex:1; display:flex; flex-direction:column; align-items:center; justify-content:flex-end; height:100%; }
.trend-bar { width:70%; min-height:3px; background:linear-gradient(180deg,#60a5fa,var(--ds-color-primary)); border-radius:3px 3px 0 0; transition:.3s; }
.trend-col:hover .trend-bar { background:linear-gradient(180deg,#f59e0b,#ea580c); }
.trend-x { font-size:9px; color:var(--ds-color-text-faint); margin-top:4px; height:14px; }

/* 弹窗 */
.modal-mask { display:none; position:fixed; inset:0; background:rgba(15,23,42,.6); z-index:1000; align-items:center; justify-content:center; padding:16px; }
.modal-mask.show { display:flex; }
.modal-box { background:#fff; border-radius:12px; max-width:440px; width:100%; max-height:90vh; overflow:auto; }
.modal-head { display:flex; justify-content:space-between; align-items:center; padding:14px 18px; font-weight:700; border-bottom:1px solid var(--ds-color-border-soft); font-size:16px; }
.modal-close { font-size:24px; color:var(--ds-color-text-faint); cursor:pointer; line-height:1; }
.modal-body { padding:18px; }

/* 页头 */
.page-head { text-align:center; padding:10px 0 20px; }
.page-head h1 { font-size:24px; color:var(--ds-color-brand-deep); margin-bottom:6px; }
.page-head p { font-size:13px; color:var(--ds-color-text-muted); }

/* 排名标记 */
.rank-no { display:inline-block; background:var(--ds-color-text-faint); color:#fff; font-size:10px; padding:1px 6px; border-radius:3px; margin-right:4px; }
.rank-no-1 { background:#f59e0b; } .rank-no-2 { background:var(--ds-color-text-faint); } .rank-no-3 { background:#b45309; }
.empty-tip { text-align:center; color:var(--ds-color-text-faint); padding:40px 20px; font-size:14px; }

/* 成交列表 */
.sold-list { display:flex; flex-direction:column; }
.sold-row { display:flex; align-items:center; gap:14px; padding:14px 4px; border-bottom:1px solid var(--ds-color-border-soft); }
.sold-medal { font-size:26px; }
.sold-main { flex:1; }
.sold-name { font-weight:700; color:var(--ds-color-brand-deep); font-size:15px; }
.sold-time { font-size:12px; color:var(--ds-color-text-faint); margin-top:2px; }
.sold-amount { font-size:18px; font-weight:800; color:var(--ds-color-brand); }

/* 店铺主页 */
.shop-hero { display:flex; gap:18px; align-items:center; background:linear-gradient(135deg,var(--ds-color-primary-soft),#dbeafe); border-radius:10px; padding:24px; margin-bottom:16px; }
.shop-avatar { width:64px; height:64px; border-radius:50%; background:linear-gradient(135deg,var(--ds-color-brand-deep),var(--ds-color-primary)); color:#fff; font-size:28px; font-weight:700; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.shop-meta h1 { font-size:20px; color:var(--ds-color-brand-deep); margin-bottom:6px; }
.shop-meta p { font-size:13px; color:#475569; margin-bottom:10px; }
.shop-stats { display:flex; gap:20px; flex-wrap:wrap; font-size:13px; color:var(--ds-color-text-muted); }
.shop-stats b { color:var(--ds-color-brand-deep); font-size:16px; }

/* 工具页 */
.tool-grid { display:grid; grid-template-columns:1fr 1.4fr; gap:14px; margin-bottom:16px; }
.tool-card { background:var(--ds-color-surface-alt); border:1px solid var(--ds-color-border-strong); border-radius:8px; padding:16px; }
.tool-score { text-align:center; background:linear-gradient(160deg,var(--ds-color-primary-soft),#f0f9ff); }
.tool-score-num { font-size:52px; font-weight:800; color:var(--ds-color-brand-deep); line-height:1; }
.tool-score-label { font-size:12px; color:var(--ds-color-text-muted); margin:4px 0 12px; }
.tool-price-range { font-size:12px; color:var(--ds-color-text-faint); }
.tool-price { font-size:20px; font-weight:800; color:var(--ds-color-brand); margin:2px 0 8px; }
.tool-shape { font-size:12px; color:#475569; background:#fff; display:inline-block; padding:3px 10px; border-radius:10px; border:1px solid var(--ds-color-border-strong); }
.tool-sub-title { font-size:14px; font-weight:700; color:var(--ds-color-text-strong); margin-bottom:8px; }
.tool-reasons { list-style:none; font-size:13px; color:#475569; }
.tool-reasons li { padding:3px 0 3px 18px; position:relative; }
.tool-reasons li::before { content:'•'; color:var(--ds-color-primary); position:absolute; left:4px; }
.tool-section { margin-top:18px; }
.tool-raw { margin-top:14px; }
.tool-raw summary { cursor:pointer; font-size:13px; color:var(--ds-color-primary); margin-bottom:8px; }
.tool-raw pre { background:var(--ds-color-text); color:#cbd5e1; padding:12px; border-radius:6px; font-size:11px; overflow:auto; max-height:300px; white-space:pre-wrap; word-break:break-all; }

/* 聊天气泡 */
.chat-box { display:flex; flex-direction:column; gap:14px; max-height:480px; overflow-y:auto; padding:6px 2px; }
.chat-msg { display:flex; flex-direction:column; max-width:78%; }
.chat-who { font-size:11px; color:var(--ds-color-text-faint); margin-bottom:3px; }
.chat-bubble { padding:10px 14px; border-radius:10px; font-size:14px; line-height:1.6; word-break:break-word; }
.chat-buyer { align-self:flex-start; }
.chat-buyer .chat-bubble { background:var(--ds-color-border-soft); color:var(--ds-color-text-strong); border-top-left-radius:2px; }
.chat-seller { align-self:flex-end; align-items:flex-end; }
.chat-seller .chat-bubble { background:#dbeafe; color:#1e3a8a; border-top-right-radius:2px; }
.chat-admin { align-self:center; max-width:90%; align-items:center; }
.chat-admin .chat-who { text-align:center; }
.chat-admin .chat-bubble { background:#fef3c7; color:#92400e; font-size:13px; text-align:center; }

/* 担保交易 */
.trade-domain-card { text-align:center; background:var(--ds-color-surface-alt); border:1px solid var(--ds-color-border-strong); border-radius:8px; padding:18px; margin-bottom:16px; }
.trade-domain-name { font-size:24px; font-weight:800; color:var(--ds-color-brand-deep); }
.trade-domain-price { font-size:14px; color:var(--ds-color-brand); margin-top:6px; }
.fee-box { background:var(--ds-color-surface-alt); border-radius:8px; padding:14px 16px; margin:14px 0; }
.fee-row { display:flex; justify-content:space-between; padding:5px 0; font-size:14px; color:#475569; }
.fee-row.fee-total { border-top:1px dashed #cbd5e1; margin-top:6px; padding-top:10px; font-size:16px; font-weight:800; color:var(--ds-color-brand); }
.trade-steps { display:flex; margin:20px 0 24px; }
.trade-step { flex:1; text-align:center; position:relative; }
.trade-step::before { content:''; position:absolute; top:13px; left:-50%; width:100%; height:2px; background:var(--ds-color-border-strong); z-index:0; }
.trade-step:first-child::before { display:none; }
.trade-step-dot { width:28px; height:28px; line-height:28px; border-radius:50%; background:var(--ds-color-border-strong); color:var(--ds-color-text-faint); margin:0 auto 6px; position:relative; z-index:1; font-size:13px; font-weight:700; }
.trade-step-tx { font-size:12px; color:var(--ds-color-text-faint); }
.trade-step.done::before { background:var(--ds-color-success); }
.trade-step.done .trade-step-dot { background:var(--ds-color-success); color:#fff; }
.trade-step.done .trade-step-tx { color:var(--ds-color-success); }
.trade-step.current::before { background:var(--ds-color-border-strong); }
.trade-step.current .trade-step-dot { background:var(--ds-color-primary); color:#fff; box-shadow:0 0 0 4px rgba(59,130,246,.2); }
.trade-step.current .trade-step-tx { color:var(--ds-color-brand-deep); font-weight:700; }
.trade-info { border:1px solid var(--ds-color-border-strong); border-radius:8px; padding:6px 16px; }
.trade-info .fee-row { border-bottom:1px solid var(--ds-color-border-soft); }
.trade-info .fee-row:last-child { border-bottom:none; }
.trade-ops { margin-top:16px; }
.trade-timeline { border-top:1px solid var(--ds-color-border-soft); }
.tl-item { padding:8px 0; font-size:13px; border-left:2px solid #dbeafe; margin-left:8px; padding-left:14px; }
.tl-time { color:var(--ds-color-text-faint); font-size:11px; margin-right:8px; }
.tl-role { color:var(--ds-color-primary); font-size:11px; margin-right:6px; }
.tl-text { color:var(--ds-color-text-body); }

/* 用户中心 */
.uc-head { display:flex; justify-content:space-between; align-items:center; margin-bottom:16px; }
.uc-head h2 { margin:0; }
.notify-list { display:flex; flex-direction:column; }
.notify-form { margin:0; padding:0; }
.notify-item { display:flex; gap:12px; padding:14px 6px; border-bottom:1px solid var(--ds-color-border-soft); color:inherit;
  width:100%; text-align:left; background:none; border-left:0; border-right:0; border-top:0; font:inherit; cursor:pointer; }
.notify-item:hover { background:var(--ds-color-surface-alt); text-decoration:none; }
.notify-item.unread { background:var(--ds-color-primary-soft); }
.notify-icon { width:40px; height:40px; border-radius:50%; background:#dbeafe; display:flex; align-items:center; justify-content:center; font-size:18px; flex-shrink:0; }
.notify-body { flex:1; min-width:0; }
.notify-title { font-size:14px; font-weight:600; color:var(--ds-color-text-strong); display:flex; align-items:center; gap:6px; }
.notify-content { font-size:13px; color:var(--ds-color-text-muted); margin:2px 0; }
.notify-time { font-size:11px; color:var(--ds-color-text-faint); }
.unread-dot { width:8px; height:8px; border-radius:50%; background:var(--ds-color-brand); display:inline-block; }

/* v2.8.1 消息中心：分组 tab / 类型标签 / 分页 */
.msg-tabs { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:14px; }
.msg-tab { display:inline-flex; align-items:center; gap:6px; padding:8px 14px; border-radius:999px; background:#fff;
  border:1px solid var(--ds-color-border-soft); font-size:13.5px; font-weight:600; color:var(--ds-color-text-muted);
  text-decoration:none; transition:all .16s; white-space:nowrap; }
.msg-tab:hover { border-color:var(--ds-color-primary-border); color:var(--ds-color-brand); text-decoration:none; }
.msg-tab.on { background:var(--ds-color-brand); border-color:var(--ds-color-brand); color:#fff; box-shadow:0 2px 8px rgba(37,99,235,.22); }
.msg-tab-badge { font-style:normal; font-size:11px; font-weight:700; min-width:18px; height:18px; padding:0 5px;
  border-radius:9px; background:#ef4444; color:#fff; display:inline-flex; align-items:center; justify-content:center; line-height:1; }
.msg-tab.on .msg-tab-badge { background:rgba(255,255,255,.28); }
.msg-panel { padding:6px 18px 14px; }
.msg-toolbar { display:flex; justify-content:space-between; align-items:center; padding:12px 2px; font-size:12.5px;
  color:var(--ds-color-text-muted); border-bottom:1px solid var(--ds-color-border-soft); }
.msg-toolbar b { color:var(--ds-color-text-strong); }
.notify-tag { display:inline-block; font-size:11px; font-weight:700; padding:2px 7px; border-radius:5px;
  background:var(--ds-color-surface-alt); color:var(--ds-color-text-muted); flex-shrink:0; }
.notify-item.unread .notify-tag { background:#dbeafe; color:#1d4ed8; }
.msg-pager { display:flex; align-items:center; justify-content:center; gap:14px; padding:16px 0 6px; }
.msg-pg { padding:7px 16px; border-radius:8px; border:1px solid var(--ds-color-border-soft); background:#fff;
  font-size:13px; color:var(--ds-color-text-muted); text-decoration:none; }
.msg-pg:hover { border-color:var(--ds-color-primary-border); color:var(--ds-color-brand); text-decoration:none; }
.msg-pg-info { font-size:12.5px; color:var(--ds-color-text-faint); }
.btn[disabled] { opacity:.5; cursor:not-allowed; pointer-events:none; }
.subscribe-panel { background:linear-gradient(135deg,var(--ds-color-primary-soft),#f0f9ff); border:1px solid var(--ds-color-primary-border); }

/* 积分中心 */
.point-hero { display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:16px; background:linear-gradient(135deg,var(--ds-color-brand-deep),var(--ds-color-primary)); border-radius:10px; padding:24px; margin-bottom:16px; color:#fff; }
.point-num { font-size:42px; font-weight:800; line-height:1; }
.point-label { font-size:13px; opacity:.85; margin-top:4px; }
.point-actions .detail-btn-primary { background:#f59e0b; }
.point-rules { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }
.point-rule { display:flex; gap:10px; align-items:flex-start; background:var(--ds-color-surface-alt); border-radius:8px; padding:14px; }
.point-rule-ic { font-size:26px; }
.point-rule b { font-size:14px; }
.point-rule p { font-size:12px; color:var(--ds-color-text-faint); margin:2px 0 0; }

/* 仪表盘快捷区 */
.dash-quick { padding:14px 20px; }
.dash-checkin { display:flex; justify-content:space-between; align-items:center; background:var(--ds-color-warning-soft); border:1px solid var(--ds-color-warning-border); border-radius:8px; padding:12px 16px; margin-bottom:12px; }
.quick-links { display:grid; grid-template-columns:repeat(6,1fr); gap:8px; }
.quick-links a { background:var(--ds-color-surface-alt); border:1px solid var(--ds-color-border-strong); border-radius:6px; padding:10px 6px; text-align:center; font-size:13px; color:var(--ds-color-text-body); }
.quick-links a:hover { border-color:var(--ds-color-primary); color:var(--ds-color-brand-deep); text-decoration:none; }

/* v1.4 移动端适配 */
@media (max-width: 768px) {
  .rank-entry { grid-template-columns:repeat(3,1fr); }
  .tool-grid { grid-template-columns:1fr; }
  .point-rules { grid-template-columns:1fr; }
  .quick-links { grid-template-columns:repeat(3,1fr); }
  .shop-hero { flex-direction:column; text-align:center; }
  .chat-msg { max-width:92%; }
  .trade-steps { flex-wrap:wrap; gap:8px; }
  .trade-step { flex:1 1 45%; }
  .trade-step::before { display:none; }
  .detail-actions { gap:8px; }
  .act-btn { padding:6px 12px; font-size:12px; }
  .sold-amount { font-size:15px; }
  .table { font-size:12px; }
  .table th, .table td { padding:7px 5px; }
  /* v2.8.2：窄屏切换到移动端 Logo（仅当上传了移动端图时才有 .logo-mobile 元素） */
  .header .logo .logo-pc { display:none; }
  .header .logo .logo-mobile { display:inline-block; max-height:40px; }
}

/* ============================================================
   v1.4.1 / v1.4.2  样式
   ============================================================ */
/* flash 的 error 类型补样式（与 danger 一致） */
.alert-error { background:var(--ds-color-danger-soft); border:1px solid var(--ds-color-danger-border); color:#991b1b; }

/* 顶部导航：真实手机(≤768)折叠汉堡；平板/手机PC模式/小桌面横排可滑动；宽屏完整 */
.header-inner { display:flex; justify-content:space-between; align-items:center; position:relative; flex-wrap:nowrap; }
.header .logo { display:inline-flex; align-items:center; line-height:1; flex-shrink:0; margin-right:28px; }
.header .logo img { max-height:44px; width:auto; }
/* Logo 对称/清晰：所有浏览器与机型一致，不拉伸、垂直居中、不变形 */
.header .logo { display:inline-flex; align-items:center; gap:9px; height:44px; }
.header .logo .site-logo-img { display:block; width:auto; height:auto; max-height:44px; object-fit:contain; }
.header .logo .site-logo-default { display:inline-flex; align-items:center; gap:9px; height:44px; }
.header .logo .site-logo-mark { display:block; width:auto; flex:0 0 auto; border-radius:8px; }
.header .logo .logo-text { font-size:21px; font-weight:800; letter-spacing:-.2px; color:#fff; white-space:nowrap; line-height:1; }
/* v2.8.2：PC / 移动端 Logo 切换（上传了移动端 Logo 时生效，否则只有单图） */
.header .logo .logo-mobile { display:none; }
.header .logo .logo-pc { display:inline-block; max-height:44px; }
/* 纯文字模式占位（无图） */
.site-logo-textonly .logo-text { font-size:22px; }

/* ============================================================
   v2.8.4  智链米仓 · 品牌标准标（图标 + 中文渐变 + 英文小字）
   用于页头/页脚/登录注册/后台等所有品牌露出位，保证观感统一。
   深色底加 .on-dark 自动反白。
   ============================================================ */
.zl-brand { display:inline-flex; align-items:center; text-decoration:none; line-height:1; }
.zl-brand .zl-mark {
  display:block; flex:0 0 auto; width:auto;
  border-radius:26%;                 /* 与 SVG 内部圆角视觉一致 */
  box-shadow:0 2px 8px rgba(19,34,160,.22);
}
.zl-brand .zl-txt { display:flex; flex-direction:column; justify-content:center; }
.zl-brand .zl-cn {
  font-weight:800; letter-spacing:.02em; line-height:1.06;
  white-space:nowrap;
  background:linear-gradient(120deg,#1b3fd0,#2f6bff 55%,#4d86ff);
  -webkit-background-clip:text; background-clip:text; color:transparent;
}
.zl-brand .zl-en {
  font-weight:600; letter-spacing:.18em; text-transform:uppercase;
  color:var(--ds-color-text-soft, #5b667f); line-height:1; margin-top:.5em;
  white-space:nowrap;
}
/* 深色底反白（页头 / 页脚 / 品牌墙） */
.zl-brand.on-dark .zl-cn {
  background:linear-gradient(120deg,#ffffff,#dbe6ff 60%,#9fc0ff);
  -webkit-background-clip:text; background-clip:text; color:transparent;
}
.zl-brand.on-dark .zl-en { color:rgba(255,255,255,.62); }
.zl-brand.on-dark .zl-mark { box-shadow:0 2px 10px rgba(0,0,0,.28); }

/* 页头内的品牌标：与既有 .logo 高度对齐，避免撑高导航条 */
.header .logo .zl-brand { height:44px; }
.header .logo .zl-mark { max-height:44px; }

.header .nav { align-items:center; gap:16px; }
.header .nav a { white-space:nowrap; display:inline-flex; align-items:center; }
/* v2.8.2：管理员前台「进入后台」入口，醒目但不喧宾夺主 */
.header .nav a.nav-admin-entry { background: rgba(255,255,255,.16); padding:5px 12px; border-radius:999px; font-weight:600; }
.header .nav a.nav-admin-entry:hover { background: rgba(255,255,255,.28); }
.logo-text { font-size:22px; font-weight:700; color:#fff; }
/* 真实手机竖屏：导航改为顶部横排 + 横向滑动（不用汉堡折叠） */
@media (max-width:768px) {
  .header { padding:10px 0; }
  .header-inner { flex-wrap:nowrap; gap:8px; }
  .header .logo { margin-right:10px; height:38px; gap:7px; }
  .header .logo img, .header .logo .site-logo-img { max-height:34px; }
  .header .logo .site-logo-default { height:38px; gap:7px; }
  .header .logo .site-logo-mark { border-radius:7px; }
  .header .logo .logo-text { font-size:17px; }
  .logo-text { font-size:16px; }
  .header .nav { display:flex !important; flex:1; min-width:0; flex-direction:row; align-items:center;
                 position:static; background:none; box-shadow:none; max-height:none;
                 overflow-x:auto; overflow-y:hidden; -webkit-overflow-scrolling:touch;
                 scrollbar-width:none; padding:2px 0; gap:15px; }
  .header .nav::-webkit-scrollbar { display:none; }
  .header .nav a { width:auto; padding:0; border-bottom:none; font-size:13px; white-space:nowrap; }
  .header .nav a.btn-submit { margin-top:0; padding:6px 12px; }
  .nav-toggle { display:none !important; }
  /* 横向滑动容器会裁掉绝对定位浮层：把“更多”下拉摊平，链接直接并入横排 */
  .nav-dropdown, .nav-dropdown-menu, .nav-dropdown-group { display:contents; }
  .nav-dropdown::after { display:none !important; }
  .header .nav a.nav-dropdown-toggle, .header .nav .nav-dropdown-title { display:none !important; }
  .nav-dropdown-menu a { font-size:13px; }
}
/* 平板 / 手机“请求桌面版” / 小桌面：保持横排，超出可横向滑动，不折叠不挤爆 */
@media (min-width:769px) and (max-width:1100px) {
  .header .logo { margin-right:20px; }
  .header .nav { flex:1; min-width:0; gap:14px; overflow-x:auto; -webkit-overflow-scrolling:touch; scrollbar-width:none; padding-bottom:2px; padding-left:8px; }
  .header .nav::-webkit-scrollbar { display:none; }
  .header .nav a { font-size:13px; }
  .nav-toggle { display:none !important; }
  /* 本区间 nav 横向滑动会裁掉流内展开的下拉（overflow-y:hidden），
     改为绝对定位于 .header-inner（不被 nav 滚动容器裁剪），点击 .open 展开 */
  /* nav 是横向滚动容器（overflow-x:auto 把 y 裁剪锁死为 auto），绝对/相对定位浮层都会被裁剪。
     方案：菜单 position:fixed —— fixed 相对视口定位，不受任何 overflow 祖先裁剪。
     水平位置由 JS 同步（header-more.js），这里只管样式与显隐 */
  .header .nav { overflow-x:auto; }
  .nav-dropdown-menu { position:fixed !important; top:56px; left:auto; right:12px; margin-top:6px;
                       min-width:220px; max-height:70vh; overflow-y:auto;
                       animation:none !important; opacity:1 !important; transform:none !important; }
}
@media (min-width:1101px) { .nav-toggle { display:none !important; } }

/* 认证页（登录/注册/找回密码）——统一品牌风格 */
.auth-wrap { max-width:430px; margin:40px auto 56px; padding:0 14px; }
.auth-card { position:relative; background:#fff; border:1px solid #e8eef7; border-radius:16px; padding:32px 30px 26px; box-shadow:0 14px 44px rgba(30,64,175,.10); overflow:hidden; }
.auth-card::before { content:""; position:absolute; top:0; left:0; right:0; height:4px; background:linear-gradient(90deg,var(--ds-color-brand-deep),var(--ds-color-primary)); }
.auth-logo { text-align:center; margin-bottom:8px; }
.auth-logo img { max-height:48px; width:auto; }
.auth-title { text-align:center; margin:4px 0 4px; font-size:22px; font-weight:700; color:var(--ds-color-text); }
.auth-sub { text-align:center; color:var(--ds-color-text-muted); font-size:13px; margin:0 0 22px; line-height:1.7; }
.auth-sub a, .auth-links a { color:var(--ds-color-brand-deep); }
.auth-card .form-group { margin-bottom:16px; }
.auth-card .form-label { display:block; font-size:13px; color:var(--ds-color-text-body); font-weight:600; margin-bottom:7px; }
.auth-card .form-input { width:100%; padding:11px 13px; border:1px solid #d7dee9; border-radius:9px; font-size:14px; box-sizing:border-box; transition:border-color .15s, box-shadow .15s; }
.auth-card .form-input:focus { border-color:var(--ds-color-primary); box-shadow:0 0 0 3px rgba(59,130,246,.15); outline:none; }
.auth-card .detail-btn-primary { width:100%; padding:12px; font-size:15px; border-radius:9px; margin-top:4px; background:linear-gradient(135deg,var(--ds-color-brand-deep),var(--ds-color-primary)); border:none; color:#fff; font-weight:600; }
.auth-card .detail-btn-primary:hover { filter:brightness(1.06); }
.sub-hero .detail-btn-primary { background:linear-gradient(135deg,var(--ds-color-brand-deep),var(--ds-color-primary)); border:none; }
.auth-links { display:flex; justify-content:space-between; align-items:center; margin-top:18px; font-size:13px; }
.captcha-row { display:flex; gap:10px; align-items:stretch; }
.captcha-row .form-input { flex:1; }
.captcha-img { width:120px; height:44px; border:1px solid #d7dee9; border-radius:9px; cursor:pointer; background:var(--ds-color-border-soft); flex-shrink:0; object-fit:cover; }
@media (max-width:480px){ .auth-card { padding:26px 20px 22px; } .auth-title { font-size:20px; } }

/* 后台表格长文本：单行省略，点击看详情 */
.table .cell-ellipsis { max-width:220px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; cursor:pointer; }
.table .cell-num { white-space:nowrap; }
.detail-modal-mask { position:fixed; inset:0; background:rgba(15,23,42,.55); display:none; align-items:center; justify-content:center; z-index:999; padding:20px; }
.detail-modal-mask.show { display:flex; }
.detail-modal-box { background:#fff; border-radius:10px; max-width:560px; width:100%; max-height:70vh; overflow:auto; padding:20px 22px; }
.detail-modal-box h4 { margin:0 0 12px; }
.detail-modal-box .modal-body { white-space:pre-wrap; word-break:break-all; font-size:13px; line-height:1.8; color:var(--ds-color-text-body); }
.detail-modal-close { float:right; cursor:pointer; color:var(--ds-color-text-faint); font-size:20px; line-height:1; }

/* 后台域名状态快速切换 */
.status-select { padding:3px 6px; border-radius:5px; border:1px solid #cbd5e1; font-size:12px; }
.status-active { color:var(--ds-color-success); font-weight:600; }
.status-pending { color:#f59e0b; font-weight:600; }
.status-rejected,.status-offline,.status-banned { color:var(--ds-color-brand); font-weight:600; }
.status-sold { color:#7c3aed; font-weight:600; }

/* 教程中心 */
.sub-hero { background:linear-gradient(135deg,var(--ds-color-primary-soft),#f8fbff); border:1px solid #e0ecff; border-radius:14px; padding:26px 22px; margin:18px 0 20px; text-align:center; }
.sub-hero h2 { margin:0 0 6px; font-size:22px; color:var(--ds-color-text); }
.sub-hero p { margin:0 0 16px; color:var(--ds-color-text-muted); font-size:13px; }
.sub-hero .tut-search { max-width:580px; margin:0 auto; }
.tut-layout { display:grid; grid-template-columns:230px 1fr; gap:22px; align-items:start; }
.tut-side { position:sticky; top:16px; }
.tut-cat-list { list-style:none; padding:0; margin:0; }
.tut-cat-list a { display:block; padding:11px 14px; border-radius:8px; color:var(--ds-color-text-body); font-size:14px; margin-bottom:4px; }
.tut-cat-list a:hover, .tut-cat-list a.active { background:var(--ds-color-primary-soft); color:var(--ds-color-brand-deep); text-decoration:none; font-weight:600; }
.tut-card { background:#fff; border:1px solid var(--ds-color-border-strong); border-radius:10px; padding:16px 18px; margin-bottom:14px; transition:.2s; }
.tut-card:hover { box-shadow:0 6px 18px rgba(30,64,175,.08); border-color:var(--ds-color-primary-border); }
.tut-card h3 { margin:0 0 8px; font-size:16px; }
.tut-card h3 a { color:var(--ds-color-text); }
.tut-card .tut-meta { color:var(--ds-color-text-faint); font-size:12px; margin-top:8px; }
.tut-summary { color:var(--ds-color-text-muted); font-size:13px; line-height:1.7; margin:0; }
.tut-top-tag { display:inline-block; background:#fef3c7; color:#b45309; font-size:11px; padding:1px 7px; border-radius:4px; margin-right:6px; vertical-align:middle; }
.tut-content { line-height:1.9; font-size:15px; color:#1f2937; }
.tut-content h3 { margin:22px 0 10px; color:var(--ds-color-brand-deep); }
.tut-content ol, .tut-content ul { padding-left:24px; }
.tut-content li { margin-bottom:7px; }
.tut-content p { margin:10px 0; }
.tut-content b { color:#111827; }
.tut-search { display:flex; gap:8px; margin-bottom:16px; }
.tut-search input { flex:1; }
.tut-pager { text-align:center; margin:18px 0; }
.tut-pager a, .tut-pager span { display:inline-block; padding:6px 12px; margin:0 3px; border:1px solid var(--ds-color-border-strong); border-radius:6px; font-size:13px; }
.tut-pager .cur { background:var(--ds-color-brand-deep); color:#fff; border-color:var(--ds-color-brand-deep); }
@media (max-width:768px){ .tut-layout { grid-template-columns:1fr; } .tut-side { position:static; } }

/* 教程详情上下篇 */
.tut-near { display:flex; justify-content:space-between; gap:12px; margin:22px 0; flex-wrap:wrap; }
.tut-near a { flex:1 1 40%; padding:12px 14px; border:1px solid var(--ds-color-border-strong); border-radius:8px; font-size:13px; color:var(--ds-color-brand-deep); }

/* App下载页 */
.app-hero { text-align:center; padding:40px 16px 26px; }
.app-hero .app-qr { width:150px; height:150px; margin:14px auto; display:block; }
.app-cards { display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:18px; margin:24px 0; }
.app-dl-card { background:#fff; border:1px solid var(--ds-color-border-strong); border-radius:14px; padding:26px 22px; text-align:center; }
.app-dl-card .app-ic { font-size:42px; }
.app-dl-card h3 { margin:10px 0 6px; }
.app-dl-card p { color:var(--ds-color-text-muted); font-size:13px; min-height:38px; }

/* 后台内容长文本展示 */
.admin-log-ip { font-family:monospace; }
.kv-note { background:var(--ds-color-surface-alt); border:1px solid var(--ds-color-border-strong); border-radius:8px; padding:12px 14px; font-size:13px; color:#475569; line-height:1.8; margin-bottom:16px; }
/* 后台表格窄屏横向滚动，杜绝文字被挤压折叠 */
.admin-content .panel { overflow-x:auto; }
.admin-content .table { min-width:680px; }
.admin-content .table th, .admin-content .table td { vertical-align:middle; }
/* v1.4.2 表格长文本统一：表头不换行；文本列超长省略；操作列完整 */
.admin-content .table th { white-space:nowrap; }
.admin-content .table td { max-width:240px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.admin-content .table td.cell-actions { max-width:none; overflow:visible; }
.admin-content .table td.cell-ellipsis { cursor:pointer; }
.admin-content .table td.cell-ellipsis:hover { color:var(--ds-color-brand-deep); }
/* 用户中心前台表格同样处理 */
.user-content .panel { overflow-x:auto; }
.user-content .table { min-width:560px; }
.user-content .table td { max-width:260px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; vertical-align:middle; }
.user-content .table td.cell-actions { max-width:none; overflow:visible; }
.user-content .table td.cell-ellipsis { cursor:pointer; }
.user-content .table td.cell-ellipsis:hover { color:var(--ds-color-brand-deep); }

/* 通用浮动弹窗 Toast */
.toast { position:fixed; top:20px; right:20px; z-index:9999; min-width:260px; max-width:380px; padding:14px 18px; border-radius:10px; color:#fff; font-size:14px; line-height:1.6; box-shadow:0 8px 24px rgba(0,0,0,.18); transform:translateX(120%); transition:transform .3s ease; }
.toast.show { transform:translateX(0); }
.toast.success { background:var(--ds-color-success); }
.toast.error { background:var(--ds-color-brand); }
.toast.info { background:var(--ds-color-primary); }
@media (max-width:480px){ .toast { top:12px; right:12px; left:12px; min-width:0; max-width:none; } }

/* 新闻双列卡片 */
.news-card-grid { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.news-card { display:block; background:#fff; border:1px solid #e8eef7; border-radius:12px; padding:16px 18px; text-decoration:none; transition:all .2s; }
.news-card:hover { border-color:var(--ds-color-primary); box-shadow:0 4px 16px rgba(59,130,246,.1); transform:translateY(-2px); text-decoration:none; }
.news-card-cat { display:inline-block; font-size:11px; color:var(--ds-color-primary); background:var(--ds-color-primary-soft); padding:2px 8px; border-radius:4px; margin-bottom:8px; font-weight:600; }
.news-card-ai { display:inline-block; font-size:10px; color:#fff; background:linear-gradient(135deg,#8b5cf6,#6366f1); padding:2px 6px; border-radius:4px; margin-left:6px; font-weight:600; }
.news-card-title { font-size:15px; color:var(--ds-color-text); margin-bottom:8px; line-height:1.5; font-weight:600; }
.news-card-summary { font-size:13px; color:var(--ds-color-text-muted); line-height:1.6; margin-bottom:10px; }
.news-card-meta { display:flex; justify-content:space-between; font-size:12px; color:var(--ds-color-text-faint); }

/* 文章详情左右布局 */
.detail-layout { display:grid; grid-template-columns:1fr 300px; gap:20px; align-items:start; }
.detail-main { min-width:0; }
.detail-side { position:sticky; top:80px; }
.article-content { font-size:15px; line-height:1.9; color:var(--ds-color-text-body); }
.article-content p { margin-bottom:14px; }
.side-domain-item { display:flex; justify-content:space-between; align-items:center; padding:10px 0; border-bottom:1px solid var(--ds-color-border-soft); text-decoration:none; }
.side-domain-item:hover { text-decoration:none; }
.side-domain-name { font-size:14px; color:var(--ds-color-brand-deep); font-weight:600; }
.side-domain-price { font-size:13px; color:#f59e0b; font-weight:600; }

/* 登录注册左右分栏 */
.auth-page { min-height:calc(100vh - 200px); display:flex; flex-direction:column; align-items:center; padding:30px 14px; }
.auth-page-inner { width:100%; max-width:960px; }
.auth-page-inner { max-width:960px; margin:0 auto; width:100%; display:grid; grid-template-columns:1.1fr 1fr; gap:0; background:#fff; border-radius:20px; overflow:hidden; box-shadow:0 20px 60px rgba(30,64,175,.12); border:1px solid #e8eef7; }
.auth-hero { background:linear-gradient(135deg,var(--ds-color-brand-deep) 0%,var(--ds-color-primary) 100%); padding:40px 36px; color:#fff; position:relative; overflow:hidden; }
.auth-hero::before { content:""; position:absolute; top:-50px; right:-50px; width:200px; height:200px; background:rgba(255,255,255,.08); border-radius:50%; }
.auth-hero::after { content:""; position:absolute; bottom:-80px; left:-30px; width:160px; height:160px; background:rgba(255,255,255,.06); border-radius:50%; }
.auth-hero-logo { margin-bottom:18px; position:relative; z-index:1; }
.auth-hero-title { font-size:24px; font-weight:700; margin-bottom:8px; position:relative; z-index:1; }
.auth-hero-sub { font-size:14px; opacity:.85; line-height:1.7; margin-bottom:24px; position:relative; z-index:1; }
.auth-benefits { display:flex; flex-direction:column; gap:14px; position:relative; z-index:1; }
.auth-benefit { display:flex; gap:12px; align-items:flex-start; }
.auth-benefit-icon { width:36px; height:36px; background:rgba(255,255,255,.15); border-radius:10px; display:flex; align-items:center; justify-content:center; font-size:18px; flex-shrink:0; }
.auth-benefit h4 { font-size:14px; font-weight:600; margin-bottom:2px; }
.auth-benefit p { font-size:12px; opacity:.8; line-height:1.5; }
.auth-levels { display:grid; grid-template-columns:repeat(4,1fr); gap:8px; margin-top:24px; position:relative; z-index:1; }
.auth-level { text-align:center; padding:10px 4px; background:rgba(255,255,255,.12); border-radius:8px; }
.auth-level span { display:block; font-size:11px; opacity:.8; margin-bottom:3px; }
.auth-level b { font-size:13px; }
.auth-hero-tip { margin-top:24px; font-size:13px; opacity:.9; position:relative; z-index:1; padding-top:18px; border-top:1px solid rgba(255,255,255,.2); }
.auth-form-col { padding:36px 32px; }
.auth-form-col .auth-card { box-shadow:none; border:none; padding:0; }
.auth-form-col .auth-card::before { display:none; }
.auth-agree { text-align:center; font-size:12px; color:var(--ds-color-text-faint); margin-top:14px; }
.auth-agree a { color:var(--ds-color-primary); }
.auth-agree-box{display:flex;align-items:flex-start;gap:8px;margin-top:12px;font-size:12.5px;line-height:1.6;color:var(--ds-color-text-faint);cursor:pointer;text-align:left;}
.auth-agree-box input[type="checkbox"]{margin-top:2px;flex:0 0 auto;width:15px;height:15px;accent-color:var(--ds-color-primary);cursor:pointer;}
.auth-agree-box a{color:var(--ds-color-primary);text-decoration:none;}
.auth-agree-box a:hover{text-decoration:underline;}
.auth-agree-box.is-error{color:#dc2626;}
.auth-agree-box.is-error a{color:#dc2626;}

/* 响应式 */
@media (max-width:860px){
  .detail-layout { grid-template-columns:1fr; }
  .detail-side { position:static; }
  .auth-page-inner { grid-template-columns:1fr; }
  .auth-hero { padding:30px 24px; }
  .auth-form-col { padding:24px 20px; }
  .auth-levels { grid-template-columns:repeat(2,1fr); }
}
@media (max-width:480px){
  .news-card-grid { grid-template-columns:1fr; }
  .news-card { padding:14px; }
  .news-card-title { font-size:14px; }
  .auth-hero-title { font-size:20px; }
  .auth-benefits { gap:12px; }
}

/* ============ v2.8.4 登录注册表单美化 ============ */
/* 电脑端输入框收窄 + 表单居中，避免「一根横条拉到底」的空旷感 */

/* 表单列内边距加大，卡片再限一档宽度并居中 */
.auth-form-col { padding:44px 46px; }
.auth-form-col .auth-card { margin:0 auto; }

/* 表单体（表单/按钮/协议/快捷登录）统一限宽居中，标题区保持整宽 */
.auth-form-body { max-width:400px; margin:0 auto; }

/* 登录页为移动端优先的窄卡（无左侧介绍列），一并收窄 */
.auth-wrap .auth-card { max-width:420px; margin:0 auto; }

/* 输入框：左图标位 + 右侧按钮位，视觉上更「厚实」 */
.auth-card .form-input {
  padding:13px 40px 13px 40px;
  font-size:14.5px;
  border-radius:10px;
  border-color:#dbe3ef;
  background:#fcfdff;
}
.auth-card .form-input::placeholder { color:#aab4c6; }
.auth-card .form-input:hover { border-color:#c3cfe3; }
.auth-card .form-input:focus { background:#fff; }

.form-field { position:relative; }
.form-field > .form-input { width:100%; }
.form-field-icon {
  position:absolute; left:13px; top:50%; transform:translateY(-50%);
  font-size:15px; line-height:1; pointer-events:none; opacity:.55;
  transition:opacity .15s;
}
.form-field:focus-within .form-field-icon { opacity:.95; }

/* 密码可见性切换 */
.form-field-toggle {
  position:absolute; right:8px; top:50%; transform:translateY(-50%);
  width:30px; height:30px; display:flex; align-items:center; justify-content:center;
  border:0; background:transparent; cursor:pointer; border-radius:7px;
  font-size:15px; line-height:1; opacity:.5; padding:0;
  transition:opacity .15s, background .15s;
}
.form-field-toggle:hover { opacity:1; background:#eef3fb; }
.form-field-toggle:focus-visible { outline:2px solid var(--ds-color-primary); outline-offset:1px; }

/* 密码强度条 */
.pwd-meter { display:flex; align-items:center; gap:8px; margin-top:7px; }
.pwd-meter-bars { display:flex; gap:4px; flex:1; }
.pwd-meter-bars i { height:4px; flex:1; border-radius:2px; background:#e3e9f3; transition:background .2s; }
.pwd-meter-text { font-size:11.5px; color:#94a3b8; min-width:44px; text-align:right; }
.pwd-meter[data-level="1"] .pwd-meter-bars i:nth-child(1) { background:#ef4444; }
.pwd-meter[data-level="2"] .pwd-meter-bars i:nth-child(-n+2) { background:#f59e0b; }
.pwd-meter[data-level="3"] .pwd-meter-bars i:nth-child(-n+3) { background:#22c55e; }
.pwd-meter[data-level="1"] .pwd-meter-text { color:#ef4444; }
.pwd-meter[data-level="2"] .pwd-meter-text { color:#f59e0b; }
.pwd-meter[data-level="3"] .pwd-meter-text { color:#22c55e; }

/* 字段级错误提示 */
.form-hint { font-size:12px; color:#94a3b8; margin-top:6px; line-height:1.5; }
.form-hint.is-error { color:#dc2626; }
.form-input.is-error { border-color:#ef4444; background:#fff8f8; }

/* 验证码行：输入框与图片对齐等高 */
.captcha-row { display:flex; gap:10px; align-items:stretch; }
.captcha-row .form-input { flex:1; min-width:0; }
.captcha-row img { height:auto; max-height:52px; border-radius:10px; cursor:pointer; }

@media (max-width:860px){
  .auth-form-col { padding:30px 24px; }
}
@media (max-width:480px){
  .auth-form-col { padding:24px 18px; }
}

/* 登录注册页顶部品牌区（大 Logo 独立可控：后台上传 logo_login 即生效） */
.auth-top-brand { text-align:center; margin-bottom:26px; }
.auth-top-logo { display:flex; align-items:center; justify-content:center; margin-bottom:14px; min-height:60px; }
.auth-top-logo .site-logo-img { display:block; width:auto; height:auto; max-height:76px; max-width:80%; object-fit:contain; }
.auth-top-logo .site-logo-default { display:inline-flex; align-items:center; gap:14px; }
.auth-top-logo .site-logo-default .site-logo-mark { display:block; width:auto; border-radius:12px; box-shadow:0 8px 24px rgba(30,64,175,.18); }
.auth-top-logo .site-logo-default .logo-text { font-size:30px; font-weight:800; letter-spacing:-.4px; color:var(--ds-color-text); }
.auth-top-title { font-size:26px; font-weight:700; color:var(--ds-color-text); margin-bottom:6px; }
.auth-top-sub { font-size:14px; color:var(--ds-color-text-muted); }

/* 登录注册页底部域名推荐 */
.auth-bottom-domains { margin-top:32px; }
.auth-bottom-title { text-align:center; font-size:16px; font-weight:600; color:var(--ds-color-text); margin-bottom:16px; }
.auth-domain-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; max-width:800px; margin:0 auto; }
.auth-domain-card { display:block; background:#fff; border:1px solid #e8eef7; border-radius:12px; padding:16px 12px; text-align:center; text-decoration:none; transition:all .2s; }
.auth-domain-card:hover { border-color:var(--ds-color-primary); box-shadow:0 4px 16px rgba(59,130,246,.12); transform:translateY(-2px); text-decoration:none; }
.auth-domain-name { font-size:15px; font-weight:700; color:var(--ds-color-brand-deep); margin-bottom:6px; word-break:break-all; }
.auth-domain-price { font-size:13px; color:#f59e0b; font-weight:600; }

@media (max-width:860px){
  .auth-domain-grid { grid-template-columns:repeat(2,1fr); }
  .auth-top-title { font-size:22px; }
  .auth-top-logo .site-logo-default .logo-text { font-size:24px; }
  .auth-top-logo .site-logo-img { max-height:60px; }
}
@media (max-width:480px){
  .auth-top-logo { min-height:52px; }
  .auth-top-logo .site-logo-default .logo-text { font-size:21px; }
  .auth-top-logo .site-logo-default .site-logo-mark { border-radius:10px; }
  .auth-top-logo .site-logo-img { max-height:52px; }
  .auth-top-title { font-size:19px; }
  .auth-top-sub { font-size:12px; }
  .auth-domain-grid { grid-template-columns:repeat(2,1fr); gap:8px; }
  .auth-domain-card { padding:12px 8px; }
  .auth-domain-name { font-size:13px; }
}

/* 用户中心折叠菜单 */
.user-nav-group { border-bottom:1px solid var(--ds-color-border-soft); }
.user-nav-group-title { display:flex; justify-content:space-between; align-items:center; padding:12px 16px; font-size:13px; font-weight:600; color:#475569; cursor:pointer; user-select:none; transition:background .15s; }
.user-nav-group-title:hover { background:var(--ds-color-surface-alt); }
.user-nav-arrow { font-size:10px; transition:transform .2s; color:var(--ds-color-text-faint); }
.user-nav-group.open .user-nav-arrow { transform:rotate(180deg); }
.user-nav-group-body { display:none; }
.user-nav-group.open .user-nav-group-body { display:block; }
.user-nav-group-body a { display:block; padding:10px 16px 10px 32px; font-size:13px; color:#475569; text-decoration:none; border-left:3px solid transparent; transition:all .15s; }
.user-nav-group-body a:hover { background:var(--ds-color-surface-alt); color:var(--ds-color-brand-deep); }
.user-nav-group-body a.active { background:var(--ds-color-primary-soft); color:var(--ds-color-brand-deep); border-left-color:var(--ds-color-primary); font-weight:600; }
@media (max-width:860px){
  .user-nav-group { border-bottom:none; }
  .user-nav-group-title { padding:10px 12px; }
  .user-nav-group-body a { padding:9px 12px 9px 28px; }
}

/* 可点击统计卡片 */
.stat-card-link { text-decoration:none; cursor:pointer; transition:all .2s; }
.stat-card-link:hover { border-color:var(--ds-color-primary); box-shadow:0 4px 16px rgba(59,130,246,.12); transform:translateY(-2px); text-decoration:none; }
.stat-card-link:hover .stat-value { color:var(--ds-color-brand-deep); }

/* v1.6.0 变现增长 */
.btn-sm{padding:5px 12px !important;font-size:12px !important;border-radius:6px !important;}
.aff-goods-title{font-weight:700;color:var(--ds-color-brand-deep);margin-bottom:10px;font-size:15px;}
.aff-good-price .plat{font-size:10px;background:var(--ds-color-border-soft);color:var(--ds-color-text-muted);padding:1px 6px;border-radius:4px;margin-left:auto;}
.ad-slot{margin:16px 0;display:flex;flex-direction:column;gap:12px;}
.ad-image a{display:block;border-radius:10px;overflow:hidden;}
.ad-image img{width:100%;display:block;border-radius:10px;border:1px solid var(--ds-color-border-strong);}
.ad-code{overflow:hidden;border-radius:10px;}
.ad-code ins,.ad-code iframe{max-width:100%;}
.ad-textlink{display:block;background:linear-gradient(135deg,var(--ds-color-primary-soft),#dbeafe);border:1px solid var(--ds-color-primary-border);border-radius:10px;padding:12px 16px;color:var(--ds-color-brand-deep);font-weight:600;text-decoration:none;}
.ad-textlink:hover{background:#dbeafe;}
.ad-aff{background:#fff;border:1px solid var(--ds-color-border-strong);border-radius:10px;padding:12px;}

.tool-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 18px;}
.tool-tabs a{padding:8px 16px;border-radius:20px;background:#fff;border:1px solid var(--ds-color-border-strong);font-size:13px;color:#475569;text-decoration:none;}
.tool-tabs a:hover{border-color:var(--ds-color-primary);color:var(--ds-color-brand-deep);}
.tool-tabs a.active{background:var(--ds-color-brand-deep);color:#fff;border-color:var(--ds-color-brand-deep);}

.gen-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;}
.gen-item{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-radius:8px;border:1px solid var(--ds-color-border-strong);background:#fff;}
.gen-item.avail{background:var(--ds-color-success-soft);border-color:var(--ds-color-success-border);}
.gen-item.reg{background:var(--ds-color-danger-soft);border-color:var(--ds-color-danger-border);opacity:.8;}
.gen-item.unk{background:var(--ds-color-surface-alt);}
.gen-name{font-family:monospace;font-size:14px;font-weight:600;color:var(--ds-color-text);word-break:break-all;}
.gen-status{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.gen-badge{font-size:11px;padding:2px 8px;border-radius:10px;white-space:nowrap;}
.avail .gen-badge{background:#dcfce7;color:var(--ds-color-success);}
.reg .gen-badge{background:#fee2e2;color:var(--ds-color-brand);}
.unk .gen-badge{background:var(--ds-color-border-soft);color:var(--ds-color-text-faint);}
.gen-reg{font-size:12px;color:var(--ds-color-brand-deep);font-weight:600;text-decoration:none;white-space:nowrap;}

.aff-tabs{display:flex;gap:10px;margin-bottom:16px;flex-wrap:wrap;}
.aff-tabs a{padding:10px 22px;border-radius:8px;background:#fff;border:1px solid var(--ds-color-border-strong);font-weight:600;color:#475569;text-decoration:none;}
.aff-tabs a.active{background:var(--ds-color-brand-deep);color:#fff;border-color:var(--ds-color-brand-deep);}
.aff-goods-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;}
.aff-good{background:#fff;border:1px solid var(--ds-color-border-strong);border-radius:12px;overflow:hidden;display:flex;flex-direction:column;transition:box-shadow .2s,transform .2s;}
.aff-good:hover{box-shadow:0 8px 24px rgba(0,0,0,.08);transform:translateY(-3px);}
.aff-good-img{position:relative;width:100%;aspect-ratio:1;background:var(--ds-color-surface-alt);}
.aff-good-img img{width:100%;height:100%;object-fit:cover;}
.aff-good-plat{position:absolute;top:8px;left:8px;font-size:10px;padding:2px 7px;border-radius:4px;color:#fff;font-weight:600;}
.plat-taobao{background:#ff5000;}
.plat-pdd{background:#e02e24;}
.aff-good-body{padding:10px;display:flex;flex-direction:column;gap:6px;flex:1;}
.aff-good-name{font-size:13px;color:var(--ds-color-text-body);line-height:1.4;height:36px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;}
.aff-good-price{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;}
.aff-good-price .cur{color:var(--ds-color-brand);font-size:18px;font-weight:700;}
.aff-good-price .old{color:var(--ds-color-text-faint);text-decoration:line-through;font-size:12px;}
.aff-good-price .coupon{background:#fee2e2;color:var(--ds-color-brand);font-size:11px;padding:1px 6px;border-radius:4px;}
.aff-good-meta{font-size:11px;color:var(--ds-color-text-faint);margin-top:auto;display:flex;justify-content:space-between;}
.aff-good-btn{display:block;text-align:center;background:linear-gradient(135deg,#f59e0b,#ef4444);color:#fff;padding:8px;border-radius:8px;font-weight:600;font-size:13px;text-decoration:none;margin-top:6px;}

.point-goods-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;}
.point-good{background:#fff;border:1px solid var(--ds-color-border-strong);border-radius:14px;padding:20px 16px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px;}
.point-good-icon{font-size:42px;line-height:1;}
.point-good-name{font-weight:700;font-size:15px;color:var(--ds-color-text);}
.point-good-desc{font-size:12px;color:var(--ds-color-text-faint);min-height:32px;line-height:1.5;}
.point-good-price{color:var(--ds-color-brand);font-weight:700;font-size:18px;margin:4px 0;}
.point-good-price small{font-size:12px;color:var(--ds-color-text-faint);font-weight:400;}

.invite-box{background:linear-gradient(135deg,var(--ds-color-brand-deep),var(--ds-color-primary));color:#fff;border-radius:14px;padding:26px;text-align:center;margin-bottom:18px;}
.invite-box h2{color:#fff;margin:0 0 6px;}
.invite-box p{opacity:.9;margin:0 0 16px;font-size:13px;}
.invite-link{display:flex;gap:8px;max-width:520px;margin:0 auto;}
.invite-link input{flex:1;padding:10px 14px;border-radius:8px;border:none;font-size:13px;}
.invite-code-big{font-size:26px;font-weight:800;letter-spacing:3px;background:rgba(255,255,255,.2);display:inline-block;padding:6px 22px;border-radius:8px;margin:8px 0;}
.share-btns{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:14px;}
.share-btns a{padding:8px 18px;border-radius:20px;background:rgba(255,255,255,.18);color:#fff;text-decoration:none;font-size:13px;}
.share-btns a:hover{background:rgba(255,255,255,.32);}

@media (max-width:600px){
  .gen-grid{grid-template-columns:1fr 1fr;}
  .aff-goods-grid,.point-goods-grid{grid-template-columns:1fr 1fr;gap:10px;}
  .aff-good-name{font-size:12px;}
  .tool-tabs a{padding:7px 12px;font-size:12px;}
}


/* 新手引导弹窗 v1.6.2 */
.guide-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:9999;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .25s;padding:20px}
.guide-overlay.show{opacity:1}
.guide-box{background:#fff;border-radius:16px;max-width:480px;width:100%;box-shadow:0 20px 60px rgba(0,0,0,.2);transform:translateY(20px) scale(.96);transition:all .25s;max-height:85vh;display:flex;flex-direction:column;overflow:hidden}
.guide-box.show{transform:translateY(0) scale(1)}
.guide-head{display:flex;align-items:center;gap:10px;padding:16px 20px;background:linear-gradient(135deg,var(--ds-color-brand-deep),var(--ds-color-primary));color:#fff}
.guide-icon{font-size:22px}
.guide-title{font-size:16px;font-weight:600;flex:1}
.guide-close{font-size:24px;cursor:pointer;opacity:.8;line-height:1;padding:0 4px}
.guide-close:hover{opacity:1}
.guide-body{padding:20px;overflow-y:auto;font-size:14px;line-height:1.8;color:#374151}
.guide-body h4{color:var(--ds-color-brand-deep);margin:12px 0 6px;font-size:14px}
.guide-body ol,.guide-body ul{padding-left:20px;margin:8px 0}
.guide-body li{margin-bottom:6px}
.guide-body code{background:var(--ds-color-primary-soft);color:var(--ds-color-brand-deep);padding:2px 6px;border-radius:4px;font-size:12px}
.guide-body .tip{background:#fef3c7;color:#92400e;padding:10px 12px;border-radius:8px;margin-top:10px;font-size:13px}
.guide-foot{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-top:1px solid #f3f4f6;background:#f9fafb}
.guide-nomore{font-size:13px;color:#6b7280;cursor:pointer;display:flex;align-items:center;gap:6px}
.guide-btn{background:var(--ds-color-brand-deep);color:#fff;border:none;padding:8px 24px;border-radius:8px;font-size:14px;cursor:pointer;font-weight:500;transition:background .2s}
.guide-btn:hover{background:#1e3a8a}
@media(max-width:480px){.guide-box{max-width:100%}.guide-body{padding:16px}}

/* 广告位回退内容（无广告时显示推荐） */
.ad-fallback{background:#fff;border:1px solid #e8eef7;border-radius:12px;padding:14px 16px;margin:12px 0}
.ad-fallback-title{font-size:14px;font-weight:600;color:var(--ds-color-text);margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid var(--ds-color-border-soft);display:flex;align-items:center;gap:6px}
.ad-fallback ul{list-style:none;margin:0;padding:0}
.ad-fallback li{padding:7px 0;border-bottom:1px dashed #eef2f7;font-size:13.5px;display:flex;justify-content:space-between;align-items:center;gap:8px}
.ad-fallback li:last-child{border-bottom:none}
.ad-fallback li a{color:var(--ds-color-text-body);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.ad-fallback li a:hover{color:var(--ds-color-brand-deep)}
.ad-fallback li span{color:var(--ds-color-brand);font-weight:600;font-size:12px;white-space:nowrap}
.ad-fallback-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;padding-top:10px;border-top:1px solid var(--ds-color-border-soft)}
.ad-fallback-tags a{padding:4px 10px;background:var(--ds-color-primary-soft);color:var(--ds-color-brand-deep);border-radius:14px;font-size:12px;text-decoration:none}
.ad-fallback-tags a:hover{background:#dbeafe}
.ad-fallback-scroll{display:flex;gap:10px;overflow-x:auto;padding-bottom:4px;scrollbar-width:thin}
.ad-fallback-item{flex:0 0 auto;background:var(--ds-color-surface-alt);border:1px solid var(--ds-color-border-strong);border-radius:8px;padding:8px 14px;text-decoration:none;display:flex;flex-direction:column;align-items:center;gap:2px;min-width:90px}
.ad-fallback-item:hover{border-color:var(--ds-color-primary);background:var(--ds-color-primary-soft)}
.ad-fallback-domain{font-size:13px;font-weight:600;color:var(--ds-color-brand-deep)}
.ad-fallback-price{font-size:12px;color:var(--ds-color-brand);font-weight:600}
.ad-fallback-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}
.ad-fallback-card{background:var(--ds-color-surface-alt);border:1px solid var(--ds-color-border-strong);border-radius:8px;padding:10px;text-decoration:none;display:flex;flex-direction:column;align-items:center;gap:4px}
.ad-fallback-card:hover{border-color:var(--ds-color-primary);background:var(--ds-color-primary-soft)}
.ad-fallback-news li a{color:var(--ds-color-text-body)}
.ad-fallback-news li a:hover{color:var(--ds-color-brand-deep)}
@media(max-width:480px){.ad-fallback-grid{grid-template-columns:repeat(2,1fr)}}

/* 分享组件 v1.7.0 */
.share-box{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:12px 0}
.share-label{font-size:13px;color:var(--ds-color-text-muted)}
.share-items{display:flex;gap:8px}
.share-btn{width:34px;height:34px;border-radius:50%;background:var(--ds-color-border-soft);display:flex;align-items:center;justify-content:center;transition:all .2s;text-decoration:none}
.share-btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,.15)}
.share-wechat:hover{background:#dcfce7}
.share-weibo:hover{background:#fee2e2}
.share-qq:hover{background:#e0f2fe}
.share-qzone:hover{background:#fef9c3}
.share-copy:hover{background:#e0e7ff}
.share-wechat-modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:#fff;padding:20px;border-radius:12px;box-shadow:0 10px 40px rgba(0,0,0,.2);z-index:9999;text-align:center}
.share-wechat-modal p{font-size:13px;color:var(--ds-color-text-muted);margin-top:10px}

/* 第三方登录 */
.oauth-divider{text-align:center;margin:16px 0 12px;position:relative;}
.oauth-divider::before{content:'';position:absolute;top:50%;left:0;right:0;height:1px;background:#e5e7eb;}
.oauth-divider span{background:#fff;padding:0 12px;font-size:12px;color:#9ca3af;position:relative;}
.oauth-buttons{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;}
.oauth-btn{flex:1;min-width:110px;max-width:160px;padding:10px 14px;text-align:center;border-radius:8px;font-size:14px;font-weight:600;text-decoration:none;transition:all .2s;display:inline-flex;align-items:center;justify-content:center;gap:7px;color:#fff !important;}
.oauth-btn svg{width:20px;height:20px;flex-shrink:0;display:block;}
.oauth-btn svg path{fill:#fff;}
.oauth-btn svg path[fill="none"]{fill:none;}
.oauth-btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,.15);}
.oauth-qq{background:#12B7F5;}
.oauth-wx{background:#07C160;}
.oauth-alipay{background:#1677FF;}
.oauth-sina{background:#E6162D;}
.oauth-baidu{background:#2932E1;}
.oauth-xiaomi{background:#FF6900;}
.oauth-huawei{background:#CF0A2C;}
.oauth-douyin{background:#000000;}
.oauth-bilibili{background:#23ADE5;}
.oauth-google{background:#4285F4;}
.oauth-microsoft{background:#2B579A;}
.oauth-facebook{background:#1877F2;}
.oauth-twitter{background:#000000;}
.oauth-feishu{background:#3370FF;}
.oauth-wework{background:#2BAD31;}
.oauth-dingtalk{background:#3370FF;}
.oauth-gitee{background:#C71D23;}
.oauth-github{background:#24292F;}
.oauth-telegram{background:#0088CC;}

/* 导航下拉菜单 */
.nav-dropdown{position:relative;display:inline-block;padding-bottom:16px;margin-bottom:-16px;}
.nav-dropdown-toggle{cursor:pointer;}
.nav-dropdown-menu{display:none;position:absolute;top:calc(100% + 10px);left:0;background:#fff;border-radius:10px;box-shadow:0 8px 32px rgba(0,0,0,.12);padding:12px;min-width:200px;z-index:1000;}
.nav-dropdown:hover .nav-dropdown-menu{display:block;}
.nav-dropdown.open .nav-dropdown-menu{display:block;}
.nav-dropdown::after{content:'';position:absolute;left:0;right:0;top:100%;height:20px;}
.nav-dropdown-group{margin-bottom:10px;}
.nav-dropdown-group:last-child{margin-bottom:0;}
.nav-dropdown-title{font-size:11px;color:var(--ds-color-text-faint);font-weight:600;padding:4px 8px;margin-bottom:4px;text-transform:uppercase;letter-spacing:.5px;}
.nav-dropdown-menu a{display:block;padding:8px 10px;border-radius:6px;font-size:13px;color:var(--ds-color-text-body);text-decoration:none;}
.nav-dropdown-menu a:hover{background:var(--ds-color-border-soft);color:var(--ds-color-brand-deep);}
@media(max-width:768px){
  .nav-dropdown{padding-bottom:0;margin-bottom:0;}
  .nav-dropdown-menu{position:relative;top:auto;left:0;right:0;background:rgba(30,64,175,0.98);border-radius:0 0 12px 12px;box-shadow:0 8px 24px rgba(0,0,0,.2);padding:8px;min-width:0;display:none;}
  .nav-dropdown.open .nav-dropdown-menu{display:block !important;}
  .nav-dropdown-menu a{color:#fff;padding:10px 14px;font-size:14px;border-bottom:1px solid rgba(255,255,255,0.1);}
  .nav-dropdown-menu a:hover{background:rgba(255,255,255,0.15);color:#fff;}
  .nav-dropdown-menu a:last-child{border-bottom:none;}
  .nav-dropdown-title{display:none;}
  .nav-dropdown-group{margin-bottom:0;}
}

/* 算术验证码卡片 */
.captcha-card{
  display:flex;align-items:center;justify-content:space-between;
  min-width:110px;height:38px;padding:0 12px;
  background:linear-gradient(135deg,var(--ds-color-primary-soft),#dbeafe);
  border:1px solid var(--ds-color-primary-border);border-radius:8px;
  cursor:pointer;user-select:none;
  transition:all .2s;
}
.captcha-card:hover{background:linear-gradient(135deg,#dbeafe,var(--ds-color-primary-border));transform:translateY(-1px);}
.captcha-question{font-size:16px;font-weight:700;color:var(--ds-color-brand-deep);letter-spacing:1px;}
.captcha-refresh{font-size:14px;margin-left:8px;opacity:.6;}
.captcha-row{display:flex;gap:8px;align-items:center;}

/* 滑块拼图验证码 */
.slider-captcha{width:100%;max-width:320px;user-select:none;}
.slider-track{
  position:relative;width:100%;height:120px;
  background:linear-gradient(135deg,#667eea 0%,#764ba2 50%,#f093fb 100%);
  border-radius:10px;overflow:hidden;margin-bottom:8px;
}
.slider-gap{
  position:absolute;top:35px;width:40px;height:40px;
  background:rgba(0,0,0,.55);border-radius:6px;
  box-shadow:inset 0 0 8px rgba(0,0,0,.4);
}
.slider-gap::before{
  content:'';position:absolute;top:-8px;left:10px;width:20px;height:20px;
  background:rgba(0,0,0,.55);border-radius:50%;
}
.slider-piece{
  position:absolute;top:35px;width:40px;height:40px;z-index:2;
  transition:none;
}
.piece-shape{
  width:40px;height:40px;
  background:linear-gradient(135deg,#fbbf24,#f59e0b);
  border-radius:6px;box-shadow:0 2px 8px rgba(0,0,0,.3);
  position:relative;
}
.piece-shape::before{
  content:'';position:absolute;top:-8px;left:10px;width:20px;height:20px;
  background:linear-gradient(135deg,#fbbf24,#f59e0b);border-radius:50%;
}
.slider-fill{
  position:absolute;left:0;top:0;height:100%;width:40px;
  background:rgba(255,255,255,.15);pointer-events:none;
}
.slider-bar{
  position:relative;width:100%;height:40px;
  background:var(--ds-color-border-soft);border-radius:8px;
  border:1px solid var(--ds-color-border-strong);overflow:hidden;
  transition:background .3s;
}
.slider-tip{
  position:absolute;left:0;right:0;text-align:center;
  line-height:40px;font-size:13px;color:var(--ds-color-text-faint);
  pointer-events:none;
}
.slider-handle{
  position:absolute;left:0;top:0;width:40px;height:40px;
  background:linear-gradient(135deg,var(--ds-color-primary),var(--ds-color-brand-deep));
  color:#fff;font-size:18px;font-weight:bold;
  display:flex;align-items:center;justify-content:center;
  border-radius:8px;cursor:grab;z-index:3;
  box-shadow:0 2px 8px rgba(30,64,175,.4);
  transition:background .3s;
}
.slider-handle:active{cursor:grabbing;}
.slider-captcha.verified .slider-handle{background:linear-gradient(135deg,#22c55e,var(--ds-color-success));}

/* 商城页面 */
.mall-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;}
.mall-card{display:block;background:#fff;border-radius:12px;overflow:hidden;text-decoration:none;box-shadow:0 2px 8px rgba(0,0,0,.06);transition:all .25s;}
.mall-card:hover{transform:translateY(-4px);box-shadow:0 12px 28px rgba(0,0,0,.12);}
.mall-card-cover{height:140px;display:flex;align-items:center;justify-content:center;position:relative;}
.mall-cover-domain{background:linear-gradient(135deg,var(--ds-color-brand-deep),var(--ds-color-primary));}
.mall-cover-source{background:linear-gradient(135deg,#7c3aed,#a78bfa);}
.mall-cover-template{background:linear-gradient(135deg,#059669,#34d399);}
.mall-cover-plugin{background:linear-gradient(135deg,var(--ds-color-warning),#fbbf24);}
.mall-card-icon{font-size:48px;}
.mall-card-type{position:absolute;top:10px;left:10px;background:rgba(255,255,255,.92);padding:3px 10px;border-radius:12px;font-size:11px;color:var(--ds-color-text-body);font-weight:600;}
.mall-card-badge{position:absolute;top:10px;right:10px;padding:3px 10px;border-radius:12px;font-size:11px;color:#fff;font-weight:600;}
.mall-badge-seckill{background:var(--ds-color-brand);}
.mall-badge-featured{background:#f59e0b;}
.mall-card-body{padding:14px;}
.mall-card-title{font-size:15px;font-weight:600;color:var(--ds-color-text-strong);margin-bottom:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.mall-card-desc{font-size:12px;color:var(--ds-color-text-faint);margin-bottom:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.5;}
.mall-card-footer{display:flex;justify-content:space-between;align-items:center;}
.mall-card-price{font-size:20px;font-weight:800;color:var(--ds-color-brand);}
.mall-card-sales{font-size:12px;color:var(--ds-color-text-faint);}
.cat-tab{padding:6px 16px;border-radius:20px;background:var(--ds-color-border-soft);color:var(--ds-color-text-muted);font-size:13px;text-decoration:none;transition:all .2s;}
.cat-tab:hover{background:var(--ds-color-border-strong);}
.cat-tab.active{background:linear-gradient(135deg,var(--ds-color-brand-deep),var(--ds-color-primary));color:#fff;}
.pagination{display:flex;gap:6px;justify-content:center;flex-wrap:wrap;}
.page-btn{padding:8px 14px;border-radius:8px;background:var(--ds-color-border-soft);color:var(--ds-color-text-muted);text-decoration:none;font-size:13px;transition:all .2s;}
.page-btn:hover{background:var(--ds-color-border-strong);}
.page-btn.active{background:linear-gradient(135deg,var(--ds-color-brand-deep),var(--ds-color-primary));color:#fff;}

/* 新手引导弹窗 - 原元素隐藏，内容由JS提取到弹窗 */
.guide-modal { display: none !important; }
.guide-overlay { position: fixed; inset: 0; background: rgba(0,0,0,0.5); z-index: 9999; opacity: 0; transition: opacity 0.25s; display: flex; align-items: center; justify-content: center; padding: 20px; }
.guide-overlay.show { opacity: 1; }
.guide-box { background: #fff; border-radius: 16px; max-width: 480px; width: 100%; max-height: 80vh; overflow-y: auto; transform: translateY(20px) scale(0.95); transition: all 0.25s; box-shadow: 0 20px 60px rgba(0,0,0,0.3); }
.guide-box.show { transform: translateY(0) scale(1); }
.guide-head { display: flex; align-items: center; gap: 8px; padding: 16px 20px; border-bottom: 1px solid var(--ds-color-border-soft); }
.guide-icon { font-size: 20px; }
.guide-title { font-weight: 700; font-size: 16px; color: var(--ds-color-text-strong); flex: 1; }
.guide-close { font-size: 24px; color: var(--ds-color-text-faint); cursor: pointer; line-height: 1; }
.guide-body { padding: 20px; font-size: 14px; color: #475569; line-height: 1.8; }
.guide-body h4 { margin: 12px 0 6px; color: var(--ds-color-text-strong); font-size: 15px; }
.guide-body ul { padding-left: 20px; margin: 6px 0; }
.guide-body .tip { background: var(--ds-color-primary-soft); border-left: 3px solid var(--ds-color-primary); padding: 10px 14px; border-radius: 6px; margin-top: 12px; font-size: 13px; }
.guide-foot { display: flex; align-items: center; justify-content: space-between; padding: 14px 20px; border-top: 1px solid var(--ds-color-border-soft); }
.guide-nomore { font-size: 13px; color: var(--ds-color-text-muted); display: flex; align-items: center; gap: 6px; }
.guide-btn { background: linear-gradient(135deg,var(--ds-color-primary),#1d4ed8); color: #fff; border: none; padding: 8px 20px; border-radius: 8px; font-size: 14px; cursor: pointer; }


/* 顶部公告栏 */
.top-notice { text-align:center; padding:8px 16px; font-size:13px; line-height:1.5; }
.top-notice a:hover { opacity:0.85; }


/* 统一页脚 */
.footer-about { max-width:800px;margin:0 auto 16px;font-size:13px;color:var(--ds-color-text-faint);line-height:1.8;text-align:center; }
.footer-seo { max-width:900px;margin:0 auto 14px;font-size:13px;color:var(--ds-color-text-faint);line-height:1.8;text-align:center; }
.footer-nav { margin-bottom:12px;font-size:13px; }
.footer-nav a { color:var(--ds-color-text-faint);text-decoration:none;margin:0 8px; }
.footer-nav a:hover { color:var(--ds-color-primary); }
.footer-links { margin-bottom:12px;font-size:12px; }
.footer-links a { color:var(--ds-color-text-muted);text-decoration:none;margin:0 4px; }
.footer-links a:hover { color:var(--ds-color-primary); }
.footer-copy { font-size:13px;color:var(--ds-color-text-faint);margin-bottom:6px; }
.footer-icp { font-size:12px; }
.footer-icp a { color:var(--ds-color-text-faint);text-decoration:none; }
.footer-icp a:hover { color:var(--ds-color-primary); }


/* v2.1.0 商城分类三级导航 */
.cat-tab-sm{padding:4px 10px;font-size:12px;border-radius:14px;}


/* ============================================================
   域名详情页 4.0（views/domain/detail.php）视觉升级 —— 作用域化到 .dview
   令牌化、深蓝 Hero、卡片化 —— 与 parked 4.0 统一设计语言
   仅作用于详情页内容（<div class="dview"> 包裹），零污染其他共用 .panel/.domain-card/.news-* 页面
   ============================================================ */
/* 作用域锚点：仅作为样式容器，不附加布局 */
.dview { /* scope anchor */ }

/* 深蓝 Hero（桌面） */
.dview .detail-hero {
  background: linear-gradient(135deg, var(--ds-color-primary) 0%, #1e3a8a 100%);
  color: #fff;
  border-radius: var(--ds-radius-xl);
  padding: 40px 32px;
  margin-bottom: var(--ds-space-5);
  position: relative;
  overflow: hidden;
  box-shadow: var(--ds-shadow-lg);
}
.dview .detail-hero::before, .dview .detail-hero::after {
  content: ''; position: absolute; border-radius: 50%;
  background: radial-gradient(circle, rgba(255,255,255,.14), rgba(255,255,255,0) 70%);
}
.dview .detail-hero::before { top: -70px; right: -50px; width: 220px; height: 220px; }
.dview .detail-hero::after  { bottom: -80px; left: -40px; width: 180px; height: 180px; }
.dview .detail-domain { color: #fff; position: relative; word-break: break-all; }
.dview .detail-price  { color: var(--ds-color-warning-border); position: relative; }
.dview .detail-price span { color: rgba(255,255,255,.78) !important; font-weight: 400; }
.dview .detail-btns, .dview .detail-actions { position: relative; }

/* Hero 内 CTA 按钮（白底蓝字，呼应 parked 4.0） */
.dview .detail-hero .detail-btn-primary {
  background: #fff; color: var(--ds-color-primary); font-weight: 700;
  box-shadow: 0 8px 20px rgba(0,0,0,.18);
}
.dview .detail-hero .detail-btn-primary:hover { background: var(--ds-color-border-soft); transform: translateY(-2px); }
.dview .detail-hero .detail-btn-guard {
  background: rgba(255,255,255,.12); color: #fff; border: 1.5px solid rgba(255,255,255,.5);
}
.dview .detail-hero .detail-btn-guard:hover { background: rgba(255,255,255,.24); border-color: #fff; }

/* 操作胶囊（收藏/想要/分享）深色 Hero 上转半透明白 */
.dview .act-btn { background: rgba(255,255,255,.12); border: 1.5px solid rgba(255,255,255,.35); color: #fff; }
.dview .act-btn .ic, .dview .act-btn .tx { color: #fff; }
.dview .act-btn .cnt { color: rgba(255,255,255,.7); }
.dview .act-btn:hover { border-color: #fff; background: rgba(255,255,255,.22); }
.dview .act-btn.act-on { background: var(--ds-color-warning-soft); border-color: #f59e0b; color: var(--ds-color-warning); }
.dview .act-btn.act-on .ic, .dview .act-btn.act-on .tx, .dview .act-btn.act-on .cnt { color: var(--ds-color-warning); }
.dview .act-btn.act-on.want { background: var(--ds-color-danger-soft); border-color: var(--ds-color-brand); color: var(--ds-color-brand); }
.dview .act-btn.act-on.want .ic, .dview .act-btn.act-on.want .tx, .dview .act-btn.act-on.want .cnt { color: var(--ds-color-brand); }

/* 数据小卡片（浏览/分类/收藏…）令牌化 */
.dview .info-box {
  background: var(--ds-color-surface);
  border: 1px solid var(--ds-color-border);
  border-radius: var(--ds-radius-md);
  box-shadow: var(--ds-shadow-xs);
}

/* AI 解读区块：紫调软卡片 */
.dview .ai-section {
  background: var(--ds-color-purple-soft);
  border: 1px solid var(--ds-color-purple);
  border-left: 4px solid var(--ds-color-purple);
  border-radius: var(--ds-radius-md);
  padding: 16px;
  margin-bottom: var(--ds-space-5);
}
.dview .ai-title { color: var(--ds-color-purple); }
.dview .ai-item { color: #5b21b6; }
.dview .ai-item strong { color: #6d28d9; }

/* 相关域名卡片令牌化（仅详情页，避免覆盖其他 14 个 .domain-card 页面） */
.dview .domain-card {
  background: var(--ds-color-surface);
  border: 1px solid var(--ds-color-border);
  border-radius: var(--ds-radius-md);
}

/* 4.0 辅助类（清理 detail.php 内联样式用） */
.dview .detail-crumb { font-size: 12px; color: var(--ds-color-text-faint); margin: 16px 0; }
.dview .detail-crumb a { color: var(--ds-color-text-body); text-decoration: none; }
.dview .detail-crumb a:hover { color: var(--ds-color-primary); }
.dview .ai-pill {
  font-size: 10px; background: linear-gradient(135deg, #8b5cf6, #6366f1); color: #fff;
  padding: 2px 6px; border-radius: var(--ds-radius-sm); font-weight: 600; margin-left: 6px;
  vertical-align: middle;
}
.dview .alert-price-box {
  margin-top: 12px; display: flex; gap: 8px; align-items: center; flex-wrap: wrap;
  background: #f0f9ff; padding: 10px 12px; border-radius: var(--ds-radius-md);
  font-size: 13px; color: var(--ds-color-brand-deep);
}
.dview .alert-price-input { width: 130px; padding: 6px 10px; font-size: 13px; }
.dview .alert-price-hint { color: var(--ds-color-text-muted); font-size: 12px; }

/* 窄屏：Hero 缩放、CTA 堆叠 */
@media (max-width: 640px) {
  .dview .detail-hero { padding: 32px 18px; }
  .dview .detail-price { font-size: 24px; }
  .dview .detail-btns { flex-direction: column; }
  .dview .detail-hero .detail-btn-primary, .dview .detail-hero .detail-btn-guard { width: 100%; justify-content: center; }
}

/* ══════════════════════════════════════════════════════════════
   页脚 v2：左品牌 + 中导航/帮助 + 右客服与微信群QQ群二维码
   全站所有前台页面统一（layout/footer.php）
   ══════════════════════════════════════════════════════════════ */
.footer-v2 { padding: 40px 0 0; text-align: left; }
/* v2.8.4 修复：原来硬编码 4 条轨道（1.5fr 1fr 1.15fr 1.35fr）。
   但「在线客服」列仅在后台配置了 QQ/微信/电话/二维码时才渲染（footer.php 的 $__fHasContact），
   未配置时只剩 3 列内容 + 1 条空轨道：右侧留下大片死区，
   同时把「快速导航/帮助支持」挤到 216~248px 窄列，长链接（域名展示/新闻资讯）几乎占满整列，
   视觉上就是「页脚导航变形、竖起来了」。
   改为 auto-fit + minmax：列数随实际内容自适应，列宽有 150px 下限，
   既不会挤成竖条，也不会在只有 3 列时右侧空一块。 */
.footer-v2 .footer-wrap { max-width: 1200px; margin: 0 auto; padding: 0 16px 22px; display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 30px; }
/* 品牌列给更大权重（原 1.5fr）：有客服列时品牌占 1.5 份，无客服列时占 2 份撑满 */
.footer-v2 .footer-brand { grid-column: span 1; min-width: 0; }
.footer-v2 .footer-col { min-width: 0; }
@media (min-width: 981px) {
  .footer-v2 .footer-wrap:has(.footer-contact) { grid-template-columns: 1.5fr 1fr 1.15fr 1.35fr; }
  .footer-v2 .footer-wrap:has(.footer-contact) .footer-brand { grid-column: auto; }
  .footer-v2 .footer-wrap:not(:has(.footer-contact)) { grid-template-columns: 1.6fr 1fr 1fr; }
}
.footer-v2 .footer-logo { margin-bottom: 14px; }
.footer-v2 .footer-logo .site-logo-img { display: block; width: auto; max-height: 40px; object-fit: contain; }
.footer-v2 .footer-logo .site-logo-default { display: inline-flex; align-items: center; gap: 10px; }
.footer-v2 .footer-logo .site-logo-default .site-logo-mark { display: block; width: auto; border-radius: 8px; }
.footer-v2 .footer-logo .logo-text { font-size: 19px; font-weight: 800; color: #fff; }
.footer-v2 .footer-desc { font-size: 13px; line-height: 1.85; color: var(--ds-color-text-faint); margin: 0 0 10px; }
.footer-v2 .footer-slogan { font-size: 13px; line-height: 1.85; color: #93c5fd; margin: 0; padding-left: 10px; border-left: 3px solid var(--ds-color-primary); }
.footer-v2 h4 { font-size: 14px; color: #e2e8f0; margin: 0 0 14px; font-weight: 700; }
/* v2.8.4 修复：页脚导航统一为 flex 竖排流式列表。
   li 显式 display:block、行高收紧到 1.9，
   避免长链接文字在窄列里折行后行距过大、看上去「挤成一竖条」。 */
.footer-v2 .footer-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; }
.footer-v2 .footer-list li { display: block; font-size: 13px; line-height: 1.9; color: var(--ds-color-text-faint); }
.footer-v2 .footer-list a { color: var(--ds-color-text-faint); text-decoration: none; display: inline-block; transition: color .15s ease; }
.footer-v2 .footer-list a:hover { color: #fff; }
.footer-v2 .footer-hours { color: #94a3b8; }
/* v2.8.4 修复：客服信息行较长（QQ号/微信号/电话），允许在列内折行，避免撑破 1.35fr 列 */
.footer-v2 .footer-contact-list { word-break: break-word; overflow-wrap: anywhere; }
.footer-v2 .footer-contact-list span { word-break: break-all; }
.footer-v2 .footer-friend { margin-top: 14px; font-size: 12px; line-height: 2; }
.footer-v2 .footer-friend-label { color: #e2e8f0; font-weight: 600; margin-right: 4px; }
.footer-v2 .footer-friend a { color: var(--ds-color-text-faint); text-decoration: none; margin-right: 6px; }
.footer-v2 .footer-friend a:hover { color: #fff; }
.footer-v2 .footer-qr { display: flex; gap: 14px; margin-top: 14px; flex-wrap: wrap; }
.footer-v2 .footer-qr-item { margin: 0; text-align: center; }
/* v2.8.2：二维码尺寸后台可配（--qr 变量），默认 110px，悬停轻微放大 */
.footer-v2 .footer-qr-item img { width: var(--qr, 110px); height: var(--qr, 110px); object-fit: contain; background: #fff; border-radius: 10px; padding: 5px; display: block; box-sizing: border-box; transition: transform .18s ease; }
.footer-v2 .footer-qr-item:hover img { transform: scale(1.04); }
.footer-v2 .footer-qr-item figcaption { font-size: 11px; color: var(--ds-color-text-faint); margin-top: 6px; line-height: 1.5; }
/* v2.8.4 修复：SEO 文案原来 max-width:1200px，在 1440 视口下几乎占满整宽，
   长文案折行后末行只剩几个字（如「里高效完成。」）孤悬一行，很不好看。
   收紧到 860px 并加 text-wrap:balance，让两行长度接近、居中对齐。 */
.footer-v2 .footer-seo { max-width: 860px; margin: 0 auto; padding: 0 16px 14px; font-size: 12px; color: #64748b; line-height: 1.85; text-align: center; text-wrap: balance; }
/* v2.8.4 修复：底部版权行上下留白过大，收紧后与内容更贴近 */
.footer-v2 .footer-bottom { border-top: 1px solid rgba(255,255,255,.08); padding: 14px 16px; text-align: center; }
.footer-v2 .footer-copy { font-size: 13px; color: var(--ds-color-text-faint); margin-bottom: 4px; }
.footer-v2 .footer-icp { font-size: 12px; }
.footer-v2 .footer-icp a { color: var(--ds-color-text-faint); text-decoration: none; }
.footer-v2 .footer-icp a:hover { color: var(--ds-color-primary); }
@media (max-width: 980px) {
  /* 平板：两列，品牌列跨满，导航/帮助/客服两两并排 */
  .footer-v2 .footer-wrap { grid-template-columns: 1fr 1fr; gap: 26px; }
  .footer-v2 .footer-brand { grid-column: 1 / -1; }
}
@media (max-width: 560px) {
  .footer-v2 { padding-top: 28px; }
  .footer-v2 .footer-wrap { grid-template-columns: 1fr; gap: 22px; }
  .footer-v2 .footer-brand { grid-column: auto; }
  .footer-v2 .footer-qr-item img { width: 84px; height: 84px; }
}
