/* ═══════════════════════════════════════════════
   爱守界 · iShouJie Design — 两套皮肤 + 检测页重设计
   2026-07-07
   ═══════════════════════════════════════════════ */

/* ── Dark Pro Skin (default) ── */
:root, [data-skin="dark"] {
  --bg-base: #0a0b0f;
  --bg-body: #0d0f14;
  --bg-surface: #13151b;
  --bg-card: #181a21;
  --bg-elevated: #1e2028;
  --bg-hover: #252730;
  --bg-input: #111318;
  --border-subtle: #1e2028;
  --border-default: #2a2c35;
  --border-strong: #3a3c46;
  --text-primary: #eceef2;
  --text-secondary: #a2a6b0;
  --text-tertiary: #71767f;
  --text-placeholder: #5a5f6a;
  --accent: #14b8a6;
  --accent-hover: #0dd4be;
  --accent-subtle: rgba(20,184,166,0.10);
  --accent-glow: 0 0 20px rgba(20,184,166,0.15);
  --danger: #ef4444; --danger-subtle: var(--danger-subtle);
  --warning: #f59e0b; --warning-subtle: var(--warning-subtle);
  --success: #22c55e; --success-subtle: var(--success-subtle);
  --info: #3b82f6; --info-subtle: var(--info-subtle);
  --purple: #8b5cf6; --purple-subtle: var(--purple-subtle);
  --overlay: rgba(0,0,0,0.5);
  --shadow-sm: 0 1px 2px rgba(0,0,0,0.3);
  --shadow-md: 0 4px 12px rgba(0,0,0,0.4);
  --shadow-lg: 0 8px 32px rgba(0,0,0,0.5);
  --hero-gradient: linear-gradient(155deg, #0a0d18 0%, #0d1a22 40%, #0f1d1f 70%, #0d1518 100%);
  --tw-hl: #1e3a2f; --tw-bg: #122318;
  --topbar-bg: rgba(13,15,20,0.82);
  --tabbar-bg: rgba(13,15,20,0.92);
  /* 2026-07-26 视觉焕新：展示级渐变与光效令牌 */
  --accent-grad: linear-gradient(135deg, #14b8a6 0%, #0d9488 100%);
  --accent-grad-hover: linear-gradient(135deg, #0dd4be 0%, #14b8a6 100%);
  --accent-text-grad: linear-gradient(120deg, #2dd4bf 0%, #14b8a6 55%, #38bdf8 100%);
  --hero-mesh:
    radial-gradient(560px 400px at 85% -10%, rgba(20,184,166,0.16), transparent 65%),
    radial-gradient(480px 380px at -8% 110%, var(--info-subtle), transparent 65%),
    radial-gradient(300px 240px at 45% 120%, rgba(20,184,166,0.07), transparent 70%);
  --shadow-glow-accent: 0 4px 22px rgba(20,184,166,0.28);
  /* 2026-07-26 状态文字色（深色皮肤用亮色保证对比度） */
  --danger-text: #fca5a5;
  --warning-text: #fcd34d;
  --success-text: #86efac;
  --info-text: #93c5fd;
  --purple-text: #c4b5fd;
}

/* ── Light Clean Skin ── */
[data-skin="light"] {
  --bg-base: #f6f7f9;
  --bg-body: #f8fafc;
  --bg-surface: #ffffff;
  --bg-card: #ffffff;
  --bg-elevated: #f8fafc;
  --bg-hover: #f1f5f9;
  --bg-input: #ffffff;
  --border-subtle: #e8eaed;
  --border-default: #d4d7dc;
  --border-strong: #b0b4ba;
  --text-primary: #1a1d23;
  --text-secondary: #5a5f6b;
  --text-tertiary: #8b8f98;
  --text-placeholder: #b0b4ba;
  --accent: #0d9488;
  --accent-hover: #0f766e;
  --accent-subtle: rgba(13,148,136,0.08);
  --accent-glow: 0 0 16px rgba(13,148,136,0.12);
  --danger: #dc2626; --danger-subtle: rgba(220,38,38,0.06);
  --warning: #d97706; --warning-subtle: rgba(217,119,6,0.06);
  --success: #16a34a; --success-subtle: rgba(22,163,74,0.06);
  --info: #2563eb; --info-subtle: rgba(37,99,235,0.06);
  --purple: #7c3aed; --purple-subtle: rgba(124,58,237,0.06);
  --overlay: rgba(0,0,0,0.3);
  --shadow-sm: 0 1px 2px rgba(0,0,0,0.04);
  --shadow-md: 0 2px 8px rgba(0,0,0,0.06);
  --shadow-lg: 0 4px 16px rgba(0,0,0,0.08);
  --hero-gradient: linear-gradient(155deg, #ecfdf5 0%, #f0fdfa 50%, #e0f2fe 100%);
  --tw-hl: #dcfce7; --tw-bg: #f0fdf4;
  --topbar-bg: rgba(248,250,252,0.82);
  --tabbar-bg: rgba(248,250,252,0.92);
  /* 2026-07-26 视觉焕新：展示级渐变与光效令牌 */
  --accent-grad: linear-gradient(135deg, #0d9488 0%, #0f766e 100%);
  --accent-grad-hover: linear-gradient(135deg, #14b8a6 0%, #0d9488 100%);
  --accent-text-grad: linear-gradient(120deg, #0f766e 0%, #0d9488 55%, #0284c7 100%);
  --hero-mesh:
    radial-gradient(560px 400px at 85% -10%, rgba(13,148,136,0.14), transparent 65%),
    radial-gradient(480px 380px at -8% 110%, rgba(37,99,235,0.08), transparent 65%),
    radial-gradient(300px 240px at 45% 120%, rgba(13,148,136,0.06), transparent 70%);
  --shadow-glow-accent: 0 4px 18px rgba(13,148,136,0.24);
  /* 2026-07-26 状态文字色（浅色皮肤用标准色保证对比度） */
  --danger-text: var(--danger);
  --warning-text: #b45309;
  --success-text: var(--success);
  --info-text: var(--info);
  --purple-text: var(--purple);
}

/* ── Design Tokens ── */
:root {
  --font: 'PingFang SC', 'Microsoft YaHei', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Hiragino Sans GB', Roboto, sans-serif;
  --font-mono: ui-monospace, 'Cascadia Code', 'Fira Code', Consolas, 'Liberation Mono', Menlo, monospace;
  --sp-1: 4px; --sp-2: 8px; --sp-3: 12px; --sp-4: 16px; --sp-5: 20px; --sp-6: 24px; --sp-8: 32px; --sp-10: 40px; --sp-12: 48px; --sp-16: 64px;
  --r-xs: 4px; --r-sm: 8px; --r-md: 12px; --r-lg: 16px; --r-xl: 20px; --r-full: 9999px;
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-bounce: cubic-bezier(0.34, 1.56, 0.64, 1);
  --dur-fast: 0.15s; --dur-normal: 0.25s; --dur-slow: 0.4s;
  /* 2026-07-26 字体阶梯（全站统一，消除 40+ 种零散字号） */
  --fs-2xs: 0.625rem;   /* 10px 极小标签 */
  --fs-xs: 0.6875rem;   /* 11px 辅助小字 */
  --fs-sm: 0.75rem;     /* 12px 次要文本 */
  --fs-base: 0.8125rem; /* 13px 正文基准 */
  --fs-md: 0.875rem;    /* 14px 强调正文 */
  --fs-lg: 0.9375rem;   /* 15px 小标题 */
  --fs-xl: 1rem;        /* 16px 节标题 */
  --fs-2xl: 1.25rem;    /* 20px 页标题 */
  --fs-3xl: 1.5rem;     /* 24px 区块大标题 */
  /* 行高阶梯（消除 14 种零散行高） */
  --lh-tight: 1.25;     /* 标题/数字 */
  --lh-snug: 1.45;      /* 紧凑正文/标签 */
  --lh-normal: 1.6;     /* 正文 */
  --lh-relaxed: 1.8;    /* 长文阅读 */
  /* 字重阶梯（消除 650/750/800 非标准值） */
  --fw-normal: 400; --fw-medium: 500; --fw-semibold: 600; --fw-bold: 700;
}

/* ── Reset & Base ── */
*,*::before,*::after{box-sizing:border-box;margin:0}
html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
body{
  font-family:var(--font);background:var(--bg-body);color:var(--text-primary);
  line-height:var(--lh-normal);min-height:100vh;display:flex;position:relative;overflow-x:clip;
  transition:background var(--dur-slow),color var(--dur-slow);
}
body::before{content:'';position:fixed;inset:0;background:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.015'/%3E%3C/svg%3E") repeat;pointer-events:none;z-index:0}
[data-skin="light"] body::before{opacity:0.3}
a{color:var(--accent);text-decoration:none;transition:color var(--dur-fast)}
a:hover{color:var(--accent-hover)}
::selection{background:rgba(20,184,166,0.25);color:#fff}
::-webkit-scrollbar{width:5px;height:5px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:var(--r-full)}
::-webkit-scrollbar-thumb:hover{background:var(--text-tertiary)}

/* ── Typography ── */
.h1{font-size:1.75rem;font-weight:600;letter-spacing:-0.02em;line-height:var(--lh-tight);color:var(--text-primary)}
.h2{font-size:var(--fs-2xl);font-weight:600;letter-spacing:-0.01em;line-height:var(--lh-tight);color:var(--text-primary)}
.h3{font-size:var(--fs-lg);font-weight:600;line-height:var(--lh-snug);color:var(--text-primary)}
.text-body{font-size:var(--fs-md);line-height:var(--lh-normal);color:var(--text-secondary)}
.text-sm{font-size:var(--fs-base);line-height:var(--lh-normal);color:var(--text-tertiary)}
.text-xs{font-size:var(--fs-sm);line-height:var(--lh-snug);color:var(--text-tertiary)}
.text-micro{font-size:var(--fs-xs);font-weight:500;text-transform:uppercase;letter-spacing:0.04em;color:var(--text-tertiary)}
.eyebrow{font-size:var(--fs-sm);font-weight:600;text-transform:uppercase;letter-spacing:0.08em;color:var(--accent)}
.mono{font-family:var(--font-mono);font-size:var(--fs-base)}
.muted{color:var(--text-tertiary)}

/* ═══════════════════════════════════════════════
   SIDEBAR
   ═══════════════════════════════════════════════ */
.sidebar{
  position:fixed;inset:0 auto 0 0;z-index:10;width:240px;
  display:flex;flex-direction:column;
  background:rgba(10,12,18,0.88);backdrop-filter:blur(20px) saturate(1.4);
  -webkit-backdrop-filter:blur(20px) saturate(1.4);
  border-right:1px solid var(--border-subtle);padding:var(--sp-5) var(--sp-4);
  transition:background var(--dur-slow);
}
[data-skin="light"] .sidebar{background:rgba(255,255,255,0.88);border-right-color:#e8eaed}
.sidebar-brand{display:flex;align-items:center;gap:var(--sp-3);padding-bottom:var(--sp-5);margin-bottom:var(--sp-4);border-bottom:1px solid var(--border-subtle)}
.sb-logo{height:56px;display:flex;align-items:center;flex-shrink:0;margin-left:-8px}
/* 2026-07-26：提升 logo 高度 46→52px，去掉 max-width 让 SVG 按比例自然缩放 */
.sb-logo .logo-img{height:52px;width:auto}
.sb-brand-text{display:flex;flex-direction:column;gap:1px}
.sb-brand-text strong{font-size:var(--fs-lg);font-weight:600;color:var(--text-primary)}
.sb-brand-text span{font-size:var(--fs-xs);color:var(--text-tertiary);letter-spacing:0.03em}

.sidebar-nav{flex:1;display:flex;flex-direction:column;gap:1px;overflow-y:auto}
.nav-item{
  display:flex;align-items:center;gap:var(--sp-2);padding:8px var(--sp-3);
  border-radius:10px;color:var(--text-secondary);font-size:var(--fs-base);
  font-weight:500;cursor:pointer;border:none;background:none;width:100%;text-align:left;
  transition:all var(--dur-fast) var(--ease-out);position:relative;
}
.nav-item:hover{background:var(--bg-hover);color:var(--text-primary)}
.nav-item.active{background:linear-gradient(90deg,var(--accent-subtle) 0%,transparent 88%);color:var(--accent);font-weight:600}
.nav-item.active::before{content:'';position:absolute;left:0;top:7px;bottom:7px;width:3px;border-radius:3px;background:var(--accent-grad)}
.nav-icon{font-size:var(--fs-lg);width:22px;text-align:center;flex-shrink:0;opacity:0.7}
.nav-item.active .nav-icon{opacity:1}
/* 统一图标：内联 SVG 跟随父级 font-size 与 currentColor */
.icon{display:inline-block;width:1em;height:1em;vertical-align:-0.15em;flex-shrink:0;stroke:currentColor}
.toast-icon{display:inline-flex;align-items:center;margin-right:3px}
.toast.success .toast-icon{color:var(--success)}
.toast.error .toast-icon{color:var(--danger)}
.toast.info .toast-icon{color:var(--accent)}
.admin-quota-msg svg,.alert svg{display:inline-block;vertical-align:-2px}
.nav-label{display:flex;flex-direction:column;line-height:var(--lh-tight);text-align:left;min-width:0;flex:1}
.nav-text{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nav-sub{font-size:var(--fs-xs);color:var(--text-tertiary);font-weight:400;opacity:0.7;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nav-group-label{font-size:var(--fs-xs);font-weight:600;text-transform:uppercase;letter-spacing:0.06em;color:var(--text-tertiary);opacity:0.5;padding:var(--sp-4) var(--sp-3) var(--sp-1);margin-top:var(--sp-2)}
.sidebar-footer{margin-top:auto;padding-top:var(--sp-4);border-top:1px solid var(--border-subtle)}

@keyframes pulse-dot{0%,100%{opacity:1}50%{opacity:0.5}}
.sb-quota{background:var(--bg-surface);border:1px solid var(--border-subtle);border-left:3px solid var(--accent);border-radius:var(--r-md);padding:var(--sp-3);font-size:var(--fs-sm);color:var(--text-tertiary);line-height:var(--lh-normal)}

/* Skin Switcher */
.skin-switch{display:flex;gap:2px;background:var(--bg-surface);border-radius:var(--r-sm);padding:2px;margin-bottom:var(--sp-2);border:1px solid var(--border-subtle)}
.skin-btn{flex:1;border:none;background:none;padding:6px 4px;border-radius:var(--r-xs);cursor:pointer;font-size:var(--fs-base);color:var(--text-tertiary);transition:all var(--dur-fast)}
.skin-btn:hover{color:var(--text-secondary)}
.skin-btn.active{background:var(--bg-card);color:var(--text-primary);font-weight:600;box-shadow:var(--shadow-sm)}

/* ═══════════════════════════════════════════════
   MAIN LAYOUT
   ═══════════════════════════════════════════════ */
.main-content{margin-left:240px;flex:1;position:relative;z-index:1;min-width:0}
/* L4：宽屏放宽最大宽度，减少右侧留白（超宽屏左对齐充分利用空间） */
.view{display:none;padding:var(--sp-8) var(--sp-10);max-width:1400px;animation:fadeUp var(--dur-normal) var(--ease-out)}
.view.active{display:block}
@keyframes fadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}

/* ═══════════════════════════════════════════════
   SHARED COMPONENTS
   ═══════════════════════════════════════════════ */
.card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--r-lg);padding:var(--sp-5);transition:border-color var(--dur-fast),box-shadow var(--dur-fast)}
.card:hover{border-color:var(--border-default)}
.section-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--sp-4);gap:var(--sp-3);flex-wrap:wrap;position:sticky;top:0;z-index:10;background:var(--bg-body);padding:var(--sp-4) 0}
.section-head h2{font-size:var(--fs-3xl);font-weight:600;letter-spacing:-0.02em}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:10px var(--sp-5);border:1px solid var(--border-default);background:var(--bg-card);border-radius:var(--r-sm);cursor:pointer;font-weight:500;font-size:var(--fs-md);color:var(--text-primary);transition:all var(--dur-fast) var(--ease-out);white-space:nowrap;user-select:none;text-decoration:none}
.btn:hover{background:var(--bg-hover);border-color:var(--border-strong);color:var(--text-primary)}
.btn:active{transform:scale(0.98)}
.btn-primary{background:var(--accent-grad);border-color:transparent;color:#fff;font-weight:600;box-shadow:0 2px 10px rgba(20,184,166,0.22)}
.btn-primary:hover{background:var(--accent-grad-hover);border-color:transparent;box-shadow:var(--shadow-glow-accent);color:#fff;transform:translateY(-1px)}
.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff;font-weight:600}
.btn-sm{padding:6px var(--sp-3);font-size:var(--fs-base);border-radius:var(--r-xs)}
.btn-lg{padding:12px var(--sp-6);font-size:var(--fs-lg);border-radius:var(--r-md);font-weight:600}
.btn:disabled{opacity:0.5;cursor:not-allowed;transform:none}
.spinner{display:inline-block;width:14px;height:14px;border:2px solid rgba(255,255,255,0.3);border-top-color:#fff;border-radius:50%;animation:spin 0.6s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* Badges */
.badge{display:inline-flex;align-items:center;gap:4px;border-radius:var(--r-full);padding:3px 10px;font-weight:600;font-size:var(--fs-sm);white-space:nowrap;line-height:var(--lh-snug)}
.badge-high,.badge-critical{background:var(--danger-subtle);color:var(--danger-text)}
.badge-medium{background:var(--warning-subtle);color:var(--warning-text)}
.badge-low,.badge-none{background:var(--success-subtle);color:var(--success-text)}
.badge-review{background:var(--info-subtle);color:var(--info-text)}
.badge-info{background:var(--info-subtle);color:var(--info-text)}
.badge-brand{background:var(--accent-subtle);color:var(--accent)}
[data-skin="light"] .badge-high,[data-skin="light"] .badge-critical{color:#dc2626}
[data-skin="light"] .badge-medium{color:#d97706}
[data-skin="light"] .badge-low,[data-skin="light"] .badge-none{color:#16a34a}
[data-skin="light"] .badge-review{color:#2563eb}
[data-skin="light"] .badge-info{color:#2563eb}

/* Form */
label{display:block;font-weight:600;font-size:var(--fs-base);color:var(--text-secondary);margin-bottom:var(--sp-1)}
input,select,textarea{width:100%;padding:10px var(--sp-3);border:1px solid var(--border-default);border-radius:var(--r-sm);background:var(--bg-input);color:var(--text-primary);font-family:var(--font);font-size:var(--fs-md);transition:border-color var(--dur-fast),box-shadow var(--dur-fast);outline:none}
input::placeholder,textarea::placeholder{color:var(--text-placeholder)}
input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 2px rgba(20,184,166,0.15)}
textarea{resize:vertical;min-height:70px;line-height:var(--lh-normal)}
select{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='12' height='8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1.5l5 5 5-5' stroke='%23636670' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:36px}
.form-row{display:grid;gap:var(--sp-4)}
.form-row.col2{grid-template-columns:1fr 1fr}
.form-row.col3{grid-template-columns:1fr 1fr 1fr}
.form-row.col4{grid-template-columns:1fr 1fr 1fr 1fr}

/* Stats */
.stat-row{display:grid;grid-template-columns:repeat(5,1fr);gap:var(--sp-3);margin:var(--sp-4) 0}
.stat-mini{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4);text-align:center;transition:all var(--dur-fast)}
.stat-mini:hover{background:var(--bg-hover);border-color:var(--border-default)}
.stat-mini b{display:block;font-size:var(--fs-3xl);font-weight:700;color:var(--text-primary);line-height:var(--lh-tight)}
.stat-mini span{font-size:var(--fs-sm);color:var(--text-tertiary);margin-top:2px;display:block}
.stat-mini.red b{color:var(--danger-text)}[data-skin="light"] .stat-mini.red b{color:var(--danger)}
.stat-mini.amber b{color:var(--warning-text)}[data-skin="light"] .stat-mini.amber b{color:var(--warning)}
.stat-mini.green b{color:var(--success-text)}[data-skin="light"] .stat-mini.green b{color:var(--success)}
.stat-mini.accent b{color:var(--accent)}
.stat-mini.purple b{color:#c4b5fd}[data-skin="light"] .stat-mini.purple b{color:var(--purple)}

/* Alerts */
.alert{display:flex;align-items:flex-start;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-sm);font-size:var(--fs-md);line-height:var(--lh-normal);margin:var(--sp-4) 0}
.alert-info{background:var(--info-subtle);border:1px solid color-mix(in srgb,var(--info) 20%,transparent);color:var(--info-text)}
.alert-warn{background:var(--warning-subtle);border:1px solid color-mix(in srgb,var(--warning) 20%,transparent);color:var(--warning-text)}
.alert-success{background:var(--success-subtle);border:1px solid color-mix(in srgb,var(--success) 20%,transparent);color:var(--success-text)}
.alert-error{background:var(--danger-subtle);border:1px solid color-mix(in srgb,var(--danger) 20%,transparent);color:var(--danger-text)}
[data-skin="light"] .alert-info{color:#1e40af}[data-skin="light"] .alert-warn{color:#92400e}
[data-skin="light"] .alert-success{color:#166534}[data-skin="light"] .alert-error{color:#991b1b}

/* Progress */
.progress{height:4px;background:var(--border-subtle);border-radius:var(--r-full);overflow:hidden;margin:var(--sp-3) 0}
.progress-bar{height:100%;width:0;background:linear-gradient(90deg,var(--accent),var(--accent-hover));border-radius:var(--r-full);transition:width 0.6s var(--ease-out)}
.progress-text{font-size:var(--fs-sm);color:var(--text-tertiary);margin-top:var(--sp-1)}

/* Skeleton */
.skeleton{background:linear-gradient(90deg,var(--bg-surface) 25%,var(--bg-hover) 50%,var(--bg-surface) 75%);background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite;border-radius:var(--r-sm)}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
.skeleton-text{height:14px;margin-bottom:var(--sp-2);width:85%}
.skeleton-text.short{width:55%}
.skeleton-card{height:100px;margin-bottom:var(--sp-3);border-radius:var(--r-md)}

/* Toast */
.toast-container{position:fixed;top:var(--sp-5);right:var(--sp-5);z-index:30;display:flex;flex-direction:column;gap:var(--sp-2)}
.toast{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:var(--r-md);box-shadow:var(--shadow-lg);font-size:var(--fs-md);color:var(--text-primary);min-width:280px;max-width:400px;animation:toastIn var(--dur-slow) var(--ease-out)}
.toast.success{border-left:3px solid var(--success)}.toast.error{border-left:3px solid var(--danger)}.toast.info{border-left:3px solid var(--info)}
.toast.removing{animation:toastOut var(--dur-normal);opacity:0;transform:translateX(100%)}
@keyframes toastIn{from{opacity:0;transform:translateX(100%)}to{opacity:1;transform:translateX(0)}}
@keyframes toastOut{from{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(100%)}}

/* Empty State */
.empty-state{text-align:center;padding:var(--sp-12) var(--sp-5);color:var(--text-tertiary);font-size:var(--fs-md)}
.empty-state .empty-icon{font-size:2.5rem;margin-bottom:var(--sp-4);opacity:0.3;display:block}

/* Risk Items */
.risk-list{display:flex;flex-direction:column;gap:var(--sp-3)}
.risk-group{margin-bottom:var(--sp-4)}
.risk-group h4{font-size:var(--fs-base);font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:0.04em;margin-bottom:var(--sp-3);padding-bottom:var(--sp-2);border-bottom:1px solid var(--border-subtle)}
/* 2026-07-26 业务样式美化：风险卡整卡色洗改为左侧定向渐变晕染，深色下不再大片泛红 */
.risk-item{background:var(--bg-surface);border:1px solid var(--border-subtle);border-left:3px solid var(--warning);border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4);transition:all var(--dur-fast)}
.risk-item:hover{border-left-width:4px;background:var(--bg-hover)}
.risk-item.high,.risk-item.critical{border-left-color:var(--danger);background:linear-gradient(90deg,color-mix(in srgb, var(--danger) 9%, transparent) 0%,color-mix(in srgb, var(--danger) 4%, transparent) 45%,transparent 80%)}
.risk-item.medium{border-left-color:var(--warning);background:linear-gradient(90deg,color-mix(in srgb, var(--warning) 9%, transparent) 0%,color-mix(in srgb, var(--warning) 4%, transparent) 45%,transparent 80%)}
.risk-item.info{border-left-color:var(--border-subtle);opacity:.6}

/* 批量上传拖拽区虚线边框 */
.drag-zone{border:2px dashed var(--border-subtle);border-radius:var(--r-sm);padding:var(--sp-8) var(--sp-4);text-align:center;transition:all var(--dur-fast);cursor:pointer}
.drag-zone:hover{border-color:var(--accent);background:var(--accent-subtle)}
.drag-zone.dragover{border-color:var(--accent);background:var(--accent-subtle);border-style:solid}
.risk-item b{font-weight:600;font-size:var(--fs-md);color:var(--text-primary)}
.risk-item p{font-size:var(--fs-base);color:var(--text-secondary);margin:4px 0}
.risk-type-tag{display:inline-block;padding:1px 6px;border-radius:var(--r-xs);background:var(--accent-subtle);color:var(--accent);font-size:var(--fs-xs);font-weight:600;margin-right:var(--sp-1)}

/* Rewrite */
.rewrite-list{display:flex;flex-direction:column;gap:var(--sp-4)}
/* 最终改写结果汇总 */
.rw-summary{border:1px solid rgba(20,184,166,0.25);border-radius:var(--r-lg);background:rgba(20,184,166,0.04);padding:var(--sp-4);margin-bottom:var(--sp-4)}
.rw-summary-head{display:flex;justify-content:space-between;align-items:center;gap:var(--sp-3);flex-wrap:wrap;margin-bottom:var(--sp-4)}
.rw-summary-head b{font-size:var(--fs-lg);color:var(--text-primary);margin-right:8px}
.rw-rows{display:flex;flex-direction:column;gap:var(--sp-3)}
.rw-row{display:grid;grid-template-columns:90px 1fr 20px 1fr;gap:var(--sp-3);align-items:start;background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--r-md);padding:var(--sp-3)}
.rw-field{font-size:var(--fs-sm);color:var(--text-secondary);font-weight:600;padding-top:2px}
.rw-tag{display:inline-block;font-size:var(--fs-2xs);font-weight:700;letter-spacing:0.04em;text-transform:uppercase;padding:1px 6px;border-radius:4px;margin-bottom:6px;color:var(--text-placeholder);background:var(--bg-surface);border:1px solid var(--border-default)}
.rw-tag-new{color:var(--accent);border-color:rgba(20,184,166,0.3);background:var(--accent-subtle)}
.rw-original,.rw-rewritten{font-size:var(--fs-base);line-height:var(--lh-relaxed);color:var(--text-secondary)}
.rw-hl-risk-high{background:color-mix(in srgb,var(--danger) 18%,transparent);color:var(--danger-text);border-radius:3px;padding:1px 5px;border-bottom:2px solid color-mix(in srgb,var(--danger) 40%,transparent)}
.rw-hl-risk-medium{background:color-mix(in srgb,var(--warning) 18%,transparent);color:var(--warning-text);border-radius:3px;padding:1px 5px;border-bottom:2px solid color-mix(in srgb,var(--warning) 40%,transparent)}
.rw-hl-risk-low{background:rgba(100,116,139,0.18);color:#cbd5e1;border-radius:3px;padding:1px 5px;border-bottom:2px solid rgba(100,116,139,0.3)}
.rw-rewritten{color:var(--text-primary)}
/* 结果页/改写区组件（原内联 <style> 已收口到此处，使用主题 token，兼容深色/浅色双皮肤） */
.rw-changes{list-style:none;margin:8px 0 0;padding:8px 10px;background:var(--bg-elevated);border-radius:var(--r-md);font-size:var(--fs-base)}
.rw-change{margin:2px 0}
.rw-change-icon{font-weight:700}
.rw-change.removed .rw-change-icon{color:var(--warning)}
.rw-change.replaced .rw-change-icon{color:var(--info)}
.rw-change.skipped{opacity:.65}
.ri-link{font-size:.85em;margin-left:4px;opacity:.75}
.ri-link:hover{opacity:1}
.rw-compliance{margin-top:6px;padding:6px 8px;background:var(--warning-subtle);border-left:3px solid var(--warning);font-size:var(--fs-sm);color:var(--text-primary);border-radius:var(--r-sm)}
.rw-compliance-global{margin-top:12px;border-left:3px solid var(--info);background:var(--info-subtle);color:var(--text-primary);font-weight:600;padding:8px 10px;border-radius:var(--r-sm)}
.rw-strategy{margin:6px 0;font-weight:600;color:var(--success)}
.rw-rewritten-text{font-weight:600;color:var(--success)}
.rw-tag-keep{color:var(--text-tertiary);border-color:var(--border-default);background:var(--bg-surface)}
.rw-rewritten-keep{border-left:2px dashed var(--border-default);padding-left:8px}
.rw-keep-text{color:var(--text-tertiary);font-style:italic}
.review-item{display:flex;align-items:flex-start;gap:8px;padding:8px;background:var(--bg-card);border:1px solid var(--border-default);border-radius:var(--r-md);margin-bottom:8px}
.review-check{display:flex;align-items:center;gap:6px;font-weight:600}
.review-reason{color:var(--text-secondary);font-size:var(--fs-base)}
/* ★ 人工复核裁定条 + 每条风险项裁定控件 */
.review-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:10px 0 4px;padding:10px 12px;background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:var(--r-md)}
.review-status{font-size:var(--fs-md);color:var(--text-secondary)}
.review-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:8px}
.rv-btn{font-size:var(--fs-sm);padding:3px 10px;border:1px solid var(--border-default);background:var(--bg-card);color:var(--text-primary);border-radius:999px;cursor:pointer;transition:.15s}
.rv-btn:hover{border-color:var(--accent)}
.rv-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}
.rv-current{font-size:var(--fs-sm);color:var(--accent);font-weight:600;margin-left:4px}
.risk-item.review-exempt{opacity:.72;border-style:dashed}
.badge-review-exempt{background:rgba(16,185,129,0.15);color:#34d399;border:1px solid rgba(16,185,129,0.4)}
html[data-skin="light"] .review-bar{background:#f5f7fa}
html[data-skin="light"] .rv-btn{background:#fff}
html[data-skin="light"] .rv-btn.active{background:var(--accent);color:#fff}
html[data-skin="light"] .risk-item.review-exempt{background:#f0fdf4}
/* 人工复核工作台（review tab 卡片化） */
.review-workbench{display:flex;flex-direction:column;gap:10px;margin-top:10px}
.review-card{padding:12px 14px;background:var(--bg-surface);border:1px solid var(--border-default);border-left:3px solid var(--accent);border-radius:var(--r-md);transition:border-left-width .15s,background .15s}
.review-card:hover{border-left-width:4px;background:var(--bg-hover)}
.review-card .rc-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:4px}
.review-card .rc-head b{font-size:var(--fs-md);color:var(--text-primary)}
.review-card .rc-reason{font-size:var(--fs-base);color:var(--text-secondary);margin:6px 0;line-height:var(--lh-normal)}
/* 未保存检测的本地预览提示条 */
.review-bar-local{background:var(--warning-subtle);border-color:var(--warning)}
.review-bar-local .review-status{color:var(--text-secondary)}
/* 规则引用 + AI 理由（风险项详情） */
.ri-rule{display:block;font-size:var(--fs-sm);color:var(--text-secondary);margin-top:2px;line-height:var(--lh-snug)}
.ri-policy{display:block;margin:7px 0 3px;padding:8px 10px;border-left:3px solid var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent);border-radius:4px;font-size:var(--fs-sm);line-height:var(--lh-normal);color:var(--text-secondary)}
.ri-policy b{color:var(--text)}
.ri-policy a{color:var(--accent);text-decoration:underline;word-break:break-all}
.ri-policy .g{display:inline-block;margin-left:6px;padding:0 6px;border-radius:999px;font-size:var(--fs-xs);background:color-mix(in srgb,var(--accent) 22%,transparent);color:var(--accent)}
/* 裁定按钮：激活态按裁定结果配色 */
.rv-btn.active[data-verdict="violation"]{background:var(--danger);border-color:var(--danger);color:#fff}
.rv-btn.active[data-verdict="compliant"]{background:#10b981;border-color:#10b981;color:#fff}
.rv-btn.active[data-verdict="ignore"]{background:var(--text-tertiary);border-color:var(--text-tertiary);color:#fff}
.rw-rewrite-line + .rw-rewrite-line{margin-top:8px;padding-top:8px;border-top:1px dashed var(--border-subtle)}
.rw-arrow{text-align:center;color:var(--text-placeholder);font-size:var(--fs-xl);padding-top:2px}
/* 按严重等级上色 */
.hl-high{color:var(--danger-text);background:color-mix(in srgb,var(--danger) 18%,transparent)}
.hl-medium{color:var(--warning-text);background:color-mix(in srgb,var(--warning) 18%,transparent)}
.hl-low{color:#cbd5e1;background:rgba(100,116,139,0.18)}
.hl-review{color:var(--info-text);background:color-mix(in srgb,var(--info) 18%,transparent)}
.rm-term{text-decoration:line-through;padding:1px 5px;border-radius:3px}
.soft-term{text-decoration:underline dotted;padding:1px 5px;border-radius:3px}
.ad-term{color:#5eead4;font-weight:600;background:rgba(20,184,166,0.12);border-radius:3px;padding:1px 5px;border-bottom:1px solid rgba(20,184,166,0.35)}
[data-skin="light"] .ad-term{color:#0d9488;background:rgba(20,184,166,0.1)}
/* v2: term_changes 内联高亮（CB 2026-07-19） */
.rw-hl-replaced{background:var(--warning-subtle);border-radius:3px;padding:1px 5px;border-bottom:2px solid var(--warning)}
.rw-hl-removed{text-decoration:line-through;color:var(--text-tertiary);padding:1px 5px;border-radius:3px;background:rgba(239,68,68,0.1)}
.rw-hl-skipped{opacity:.5;padding:1px 5px}
/* 行等级色条 */
.rw-row[data-level="high"]{border-left:3px solid #ef4444}
.rw-row[data-level="medium"]{border-left:3px solid #f59e0b}
.rw-row[data-level="low"]{border-left:3px solid #64748b}
.rw-row[data-level="review"]{border-left:3px solid #3b82f6}
/* 等级徽章 */
.rw-badge{display:block;font-size:var(--fs-2xs);font-weight:700;padding:1px 6px;border-radius:4px;margin-top:5px;width:fit-content}
.rw-badge-high{background:color-mix(in srgb,var(--danger) 18%,transparent);color:var(--danger-text)}
.rw-badge-medium{background:color-mix(in srgb,var(--warning) 18%,transparent);color:var(--warning-text)}
.rw-badge-low{background:rgba(100,116,139,0.18);color:#cbd5e1}
.rw-badge-review{background:color-mix(in srgb,var(--info) 18%,transparent);color:var(--info-text)}
.rw-badge-keep{background:var(--bg-surface);color:var(--text-tertiary);border:1px solid var(--border-default)}
.rewrite-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--r-lg);padding:var(--sp-5);overflow:hidden;transition:all var(--dur-normal) var(--ease-out)}
.rewrite-hidden{display:none}
.rewrite-card:hover{border-color:var(--accent)}
.rewrite-meta{display:flex;justify-content:space-between;align-items:center;gap:var(--sp-3);flex-wrap:wrap;margin-bottom:var(--sp-4);padding-bottom:var(--sp-4);border-bottom:1px solid var(--border-subtle)}
.compare{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3)}
.compare-panel{border:1px solid var(--border-subtle);border-radius:var(--r-md);padding:var(--sp-4);background:var(--bg-surface);font-size:var(--fs-md);line-height:var(--lh-normal)}
.compare-panel h4{font-size:var(--fs-xs);font-weight:600;text-transform:uppercase;letter-spacing:0.05em;color:var(--text-tertiary);margin-bottom:var(--sp-2)}
.removed{background:color-mix(in srgb,var(--danger) 15%,transparent);color:var(--danger-text);text-decoration:line-through;padding:1px 5px;border-radius:3px}
.review-mark{background:color-mix(in srgb,var(--warning) 15%,transparent);color:var(--warning-text);padding:1px 5px;border-radius:3px}
.added{background:color-mix(in srgb,var(--success) 15%,transparent);color:var(--success-text);padding:1px 5px;border-radius:3px}

/* Recheck */
.recheck-card{border-radius:var(--r-sm);padding:var(--sp-3);margin-top:var(--sp-3);font-size:var(--fs-base)}
.recheck-pass{border:1px solid color-mix(in srgb,var(--success) 20%,transparent);background:var(--success-subtle);color:var(--success-text)}
.recheck-fail{border:1px solid color-mix(in srgb,var(--danger) 20%,transparent);background:var(--danger-subtle);color:var(--danger-text)}
.recheck-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3);margin:var(--sp-3) 0}
.recheck-col{border:1px solid var(--border-subtle);border-radius:var(--r-sm);padding:var(--sp-3);background:var(--bg-surface)}
.recheck-summary{display:flex;gap:var(--sp-3);flex-wrap:wrap;padding:var(--sp-3);background:var(--bg-surface);border-radius:var(--r-sm);font-size:var(--fs-base);font-weight:600}

/* ★ 改写中心 v3 — 现代化重设计（2026-07-26） */
/* 工具栏：统计 + 清空 */
.rw-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);margin-bottom:var(--sp-5);padding-bottom:var(--sp-4);border-bottom:1px solid var(--border-subtle)}
.rw-total{font-size:var(--fs-lg);font-weight:600;color:var(--text-primary)}
.rw-total em{font-style:normal;font-weight:400;font-size:var(--fs-md);color:var(--text-tertiary)}
/* 分组 — 视觉区块：标题栏 + 卡片列表 */
.rw-group{margin-bottom:var(--sp-6)}
.rw-group-head{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;padding:var(--sp-3) var(--sp-4);background:linear-gradient(135deg,var(--bg-elevated),var(--bg-surface));border:1px solid var(--border-subtle);border-left:3px solid var(--accent);border-radius:var(--r-md) var(--r-md) 0 0}
.rw-group-head b{font-size:var(--fs-md);font-weight:600;color:var(--text-primary)}
.rw-group-head .text-sm{font-size:var(--fs-sm);color:var(--text-tertiary)}
.rw-group-body{display:flex;flex-direction:column}
.rw-bulk-copy{margin-left:auto;font-size:var(--fs-sm);padding:6px 16px;border-radius:var(--r-full);background:var(--accent);color:#fff;border:none;cursor:pointer;font-weight:600;transition:all var(--dur-fast);box-shadow:0 2px 8px rgba(20,184,166,0.15)}
.rw-bulk-copy:hover{background:var(--accent-hover);box-shadow:0 4px 16px rgba(20,184,166,0.3);transform:translateY(-1px)}
/* 改写卡片 — 嵌套在分组内 */
.rw-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-top:none;padding:var(--sp-4);transition:all var(--dur-fast);position:relative}
.rw-card:first-of-type{border-top:1px solid var(--border-subtle)}
.rw-card:last-child{border-radius:0 0 var(--r-md) var(--r-md)}
.rw-card:hover{border-color:var(--border-default);background:var(--bg-elevated)}
.rw-card + .rw-card{border-top:1px solid var(--border-subtle)}
.rw-card.rw-exempt{opacity:.48;background:var(--bg-surface);border-left:3px dashed var(--border-default)}
.rw-card.rw-exempt:hover{opacity:.62}
/* 卡片头部：状态 + 字段 + 风险 + 时间 */
.rw-card-head{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;margin-bottom:var(--sp-3)}
.rw-card-head b{font-size:var(--fs-md);font-weight:600;color:var(--text-primary)}
.rw-card-head .badge{font-size:var(--fs-xs);padding:2px 10px;border-radius:var(--r-full);font-weight:600;letter-spacing:.02em}
.rw-card-head .badge-info{background:linear-gradient(135deg,var(--accent),#0d9488);color:#fff}
.rw-card-head .badge-muted{background:var(--bg-elevated);color:var(--text-tertiary);border:1px dashed var(--border-default)}
/* 左右对比面板 */
.rw-card-compare{display:grid;grid-template-columns:1fr 24px 1fr;gap:0;margin-bottom:var(--sp-3);align-items:stretch}
.rw-card-orig,.rw-card-rewrite{font-size:var(--fs-md);line-height:var(--lh-relaxed);padding:var(--sp-3);border-radius:var(--r-md)}
.rw-card-orig{background:var(--bg-surface);border:1px solid var(--border-subtle)}
.rw-card-rewrite{background:var(--accent-subtle);border:1px solid var(--accent);border-left:3px solid var(--accent)}
.rw-card-arrow{display:flex;align-items:center;justify-content:center;color:var(--accent);font-size:var(--fs-lg);font-weight:700}
.rw-label{display:block;font-size:var(--fs-2xs);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary);margin-bottom:6px}
/* 卡片底部操作栏 */
.rw-card-foot{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);flex-wrap:wrap;font-size:var(--fs-sm);padding-top:var(--sp-2);border-top:1px solid var(--border-subtle)}
.rw-card-foot .btn-sm{font-weight:500}
.rw-card-foot .text-sm{color:var(--text-tertiary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:320px}
/* 加载更多 */
.rw-more-wrap{text-align:center;padding:var(--sp-4) 0}
.rw-more-btn{padding:8px 28px;border-radius:var(--r-full);font-weight:600;font-size:var(--fs-md)}
/* 响应式 */
@media(max-width:768px){
  .rw-card-compare{grid-template-columns:1fr;gap:var(--sp-2)}
  .rw-card-arrow{display:none}
  .rw-group-head{flex-direction:column;align-items:flex-start}
  .rw-bulk-copy{margin-left:0;margin-top:var(--sp-2);width:100%;text-align:center}
  .rw-card-foot{flex-direction:column;align-items:flex-start}
}

/* Tables */
.table-wrap{overflow:auto;border-radius:var(--r-lg);border:1px solid var(--border-subtle)}
table{width:100%;border-collapse:collapse;background:var(--bg-card);font-size:var(--fs-base);min-width:100%}
thead{position:sticky;top:0;z-index:1}
th{background:var(--bg-elevated);padding:var(--sp-3);text-align:left;font-weight:600;font-size:var(--fs-xs);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:0.04em;border-bottom:1px solid var(--border-default);white-space:nowrap}
td{padding:var(--sp-3);border-bottom:1px solid var(--border-subtle);vertical-align:middle}
tr:hover td{background:var(--bg-hover)}

/* Drawer */
.drawer{position:fixed;inset:0;background:rgba(0,0,0,0);display:none;z-index:20;transition:background var(--dur-slow) var(--ease-out)}
.drawer.open{display:block;background:var(--overlay)}
.drawer-panel{position:absolute;right:0;top:0;bottom:0;width:min(860px,100%);background:var(--bg-body);display:flex;flex-direction:column;overflow:hidden;border-left:1px solid var(--border-default);transform:translateX(100%);transition:transform var(--dur-slow) var(--ease-out)}
.drawer.open .drawer-panel{transform:translateX(0)}
.drawer.drawer-full{left:240px}.drawer.drawer-full .drawer-panel{width:100%}
@media(max-width:1200px){.drawer.drawer-full{left:200px}}
@media(max-width:1024px){.drawer.drawer-full{left:200px}}
@media(max-width:768px){.drawer.drawer-full{left:0}}
.drawer-header{display:flex;justify-content:space-between;align-items:center;flex-shrink:0;z-index:2;background:var(--bg-body);padding:var(--sp-8) var(--sp-8) var(--sp-5);border-bottom:1px solid var(--border-subtle)}
#drawerContent{flex:1;overflow:auto;padding:0 var(--sp-8) var(--sp-8);min-height:0}
/* 抽屉内 result-tabs 贴 #drawerContent 顶部，sticky 覆盖滚动内容 */
#drawerContent .result-tabs{position:sticky;top:0;z-index:10;background:var(--bg-body);margin:0 -20px;padding:8px 20px;box-shadow:0 2px 8px rgba(0,0,0,0.08)}
.drawer-close{width:36px;height:36px;border-radius:50%;border:1px solid var(--border-default);background:var(--bg-card);cursor:pointer;display:grid;place-items:center;font-size:1.1rem;color:var(--text-secondary);transition:all var(--dur-fast)}
.drawer-close:hover{background:var(--bg-hover);color:var(--text-primary)}

/* FAQ */
/* ── Help Center ── */
.help-hero{margin-bottom:var(--sp-5)}
.help-hero .eyebrow{margin-bottom:var(--sp-2)}
.help-toolbar{margin-bottom:var(--sp-4)}
.help-search{position:relative;display:flex;align-items:center;max-width:520px}
.help-search-icon{position:absolute;left:14px;width:16px;height:16px;color:var(--text-tertiary);pointer-events:none}
.help-search input{width:100%;padding:11px 40px 11px 40px;border:1px solid var(--border-default);border-radius:var(--r-sm);background:var(--bg-input);color:var(--text-primary);font-size:var(--fs-md);transition:border-color var(--dur-fast),box-shadow var(--dur-fast)}
.help-search input::placeholder{color:var(--text-placeholder)}
.help-search input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-subtle)}
.help-search-clear{position:absolute;right:10px;width:22px;height:22px;border:none;background:var(--bg-hover);color:var(--text-secondary);border-radius:var(--r-full);cursor:pointer;font-size:var(--fs-xl);line-height:1;display:flex;align-items:center;justify-content:center}
.help-search-clear:hover{background:var(--border-default);color:var(--text-primary)}
.help-cats{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-bottom:var(--sp-5)}
.help-cat{padding:6px 14px;border:1px solid var(--border-default);background:var(--bg-card);color:var(--text-secondary);border-radius:var(--r-full);cursor:pointer;font-size:var(--fs-base);font-weight:500;transition:all var(--dur-fast) var(--ease-out)}
.help-cat:hover{border-color:var(--border-strong);color:var(--text-primary)}
.help-cat.active{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}
.help-group{margin-bottom:var(--sp-6)}
.help-group-title{font-size:var(--fs-sm);font-weight:600;text-transform:uppercase;letter-spacing:0.06em;color:var(--text-tertiary);padding-bottom:var(--sp-2);margin-bottom:var(--sp-2);border-bottom:1px solid var(--border-subtle)}
.help-empty{text-align:center;color:var(--text-tertiary);padding:var(--sp-6) var(--sp-3);font-size:var(--fs-md);line-height:var(--lh-relaxed)}
.help-empty .link{margin:0 2px}

/* FAQ accordion */
.faq-section{margin-bottom:var(--sp-2);border:1px solid var(--border-subtle);border-radius:var(--r-md);background:var(--bg-card);overflow:hidden;transition:border-color var(--dur-fast)}
.faq-section:hover{border-color:var(--border-default)}
.faq-q{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);width:100%;padding:14px var(--sp-4);background:none;border:none;cursor:pointer;font-weight:500;font-size:var(--fs-lg);color:var(--text-primary);text-align:left;transition:color var(--dur-fast),background var(--dur-fast)}
.faq-q:hover{background:var(--bg-hover);color:var(--text-primary)}
.faq-q.open{color:var(--accent)}
.faq-q::after{content:'';width:9px;height:9px;border-right:2px solid var(--text-tertiary);border-bottom:2px solid var(--text-tertiary);transform:rotate(45deg);transition:transform var(--dur-fast);flex-shrink:0}
.faq-q.open::after{transform:rotate(-135deg);border-color:var(--accent)}
.faq-a{padding:0 var(--sp-4) var(--sp-4);font-size:var(--fs-md);color:var(--text-secondary);line-height:var(--lh-relaxed);display:none}
.faq-a.open{display:block;animation:fadeUp var(--dur-fast) var(--ease-out)}
.faq-a b{color:var(--text-primary);font-weight:600}
.faq-list{margin:8px 0 0;padding-left:18px;display:flex;flex-direction:column;gap:6px}
.faq-list li{position:relative}
.faq-list li::marker{color:var(--accent)}

/* Contact card */
.help-contact{display:flex;align-items:center;gap:var(--sp-4);margin-top:var(--sp-6);flex-wrap:wrap}
.help-contact-icon{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--r-sm);background:var(--accent-subtle);color:var(--accent);flex-shrink:0}
.help-contact-icon svg{width:22px;height:22px}
.help-contact-body{flex:1;min-width:200px}
.help-contact-body p{margin-top:2px}
.help-contact-actions{display:flex;gap:var(--sp-2);flex-shrink:0}
.link{color:var(--accent);text-decoration:none;cursor:pointer;font-weight:500}
.link:hover{text-decoration:underline}

/* Detail Grid */
.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3);margin:var(--sp-4) 0;padding:var(--sp-4);background:var(--bg-surface);border-radius:var(--r-md);border:1px solid var(--border-subtle)}
.detail-grid div{display:flex;flex-direction:column;gap:2px}
.detail-grid div b{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:0.04em;color:var(--text-tertiary)}
.detail-grid div span{font-size:var(--fs-md);color:var(--text-primary)}

/* History — v2 重设计（2026-07-26）：风险等级左色条 + 卡片化 */
.history-group{margin-bottom:var(--sp-6)}
.history-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);margin-bottom:var(--sp-4);padding-bottom:var(--sp-3);border-bottom:1px solid var(--border-subtle);flex-wrap:wrap}
.history-toolbar h3{font-size:var(--fs-lg);font-weight:600;color:var(--text-primary);margin:0}
.history-toolbar h3 em{font-style:normal;font-weight:400;font-size:var(--fs-md);color:var(--text-tertiary)}
.history-toolbar-actions{display:flex;align-items:center;gap:var(--sp-2)}
.history-search{width:200px;height:32px;font-size:var(--fs-sm);padding:4px 10px;border:1px solid var(--border-default);border-radius:var(--r-full);background:var(--bg-input);color:var(--text-primary);outline:none}
.history-search:focus{border-color:var(--accent);box-shadow:0 0 0 2px rgba(20,184,166,0.15)}
.history-row{display:flex;justify-content:space-between;align-items:center;padding:var(--sp-3) var(--sp-4);border:1px solid var(--border-subtle);border-radius:var(--r-md);margin-bottom:var(--sp-1);transition:all var(--dur-fast);flex-wrap:wrap;gap:var(--sp-2);background:var(--bg-card);border-left:3px solid var(--border-default)}
.history-row[data-level="high"]{border-left-color:var(--danger)}
.history-row[data-level="medium"]{border-left-color:var(--warning)}
.history-row[data-level="low"]{border-left-color:var(--info)}
.history-row[data-level="none"]{border-left-color:var(--success)}
.history-row:hover{border-color:var(--border-default);background:var(--bg-elevated);box-shadow:var(--shadow-sm)}
.history-meta{display:flex;flex-direction:column;gap:2px;min-width:160px;flex:1}
.history-meta b{font-size:var(--fs-md);color:var(--text-primary);max-width:360px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.history-meta span{font-size:var(--fs-sm);color:var(--text-tertiary)}
.history-rid{font-size:var(--fs-xs);color:var(--text-placeholder);margin-top:1px}
.history-stats{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;flex-shrink:0}
.history-stats .badge{font-size:var(--fs-xs);padding:2px 10px;border-radius:var(--r-full);font-weight:600}
.history-stats .badge-high{background:var(--danger-subtle);color:var(--danger)}
.history-stats .badge-medium{background:var(--warning-subtle);color:var(--warning)}
.history-stats .badge-low{background:var(--info-subtle);color:var(--info)}
.history-stats .badge-none{background:var(--success-subtle);color:var(--success)}
.history-stats .text-sm{font-size:var(--fs-sm);color:var(--text-secondary)}
.history-stats .btn-sm{font-weight:500}
.history-more-wrap{text-align:center;padding:var(--sp-3) 0}
.history-more-btn{padding:6px 24px;border-radius:var(--r-full);font-weight:600;font-size:var(--fs-base)}
/* 响应式 */
@media(max-width:768px){
  .history-row{flex-direction:column;align-items:flex-start}
  .history-stats{width:100%;justify-content:flex-start;margin-top:var(--sp-1)}
  .history-toolbar{flex-direction:column;align-items:flex-start}
  .history-toolbar-actions{width:100%}
  .history-search{flex:1}
}

/* Disclaimer */


/* Feedback Actions */
.feedback-actions{display:flex;gap:var(--sp-2);flex-wrap:wrap;margin:var(--sp-4) 0}

/* Review List */
.review-list{list-style:none;padding:0;display:flex;flex-direction:column;gap:var(--sp-2)}
.review-list li{padding:var(--sp-2) var(--sp-3);background:var(--bg-surface);border-radius:var(--r-sm);border-left:2px solid var(--accent);font-size:var(--fs-base)}
.review-list li b{color:var(--text-primary)}

/* Utilities */
.gap-2{gap:var(--sp-2)}.gap-3{gap:var(--sp-3)}.flex{display:flex}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}
.mt-2{margin-top:var(--sp-2)}.mt-3{margin-top:var(--sp-3)}.mt-4{margin-top:var(--sp-4)}.mt-5{margin-top:var(--sp-5)}.mb-3{margin-bottom:var(--sp-3)}.mb-4{margin-bottom:var(--sp-4)}.mb-5{margin-bottom:var(--sp-5)}
.text-center{text-align:center}.w-full{width:100%}

/* ═══════════════════════════════════════════════
   HOME PAGE
   ═══════════════════════════════════════════════ */
/* 2026-07-26 视觉焕新：Hero 改为左文右示意卡双栏（≤1024px 收为单栏并隐藏示意卡） */
.hero{position:relative;overflow:hidden;background:var(--hero-gradient);border:1px solid var(--border-subtle);border-radius:28px;padding:64px 56px;margin-bottom:var(--sp-8);display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);gap:var(--sp-12);align-items:center;text-align:left}
.hero::before{content:'';position:absolute;inset:0;background:var(--hero-mesh);pointer-events:none}
.hero::after{content:'';position:absolute;inset:0;background-image:linear-gradient(var(--border-subtle) 1px,transparent 1px),linear-gradient(90deg,var(--border-subtle) 1px,transparent 1px);background-size:44px 44px;opacity:0.35;-webkit-mask-image:radial-gradient(ellipse 90% 80% at 30% 20%,#000 0%,transparent 70%);mask-image:radial-gradient(ellipse 90% 80% at 30% 20%,#000 0%,transparent 70%);pointer-events:none}
.hero>*{position:relative;z-index:1}
.hero-inner{min-width:0}
.hero .eyebrow{display:inline-block;margin-bottom:18px;padding:7px 16px;border-radius:999px;background:var(--accent-subtle);border:1px solid rgba(20,184,166,0.2);text-transform:none;letter-spacing:0.02em;font-size:var(--fs-md);font-weight:700}
.hero-title,.hero h1{font-size:2.9rem;font-weight:700;letter-spacing:-0.03em;line-height:var(--lh-tight);margin:0 0 12px;color:var(--text-primary);text-wrap:balance}
.hero-title em{font-style:normal;background:var(--accent-text-grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.hero-slogan{font-size:var(--fs-xl);font-weight:600;color:var(--accent);margin:0 0 12px;letter-spacing:0.01em}
.hero-sub,.hero-inner p:not(.hero-slogan):not(.hero-note){font-size:var(--fs-lg);color:var(--text-secondary);line-height:var(--lh-relaxed);margin:0 0 28px;max-width:520px;white-space:normal}
.hero-actions{display:flex;gap:14px;flex-wrap:wrap}
.hero-note{margin:16px 0 0;font-size:var(--fs-base);color:var(--text-tertiary)}
/* Hero 产品示意卡（纯装饰，aria-hidden） */
.hero-visual{position:relative;display:flex;justify-content:center;min-width:0}
.hv-card{width:100%;max-width:440px;background:var(--bg-card);border:1px solid var(--border-default);border-radius:20px;padding:22px 24px;box-shadow:var(--shadow-lg);transform:rotate(1.2deg);transition:transform var(--dur-slow) var(--ease-out)}
.hv-card:hover{transform:rotate(0deg) translateY(-3px)}
.hv-head{display:flex;align-items:center;gap:8px;font-size:var(--fs-sm);font-weight:600;color:var(--text-tertiary);margin-bottom:14px;text-transform:uppercase;letter-spacing:0.05em}
.hv-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 8px var(--accent);animation:pulse-dot 2s infinite}
.hv-line{font-size:var(--fs-lg);line-height:var(--lh-relaxed);color:var(--text-secondary);margin-bottom:14px}
.hv-line mark{border-radius:4px;padding:1px 4px;font-weight:600}
.hv-line .hv-risk{background:var(--danger-subtle);color:var(--danger);box-shadow:inset 0 -2px 0 var(--danger)}
.hv-line .hv-warn{background:var(--warning-subtle);color:var(--warning);box-shadow:inset 0 -2px 0 var(--warning)}
.hv-tags{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}
.hv-tag{font-size:var(--fs-xs);font-weight:600;border-radius:999px;padding:4px 10px}
.hv-tag-high{background:var(--danger-subtle);color:var(--danger)}
.hv-tag-mid{background:var(--warning-subtle);color:var(--warning)}
.hv-rewrite{border-top:1px dashed var(--border-default);padding-top:12px;font-size:var(--fs-base);color:var(--text-secondary);line-height:var(--lh-normal)}
.hv-rewrite-label{display:inline-block;margin-right:8px;font-size:var(--fs-xs);font-weight:700;color:var(--accent);background:var(--accent-subtle);border-radius:4px;padding:2px 6px;letter-spacing:0.04em}
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-4);margin-bottom:var(--sp-8)}
.stat-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--r-lg);padding:var(--sp-5);position:relative;overflow:hidden;transition:all var(--dur-normal) var(--ease-out)}
.stat-card::after{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--accent),transparent 70%);opacity:0;transition:opacity var(--dur-normal)}
.stat-card:hover{border-color:var(--border-default);transform:translateY(-3px);box-shadow:var(--shadow-md)}
.stat-card:hover::after{opacity:1}
.stat-card .s-icon{font-size:var(--fs-2xl);margin-bottom:var(--sp-3);color:var(--accent)}
.stat-card .s-value{font-size:1.8rem;font-weight:700;letter-spacing:-0.02em;color:var(--text-primary);line-height:var(--lh-tight)}
.stat-card .s-label{font-size:var(--fs-base);color:var(--text-tertiary);margin-top:var(--sp-1)}
.stat-card .s-sub{font-size:var(--fs-sm);color:var(--text-placeholder);margin-top:2px}
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-4);margin-bottom:var(--sp-8)}
.step-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--r-lg);padding:var(--sp-5);display:flex;gap:var(--sp-4);align-items:flex-start;transition:all var(--dur-normal) var(--ease-out)}
.step-card:hover{border-color:var(--accent);background:var(--bg-elevated)}
.step-num{width:34px;height:34px;border-radius:50%;background:var(--accent-subtle);color:var(--accent);display:grid;place-items:center;font-weight:700;font-size:var(--fs-md);flex-shrink:0;border:1px solid rgba(20,184,166,0.2)}
.step-card b{display:block;font-size:var(--fs-lg);font-weight:600;color:var(--text-primary);margin-bottom:2px}
.step-card span{font-size:var(--fs-base);color:var(--text-tertiary);line-height:var(--lh-normal)}
/* V-5：首页首屏增加纵向留白，拉开层次、降低信息密度 */
.home .hero{margin-bottom:var(--sp-10)}
.home .stat-grid{margin-bottom:var(--sp-8)}
.home .steps{margin-bottom:var(--sp-12)}
/* B4：首页首屏减负——统计卡下沉为"为什么选择爱守界"区块；卡片头部支持操作链接 */
/* 2026-07-26 修正：首页 view 横向节奏与 Hero 统一为 56px，标题与卡片自然左对齐，不再单独甩出去 */
#home.view{padding:48px 56px}
@media(max-width:1200px){#home.view{padding:40px 48px}}
@media(max-width:1024px){#home.view{padding:32px 32px}}
@media(max-width:768px){#home.view{padding:24px 24px}}
html[data-mode="mobile"] #home.view{padding:16px 16px 0}
.home-section{margin-bottom:var(--sp-12)}
#home .section-title{font-size:var(--fs-2xl);font-weight:600;letter-spacing:-0.01em;color:var(--text-primary);margin-top:0;margin-bottom:10px;text-indent:1em}
#home .trust-bar{margin-bottom:var(--sp-5)}
.home .card-header{display:flex;justify-content:space-between;align-items:center}
.home .card-header-link{font-size:var(--fs-base);font-weight:500;color:var(--accent)}
.home .card-header-link:hover{color:var(--accent-hover)}

/* ═══════════════════════════════════════════════
   SINGLE DETECTION — 核心重设计
   ═══════════════════════════════════════════════ */
/* 单检测页：上下（纵向）布局——表单在上、结果在下 */
.detect-layout{display:block}
.detect-panel{display:flex;flex-direction:column;gap:var(--sp-3);max-width:100%}
.detect-panel .field-group{margin-bottom:var(--sp-1)}
.detect-panel textarea{min-height:48px}
/* AI 深度分析开关 — 高级 toggle */
.ai-switch{
  margin:var(--sp-3) 0;
  padding:var(--sp-3) var(--sp-4);
  background:var(--bg-elevated);
  border:1px solid var(--border-default);
  border-radius:var(--r-lg);
  transition:border-color .2s,box-shadow .2s,background .2s;
  position:relative;overflow:hidden
}
.ai-switch::before{
  content:"";position:absolute;inset:0;
  background:linear-gradient(135deg,rgba(20,184,166,.03) 0%,rgba(99,102,241,.03) 100%);
  opacity:0;transition:opacity .3s
}
.ai-switch:hover{border-color:var(--accent);box-shadow:0 0 0 1px rgba(20,184,166,.12)}
.ai-switch.has-ai-active{border-color:rgba(20,184,166,.35);box-shadow:0 0 0 2px rgba(20,184,166,.1),0 2px 12px rgba(20,184,166,.06)}
.ai-switch.has-ai-active::before{opacity:1}
.ai-checkbox{display:flex;align-items:center;gap:var(--sp-3);cursor:pointer;user-select:none;position:relative;z-index:1}
.ai-checkbox input[type=checkbox]{display:none}
/* Toggle 滑动开关 — 大号圆润 */
.ai-checkbox-visual{
  flex:0 0 52px;width:52px;height:28px;
  background:var(--border-default);
  border-radius:999px;
  position:relative;
  transition:background .25s,box-shadow .25s;
  box-shadow:inset 0 1px 3px rgba(0,0,0,.12)
}
.ai-checkbox-visual::after{
  content:"";position:absolute;top:3px;left:3px;
  width:22px;height:22px;
  background:linear-gradient(135deg,#fff 0%,#f0f0f0 100%);
  border-radius:50%;
  transition:transform .25s cubic-bezier(.34,1.56,.64,1),box-shadow .25s;
  box-shadow:0 1px 3px rgba(0,0,0,.18),0 0 0 1px rgba(0,0,0,.04)
}
.ai-checkbox input:checked+.ai-checkbox-visual{
  background:var(--accent-grad);
  box-shadow:inset 0 1px 3px rgba(0,0,0,.15),0 0 12px rgba(20,184,166,.3)
}
.ai-checkbox input:checked+.ai-checkbox-visual::after{
  transform:translateX(24px);
  box-shadow:0 2px 6px rgba(0,0,0,.2)
}
.ai-checkbox input:disabled+.ai-checkbox-visual{
  opacity:.35;filter:grayscale(.5)
}
.ai-checkbox-text b{
  display:block;font-size:var(--fs-md);
  background:linear-gradient(135deg,var(--text-primary) 0%,var(--text-secondary) 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
  margin-bottom:2px;font-weight:600
}
.ai-checkbox input:checked~.ai-checkbox-text b{
  background:var(--accent-grad);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text
}
.ai-checkbox-text small{font-size:var(--fs-sm);color:var(--text-tertiary);transition:color .2s}
.ai-checkbox input:checked~.ai-checkbox-text small{color:var(--text-secondary)}
.ai-upgrade-hint{
  display:flex;align-items:center;gap:6px;margin-top:8px;
  font-size:var(--fs-sm);color:var(--warning);position:relative;z-index:1
}
.ai-upgrade-hint a{color:var(--accent);text-decoration:none;font-weight:600;border-bottom:1px dashed var(--accent)}
.ai-upgrade-hint a:hover{border-bottom-style:solid}
/* AI 开关 + 润色开关：同一行并排 */
.ai-switch-row{display:flex;gap:var(--sp-5);flex-wrap:wrap;align-items:flex-start}
.ai-switch-row .ai-checkbox{flex:1 1 220px;min-width:200px}
.ai-checkbox-polish .warn-text{color:var(--warning);font-weight:600}
/* 批量检测页 AI switch 微调 */
.ai-switch-batch{margin:var(--sp-3) 0}
/* 分阶段检测进度 + 诚实 ETA */
.detect-progress{padding:var(--sp-4) var(--sp-2)}
.dp-stage{font-size:var(--fs-md);font-weight:600;color:var(--text-primary);margin-bottom:var(--sp-3)}
.dp-bar{height:8px;border-radius:6px;background:var(--border-default);overflow:hidden}
.dp-fill{height:100%;width:6%;border-radius:6px;
  background:linear-gradient(90deg,#14b8a6 0%,#6366f1 100%);
  transition:width .18s linear}
.dp-meta{display:flex;justify-content:space-between;font-size:var(--fs-sm);color:var(--text-tertiary);margin-top:var(--sp-2)}
.dp-eta{color:var(--text-secondary)}
.dp-hint{font-size:var(--fs-sm);color:var(--text-tertiary);margin-top:var(--sp-2)}
.detect-result-panel{position:static;min-height:200px;margin-top:var(--sp-4);width:100%}
.tech-feats{display:flex;flex-wrap:wrap;gap:var(--sp-2);justify-content:center;margin:var(--sp-2) 0 0}
.tech-feats span{font-size:var(--fs-sm);color:var(--text-secondary);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--r-full);padding:4px 12px}

/* Field Group */
.field-group{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--r-lg);overflow:hidden;transition:border-color var(--dur-fast),box-shadow var(--dur-fast)}
.field-group:hover{border-color:var(--border-default)}
.field-group.is-expanded{border-color:var(--accent);box-shadow:0 0 0 1px rgba(20,184,166,0.08)}
.field-group-header{display:flex;justify-content:space-between;align-items:center;padding:var(--sp-3) var(--sp-4);cursor:pointer;user-select:none;transition:background var(--dur-fast)}
.field-group-header:hover{background:var(--bg-hover)}
.field-group-header span:first-child{font-weight:600;font-size:var(--fs-base);color:var(--text-secondary);text-transform:uppercase;letter-spacing:0.04em}
.field-group-toggle{background:none;border:1px solid var(--border-default);color:var(--text-tertiary);cursor:pointer;font-size:var(--fs-sm);padding:4px var(--sp-2);border-radius:var(--r-xs);transition:all var(--dur-fast)}
.field-group-toggle:hover{background:var(--bg-hover);color:var(--text-primary);border-color:var(--border-strong)}
.field-group-body{padding:0 var(--sp-4) var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-3)}
.field-group-body.collapsed{display:none}

/* ═══════════════════════════════════════════════
   TECH SHOWCASE — 技术能力展示卡
   ═══════════════════════════════════════════════ */
.tech-showcase{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--r-lg);padding:var(--sp-6);text-align:center}
.tech-head{display:flex;gap:var(--sp-2);flex-wrap:wrap;justify-content:center;margin-bottom:var(--sp-4)}
.tech-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:var(--r-full);font-size:var(--fs-sm);font-weight:600;background:var(--accent-subtle);color:var(--accent)}
.tech-badge.muted{background:var(--bg-surface);color:var(--text-tertiary)}
.pulse-dot-sm{width:6px;height:6px;border-radius:50%;background:var(--accent);animation:pulse-dot 2s ease-in-out infinite}
.tech-title{font-size:1.125rem;font-weight:700;color:var(--text-primary);margin-bottom:var(--sp-2)}
.tech-sub{font-size:var(--fs-base);color:var(--text-tertiary);margin-bottom:var(--sp-5);max-width:480px;margin-left:auto;margin-right:auto}
.tech-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-3);margin:var(--sp-4) 0}
.tech-item{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--r-md);padding:var(--sp-4) var(--sp-3);text-align:center;transition:all var(--dur-fast) var(--ease-out)}
.tech-item:hover{background:var(--bg-hover);border-color:var(--accent);transform:translateY(-1px)}
.tech-item b{display:block;font-size:var(--fs-2xl);font-weight:700;color:var(--accent);margin-bottom:2px}
.tech-item span{display:block;font-size:var(--fs-sm);color:var(--text-tertiary);margin-bottom:2px}
.tech-item small{font-size:var(--fs-xs);color:var(--text-placeholder)}
.tech-diff{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-4);margin:var(--sp-4) 0;text-align:left}
.diff-col{padding:var(--sp-4);border-radius:var(--r-md);display:flex;flex-direction:column;gap:var(--sp-2)}
.diff-col b{font-size:var(--fs-lg);font-weight:700;margin-bottom:var(--sp-1)}
.diff-col span{font-size:var(--fs-base);line-height:var(--lh-normal)}
.diff-col.us{background:var(--accent-subtle);border:1px solid rgba(20,184,166,0.2)}
.diff-col.us b{color:var(--accent)}
.diff-col.us span{color:var(--accent)}
.diff-col.them{background:var(--bg-surface);border:1px solid var(--border-subtle)}
.diff-col.them b{color:var(--text-tertiary)}
.diff-col.them span{color:var(--text-placeholder)}
[data-skin="light"] .diff-col.us span{color:#0d9488}

/* ═══════════════════════════════════════════════
   RESULT TABS
   ═══════════════════════════════════════════════ */
.result-summary{display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-4);background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--r-lg);margin-bottom:var(--sp-4)}
.result-tabs{display:flex;gap:2px;margin-bottom:0;border-bottom:1px solid var(--border-subtle);position:sticky;top:0;z-index:20;background:var(--bg-card);margin-left:-20px;margin-right:-20px;padding:8px 20px;box-shadow:0 2px 8px rgba(0,0,0,0.04)}
html[data-mode="mobile"] .result-tabs{top:calc(52px + env(safe-area-inset-top));padding:6px var(--sp-4);gap:1px;font-size:var(--fs-xs)}
html[data-mode="mobile"] .result-tab{padding:var(--sp-2) var(--sp-2);font-size:var(--fs-xs);white-space:nowrap;flex:0 0 auto}
html[data-mode="mobile"] .result-tabs{overflow-x:auto;scrollbar-width:none}
html[data-mode="mobile"] .result-tabs::-webkit-scrollbar{display:none}
.result-tab{padding:var(--sp-2) var(--sp-4);border:none;background:none;border-bottom:2px solid transparent;cursor:pointer;font-weight:600;font-size:var(--fs-base);color:var(--text-tertiary);transition:all var(--dur-fast);margin-bottom:-1px}
.result-tab:hover{color:var(--text-secondary)}
.result-tab.active{border-bottom-color:var(--accent);color:var(--accent)}
.result-tab-content{display:none;padding-top:var(--sp-3)}
.result-tab-content.active{display:block;animation:fadeUp var(--dur-fast) var(--ease-out)}
.result-summary-badges{display:flex;gap:var(--sp-2);margin-left:auto}
.badge-ai{background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;font-size:var(--fs-xs);padding:2px 8px;border-radius:999px;white-space:nowrap}
.badge-success{background:var(--success,#22c55e);color:#fff}
.badge-warn{background:var(--warning-subtle);color:var(--warning-text)}

/* AI 内嵌增强标记（替代独立AI裁决tab） */
.badge-ai-v{background:#ef4444;color:#fff;font-size:var(--fs-2xs);padding:1px 5px;border-radius:999px}
.badge-ai-c{background:#22c55e;color:#fff;font-size:var(--fs-2xs);padding:1px 5px;border-radius:999px}
.badge-ai-u{background:#f59e0b;color:#fff;font-size:var(--fs-2xs);padding:1px 5px;border-radius:999px}
.badge-ai-excluded{background:#9ca3af;color:#fff;font-size:var(--fs-xs);padding:2px 8px;border-radius:999px}
.badge-ai-discovered{background:#f97316;color:#fff;font-size:var(--fs-xs);padding:2px 8px;border-radius:999px}
.ai-v-confidence{font-size:var(--fs-2xs);color:var(--text-tertiary);margin-left:2px}
.ai-ri-reason{font-size:var(--fs-base);color:var(--text-secondary);line-height:var(--lh-snug);margin-top:2px;margin-bottom:2px}
.ai-ri-policy{display:block;font-size:var(--fs-xs);color:var(--accent);margin-top:1px}
.ai-ri-rewrite{display:block;font-size:var(--fs-xs);color:var(--text-secondary);margin-top:1px}
.risk-item.ai-excluded{opacity:.55;border-left-color:#9ca3af}
.risk-item.ai-discovered{border-left-color:#f97316}

/* ═══════════════════════════════════════════════
   BATCH DETECTION — 核心重设计
   ═══════════════════════════════════════════════ */
.drag-zone{position:relative;border:2px dashed var(--border-default);border-radius:var(--r-lg);padding:var(--sp-12) var(--sp-8);text-align:center;cursor:pointer;transition:all var(--dur-fast);background:var(--bg-surface)}
.drag-zone:hover,.drag-zone.dragover{border-color:var(--accent);background:var(--accent-subtle)}
.drag-zone.dragover{animation:pulse-border 1s ease-in-out infinite}
@keyframes pulse-border{0%,100%{border-color:var(--accent)}50%{border-color:var(--accent-hover)}}
.drag-zone-icon{font-size:2.5rem;margin-bottom:var(--sp-3);opacity:0.5}
.drag-zone b{display:block;font-size:var(--fs-lg);color:var(--text-primary);margin-bottom:var(--sp-1)}
.drag-zone span{font-size:var(--fs-base);color:var(--text-tertiary)}
.drag-zone input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer}
.batch-file-info[hidden]{display:none}
.batch-file-info{display:flex;align-items:center;gap:8px;margin-top:12px;padding:10px 14px;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--r-md);font-size:var(--fs-base);color:var(--text-secondary)}
.batch-file-icon{flex-shrink:0;opacity:.7}
.batch-file-name{font-weight:600;color:var(--text-primary);max-width:50%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.batch-file-meta{margin-left:auto;color:var(--text-tertiary);font-size:var(--fs-sm);white-space:nowrap}
.drag-zone-guide{text-align:center;padding:var(--sp-6) var(--sp-5)}

/* Batch Summary */
.batch-summary{display:grid;grid-template-columns:repeat(6,1fr);gap:var(--sp-3);margin:var(--sp-4) 0}
.batch-summary-item{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--r-md);padding:var(--sp-3);text-align:center;transition:all var(--dur-fast)}
.batch-summary-item:hover{background:var(--bg-hover)}
.batch-summary-item b{display:block;font-size:var(--fs-3xl);font-weight:700;color:var(--text-primary);font-variant-numeric:tabular-nums}
.batch-summary-item span{font-size:var(--fs-xs);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:0.03em}
.batch-summary-item.accent b{color:var(--accent)}
.batch-summary-item.danger b{color:var(--danger-text)}[data-skin="light"] .batch-summary-item.danger b{color:var(--danger)}
.batch-summary-item.success b{color:var(--success-text)}[data-skin="light"] .batch-summary-item.success b{color:var(--success)}
.batch-summary-item.warn b{color:var(--warning-text)}[data-skin="light"] .batch-summary-item.warn b{color:var(--warning)}

/* Batch Table — 排序/过滤 */

/* ★ 筛选控制栏（sticky 粘顶，z 高于侧边栏/卡片） */
.batch-filter-bar{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;margin-bottom:var(--sp-3);padding:var(--sp-3) var(--sp-4);
  background:var(--bg-card);border-radius:var(--r-md);border:1px solid var(--border-subtle);
  position:sticky;top:0;z-index:20}

/* 左侧统计文字 */
.bfb-left{flex-shrink:0}
.bfb-total{font-size:var(--fs-base);font-weight:600;color:var(--text-primary);white-space:nowrap}

/* 中间分段按钮组 */
.bfb-center{display:flex;gap:0;flex-wrap:wrap;flex:1;justify-content:center}
.bfb-center .bfb-btn{padding:5px 14px;border:1px solid var(--border-subtle);border-left-width:0;background:var(--bg-base);color:var(--text-secondary);font-size:var(--fs-sm);cursor:pointer;transition:all var(--dur-fast);white-space:nowrap;margin:0}
.bfb-center .bfb-btn:first-child{border-left-width:1px;border-radius:var(--r-sm) 0 0 var(--r-sm)}
.bfb-center .bfb-btn:last-child{border-radius:0 var(--r-sm) var(--r-sm) 0}
.bfb-center .bfb-btn:hover{border-color:var(--accent);color:var(--accent);z-index:1}
.bfb-center .bfb-btn.bfb-active{background:var(--accent);color:#fff;border-color:var(--accent);z-index:2}
.bfb-center .bfb-btn.bfb-high.bfb-active{background:var(--danger);border-color:var(--danger)}
.bfb-center .bfb-btn.bfb-medium.bfb-active{background:var(--warning);border-color:var(--warning);color:#1a1a2e}
.bfb-center .bfb-btn.bfb-low.bfb-active{background:var(--text-tertiary);border-color:var(--text-tertiary)}
.bfb-center .bfb-btn.bfb-review.bfb-active{background:#8b5cf6;border-color:#8b5cf6}
.bfb-center .bfb-btn.bfb-none.bfb-active{background:var(--success);border-color:var(--success);color:#1a1a2e}

/* 右侧平台下拉 + 搜索 */
.bfb-right{display:flex;gap:var(--sp-2);align-items:center;flex-wrap:wrap;flex-shrink:0}
.bfb-select{padding:5px 10px;border-radius:var(--r-sm);border:1px solid var(--border-subtle);background:var(--bg-base);color:var(--text-primary);font-size:var(--fs-sm);min-width:100px}
.bfb-search-wrap{position:relative;display:inline-flex;align-items:center}
.bfb-search-icon{position:absolute;left:8px;font-size:var(--fs-sm);opacity:.5;pointer-events:none}
.bfb-search{padding:5px 10px 5px 26px;border-radius:var(--r-sm);border:1px solid var(--border-subtle);background:var(--bg-base);color:var(--text-primary);font-size:var(--fs-sm);width:200px}
.bfb-search::placeholder{color:var(--text-tertiary)}
.history-rid{display:inline-block;font-size:var(--fs-sm);color:var(--info);background:var(--info-subtle);padding:1px 6px;border-radius:var(--r-sm);margin-left:6px}
.report-section-row{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;padding:var(--sp-3) 0}
.report-section-row h3{font-size:var(--fs-md);margin:0;white-space:nowrap}
.report-stats{font-size:var(--fs-base);color:var(--text-secondary);display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.report-stats b{font-weight:600;color:var(--text-primary)}
.report-actions{display:flex;align-items:center;gap:var(--sp-2);margin-left:auto}

/* 排序表头 */
.batch-sortable{cursor:pointer;user-select:none;transition:color var(--dur-fast)}
.batch-sortable:hover{color:var(--accent)}
.batch-sort-arrow{font-size:var(--fs-2xs);opacity:.4;margin-left:2px}
.batch-sort-active{opacity:1;color:var(--accent)}

/* ★ 主屏滚动锁定：去掉表格内独立滚动，表头粘在筛选栏下方 */
#batchTableWrap .table-wrap{max-height:none;overflow:visible}
#batchTableWrap .batch-table thead{position:sticky;top:var(--batch-filter-h,56px);z-index:10}
#batchTableWrap .batch-table th{background:var(--bg-card)}

.batch-empty{text-align:center;padding:var(--sp-8);color:var(--text-secondary);font-size:var(--fs-md)}

/* AI 复审工具栏 + 状态 badge */
.ai-toolbar{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;margin-bottom:var(--sp-3);padding:var(--sp-2) var(--sp-4);background:var(--bg-surface);border-radius:var(--r-md);border:1px solid var(--border-subtle)}
.ai-toolbar-btns{display:flex;gap:4px;flex-wrap:wrap}
.ai-toolbar .btn.btn-xs{padding:2px 8px;font-size:var(--fs-xs);border-radius:var(--r-sm);border:1px solid var(--border-subtle);background:var(--bg-base);color:var(--text-secondary);cursor:pointer}
.ai-toolbar .btn.btn-xs:hover{border-color:var(--accent);color:var(--accent)}
.ai-toolbar-right{margin-left:auto;display:flex;align-items:center;gap:var(--sp-2)}
.ai-select-count{font-size:var(--fs-sm);color:var(--text-tertiary);white-space:nowrap}
/* AI 润色复选框 */ .ai-polish-label{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border:1px solid var(--border-subtle);border-radius:var(--r-sm);cursor:pointer;font-size:var(--fs-sm);color:var(--text-secondary);background:var(--bg-base);transition:border-color var(--dur-fast),color var(--dur-fast);user-select:none;margin-right:4px}.ai-polish-label:hover{border-color:var(--accent);color:var(--accent)}.ai-polish-label input{accent-color:var(--accent)}.ai-polish-text{white-space:nowrap;letter-spacing:.02em}
/* AI 状态 badge */
.ai-badge{font-size:var(--fs-xs);white-space:nowrap;padding:2px 6px;border-radius:10px}
.ai-badge.ai-pending{color:var(--text-tertiary);background:var(--bg-hover)}
.ai-badge.ai-running{color:var(--accent);animation:ai-pulse 1.5s ease-in-out infinite}
.ai-badge.ai-done{color:var(--success)}
.ai-badge.ai-failed{color:var(--danger)}
@keyframes ai-pulse{0%,100%{opacity:1}50%{opacity:.5}}
/* AI 进度条 */
.ai-progress{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-3);padding:var(--sp-2) var(--sp-4);background:var(--bg-surface);border-radius:var(--r-md);border:1px solid var(--border-subtle)}
.ai-progress-bar{flex:1;height:6px;background:var(--bg-hover);border-radius:3px;overflow:hidden}
.ai-progress-fill{height:100%;background:var(--accent);border-radius:3px;transition:width .3s}
.ai-progress-text{font-size:var(--fs-sm);color:var(--text-secondary);white-space:nowrap}
.ai-btn-pause,.ai-btn-retry{padding:2px 8px;font-size:var(--fs-xs)}
/* checkbox 列 */
.ai-cb,.ai-cb-all{cursor:pointer;width:14px;height:14px;margin:0}

/* Perf Stats */
.perf-stats{display:flex;gap:var(--sp-3);flex-wrap:wrap;margin:var(--sp-3) 0;padding:var(--sp-3) var(--sp-4);background:var(--bg-surface);border-radius:var(--r-md);border:1px solid var(--border-subtle);font-size:var(--fs-sm);color:var(--text-tertiary)}
.perf-stats b{color:var(--text-primary);font-weight:600}
.perf-stats .perf-sep{color:var(--border-strong)}

/* Batch Meta */
.batch-meta{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;margin-bottom:var(--sp-4);padding:var(--sp-3) var(--sp-4);background:var(--bg-surface);border-radius:var(--r-md);border:1px solid var(--border-subtle)}
.batch-meta .sep{width:1px;height:20px;background:var(--border-default)}

/* ═══════════════════════════════════════════════
   COVERAGE — 覆盖漏斗 + 层级结构 + 版本日志
   ═══════════════════════════════════════════════ */
/* Coverage — version info grid */
.version-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.version-item{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:10px;padding:12px 16px;display:flex;flex-direction:column;gap:4px}
.version-label{font-size:var(--fs-xs);color:var(--text-placeholder);text-transform:uppercase;letter-spacing:0.04em}
.version-item b{font-size:var(--fs-md);color:var(--text-primary);word-break:break-all}
.version-tags{display:flex;align-items:flex-start;gap:6px;flex-wrap:wrap}
.version-tags-title{font-size:var(--fs-sm);color:var(--text-tertiary);flex-shrink:0;padding-top:2px}
.tag{display:inline-block;padding:2px 8px;border-radius:6px;font-size:var(--fs-xs);font-weight:500}
.tag-platform{background:rgba(20,184,166,0.08);color:var(--accent);border:1px solid rgba(20,184,166,0.15)}
.link{color:var(--accent);text-decoration:none;font-weight:500;cursor:pointer}
.link:hover{text-decoration:underline}
.tag-risk{background:color-mix(in srgb,var(--info) 7%,transparent);color:var(--info-text);border:1px solid color-mix(in srgb,var(--info) 15%,transparent)}[data-skin="light"] .tag-risk{color:var(--info)}
.tag-limit{background:rgba(234,179,8,0.08);color:#fde047;border:1px solid rgba(234,179,8,0.15)}[data-skin="light"] .tag-limit{color:#b45309}

/* ★ 规则说明页顶部重设计（hero + 统计卡 + 标签分区） */
.cov-hero{margin-bottom:var(--sp-5)}
.cov-hero .cov-section-title{margin-bottom:2px}
.cov-hero .cov-section-desc{margin-bottom:var(--sp-4)}
.cov-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-3);margin-bottom:var(--sp-4)}
.cov-stat{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--r-lg);padding:var(--sp-4);text-align:center;transition:border-color var(--dur-fast),box-shadow var(--dur-fast)}
.cov-stat:hover{border-color:var(--accent);box-shadow:var(--accent-glow)}
.cov-stat-val{display:block;font-size:1.25rem;font-weight:700;color:var(--text-primary);line-height:1.3}
.cov-stat-label{display:block;font-size:var(--fs-xs);color:var(--text-tertiary);margin-top:4px}
.cov-stat.accent .cov-stat-val{color:var(--accent)}
.cov-tags-section{margin-bottom:var(--sp-4)}
.cov-tags-head{font-size:var(--fs-md);font-weight:600;color:var(--text-primary);margin-bottom:var(--sp-3);padding-bottom:var(--sp-2);border-bottom:1px solid var(--border-subtle)}
.cov-tags-wrap{display:flex;gap:8px;flex-wrap:wrap}
/* 统一标签：中性灰底，不再分红/绿/蓝 */
.cov-tags-wrap .tag{background:var(--bg-surface);color:var(--text-secondary);border:1px solid var(--border-default);padding:5px 14px;border-radius:8px;font-size:var(--fs-sm);font-weight:500;transition:border-color var(--dur-fast)}
.cov-tags-wrap .tag:hover{border-color:var(--border-strong)}

/* Coverage — section title */
.cov-section-title{font-size:var(--fs-xl);font-weight:700;color:var(--text-primary);margin-bottom:4px}
.cov-section-desc{font-size:var(--fs-base);margin-bottom:16px}

/* Coverage — Funnel */
.cov-funnel{display:flex;flex-direction:column;gap:12px;padding:16px 0}
.cov-funnel-row{display:flex;align-items:center;gap:16px;width:100%;max-width:700px}
.cov-funnel-step{width:26px;height:26px;border-radius:50%;background:rgba(20,184,166,0.08);border:1px solid rgba(20,184,166,0.2);display:grid;place-items:center;font-size:var(--fs-xs);font-weight:700;color:var(--accent);flex-shrink:0}
.cov-funnel-body{flex:1;min-width:0}
.cov-funnel-bar{position:relative;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:flex-end;min-width:40px;transition:all var(--dur-normal) var(--ease-out);padding-right:10px}
.cov-funnel-bar:hover{filter:brightness(1.1);transform:scaleX(1.03);transform-origin:left}
.cov-funnel-value{font-weight:700;font-size:var(--fs-base);color:#fff;white-space:nowrap}
.cov-funnel-info{display:flex;flex-direction:column;min-width:140px;flex-shrink:0}
.cov-funnel-info b{font-size:var(--fs-base);color:var(--text-primary)}
.cov-funnel-info span{font-size:var(--fs-xs);color:var(--text-tertiary);line-height:var(--lh-snug)}

/* Coverage — Hierarchy */
.cov-hierarchy{display:flex;flex-direction:row;align-items:stretch;gap:12px;padding:0}
.cov-layer-card{flex:1;min-width:0;border:1px solid var(--border-subtle);border-radius:var(--r-md);overflow:hidden;transition:border-color var(--dur-fast)}
.cov-layer-card:hover{border-color:var(--accent)}
.cov-layer-head{display:flex;align-items:center;gap:12px;padding:14px 18px;border-bottom:1px solid var(--border-subtle)}
.cov-layer-head b{font-size:var(--fs-lg);color:var(--text-primary)}
.cov-layer-num{width:24px;height:24px;border-radius:6px;display:grid;place-items:center;font-size:var(--fs-xs);font-weight:700;flex-shrink:0;color:#fff}
.cov-layer-head.l1{background:rgba(20,184,166,0.04)} .cov-layer-head.l1 .cov-layer-num{background:var(--accent)}
.cov-layer-head.l2{background:rgba(59,130,246,0.04)} .cov-layer-head.l2 .cov-layer-num{background:var(--info)}
.cov-layer-head.l3{background:rgba(139,92,246,0.04)} .cov-layer-head.l3 .cov-layer-num{background:var(--purple)}
.cov-layer-head.l4{background:rgba(34,197,94,0.04)} .cov-layer-head.l4 .cov-layer-num{background:var(--success)}
.cov-layer-body{padding:14px 18px;font-size:var(--fs-base);color:var(--text-secondary);line-height:var(--lh-normal)}
.cov-layer-arrow{display:flex;align-items:center;justify-content:center;font-size:1.1rem;color:var(--text-placeholder);flex-shrink:0}

/* Coverage — Metrics row */
.cov-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.cov-metric{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:10px;padding:12px;text-align:center;display:flex;flex-direction:column;gap:2px}
.cov-metric.accent{border-color:rgba(20,184,166,0.2);background:rgba(20,184,166,0.04)}
.cov-metric-val{font-size:1.1rem;font-weight:700;color:var(--text-primary)}
.cov-metric.accent .cov-metric-val{color:var(--accent)}
.cov-metric>span:last-child{font-size:var(--fs-xs);color:var(--text-tertiary)}

/* Tech Strength — hero + stats strip */
.tech-hero{background:linear-gradient(135deg,var(--bg-elevated),var(--bg-card))}
.tech-hero-head{margin-bottom:var(--sp-4)}
.tech-hero-title{font-size:var(--fs-xl);font-weight:700;line-height:var(--lh-snug);color:var(--text-primary);margin-bottom:var(--sp-2)}
.tech-stats{display:grid;grid-template-columns:repeat(5,1fr);gap:var(--sp-3)}
.tech-stat{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--r-md);padding:var(--sp-3) var(--sp-2);text-align:center;display:flex;flex-direction:column;gap:3px}
.tech-stat-val{font-size:var(--fs-2xl);font-weight:700;color:var(--accent);line-height:var(--lh-tight);word-break:break-word}
.tech-stat-label{font-size:var(--fs-xs);color:var(--text-tertiary)}
.tech-stat.accent .tech-stat-val{color:var(--text-primary)}

/* Coverage — Boundary grid */
.cov-boundary-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:12px}
.cov-boundary-item{display:flex;align-items:flex-start;gap:12px;padding:14px;border-radius:var(--r-md);background:var(--bg-surface);border:1px solid var(--border-subtle);transition:border-color var(--dur-fast)}
.cov-boundary-item:hover{border-color:var(--border-default)}
.cov-boundary-icon{font-size:1.1rem;flex-shrink:0;margin-top:1px;color:var(--accent)}
.cov-boundary-icon .icon{width:1.1em;height:1.1em}
.cov-boundary-item b{display:block;font-size:var(--fs-base);color:var(--text-primary);margin-bottom:3px}
.cov-boundary-item span:last-child{font-size:var(--fs-sm);color:var(--text-tertiary);line-height:var(--lh-normal)}

/* Coverage — Changelog Timeline */
.cov-timeline{position:relative;padding-left:var(--sp-5)}
.cov-timeline::before{content:'';position:absolute;left:7px;top:0;bottom:0;width:2px;background:var(--border-default)}
.cov-timeline-item{position:relative;padding-bottom:var(--sp-5);padding-left:var(--sp-6)}
.cov-timeline-item:last-child{padding-bottom:0}
.cov-timeline-dot{position:absolute;left:-21px;top:4px;width:14px;height:14px;border-radius:50%;background:var(--accent);border:2px solid var(--bg-card);z-index:1}
.cov-timeline-card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--r-md);padding:var(--sp-4)}
.cov-timeline-card b{font-size:var(--fs-lg);color:var(--text-primary)}
.cov-timeline-card ul{margin:var(--sp-2) 0 0;padding-left:var(--sp-5);font-size:var(--fs-base);color:var(--text-secondary);line-height:var(--lh-relaxed)}

/* ═══════════════════════════════════════════════
   REPORT — 归档列表
   ═══════════════════════════════════════════════ */
.report-section{margin-bottom:var(--sp-4)}
.report-section h3{font-size:var(--fs-lg);font-weight:600;margin-bottom:var(--sp-3);padding-bottom:var(--sp-2);border-bottom:1px solid var(--border-subtle)}
.report-row{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) 0;border-bottom:1px solid var(--border-subtle);flex-wrap:wrap}
.report-row:last-child{border-bottom:none}
.report-export{border:1px solid var(--border-subtle);border-radius:var(--r-md);background:var(--bg-card);padding:var(--sp-4);margin-top:var(--sp-3)}
.report-export .re-head{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-3)}
.report-export .re-icon{flex:0 0 auto;width:38px;height:38px;border-radius:var(--r-md);display:flex;align-items:center;justify-content:center;background:var(--bg-elevated);color:var(--accent)}
.report-export .re-icon svg{width:18px;height:18px}
.report-export .re-head b{font-size:var(--fs-lg);font-weight:600}
.report-export .re-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2)}
.report-export .re-note{margin-top:var(--sp-2)}
.archive-row{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) 0;border-bottom:1px solid var(--border-subtle);font-size:var(--fs-base);flex-wrap:wrap}
.archive-row:hover{background:var(--bg-hover);margin:0 calc(-1 * var(--sp-2));padding-left:var(--sp-2);padding-right:var(--sp-2)}
.archive-row:last-child{border-bottom:none}
.archive-row b{font-size:var(--fs-base);color:var(--text-primary)}

/* ═══════════════════════════════════════════════
   SESSION CARDS — 本次单条检测 / 本次批量检测
   ═══════════════════════════════════════════════ */
.sc-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--r-lg);margin-bottom:var(--sp-4);overflow:hidden;transition:border-color var(--dur-fast),box-shadow var(--dur-fast)}
.sc-card:hover{border-color:var(--border-default);box-shadow:var(--shadow-md)}
/* risk-level left accent */
.sc-card--high{border-left:3px solid var(--danger)}
.sc-card--medium{border-left:3px solid var(--warning)}
.sc-card--low{border-left:3px solid var(--info)}
.sc-card--none{border-left:3px solid var(--success)}
.sc-card--batch{border-left:3px solid var(--accent)}
/* head */
.sc-card__head{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-5);border-bottom:1px solid var(--border-subtle);background:var(--bg-surface)}
.sc-card__head-icon{width:30px;height:30px;border-radius:var(--r-sm);display:grid;place-items:center;flex-shrink:0}
.sc-card__head-icon svg{width:15px;height:15px}
.sc-card--high .sc-card__head-icon{background:var(--danger-subtle);color:var(--danger)}
.sc-card--medium .sc-card__head-icon{background:var(--warning-subtle);color:var(--warning)}
.sc-card--low .sc-card__head-icon{background:var(--info-subtle);color:var(--info)}
.sc-card--none .sc-card__head-icon{background:var(--success-subtle);color:var(--success)}
.sc-card--batch .sc-card__head-icon{background:var(--accent-subtle);color:var(--accent)}
.sc-card__head-title{font-size:var(--fs-md);font-weight:600;color:var(--text-primary);flex:1}
.sc-card__head-count{font-size:var(--fs-sm);color:var(--text-tertiary);background:var(--bg-hover);padding:2px 10px;border-radius:var(--r-full);font-weight:500;white-space:nowrap}
/* body */
.sc-card__body{padding:var(--sp-3) var(--sp-5)}
/* single card: risk-badge + listing + platform + time on one line */
.sc-card__info-row{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}
.sc-risk-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:var(--r-full);font-size:var(--fs-sm);font-weight:600;white-space:nowrap}
.sc-risk-badge--high{background:var(--danger-subtle);color:var(--danger)}
.sc-risk-badge--medium{background:var(--warning-subtle);color:var(--warning)}
.sc-risk-badge--low{background:var(--info-subtle);color:var(--info)}
.sc-risk-badge--none{background:var(--success-subtle);color:var(--success)}
.sc-risk-badge--review{background:var(--purple-subtle);color:var(--purple)}
.sc-card__listing{font-size:var(--fs-md);font-weight:600;color:var(--text-primary)}
.sc-card__platform{font-size:var(--fs-base);color:var(--text-secondary)}
.sc-card__time{font-size:var(--fs-sm);color:var(--text-tertiary);margin-left:auto;white-space:nowrap;flex-shrink:0}
/* single card: compact stat summary line */
.sc-summary-row{display:flex;align-items:center;gap:var(--sp-1);flex-wrap:wrap;margin-top:var(--sp-2);font-size:var(--fs-base);color:var(--text-secondary)}
.sc-summary-row .sc-stat{display:inline-flex;align-items:center;gap:3px}
.sc-summary-row .sc-stat__num{font-weight:700}
.sc-summary-row .sc-stat__num.hi{color:var(--danger)}
.sc-summary-row .sc-stat__num.md{color:var(--warning)}
.sc-summary-row .sc-stat__num.lo{color:var(--info)}
.sc-summary-row .sc-stat__num.rv{color:var(--purple)}
.sc-summary-row .sc-stat__label{color:var(--text-tertiary)}
.sc-sep{color:var(--border-default);margin:0 2px}
/* batch stat grid */
.sc-batch-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:var(--sp-2);margin-top:var(--sp-2)}
.sc-batch-stat{text-align:center;padding:var(--sp-3) var(--sp-2);border-radius:var(--r-md);background:var(--bg-surface);border:1px solid var(--border-subtle);transition:border-color var(--dur-fast)}
.sc-batch-stat:hover{border-color:var(--border-default)}
.sc-batch-stat__num{display:block;font-size:var(--fs-3xl);font-weight:700;line-height:var(--lh-tight);margin-bottom:1px}
.sc-batch-stat__label{font-size:var(--fs-xs);color:var(--text-tertiary);font-weight:500}
.sc-batch-stat--high .sc-batch-stat__num{color:var(--danger)}
.sc-batch-stat--medium .sc-batch-stat__num{color:var(--warning)}
.sc-batch-stat--low .sc-batch-stat__num{color:var(--info)}
.sc-batch-stat--review .sc-batch-stat__num{color:var(--purple)}
.sc-batch-stat--none .sc-batch-stat__num{color:var(--success)}
/* download action bar inside card — flatten the box */
.sc-card__dl{padding:var(--sp-3) var(--sp-5);border-top:1px solid var(--border-subtle);background:var(--bg-surface)}
.sc-card__dl .report-export{border:none;background:transparent;padding:0;margin:0}
.sc-card__dl .report-export .re-head{margin-bottom:0}
.sc-card__dl .report-export .re-icon{width:24px;height:24px;background:var(--bg-elevated)}
.sc-card__dl .report-export .re-icon svg{width:14px;height:14px}
.sc-card__dl .report-export .re-head b{font-size:var(--fs-base)}
.sc-card__dl .report-export .re-note{margin-top:var(--sp-1)}
/* responsive: batch grid 2-col on narrow */
@media (max-width:600px){.sc-batch-grid{grid-template-columns:repeat(2,1fr)}.sc-card__body{padding:var(--sp-3)}.sc-card__dl{padding:var(--sp-3)}}

