/* ============================================================
   inline-fix.css — 内联修复样式表
   将所有HTML模板中的内联style="..."提取为CSS类
   ============================================================ */

/* ── 0. 通用工具类（flex/spacing/text/size 扩充） ── */
.flex { display:flex; }
.inline-flex { display:inline-flex; }
.flex-col { flex-direction:column; }
.flex-wrap { flex-wrap:wrap; }
.items-center { align-items:center; }
.items-start { align-items:flex-start; }
.items-end { align-items:flex-end; }
.items-baseline { align-items:baseline; }
.justify-between { justify-content:space-between; }
.justify-center { justify-content:center; }
.justify-start { justify-content:flex-start; }
.justify-end { justify-content:flex-end; }
.gap-4 { gap:4px; }
.gap-6 { gap:6px; }
.gap-8 { gap:8px; }
.gap-10 { gap:10px; }
.gap-12 { gap:12px; }
.gap-14 { gap:14px; }
.gap-16 { gap:16px; }
.gap-20 { gap:20px; }
.gap-24 { gap:24px; }
.flex-shrink-0 { flex-shrink:0; }
.flex-1 { flex:1; }
.w-full { width:100%; }
.w-28 { width:28px; }
.w-36 { width:36px; }
.w-38 { width:38px; }
.w-44 { width:44px; }
.w-48 { width:48px; }
.h-full { height:100%; }
.h-28 { height:28px; }
.h-36 { height:36px; }
.h-38 { height:38px; }
.h-44 { height:44px; }
.h-48 { height:48px; }
.text-xs { font-size:10px; }
.text-sm { font-size:12px; }
.text-base { font-size:14px; }
.text-lg { font-size:16px; }
.text-xl { font-size:18px; }
.text-2xl { font-size:20px; }
.text-3xl { font-size:22px; }
.text-4xl { font-size:24px; }
.text-5xl { font-size:28px; }
.text-11 { font-size:11px; }
.text-13 { font-size:13px; }
.fs-12 { font-size:12px; }
.fs-13 { font-size:13px; }
.fs-14 { font-size:14px; }
.fs-15 { font-size:15px; }
.fs-16 { font-size:16px; }
.fs-18 { font-size:18px; }
.fs-20 { font-size:20px; }
.fs-italic { font-style:italic; }
.fw-400 { font-weight:400; }
.fw-500 { font-weight:500; }
.fw-600 { font-weight:600; }
.fw-700 { font-weight:700; }
.fw-800 { font-weight:800; }
.m-0 { margin:0; }
.mt-0 { margin-top:0; }
.mt-2 { margin-top:2px; }
.mt-4 { margin-top:4px; }
.mt-6 { margin-top:6px; }
.mt-8 { margin-top:8px; }
.mt-10 { margin-top:10px; }
.mt-12 { margin-top:12px; }
.mt-16 { margin-top:16px; }
.mt-20 { margin-top:20px; }
.mt-24 { margin-top:24px; }
.mb-0 { margin-bottom:0; }
.mb-2 { margin-bottom:2px; }
.mb-4 { margin-bottom:4px; }
.mb-6 { margin-bottom:6px; }
.mb-8 { margin-bottom:8px; }
.mb-10 { margin-bottom:10px; }
.mb-12 { margin-bottom:12px; }
.mb-14 { margin-bottom:14px; }
.mb-16 { margin-bottom:16px; }
.mb-18 { margin-bottom:18px; }
.mb-20 { margin-bottom:20px; }
.mb-24 { margin-bottom:24px; }
.ml-4 { margin-left:4px; }
.ml-6 { margin-left:6px; }
.ml-8 { margin-left:8px; }
.ml-10 { margin-left:10px; }
.ml-12 { margin-left:12px; }
.ml-16 { margin-left:16px; }
.ml-auto { margin-left:auto; }
.mr-4 { margin-right:4px; }
.mr-6 { margin-right:6px; }
.mr-8 { margin-right:8px; }
.mr-10 { margin-right:10px; }
.mr-12 { margin-right:12px; }
.mr-16 { margin-right:16px; }
.mr-auto { margin-right:auto; }
.p-0 { padding:0; }
.p-4 { padding:4px; }
.p-6 { padding:6px; }
.p-8 { padding:8px; }
.p-10 { padding:10px; }
.p-12 { padding:12px; }
.p-14 { padding:14px; }
.p-16 { padding:16px; }
.p-18 { padding:18px; }
.p-20 { padding:20px; }
.p-24 { padding:24px; }
.p-28 { padding:28px; }
.px-8 { padding-left:8px; padding-right:8px; }
.px-12 { padding-left:12px; padding-right:12px; }
.px-16 { padding-left:16px; padding-right:16px; }
.px-20 { padding-left:20px; padding-right:20px; }
.py-4 { padding-top:4px; padding-bottom:4px; }
.py-6 { padding-top:6px; padding-bottom:6px; }
.py-8 { padding-top:8px; padding-bottom:8px; }
.py-10 { padding-top:10px; padding-bottom:10px; }
.py-12 { padding-top:12px; padding-bottom:12px; }
.py-16 { padding-top:16px; padding-bottom:16px; }
.rounded-4 { border-radius:4px; }
.rounded-6 { border-radius:6px; }
.rounded-8 { border-radius:8px; }
.rounded-10 { border-radius:10px; }
.rounded-12 { border-radius:12px; }
.rounded-14 { border-radius:14px; }
.rounded-16 { border-radius:16px; }
.rounded-full { border-radius:50%; }
.bg-white { background:#fff; }
.bg-transparent { background:transparent; }
.bg-gray-50 { background:#f9fafb; }
.bg-gray-100 { background:#f3f4f6; }
.bg-green-50 { background:#ecfdf5; }
.bg-green-100 { background:#dcfce7; }
.bg-red-50 { background:#fef2f2; }
.bg-blue-50 { background:#eff6ff; }
.bg-yellow-50 { background:#fffbeb; }
.bg-purple-50 { background:#f5f3ff; }
.c-white { color:#fff; }
.c-gray-400 { color:#94a3b8; }
.c-gray-500 { color:#64748b; }
.c-gray-600 { color:#475569; }
.c-gray-700 { color:#374151; }
.c-gray-900 { color:#1e293b; }
.c-blue-500 { color:#3b82f6; }
.c-blue-600 { color:#2563eb; }
.c-green-500 { color:#22c55e; }
.c-green-600 { color:#059669; }
.c-red-500 { color:#ef4444; }
.c-orange-500 { color:#f59e0b; }
.c-indigo-500 { color:#6366f1; }
.c-purple-500 { color:#8b5cf6; }
.c-10b981 { color:#10b981; }
.c-16a34a { color:#16a34a; }
.c-d1d5db { color:#d1d5db; }
.c-cbd5e1 { color:#cbd5e1; }
.text-center { text-align:center; }
.text-left { text-align:left; }
.text-right { text-align:right; }
.no-underline { text-decoration:none; }
.ws-nowrap { white-space:nowrap; }
.cursor-pointer { cursor:pointer; }
.block { display:block; }
.inline-block { display:inline-block; }
.hidden { display:none; }
.relative { position:relative; }
.absolute { position:absolute; }
.overflow-hidden { overflow:hidden; }
.overflow-auto { overflow:auto; }
.transition { transition:all 0.2s ease; }
.opacity-20 { opacity:0.2; }
.opacity-50 { opacity:0.5; }
.opacity-85 { opacity:0.85; }
.opacity-90 { opacity:0.9; }
.tracking-1 { letter-spacing:1px; }
.fs-32 { font-size:32px; }
.fs-48 { font-size:48px; }
.fs-56 { font-size:56px; }
.mt-32 { margin-top:32px; }
.mt-40 { margin-top:40px; }
.mx-8 { margin-left:8px; margin-right:8px; }
.mx-16 { margin-left:16px; margin-right:16px; }
.py-20 { padding-top:20px; padding-bottom:20px; }
.p-60-20 { padding:60px 20px; }
.contents { display:contents; }
.mr-3 { margin-right:3px; }
.text-gray-500 { color:#6b7280; }
.text-danger-85 { color:rgba(255,120,120,0.85); }
.c-9ca3af { color:#9ca3af; }
.c-92400e { color:#92400e; }
.fs-15 { font-size:15px; }
.fs-22 { font-size:22px; }
.cursor-not-allowed { cursor:not-allowed; }
.inline-form { display:inline; }
.object-fit-cover { width:100%; height:100%; object-fit:cover; }
.search-input-naked { flex:1; min-width:140px; border:none; outline:none; font-size:14px; background:none; padding:0; }
.pagination-bar { padding:16px 0; display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:10px; margin-top:16px; }
.per-page-select { padding:6px 10px; border:1px solid #e2e8f0; border-radius:10px; font-size:12px; background:#fff; color:#374151; }
.pagination-ellipsis { padding:7px 8px; font-size:13px; color:#94a3b8; }
.page-btn-disabled { color:#cbd5e1; background:#f9fafb; cursor:not-allowed; }
.flex-col-gap12 { display:flex; flex-direction:column; gap:12px; }
.my-listings-btn { margin-left:auto; font-size:12px; color:#16a34a; text-decoration:none; padding:4px 10px; border:1px solid #bbf7d0; border-radius:6px; display:inline-flex; align-items:center; gap:4px; background:#f0fdf4; }
.view-all-link { font-size:12px; color:#6b7280; text-decoration:none; padding:4px 10px; border:1px solid #e5e7eb; border-radius:6px; display:inline-flex; align-items:center; gap:4px; }
.export-btn { margin-left:auto; font-size:12px; color:#16a34a; text-decoration:none; padding:4px 10px; border:1px solid #bbf7d0; border-radius:6px; display:inline-flex; align-items:center; gap:4px; background:#f0fdf4; cursor:pointer; }
.b-1-e5e7eb { border:1px solid #e5e7eb; }
.px-10 { padding-left:10px; padding-right:10px; }
.price-input { width:70px; border:none; outline:none; font-size:13px; background:none; }
.grid-full { grid-column:1/-1; }

/* ── 1. 基础工具类 ── */
.link-blue { color:#3b82f6; text-decoration:none; font-size:14px; }
.text-meta { font-size:12px; color:#9ca3af; }
.text-meta-sm { font-size:12px; color:#6b7280; }
.text-center { text-align:center; }
.fw-600 { font-weight:600; }
.flex-1 { flex:1; }
.ml-8 { margin-left:8px; }
.ml-auto { margin-left:auto; }
.mt-6 { margin-top:6px; }
.mb-20 { margin-bottom:20px; }
.mb-24 { margin-bottom:24px; }
.opacity-30 { opacity:0.3; }
.overflow-x-auto { overflow-x:auto; }
.panel-hidden { display:none; }
.c-6b7280 { color:#6b7280; }
.c-374151 { color:#374151; }
.c-991b1b { color:#991b1b; }
.c-red-500 { color:#ef4444; }
.c-gray-700 { color:#374151; }
.c-orange-500 { color:#f59e0b; }
.c-475569 { color:#475569; }
.c-gray-400 { color:#94a3b8; }
.text-13 { font-size:13px; }
.fs-14 { font-size:14px; }
.fs-16 { font-size:16px; }
.fs-36 { font-size:36px; }
.price-red { color:#ef4444; }
.price-red-fs16 { color:#ef4444; font-size:16px; }
.code-mono { font-family:monospace; font-weight:600; }

/* ── 2. 徽章 ── */
.badge-tag { display:inline-flex; align-items:center; padding:2px 8px; border-radius:10px; font-size:11px; font-weight:600; }
.badge-invalid { background:#fee2e2; color:#dc2626; }
.notif-badge { background:#ef4444; color:#fff; border-radius:10px; padding:1px 6px; font-size:11px; margin-left:4px; }
.notif-badge-blue { background:#3b82f6; color:#fff; border-radius:10px; padding:1px 6px; font-size:11px; margin-left:4px; }
.status-tag-sm { background:#d1fae5; color:#065f46; padding:2px 8px; border-radius:12px; font-size:12px; }
.status-tag-sm-gray { background:#f3f4f6; color:#6b7280; padding:2px 8px; border-radius:12px; font-size:12px; }

/* ── 3. 图标颜色 ── */
.icon-blue { color:#2563eb; }
.icon-truck { color:#3b82f6; }
.icon-green { color:#10b981; }
.icon-crown { color:#f59e0b; margin-right:8px; }
.icon-leaf-green { color:#16a34a; margin-right:8px; }

/* ── 4. 表单控件 ── */
.input-base { width:100%; padding:8px 10px; border:1px solid #d1d5db; border-radius:6px; font-size:14px; box-sizing:border-box; }
.input-lg { width:100%; padding:9px 12px; border:1px solid #d1d5db; border-radius:6px; font-size:14px; box-sizing:border-box; }
.textarea-base { width:100%; padding:8px 10px; border:1px solid #d1d5db; border-radius:6px; font-size:14px; box-sizing:border-box; resize:vertical; }
.field-label { font-size:13px; color:#374151; font-weight:600; display:block; margin-bottom:0.5rem; }
.form-field { margin-bottom:16px; }

/* ── 5. 按钮 ── */
.btn-text { background:none; border:none; color:#9ca3af; cursor:pointer; font-size:12px; }
.btn-cancel { padding:9px 20px; background:#f3f4f6; color:#374151; border:none; border-radius:6px; cursor:pointer; font-size:14px; }
.btn-green { padding:9px 20px; background:#10b981; color:#fff; border:none; border-radius:6px; cursor:pointer; font-size:14px; font-weight:600; }
.btn-indigo { padding:9px 20px; background:#6366f1; color:#fff; border:none; border-radius:6px; cursor:pointer; font-size:14px; font-weight:600; }
.btn-blue { padding:9px 22px; background:#3b82f6; color:#fff; border:none; border-radius:8px; cursor:pointer; font-size:14px; font-weight:600; }
.btn-ghost { padding:10px 22px; background:rgba(255,255,255,0.2); color:#fff; border:1px solid rgba(255,255,255,0.4); border-radius:8px; cursor:pointer; font-size:14px; font-weight:600; white-space:nowrap; }
.btn-shop { padding:12px 28px; background:#16a34a; color:#fff; border-radius:10px; text-decoration:none; font-size:14px; font-weight:600; }
.btn-publish-orange { padding:8px 16px; background:#f59e0b; color:#fff; border:none; border-radius:6px; cursor:pointer; font-size:14px; }
.btn-submit-orange { padding:8px 20px; background:#f59e0b; color:#fff; border:none; border-radius:6px; cursor:pointer; }
.btn-end-sm { padding:4px 10px; background:#f3f4f6; color:#6b7280; border:none; border-radius:4px; cursor:pointer; font-size:12px; }

/* ── 6. 空状态 ── */
.empty-state-box { text-align:center; padding:80px 20px; color:#9ca3af; }
.empty-state-icon-lg { font-size:48px; margin-bottom:16px; display:block; }
.empty-title { margin:0 0 8px; color:#6b7280; }
.empty-desc { font-size:14px; margin:0 0 24px; color:#6b7280; }

/* ── 7. 导航 ── */
.back-link-row { display:flex; gap:8px; margin-bottom:20px; }

/* ── 8. 卡片 ── */
.card-white-sm { background:#fff; border-radius:10px; box-shadow:0 2px 8px rgba(0,0,0,0.06); padding:20px; }
.card-bordered { background:#fff; border-radius:16px; padding:1.5rem; box-shadow:0 2px 8px rgba(0,0,0,0.08); margin-bottom:1.5rem; }
.stats-section { background:#fff; border-radius:10px; box-shadow:0 2px 8px rgba(0,0,0,0.06); padding:20px; }

/* ── 9. 统计卡片 ── */
.stats-3-grid { display:grid; grid-template-columns:1fr 1fr 1fr; gap:16px; margin-bottom:24px; }
.stat-number-lg { font-size:32px; font-weight:700; }
.stat-number-green { color:#16a34a; }
.stat-number-blue { color:#3b82f6; }
.stat-number-teal { color:#10b981; }
.stat-label { font-size:13px; color:#6b7280; margin-bottom:8px; }
.stats-subtitle { font-weight:600; color:#1f2937; margin-bottom:16px; }

/* ── 10. 图表 ── */
.chart-container-sm { height:300px; }
.grid-2-col-gap20 { display:grid; grid-template-columns:1fr 1fr; gap:20px; margin-bottom:20px; }

/* ── 11. 排名表格 ── */
.rank-badge { background:linear-gradient(135deg,#f59e0b,#d97706); color:#fff; border-radius:50%; width:24px; height:24px; display:inline-flex; align-items:center; justify-content:center; font-size:11px; font-weight:700; }
.rank-table { width:100%; font-size:13px; border-collapse:collapse; }
.rank-thead { background:#f9fafb; }
.rank-th { text-align:left; padding:10px; border-bottom:1px solid #f3f4f6; }
.rank-th-right { text-align:right; padding:10px; border-bottom:1px solid #f3f4f6; }
.rank-tr { border-bottom:1px solid #f9fafb; }
.rank-td { padding:10px; }
.rank-td-right { padding:10px; text-align:right; font-weight:600; }
.rank-td-green { color:#16a34a; }
.rank-td-blue { color:#3b82f6; }
.rank-td-amount { padding:10px; text-align:right; color:#6b7280; }
.rank-td-empty { padding:20px; text-align:center; color:#9ca3af; }

/* ── 12. 统计导航 ── */
.stats-top-nav { display:flex; gap:8px; margin-bottom:20px; justify-content:space-between; align-items:center; }
@media (max-width: 768px) { .stats-top-nav { flex-direction:column; align-items:flex-start; gap:10px; } }

/* ── 13. 数据表格 ── */
.data-table { width:100%; border-collapse:collapse; font-size:14px; }
.th-row { background:#f9fafb; }
.th-cell { padding:12px 16px; text-align:left; color:#374151; font-weight:600; }
.td-cell { padding:12px 16px; }
.td-empty { padding:40px; text-align:center; color:#9ca3af; }
.tbody-tr { border-top:1px solid #f3f4f6; }

/* ── 14. 分页 ── */
.pagination-flex { display:flex; justify-content:center; gap:6px; margin-top:20px; }
.page-link { padding:6px 14px; border:1px solid #d1d5db; border-radius:5px; color:#374151; text-decoration:none; }
.page-current { padding:6px 14px; background:#f59e0b; color:#fff; border-radius:5px; }

/* ── 15. 求购信息 ── */
.form-card-wanted { display:none; background:#fffbeb; border:1px solid #fde68a; border-radius:10px; padding:20px; margin-bottom:24px; }
.wanted-title { font-weight:600; color:#1f2937; }
.wanted-note { font-size:13px; color:#6b7280; margin-top:4px; }
.negotiate-text { font-size:16px; color:#9ca3af; }

/* ── 16. 购物车 ── */
.cart-layout { display:grid; grid-template-columns:1fr 300px; gap:24px; align-items:start; }
.cart-item-card { display:flex; align-items:center; gap:16px; background:#fff; border-radius:12px; box-shadow:0 2px 6px rgba(0,0,0,0.05); padding:16px 18px; margin-bottom:10px; }
.cart-img { width:80px; height:80px; border-radius:8px; overflow:hidden; background:#f3f4f6; flex-shrink:0; text-decoration:none; }
.cart-img img { width:100%; height:100%; object-fit:cover; }
.cart-img-empty { width:100%; height:100%; display:flex; align-items:center; justify-content:center; color:#d1d5db; font-size:24px; }
.cart-info { flex:1; min-width:0; }
.cart-name { font-weight:600; font-size:15px; color:#1f2937; margin-bottom:4px; display:flex; align-items:center; gap:8px; }
.cart-meta { display:flex; gap:16px; font-size:12px; color:#6b7280; }
.cart-price { font-size:18px; font-weight:700; color:#ef4444; margin-top:4px; }
.price-symbol { font-size:14px; }
.cart-remove-btn { padding:6px 12px; background:#fef2f2; color:#dc2626; border:1px solid #fecaca; border-radius:6px; cursor:pointer; font-size:12px; }
.cart-type-tag { font-size:11px; padding:2px 8px; border-radius:10px; color:#fff; font-weight:600; }
.type-tag-strain { background:#7c3aed; }
.type-tag-default { background:#0e7490; }
.type-tag-inline { font-size:11px; padding:2px 8px; border-radius:10px; color:#fff; font-weight:600; }
.section-header { font-size:15px; font-weight:700; color:#1f2937; margin-bottom:16px; }
.text-count { font-size:13px; font-weight:400; color:#6b7280; margin-left:6px; }
.invalid-section { margin-top:24px; padding:16px; background:#fef2f2; border-radius:10px; }
.section-gap-xs { margin-top:12px; }
.invalid-item { display:flex; align-items:center; gap:8px; padding:8px 0; border-bottom:1px solid #fee2e2; }
.invalid-item-text { font-size:14px; color:#9ca3af; flex:1; }

/* ── 17. 结算侧边栏 ── */
.cart-summary-box { background:#fff; border-radius:14px; box-shadow:0 2px 12px rgba(0,0,0,0.08); padding:24px; position:sticky; top:20px; }
.summary-row { display:flex; justify-content:space-between; align-items:center; margin-bottom:12px; font-size:14px; color:#374151; }
.summary-row-total { font-size:16px; font-weight:700; border-top:1px solid #f3f4f6; padding-top:14px; margin-top:14px; }
.summary-title { font-size:16px; color:#1f2937; margin:0 0 20px; font-weight:700; }
.balance-green { color:#10b981; font-weight:700; font-size:16px; }
.budget-number { font-size:22px; font-weight:700; color:#ef4444; }
.balance-warn { background:#fef2f2; border:1px solid #fecaca; border-radius:8px; padding:10px 14px; font-size:13px; color:#dc2626; margin-bottom:14px; }
.checkout-btn { width:100%; padding:14px; background:linear-gradient(135deg,#16a34a,#15803d); color:#fff; border:none; border-radius:10px; font-size:16px; font-weight:700; cursor:pointer; }
.checkout-btn:disabled { background:#9ca3af; cursor:not-allowed; }
.text-center-lh { text-align:center; line-height:1.7; margin-top:14px; }
.wallet-link-box { margin-top:16px; padding-top:14px; border-top:1px solid #f3f4f6; }
.wallet-link { display:block; text-align:center; padding:9px; background:#f0fdf4; color:#10b981; border-radius:8px; text-decoration:none; font-size:13px; font-weight:600; }

/* ── 18. 订单页面 ── */
.order-tab-bar { display:flex; gap:0; border-bottom:2px solid #e5e7eb; margin-bottom:20px; }
.tab-btn-base { padding:10px 24px; font-size:14px; font-weight:600; border:none; background:none; cursor:pointer; border-bottom:3px solid transparent; margin-bottom:-2px; color:#6b7280; }
.tab-divider { flex:1; }
.order-store-link { padding:8px 14px; font-size:13px; color:#6b7280; text-decoration:none; align-self:center; }
.order-section { display:flex; flex-direction:column; gap:12px; }
.order-card-white { background:#fff; border-radius:10px; box-shadow:0 2px 8px rgba(0,0,0,0.06); padding:16px 20px; }
.order-card-row { display:flex; align-items:flex-start; gap:16px; }
@media (max-width:768px) {
  .order-card-row { flex-wrap:wrap; }
  .order-card-row>div:last-child { width:100%; min-width:100%; text-align:left; display:flex; gap:10px; align-items:center; padding-top:10px; border-top:1px solid #f3f4f6; margin-top:4px; }
  .order-card-row>div:last-child span { margin-bottom:0; }
}
@media (max-width:480px) { .order-card-row>div:first-child { width:56px; height:56px; } }
.order-img-box { width:80px; height:80px; border-radius:8px; overflow:hidden; background:#f3f4f6; flex-shrink:0; }
.order-img-full { width:100%; height:100%; object-fit:cover; }
.order-img-empty-box { width:100%; height:100%; display:flex; align-items:center; justify-content:center; color:#d1d5db; font-size:24px; }
.order-info-text { flex:1; min-width:0; }
.order-info-row { display:flex; align-items:center; gap:8px; margin-bottom:6px; }
.order-name-text { font-weight:600; font-size:15px; color:#1f2937; }
.order-meta-line { font-size:12px; color:#9ca3af; margin-bottom:8px; }
.order-buyer-line { display:flex; align-items:center; gap:16px; font-size:13px; color:#6b7280; }
.order-actions-box { text-align:right; min-width:120px; }
.order-status-badge { padding:4px 10px; border-radius:16px; font-size:12px; font-weight:600; display:inline-block; margin-bottom:8px; }
.order-status-pending { background:#fef3c7; color:#92400e; }
.order-status-shipped { background:#dbeafe; color:#1e40af; }
.order-status-done { background:#d1fae5; color:#065f46; }
.btn-action-ship { display:block; padding:6px 14px; background:#3b82f6; color:#fff; border-radius:6px; text-decoration:none; font-size:13px; font-weight:600; text-align:center; }
.btn-action-receive { display:block; padding:6px 14px; background:#10b981; color:#fff; border-radius:6px; text-decoration:none; font-size:13px; font-weight:600; text-align:center; }
.order-time-text { font-size:12px; color:#9ca3af; }
.order-empty-state { text-align:center; padding:80px; color:#9ca3af; }
.express-row { margin-top:12px; padding-top:12px; border-top:1px solid #f3f4f6; display:flex; align-items:center; gap:12px; font-size:13px; color:#6b7280; }

/* ── 19. 发货页面 ── */
.ship-container { max-width:800px; margin:2rem auto; padding:0 1rem; }
.ship-title { margin:0.5rem 0 0; font-size:24px; color:#1f2937; }
.ship-method-title { margin:0 0 1rem; font-size:18px; color:#1f2937; }
.ship-method-card { background:#fff; border-radius:16px; padding:1.5rem; box-shadow:0 2px 8px rgba(0,0,0,0.08); margin-bottom:1.5rem; }
.ship-toggle-row { display:flex; gap:0.5rem; margin-bottom:1.5rem; }
.ship-toggle-btn { flex:1; padding:0.75rem; border:2px solid #3b82f6; border-radius:8px; background:#3b82f6; color:#fff; font-size:14px; font-weight:600; cursor:pointer; }
.ship-toggle-btn-alt { flex:1; padding:0.75rem; border:2px solid #d1d5db; border-radius:8px; background:#fff; color:#6b7280; font-size:14px; font-weight:600; cursor:pointer; }
.ship-grid-2 { display:grid; grid-template-columns:repeat(2,1fr); gap:1rem; margin-bottom:1rem; }
.ship-grid-3 { display:grid; grid-template-columns:repeat(3,1fr); gap:1rem; margin-bottom:1rem; }
.tip-blue { background:#eff6ff; border-left:4px solid #3b82f6; padding:1rem; border-radius:8px; margin-bottom:1.5rem; font-size:13px; color:#1e40af; }
.tip-yellow { display:none; background:#fef3c7; border-left:4px solid #f59e0b; padding:1rem; border-radius:8px; margin-bottom:1.5rem; font-size:13px; color:#92400e; }
.btn-ship-full { width:100%; padding:1rem; background:linear-gradient(135deg,#3b82f6 0%,#2563eb 100%); color:#fff; border:none; border-radius:12px; font-size:16px; font-weight:600; cursor:pointer; box-shadow:0 4px 12px rgba(59,130,246,0.3); }
.btn-ship-manual { width:100%; padding:1rem; background:linear-gradient(135deg,#f59e0b 0%,#d97706 100%); color:#fff; border:none; border-radius:12px; font-size:16px; font-weight:600; cursor:pointer; box-shadow:0 4px 12px rgba(245,158,11,0.3); }
.buyer-info-card { background:#f0fdf4; border:1px solid #bbf7d0; border-radius:16px; padding:1.5rem; margin-bottom:1.5rem; }
.buyer-title { margin:0 0 1rem; font-size:18px; color:#065f46; }
.info-grid-2 { display:grid; grid-template-columns:repeat(2,1fr); gap:1rem; font-size:14px; }
.ship-notice { background:#fef2f2; border:1px solid #fecaca; border-radius:12px; padding:1rem; font-size:13px; color:#991b1b; }
.ship-notice ul { margin:0.5rem 0 0; padding-left:1.5rem; }

/* ── 20. 钱包页面 ── */
.wallet-header { background:linear-gradient(135deg,#14532d,#15803d,#22c55e); color:#fff; border-radius:14px; padding:28px 32px; margin-bottom:24px; }
.wallet-header-row { display:flex; justify-content:space-between; align-items:center; }
.balance-number { font-size:40px; font-weight:700; }
.balance-label { font-size:13px; opacity:0.85; margin-bottom:8px; }
.recharge-row { display:flex; gap:12px; margin-top:20px; flex-wrap:wrap; }
.wechat-card { background:rgba(255,255,255,0.15); border-radius:10px; padding:14px 20px; flex:1; min-width:180px; }
.action-btn-group { display:flex; flex-direction:column; justify-content:center; gap:8px; }
.flow-title { padding:16px 20px; border-bottom:1px solid #f3f4f6; font-weight:600; color:#1f2937; }
.flow-table { width:100%; border-collapse:collapse; font-size:14px; }
.flow-th { padding:10px 16px; text-align:left; color:#6b7280; font-weight:500; }
.flow-th-right { padding:10px 16px; text-align:right; color:#6b7280; font-weight:500; }
.flow-tr { border-top:1px solid #f9fafb; }
.flow-td { padding:10px 16px; color:#6b7280; font-size:12px; }
.flow-td-type { padding:10px 16px; }
.flow-td-note { padding:10px 16px; color:#374151; }
.flow-td-amount { padding:10px 16px; text-align:right; font-weight:600; }
.flow-td-empty { padding:40px; text-align:center; color:#9ca3af; }
.flow-type-recharge { background:#dbeafe; color:#1e40af; padding:2px 8px; border-radius:10px; font-size:12px; }
.flow-type-pay { background:#fee2e2; color:#991b1b; padding:2px 8px; border-radius:10px; font-size:12px; }
.flow-type-receive { background:#d1fae5; color:#065f46; padding:2px 8px; border-radius:10px; font-size:12px; }
.flow-type-withdraw { background:#fef3c7; color:#92400e; padding:2px 8px; border-radius:10px; font-size:12px; }

/* ── 21. 模态框 ── */
.modal-overlay { display:none; position:fixed; inset:0; background:rgba(0,0,0,0.5); z-index:9999; align-items:center; justify-content:center; padding:20px; }
.modal-box { background:#fff; border-radius:14px; padding:28px; width:100%; max-width:420px; position:relative; }
.modal-box-lg { max-width:480px; padding:26px; max-height:90vh; overflow-y:auto; }
.modal-close-btn { position:absolute; top:12px; right:16px; background:none; border:none; font-size:20px; cursor:pointer; color:#9ca3af; }
.modal-h3 { margin:0 0 20px; color:#1f2937; font-size:16px; }
.modal-input { width:100%; padding:9px 12px; border:1px solid #d1d5db; border-radius:6px; font-size:14px; box-sizing:border-box; }
.modal-error { display:none; color:#ef4444; font-size:13px; margin-bottom:10px; }
.modal-tip { background:#fef9c3; border-radius:8px; padding:10px 14px; font-size:12px; color:#92400e; margin-bottom:16px; }
.modal-footer { display:flex; gap:10px; justify-content:flex-end; }
.invoice-dialog { background:#fff; border-radius:14px; padding:28px; width:100%; max-width:460px; position:relative; max-height:90vh; overflow-y:auto; }
.invoice-tip { background:#e0e7ff; border-radius:8px; padding:10px 14px; font-size:12px; color:#3730a3; margin-bottom:16px; }

/* ── 22. 图片放大弹窗 ── */
.img-modal-overlay { display:none; position:fixed; inset:0; z-index:9000; background:rgba(0,0,0,0.82); align-items:center; justify-content:center; backdrop-filter:blur(6px); }
.img-modal-inner { position:relative; display:inline-flex; }
.img-modal-img { max-width:90vw; max-height:88vh; border-radius:12px; object-fit:contain; box-shadow:0 20px 60px rgba(0,0,0,0.5); display:block; user-select:none; -webkit-user-drag:none; pointer-events:none; }
.img-modal-shield { position:absolute; inset:0; cursor:default; }
.img-modal-wm-canvas { display:none; position:absolute; inset:0; width:100%; height:100%; z-index:4; pointer-events:none; border-radius:12px; }
.img-modal-close-btn { position:absolute; top:-14px; right:-14px; width:32px; height:32px; border-radius:50%; background:#fff; border:none; cursor:pointer; font-size:18px; line-height:1; box-shadow:0 2px 8px rgba(0,0,0,0.3); display:flex; align-items:center; justify-content:center; z-index:1; }

/* ── 23. 求购详情 ── */
.wanted-detail-grid { display:grid; grid-template-columns:1fr 1fr 1fr; gap:16px; padding:16px; background:#f9fafb; border-radius:8px; margin-bottom:16px; }
.inquiry-section { background:#fff; border-radius:12px; box-shadow:0 2px 8px rgba(0,0,0,0.06); padding:24px; position:sticky; top:20px; }
.closed-notice { background:#f9fafb; border-radius:12px; padding:24px; text-align:center; color:#9ca3af; }
.owner-notice { background:#fffbeb; border:1px solid #fde68a; border-radius:12px; padding:20px; font-size:13px; color:#92400e; }
.wanted-layout-2col { display:grid; grid-template-columns:1fr 380px; gap:24px; align-items:start; }
.wanted-title-text { margin:0 0 6px; font-size:20px; color:#1f2937; }
.wanted-title-date { font-size:13px; color:#6b7280; }
.wanted-detail-item { text-align:center; }
.wanted-detail-label { font-size:12px; color:#9ca3af; margin-bottom:4px; }
.wanted-detail-value { font-size:22px; font-weight:700; color:#3b82f6; }
.wanted-detail-value-red { font-size:22px; font-weight:700; color:#ef4444; }
.wanted-detail-unit { font-size:14px; font-weight:400; }
.wanted-detail-value-region { font-size:16px; font-weight:600; color:#374151; }
.wanted-detail-divider { border-left:1px solid #e5e7eb; border-right:1px solid #e5e7eb; }
.wanted-species-label { font-size:12px; color:#9ca3af; }
.wanted-species-text { font-size:15px; font-weight:500; color:#1f2937; margin-top:4px; }
.wanted-note-box { padding:14px; background:#fffbeb; border-left:3px solid #f59e0b; border-radius:0 6px 6px 0; }
.wanted-note-label { font-size:12px; color:#92400e; margin-bottom:4px; }
.wanted-note-content { font-size:14px; color:#374151; line-height:1.7; white-space:pre-wrap; }
.owner-actions-bar { background:#fff; border-radius:12px; box-shadow:0 2px 8px rgba(0,0,0,0.06); padding:16px; display:flex; justify-content:flex-end; gap:10px; }
.btn-edit-amber { padding:8px 20px; background:#fef3c7; color:#92400e; border:none; border-radius:6px; cursor:pointer; font-size:13px; display:inline-flex; align-items:center; gap:4px; }
.btn-end-gray { padding:8px 20px; background:#f3f4f6; color:#6b7280; border:none; border-radius:6px; cursor:pointer; font-size:13px; display:inline-flex; align-items:center; gap:4px; }
.btn-delete-danger { padding:8px 20px; background:#fef2f2; color:#dc2626; border:1px solid #fecaca; border-radius:6px; cursor:pointer; font-size:13px; display:inline-flex; align-items:center; gap:4px; }
.admin-shield-label { font-size:12px; color:#6b7280; align-self:center; margin-right:auto; }
.inquiry-form-group { margin-bottom:12px; }
.inquiry-submit-btn { width:100%; padding:12px; background:#10b981; color:#fff; border:none; border-radius:8px; cursor:pointer; font-size:15px; font-weight:600; display:inline-flex; align-items:center; justify-content:center; gap:6px; }
.inquiry-privacy-note { font-size:11px; color:#9ca3af; margin-top:4px; }
.edit-modal-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:12px; }
.edit-modal-full { grid-column:1/-1; }
.edit-modal-title { margin:0 0 18px; color:#92400e; font-size:16px; }
.btn-save-gradient { padding:9px 22px; background:linear-gradient(135deg,#f59e0b,#d97706); color:#fff; border:none; border-radius:6px; cursor:pointer; font-size:14px; font-weight:600; }
.resize-vertical { resize:vertical; }

/* ── 23. list.html 共用样式 ── */
.share-modal-overlay { display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.5); z-index:9999; align-items:center; justify-content:center; }
.share-modal-box { background:#fff; border-radius:16px; padding:28px; width:480px; max-width:92%; box-shadow:0 20px 60px rgba(0,0,0,0.2); }
.share-modal-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:20px; }
.share-modal-title { margin:0; color:#1e293b; font-size:18px; font-weight:700; }
.share-modal-close { background:none; border:none; font-size:20px; color:#9ca3af; cursor:pointer; }
.share-modal-desc { margin:0 0 16px 0; color:#64748b; font-size:14px; }
.share-modal-row { display:flex; gap:10px; margin-bottom:20px; }
.share-link-input { flex:1; padding:12px 14px; border:1px solid #e2e8f0; border-radius:8px; font-size:13px; background:#f8fafc; color:#374151; }
.copy-share-btn { padding:12px 20px; background:#3b82f6; color:#fff; border:none; border-radius:8px; font-size:14px; font-weight:600; cursor:pointer; white-space:nowrap; }
.share-open-link { color:#3b82f6; font-size:13px; text-decoration:none; }
.list-table { width:100%; min-width:700px; border-collapse:collapse; text-align:left; table-layout:fixed; }
.list-thead { background:#fff; }
.list-tr-head { border-bottom:2px solid #00b42a; }
.list-th { padding:13px 10px; font-size:11px; font-weight:700; color:#64748b; text-transform:uppercase; letter-spacing:.08em; white-space:nowrap; }
.list-th-center { padding:13px 10px; font-size:11px; font-weight:700; color:#64748b; text-transform:uppercase; letter-spacing:.08em; text-align:center; white-space:nowrap; }
.list-th-sortable { padding:13px 10px; font-size:11px; font-weight:700; color:#64748b; text-transform:uppercase; letter-spacing:.08em; cursor:pointer; white-space:nowrap; }
.list-td { padding:14px 10px; }
.list-td-center { padding:14px 10px; text-align:center; }
.list-td-ellipsis { padding:14px 10px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.list-tr-data { border-top:1px solid #f1f5f9; }
.status-badge-list { display:inline-flex; align-items:center; padding:3px 8px; border-radius:999px; font-size:12px; font-weight:700; white-space:nowrap; }
.status-badge-failed { background:#fef2f2; color:#ef4444; }
.status-badge-identified { background:#f0fdf4; color:#16a34a; }
.status-badge-unidentified { background:#fffbeb; color:#d97706; }
.list-actions-row { display:flex; justify-content:center; gap:14px; align-items:center; }
.list-action-btn { color:#64748b; display:inline-flex; align-items:center; justify-content:center; text-decoration:none; font-size:17px; background:transparent; border:none; cursor:pointer; padding:0; }
.code-link { font-family:monospace; font-size:14px; font-weight:600; color:#111827; text-decoration:none; }
.code-icon { margin-right:6px; font-size:15px; }
.code-icon-yes { color:#16a34a; }
.code-icon-no { color:#cbd5e1; }
.specimen-name-text { font-weight:600; color:#111827; margin:0; font-size:14px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.specimen-latin-text { font-size:12px; color:#94a3b8; font-style:italic; margin:3px 0 0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.specimen-name-cell { min-width:0; }

/* ── 24. mobile_create 模板专用 ── */
.trade-section-box { border:1.5px solid #d1fae5; border-radius:12px; padding:14px; }
.trade-fee-notice { font-size:11px; color:#f59e0b; background:#fffbeb; padding:6px 10px; border-radius:6px; margin-bottom:10px; }
.trade-price-hint { font-size:11px; color:#10b981; margin-top:4px; }
.cache-count-text { font-size:13px; color:#3b82f6; font-weight:600; margin-bottom:20px; }
.cached-desc-text { font-size:11px; color:#94a3b8; margin-top:8px; }
.toast-notification { position:fixed; bottom:80px; left:50%; transform:translateX(-50%); background:rgba(0,0,0,0.7); color:#fff; padding:8px 18px; border-radius:20px; font-size:13px; z-index:99999; white-space:nowrap; }

/* ── 43. 分析页面（analysis/*.html）通用组件 ── */

/* 顶部导航条 */
.analysis-top-nav { display:flex; align-items:center; gap:12px; padding:16px 24px; background:#fff; border-bottom:1px solid #f1f5f9; flex-wrap:wrap; }
.analysis-top-nav .back-link-btn { display:inline-flex; align-items:center; gap:4px; color:#64748b; text-decoration:none; font-size:14px; padding:4px 8px; border-radius:6px; transition:background 0.15s; }
.analysis-top-nav .back-link-btn:hover { background:#f1f5f9; color:#1e293b; }
.analysis-top-nav .nav-divider { color:#cbd5e1; font-size:14px; user-select:none; }
.analysis-top-nav .page-icon { font-size:20px; }
.analysis-top-nav .page-title { font-size:16px; font-weight:700; color:#1e293b; margin:0; }
.analysis-top-nav .page-subtitle { font-size:12px; color:#94a3b8; margin:0; }
.analysis-spacer { flex:1; }

/* 操作按钮组 */
.analysis-actions { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.btn-action { display:inline-flex; align-items:center; gap:4px; padding:6px 14px; border-radius:6px; font-size:13px; font-weight:600; text-decoration:none; border:none; cursor:pointer; transition:all 0.15s; }
.btn-action-red { background:#fef2f2; color:#dc2626; }
.btn-action-red:hover { background:#fee2e2; }
.btn-action-blue { background:#eff6ff; color:#3b82f6; }
.btn-action-blue:hover { background:#dbeafe; }
.btn-action-purple { background:#f5f3ff; color:#7c3aed; }
.btn-action-purple:hover { background:#ede9fe; }
.btn-action-green { background:#f0fdf4; color:#16a34a; }
.btn-action-green:hover { background:#dcfce7; }
.btn-action-orange { background:#fff7ed; color:#ea580c; }
.btn-action-orange:hover { background:#ffedd5; }
.btn-action-dark { background:#1e293b; color:#fff; }
.btn-action-dark:hover { background:#334155; }
.btn-action-ghost { background:transparent; color:#64748b; }
.btn-action-ghost:hover { background:#f1f5f9; }

/* 饼图/按钮切换 */
.btn-pie-active { background:#3b82f6; color:#fff; }
.btn-pie-inactive { background:#f1f5f9; color:#64748b; }
.btn-pie-inactive:hover { background:#e2e8f0; }

/* 统计指标网格 */
.stats-grid-4 { display:grid; grid-template-columns:repeat(4,1fr); gap:16px; }
.stats-grid-3 { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; }
.stats-grid-2 { display:grid; grid-template-columns:repeat(2,1fr); gap:16px; }
@media (max-width:768px) { .stats-grid-4, .stats-grid-3 { grid-template-columns:repeat(2,1fr); } }
@media (max-width:480px) { .stats-grid-4, .stats-grid-3, .stats-grid-2 { grid-template-columns:1fr; } }

/* 统计卡片（KPI） */
.kpi-card { background:#fff; border-radius:12px; padding:20px; box-shadow:0 1px 4px rgba(0,0,0,0.06); }
.kpi-card .kpi-label { font-size:12px; color:#94a3b8; margin-bottom:6px; }
.kpi-card .kpi-value { font-size:24px; font-weight:700; color:#1e293b; }
.kpi-card .kpi-sub { font-size:12px; color:#94a3b8; margin-top:4px; }
.kpi-card .kpi-icon { font-size:28px; }

/* 图表容器 */
.chart-card { background:#fff; border-radius:12px; padding:20px; box-shadow:0 1px 4px rgba(0,0,0,0.06); margin-bottom:20px; }
.chart-card .chart-title { font-size:15px; font-weight:600; color:#1e293b; margin-bottom:16px; }
.chart-card .chart-title-sm { font-size:13px; font-weight:600; color:#1e293b; margin-bottom:12px; }
.chart-box { width:100%; position:relative; }
.ch-h-200 { height:200px; }
.ch-h-220 { height:220px; }
.ch-h-250 { height:250px; }
.ch-h-260 { height:260px; }
.ch-h-280 { height:280px; }
.ch-h-300 { height:300px; }
.ch-h-320 { height:320px; }
.ch-h-350 { height:350px; }
.ch-h-360 { height:360px; }
.ch-h-380 { height:380px; }
.ch-h-400 { height:400px; }
.ch-h-450 { height:450px; }
.ch-h-500 { height:500px; }
.ch-h-550 { height:550px; }
.ch-h-600 { height:600px; }
.ch-h-full { width:100%; height:100%; min-height:300px; }

/* 图表网格 */
.chart-grid-2 { display:grid; grid-template-columns:1fr 1fr; gap:20px; }
.chart-grid-3 { display:grid; grid-template-columns:1fr 1fr 1fr; gap:20px; }
@media (max-width:992px) { .chart-grid-2, .chart-grid-3 { grid-template-columns:1fr; } }

/* 搜索框 */
.search-box { position:relative; display:flex; align-items:center; }
.search-input { padding:8px 12px 8px 32px; border:1px solid #e2e8f0; border-radius:8px; font-size:13px; width:200px; outline:none; transition:border-color 0.15s; }
.search-input:focus { border-color:#3b82f6; box-shadow:0 0 0 3px rgba(59,130,246,0.1); }
.search-icon { position:absolute; left:10px; color:#94a3b8; font-size:14px; pointer-events:none; }

/* 地理位置列表 */
.location-item { display:flex; align-items:center; gap:8px; padding:6px 8px; border-radius:6px; transition:background 0.15s; }
.location-item:hover { background:#f8fafc; }
.location-name { flex:1; font-size:13px; color:#334155; }
.location-count { font-size:12px; color:#94a3b8; font-weight:600; }

/* 状态徽章 */
.badge-peak { display:inline-block; padding:2px 8px; border-radius:10px; font-size:11px; font-weight:600; background:#dcfce7; color:#16a34a; }
.badge-normal { display:inline-block; padding:2px 8px; border-radius:10px; font-size:11px; font-weight:600; background:#dbeafe; color:#3b82f6; }
.badge-low { display:inline-block; padding:2px 8px; border-radius:10px; font-size:11px; font-weight:600; background:#fef3c7; color:#d97706; }
.badge-none { display:inline-block; padding:2px 8px; border-radius:10px; font-size:11px; font-weight:600; background:#f1f5f9; color:#94a3b8; }
.badge-success { display:inline-block; padding:2px 8px; border-radius:10px; font-size:11px; font-weight:600; background:#d1fae5; color:#065f46; }
.badge-warning { display:inline-block; padding:2px 8px; border-radius:10px; font-size:11px; font-weight:600; background:#fef3c7; color:#92400e; }
.badge-danger { display:inline-block; padding:2px 8px; border-radius:10px; font-size:11px; font-weight:600; background:#fee2e2; color:#991b1b; }
.badge-info { display:inline-block; padding:2px 8px; border-radius:10px; font-size:11px; font-weight:600; background:#e0e7ff; color:#3730a3; }

/* 进度条 */
.progress-bar { height:6px; background:#f1f5f9; border-radius:3px; overflow:hidden; }
.progress-fill { height:100%; border-radius:3px; transition:width 0.3s; }

/* 详细表格 */
.detail-table { width:100%; border-collapse:collapse; font-size:13px; }
.detail-table th { padding:10px 12px; text-align:left; font-weight:600; color:#64748b; background:#f8fafc; border-bottom:1px solid #e2e8f0; }
.detail-table td { padding:10px 12px; border-bottom:1px solid #f1f5f9; color:#334155; }
.detail-table tr:hover td { background:#f8fafc; }

/* 分析行 */
.analysis-row { display:flex; align-items:baseline; gap:8px; padding:4px 0; font-size:13px; }
.analysis-row .ar-label { color:#94a3b8; min-width:80px; }
.analysis-row .ar-value { color:#1e293b; font-weight:500; }

/* 数值标签 */
.value-tag { display:inline-block; padding:2px 8px; border-radius:4px; font-size:11px; font-weight:600; }
.tag-red { background:#fef2f2; color:#dc2626; }
.tag-green { background:#f0fdf4; color:#16a34a; }
.tag-blue { background:#eff6ff; color:#3b82f6; }
.tag-yellow { background:#fffbeb; color:#d97706; }
.tag-purple { background:#f5f3ff; color:#7c3aed; }
.tag-gray { background:#f1f5f9; color:#64748b; }

/* 空状态 */
.empty-state { text-align:center; padding:60px 20px; color:#94a3b8; }
.empty-state .empty-icon { font-size:48px; margin-bottom:16px; opacity:0.5; }
.empty-state .empty-text { font-size:14px; }

/* 海拔详情行 */
.alt-detail-row { display:flex; align-items:center; gap:12px; padding:8px 0; border-bottom:1px solid #f1f5f9; }
.alt-detail-row .alt-range { font-size:13px; color:#374151; min-width:70px; }
.alt-detail-row .alt-bar-track { flex:1; height:8px; background:#f1f5f9; border-radius:4px; overflow:hidden; }
.alt-detail-row .alt-bar-fill { height:100%; border-radius:4px; transition:width 0.3s; }
.alt-detail-row .alt-count { font-size:13px; font-weight:600; min-width:30px; text-align:right; }

/* 顶部统计行 */
.top-stat-row { display:flex; gap:16px; flex-wrap:wrap; }
.top-stat-item { flex:1; min-width:120px; background:#fff; border-radius:10px; padding:16px 20px; box-shadow:0 1px 3px rgba(0,0,0,0.05); }
.top-stat-item .ts-label { font-size:11px; color:#94a3b8; margin-bottom:4px; }
.top-stat-item .ts-value { font-size:22px; font-weight:700; color:#1e293b; }
.top-stat-item .ts-sub { font-size:11px; color:#94a3b8; margin-top:2px; }

/* 描述文本 */
.desc-text { font-size:12px; color:#94a3b8; line-height:1.6; }
.desc-text-sm { font-size:11px; color:#94a3b8; }
.highlight-num { font-weight:700; color:#3b82f6; }

/* 速率/百分比 */
.rate-badge { padding:4px 10px; border-radius:6px; font-size:12px; font-weight:600; }
.rate-up { background:#f0fdf4; color:#16a34a; }
.rate-down { background:#fef2f2; color:#dc2626; }
.rate-flat { background:#f1f5f9; color:#64748b; }

/* 图例 */
.legend-row { display:flex; align-items:center; gap:8px; padding:4px 0; font-size:12px; }
.legend-dot { width:10px; height:10px; border-radius:50%; flex-shrink:0; }
.legend-label { color:#64748b; flex:1; }
.legend-value { color:#1e293b; font-weight:600; }

/* 骨架屏 */
.skel-analysis { padding:20px; }
.skel-analysis .skel-line { height:12px; background:#f1f5f9; border-radius:6px; margin-bottom:12px; }
.skel-analysis .skel-line.w-40 { width:40%; }
.skel-analysis .skel-line.w-60 { width:60%; }
.skel-analysis .skel-line.w-80 { width:80%; }
.skel-analysis .skel-block { height:200px; background:#f1f5f9; border-radius:12px; margin-bottom:20px; }

/* 页面特有头部颜色 */
.ca-header { color:#0891b2; }
.pa-header { color:#7c3aed; }
.sa-header { color:#059669; }
.ha-header { color:#d97706; }
.va-header { color:#dc2626; }
.seq-header { color:#6366f1; }

/* ── 44. list.html 宽度/排序/分页工具 ── */
.w-50 { width:50px; }
.mw-50 { min-width:50px; }
.mw-90 { min-width:90px; }
.mw-100 { min-width:100px; }
.mw-120 { min-width:120px; }
.mw-150 { min-width:150px; }
.sort-icon { opacity:.4; margin-left:2px; }
.inline-form { display:inline; }
.card-img-yes { color:#16a34a; }
.card-img-no { color:#cbd5e1; }

/* 分页栏 */
.pagination-bar { padding:16px 28px; background:#f8fafc; border-top:1px solid #e2e8f0; display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:10px; }
.pagination-bar-left { display:flex; align-items:center; gap:8px; }
.pagination-bar-right { display:flex; align-items:center; gap:6px; }
.per-page-label { font-size:13px; color:#64748b; }
.per-page-select { padding:6px 10px; border:1px solid #e2e8f0; border-radius:10px; font-size:12px; background:#fff; color:#374151; cursor:pointer; }
.page-btn { padding:7px 16px; border:1px solid #e2e8f0; border-radius:10px; font-size:13px; font-weight:500; color:#475569; text-decoration:none; background:#fff; display:inline-flex; align-items:center; justify-content:center; }
.page-btn:hover { background:#f1f5f9; }
.page-btn-disabled { padding:7px 16px; border:1px solid #e2e8f0; border-radius:10px; font-size:13px; font-weight:500; color:#cbd5e1; background:#f9fafb; cursor:not-allowed; }
.page-num { padding:7px 14px; border:1px solid #e2e8f0; border-radius:10px; font-size:13px; font-weight:500; color:#475569; text-decoration:none; background:#fff; }
.page-num:hover { background:#f1f5f9; }
.page-num-current { padding:7px 14px; background:#00b42a; color:#fff; border-radius:10px; font-size:13px; font-weight:700; text-decoration:none; box-shadow:0 4px 12px rgba(0,180,42,0.25); }
.page-ellipsis { padding:7px 8px; font-size:13px; color:#94a3b8; }

/* ── 45. 额外通用工具类（配合已修改模板） ── */
.d-flex { display:flex; }
.ai-center { align-items:center; }
.ai-start { align-items:flex-start; }
.ai-end { align-items:flex-end; }
.jc-between { justify-content:space-between; }
.jc-center { justify-content:center; }
.jc-end { justify-content:flex-end; }
.gap-2 { gap:2px; }
.text-md { font-size:15px; }
.ta-center { text-align:center; }
.fs-28 { font-size:28px; }
.fs-0 { font-size:0; }
.lh-1 { line-height:1; }
.lh-1-2 { line-height:1.2; }
.lh-1-4 { line-height:1.4; }
.lh-1-5 { line-height:1.5; }
.lh-1-6 { line-height:1.6; }
.lh-1-7 { line-height:1.7; }
.lh-1-8 { line-height:1.8; }
.min-w-0 { min-width:0; }
.min-w-200 { min-width:200px; }
.shadow-card { box-shadow:0 2px 8px rgba(0,0,0,0.06); }
.px-10 { padding-left:10px; padding-right:10px; }
.py-5 { padding-top:5px; padding-bottom:5px; }
.mt-3 { margin-top:3px; }
.mb-5 { margin-bottom:5px; }
.rounded-20 { border-radius:20px; }

/* ── 46. 组件类 ── */
.top-nav-bar { display:flex; align-items:center; gap:14px; margin-bottom:20px; background:#fff; border-radius:14px; padding:14px 20px; box-shadow:0 2px 8px rgba(0,0,0,0.06); }
.nav-title-area { flex:1; min-width:0; }
.nav-title { font-size:15px; font-weight:700; color:#1e293b; }
.nav-subtitle { font-size:12px; color:#94a3b8; margin-top:1px; }
.divider-v { width:1px; height:20px; background:#e2e8f0; flex-shrink:0; }
.icon-box-purple { width:38px; height:38px; border-radius:10px; background:linear-gradient(135deg,#8b5cf6,#7c3aed); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.icon-box-green { width:38px; height:38px; border-radius:10px; background:linear-gradient(135deg,#22c55e,#16a34a); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.icon-box-orange { width:38px; height:38px; border-radius:10px; background:linear-gradient(135deg,#f59e0b,#d97706); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.icon-box-red { width:38px; height:38px; border-radius:10px; background:linear-gradient(135deg,#ef4444,#dc2626); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.icon-box-blue { width:38px; height:38px; border-radius:10px; background:linear-gradient(135deg,#3b82f6,#2563eb); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.section-card { background:#fff; border-radius:14px; padding:20px; box-shadow:0 2px 8px rgba(0,0,0,0.06); }
.section-card-sm { background:#fff; border-radius:10px; padding:16px; box-shadow:0 2px 8px rgba(0,0,0,0.06); }
.card-header-row { display:flex; align-items:center; gap:8px; margin-bottom:16px; padding-bottom:12px; border-bottom:1px solid #f1f5f9; }
.card-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:16px; }
.role-badge { display:inline-flex; align-items:center; gap:4px; padding:3px 10px; border-radius:6px; font-size:11px; font-weight:600; }
.role-leader { background:#fef3c7; color:#92400e; }
.role-member { background:#ede9fe; color:#5b21b6; }
.role-leader-sm { display:inline-flex; align-items:center; gap:4px; background:#fef3c7; color:#92400e; padding:3px 8px; border-radius:6px; font-size:11px; font-weight:600; }
.badge-leader { display:inline-flex; align-items:center; gap:3px; background:#fef3c7; color:#92400e; padding:2px 6px; border-radius:4px; font-size:10px; font-weight:700; margin-right:4px; }
.badge-sm { padding:2px 8px; border-radius:10px; font-size:12px; font-weight:600; display:inline-block; }
.badge-blue { background:#dbeafe; color:#1e40af; }
.badge-red { background:#fee2e2; color:#991b1b; }
.badge-green { background:#d1fae5; color:#065f46; }
.badge-yellow { background:#fef3c7; color:#92400e; }
.badge-purple { background:#ede9fe; color:#5b21b6; }
.member-link { color:#3b82f6; text-decoration:none; font-weight:500; font-size:13px; }
.member-link:hover { text-decoration:underline; }
.table-wrap { overflow-x:auto; }
.table-head-custom { background:#f9fafb; }
.table-row-highlight { background:#fffbeb; }
.td-cell { padding:10px; font-size:13px; color:#374151; }
.td-cell-bold { padding:10px; font-size:13px; font-weight:600; color:#374151; }
.c-count-blue { font-weight:700; color:#3b82f6; }
.c-count-green { font-weight:700; color:#10b981; }
.c-unidentified { color:#f97316; font-weight:600; }
.c-identified { color:#10b981; font-weight:600; }
.c-failed { color:#ef4444; font-weight:600; }
.c-muted { color:#d1d5db; }
.stat-card-label { font-size:11px; color:#6b7280; margin-bottom:6px; }
.stat-card-value { font-size:28px; font-weight:700; }
.pagination-wrap { display:flex; justify-content:center; gap:6px; margin-top:20px; }
.filter-btn-xs { padding:4px 10px; border-radius:6px; font-size:11px; font-weight:500; border:1px solid #d1d5db; background:#fff; color:#374151; cursor:pointer; text-decoration:none; }
.filter-btn-xs-active { background:#3b82f6; color:#fff; border-color:#3b82f6; }
.filter-badge-blue { display:inline-block; padding:4px 10px; border-radius:6px; background:#dbeafe; color:#1e40af; font-size:12px; font-weight:500; }
.filter-badge-purple { display:inline-block; padding:4px 10px; border-radius:6px; background:#ede9fe; color:#5b21b6; font-size:12px; font-weight:500; }
.action-btn-xs { padding:5px 10px; border-radius:6px; font-size:11px; font-weight:500; text-decoration:none; display:inline-block; cursor:pointer; border:none; }
.action-btn-xs-primary { background:#3b82f6; color:#fff; }
.action-btn-xs-success { background:#10b981; color:#fff; }
.action-btn-xs-warning { background:#f59e0b; color:#fff; }
.action-btn-xs-danger { background:#ef4444; color:#fff; }
.action-btn-xs-ghost { background:#f3f4f6; color:#374151; }
.empty-state-icon-lg { font-size:32px; color:#e2e8f0; }
.chart-container { width:100%; height:260px; }
.border-left-green { border-left:4px solid #22c55e; }
.border-left-blue { border-left:4px solid #3b82f6; }
.border-left-orange { border-left:4px solid #f97316; }
.border-left-red { border-left:4px solid #ef4444; }
.border-left-purple { border-left:4px solid #8b5cf6; }
.grid-cols-5 { grid-template-columns:repeat(5,1fr); }
.grid-cols-2 { grid-template-columns:1fr 1fr; }
.grid-cols-3 { grid-template-columns:repeat(3,1fr); }
.h-10 { height:10px; }
.h-14 { height:14px; }
.form-label { display:block; font-size:13px; font-weight:600; color:#374151; margin-bottom:6px; }
.c-gray-300 { color:#d1d5db; }
.c-blue-400 { color:#60a5fa; }
.c-yellow-500 { color:#eab308; }
.c-orange-400 { color:#fb923c; }
.c-purple-400 { color:#a78bfa; }
.c-green-400 { color:#34d399; }

/* ── 47. 团队相关页面 ── */
.team-nav-bar { display:flex; align-items:center; gap:14px; margin-bottom:20px; background:#fff; border-radius:14px; padding:14px 20px; box-shadow:0 2px 8px rgba(0,0,0,0.06); }
.team-card-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(320px,1fr)); gap:16px; }
.team-card { background:#fff; border-radius:14px; padding:0; box-shadow:0 2px 8px rgba(0,0,0,0.06); overflow:hidden; transition:transform .2s,box-shadow .2s; }
.team-card:hover { transform:translateY(-3px); box-shadow:0 8px 24px rgba(0,0,0,0.12); }
.team-card-header { padding:18px 20px; position:relative; }
.team-card-leader-row { display:flex; align-items:center; gap:12px; }
.team-card-avatar { width:46px; height:46px; border-radius:12px; background:rgba(255,255,255,0.2); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.team-card-info { flex:1; min-width:0; }
.team-card-name { font-size:15px; font-weight:700; color:#fff; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.team-card-leader { font-size:12px; color:rgba(255,255,255,0.75); margin-top:2px; }
.team-card-badge { padding:3px 10px; border-radius:20px; font-size:11px; font-weight:600; flex-shrink:0; }
.team-card-body { padding:18px 20px; }
.team-card-stats { display:flex; gap:16px; margin-bottom:14px; }
.team-card-stat { flex:1; text-align:center; padding:10px; background:#f8fafc; border-radius:8px; }
.team-card-stat-value { font-size:20px; font-weight:700; }
.team-card-stat-label { font-size:11px; color:#94a3b8; margin-top:2px; }
.team-card-desc { font-size:13px; color:#64748b; line-height:1.6; margin-bottom:14px; }
.team-card-desc-empty { font-size:13px; color:#cbd5e1; font-style:italic; margin-bottom:14px; }
.team-card-footer { display:flex; gap:8px; }
.invitation-card { background:#fff; border-radius:14px; padding:0; box-shadow:0 2px 8px rgba(0,0,0,0.06); overflow:hidden; border-left:4px solid #3b82f6; }
.invitation-body { padding:18px 20px; display:flex; align-items:center; gap:16px; flex-wrap:wrap; }
.invitation-icon-box { width:50px; height:50px; border-radius:12px; background:linear-gradient(135deg,#8b5cf6,#7c3aed); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.invitation-info { flex:1; min-width:180px; }
.invitation-name { font-size:15px; font-weight:700; color:#1e293b; margin-bottom:3px; }
.invitation-meta { font-size:12px; color:#64748b; display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.invitation-desc { font-size:12px; color:#94a3b8; margin-top:5px; line-height:1.5; }
.invitation-actions { display:flex; gap:8px; flex-shrink:0; }
.simple-top-nav { display:flex; align-items:center; gap:14px; margin-bottom:20px; background:#fff; border-radius:14px; padding:14px 20px; box-shadow:0 2px 8px rgba(0,0,0,0.06); }
.simple-form-wrap { max-width:560px; margin:0 auto; }
.simple-form-card { background:#fff; border-radius:14px; padding:28px; box-shadow:0 2px 8px rgba(0,0,0,0.06); }
.simple-form-icon { width:64px; height:64px; border-radius:16px; display:flex; align-items:center; justify-content:center; margin:0 auto 12px; }
.simple-form-hint { font-size:13px; color:#94a3b8; text-align:center; margin-bottom:24px; }
.simple-form-actions { display:flex; gap:10px; justify-content:flex-end; }
.wanted-detail-card { background:#fff; border-radius:14px; box-shadow:0 2px 8px rgba(0,0,0,0.06); overflow:hidden; }
.wanted-detail-header { background:linear-gradient(135deg,#2563eb,#1d4ed8); padding:28px 24px; color:#fff; }
.wanted-detail-title { font-size:22px; font-weight:700; margin-bottom:8px; }
.wanted-detail-meta { display:flex; gap:16px; flex-wrap:wrap; color:rgba(255,255,255,0.8); font-size:13px; }
.wanted-detail-body { padding:24px; }
.wanted-detail-field-label { font-size:12px; color:#94a3b8; margin-bottom:4px; }
.wanted-detail-field-value { font-size:15px; font-weight:600; color:#1f2937; }
.wanted-detail-note { background:#f8fafc; border-radius:8px; padding:16px; font-size:14px; color:#374151; line-height:1.7; }
.wanted-detail-contact { margin-top:16px; padding:12px 16px; background:#fffbeb; border-radius:8px; font-size:13px; color:#92400e; }
.edit-modal-title-wanted { font-size:17px; font-weight:700; color:#1f2937; margin-bottom:20px; }
.grid-2-col { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:12px; }
.btn-save-edit { padding:9px 20px; background:linear-gradient(135deg,#f59e0b,#d97706); color:#fff; border:none; border-radius:8px; font-size:14px; font-weight:500; cursor:pointer; }

@media (max-width:768px) {
    .grid-cols-5 { grid-template-columns:repeat(2,1fr); }
    .grid-cols-2 { grid-template-columns:1fr; }
    .top-nav-bar { flex-wrap:wrap; gap:10px; }
    .team-card-grid { grid-template-columns:1fr; }
    .card-grid { grid-template-columns:1fr; }
}

/* ── 48. list.html 遗留样式（原内联 <style> 块） ── */
.table-data-row { transition: background 0.15s; }
.table-data-row:hover { background: #f8fafc !important; }
.table-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:20px; flex-wrap:wrap; gap:10px; }
.table-actions { display:flex; gap:10px; }
.ticket-table th:first-child, .ticket-table td:first-child { width:40px; text-align:center; }
.ticket-table input[type="checkbox"] { transform:scale(1.2); cursor:pointer; }
.pagination-container { display:flex; justify-content:space-between; align-items:center; margin-top:20px; padding-top:20px; border-top:1px solid #e0e0e0; }
.per-page-selector { display:flex; align-items:center; gap:10px; }
.per-page-selector label { font-weight:500; color:#666; }
.per-page-selector select { padding:6px 12px; border:1px solid #ddd; border-radius:4px; font-size:14px; background-color:white; cursor:pointer; transition:border-color 0.3s ease; }
.per-page-selector select:hover { border-color:#3b82f6; }
.pagination { display:flex; align-items:center; gap:5px; }
.pagination-btn { padding:8px 12px; border:1px solid #ddd; border-radius:4px; background-color:white; color:#333; text-decoration:none; cursor:pointer; transition:all 0.3s ease; }
.pagination-btn:hover:not(.disabled) { background-color:#f5f5f5; border-color:#3b82f6; }
.pagination-btn.disabled { opacity:0.5; cursor:not-allowed; }
.page-number { padding:8px 12px; border:1px solid #ddd; border-radius:4px; background-color:white; color:#333; text-decoration:none; cursor:pointer; transition:all 0.3s ease; }
.page-number:hover { border-color:#3b82f6; }
.page-number.active { background-color:#3b82f6; color:white; border-color:#3b82f6; }
.specimen-cards { display:none; gap:15px; }
.specimen-card { border:1px solid #e0e0e0; border-radius:8px; padding:15px; background-color:white; box-shadow:0 2px 4px rgba(0,0,0,0.1); margin-bottom:15px; }
.specimen-card-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:12px; padding-bottom:8px; border-bottom:1px solid #f0f0f0; }
.specimen-code { font-weight:600; color:#333; font-size:14px; }
.specimen-image-indicator { color:#666; font-size:14px; }
.specimen-card-content { margin-bottom:12px; }
.specimen-card-row { display:flex; margin-bottom:8px; font-size:14px; }
.specimen-card-label { width:80px; font-weight:500; color:#666; }
.specimen-card-value { flex:1; color:#333; word-break:break-word; }
.specimen-card-footer { display:flex; gap:10px; padding-top:12px; border-top:1px solid #f0f0f0; }
.specimen-card-btn { flex:1; padding:8px 12px; border:1px solid #ddd; border-radius:4px; background-color:#f5f5f5; color:#333; text-decoration:none; text-align:center; font-size:14px; transition:all 0.3s ease; }
.specimen-card-btn:hover { background-color:#e0e0e0; }
.specimen-card form { flex:1; margin:0; }
.specimen-card form .specimen-card-btn { width:100%; cursor:pointer; border:none; background-color:#f87171; color:white; }
.specimen-card form .specimen-card-btn:hover { background-color:#ef4444; }
@media (max-width: 480px) {
    .pagination-container { padding:12px 15px !important; flex-direction:column; align-items:stretch !important; }
    .pagination-container > div:first-child { justify-content:center; margin-bottom:10px; }
    .pagination-container > div:last-child { justify-content:center; flex-wrap:wrap; }
    #per-page { padding:6px 12px !important; font-size:13px !important; }
    .pagination a, .pagination button { padding:6px 12px !important; font-size:12px !important; min-width:36px; text-align:center; }
}
/* correction-msg with margins */
.correction-msg { margin:-8px 0 12px 0; font-size:13px; display:none; }
.correction-msg.visible { display:block; }
@media (max-width: 768px) {
    .specimen-card { padding:12px !important; }
    .specimen-code { font-size:15px !important; }
    .specimen-image-indicator { font-size:16px !important; }
    .specimen-card-label { width:70px !important; font-size:12px !important; }
    .specimen-card-value { font-size:13px !important; }
    .specimen-card-footer { gap:8px !important; }
    .specimen-card-btn { padding:5px 10px !important; font-size:11px !important; }
    .batch-delete-desktop-only { display:none !important; }
    .ticket-table, .sortable-table, .table-scroll-wrap { display:none !important; }
    .specimen-cards { display:block; }
    .table-header { flex-direction:column; align-items:flex-start; gap:10px; }
    .table-actions { width:100%; justify-content:space-between; }
    .btn { flex:1; text-align:center; }
    .pagination-container { flex-direction:column; align-items:flex-start; gap:15px; }
    .per-page-selector { width:100%; }
    .pagination { width:100%; justify-content:center; }
    .global-search-container { margin-bottom:20px; }
}
@media (min-width: 769px) {
    .ticket-table, .sortable-table { display:table; }
    .specimen-cards { display:none; }
}

/* ── 49. 分析 KPI+Chart 通用样式 */
.kpi-row { display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr)); gap:16px; margin-bottom:24px; }
.kpi { background:#fff; border-radius:12px; padding:18px 20px; box-shadow:0 2px 8px rgba(0,0,0,.06); display:flex; align-items:center; gap:14px; }
.kpi-icon { width:44px; height:44px; border-radius:10px; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.kpi-icon i { color:#fff; font-size:18px; }
.kpi-val { font-size:26px; font-weight:700; color:#1e293b; line-height:1; }
.kpi-lbl { font-size:12px; color:#94a3b8; margin-top:2px; }
.section-title { font-size:16px; font-weight:700; color:#1e293b; margin:0 0 16px; padding-bottom:10px; border-bottom:2px solid #f1f5f9; display:flex; align-items:center; gap:8px; }
.section-title i { color:#3b82f6; }
.corr-table { width:100%; border-collapse:collapse; font-size:14px; }
.corr-table th { background:#f8fafc; padding:10px 14px; text-align:left; font-weight:600; color:#475569; border-bottom:2px solid #e2e8f0; }
.corr-table td { padding:10px 14px; border-bottom:1px solid #f1f5f9; color:#334155; vertical-align:top; }
.corr-table tr:hover td { background:#f8fafc; }

/* ── 50. 分析仪表盘（dashboard） */
.dash-grid-4 { display:grid; grid-template-columns:repeat(4,1fr); gap:14px; }
.dash-grid-2 { display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-bottom:20px; }
.stat-card-h { background:#fff; border-radius:14px; padding:18px 20px; display:flex; align-items:center; gap:16px; }
.stat-card-h .sch-icon-box { width:48px; height:48px; border-radius:12px; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.stat-card-h .sch-icon-box i { color:#fff; font-size:20px; }
.stat-card-h .sch-label { font-size:11px; color:#94a3b8; text-transform:uppercase; letter-spacing:.5px; margin-bottom:2px; }
.stat-card-h .sch-value { font-size:28px; font-weight:700; color:#1e293b; line-height:1; }
.module-section { background:#fff; border-radius:14px; padding:20px; box-shadow:0 2px 12px rgba(0,0,0,0.06); margin-bottom:20px; }
.module-section-title { font-size:15px; font-weight:600; color:#1e293b; margin-bottom:16px; }
.module-section-title i { color:#3b82f6; margin-right:8px; }
.module-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; }
.module-card { border-radius:12px; padding:18px 16px; color:#fff; transition:transform .2s,box-shadow .2s; cursor:pointer; display:block; text-decoration:none; }
.module-card:hover { transform:translateY(-4px); }
.module-card .mc-icon-box { width:40px; height:40px; border-radius:10px; background:rgba(255,255,255,0.15); display:flex; align-items:center; justify-content:center; margin-bottom:12px; }
.module-card .mc-icon-box i { font-size:18px; }
.module-card .mc-title { font-size:14px; font-weight:600; margin-bottom:4px; }
.module-card .mc-desc { font-size:11px; opacity:.7; }

/* ── 51. 新增类（2026-05 内联样式修复） ── */
.py-9 { padding-top:9px; padding-bottom:9px; }
.px-14 { padding-left:14px; padding-right:14px; }
.p-40 { padding:40px; }
.max-w-140 { max-width:140px; }
.max-w-480 { max-width:480px; }
.inline { display:inline; }
.grid-cols-custom { grid-template-columns:1fr 1.6fr; }
.modal-btn-danger { background:linear-gradient(135deg,#ef4444,#dc2626); }
.warning-box { background:linear-gradient(135deg,#fffbeb,#fef3c7);border-radius:14px;padding:16px 20px;border:1px solid #fde68a; }
.bg-purple-grad-light { background:linear-gradient(135deg,#ede9fe,#ddd6fe); }
.bg-grad-orange { background:linear-gradient(135deg,#f59e0b,#d97706); }
.bg-grad-purple { background:linear-gradient(135deg,#8b5cf6,#7c3aed); }
.btn-purple { padding:9px 20px; background:linear-gradient(135deg,#8b5cf6,#7c3aed); color:#fff; border:none; border-radius:6px; cursor:pointer; font-size:14px; font-weight:600; display:inline-flex; align-items:center; gap:4px; }
.avatar-box { width:72px;height:72px;border-radius:20px;background:linear-gradient(135deg,#8b5cf6,#7c3aed);display:flex;align-items:center;justify-content:center;flex-shrink:0; }
@media (max-width:768px){ .dash-grid-4, .dash-grid-2 { grid-template-columns:1fr; } .module-grid { grid-template-columns:repeat(2,1fr); } }

/* ── 51. Teams utility classes ── */
.c-92400e { color:#92400e; }
.c-1f2937 { color:#1f2937; }
.c-9ca3af { color:#9ca3af; }
.fs-64 { font-size:64px; }
.p-40 { padding:40px; }
.self-center { align-self:center; }
.btn-edit-wanted { padding:8px 20px; background:#fef3c7; color:#92400e; border:none; border-radius:6px; cursor:pointer; font-size:13px; font-weight:500; }
.btn-close-wanted { padding:8px 20px; background:#f3f4f6; color:#6b7280; border:none; border-radius:6px; cursor:pointer; font-size:13px; }
.btn-danger-wanted { padding:8px 20px; background:#fef2f2; color:#dc2626; border:1px solid #fecaca; border-radius:6px; cursor:pointer; font-size:13px; }
.btn-inquire { width:100%; padding:12px; background:#10b981; color:#fff; border:none; border-radius:8px; cursor:pointer; font-size:15px; font-weight:600; }
.badge-active { background:#d1fae5; color:#065f46; padding:5px 14px; border-radius:20px; font-size:13px; white-space:nowrap; flex-shrink:0; }
.badge-closed { background:#f3f4f6; color:#9ca3af; padding:5px 14px; border-radius:20px; font-size:13px; white-space:nowrap; flex-shrink:0; }
@media (max-width: 768px) {
  .cart-layout { grid-template-columns:1fr; }
  .cart-summary-box { position:static; }
}
@media (max-width:480px){ .module-grid { grid-template-columns:1fr; } }

/* ── 51. 通用导航栏（map/route/species_distribution） */
.nav-bar { display:flex; align-items:center; gap:14px; margin-bottom:20px; background:#fff; border-radius:14px; padding:14px 20px; box-shadow:0 2px 8px rgba(0,0,0,0.06); }
.nav-bar .nav-back { display:inline-flex; align-items:center; gap:6px; padding:7px 14px; background:#f1f5f9; border-radius:8px; color:#475569; text-decoration:none; font-size:13px; font-weight:500; flex-shrink:0; }
.nav-bar .nav-back:hover { background:#e2e8f0; }
.nav-bar .nav-divider { width:1px; height:20px; background:#e2e8f0; flex-shrink:0; }
.nav-bar .nav-icon { font-size:18px; }
.nav-bar .nav-content { flex:1; min-width:0; }
.nav-bar .nav-title { font-size:15px; font-weight:600; color:#1e293b; }
.nav-bar .nav-subtitle { font-size:12px; color:#94a3b8; margin-top:1px; }
.nav-bar .nav-actions { display:flex; gap:8px; flex-shrink:0; }
.nav-btn { display:inline-flex; align-items:center; gap:6px; padding:7px 14px; border:none; border-radius:8px; cursor:pointer; font-size:13px; text-decoration:none; }
.nav-btn-blue { background:#3b82f6; color:#fff; }
.nav-btn-red { background:#ef4444; color:#fff; }
.nav-btn-purple { background:#8b5cf6; color:#fff; }
.nav-btn-cyan { background:#06b6d4; color:#fff; }
.nav-btn-gray { background:#f1f5f9; color:#475569; }

/* ── 52. 物种分布/地图辅助 */
.kpi-mini { background:#fff; border-radius:12px; padding:16px; box-shadow:0 2px 8px rgba(0,0,0,0.06); }
.kpi-mini .km-label { font-size:12px; color:#94a3b8; margin-bottom:4px; }
.kpi-mini .km-value { font-size:24px; font-weight:700; color:#1e293b; }
.map-card { background:#fff; border-radius:14px; overflow:hidden; box-shadow:0 2px 8px rgba(0,0,0,0.06); }
.map-card .map-hd { padding:12px 20px; border-bottom:1px solid #f1f5f9; display:flex; align-items:center; gap:8px; }
.map-card .map-hd .mh-icon { color:#2563eb; }
.map-card .map-hd .mh-title { font-size:14px; font-weight:600; color:#1e293b; }
.map-card .map-hd .mh-hint { margin-left:auto; font-size:12px; color:#94a3b8; }
.map-sidebar { background:#fff; border-radius:14px; padding:20px; box-shadow:0 2px 8px rgba(0,0,0,0.06); max-height:650px; overflow-y:auto; }
.map-sidebar .ms-hd { display:flex; align-items:center; gap:8px; margin-bottom:12px; padding-bottom:12px; border-bottom:1px solid #f1f5f9; }
.map-sidebar .ms-hd i { color:#f59e0b; }
.map-sidebar .ms-hd span { font-size:14px; font-weight:600; color:#1e293b; }
.ctrl-bar { background:#fff; border-radius:14px; padding:12px 20px; box-shadow:0 2px 8px rgba(0,0,0,0.06); margin-bottom:16px; }
.ctrl-bar .ctrl-row { display:flex; align-items:center; gap:16px; }
.ctrl-bar .ctrl-row .cr-hint { font-size:13px; color:#64748b; }
.ctrl-bar .ctrl-row .cr-actions { display:flex; align-items:center; gap:8px; margin-left:auto; }

/* ── 53. 热力图独立页面 */
.hm-wrap { max-width:1400px; margin:24px auto; padding:0 16px; }
.hm-wrap .hm-hd { margin-bottom:24px; }
.hm-wrap .hm-title { font-size:24px; font-weight:700; color:#111827; margin-bottom:8px; }
.hm-wrap .hm-stats { display:flex; gap:24px; margin-top:16px; }
.hm-wrap .hm-sc { background:#fff; border-radius:10px; padding:16px 24px; box-shadow:0 2px 8px rgba(0,0,0,0.08); }
.hm-wrap .hm-sl { font-size:13px; color:#6b7280; margin-bottom:4px; }
.hm-wrap .hm-sv { font-size:24px; font-weight:700; color:#16a34a; }
.hm-map { width:100%; height:600px; border-radius:12px; overflow:hidden; box-shadow:0 4px 12px rgba(0,0,0,0.12); }
.hm-legend { position:absolute; bottom:30px; right:30px; background:rgba(255,255,255,0.9); padding:16px; border-radius:8px; box-shadow:0 2px 8px rgba(0,0,0,0.15); z-index:1000; }
.hm-legend .hl-title { font-size:14px; font-weight:600; margin-bottom:8px; color:#111827; }
.hm-gradient { width:200px; height:20px; border-radius:4px; background:linear-gradient(to right,rgba(0,0,255,0.1),rgba(0,255,0,0.5),rgba(255,255,0,0.8),rgba(255,0,0,1)); }
.hm-labels { display:flex; justify-content:space-between; margin-top:6px; font-size:12px; color:#6b7280; }

/* ── 54. 报告页面 */
.rpt-wrap { max-width:900px; margin:0 auto; font-family:'PingFang SC','Microsoft YaHei',sans-serif; }
.rpt-cover { background:linear-gradient(135deg,#f0fdf4 0%,#dcfce7 100%); border:1px solid #bbf7d0; border-radius:16px; padding:48px 40px; text-align:center; margin-bottom:32px; }
.rpt-cover .rc-logo { margin-bottom:16px; }
.rpt-cover .rc-title { font-size:28px; font-weight:700; color:#14532d; margin:0 0 8px; }
.rpt-cover .rc-subtitle { font-size:16px; color:#15803d; margin:0 0 32px; }
.rpt-cover .rc-meta { display:flex; justify-content:center; gap:40px; flex-wrap:wrap; }
.rpt-cover .rc-meta-item { display:flex; flex-direction:column; align-items:center; gap:4px; }
.rpt-cover .rc-meta-label { font-size:12px; color:#6b7280; }
.rpt-cover .rc-meta-value { font-size:18px; color:#166534; font-weight:700; }
.rpt-section { margin-bottom:32px; }
.rpt-section-title { font-size:16px; font-weight:600; color:#374151; display:flex; align-items:center; gap:8px; margin:0 0 16px; padding-bottom:8px; border-bottom:2px solid #e5e7eb; }
.rpt-section-title i { color:#3b82f6; }
.rpt-summary-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:16px; }
.rpt-sc { border-radius:12px; padding:20px; text-align:center; }
.rpt-sc-blue { background:#eff6ff; border:1px solid #bfdbfe; }
.rpt-sc-green { background:#f0fdf4; border:1px solid #bbf7d0; }
.rpt-sc-purple { background:#faf5ff; border:1px solid #e9d5ff; }
.rpt-sc-orange { background:#fff7ed; border:1px solid #fed7aa; }
.rpt-si { font-size:24px; margin-bottom:8px; }
.rpt-sc-blue .rpt-si { color:#3b82f6; }
.rpt-sc-green .rpt-si { color:#16a34a; }
.rpt-sc-purple .rpt-si { color:#7c3aed; }
.rpt-sc-orange .rpt-si { color:#ea580c; }
.rpt-sn { font-size:28px; font-weight:700; color:#1e293b; line-height:1; margin-bottom:6px; }
.rpt-sl { font-size:12px; color:#6b7280; }
.rpt-cw { background:#fff; border:1px solid #e5e7eb; border-radius:10px; padding:16px; overflow:hidden; }
.rpt-2col { display:grid; grid-template-columns:1fr 1fr; gap:20px; }
.rpt-cc { background:#fff; border:1px solid #e5e7eb; border-radius:10px; padding:16px; overflow:hidden; min-width:0; }
.rpt-cc .rpt-section-title { border-bottom:1px solid #f3f4f6; font-size:14px; }
.rpt-table { width:100%; border-collapse:collapse; font-size:14px; background:#fff; border-radius:10px; overflow:hidden; border:1px solid #e5e7eb; }
.rpt-table th { background:#f9fafb; color:#374151; font-weight:600; padding:10px 16px; text-align:left; border-bottom:2px solid #e5e7eb; }
.rpt-table td { padding:9px 16px; border-bottom:1px solid #f3f4f6; color:#374151; }
.rpt-table tr:last-child td { border-bottom:none; }
.rpt-table tr:hover td { background:#f9fafb; }
.rpt-ft { background:#f9fafb; border:1px solid #e5e7eb; border-radius:8px; padding:16px 20px; }
.rpt-ft p { margin:4px 0; font-size:13px; color:#6b7280; }
@media (max-width:640px){ .rpt-summary-grid { grid-template-columns:repeat(2,1fr); } .rpt-2col { grid-template-columns:1fr; } }

/* ── 55. 团队活跃度排行 */
.ta-wrap { max-width:1200px; margin:24px auto; padding:0 16px; }
.ta-wrap .ta-hd { margin-bottom:32px; }
.ta-wrap .ta-title { font-size:24px; font-weight:700; color:#111827; margin-bottom:8px; }
.ta-wrap .ta-stats { display:flex; gap:20px; margin-bottom:32px; }
.ta-wrap .ta-sc { flex:1; background:#fff; border-radius:12px; padding:20px 28px; box-shadow:0 2px 8px rgba(0,0,0,0.08); }
.ta-wrap .ta-sl { font-size:13px; color:#6b7280; margin-bottom:8px; display:flex; align-items:center; gap:8px; }
.ta-wrap .ta-sv { font-size:28px; font-weight:700; color:#16a34a; }
.ta-wrap .ta-rank-list { display:grid; gap:16px; }
.ta-wrap .ta-tc { background:#fff; border-radius:12px; padding:24px; box-shadow:0 2px 8px rgba(0,0,0,0.08); position:relative; overflow:hidden; transition:all 0.2s; }
.ta-wrap .ta-tc:hover { transform:translateY(-2px); box-shadow:0 8px 24px rgba(0,0,0,0.12); }
.ta-wrap .ta-tc::before { content:''; position:absolute; left:0; top:0; bottom:0; width:6px; background:#16a34a; }
.ta-wrap .ta-tc.top-1::before { background:linear-gradient(to bottom,#fbbf24,#fcd34d); }
.ta-wrap .ta-tc.top-2::before { background:linear-gradient(to bottom,#9ca3af,#d1d5db); }
.ta-wrap .ta-tc.top-3::before { background:linear-gradient(to bottom,#f97316,#fb923c); }
.ta-wrap .ta-th { display:flex; justify-content:space-between; align-items:center; margin-bottom:16px; }
.ta-wrap .ta-ti { display:flex; align-items:center; gap:16px; flex:1; }
.ta-wrap .ta-rb { display:flex; align-items:center; justify-content:center; width:42px; height:42px; border-radius:50%; font-size:18px; font-weight:700; color:#fff; }
.ta-wrap .ta-r1 { background:linear-gradient(135deg,#fbbf24,#f59e0b); }
.ta-wrap .ta-r2 { background:linear-gradient(135deg,#9ca3af,#6b7280); }
.ta-wrap .ta-r3 { background:linear-gradient(135deg,#f97316,#ea580c); }
.ta-wrap .ta-rn { background:linear-gradient(135deg,#16a34a,#15803d); }
.ta-wrap .ta-tn { font-size:20px; font-weight:700; color:#111827; margin-bottom:4px; }
.ta-wrap .ta-tl { font-size:13px; color:#6b7280; }
.ta-wrap .ta-score { text-align:right; }
.ta-wrap .ta-scl { font-size:13px; color:#6b7280; margin-bottom:4px; }
.ta-wrap .ta-scv { font-size:32px; font-weight:700; color:#16a34a; }
.ta-wrap .ta-mg { display:grid; grid-template-columns:repeat(4,1fr); gap:16px; margin-top:16px; padding-top:16px; border-top:2px solid #f3f4f6; }
.ta-wrap .ta-mi { text-align:center; }
.ta-wrap .ta-mil { font-size:12px; color:#9ca3af; margin-bottom:6px; }
.ta-wrap .ta-miv { font-size:20px; font-weight:600; color:#374151; }
.ta-wrap .ta-miu { font-size:12px; color:#9ca3af; margin-left:2px; }
.ta-empty { text-align:center; padding:60px 20px; color:#9ca3af; }
.ta-empty i { font-size:64px; margin-bottom:16px; opacity:0.5; }
@media (max-width:768px){ .ta-wrap .ta-mg { grid-template-columns:repeat(2,1fr); } }

/* ── 56. 多样性指数页面 */
.div-wrap { max-width:1200px; margin:24px auto; padding:0 16px; }
.div-wrap .div-hd { margin-bottom:32px; }
.div-wrap .div-title { font-size:24px; font-weight:700; color:#111827; margin-bottom:8px; }
.div-wrap .indices-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:20px; margin-bottom:32px; }
.div-wrap .index-card { background:#fff; border-radius:12px; padding:24px; box-shadow:0 2px 8px rgba(0,0,0,0.08); border-left:4px solid #16a34a; }
.div-wrap .index-name { font-size:14px; color:#6b7280; margin-bottom:8px; display:flex; align-items:center; gap:8px; }
.div-wrap .index-value { font-size:32px; font-weight:700; color:#16a34a; margin-bottom:8px; }
.div-wrap .index-desc { font-size:13px; color:#9ca3af; line-height:1.5; }
.div-wrap .div-cg { display:grid; grid-template-columns:2fr 1fr; gap:20px; margin-bottom:32px; }
@media (max-width:768px){ .div-wrap .div-cg { grid-template-columns:1fr; } }
.ft-wrap { width:100%; background:#fff; border-radius:12px; overflow:hidden; box-shadow:0 2px 8px rgba(0,0,0,0.08); }
.ft-wrap .ft-hd { background:linear-gradient(135deg,#f0fdf4,#dcfce7); padding:16px 24px; border-bottom:2px solid #16a34a; }
.ft-wrap .ft-title { font-size:18px; font-weight:700; color:#111827; }
.rank-num { display:inline-flex; align-items:center; justify-content:center; width:28px; height:28px; border-radius:50%; font-size:13px; font-weight:700; }
.r1-bg { background:#fef3c7; color:#d97706; }
.r2-bg { background:#e5e7eb; color:#6b7280; }
.r3-bg { background:#fed7aa; color:#ea580c; }
.c-bar { height:6px; background:linear-gradient(to right,#16a34a,#86efac); border-radius:3px; display:inline-block; vertical-align:middle; margin-left:8px; }

/* ── 58. 补充分析页面通用 */
.ch-h-240 { height:240px; }
.c-94a3b8 { color:#94a3b8; }
.c-64748b { color:#64748b; }

/* ── 57. 统一仪表盘（Chart.js） */
.ud-stats { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:20px; margin-bottom:30px; }
.sbg { border-radius:12px; padding:24px; color:#fff; }
.sbg h4 { margin:0 0 8px; font-size:14px; opacity:0.9; font-weight:400; }
.sbg .sbv { font-size:36px; font-weight:700; margin-bottom:4px; }
.sbg .sbs { font-size:13px; opacity:0.8; }
.ud-cg { display:grid; grid-template-columns:repeat(auto-fit,minmax(450px,1fr)); gap:24px; margin-bottom:24px; }
.ud-cc { background:#fff; border-radius:12px; padding:24px; box-shadow:0 2px 8px rgba(0,0,0,0.06); }
.ud-cc h3 { margin:0 0 20px; font-size:16px; color:#1e293b; display:flex; align-items:center; gap:8px; }
.ud-cc h3 i { color:#3b82f6; }
.ud-cht { height:280px; position:relative; }
@media (max-width:768px){ .ud-cg { grid-template-columns:1fr; } }

/* ── 58. view.html 标本详情页 ── */
.view-action-bar { display:flex; justify-content:space-between; align-items:center; margin-bottom:1.5rem; flex-wrap:wrap; gap:.75rem; }
.btn-back-link { display:inline-flex; align-items:center; gap:.5rem; padding:8px 18px; background:#fff; border:1px solid #e2e8f0; border-radius:12px; font-size:13px; font-weight:600; color:#475569; text-decoration:none; }
.btn-edit-green { display:inline-flex; align-items:center; gap:.5rem; padding:8px 18px; background:#00b42a; color:#fff; border-radius:12px; font-size:13px; font-weight:700; text-decoration:none; box-shadow:0 4px 12px rgba(0,180,42,.25); }
.btn-delete-outline { display:inline-flex; align-items:center; gap:.5rem; padding:8px 18px; background:#fef2f2; color:#ef4444; border:1px solid #fecaca; border-radius:12px; font-size:13px; font-weight:600; cursor:pointer; }
.inline-form { display:inline; }
.view-hero-grid { display:grid; grid-template-columns:2fr 1fr; gap:1.75rem; align-items:stretch; margin-bottom:1.75rem; }
.view-hero-wrap { border-radius:24px; overflow:hidden; position:relative; height:420px; box-shadow:0 20px 50px rgba(0,0,0,.12); }
.hero-img { width:100%; height:100%; object-fit:cover; cursor:pointer; transition:transform .7s; }
.no-image-box { width:100%; height:100%; overflow:hidden; }
.no-image-box img { width:100%; height:100%; object-fit:cover; }
.hero-gradient-overlay { position:absolute; inset:0; background:linear-gradient(to top,rgba(0,0,0,.65) 0%,rgba(0,0,0,.1) 45%,transparent 70%); pointer-events:none; }
.hero-title-area { position:absolute; bottom:2rem; left:2rem; color:#fff; }
.hero-chinese-name { font-size:2.4rem; font-weight:700; margin:0 0 .35rem; text-shadow:0 2px 10px rgba(0,0,0,.4); line-height:1.1; }
.hero-latin-name { font-size:1.05rem; font-style:italic; color:rgba(255,255,255,.82); margin:0; }
.hero-thumbnails { position:absolute; bottom:.75rem; right:1rem; display:flex; gap:.4rem; }
.hero-thumb-item { width:42px; height:42px; border-radius:8px; overflow:hidden; border:2px solid rgba(255,255,255,.65); cursor:pointer; flex-shrink:0; transition:border-color .2s; }
.hero-thumb-item:hover { border-color:#fff; }
.view-glass-card { background:rgba(255,255,255,.78); backdrop-filter:blur(12px); border:1px solid rgba(255,255,255,.4); box-shadow:0 8px 32px rgba(0,0,0,0.08); border-radius:24px; overflow:hidden; margin-bottom:1.75rem; }
.view-card-header { padding:1.25rem 1.5rem; background:linear-gradient(180deg,#f8fafc,#f1f5f9); border-bottom:1.5px solid #e2e8f0; display:flex; align-items:center; gap:.6rem; }
.view-card-title { font-size:.9rem; font-weight:700; color:#111827; }
.view-card-body { padding:1.5rem; }
.taxonomy-items { display:flex; flex-direction:column; gap:1rem; }
.taxonomy-item { border-left:3px solid #dcfce7; padding-left:1rem; }
.taxonomy-item-green { border-left:3px solid #86efac; padding-left:1rem; }
.taxonomy-label { color:#6b7280; font-size:.75rem; margin:0 0 3px; }
.taxonomy-value { color:#121A16; font-weight:600; margin:0; font-size:.88rem; }
.taxonomy-latin { font-weight:400; color:#64748b; font-style:italic; }
.taxonomy-meta-grid { display:grid; grid-template-columns:1fr 1fr; gap:.75rem; margin-top:1.5rem; padding-top:1.25rem; border-top:1px solid #f3f4f6; }
.taxonomy-meta-item { background:#f0fdf4; border-radius:14px; padding:.875rem; }
.taxonomy-meta-item-gray { background:#f9fafb; border-radius:14px; padding:.875rem; }
.taxonomy-meta-label { font-size:.65rem; color:#16a34a; font-weight:700; margin:0 0 4px; text-transform:uppercase; letter-spacing:.05em; }
.taxonomy-meta-label-gray { font-size:.65rem; color:#6b7280; font-weight:700; margin:0 0 4px; text-transform:uppercase; letter-spacing:.05em; }
.taxonomy-meta-value { font-size:.85rem; font-weight:700; color:#111827; margin:0; word-break:break-all; }
.taxonomy-meta-value-gray { font-size:.85rem; font-weight:700; color:#9ca3af; margin:0; }
.view-info-columns { display:flex; flex-direction:column; gap:1.5rem; }
.view-info-matrix { background:rgba(255,255,255,.78); backdrop-filter:blur(12px); border:1px solid rgba(255,255,255,.4); box-shadow:0 8px 32px rgba(0,0,0,.05); border-radius:24px; padding:1.75rem; display:grid; grid-template-columns:repeat(4,1fr); gap:1.5rem; }
.view-info-header { display:flex; align-items:center; gap:.4rem; margin-bottom:.5rem; }
.view-info-label { color:#6b7280; font-size:.75rem; }
.view-code-value { font-size:1.15rem; font-weight:700; letter-spacing:.04em; margin:0; color:#121A16; font-family:monospace; }
.view-info-value { font-size:.88rem; font-weight:700; margin:0; color:#121A16; }
.view-desc-card { background:rgba(255,255,255,.78); backdrop-filter:blur(12px); border:1px solid rgba(255,255,255,.4); box-shadow:0 8px 32px rgba(0,0,0,.05); border-radius:24px; padding:1.75rem; flex:1; }
.view-desc-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:1.5rem; }
.view-desc-title { font-size:.95rem; font-weight:700; color:#111827; display:flex; align-items:center; gap:.5rem; margin:0; }
.view-desc-meta { font-size:.68rem; color:#9ca3af; }
.view-desc-text { color:#4b5563; font-size:.9rem; line-height:1.85; white-space:pre-wrap; }
.view-desc-empty { display:flex; flex-direction:column; align-items:center; justify-content:center; padding:2.5rem 0; color:#94a3b8; text-align:center; }
.glass-card-gap { margin-bottom:1.75rem; }
.gallery-section { background:rgba(255,255,255,.78); backdrop-filter:blur(12px); border:1px solid rgba(255,255,255,.4); box-shadow:0 8px 32px rgba(0,0,0,.05); border-radius:24px; padding:1.5rem; margin-bottom:1.75rem; }
.gallery-section-title { font-size:.9rem; font-weight:700; color:#111827; margin:0 0 1rem; display:flex; align-items:center; gap:.5rem; }
.all-images-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(130px,1fr)); gap:10px; }
.gallery-item-box { border-radius:12px; overflow:hidden; height:120px; cursor:pointer; box-shadow:0 2px 8px rgba(0,0,0,.08); transition:transform .2s,box-shadow .2s; }
.gallery-item-box:hover { transform:scale(1.04); box-shadow:0 8px 20px rgba(0,0,0,.12); }
.image-modal-overlay { display:none; position:fixed; inset:0; z-index:9999; background:rgba(0,0,0,.92); align-items:center; justify-content:center; }
.image-modal-close { position:absolute; top:1.5rem; right:2rem; font-size:2.2rem; color:#fff; cursor:pointer; line-height:1; z-index:1; background:none; border:none; }
.image-modal-content { position:relative; display:flex; align-items:center; justify-content:center; max-width:90%; max-height:90%; }
.image-modal-img { max-width:90vw; max-height:85vh; border-radius:12px; object-fit:contain; box-shadow:0 20px 60px rgba(0,0,0,.5); }
.image-modal-counter { position:absolute; bottom:1.5rem; left:50%; transform:translateX(-50%); color:rgba(255,255,255,.7); font-size:13px; }
.image-modal-nav { position:absolute; top:50%; transform:translateY(-50%); background:rgba(255,255,255,.15); border:none; color:#fff; width:46px; height:46px; border-radius:50%; cursor:pointer; font-size:1.1rem; display:flex; align-items:center; justify-content:center; transition:background .2s; }
.image-modal-nav:hover { background:rgba(255,255,255,.3); }
.image-modal-nav-left { left:1.5rem; }
.image-modal-nav-right { right:1.5rem; }
.history-section { background:rgba(255,255,255,.78); backdrop-filter:blur(12px); border:1px solid rgba(255,255,255,.4); box-shadow:0 8px 32px rgba(0,0,0,.05); border-radius:24px; overflow:hidden; margin-top:2rem; margin-bottom:1.75rem; }
.history-table { width:100%; border-collapse:collapse; }
.history-thead { background:#f8fafc; }
.history-th { padding:10px 20px; font-size:11px; font-weight:700; color:#64748b; text-transform:uppercase; letter-spacing:.06em; white-space:nowrap; text-align:left; border-bottom:1px solid #e2e8f0; }
.history-td { padding:11px 20px; font-size:12px; color:#6b7280; white-space:nowrap; font-family:monospace; }
.history-td-name { padding:11px 20px; font-size:13px; font-weight:600; color:#374151; white-space:nowrap; }
.history-td-changes { padding:11px 20px; }
.history-td-actions { padding:11px 20px; text-align:center; }
.history-row { border-top:1px solid #f1f5f9; transition:background .15s; }
.history-row:hover { background:#f8fafc; }
.history-changes-wrap { display:flex; flex-wrap:wrap; gap:6px; }
.history-change-tag { display:inline-flex; align-items:center; gap:4px; background:#f1f5f9; border-radius:8px; padding:3px 10px; font-size:11px; color:#475569; }
.history-change-field { font-weight:600; color:#6366f1; }
.history-change-old { color:#94a3b8; }
.history-change-new { color:#16a34a; }
.history-change-sep { color:#9ca3af; }
.history-no-detail { font-size:12px; color:#94a3b8; }
.history-empty { padding:2.5rem; text-align:center; color:#94a3b8; }
.history-empty-icon { font-size:36px; margin-bottom:.75rem; display:block; }
.history-empty-text { margin:0; font-size:.875rem; }
.restore-btn { display:inline-flex; align-items:center; gap:4px; padding:5px 12px; background:#f0fdf4; color:#16a34a; border:1px solid #bbf7d0; border-radius:8px; font-size:11px; font-weight:600; cursor:pointer; transition:all .2s; }
.restore-btn:hover { background:#dcfce7; }
.restore-disabled { font-size:11px; color:#d1d5db; }
@media (max-width: 900px) {
    .view-hero-grid { grid-template-columns:1fr !important; }
    .view-info-matrix { grid-template-columns:repeat(2,1fr) !important; }
}
@media (max-width: 480px) {
    .view-info-matrix { grid-template-columns:1fr 1fr !important; }
}

/* ── 59. edit.html 编辑页面 ── */
.code-display-box { display:flex; align-items:center; gap:8px; padding:9px 14px; background:#f1f5f9; border-radius:8px; border:1px solid #e2e8f0; min-height:42px; }
.warn-box { background:#fff8f0; border:1px dashed #fbbf24; border-radius:8px; padding:12px 14px; margin-top:4px; }
.autocomplete-pos { position:relative; }
.field-search-icon { position:absolute; right:12px; top:50%; transform:translateY(-50%); color:#93c5fd; pointer-events:none; font-size:13px; }
.correction-btn-inline { background:none; border:1px solid #fca5a5; color:#ef4444; border-radius:5px; padding:2px 8px; font-size:11px; cursor:pointer; margin-left:8px; vertical-align:middle; }
.exif-hint-bar { display:none; margin-top:10px; padding:10px 14px; border-radius:6px; background:#eff6ff; border:1px solid #bfdbfe; color:#1d4ed8; font-size:13px; align-items:center; gap:12px; flex-wrap:wrap; justify-content:space-between; }
.exif-extract-btn { background:linear-gradient(135deg,#3b82f6,#2563eb); color:#fff; border:none; padding:7px 16px; border-radius:7px; font-size:13px; font-weight:600; cursor:pointer; white-space:nowrap; flex-shrink:0; }
.upload-status-bar { display:none; margin-top:10px; padding:10px; border-radius:4px; border:1px solid; }
.img-upload-area { display:flex; align-items:center; justify-content:center; border:2px dashed #e2e8f0; border-radius:8px; padding:20px; min-width:150px; min-height:150px; cursor:pointer; transition:all 0.3s ease; }
.upload-label { display:flex; flex-direction:column; align-items:center; justify-content:center; cursor:pointer; text-align:center; }
.save-status-bar { display:none; margin:20px 0; padding:15px; border-radius:8px; border:2px solid; font-weight:500; }
.save-status-inner { display:flex; align-items:center; justify-content:space-between; }
.save-status-left { display:flex; align-items:center; }
.sell-modal-overlay { display:none; position:fixed; inset:0; background:rgba(0,0,0,0.5); z-index:9999; align-items:center; justify-content:center; padding:20px; }
.sell-modal-box { background:#fff; border-radius:14px; padding:28px; width:100%; max-width:500px; position:relative; max-height:90vh; overflow-y:auto; }
.sell-modal-close { position:absolute; top:12px; right:16px; background:none; border:none; font-size:20px; cursor:pointer; color:#9ca3af; }
.sell-modal-title { margin:0 0 20px; color:#1f2937; font-size:16px; display:flex; align-items:center; gap:8px; }
.sell-type-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.sell-type-card { border:2px solid #e5e7eb; border-radius:10px; padding:14px; text-align:center; cursor:pointer; transition:all 0.15s; }
.sell-type-icon { font-size:24px; margin-bottom:6px; }
.sell-type-hint { font-size:11px; color:#9ca3af; margin-top:2px; }
.inline-action-group { display:flex; gap:8px; align-items:center; }
.correction-modal-overlay { display:none; position:fixed; inset:0; background:rgba(0,0,0,0.5); z-index:9999; align-items:center; justify-content:center; padding:20px; }
.correction-modal-box { background:#fff; border-radius:12px; padding:28px; width:440px; max-width:95%; box-shadow:0 10px 40px rgba(0,0,0,0.2); }
.correction-modal-title { margin:0 0 16px 0; color:#1e293b; font-size:15px; }
.correction-field-label { font-size:13px; display:block; margin-bottom:4px; }
.correction-input { width:100%; padding:8px 10px; border:1px solid #d1d5db; border-radius:6px; font-size:13px; box-sizing:border-box; }
.correction-input-readonly { width:100%; padding:8px 10px; border:1px solid #e2e8f0; border-radius:6px; background:#f8fafc; font-size:13px; color:#64748b; box-sizing:border-box; }
.correction-msg-box { display:none; padding:8px 12px; border-radius:6px; font-size:13px; margin-bottom:12px; }
.correction-modal-actions { display:flex; gap:10px; justify-content:flex-end; }
.no-image-placeholder { position:relative; display:flex; align-items:center; justify-content:center; border:2px dashed #e2e8f0; border-radius:8px; min-width:180px; min-height:180px; background:linear-gradient(135deg,#f8fafc 0%,#e2e8f0 100%); }
.no-image-placeholder-inner { text-align:center; color:#64748b; }
.img-icon-lg { font-size:36px; margin-bottom:12px; color:#cbd5e1; }
.text-muted-sm { margin:0; font-size:14px; font-weight:500; color:#94a3b8; }
.image-item-wrap { position:relative; display:inline-block; border-radius:8px; overflow:hidden; box-shadow:0 1px 4px rgba(0,0,0,0.1); }
.image-delete-bar { display:flex; gap:4px; padding:4px 5px; background:rgba(0,0,0,0.04); }
.edit-specimen-img { position:relative; z-index:1; width:130px; height:130px; object-fit:cover; cursor:zoom-in; display:block; }
.edit-sell-type-card.selected { border-color:#f59e0b; background:#fffbeb; }
@media (max-width:560px) {
    .sell-modal-box { padding:20px !important; margin:10px !important; max-height:85vh !important; overflow-y:auto !important; }
    .sell-type-card { padding:10px !important; }
}

/* ── 59b. edit.html additional classes ── */
.edit-hr { margin:15px 0; border:1px solid #e2e8f0; }
.image-grid { display:flex; flex-wrap:wrap; gap:15px; align-items:flex-start; }
.hidden-input { display:none; }
.upload-plus-icon { font-size:24px; color:#94a3b8; margin-bottom:8px; }
.upload-text { color:#64748b; font-size:14px; }
.upload-status-bar { display:none; margin-top:10px; padding:10px; border-radius:4px; border:1px solid; }
.exif-hint-inner { display:flex; align-items:center; gap:8px; flex:1; min-width:0; }
.exif-hint-icon { flex-shrink:0; font-size:15px; }
.code-lock-icon { color:#94a3b8; font-size:13px; flex-shrink:0; }
.code-value { font-size:14px; color:#374151; font-weight:500; }
.code-readonly-hint { margin-left:auto; font-size:12px; color:#94a3b8; white-space:nowrap; }
.warn-box-label { color:#92400e; font-weight:600; font-size:13px; }
.warn-box-icon { color:#f59e0b; }
.warn-box-hint { font-size:11px; font-weight:normal; color:#b45309; margin-left:6px; }
.fails-log { font-size:13px; resize:vertical; }
.ac-hint { font-size:11px; color:#6b7280; font-weight:normal; margin-left:4px; }
.ac-field { padding-right:36px; border-color:#93c5fd; background:#f8fbff; }
.voice-btn { margin-left:8px; background:linear-gradient(135deg,#3b82f6,#1d4ed8); border:none; border-radius:6px; padding:4px 10px; color:#fff; font-size:12px; cursor:pointer; display:none; align-items:center; gap:4px; vertical-align:middle; }
.exif-extract-bar { display:none; margin-bottom:12px; padding:10px 14px; background:#f0fdf4; border:1px solid #bbf7d0; border-radius:8px; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; }
.exif-extract-text { font-size:13px; color:#166534; }
.exif-camera-icon { margin-right:6px; }
.exif-extract-btn-green { background:linear-gradient(135deg,#22c55e,#16a34a); color:#fff; border:none; padding:7px 18px; border-radius:7px; font-size:13px; font-weight:600; cursor:pointer; white-space:nowrap; }
.save-status-icon { margin-right:10px; font-size:18px; }
.close-status-btn { background:none; border:none; color:inherit; cursor:pointer; }
.btn-sell { background:#f59e0b; color:#fff; border-color:#f59e0b; margin-left:8px; }
.btn-sold { background:#10b981; color:#fff; border-color:#10b981; margin-left:8px; }
.correction-modal-subtitle { font-size:11px; color:#94a3b8; font-weight:normal; margin-left:8px; }
.correction-field-row { margin-bottom:12px; }
.correction-field-row-last { margin-bottom:18px; }
.correction-textarea { resize:vertical; }
.correction-btn-cancel { padding:8px 18px; border:1px solid #d1d5db; border-radius:6px; background:#fff; cursor:pointer; font-size:13px; }
.correction-btn-submit { padding:8px 18px; border:none; border-radius:6px; background:#ef4444; color:#fff; cursor:pointer; font-size:13px; }
.sell-modal-store-icon { color:#f59e0b; }
.sell-modal-desc { font-size:13px; color:#6b7280; margin:0 0 18px; }
.sell-modal-section { margin-bottom:18px; }
.sell-modal-label { display:block; font-size:13px; color:#374151; margin-bottom:8px; font-weight:600; }
.sell-type-label { cursor:pointer; }
.sell-type-radio { display:none; }
.sell-subtype-options { display:flex; flex-wrap:wrap; gap:8px; }
.sell-modal-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:14px; }
.sell-modal-field-label { display:block; font-size:13px; color:#374151; margin-bottom:6px; font-weight:500; }
.sell-modal-input { width:100%; padding:9px 12px; border:1px solid #d1d5db; border-radius:6px; font-size:14px; box-sizing:border-box; }
.sell-modal-error { display:none; color:#ef4444; font-size:13px; margin-bottom:10px; }
.sell-btn-cancel { padding:9px 20px; background:#f3f4f6; color:#374151; border:none; border-radius:6px; cursor:pointer; font-size:14px; }
.sell-btn-submit { padding:9px 20px; background:#f59e0b; color:#fff; border:none; border-radius:6px; cursor:pointer; font-size:14px; font-weight:600; }
.correction-flag-icon { color:#ef4444; margin-right:8px; }
.required-star { color:#ef4444; }

/* ── Tab active state for my_orders page ── */
.tab-btn-base.active { color:#16a34a; border-bottom-color:#16a34a; }

/* ── 62. detail.html 交易详情页 ── */
.detail-back-btn { display:inline-flex; align-items:center; gap:7px; background:linear-gradient(135deg,#3b82f6,#2563eb); color:#fff; text-decoration:none; font-size:13px; font-weight:600; padding:8px 18px; border-radius:20px; box-shadow:0 3px 10px rgba(59,130,246,0.35); transition:all .2s; }
.detail-back-btn:hover { box-shadow:0 5px 16px rgba(59,130,246,0.5); }
.detail-gallery-card { background:#fff; border-radius:12px; box-shadow:0 2px 8px rgba(0,0,0,0.06); padding:16px; }
.detail-main-img-wrap { position:relative; background:#f3f4f6; border-radius:8px; height:300px; overflow:hidden; }
.detail-main-img { width:100%; height:100%; object-fit:cover; display:block; user-select:none; -webkit-user-drag:none; }
.detail-img-shield { position:absolute; inset:0; z-index:2; cursor:zoom-in; }
.detail-wm-canvas { position:absolute; inset:0; width:100%; height:100%; z-index:3; pointer-events:none; }
.detail-no-img-box { width:100%; height:100%; overflow:hidden; }
.detail-no-img-box img { width:100%; height:100%; object-fit:cover; }
.detail-type-tag-wrap { position:absolute; top:12px; left:14px; display:flex; flex-direction:column; gap:4px; z-index:3; }
.detail-type-tag { color:#fff; padding:3px 10px; border-radius:20px; font-size:12px; font-weight:600; }
.detail-type-tag-purple { background:#7c3aed; }
.detail-type-tag-cyan { background:#0e7490; }
.detail-subtype-tag { background:rgba(0,0,0,0.55); color:#fff; padding:2px 10px; border-radius:20px; font-size:11px; }
.detail-img-count-badge { position:absolute; bottom:12px; right:14px; z-index:3; background:rgba(0,0,0,0.45); color:#fff; font-size:12px; padding:3px 10px; border-radius:20px; backdrop-filter:blur(4px); display:inline-flex; align-items:center; gap:4px; }
.detail-thumb-strip { display:flex; gap:8px; margin-top:12px; overflow-x:auto; padding-bottom:2px; }
.detail-thumb-item { width:70px; height:70px; flex-shrink:0; object-fit:cover; border-radius:8px; cursor:pointer; border:2px solid transparent; transition:border-color 0.2s, opacity 0.2s; opacity:0.75; }
.detail-thumb-item.active { border-color:#3b82f6; opacity:1; }
.detail-thumb-item:hover { opacity:1; }
.detail-info-card { background:#fff; border-radius:12px; box-shadow:0 2px 8px rgba(0,0,0,0.06); padding:24px; }
.detail-info-header { display:flex; align-items:center; gap:12px; margin-bottom:16px; }
.detail-status-sold { background:#fef2f2; color:#dc2626; padding:4px 12px; border-radius:20px; font-size:12px; }
.detail-status-active { background:#d1fae5; color:#065f46; padding:4px 12px; border-radius:20px; font-size:12px; }
.detail-product-type-text { margin-left:auto; font-size:13px; color:#4b5563; }
.detail-info-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; font-size:14px; color:#374151; }
.detail-info-label { color:#9ca3af; font-size:12px; }
.detail-info-value { font-weight:500; margin-top:2px; }
.detail-desc-box { margin-top:14px; padding-top:14px; border-top:1px solid #f3f4f6; font-size:13px; color:#6b7280; }
.detail-buy-bar { background:#fff; border-radius:12px; box-shadow:0 2px 8px rgba(0,0,0,0.06); padding:20px; display:flex; align-items:center; justify-content:space-between; gap:16px; }
.detail-price-big { font-size:28px; font-weight:700; color:#ef4444; }
.detail-price-note { font-size:12px; color:#9ca3af; margin-top:2px; }
.detail-fee-badge { font-size:11px; color:#f59e0b; margin-top:4px; background:#fffbeb; padding:3px 8px; border-radius:4px; display:inline-block; }
.detail-btn-primary { padding:12px 28px; background:#3b82f6; color:#fff; border:none; border-radius:8px; cursor:pointer; font-size:15px; font-weight:600; text-decoration:none; display:inline-block; }
.detail-seller-card { background:#fffbeb; border:1px solid #fde68a; border-radius:12px; padding:16px; font-size:14px; color:#92400e; display:flex; justify-content:space-between; align-items:center; }
.detail-actions-row { display:flex; gap:8px; flex-wrap:wrap; }
.detail-btn-edit { padding:6px 16px; background:#eff6ff; color:#2563eb; border:1px solid #bfdbfe; border-radius:6px; cursor:pointer; font-size:13px; font-weight:600; }
.detail-btn-orange { padding:6px 16px; background:#f59e0b; color:#fff; border:none; border-radius:6px; cursor:pointer; font-size:13px; }
.ship-section-card { background:#fff; border-radius:12px; box-shadow:0 2px 8px rgba(0,0,0,0.06); padding:20px; }
.detail-complete-box { background:#d1fae5; border-radius:10px; padding:16px; text-align:center; color:#065f46; }
.detail-complete-icon { font-size:28px; display:block; margin-bottom:8px; }
.detail-complete-title { font-weight:700; font-size:15px; }
.detail-complete-meta { font-size:12px; color:#6b7280; margin-top:6px; }
.detail-complete-breakdown { margin-top:10px; font-size:13px; color:#374151; }
.detail-text-danger { color:#ef4444; }
.detail-text-success { color:#10b981; font-weight:700; }
.detail-section-h4 { margin:0 0 14px; color:#1f2937; font-size:14px; }
.detail-buyer-card { background:#f0fdf4; border:1px solid #bbf7d0; border-radius:8px; padding:12px 16px; font-size:13px; color:#065f46; margin-bottom:14px; }
.detail-buyer-card h4 { font-weight:600; margin-bottom:8px; }
.detail-addr-grid { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.detail-ship-info { background:#eff6ff; border-radius:8px; padding:12px 16px; font-size:13px; color:#1e40af; margin-bottom:14px; }
.detail-ship-info-details { margin-top:8px; display:flex; flex-direction:column; gap:6px; }
.detail-form-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:10px; }
.detail-form-label { font-size:12px; color:#6b7280; display:block; margin-bottom:4px; }
.detail-form-input { width:100%; padding:8px 10px; border:1px solid #d1d5db; border-radius:6px; font-size:14px; box-sizing:border-box; }
.detail-btn-purple { padding:8px 18px; background:#6366f1; color:#fff; border:none; border-radius:6px; cursor:pointer; font-size:13px; }
.detail-btn-full { width:100%; padding:10px; background:#3b82f6; color:#fff; border:none; border-radius:6px; cursor:pointer; font-size:14px; font-weight:600; }
.detail-warn-card { background:#fef3c7; border-radius:8px; padding:12px 14px; font-size:13px; color:#92400e; margin-bottom:14px; }
.detail-form-label-bold { font-size:12px; color:#374151; font-weight:600; display:block; margin-bottom:4px; }
.detail-required { color:#ef4444; }
.detail-phone-box { margin-bottom:12px; background:#f9fafb; border-radius:6px; padding:10px; font-size:13px; color:#374151; }
.detail-buyer-banner { background:#d1fae5; border-radius:12px; padding:16px; font-size:14px; color:#065f46; }
.detail-confirm-box { background:#d1fae5; border-radius:10px; padding:16px; text-align:center; color:#065f46; }
.detail-tracking-wrap { margin-top:14px; display:flex; flex-direction:column; gap:10px; font-size:14px; }
.detail-tracking-row { display:flex; align-items:center; gap:10px; background:#eff6ff; border-radius:8px; padding:12px 16px; }
.detail-tracking-icon { color:#3b82f6; font-size:20px; }
.detail-tracking-field-label { font-size:11px; color:#6b7280; margin-bottom:2px; }
.detail-tracking-number { font-size:16px; font-weight:700; font-family:monospace; color:#1f2937; letter-spacing:1px; }
.detail-tracking-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.detail-info-panel { background:#f9fafb; border-radius:8px; padding:10px 14px; }
.detail-panel-label { font-size:11px; color:#6b7280; margin-bottom:2px; }
.detail-panel-value { font-weight:600; }
.detail-receiver-card { background:#f0fdf4; border:1px solid #bbf7d0; border-radius:8px; padding:12px 16px; font-size:13px; color:#374151; margin-bottom:12px; }
.detail-receiver-title { font-weight:600; color:#065f46; margin-bottom:8px; }
.detail-tracking-display { display:flex; align-items:center; gap:10px; background:#eff6ff; border-radius:8px; padding:12px 16px; margin-bottom:12px; }
.detail-grid-2col { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:14px; }
.detail-confirm-receipt-btn { width:100%; padding:12px; background:#10b981; color:#fff; border:none; border-radius:8px; cursor:pointer; font-size:15px; font-weight:700; }
.detail-confirm-hint { font-size:12px; color:#9ca3af; text-align:center; margin:8px 0 0; }
.detail-waiting-state { text-align:center; padding:20px; color:#9ca3af; }
.detail-waiting-icon { font-size:28px; display:block; margin-bottom:8px; }
.detail-locked-card { background:#fff; border-radius:12px; box-shadow:0 2px 8px rgba(0,0,0,0.06); padding:24px; }
.detail-locked-title { margin:0 0 16px; color:#1f2937; font-size:14px; display:flex; align-items:center; gap:6px; }
.detail-locked-fields { display:flex; flex-direction:column; gap:12px; font-size:14px; color:#374151; }
.detail-coords-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.detail-locked-mono { font-weight:500; margin-top:2px; font-family:monospace; }
.detail-locked-habitat { font-weight:500; margin-top:2px; line-height:1.6; }
.detail-locked-placeholder { background:#f9fafb; border:2px dashed #d1d5db; border-radius:12px; padding:32px; text-align:center; color:#9ca3af; }
.detail-img-modal { display:none; position:fixed; inset:0; z-index:9000; background:rgba(0,0,0,0.82); align-items:center; justify-content:center; backdrop-filter:blur(6px); }
.detail-img-modal-inner { position:relative; display:inline-flex; }
.detail-modal-img { max-width:90vw; max-height:88vh; border-radius:12px; object-fit:contain; box-shadow:0 20px 60px rgba(0,0,0,0.5); display:block; user-select:none; -webkit-user-drag:none; pointer-events:none; }
.detail-modal-shield { position:absolute; inset:0; cursor:default; }
.detail-modal-close-circle { position:absolute; top:-14px; right:-14px; width:32px; height:32px; border-radius:50%; background:#fff; border:none; cursor:pointer; font-size:18px; line-height:1; box-shadow:0 2px 8px rgba(0,0,0,0.3); display:flex; align-items:center; justify-content:center; z-index:1; }
.detail-edit-modal { display:none; position:fixed; inset:0; background:rgba(0,0,0,0.45); z-index:9000; align-items:center; justify-content:center; }
.detail-edit-box { background:#fff; border-radius:16px; padding:28px 24px; width:92%; max-width:420px; box-shadow:0 8px 40px rgba(0,0,0,0.18); }
.detail-edit-modal-title { font-size:16px; font-weight:700; color:#111827; margin-bottom:18px; }
.detail-edit-modal-title i { color:#3b82f6; margin-right:6px; }
.detail-edit-label { font-size:13px; color:#374151; margin-bottom:5px; display:block; }
.detail-edit-field { width:100%; box-sizing:border-box; padding:9px 12px; border:1px solid #d1d5db; border-radius:8px; font-size:14px; margin-bottom:14px; }
.detail-edit-area { width:100%; box-sizing:border-box; padding:9px 12px; border:1px solid #d1d5db; border-radius:8px; font-size:14px; margin-bottom:14px; resize:vertical; }
.detail-edit-actions { display:flex; gap:10px; justify-content:flex-end; }
.detail-btn-ghost { padding:9px 18px; background:#f3f4f6; color:#374151; border:none; border-radius:8px; cursor:pointer; font-size:14px; }
.detail-btn-blue { padding:9px 22px; background:#3b82f6; color:#fff; border:none; border-radius:8px; cursor:pointer; font-size:14px; font-weight:600; }
@media (max-width:900px) {
  .detail-buy-bar { flex-direction:column; align-items:stretch; gap:12px; }
  .detail-buy-bar form button { width:100%; }
  .detail-buy-bar a { width:100%; text-align:center; }
  .detail-info-grid { grid-template-columns:1fr 1fr; }
}
@media (max-width:560px) {
  .detail-form-grid { grid-template-columns:1fr; }
  .detail-info-header { flex-wrap:wrap; }
  .detail-product-type-text { margin-left:0; font-size:12px; }
}

/* ── 63. Additional utility classes ── */
.fs-17 { font-size:17px; }
.fs-22 { font-size:22px; }
.c-15803d { color:#15803d; }
.object-fit-cover { object-fit:cover; }

/* detail-main grid layout (extracted from template <style> block) */
.detail-main {
  display: grid;
  grid-template-columns: 380px 1fr;
  gap: 22px;
  align-items: start;
}
.detail-info { display: flex; flex-direction: column; gap: 16px; }

.detail-addr-label { color:#6b7280; }
html.detail-img-modal-open { overflow:hidden; }

/* AMap 隐藏版权/Logo */
#specimen-map .amap-copyright,
#specimen-map .amap-logo { display:none !important; }

.sell-subtype-btn {
  padding:6px 14px;
  border:2px solid #e5e7eb;
  border-radius:20px;
  background:#fff;
  cursor:pointer;
  font-size:13px;
  transition:all 0.15s;
}
.sell-subtype-btn.active {
  border-color:#f59e0b;
  background:#fffbeb;
  color:#92400e;
}

@media (max-width: 900px) {
  .detail-main { grid-template-columns: 1fr; }
}

/* ── 64. Text color utility classes (Tailwind-compatible naming) ── */
.text-green-200 { color:#a7f3d0; }
.text-green-500 { color:#10b981; }
.text-green-600 { color:#16a34a; }
.text-blue-500 { color:#3b82f6; }
.text-yellow-500 { color:#f59e0b; }
.text-purple-500 { color:#8b5cf6; }
.text-purple-700 { color:#5b21b6; }
.text-indigo-500 { color:#6366f1; }
.text-pink-500 { color:#ec4899; }
.text-sky-500 { color:#0ea5e9; }
.text-gray-500 { color:#6b7280; }
.text-gray-800 { color:#1f2937; }
.text-white-70 { color:rgba(255,255,255,0.65); }

/* ── 65. Spacing/size utility classes ── */
.mb-15 { margin-bottom:15px; }
.mt-30 { margin-top:30px; }
.w-40 { width:40px; }
.lh-17 { line-height:1.7; }

/* ── 66. Custom icon box classes ── */
.icon-box-orange-sm {
  background:linear-gradient(135deg,#f59e0b,#d97706);
  width:28px;
  height:28px;
  font-size:11px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:50%;
}