/* ═══════════════════════════════════════════════
   FEEDBACK — 反馈历史
   ═══════════════════════════════════════════════ */
.fb-history-item{padding:var(--sp-3) var(--sp-4);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--r-md);margin-bottom:var(--sp-2)}
.fb-history-item:hover{background:var(--bg-hover)}
/* 反馈页优化（响应式 + 联动字段 + 校验态） */
.section-sub{color:var(--text-tertiary);font-size:var(--fs-md);margin:.25rem 0 0}
.form-control{width:100%;padding:10px 12px;border-radius:var(--r-md);border:1px solid var(--border-subtle);background:var(--bg-surface);color:var(--text-primary);font-size:var(--fs-md);outline:none}
.form-control:focus{border-color:var(--accent)}
.fb-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--sp-3) var(--sp-4);margin-bottom:var(--sp-2)}
.fb-field{display:flex;flex-direction:column;gap:6px;font-size:var(--fs-md);color:var(--text-secondary)}
.fb-hint{color:var(--text-tertiary);font-size:var(--fs-sm);line-height:var(--lh-snug)}
.fb-conditional{margin-top:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-3);background:var(--bg-elevated);border:1px solid var(--border-subtle);border-radius:var(--r-md)}
.req{color:var(--danger)}
.fb-error{color:var(--danger-text);font-size:var(--fs-sm)}
.fb-actions{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap}
.fb-status{flex:1;min-width:220px}
.fb-status .alert{display:block}
.fb-lead{background:var(--bg-elevated)}
.btn-outline{display:inline-flex;align-items:center;gap:6px;padding:9px 16px;border-radius:var(--r-md);border:1px solid var(--accent);color:var(--accent);background:transparent;font-weight:600;text-decoration:none}
.btn-outline:hover{background:var(--accent-subtle)}
[data-skin="light"] .btn-outline{color:var(--accent)}
@media (max-width:640px){.fb-grid{grid-template-columns:1fr}}

/* ═══════════════════════════════════════════════
   SURVEY — 试用问卷弹窗
   ═══════════════════════════════════════════════ */
.survey-overlay{position:fixed;inset:0;z-index:25;background:rgba(0,0,0,0);display:none;align-items:center;justify-content:center;transition:background var(--dur-slow) var(--ease-out)}
.survey-overlay.open{display:flex;background:var(--overlay)}
.survey-modal{background:var(--bg-card);border:1px solid var(--border-default);border-radius:var(--r-xl);padding:var(--sp-8);width:min(480px,95%);max-height:90vh;overflow-y:auto;position:relative;animation:surveyIn var(--dur-slow) var(--ease-out)}
@keyframes surveyIn{from{opacity:0;transform:translateY(20px) scale(0.97)}to{opacity:1;transform:translateY(0) scale(1)}}
.survey-close{position:absolute;top:var(--sp-4);right:var(--sp-4);width:32px;height:32px;border-radius:50%;border:1px solid var(--border-default);background:var(--bg-card);cursor:pointer;display:grid;place-items:center;font-size:1.1rem;color:var(--text-secondary);transition:all var(--dur-fast)}
.survey-close:hover{background:var(--bg-hover);color:var(--text-primary)}
.survey-header{text-align:center;margin-bottom:var(--sp-6)}
.survey-header h3{font-size:1.125rem;font-weight:700;margin-bottom:var(--sp-2)}
.survey-header p{font-size:var(--fs-base);color:var(--text-tertiary)}
.survey-badge{display:inline-block;padding:3px 10px;border-radius:var(--r-full);background:var(--accent-subtle);color:var(--accent);font-size:var(--fs-sm);font-weight:600;margin-bottom:var(--sp-3)}
.survey-body{display:flex;flex-direction:column;gap:var(--sp-4)}
.survey-body label{font-weight:600;font-size:var(--fs-base);color:var(--text-secondary);margin-bottom:0}
.survey-body select,.survey-body input{margin-top:var(--sp-1)}
.survey-submit{width:100%;margin-top:var(--sp-2)}

/* ═══════════════════════════════════════════════
   AUTH — 邮箱登录/注册弹窗
   ═══════════════════════════════════════════════ */
.auth-overlay{position:fixed;inset:0;z-index:40;background:rgba(0,0,0,0);display:none;align-items:center;justify-content:center;transition:background var(--dur-slow) var(--ease-out)}
.auth-overlay.open{display:flex;background:var(--overlay)}
.auth-modal{background:var(--bg-card);border:1px solid var(--border-default);border-radius:var(--r-xl);padding:var(--sp-8);width:min(420px,92%);max-height:90vh;overflow-y:auto;position:relative;animation:surveyIn var(--dur-slow) var(--ease-out)}
/* 2026-07-26 视觉焕新：弹窗顶部品牌渐变亮条 */
.auth-modal::before{content:'';position:absolute;top:0;left:32px;right:32px;height:2px;border-radius:2px;background:linear-gradient(90deg,var(--accent),#38bdf8)}
/* 2026-07-26 视觉焕新：侧边栏访客登录入口 */
#authGuestArea{margin-top:var(--sp-2)}
.btn-block{display:flex;width:100%;justify-content:center}
.auth-header{text-align:center;margin-bottom:14px}
.auth-header h3{margin:12px 0 4px;font-size:1.125rem}
.auth-header p{color:var(--text-secondary);font-size:var(--fs-base);margin:0}
.auth-logo{display:flex;justify-content:center;align-items:center;height:80px;margin-bottom:14px}
/* 2026-07-09：logo 改用外部文件，按主题切换（浅色 aishoujie_logo.svg / 深色 aishoujie_logo_dark.svg） */
.logo-img{height:75px;width:auto;display:block}
.logo-light{display:block}
.logo-dark{display:none}
[data-skin="dark"] .logo-light{display:none}
[data-skin="dark"] .logo-dark{display:block}
/* 2026-07-09：登录/注册 Tab 切换 */
.auth-tabs{display:flex;gap:8px;padding:4px;background:var(--bg-hover);border-radius:var(--r-md);margin:0 0 18px}
.auth-tab{flex:1;padding:8px 0;border:none;border-radius:var(--r-md);background:transparent;color:var(--text-secondary);font-size:var(--fs-md);cursor:pointer;transition:background var(--dur-fast),color var(--dur-fast)}
.auth-tab.active{background:var(--bg-card);color:var(--text-primary);font-weight:600;box-shadow:0 1px 3px rgba(0,0,0,.08)}
.auth-body label{display:block;margin-bottom:var(--sp-4)}
.auth-body label span{display:block;margin-bottom:3px}
.auth-body input{width:100%;padding:10px 12px;border:1px solid var(--border-default);border-radius:var(--r-md);background:var(--bg-input);color:var(--text-primary);font-size:var(--fs-md);margin-top:4px}
.auth-body input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--accent-subtle)}
.auth-actions{display:flex;gap:8px;margin-top:var(--sp-5)}
.auth-actions .btn{width:100%;flex:1}
/* UI-5：auth 弹窗关闭按钮 */
.auth-close{position:absolute;top:var(--sp-4);right:var(--sp-4);width:32px;height:32px;border-radius:50%;border:1px solid var(--border-default);background:var(--bg-card);cursor:pointer;display:grid;place-items:center;font-size:1.1rem;color:var(--text-secondary);transition:all var(--dur-fast);z-index:2}
.auth-close:hover{background:var(--bg-hover);color:var(--text-primary)}
/* 注册条款勾选 + 密码强度 + 重发倒计时 */
.auth-terms{display:flex;align-items:flex-start;gap:8px;margin:10px 0 0;font-size:var(--fs-base);color:var(--text-secondary);cursor:pointer}
.auth-terms input{width:16px;height:16px;margin-top:2px;flex:0 0 auto;accent-color:var(--accent)}
.auth-terms a{color:var(--accent);text-decoration:none}
.auth-terms a:hover{text-decoration:underline}
#authPasswordHint.ok{color:var(--success);font-weight:600}
#authResendBtn:disabled{opacity:.55;cursor:not-allowed}
.auth-footer{margin-top:var(--sp-5);text-align:center}
/* 用户区 */
.auth-user{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:var(--r-md);background:var(--bg-hover);cursor:default}
.auth-user-email{font-size:var(--fs-sm);color:var(--text-secondary);max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.auth-logout-btn{font-size:var(--fs-xs);color:var(--danger);background:none;border:none;cursor:pointer;padding:2px 6px;border-radius:4px}
.auth-logout-btn:hover{background:var(--danger-subtle)}
.admin-quota-panel{margin:6px 14px;padding:8px;background:var(--bg-card);border-radius:8px;border:1px solid var(--border-default)}
.admin-quota-title{font-size:var(--fs-xs);color:var(--text-secondary);margin-bottom:6px}
.admin-quota-input{display:block;width:100%;box-sizing:border-box;padding:5px 8px;font-size:var(--fs-sm);border:1px solid var(--border-default);border-radius:4px;background:var(--bg-input);color:var(--text-primary);margin-bottom:6px}
.admin-quota-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-subtle)}
.admin-quota-btn{display:block;width:100%;padding:5px 0;font-size:var(--fs-sm);color:#fff;background:var(--accent);border:none;border-radius:4px;cursor:pointer}
.admin-quota-btn:hover{background:var(--accent-hover)}
.admin-quota-btn:disabled{opacity:.5;cursor:not-allowed}
.admin-quota-msg{font-size:var(--fs-xs);margin-top:4px;min-height:1em}
.admin-quota-msg.success{color:var(--success)}
.admin-quota-msg.error{color:var(--danger)}

/* ═══════════════════════════════════════════════
   PAYMENT MODAL — 支付 / 升级确认弹窗（精致版）
   ═══════════════════════════════════════════════ */
.pay-overlay{position:fixed;inset:0;z-index:60;background:rgba(15,23,42,0);display:none;align-items:center;justify-content:center;backdrop-filter:blur(3px);transition:background var(--dur-slow) var(--ease-out)}
.pay-overlay.open{display:flex;background:var(--overlay)}
.pay-modal{
  background:var(--bg-card);border:1px solid var(--border-default);
  border-radius:var(--r-xl);width:min(440px,92%);max-height:92vh;overflow-y:auto;
  position:relative;box-shadow:0 24px 70px -12px rgba(0,0,0,.55);
  animation:surveyIn var(--dur-slow) var(--ease-out);
}
.pay-modal::before{content:"";display:block;height:4px;border-radius:var(--r-xl) var(--r-xl) 0 0;background:linear-gradient(90deg,var(--accent),var(--accent-hover))}
.pay-close{position:absolute;top:14px;right:14px;width:30px;height:30px;border-radius:50%;border:1px solid var(--border-default);background:var(--bg-card);cursor:pointer;display:grid;place-items:center;font-size:1.1rem;color:var(--text-secondary);transition:all var(--dur-fast);z-index:3}
.pay-close:hover{background:var(--bg-hover);color:var(--text-primary);transform:rotate(90deg)}
.pay-header{text-align:center;margin:0;padding:26px 20px 18px;border-bottom:1px solid var(--border-subtle)}
.pay-header b{display:block;font-size:1.1875rem;font-weight:700;color:var(--text-primary);letter-spacing:-0.01em}
.pay-sub{font-size:var(--fs-base);color:var(--text-tertiary);margin-top:6px;display:block}

/* 通用弹窗内容区 */
.pay-body{padding:22px 20px}
.up-body{text-align:left}

/* LOADING — 三步进度感，缓解冷启动等待感知 */
.pay-loading{padding:28px 20px 32px}
.pay-loading-illu{display:grid;place-items:center;margin-bottom:18px}
.pay-loading-illu .spinner{border-color:var(--accent-subtle);border-top-color:var(--accent)}
.pay-steps{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:18px}
.pay-step{font-size:var(--fs-sm);color:var(--text-tertiary);padding:4px 10px;border-radius:999px;background:var(--bg-hover);border:1px solid transparent;animation:payStepPulse 1.8s infinite}
.pay-step[data-step="2"]{animation-delay:.6s}
.pay-step[data-step="3"]{animation-delay:1.2s}
.pay-step-sep{width:14px;height:1px;background:var(--border-default)}
@keyframes payStepPulse{0%,100%{opacity:.45}50%{opacity:1;color:var(--text-primary);border-color:var(--accent-subtle)}}

/* 升级弹窗：计算中 / 错误态 */
.up-loading{display:flex;flex-direction:column;align-items:center;gap:14px;padding:30px 0}
.up-loading .spinner{width:34px;height:34px;border-width:3px;border-color:var(--accent-subtle);border-top-color:var(--accent);animation:spin .8s linear infinite}
.up-loading p{font-size:var(--fs-base);color:var(--text-tertiary);margin:0}
.up-error{display:none;padding:12px 14px;margin-bottom:14px;border-radius:var(--r-md);background:var(--danger-subtle);border:1px solid var(--danger);color:var(--danger);font-size:var(--fs-base);line-height:var(--lh-normal)}

/* 升级弹窗：信息卡 */
.up-card{background:var(--bg-elevated);border:1px solid var(--border-subtle);border-radius:var(--r-md);padding:12px 14px;margin-bottom:12px}
.up-row{display:flex;justify-content:space-between;align-items:center;font-size:var(--fs-base);padding:5px 0}
.up-row span{color:var(--text-tertiary)}
.up-row b{color:var(--text-primary);font-weight:600}
.up-row .up-months{font-style:normal;font-weight:400;font-size:var(--fs-sm);color:var(--text-tertiary);margin-left:2px}
.up-row.up-row-credit b{color:var(--success)}
.up-price{font-weight:700;font-variant-numeric:tabular-nums}
.up-section-title{font-size:var(--fs-sm);font-weight:600;color:var(--text-tertiary);margin:2px 0 8px;letter-spacing:.02em}
.up-total{background:var(--accent-subtle);border:1px solid var(--accent);border-radius:var(--r-md);padding:14px;margin-bottom:16px}
.up-total-row{display:flex;justify-content:space-between;align-items:baseline;font-size:var(--fs-md)}
.up-total-row span{color:var(--text-primary);font-weight:600}
.up-amount{font-size:var(--fs-3xl);font-weight:700;color:var(--accent);letter-spacing:-0.02em;font-variant-numeric:tabular-nums}
.up-total-sub{display:flex;justify-content:space-between;align-items:center;font-size:var(--fs-sm);margin-top:7px;color:var(--text-tertiary)}
.up-total-sub b{color:var(--text-secondary);font-weight:600}
.up-note{font-size:var(--fs-sm);color:var(--text-tertiary);line-height:var(--lh-normal);margin:0 0 16px}
.up-note b{color:var(--text-secondary);font-weight:600}
.up-protocol{font-size:var(--fs-xs);color:var(--text-tertiary);line-height:var(--lh-normal);margin:0 0 18px;text-align:center}
.up-actions{margin-top:0}

/* QR */
.pay-qr-hint{font-size:var(--fs-base);color:var(--text-secondary);text-align:center;margin-bottom:14px}
.pay-qr-hint b{color:var(--success)}
.pay-qr-wrap{position:relative;width:220px;height:220px;margin:0 auto 16px;padding:0;background:#fff;border-radius:var(--r-lg);overflow:hidden;box-shadow:inset 0 0 0 1px var(--border-subtle),0 8px 24px -8px rgba(0,0,0,.25)}
.pay-qr-wrap img{display:block;width:100%;height:100%;object-fit:cover}
.pay-qr-expired-overlay{position:absolute;inset:0;background:rgba(15,23,42,.78);display:flex;align-items:center;justify-content:center;border-radius:var(--r-lg)}
.pay-qr-expired-overlay span{color:#fff;font-size:var(--fs-md);font-weight:600}

/* 信息行卡片化 */
.pay-info{width:100%;margin-top:4px;display:flex;flex-direction:column;gap:8px;background:var(--bg-elevated);border:1px solid var(--border-subtle);border-radius:var(--r-md);padding:12px 14px}
.pay-info-row{display:flex;justify-content:space-between;align-items:center;font-size:var(--fs-base)}
.pay-info-row span{color:var(--text-tertiary)}
.pay-info-row code{font-size:var(--fs-sm);background:var(--bg-hover);padding:2px 6px;border-radius:4px;color:var(--text-secondary);max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pay-info-row b{color:var(--text-primary)}
.pay-foot-tip{font-size:var(--fs-xs);color:var(--text-tertiary);text-align:center;margin-top:10px}

/* 费用明细（支付弹窗内） */
.pay-proration{margin-top:14px;padding:14px;border:1px solid var(--border-subtle);border-radius:var(--r-md);background:var(--bg-elevated);text-align:left}
.pay-proration .pror-title{font-size:var(--fs-base);font-weight:700;margin-bottom:10px;color:var(--text-primary);display:flex;align-items:center;gap:6px}
.pay-proration .pror-title::before{content:"";width:3px;height:13px;border-radius:2px;background:var(--accent)}
.pay-proration .pror-row{display:flex;justify-content:space-between;align-items:center;font-size:var(--fs-base);padding:5px 0;color:var(--text-secondary)}
.pay-proration .pror-row span{color:var(--text-tertiary)}
.pay-proration .pror-row b{color:var(--text-primary);font-weight:600}
.pay-proration .pror-credit b{color:var(--success)}
.pay-proration .pror-total{border-top:1px dashed var(--border-default);margin-top:6px;padding-top:10px}
.pay-proration .pror-total span{color:var(--text-primary);font-weight:600;font-size:var(--fs-md)}
.pay-proration .pror-total b{color:var(--accent);font-size:var(--fs-xl);font-weight:700;font-variant-numeric:tabular-nums}
.pay-proration .pror-note{font-size:var(--fs-sm);color:var(--text-tertiary);margin:8px 0 0;line-height:var(--lh-normal)}

/* 结果态 */
.pay-result{padding:34px 24px;text-align:center}
.pay-result-icon{margin:0 auto 16px;width:60px;height:60px;display:grid;place-items:center;border-radius:50%}
.pay-result-icon.success{color:var(--success);background:var(--success-subtle);animation:payPop .4s var(--ease-out)}
.pay-result-icon.danger{color:var(--danger);background:var(--danger-subtle)}
.pay-result-icon.warning-icon{color:var(--warning);background:var(--warning-subtle)}
.pay-result-icon svg{width:34px;height:34px}
.pay-result-title{font-size:1.125rem;font-weight:700;display:block;margin-bottom:6px;color:var(--text-primary)}
.pay-result-actions{display:flex;gap:10px;width:100%;margin-top:18px}
.pay-result-actions .btn{flex:1}
@keyframes payPop{0%{transform:scale(.6);opacity:0}60%{transform:scale(1.06)}100%{transform:scale(1);opacity:1}}
/* 对勾描边动画：支付成功即时正反馈 */
.pay-result-icon.success svg circle,.pay-result-icon.success svg path{stroke-dasharray:140;stroke-dashoffset:140;animation:payDraw .6s var(--ease-out) forwards}
@keyframes payDraw{to{stroke-dashoffset:0}}

@media(max-width:480px){
  .pay-modal{width:94%}
  .pay-qr-wrap{width:190px;height:190px}
  .pay-qr-wrap img{width:190px;height:190px}
}

/* ═══════════════════════════════════════════════
   AI MODAL — AI 供应商 / 提示词编辑弹窗
   ═══════════════════════════════════════════════ */
.ai-modal-overlay{position:fixed;inset:0;z-index:70;background:var(--overlay);display:none;align-items:center;justify-content:center;backdrop-filter:blur(3px)}
.ai-modal-overlay.open{display:flex}
.ai-modal{
  background:var(--bg-card);border:1px solid var(--border-default);
  border-radius:var(--r-xl);width:min(480px,92%);max-height:90vh;overflow-y:auto;
  box-shadow:0 24px 70px -12px rgba(0,0,0,.55);
  animation:surveyIn .25s ease-out;
}
.ai-modal::before{content:"";display:block;height:3px;border-radius:var(--r-xl) var(--r-xl) 0 0;background:linear-gradient(90deg,var(--accent),var(--purple))}
.ai-modal-title{font-size:var(--fs-xl);font-weight:700;color:var(--text-primary);padding:20px 24px 0;margin:0}
.ai-modal-body{padding:16px 24px 20px}
.ai-modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:12px 24px;border-top:1px solid var(--border-subtle)}
.ai-form-row{margin-bottom:14px}
.ai-form-row label{display:block;font-size:var(--fs-sm);font-weight:600;color:var(--text-secondary);margin-bottom:3px}
.ai-form-row label code{font-weight:400;color:var(--text-tertiary);font-size:var(--fs-xs)}
.ai-form-row input,.ai-form-row textarea,.ai-form-row select{
  display:block;width:100%;box-sizing:border-box;
  padding:8px 10px;font-size:var(--fs-base);
  border:1px solid var(--border-default);border-radius:6px;
  background:var(--bg-input);color:var(--text-primary);
  transition:border-color .15s,box-shadow .15s;
}
.ai-form-row input:focus,.ai-form-row textarea:focus,.ai-form-row select:focus{
  outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-subtle);
}
.ai-form-row-split{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px}
.ai-form-hint{font-size:var(--fs-xs);color:var(--text-tertiary);margin-top:2px;line-height:var(--lh-snug)}
.ai-form-toggle{
  cursor:pointer;font-size:var(--fs-sm);color:var(--accent);
  padding:6px 0;display:inline-block;user-select:none;
  margin-top:4px;
}
.ai-form-toggle:hover{color:var(--accent-hover)}
.ai-form-advanced{display:none;padding-top:10px;border-top:1px dashed var(--border-subtle);margin-top:8px}
.ai-form-advanced.open{display:block}

/* ═══════════════════════════════════════════════
   ADMIN — 后台管理面板
   ═══════════════════════════════════════════════ */
/* Tab 导航 — 精致设计 */
.admin-tabs{
  display:flex;gap:4px;
  background:var(--bg-hover);
  padding:4px;border-radius:var(--r-lg);
  margin-bottom:var(--sp-5);
  position:relative
}
.admin-tab{
  flex:1;text-align:center;
  padding:10px 20px;
  font-size:var(--fs-base);font-weight:500;
  color:var(--text-tertiary);
  background:transparent;border:none;
  border-radius:calc(var(--r-lg) - 4px);
  cursor:pointer;
  transition:all .2s;
  position:relative;
  white-space:nowrap
}
.admin-tab:hover{color:var(--text-primary);background:var(--bg-elevated)}
.admin-tab.active{
  color:var(--accent);font-weight:600;
  background:var(--bg-card);
  box-shadow:0 1px 3px rgba(0,0,0,.08),0 0 0 1px var(--border-subtle)
}
.admin-tab .tab-icon{display:inline-block;margin-right:6px;vertical-align:-1px;font-size:var(--fs-xl)}
/* Tab 面板 */
.admin-tab-panel{display:none}
.admin-tab-panel.active{display:block;animation:tabFadeIn .3s ease}
@keyframes tabFadeIn{from{opacity:.6;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
/* 统计卡片 */
.admin-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-3);margin-bottom:var(--sp-4)}
.admin-stat-card{background:var(--bg-card);border:1px solid var(--border-default);border-radius:var(--r-lg);padding:var(--sp-4);text-align:center}
.admin-stat-value{font-size:1.75rem;font-weight:700;color:var(--accent);line-height:var(--lh-tight)}
.admin-stat-label{font-size:var(--fs-sm);color:var(--text-tertiary);margin-top:4px}
.admin-sub-tags{display:flex;gap:var(--sp-2);flex-wrap:wrap}
.admin-sub-tag{padding:4px 12px;border-radius:999px;font-size:var(--fs-base);font-weight:500;background:var(--bg-hover);color:var(--text-secondary);border:1px solid var(--border-subtle)}
.admin-sub-tag b{color:var(--accent)}
/* Filter bar */
.admin-filter-bar{display:flex;gap:var(--sp-2);align-items:center;flex-wrap:wrap}
.admin-filter-bar>*{flex-shrink:0}
.admin-filter-select,.admin-filter-search{padding:7px 12px;border:1px solid var(--border-default);border-radius:var(--r-md);background:var(--bg-input);color:var(--text-primary);font-size:var(--fs-base);min-width:120px}
.admin-filter-search{min-width:200px;flex:1}
.admin-filter-select:focus,.admin-filter-search:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 2px var(--accent-subtle)}
/* Table */
.admin-table-wrap{overflow-x:auto}
.admin-table{width:100%;border-collapse:collapse;font-size:var(--fs-base);min-width:800px}
.admin-table th{text-align:left;padding:var(--sp-2) var(--sp-3);font-weight:600;color:var(--text-secondary);border-bottom:2px solid var(--border-default);white-space:nowrap;font-size:var(--fs-sm);text-transform:uppercase;letter-spacing:.5px}
.admin-table td{padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--border-subtle);color:var(--text-primary)}
.admin-table tbody tr:hover{background:var(--bg-hover)}
.admin-table code{font-size:var(--fs-sm);background:var(--bg-hover);padding:1px 6px;border-radius:4px;color:var(--text-secondary);max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block}
/* Status badges */
.admin-badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:var(--fs-xs);font-weight:600;text-transform:uppercase;letter-spacing:.3px}
.admin-badge.paid{background:var(--success-subtle);color:var(--success)}
.admin-badge.pending{background:var(--warning-subtle);color:var(--warning)}
.admin-badge.expired{background:var(--bg-hover);color:var(--text-tertiary)}
.admin-badge.refunded{background:var(--danger-subtle);color:var(--danger)}
.admin-badge.upgraded{background:var(--info-subtle);color:var(--info)}
/* Actions */
.admin-actions{display:flex;gap:4px}
.admin-actions .btn-sm{padding:3px 10px;font-size:var(--fs-xs);line-height:var(--lh-snug)}
/* Pagination */
.admin-pagination{display:flex;align-items:center;justify-content:center;gap:var(--sp-2);margin-top:var(--sp-3);padding-top:var(--sp-3);border-top:1px solid var(--border-subtle)}
.admin-page-btn{padding:5px 12px;border:1px solid var(--border-default);border-radius:var(--r-md);background:var(--bg-card);color:var(--text-secondary);font-size:var(--fs-base);cursor:pointer;transition:all var(--dur-fast)}
.admin-page-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}
.admin-page-btn:disabled{opacity:.4;cursor:not-allowed}
.admin-page-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}
.admin-page-info{font-size:var(--fs-sm);color:var(--text-tertiary);padding:0 var(--sp-2)}
/* Admin table section header */
.admin-section-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-3) var(--sp-4) 0}
.admin-section-header .pricing-subtitle{margin-bottom:0}
.admin-count-badge{display:inline-block;font-size:var(--fs-sm);font-weight:500;color:var(--text-tertiary);margin-left:6px}
.admin-count-badge::before{content:"("}
.admin-count-badge::after{content:")"}
/* Refund list */
.admin-refund-item{display:flex;justify-content:space-between;align-items:center;padding:var(--sp-2) 0;border-bottom:1px solid var(--border-subtle);font-size:var(--fs-base)}
.admin-refund-item:last-child{border-bottom:none}

@media(max-width:1024px){ .admin-stats{grid-template-columns:repeat(2,1fr)} }
@media(max-width:640px){ .admin-stats{grid-template-columns:1fr}; .admin-filter-bar{flex-direction:column} .admin-filter-search{width:100%} }
/* 移动端后台入口：桌面端强制隐藏（盖过 JS 可能设的 inline display），移动端仅管理员可见 */
html[data-mode="desktop"] .m-admin-entry{display:none !important}
html[data-mode="mobile"] .m-admin-entry{display:block;width:100%;margin:10px 0;padding:10px 0;background:var(--accent);color:#fff;border:none;border-radius:var(--r-md);font-size:var(--fs-md);font-weight:600;cursor:pointer}
html[data-mode="mobile"] .m-admin-entry:active{background:var(--accent-hover)}
html[data-mode="mobile"] .admin-tabs{flex-wrap:wrap;gap:4px}
html[data-mode="mobile"] #admin{padding-bottom:calc(56px + env(safe-area-inset-bottom))}

/* ═══════════════════════════════════════════════
   RESPONSIVE
   ═══════════════════════════════════════════════ */
@media(max-width:1200px){
  /* L5：1024–1200 区间提前收缩侧边栏，释放主区空间（与 1024 断点保持一致） */
  .sidebar{width:200px}.main-content{margin-left:200px}
  .view{padding:var(--sp-6)}
  .stat-grid{grid-template-columns:repeat(2,1fr)}
  .batch-summary{grid-template-columns:repeat(3,1fr)}
  .tech-grid{grid-template-columns:repeat(2,1fr)}
  .tech-diff{grid-template-columns:1fr}
}
@media(max-width:1024px){
  .sidebar{width:200px}.main-content{margin-left:200px}
  .steps{grid-template-columns:1fr}
  .form-row.col4,.form-row.col3{grid-template-columns:1fr 1fr}
  .stat-row{grid-template-columns:1fr 1fr}
  .compare,.recheck-grid{grid-template-columns:1fr}
  /* 2026-07-26 视觉焕新：Hero 收为单栏并隐藏示意卡 */
  .hero{grid-template-columns:1fr;padding:48px 32px;gap:0}
  .hero-visual{display:none}
  .hero-title,.hero h1{font-size:2.1rem}
}
@media(max-width:768px){
  body{display:block}
  .sidebar{position:static;width:100%;height:auto;flex-direction:row;flex-wrap:wrap;padding:var(--sp-3);backdrop-filter:none}
  .sidebar-brand{width:100%}.sidebar-nav{flex-direction:row;flex-wrap:wrap;overflow-x:visible;padding-bottom:var(--sp-2)}
  .nav-item{white-space:nowrap;font-size:var(--fs-sm);padding:6px var(--sp-2)}.nav-item::before{display:none}
  .sidebar-footer{width:100%;display:flex;gap:var(--sp-2)}.sb-quota{flex:1}
  .main-content{margin-left:0}.view{padding:var(--sp-4)}
  .hero{padding:var(--sp-8) var(--sp-5)}.hero-title,.hero h1{font-size:1.65rem}.hero-sub,.hero-inner p:not(.hero-slogan):not(.hero-note){white-space:normal;font-size:var(--fs-lg)}
  .stat-grid{grid-template-columns:1fr 1fr}.stat-row{grid-template-columns:1fr 1fr}
  .form-row.col4,.form-row.col3,.form-row.col2{grid-template-columns:1fr}
  .compare,.recheck-grid,.detail-grid,.tech-diff{grid-template-columns:1fr}
  .rw-row{grid-template-columns:1fr}.rw-arrow{display:none}.rw-field{margin-bottom:4px}
  .drawer-panel{width:100%}.section-head{flex-direction:column;align-items:flex-start}
  .batch-summary{grid-template-columns:repeat(2,1fr)}.drag-zone{padding:var(--sp-8) var(--sp-4)}
  .tech-grid{grid-template-columns:1fr 1fr}
  .cov-funnel-row{flex-direction:column;gap:8px}.cov-funnel-info{text-align:left;min-width:auto}
  .cov-funnel-step{display:none}
  .cov-hierarchy{flex-direction:column;align-items:center;gap:6px}
  .cov-layer-card{width:100%;max-width:560px}
  .cov-layer-arrow{padding:4px 0}
  .version-grid{grid-template-columns:repeat(2,1fr)}
  .cov-boundary-grid{grid-template-columns:1fr}
  .cov-metrics{grid-template-columns:repeat(2,1fr)}
  .tech-stats{grid-template-columns:repeat(2,1fr)}
}

/* ═══════════════════════════════════════════════
   移动端 App 框架（单套响应式 · html[data-mode="mobile"]）
   设计语言：沿用 teal 主题 / 卡片体系 / 明暗双主题 / 安全区适配
   ═════════════════════════════════════════════ */
.m-topbar,.m-tabbar,.m-sheet{display:none}

/* —— 顶栏 —— */
html[data-mode="mobile"] .sidebar{display:none}
html[data-mode="mobile"] body{display:block;overflow-x:hidden}
html[data-mode="mobile"] .main-content{margin-left:0;padding:0 0 calc(56px + env(safe-area-inset-bottom));min-height:100vh;background:var(--bg-body)}
html[data-mode="mobile"] .view{padding:var(--sp-4) var(--sp-4) 0;max-width:560px;margin:0 auto}
html[data-mode="mobile"] .site-footer{display:none}
html[data-mode="mobile"] body.m-noscroll{overflow:hidden}
html[data-mode="mobile"] .m-topbar{
  display:flex;position:sticky;top:0;z-index:20;height:52px;align-items:center;
  padding:env(safe-area-inset-top) var(--sp-4) 0;
  background:var(--topbar-bg);
  backdrop-filter:blur(16px) saturate(1.4);-webkit-backdrop-filter:blur(16px) saturate(1.4);
  border-bottom:1px solid var(--border-subtle)
}
.m-topbar-inner{display:flex;align-items:center;justify-content:space-between;width:100%;max-width:560px;margin:0 auto}
.m-brand{display:flex;align-items:center;gap:8px;font-weight:700;color:var(--text-primary);font-size:var(--fs-xl)}
.m-brand-mark{width:22px;height:22px;flex-shrink:0}
.m-topbar-actions{display:flex;align-items:center;gap:2px}
.m-icon-btn{width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border:none;background:none;color:var(--text-secondary);border-radius:var(--r-full);cursor:pointer}
.m-icon-btn:active{background:var(--bg-hover);color:var(--accent)}

/* —— 底部 Tab —— */
html[data-mode="mobile"] .m-tabbar{
  display:flex;position:fixed;left:0;right:0;bottom:0;z-index:30;
  height:calc(56px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);
  background:var(--tabbar-bg);
  backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);
  border-top:1px solid var(--border-subtle)
}
.m-tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  border:none;background:none;cursor:pointer;color:var(--text-tertiary);
  font-size:var(--fs-2xs);font-weight:500;position:relative;padding:6px 0;-webkit-tap-highlight-color:transparent}
.m-tab .nav-icon{font-size:1.35rem;width:auto;opacity:0.6;transition:transform var(--dur-fast) var(--ease-out),opacity var(--dur-fast)}
.m-tab.active{color:var(--accent)}
.m-tab.active .nav-icon{opacity:1;transform:translateY(-1px)}
.m-tab.active::before{content:'';position:absolute;top:0;left:50%;transform:translateX(-50%);width:26px;height:3px;border-radius:0 0 3px 3px;background:var(--accent)}

/* —— 更多浮层 —— */
html[data-mode="mobile"] .m-sheet{display:block;position:fixed;inset:0;z-index:50;pointer-events:none;visibility:hidden}
html[data-mode="mobile"] .m-sheet.open{visibility:visible;pointer-events:auto}
.m-sheet-backdrop{position:absolute;inset:0;background:rgba(0,0,0,0.5);opacity:0;transition:opacity var(--dur-normal) var(--ease-out)}
html[data-mode="mobile"] .m-sheet.open .m-sheet-backdrop{opacity:1}
.m-sheet-panel{position:absolute;left:0;right:0;bottom:0;max-width:560px;margin:0 auto;
  background:var(--bg-surface);border-radius:var(--r-xl) var(--r-xl) 0 0;border-top:1px solid var(--border-subtle);
  padding:8px var(--sp-4) calc(var(--sp-6) + env(safe-area-inset-bottom));
  transform:translateY(100%);transition:transform var(--dur-normal) var(--ease-out)}
html[data-mode="mobile"] .m-sheet.open .m-sheet-panel{transform:translateY(0)}
.m-sheet-handle{width:40px;height:4px;border-radius:2px;background:var(--border-strong);margin:6px auto 14px}
.m-sheet-title{font-size:var(--fs-base);font-weight:600;color:var(--text-secondary);margin-bottom:var(--sp-4);padding-left:4px}
.m-sheet-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-2)}
.m-sheet-item{display:flex;flex-direction:column;align-items:center;gap:6px;padding:var(--sp-3) 4px;border-radius:var(--r-md);
  background:var(--bg-card);border:1px solid var(--border-subtle);color:var(--text-secondary);
  font-size:var(--fs-xs);cursor:pointer;text-align:center;text-decoration:none;-webkit-tap-highlight-color:transparent}
.m-sheet-item:active{background:var(--bg-hover)}
.m-sheet-item .nav-icon{font-size:1.4rem;color:var(--accent);opacity:0.9;width:auto}
.m-sheet-tag{display:block;font-size:0.5625rem;color:var(--warning);margin-top:1px}

/* —— 视图重排（卡片化，非缩小） —— */
html[data-mode="mobile"] .hero{padding:var(--sp-8) var(--sp-4) var(--sp-6);text-align:center}
html[data-mode="mobile"] .hero-actions{flex-direction:column;gap:var(--sp-3)}
html[data-mode="mobile"] .hero-actions .btn{width:100%}
html[data-mode="mobile"] .trust-bar{display:flex;gap:var(--sp-2);overflow-x:auto;padding-bottom:var(--sp-2);scrollbar-width:none}
html[data-mode="mobile"] .trust-bar::-webkit-scrollbar{display:none}
html[data-mode="mobile"] .trust-item{min-width:124px;flex:0 0 auto;background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--r-md);padding:var(--sp-3);text-align:center}
html[data-mode="mobile"] .home-section .section-title,
html[data-mode="mobile"] .card-header h3{text-align:center}
html[data-mode="mobile"] .steps{gap:var(--sp-3)}
html[data-mode="mobile"] .section-head{flex-direction:column;align-items:stretch;gap:var(--sp-2);top:calc(52px + env(safe-area-inset-top));padding:var(--sp-3) var(--sp-4);margin-left:calc(-1 * var(--sp-4));margin-right:calc(-1 * var(--sp-4));border-bottom:1px solid var(--border-subtle)}

/* —— 单条检测 —— */
html[data-mode="mobile"] .detect-layout{grid-template-columns:1fr;gap:var(--sp-4)}
html[data-mode="mobile"] .field-group{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--r-lg);padding:var(--sp-2) 0;margin-bottom:var(--sp-3)}
html[data-mode="mobile"] .field-group-header{padding:var(--sp-3) var(--sp-4)}
html[data-mode="mobile"] #importSingle{display:none}
html[data-mode="mobile"] textarea,
html[data-mode="mobile"] input,
html[data-mode="mobile"] select{font-size:16px}
html[data-mode="mobile"] .detect-panel .btn,
html[data-mode="mobile"] .detect-panel #detectBtn{min-height:46px}
html[data-mode="mobile"] .detect-result-panel{margin-top:var(--sp-2)}
html[data-mode="mobile"] .card-header-link{display:inline-block;margin-top:var(--sp-2)}

/* —— 批量检测引导（移动端） —— */
.batch-gate{display:none}
html[data-mode="mobile"] #batch .card{display:none}
html[data-mode="mobile"] .batch-gate{display:block;background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--r-lg);padding:var(--sp-8) var(--sp-4);text-align:center;margin-top:var(--sp-4)}
.batch-gate-icon{color:var(--accent);margin-bottom:var(--sp-3);display:flex;justify-content:center}
.batch-gate h3{font-size:1.125rem;margin-bottom:var(--sp-2)}
.batch-gate .text-sm{line-height:var(--lh-normal)}
.batch-gate-list{list-style:none;padding:0;margin:var(--sp-4) auto;max-width:264px;text-align:left}
.batch-gate-list li{position:relative;padding-left:24px;margin-bottom:var(--sp-2);font-size:var(--fs-base);color:var(--text-secondary)}
.batch-gate-list li::before{content:'';position:absolute;left:0;top:6px;width:14px;height:14px;border-radius:50%;background:var(--accent-subtle)}
.batch-gate-list li::after{content:'✓';position:absolute;left:3px;top:1px;font-size:var(--fs-2xs);color:var(--accent);font-weight:700}
.batch-gate .btn{width:100%;margin-top:var(--sp-2)}

/* —— 个人中心 —— */
html[data-mode="mobile"] .pc-head{margin-bottom:var(--sp-4)}
.pc-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--r-lg);padding:var(--sp-4);margin-bottom:var(--sp-3)}
.pc-account{display:flex;align-items:center;gap:var(--sp-3)}
.pc-avatar{width:48px;height:48px;border-radius:var(--r-full);background:linear-gradient(135deg,var(--accent),var(--accent-hover));color:#fff;display:flex;align-items:center;justify-content:center;font-size:var(--fs-2xl);font-weight:700;flex-shrink:0}
.pc-account-info{flex:1;min-width:0}
.pc-name{font-size:var(--fs-lg);font-weight:600;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pc-tier{font-size:var(--fs-sm);color:var(--text-tertiary);margin-top:2px}
.pc-sub-row{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap}
.pc-sub-row .nav-icon{color:var(--accent);font-size:1.1rem}
.pc-sub-text{flex:1;min-width:140px;font-size:var(--fs-base);color:var(--text-secondary);line-height:var(--lh-normal)}
.pc-sub-text b{color:var(--text-primary)}
.pc-sub-note{color:var(--warning);font-size:var(--fs-sm)}
.pc-badge{font-size:var(--fs-xs);font-weight:600;color:#fff;background:var(--accent);padding:2px 10px;border-radius:999px;white-space:nowrap}
.pc-badge-free{background:var(--text-tertiary)}
.pc-badge-pro{background:var(--info)}
.pc-badge-flagship{background:linear-gradient(135deg,var(--accent),var(--accent-hover))}
.pc-badge-enterprise{background:var(--warning)}
.pc-quota-head{display:flex;justify-content:space-between;align-items:baseline;font-size:var(--fs-base);color:var(--text-secondary);margin-bottom:var(--sp-3)}
.pc-quota-head b{font-size:var(--fs-xl);color:var(--text-primary)}
.pc-quota-bar{height:8px;border-radius:var(--r-full);background:var(--bg-input);overflow:hidden}
.pc-quota-fill{height:100%;border-radius:var(--r-full);background:linear-gradient(90deg,var(--accent),var(--accent-hover));transition:width var(--dur-normal) var(--ease-out)}
.pc-quota-sub{font-size:var(--fs-xs);color:var(--text-tertiary);margin-top:var(--sp-2)}
.pc-menu{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--r-lg);overflow:hidden;margin-bottom:var(--sp-4)}
.pc-menu-item{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-4);border-bottom:1px solid var(--border-subtle);color:var(--text-primary);cursor:pointer;text-decoration:none;font-size:var(--fs-md)}
.pc-menu-item:last-child{border-bottom:none}
.pc-menu-item:active{background:var(--bg-hover)}
.pc-mi-icon{font-size:1.1rem;color:var(--accent);width:22px;text-align:center;opacity:0.9;display:inline-flex;flex-shrink:0}
.pc-mi-label{flex:1}
.pc-mi-arrow{width:8px;height:8px;border-right:2px solid var(--text-tertiary);border-bottom:2px solid var(--text-tertiary);transform:rotate(-45deg);opacity:0.6;flex-shrink:0}
.pc-logout{color:var(--danger)}
.pc-logout .pc-mi-icon{color:var(--danger)}
.pc-theme-toggle{display:flex;gap:2px;background:var(--bg-input);border-radius:var(--r-full);padding:2px}
.pc-theme-opt{border:none;background:none;padding:5px 12px;border-radius:var(--r-full);font-size:var(--fs-sm);color:var(--text-tertiary);cursor:pointer}
.pc-theme-opt.active{background:var(--bg-card);color:var(--text-primary);font-weight:600;box-shadow:var(--shadow-sm)}
.pc-foot{text-align:center;font-size:var(--fs-xs);color:var(--text-tertiary);margin:var(--sp-4) 0 var(--sp-2)}

/* —— 移动端品牌标识（顶栏 iShouJie 副标题） —— */
.m-brand-sub{font-weight:400;color:var(--text-tertiary);font-size:var(--fs-2xs);margin-left:4px;letter-spacing:0.3px}
.m-dot{color:var(--text-tertiary);margin:0 2px}
/* —— 移动端每页底部 Footer（JS 注入；桌面端强制隐藏，与桌面端互不影响） —— */
.m-view-foot{display:none}
html[data-mode="mobile"] .m-view-foot{display:block;padding:var(--sp-6) var(--sp-4) calc(var(--sp-4) + env(safe-area-inset-bottom));border-top:1px solid var(--border-subtle);margin-top:var(--sp-8);text-align:center;line-height:var(--lh-normal)}
html[data-mode="mobile"] .m-view-foot-brand{font-size:var(--fs-xs);color:var(--text-tertiary)}
html[data-mode="mobile"] .m-view-foot-links{margin-top:var(--sp-2);font-size:var(--fs-xs)}
html[data-mode="mobile"] .m-view-foot-links a{color:var(--text-secondary);text-decoration:none;padding:0 4px}
html[data-mode="mobile"] .m-view-foot-links a:active{color:var(--accent)}

/* ── ★ 规则说明顶部移动端 ── */
html[data-mode="mobile"] .cov-stats{grid-template-columns:repeat(2,1fr);gap:var(--sp-2)}
html[data-mode="mobile"] .cov-stat{padding:var(--sp-3)}
html[data-mode="mobile"] .cov-stat-val{font-size:1.1rem}
html[data-mode="mobile"] .cov-hero{margin-bottom:var(--sp-3)}
html[data-mode="mobile"] .cov-hero .cov-section-title{text-align:center}
html[data-mode="mobile"] .cov-hero .cov-section-desc{text-align:center;margin-bottom:var(--sp-3)}

/* ── ★ 手机端适配补全：套餐页（pricing）── */
html[data-mode="mobile"] .plan-grid{grid-template-columns:1fr;gap:var(--sp-3)}
html[data-mode="mobile"] .plan-card{padding:var(--sp-4)}
html[data-mode="mobile"] .plan-price{font-size:var(--fs-3xl)}
html[data-mode="mobile"] .plan-duration{flex-direction:column;align-items:stretch;gap:var(--sp-2)}
html[data-mode="mobile"] .pd-label{width:100%}
html[data-mode="mobile"] .pd-options{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;width:100%}
html[data-mode="mobile"] .pd-option{padding:8px 0;text-align:center;font-size:var(--fs-sm)}
html[data-mode="mobile"] .billing-toggle{align-self:center}
html[data-mode="mobile"] .pricing-rules{padding:var(--sp-3) var(--sp-4)}
html[data-mode="mobile"] .pricing-rules .rules-list li{font-size:var(--fs-base)}
html[data-mode="mobile"] .pricing-cta{flex-direction:column;text-align:center;gap:var(--sp-3);align-items:center}
html[data-mode="mobile"] .pricing-cta-body{text-align:center}
html[data-mode="mobile"] .pricing-cta-actions{width:100%}
html[data-mode="mobile"] .pricing-cta-actions .btn{width:100%}
html[data-mode="mobile"] .pricing-compare{padding:var(--sp-3) var(--sp-0)}
html[data-mode="mobile"] .pricing-faq .faq-section{margin-bottom:var(--sp-1)}
html[data-mode="mobile"] .plan-btn-row{flex-direction:column;gap:var(--sp-2)}
html[data-mode="mobile"] .plan-btn-row .btn{width:100%}
html[data-mode="mobile"] .sub-status-row{flex-direction:column;align-items:flex-start;gap:var(--sp-2)}
html[data-mode="mobile"] .sub-status-row .ss-cta{margin-left:0;width:100%}
html[data-mode="mobile"] .sub-status-row .ss-link{margin-left:0}

/* ── ★ 帮助中心（help）── */
html[data-mode="mobile"] .help-search{max-width:none}
html[data-mode="mobile"] .help-cats{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
html[data-mode="mobile"] .help-cats::-webkit-scrollbar{display:none}
html[data-mode="mobile"] .help-cat{flex-shrink:0;white-space:nowrap;font-size:var(--fs-sm);padding:5px 10px}
html[data-mode="mobile"] .help-contact{flex-direction:column;text-align:center;align-items:center;padding:var(--sp-5) var(--sp-4);gap:var(--sp-3)}
html[data-mode="mobile"] .help-contact-body{text-align:center;min-width:auto}
html[data-mode="mobile"] .help-contact-actions{width:100%;flex-direction:column}
html[data-mode="mobile"] .help-contact-actions .btn{width:100%}

/* ── ★ 关于页（about）── */
html[data-mode="mobile"] .stat-row{grid-template-columns:repeat(2,1fr);gap:var(--sp-2)}
html[data-mode="mobile"] .stat-mini{padding:var(--sp-2) var(--sp-3)}
html[data-mode="mobile"] .stat-mini b{font-size:var(--fs-2xl)}
html[data-mode="mobile"] .about-benefits{gap:var(--sp-4)}
html[data-mode="mobile"] .benefit-item{flex-direction:column;align-items:center;text-align:center;gap:var(--sp-2)}
html[data-mode="mobile"] .benefit-item span{text-align:center}
html[data-mode="mobile"] .benefit-icon{margin:0 auto}

/* ── ★ 管理后台（admin）增强 ── */
html[data-mode="mobile"] .admin-tab{font-size:var(--fs-xs);padding:8px 8px}
html[data-mode="mobile"] .admin-filter-bar{gap:var(--sp-2)}
html[data-mode="mobile"] .admin-filter-search{width:100%}
html[data-mode="mobile"] .admin-section-header{flex-direction:column;align-items:flex-start;gap:var(--sp-2)}
html[data-mode="mobile"] .admin-table-wrap{-webkit-overflow-scrolling:touch}

/* ── ★ 平台选择器 ── */
html[data-mode="mobile"] .pg-section{gap:3px}
html[data-mode="mobile"] .pg-chip{padding:5px 9px;font-size:var(--fs-xs)}
html[data-mode="mobile"] .pg-section-title{font-size:var(--fs-2xs);min-width:40px}
html[data-mode="mobile"] .pg-config-row{padding:var(--sp-2) var(--sp-3) var(--sp-1)}
html[data-mode="mobile"] .pg-config-row .form-row{grid-template-columns:1fr;gap:var(--sp-2)}

/* ── ★ 检测结果页增强 ── */
html[data-mode="mobile"] .result-summary{flex-wrap:wrap;gap:var(--sp-2);padding:var(--sp-3)}
html[data-mode="mobile"] .result-summary-badges{margin-left:0;width:100%;justify-content:flex-start;margin-top:var(--sp-1)}
html[data-mode="mobile"] .detail-grid{grid-template-columns:1fr;padding:var(--sp-3)}

/* ── ★ 云端存档 ── */
html[data-mode="mobile"] .cloud-report-row{flex-direction:column;align-items:flex-start;gap:var(--sp-2)}
html[data-mode="mobile"] .cloud-report-title{min-width:auto;width:100%}

@media print{
  .sidebar,.drawer,.toast-container,.survey-overlay,button,.btn,.consent-banner,.site-footer{display:none!important}
  body{display:block;background:#fff;color:#000}[data-skin]{background:#fff!important}
  .main-content{margin-left:0}.view{padding:0}.card,.risk-item{border:1px solid #ccc;background:#fff}
}

/* P1：首屏免费卖点 / 侧栏升级入口 / 套餐卡 / 空态引导按钮 */
.hero .hero-note{margin:var(--sp-10) auto 0;font-size:var(--fs-base);color:var(--text-tertiary);line-height:var(--lh-relaxed);display:block}
.sb-upgrade{display:block;margin-top:var(--sp-2);padding:9px 12px;border-radius:var(--r-md);background:linear-gradient(135deg,var(--accent-subtle),rgba(59,130,246,0.08));border:1px solid rgba(20,184,166,0.22);font-size:var(--fs-base);font-weight:600;color:var(--accent);text-align:center;cursor:pointer;transition:all var(--dur-fast) var(--ease-out)}
.sb-upgrade:hover{border-color:var(--accent);box-shadow:var(--shadow-glow-accent);text-decoration:none;transform:translateY(-1px)}
.empty-state .btn{margin-top:var(--sp-4)}
.plan-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--sp-4);margin:var(--sp-4) 0}
.plan-card{position:relative;display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-5);border:1px solid var(--border-default);border-radius:var(--r-lg);background:var(--bg-card)}
.plan-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:var(--border-strong)}
.plan-card.plan-featured{border-color:transparent;background:linear-gradient(var(--bg-card),var(--bg-card)) padding-box,var(--accent-grad) border-box;box-shadow:var(--shadow-glow-accent)}
.plan-badge{position:absolute;top:-10px;right:var(--sp-4);font-size:var(--fs-xs);font-weight:600;color:#fff;background:var(--accent-grad);padding:2px 8px;border-radius:999px;box-shadow:0 2px 8px rgba(20,184,166,0.35)}
.plan-name{font-size:var(--fs-xl);font-weight:600;color:var(--text-primary)}
.plan-price{font-size:1.75rem;font-weight:700;color:var(--text-primary);line-height:var(--lh-tight)}
.plan-price span{font-size:var(--fs-base);font-weight:500;color:var(--text-tertiary)}
.plan-feats{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--sp-2)}
.plan-feats li{position:relative;padding-left:18px;font-size:var(--fs-md);color:var(--text-secondary)}
.plan-feats li::before{content:"✓";position:absolute;left:0;color:var(--success);font-weight:700}
.plan-feats li.opt{padding-left:0;color:var(--text-tertiary);font-size:var(--fs-base)}
.plan-feats li.opt::before{display:none}
.plan-card .btn,.plan-btn-row .btn{margin-top:auto}
.plan-btn-row{display:flex;gap:var(--sp-2);margin-top:auto}
.plan-btn-row .btn{flex:1;text-align:center}
.plan-tag{font-size:var(--fs-sm);font-weight:500;color:var(--text-tertiary);margin-top:-4px}
.plan-sub{font-size:var(--fs-xs);color:var(--text-tertiary);margin-top:-6px;margin-bottom:var(--sp-2)}
.year-hint{font-size:var(--fs-xs);color:var(--text-tertiary)}
.plan-card:hover{transform:translateY(-2px);box-shadow:var(--accent-glow)}
.plan-card{transition:transform var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast),border-color var(--dur-fast)}

/* 计费周期切换（月付 / 年付） */
.billing-toggle{display:inline-flex;align-items:center;gap:var(--sp-1);padding:4px;background:var(--bg-surface);border:1px solid var(--border-default);border-radius:999px}
.bt-option{appearance:none;border:none;background:transparent;color:var(--text-secondary);font-size:var(--fs-base);font-weight:500;padding:6px 14px;border-radius:999px;cursor:pointer;transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast)}
.bt-option:hover{color:var(--text-primary)}
.bt-option.active{background:var(--accent);color:#fff}
.bt-hint{font-size:var(--fs-xs);color:var(--text-tertiary);padding-right:8px;white-space:nowrap}
@media(max-width:768px){ .billing-toggle{margin-top:var(--sp-3)} }

/* ★ 会员状态可视（侧边栏迷你条 + 套餐页状态卡） */
.sub-status-card{display:flex;align-items:center}
.sub-status-empty{font-size:var(--fs-base);color:var(--text-tertiary)}
.sub-status-row{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;width:100%}
.ss-badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:999px;font-size:var(--fs-sm);font-weight:600;color:#fff;background:var(--accent)}
/* 会员状态卡正文排版（badge 已是档位名，正文不再重复） */
.ss-text{font-size:var(--fs-base);color:var(--text-secondary);line-height:var(--lh-normal)}
.ss-text b{color:var(--text-primary);font-weight:600}
.ss-note{color:var(--text-tertiary);font-size:var(--fs-sm)}
/* 状态卡主操作按钮推到最右，与套餐卡「开通/升级/降级」语义区分 */
.sub-status-row .ss-cta{margin-left:auto}
.ss-badge.free{background:var(--muted,#6b7280)}
.ss-badge.pro{background:#0ea5e9}
.ss-badge.flagship{background:#8b5cf6}
.ss-badge.enterprise{background:#f59e0b;color:#1f2937}
.ss-text{font-size:var(--fs-base);color:var(--text-secondary)}
.ss-link{font-size:var(--fs-base);color:var(--accent);margin-left:auto;white-space:nowrap}
.ss-link:hover{text-decoration:underline}
.sb-sub{margin-top:4px;font-size:var(--fs-sm);color:var(--text-tertiary);display:flex;gap:6px;align-items:center;flex-wrap:wrap}

/* ★ 购买时长选择器（D3 period_count ∈ {1,3,6,12}） */
.plan-duration{display:flex;align-items:center;gap:var(--sp-3);margin-top:var(--sp-3);flex-wrap:wrap}
.pd-label{font-size:var(--fs-md);font-weight:600;color:var(--text-primary)}
.pd-options{display:inline-flex;gap:6px;flex-wrap:wrap}
.pd-option{padding:6px 14px;border:1px solid var(--border-default);background:var(--bg-surface);border-radius:999px;font-size:var(--fs-base);cursor:pointer;color:var(--text-secondary);transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast),border-color var(--dur-fast)}
.pd-option:hover{color:var(--text-primary)}
.pd-option.active{background:var(--accent);color:#fff;border-color:var(--accent)}

/* Pricing hero / about hero */
.pricing-hero,.about-hero{margin-bottom:var(--sp-6)}
.pricing-hero .eyebrow,.about-hero .eyebrow{margin-bottom:var(--sp-2)}
.pricing-hero p,.about-hero p{margin-top:var(--sp-2)}
.pricing-subtitle{font-size:var(--fs-xl);font-weight:600;color:var(--text-primary);margin-bottom:var(--sp-4);padding-bottom:var(--sp-2);border-bottom:1px solid var(--border-subtle)}

/* Feature comparison table */
.pricing-compare{margin-top:var(--sp-6)}
.compare-table-wrap{overflow-x:auto}
.compare-table{width:100%;border-collapse:collapse;font-size:var(--fs-md);min-width:420px}
.compare-table th,.compare-table td{padding:var(--sp-3) var(--sp-4);text-align:left;border-bottom:1px solid var(--border-subtle)}
.compare-table thead th{font-weight:600;color:var(--text-primary);background:var(--bg-surface)}
.compare-table thead th:not(:first-child){color:var(--accent);text-align:center}
.compare-table tbody td:first-child{color:var(--text-secondary);font-weight:500}
.compare-table tbody td:not(:first-child){text-align:center;color:var(--text-secondary)}
.compare-table tbody tr:hover{background:var(--bg-hover)}
.compare-table .yes{color:var(--success);font-weight:700}
.compare-table .no{color:var(--text-placeholder)}

/* CTA card */
.pricing-cta{display:flex;align-items:center;gap:var(--sp-4);margin-top:var(--sp-6);flex-wrap:wrap;background:var(--accent-subtle);border-color:rgba(20,184,166,0.2)}
[data-skin="light"] .pricing-cta{background:rgba(13,148,136,0.06)}
.pricing-cta-body{flex:1;min-width:220px}
.pricing-cta-body p{margin-top:4px}
.pricing-cta-actions{display:flex;gap:var(--sp-2);flex-shrink:0}

/* Pricing FAQ */
.pricing-faq{margin-top:var(--sp-8)}
@media(max-width:768px){ .plan-grid{grid-template-columns:1fr}; .pricing-cta{flex-direction:column;align-items:flex-start} .pricing-cta-actions{width:100%} .pricing-cta-actions .btn{flex:1} }

/* ── 套餐 v2 新样式 ── */
.text-success{color:var(--success,#10b981)}
.text-danger{color:var(--danger,#ef4444)}

/* 顶部商务引导 banner */
.pricing-biz-banner{display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-4) var(--sp-5);margin-bottom:var(--sp-4);background:var(--accent-subtle);border:1px solid rgba(20,184,166,0.2);border-radius:var(--sp-3);flex-wrap:wrap}
[data-skin="light"] .pricing-biz-banner{background:rgba(13,148,136,0.06)}
.biz-banner-body{flex:1;min-width:200px}
.biz-banner-body b{display:block;margin-bottom:2px;color:var(--text-primary)}
.biz-banner-body p{margin-top:2px}
.biz-banner-contact{flex-shrink:0;font-size:var(--fs-md);color:var(--text-secondary)}
.biz-banner-contact a{color:var(--accent);font-weight:600;text-decoration:none}

/* 套餐规则说明卡片 */
.pricing-rules{margin-bottom:var(--sp-6);background:var(--bg-surface);border-color:var(--border-subtle)}
.pricing-rules .pricing-subtitle{margin-top:0}
.rules-list{list-style:none;padding:0;margin:0;font-size:var(--fs-md);color:var(--text-secondary);line-height:var(--lh-relaxed)}
.rules-list li{padding:4px 0;padding-left:20px;position:relative}
.rules-list li::before{content:"•";position:absolute;left:4px;color:var(--accent);font-weight:700}
.rules-list li b{color:var(--text-primary)}
.rules-list .rules-tip{padding-left:0;margin-top:var(--sp-2);padding-top:var(--sp-2);border-top:1px dashed var(--border-subtle);font-size:var(--fs-base);color:var(--text-placeholder)}
.rules-list .rules-tip::before{display:none}

/* 额度消耗提示 — 配额栏小字 */
#quotaBox small{display:block;margin-top:2px;color:var(--text-placeholder);font-weight:400}

@media(max-width:768px){
  .pricing-biz-banner{flex-direction:column;align-items:flex-start}
  .biz-banner-body{min-width:100%}
}

/* 关于页：优势展示卡片 */
.about-benefits{display:flex;flex-direction:column;gap:var(--sp-4)}
.benefit-item{display:flex;gap:var(--sp-3);align-items:flex-start}
.benefit-icon{flex-shrink:0;width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:var(--r-md);background:var(--accent-subtle);color:var(--accent)}
.benefit-item b{display:block;margin-bottom:4px;color:var(--text-primary);font-size:var(--fs-lg)}
.benefit-item span{font-size:var(--fs-md);color:var(--text-secondary);line-height:var(--lh-normal)}
/* 关于页：卡片整体呼吸感 */
#about .card{margin-bottom:var(--sp-6);padding:var(--sp-6)}
#about .card:last-of-type{margin-bottom:0}
/* 关于页：正文段落排版——更小字号 + 更宽松行距 + 最大行宽防止宽屏满行 */
#about .card p{font-size:var(--fs-lg);line-height:var(--lh-relaxed);margin-bottom:var(--sp-3);color:var(--text-secondary)}
#about .card p:last-of-type{margin-bottom:0}
#about .card p b{color:var(--text-primary);font-weight:600}
/* 关于页：小节标题与正文呼吸 */
#about .card h3{margin-bottom:var(--sp-3)}
#about .card h3 + p{margin-top:0}
/* 关于页：内联灰色脚注（平台说服务那个说明） */
#about .card .text-sm.muted{margin-top:var(--sp-3)!important;font-size:var(--fs-base);line-height:var(--lh-normal);color:var(--text-tertiary)}
/* 关于页：最后 CTA 块上方加更多空白 */
#about .pricing-cta{margin-top:var(--sp-6)}
.stat-mini.purple{background:rgba(168,85,247,.1);border-color:rgba(168,85,247,.3)}
.stat-mini.purple b{color:#a855f7}
[data-skin=light] .stat-mini.purple{background:rgba(168,85,247,.06)}
[data-skin=light] .stat-mini.purple b{color:#9333ea}

/* 批量检测进度条 */
.progress{height:6px;background:var(--bg-surface);border-radius:999px;overflow:hidden}
.progress-bar{height:100%;background:var(--accent);border-radius:999px;transition:width .4s var(--ease-out)}
.progress-text{font-size:var(--fs-base);color:var(--text-tertiary);margin-top:var(--sp-1);min-height:1.2em}
.progress-subtext{font-size:var(--fs-xs);color:var(--text-tertiary);margin-top:2px;min-height:1em}

/* P2：免责声明折叠 / 信任背书条 / skip-link */
.disclaimer-box{margin:var(--sp-6) auto 0;max-width:760px;padding:var(--sp-3) var(--sp-4);border:1px solid var(--border-default);border-left:3px solid var(--accent);border-radius:var(--r-md);background:var(--bg-elevated);font-size:var(--fs-base);color:var(--text-secondary);line-height:var(--lh-normal)}
.disclaimer-box summary{cursor:pointer;list-style:none}
.disclaimer-box summary::-webkit-details-marker{display:none}
.disclaimer-box summary::before{content:"▸";display:inline-block;margin-right:6px;transition:transform var(--dur-fast)}
.disclaimer-box[open] summary::before{transform:rotate(90deg)}
.disclaimer-box[open] p{margin-top:var(--sp-2)}
/* 2026-07-26 视觉焕新：信任条改分隔式精致条 */
.trust-bar{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-3);margin:var(--sp-5) 0;padding:var(--sp-5);border:1px solid var(--border-subtle);border-radius:var(--r-lg);background:var(--bg-card)}
.trust-item{display:flex;flex-direction:column;gap:3px;text-align:center;position:relative}
.trust-item+.trust-item::before{content:'';position:absolute;left:calc(var(--sp-3) / -2);top:12%;bottom:12%;width:1px;background:var(--border-subtle)}
.trust-item b{font-size:1.375rem;font-weight:700;letter-spacing:-0.01em;color:var(--accent)}
.trust-item span{font-size:var(--fs-sm);color:var(--text-tertiary)}
.skip-link{position:absolute;left:-9999px;top:0;z-index:999;padding:8px 14px;background:var(--accent);color:#fff;border-radius:0 0 var(--r-sm) 0;font-weight:600}
.skip-link:focus{left:0}
@media(max-width:768px){ .trust-bar{grid-template-columns:repeat(2,1fr)} }

/* ═══════════════════════════════════════════════
   GLOBAL FOOTER — SaaS 信任底座（P1/L1/L2）
   ═══════════════════════════════════════════════ */
.site-footer{margin-top:var(--sp-16);border-top:1px solid var(--border-strong);background:var(--bg-surface);padding:var(--sp-12) var(--sp-10) var(--sp-8);position:relative;width:100%}
.footer-inner{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:var(--sp-10);max-width:1200px;margin:0 auto;padding:0 var(--sp-4)}
.footer-logo{font-size:var(--fs-xl);font-weight:700;color:var(--text-primary);margin-bottom:var(--sp-2)}
.footer-desc{font-size:var(--fs-base);color:var(--text-tertiary);line-height:var(--lh-normal);max-width:320px}
.footer-col h4{font-size:var(--fs-sm);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-tertiary);margin-bottom:var(--sp-3)}
.footer-col a{display:block;font-size:var(--fs-base);color:var(--text-secondary);margin-bottom:var(--sp-2);transition:color var(--dur-fast)}
.footer-col a:hover{color:var(--accent)}
.footer-bottom{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--sp-3);max-width:1200px;margin:var(--sp-10) auto 0;padding:var(--sp-6) var(--sp-4) 0;border-top:1px solid var(--border-strong);font-size:var(--fs-sm);color:var(--text-tertiary);text-align:left}
.footer-beian{display:flex;gap:var(--sp-4);flex-wrap:wrap}
.footer-version{white-space:nowrap;color:var(--text-tertiary)}
.footer-beian a{color:var(--text-tertiary);text-decoration:underline}
.footer-beian a:hover{color:var(--accent)}

/* ═══ Slogan 体系（品牌策略 §4，2.7） ═══ */
.hero-slogan{font-size:var(--fs-xl);font-weight:700;color:var(--accent);margin:.35rem 0 0;letter-spacing:.02em}
.auth-tagline{margin:.6rem 0 0;font-size:var(--fs-md);color:var(--text-secondary);text-align:center;letter-spacing:.04em}
.footer-slogan{margin-top:.5rem;font-size:var(--fs-base);font-weight:600;color:var(--accent);letter-spacing:.03em}

/* ═══ PIPL 隐私同意横幅（L4） ═══ */
.consent-banner{position:fixed;left:0;right:0;bottom:0;z-index:35;background:var(--bg-elevated);border-top:1px solid var(--border-strong);box-shadow:0 -8px 32px rgba(0,0,0,.5);padding:var(--sp-4) var(--sp-6);transition:transform var(--dur-normal) var(--ease-out),opacity var(--dur-normal)}
.consent-banner.hide{transform:translateY(100%);opacity:0;pointer-events:none}
.consent-inner{max-width:1400px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:var(--sp-6);flex-wrap:wrap}
.consent-text{flex:1;min-width:280px}
.consent-text b{display:block;font-size:var(--fs-md);color:var(--text-primary);margin-bottom:4px}
.consent-text p{font-size:var(--fs-base);color:var(--text-secondary);line-height:var(--lh-normal);margin:0}
.consent-text a{color:var(--accent)}
.consent-actions{display:flex;gap:var(--sp-2);flex-wrap:wrap}
@media(max-width:768px){
  .footer-inner{grid-template-columns:1fr 1fr}
  .footer-bottom{flex-direction:column;align-items:center}
  .consent-inner{flex-direction:column;align-items:stretch}
  .consent-actions{justify-content:flex-end}
}

/* ── T7 平台选择器 ── */
.platform-area{padding:var(--sp-2) var(--sp-4) var(--sp-3)}
.platform-group{margin:0}
/* 分组芯片行 */
.pg-section{display:flex;align-items:center;gap:5px;margin-bottom:5px;flex-wrap:wrap}
.pg-section-title{font-size:var(--fs-xs);color:var(--text-tertiary);white-space:nowrap;min-width:48px;padding-right:4px;font-weight:500}
/* 芯片按钮 */
.pg-chip{display:inline-flex;align-items:center;padding:5px 12px;border:1px solid var(--border-default);border-radius:8px;font-size:var(--fs-sm);cursor:pointer;white-space:nowrap;user-select:none;transition:all .15s;background:var(--bg-card);color:var(--text-primary);font-weight:500}
.pg-chip:hover{border-color:var(--accent);color:var(--accent);box-shadow:0 1px 3px var(--accent-subtle)}
.pg-chip.active{background:var(--accent);color:#fff;border-color:var(--accent);box-shadow:var(--accent-glow)}
.pg-chip.pg-disabled{opacity:.28;pointer-events:none;cursor:not-allowed}
.pg-chip input{display:none}
/* 提示文字 */
.pg-hint{font-size:var(--fs-xs);color:var(--text-tertiary);min-height:14px;padding:0 2px}
.pg-hint-warn{color:#ef4444}
/* 区域 Toggle */
.pg-toggle{display:flex;gap:0;margin-bottom:10px;border-radius:8px;overflow:hidden;border:1px solid var(--border-default);width:fit-content}
.pg-toggle-opt{padding:6px 20px;font-size:var(--fs-base);cursor:pointer;background:var(--bg-card);color:var(--text-secondary);transition:all .15s;user-select:none;font-weight:500;letter-spacing:0.02em}
.pg-toggle-opt:hover{color:var(--accent)}
.pg-toggle-opt.active{background:var(--accent);color:#fff;font-weight:600}
.pg-toggle-opt input{display:none}
/* 非活动组 */
.pg-section-off{pointer-events:none;opacity:.25}
/* 目标市场/类目分隔线 */
.pg-config-row{border-top:1px solid var(--border-default);padding:var(--sp-2) var(--sp-4) var(--sp-1);margin-top:var(--sp-1)}
.pg-config-row .form-row{gap:var(--sp-3)}
.pg-config-row label{font-weight:500;font-size:var(--fs-sm);color:var(--text-secondary)}

/* ═══ 云端存档 v2 — 重设计（2026-07-26） ═══ */
.cloud-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);margin-bottom:var(--sp-4);padding-bottom:var(--sp-3);border-bottom:1px solid var(--border-subtle);flex-wrap:wrap}
.cloud-toolbar h3{font-size:var(--fs-lg);font-weight:600;color:var(--text-primary);margin:0}
.cloud-toolbar h3 em{font-style:normal;font-weight:400;font-size:var(--fs-md);color:var(--text-tertiary)}
.cloud-toolbar-actions{display:flex;align-items:center;gap:var(--sp-2)}
.cloud-search{width:200px;height:32px;font-size:var(--fs-sm);padding:4px 10px;border:1px solid var(--border-default);border-radius:var(--r-full);background:var(--bg-input);color:var(--text-primary);outline:none}
.cloud-search:focus{border-color:var(--accent);box-shadow:0 0 0 2px rgba(20,184,166,0.15)}
.cloud-report-row{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border:1px solid var(--border-subtle);border-radius:var(--r-md);margin-bottom:var(--sp-1);flex-wrap:wrap;background:var(--bg-card);border-left:3px solid var(--accent);transition:all var(--dur-fast)}
.cloud-report-row:hover{border-color:var(--border-default);background:var(--bg-elevated);box-shadow:var(--shadow-sm)}
.cloud-report-row:last-child{margin-bottom:0}
.cloud-report-title{flex:1;min-width:120px;font-size:var(--fs-md);font-weight:500;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cloud-report-row .badge{font-size:var(--fs-xs);padding:2px 10px;border-radius:var(--r-full);font-weight:600;flex-shrink:0}
.cloud-report-row .text-sm{font-size:var(--fs-sm);color:var(--text-tertiary);flex-shrink:0;white-space:nowrap}
.cloud-report-row .btn-sm{font-weight:500}
.cloud-report-del{background:transparent;border:1px solid var(--border-subtle);color:var(--text-tertiary);padding:4px 10px;border-radius:var(--r-full);font-size:var(--fs-xs);cursor:pointer;transition:all var(--dur-fast);white-space:nowrap}
.cloud-report-del:hover{color:var(--danger);border-color:var(--danger);background:var(--danger-subtle)}
/* 响应式 */
@media(max-width:768px){
  .cloud-toolbar{flex-direction:column;align-items:flex-start}
  .cloud-toolbar-actions{width:100%}
  .cloud-search{flex:1}
  .cloud-report-row{flex-direction:column;align-items:flex-start;gap:var(--sp-2)}
  .cloud-report-title{min-width:auto;width:100%}
}
