/* ==================== TurboTalent 样式表 - 黑白简约专业风格 ==================== */
:root {
    /* 主色调 - 黑色为主 */
    --primary: #18181B;          /* 深黑（按钮主色） */
    --primary-hover: #27272A;    /* 按钮悬停 */
    --primary-light: #F4F4F5;    /* 浅灰背景 */
    --accent: #18181B;            /* 强调色保持黑色 */

    /* 文字色 */
    --text: #09090B;              /* 几乎纯黑 */
    --text-sec: #71717A;          /* 次要文字（中灰）*/
    --text-muted: #A1A1AA;        /* 弱化文字 */

    /* 背景色 */
    --bg: #FAFAFA;                /* 页面背景（极浅灰） */
    --bg-subtle: #F4F4F5;         /* 卡片背景悬停 */
    --card: #FFFFFF;              /* 卡片白色 */

    /* 边框 */
    --border: #E4E4E7;            /* 主边框 */
    --border-strong: #D4D4D8;     /* 强边框 */

    /* 状态色（保留但素雅） */
    --success: #16A34A;
    --warning: #D97706;
    --danger: #DC2626;

    /* 装饰 */
    --radius: 8px;
    --radius-lg: 12px;
    --shadow-sm: 0 1px 2px rgba(0,0,0,0.04);
    --shadow: 0 1px 3px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04);
    --shadow-lg: 0 4px 8px -2px rgba(0,0,0,0.08), 0 2px 4px -2px rgba(0,0,0,0.04);
}

* { margin:0; padding:0; box-sizing:border-box; }
body {
    font-family:-apple-system, BlinkMacSystemFont, 'PingFang SC','Hiragino Sans GB','Microsoft YaHei',sans-serif;
    color:var(--text); background:var(--bg); line-height:1.5;
    -webkit-font-smoothing:antialiased;
    -moz-osx-font-smoothing:grayscale;
    font-feature-settings: "tnum" 1;
}
a { color:var(--text); text-decoration:underline; text-underline-offset:2px; }
a:hover { color:var(--primary); }

/* 页面切换 */
.page { display:none; min-height:100vh; }
.page.active { display:block; }

/* ==================== 认证页 ==================== */
.auth-container {
    min-height:100vh; display:flex; align-items:center; justify-content:center;
    background:#FAFAFA; padding:20px;
    background-image:
        radial-gradient(at 20% 0%, #F4F4F5 0px, transparent 50%),
        radial-gradient(at 80% 100%, #F4F4F5 0px, transparent 50%);
}
.auth-card {
    background:#fff; border-radius:var(--radius-lg); padding:40px 32px;
    width:100%; max-width:420px;
    box-shadow:0 1px 3px rgba(0,0,0,0.05), 0 8px 24px -4px rgba(0,0,0,0.08);
    border:1px solid var(--border);
}
.auth-header { text-align:center; margin-bottom:28px; }
.auth-header h1 { font-size:24px; font-weight:800; color:var(--text); margin-top:12px; }
.auth-subtitle { color:var(--text-sec); font-size:13px; margin-top:4px; }
.logo-mark { display:flex; justify-content:center; }

.form-group { margin-bottom:16px; }
.form-group label { display:block; font-size:13px; font-weight:600; color:var(--text-sec); margin-bottom:6px; }
/* iOS Safari 输入框focus时防止自动放大（字号必须 >=16px） */
input, select, textarea { font-size:16px; }
.form-group input, .form-group select {
    width:100%; padding:10px 14px; border:1px solid var(--border); border-radius:8px;
    font-size:15px; outline:none; transition:border-color 0.2s;
}
/* 手机端 input 字号必须 >=16px 防止 iOS Safari focus 时页面放大 */
@media(max-width:520px) {
    .form-group input, .form-group select { font-size:16px; }
}
.form-group input:focus, .form-group select:focus { border-color:var(--primary); }
.required { color:var(--danger); }

.form-row { display:flex; gap:12px; }
.form-row .form-group { flex:1; }

.btn-primary {
    width:100%; padding:11px 18px;
    background:var(--primary); color:#fff;
    border:1px solid var(--primary);
    border-radius:var(--radius);
    font-size:14px; font-weight:600; cursor:pointer;
    display:flex; align-items:center; justify-content:center; gap:8px;
    transition:all 0.15s;
}
.btn-primary:hover { background:var(--primary-hover); border-color:var(--primary-hover); }
.btn-primary:active { transform:scale(0.98); }

.btn-outline {
    padding:9px 18px; background:#fff;
    color:var(--text); border:1px solid var(--border-strong);
    border-radius:var(--radius);
    font-size:14px; font-weight:600; cursor:pointer;
    display:inline-flex; align-items:center; gap:6px; transition:all 0.15s;
}
.btn-outline:hover { background:var(--bg-subtle); border-color:var(--text); }
.btn-outline.btn-danger { color:var(--danger); border-color:#FCA5A5; }
.btn-outline.btn-danger:hover { background:#FEF2F2; border-color:var(--danger); }

.btn-sm { padding:6px 12px; font-size:12px; width:auto; }
.btn-lg { padding:13px 24px; font-size:15px; margin-top:8px; }
.btn-icon {
    background:none; border:none; cursor:pointer;
    color:var(--text-sec); padding:6px;
    border-radius:6px; transition:all 0.15s;
}
.btn-icon:hover { background:var(--bg-subtle); color:var(--text); }

.auth-switch { text-align:center; margin-top:16px; font-size:13px; color:var(--text-sec); }
.error-msg {
    color:#B91C1C; font-size:13px; text-align:center; margin-top:12px;
    background:#FEF2F2; padding:10px 12px; border-radius:6px;
    border:1px solid #FECACA; line-height:1.5;
    animation:errorShake 0.4s ease-in-out;
}
@keyframes errorShake {
    0%,100% { transform:translateX(0); }
    20%,60% { transform:translateX(-4px); }
    40%,80% { transform:translateX(4px); }
}

/* ==================== 主页头部 ==================== */
.app-header {
    background:#fff; border-bottom:1px solid var(--border);
    position:sticky; top:0; z-index:100;
}
.app-header-inner {
    display:flex; align-items:center; justify-content:space-between;
    padding:12px 20px; max-width:1100px; margin:0 auto;
}
.app-header-left { display:flex; align-items:center; gap:10px; }
.app-title { font-size:17px; font-weight:700; color:var(--text); letter-spacing:-0.01em; }
.app-header-right { display:flex; align-items:center; gap:12px; }
.user-badge {
    font-size:12px; font-weight:600;
    background:var(--bg-subtle); color:var(--text);
    padding:4px 12px; border-radius:20px;
    border:1px solid var(--border);
}

/* ==================== 导航标签 ==================== */
.nav-tabs {
    background:#fff; border-bottom:1px solid var(--border); overflow-x:auto;
}
.nav-tabs-inner {
    display:flex; padding:0 16px; max-width:1100px; margin:0 auto;
}
.nav-tab {
    flex:none; padding:12px 16px; background:none; border:none; border-bottom:2px solid transparent;
    font-size:13px; font-weight:600; color:var(--text-sec); cursor:pointer;
    display:flex; align-items:center; gap:6px; transition:all 0.2s; white-space:nowrap;
}
.nav-tab.active { color:var(--primary); border-bottom-color:var(--primary); }
.nav-tab:hover { color:var(--primary); }

/* ==================== 内容区 ==================== */
.tab-content { padding:20px 24px; max-width:1100px; margin:0 auto; }
.tab-panel { display:none; }
.tab-panel.active { display:block; }

.panel-header {
    display:flex; align-items:center; justify-content:space-between;
    margin-bottom:20px; padding-bottom:16px;
    border-bottom:1px solid var(--border);
}
.panel-header h2 {
    font-size:20px; font-weight:700;
    color:var(--text);
    letter-spacing:-0.01em;
    display:flex; align-items:center; gap:8px;
}
.panel-actions { display:flex; gap:8px; }

/* ==================== 欢迎卡片 ==================== */
.welcome-card {
    background:#fff; border-radius:var(--radius); padding:28px 24px;
    box-shadow:var(--shadow); border:1px solid var(--border);
}
.welcome-card h2 { font-size:20px; font-weight:700; margin-bottom:6px; }
.welcome-card .desc { color:var(--text-sec); font-size:13px; margin-bottom:20px; }

.info-grid { display:grid; grid-template-columns:repeat(4, 1fr); gap:12px; margin-bottom:24px; }
.info-item {
    text-align:center; padding:12px 8px; background:var(--bg); border-radius:10px;
    display:flex; flex-direction:column; align-items:center; gap:4px;
}
.info-item svg, .info-item .lucide-icon { color:var(--primary); }
.info-value { font-size:15px; font-weight:700; color:var(--text); }
.info-label { font-size:11px; color:var(--text-sec); }

/* ==================== 测评模板选择 ==================== */
.template-selector {
    display:grid; gap:12px; margin-bottom:20px;
    grid-template-columns:repeat(auto-fit, minmax(240px, 1fr));
}
/* PC 端 (≥ 768px) 按数量定制布局；手机端在媒体查询统一改为单列 */
@media(min-width:768px) {
    /* 数量为 5 时：上 2 + 下 3，每行充满宽度 */
    .template-selector.tpl-grid-5 {
        grid-template-columns:repeat(6, 1fr);
    }
    .template-selector.tpl-grid-5 .template-card { grid-column: span 2; }
    .template-selector.tpl-grid-5 .template-card:nth-child(-n+2) { grid-column: span 3; }
    /* 数量为 4 时：2x2 */
    .template-selector.tpl-grid-4 { grid-template-columns:repeat(2, 1fr); }
    /* 数量为 3 时：1x3 */
    .template-selector.tpl-grid-3 { grid-template-columns:repeat(3, 1fr); }
    /* 数量为 2 时：1x2 */
    .template-selector.tpl-grid-2 { grid-template-columns:repeat(2, 1fr); }
}
.template-loading {
    grid-column:1/-1; display:flex; align-items:center; justify-content:center; gap:8px;
    padding:30px; color:var(--text-sec); font-size:13px;
}
.template-loading svg { animation:tplSpin 1.2s linear infinite; }
@keyframes tplSpin { to { transform:rotate(360deg); } }
.template-card {
    position:relative; padding:16px 14px; border:1.5px solid var(--border);
    border-radius:var(--radius); background:#fff; cursor:pointer;
    transition:all 0.2s; overflow:hidden;
}
.template-card::before {
    content:''; position:absolute; left:0; top:0; bottom:0; width:3px;
    background:var(--tpl-color, var(--primary)); opacity:0; transition:opacity 0.2s;
}
.template-card:hover { border-color:var(--tpl-color, var(--primary)); transform:translateY(-1px); box-shadow:var(--shadow); }
.template-card.active {
    border-color:var(--tpl-color, var(--primary)); border-width:1.5px;
    background:var(--tpl-bg-tint, var(--primary-light));
    box-shadow:0 0 0 3px rgba(24,24,27,0.04);
}
.template-card.active::before { opacity:1; }
.template-card-head {
    display:flex; align-items:center; gap:10px; margin-bottom:8px;
}
.template-card-icon {
    width:36px; height:36px; border-radius:8px;
    background:var(--tpl-color, var(--primary)); color:#fff;
    display:flex; align-items:center; justify-content:center; flex-shrink:0;
}
.template-card-icon .lucide-icon { width:18px; height:18px; }
.template-card-name { font-size:14px; font-weight:700; color:var(--text); flex:1; }
.template-card-default-badge {
    font-size:10px; font-weight:700; padding:2px 6px; border-radius:8px;
    background:var(--tpl-color, var(--primary)); color:#fff;
}
.template-card-desc {
    font-size:12px; color:var(--text-sec); line-height:1.5;
    margin-bottom:10px; min-height:36px;
    display:-webkit-box; -webkit-line-clamp:2; line-clamp:2;
    -webkit-box-orient:vertical; overflow:hidden;
}
.template-card-meta {
    display:flex; gap:10px; font-size:11px; color:var(--text-muted);
    border-top:1px dashed var(--border); padding-top:8px;
}
.template-card-meta span {
    display:inline-flex; align-items:center; gap:3px;
}
.template-card-meta .lucide-icon { width:11px; height:11px; }
.template-card-check {
    position:absolute; top:10px; right:10px; width:18px; height:18px;
    border-radius:50%; background:var(--tpl-color, var(--primary));
    display:none; align-items:center; justify-content:center;
}
.template-card.active .template-card-check { display:flex; }
.template-card-check .lucide-icon { width:12px; height:12px; color:#fff; stroke-width:3; }

/* 模板详情 info 区（选中模板后显示） */
.template-info {
    background:var(--bg); border-radius:var(--radius); padding:14px 16px;
    margin-bottom:20px; border:1px solid var(--border);
}
.template-info-title {
    display:flex; align-items:center; gap:8px; margin-bottom:8px;
    font-size:13px; font-weight:700; color:var(--text);
}
.template-info-title .lucide-icon { width:14px; height:14px; color:var(--tpl-color, var(--primary)); }
.template-info-text { font-size:12px; color:var(--text-sec); line-height:1.6; margin-bottom:10px; }
.template-info-grid {
    display:grid; grid-template-columns:repeat(4, 1fr); gap:8px;
}
.template-info-item {
    text-align:center; padding:8px 4px; background:#fff; border-radius:6px;
    border:1px solid var(--border);
}
.template-info-item .info-value { font-size:14px; font-weight:700; }
.template-info-item .info-label { font-size:10px; color:var(--text-sec); margin-top:2px; }

/* ==================== 恢复进度 ==================== */
.resume-prompt {
    background: var(--primary-light);
    border-radius: 10px;
    padding: 20px;
    margin-top: 12px;
    border: 1px solid rgba(79,70,229,0.2);
}
.resume-prompt .resume-title {
    font-weight: 700;
    font-size: 15px;
    margin: 0 0 8px 0;
    text-align: center;
}
.resume-prompt .resume-info {
    font-size: 13px;
    color: var(--text-sec);
    margin: 0 0 16px 0;
    text-align: center;
}
.resume-prompt .resume-actions {
    text-align: center;
    font-size: 0;
}
.resume-prompt .resume-actions > button {
    display: inline-block;
    width: 150px;
    height: 42px;
    padding: 0;
    margin: 4px 6px;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    vertical-align: middle;
}
.resume-prompt .btn-resume-primary {
    background: var(--primary);
    color: #fff;
    border: none;
}
.resume-prompt .btn-resume-primary:hover { background: #4338CA; }
.resume-prompt .btn-resume-danger {
    background: transparent;
    color: var(--danger);
    border: 1px solid var(--danger);
}
.resume-prompt .btn-resume-danger:hover { background: #FEF2F2; }

/* ==================== 答题页 ==================== */
.test-header {
    background:#fff; border-bottom:1px solid var(--border);
    position:sticky; top:0; z-index:100;
}
.test-header-inner {
    padding:16px 20px 12px; max-width:600px; margin:0 auto;
}
.test-top-bar { display:flex; justify-content:space-between; align-items:center; margin-bottom:8px; gap:10px; }
.test-name-wrap { display:flex; align-items:center; gap:8px; min-width:0; flex:1; }
.test-name { font-size:14px; font-weight:700; color:var(--text); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.test-template-badge {
    display:inline-flex; align-items:center; gap:4px;
    font-size:11px; font-weight:600; padding:3px 8px; border-radius:10px;
    background:var(--tpl-color, var(--primary)); color:#fff;
    flex-shrink:0;
}
.test-template-badge .lucide-icon { width:11px; height:11px; color:#fff; }
.timer { font-size:14px; font-weight:700; color:var(--primary); font-variant-numeric:tabular-nums; flex-shrink:0; }
.progress-bar { height:4px; background:var(--border); border-radius:2px; overflow:hidden; }
.progress-fill { height:100%; background:var(--primary); border-radius:2px; transition:width 0.3s; }
.progress-text { text-align:center; font-size:12px; color:var(--text-sec); margin-top:6px; }

.question-card {
    max-width:600px; margin:24px auto; padding:0 20px;
}
.q-text { font-size:16px; font-weight:600; line-height:1.6; margin-bottom:20px; color:var(--text); }

.options { display:flex; flex-direction:column; gap:10px; }
.opt-btn {
    width:100%; padding:14px 16px; background:#fff; border:1px solid var(--border);
    border-radius:10px; font-size:14px; text-align:left; cursor:pointer;
    transition:all 0.15s; color:var(--text);
}
.opt-btn:hover { border-color:var(--primary); background:var(--primary-light); }
.opt-btn.selected { border-color:var(--primary); background:var(--primary); color:#fff; font-weight:600; }

.nav-buttons {
    display:flex; gap:10px; justify-content:flex-end; padding:20px; max-width:600px; margin:0 auto;
}
.nav-buttons button { min-width:120px; max-width:200px; }
.nav-buttons #btnPrev { margin-right:auto; justify-content:flex-start; }
.nav-buttons #btnNext,
.nav-buttons #btnSubmit { justify-content:flex-end; }

/* ==================== 结果页 ==================== */
.result-wrap { max-width:1100px; margin:0 auto; padding:24px 24px 40px; }
.result-wrap h1 { text-align:center; font-size:22px; margin-bottom:16px; color:var(--primary); }

.result-summary { text-align:center; margin-bottom:24px; }
.star-rating { font-size:28px; margin-bottom:6px; }
.score-big { font-size:56px; font-weight:800; color:var(--text); line-height:1; letter-spacing:-0.04em; }
.score-label { font-size:13px; color:var(--text-sec); margin-top:8px; }

.result-section {
    background:#fff; border-radius:var(--radius); padding:16px 20px; margin-bottom:12px;
    box-shadow:var(--shadow); border:1px solid var(--border);
}
.result-section h3 { font-size:14px; font-weight:700; color:var(--text); margin-bottom:12px; border-bottom:1px solid var(--border); padding-bottom:8px; }

.dim-row { display:flex; align-items:center; gap:10px; margin-bottom:8px; }
.dim-label { width:70px; text-align:right; font-size:12px; color:var(--text-sec); flex-shrink:0; }
.dim-bar-wrap { flex:1; height:10px; background:var(--border); border-radius:5px; overflow:hidden; }
.dim-bar { height:100%; border-radius:5px; transition:width 0.5s; }
.dim-val { width:35px; text-align:right; font-size:13px; font-weight:700; }

.result-actions { display:flex; gap:10px; justify-content:center; margin-top:24px; }
.result-actions button { width:auto; }

/* ==================== 报告页（analysis风格） ==================== */
.result-wrap { max-width:1100px; }

/* 顶部概览卡片 */
.report-overview { margin-bottom:16px; }
.overview-card {
    background:#fff; border-radius:var(--radius); padding:20px;
    box-shadow:var(--shadow); border:1px solid var(--border);
}
.overview-header {
    display:flex; align-items:center; gap:20px; flex-wrap:wrap; margin-bottom:16px;
}
.overview-identity { flex:1; min-width:180px; }
.overview-name { font-size:26px; font-weight:800; }
.overview-meta { color:var(--text-sec); font-size:13px; margin-top:4px; }
.overview-tags { display:flex; gap:6px; flex-wrap:wrap; }
.tag {
    padding:3px 10px; border-radius:4px; font-size:12px; font-weight:600;
    display:inline-flex; align-items:center; gap:4px;
}
/* 简约黑白tag - 仅保留少量颜色暗示 */
.tag-purple { background:var(--bg-subtle); color:var(--text); border:1px solid var(--border); }
.tag-blue { background:var(--bg-subtle); color:var(--text); border:1px solid var(--border); }
.tag-green { background:#F0FDF4; color:#15803D; border:1px solid #BBF7D0; }
.tag-orange { background:#FFFBEB; color:#A16207; border:1px solid #FDE68A; }
.tag-pink { background:#FEF2F2; color:#B91C1C; border:1px solid #FECACA; }
.star-icon { font-size:11px; }

/* 概览统计行 */
.overview-stats { display:grid; gap:8px; }
.stat-row {
    display:flex; justify-content:space-between; align-items:center;
    padding:6px 0; border-bottom:1px solid var(--border); gap:10px;
}
.stat-row:last-child { border-bottom:none; }
.stat-label { color:var(--text-sec); font-size:12px; flex-shrink:0; }
.stat-value { font-weight:600; font-size:13px; flex-shrink:0; }
.score-bar {
    height:6px; background:#E2E8F0; border-radius:3px; overflow:hidden;
    flex:1; min-width:80px;
}
.score-bar-fill {
    height:100%; border-radius:3px; transition:width 0.6s ease;
}

/* 报告区域 */
.report-section {
    background:#fff; border-radius:var(--radius); padding:16px 20px; margin-bottom:12px;
    box-shadow:var(--shadow); border:1px solid var(--border);
}
.report-section-title {
    font-size:15px; font-weight:700; color:var(--text);
    margin-bottom:14px; padding-bottom:10px; border-bottom:1px solid var(--border);
    display:flex; justify-content:space-between; align-items:center;
    letter-spacing:-0.01em;
}

/* 折叠功能 */
.report-section.collapsible .report-section-title {
    cursor:pointer; user-select:none;
    margin-bottom:0; padding-bottom:8px;
    transition:margin-bottom 0.2s, border-color 0.2s;
}
.report-section.collapsible:not(.collapsed) .report-section-title {
    margin-bottom:14px;
}
.report-section.collapsible .collapse-icon {
    font-size:12px; color:var(--text-sec);
    transition:transform 0.3s; flex-shrink:0;
}
.report-section.collapsible.collapsed .collapse-icon {
    transform:rotate(-90deg);
}
.report-section.collapsible .report-section-body {
    overflow:hidden; transition:max-height 0.3s, opacity 0.3s;
    max-height:5000px; opacity:1;
}
.report-section.collapsible.collapsed .report-section-body {
    max-height:0; opacity:0;
}
.report-section.collapsible.collapsed .report-section-title {
    border-bottom-color:transparent;
}

/* 图表容器 */
.chart-grid-2 {
    display:grid; grid-template-columns:1fr 1fr; gap:14px;
}
.chart-card {
    background:#F8FAFC; border-radius:8px; padding:8px;
}
.chart-box { width:100%; height:340px; }
.chart-box-lg { width:100%; height:420px; }

/* 详细数据网格 */
.report-detail-grid {
    display:grid; grid-template-columns:1fr 1fr; gap:20px;
}
.detail-section { margin-bottom:14px; }
.detail-section h5 {
    font-size:13px; font-weight:700; color:var(--text);
    margin-bottom:8px; border-bottom:1px solid var(--border); padding-bottom:4px;
}
.kv-row {
    display:flex; justify-content:space-between;
    padding:4px 0; font-size:13px; border-bottom:1px dashed #F1F5F9;
}
.kv-row:last-child { border-bottom:none; }
.kv-row .k { color:var(--text-sec); }
.kv-row .v { font-weight:600; }

/* 标签chip */
.chip-list { display:inline-flex; flex-wrap:wrap; gap:4px; margin-top:4px; vertical-align:middle; }
.chip {
    background:var(--bg-subtle); padding:3px 10px; border-radius:12px;
    font-size:11px; color:var(--text);
    border:1px solid var(--border);
}

/* 优势 / 不足 列表 */
.advantage-item, .weakness-item {
    font-size:13px; color:var(--text); padding:4px 0; padding-left:18px;
    line-height:1.6; position:relative;
}
.advantage-item::before {
    content:''; position:absolute; left:0; top:11px;
    width:8px; height:8px; background:var(--success); border-radius:50%;
}
.weakness-item::before {
    content:''; position:absolute; left:1px; top:8px;
    width:0; height:0; border-left:5px solid transparent;
    border-right:5px solid transparent; border-bottom:8px solid var(--warning);
}
.empty-text { color:var(--text-sec); font-size:13px; padding:8px 0; }

/* ==================== AI 解读区域 ==================== */
.ai-section-header {
    display:flex; justify-content:space-between; align-items:center;
    margin-bottom:14px; padding-bottom:8px; border-bottom:1px solid var(--border);
    gap:10px; flex-wrap:wrap;
}
.ai-controls {
    display:flex; gap:8px; align-items:center; flex-wrap:wrap;
}
.ai-select {
    padding:5px 8px; border:1px solid var(--border); border-radius:6px;
    font-size:12px; background:#fff; cursor:pointer; outline:none;
}
.ai-think-label {
    font-size:12px; color:var(--text-sec); cursor:pointer;
    display:inline-flex; align-items:center; gap:4px;
}
.ai-think-label input { font-size:14px; cursor:pointer; }
.btn-ai-refresh {
    padding:6px 12px; background:var(--primary); color:#fff;
    border:none; border-radius:6px; cursor:pointer;
    display:inline-flex; align-items:center; gap:4px;
    font-size:12px; font-weight:600; transition:background 0.2s;
}
.btn-ai-refresh:hover { background:#4338CA; }

.ai-content {
    min-height:80px; padding:14px 18px;
    background:#F8FAFC; border-radius:8px; border:1px solid var(--border);
    font-size:13px; line-height:1.75; color:var(--text);
    position:relative;
    /* white-space:pre-wrap 移除：交给Markdown解析器处理换行 */
}
.ai-empty { color:var(--text-sec); font-size:12px; }
.ai-loading {
    display:flex; align-items:center; gap:8px;
    color:var(--primary); font-size:13px;
}
.ai-spinner {
    width:14px; height:14px; border:2px solid var(--primary-light);
    border-top-color:var(--primary); border-radius:50%;
    animation:spin 0.8s linear infinite;
}
@keyframes spin { to { transform:rotate(360deg); } }

.ai-error {
    color:var(--danger); font-size:13px; padding:8px;
    background:#FEF2F2; border-radius:6px;
}
.ai-error small { display:block; margin-top:4px; color:var(--text-sec); }

.ai-cached-badge {
    display:inline-flex; align-items:center; gap:4px;
    font-size:11px; color:var(--text-sec);
    background:var(--bg-subtle);
    padding:3px 10px; border-radius:12px;
    margin-bottom:10px; font-weight:600;
    border:1px solid var(--border);
}
.ai-cached-badge::before {
    content:'●'; color:var(--success); font-size:8px;
}

.ai-think-wrap { margin-bottom:10px; }
.ai-think-toggle {
    font-size:12px; color:#94A3B8; cursor:pointer; user-select:none;
    border-bottom:1px dashed #CBD5E1; display:inline-block;
}
.ai-think-body {
    font-size:12px; color:#94A3B8; background:#F1F5F9;
    border-left:3px solid #CBD5E1; padding:8px 12px; margin-top:6px;
    border-radius:4px; max-height:200px; overflow-y:auto;
    white-space:pre-wrap;
}
.ai-text { font-size:13px; line-height:1.75; color:var(--text); }

/* AI Markdown 渲染样式 */
.ai-text h1, .ai-text h2, .ai-text h3, .ai-text h4 {
    color:var(--text); font-weight:700;
    margin:14px 0 8px;
    padding-bottom:4px;
    border-bottom:1px solid var(--border);
    letter-spacing:-0.01em;
}
.ai-text h1 { font-size:18px; }
.ai-text h2 { font-size:16px; }
.ai-text h3 { font-size:14px; }
.ai-text h4 { font-size:13px; border-bottom:none; }
.ai-text h1:first-child, .ai-text h2:first-child, .ai-text h3:first-child, .ai-text h4:first-child {
    margin-top:0;
}
.ai-text p { margin:6px 0; }
.ai-text ul, .ai-text ol {
    margin:6px 0 6px 22px; padding-left:0;
}
.ai-text li { margin-bottom:4px; line-height:1.7; }
.ai-text strong { color:var(--text); font-weight:700; }
.ai-text em { color:var(--text-sec); font-style:italic; }
.ai-text code {
    background:var(--bg-subtle); color:var(--text);
    padding:2px 6px; border-radius:4px;
    font-size:12px; font-family:'SF Mono', Menlo, Consolas, monospace;
    border:1px solid var(--border);
}
.ai-text pre {
    background:#18181B; color:#FAFAFA;
    padding:12px 14px; border-radius:var(--radius);
    overflow-x:auto; margin:10px 0;
    font-size:12px; line-height:1.6;
}
.ai-text pre code {
    background:transparent; color:inherit; padding:0; border:none;
}
.ai-text blockquote {
    border-left:3px solid var(--text);
    background:var(--bg-subtle);
    padding:8px 14px; margin:10px 0;
    color:var(--text); border-radius:0 6px 6px 0;
}
.ai-text table {
    border-collapse:collapse; margin:10px 0;
    font-size:12px; width:100%;
    border:1px solid var(--border);
    border-radius:var(--radius); overflow:hidden;
}
.ai-text table th, .ai-text table td {
    border:1px solid var(--border);
    padding:6px 10px; text-align:left;
}
.ai-text table th {
    background:var(--bg-subtle); font-weight:700;
}
.ai-text hr {
    border:none; border-top:1px solid var(--border);
    margin:14px 0;
}
.ai-text a { color:var(--text); text-decoration:underline; text-underline-offset:2px; }
.ai-text a:hover { color:var(--primary); }

/* ==================== 团队列表 ==================== */
.team-list {
    display:grid; grid-template-columns:repeat(auto-fill, minmax(320px, 1fr)); gap:14px;
}
.team-card {
    background:#fff; border-radius:14px;
    padding:18px 20px;
    border:1px solid var(--border);
    box-shadow:0 1px 3px rgba(0,0,0,0.05);
    display:flex; gap:12px; align-items:flex-start;
    transition:all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
    position:relative; overflow:hidden;
}
.team-card::before {
    content:''; position:absolute; left:0; top:0; bottom:0;
    width:3px; background:var(--text);
    opacity:0; transition:opacity 0.15s;
}
.team-card:hover {
    border-color:var(--border-strong);
    box-shadow:var(--shadow-lg);
}
.team-card:hover::before { opacity:1; }
.team-card-main {
    flex:1; cursor:pointer; padding-left:8px; min-width:0;
}
.team-card-name {
    font-size:16px; font-weight:800; color:var(--text);
    margin-bottom:5px;
}
.team-card-desc {
    font-size:13px; color:var(--text-sec);
    margin-bottom:10px; line-height:1.5;
    display:-webkit-box; -webkit-line-clamp:2; line-clamp:2;
    -webkit-box-orient:vertical; overflow:hidden;
}
.team-card-meta {
    font-size:12px; color:var(--text-sec);
    display:flex; gap:8px; flex-wrap:wrap;
}
.team-card-meta span {
    display:inline-flex; align-items:center; gap:4px;
    background:#F8FAFC; padding:3px 10px; border-radius:12px;
}
.team-card-actions {
    display:flex; gap:6px; flex-shrink:0;
    flex-direction:column;
}
.team-card-actions .btn-icon {
    width:32px; height:32px;
    border:1px solid var(--border);
    background:#fff; color:var(--text-sec);
    font-size:18px; font-weight:700;
    display:flex; align-items:center; justify-content:center;
    border-radius:8px;
    transition:all 0.2s;
}
.team-card-actions .btn-icon:first-child:hover {
    border-color:var(--primary); color:var(--primary);
    background:var(--primary-light);
}
.team-card-actions .btn-icon:last-child:hover {
    border-color:var(--danger); color:var(--danger);
    background:#FEF2F2;
}

/* 团队成员卡片 */
.team-members-grid {
    display:grid; grid-template-columns:repeat(auto-fill, minmax(220px, 1fr)); gap:10px;
}
.team-member-card {
    background:#F8FAFC; border-radius:8px; padding:12px;
    display:flex; flex-direction:column; gap:6px;
}
.tm-name { font-size:15px; font-weight:700; }
.tm-meta { font-size:12px; color:var(--text-sec); }
.tm-stats { display:flex; gap:4px; flex-wrap:wrap; }
.stat-tag {
    background:#fff; padding:2px 8px; border-radius:10px;
    font-size:11px; color:var(--text-sec); border:1px solid var(--border);
}
.tm-score { font-size:13px; color:var(--text); }
.tm-actions { display:flex; gap:6px; align-items:center; margin-top:4px; }
.tm-actions .btn-outline { flex:1; }
.tm-actions .btn-icon {
    width:28px; height:28px; padding:0; flex:none;
    border:1px solid var(--border); background:#fff;
    display:flex; align-items:center; justify-content:center;
    border-radius:6px; color:var(--danger); font-size:16px; font-weight:700;
}
.tm-actions .btn-icon:hover { background:#FEF2F2; }

/* ==================== 团队顶栏 ==================== */
.team-header {
    margin-bottom:20px;
    background:var(--card);
    border-radius:var(--radius-lg); padding:20px 24px;
    border:1px solid var(--border);
    display:flex; flex-direction:column; gap:8px;
}
/* 第一行：返回按钮 + 团队信息块（同行）*/
.team-header-top {
    display:flex; align-items:center; gap:16px;
    flex-wrap:nowrap; min-height:36px;
}
.team-header-top .btn-outline {
    flex-shrink:0;
}
.team-info {
    flex:1; min-width:0;
    display:flex; align-items:baseline; gap:12px;
    flex-wrap:wrap;
}
.team-header-top h1 {
    margin:0; font-size:22px; font-weight:700;
    color:var(--text);
    letter-spacing:-0.02em;
    line-height:1.3;
    flex-shrink:0;
}
.team-sub {
    margin:0; font-size:13px; color:var(--text-sec);
    line-height:1.4;
    flex:1; min-width:0;
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.team-actions {
    display:flex; gap:8px; flex-wrap:wrap;
    align-items:center;
}
.team-actions .btn-primary,
.team-actions .btn-outline {
    width:auto !important;
}

/* ==================== 主tab：单人/团队 ==================== */
.team-main-tabs {
    display:flex; gap:4px; margin-bottom:20px;
    background:var(--bg-subtle); padding:4px;
    border-radius:var(--radius);
    border:1px solid var(--border);
}
.team-main-tab {
    flex:1; padding:9px 16px; border:none; background:transparent;
    border-radius:6px; cursor:pointer; font-size:14px; font-weight:600;
    color:var(--text-sec); transition:all 0.15s;
    display:flex; align-items:center; justify-content:center; gap:6px;
}
.team-main-tab:hover {
    color:var(--text);
}
.team-main-tab.active {
    background:var(--card);
    color:var(--text);
    box-shadow:var(--shadow-sm);
    border:1px solid var(--border);
}
.team-tab-panel { display:none; }
.team-tab-panel.active { display:block; animation:fadeIn 0.2s; }

@keyframes fadeIn {
    from { opacity:0; transform:translateY(2px); }
    to { opacity:1; transform:translateY(0); }
}

/* ==================== 人员tab栏 ==================== */
.tab-bar { display:flex; flex-wrap:wrap; gap:6px; }
.tab-bar .tab-btn {
    padding:7px 14px; background:var(--card);
    border:1px solid var(--border-strong); border-radius:18px;
    cursor:pointer; font-size:13px; font-weight:600;
    color:var(--text-sec); transition:all 0.15s;
}
.tab-bar .tab-btn:hover {
    border-color:var(--text); color:var(--text);
}
.tab-bar .tab-btn.active {
    color:#fff; background:var(--primary) !important;
    border-color:var(--primary) !important;
}

/* ==================== 概览卡片(团队) ==================== */
.overview-cards {
    display:grid; grid-template-columns:repeat(auto-fill, minmax(260px, 1fr)); gap:14px;
}
.person-card {
    background:#fff; border-radius:12px; padding:16px; padding-right:40px;
    border-left:4px solid var(--primary);
    box-shadow:0 1px 3px rgba(0,0,0,0.06);
    transition:all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
    cursor:pointer; position:relative;
    border-top:1px solid var(--border);
    border-right:1px solid var(--border);
    border-bottom:1px solid var(--border);
}
.person-card:hover {
    transform:translateY(-4px);
    box-shadow:0 12px 24px -8px rgba(0,0,0,0.12);
}
.person-card .name { font-size:17px; font-weight:800; margin-bottom:2px; }
.person-card .meta { color:var(--text-sec); font-size:12px; margin:0 0 10px; }
.person-card .tags { display:flex; flex-wrap:wrap; gap:5px; margin-bottom:10px; }
.person-card .stat-row {
    padding:5px 0; border-bottom:1px dashed #F1F5F9;
}
.person-card .stat-row:last-child { border-bottom:none; }
.person-card > button.btn-icon {
    position:absolute; top:10px; right:10px;
    width:26px !important; height:26px !important;
    border-radius:50% !important;
    background:#fff !important; color:#94A3B8 !important;
    border:1px solid var(--border) !important;
    transition:all 0.2s;
}
.person-card > button.btn-icon:hover {
    background:#FEF2F2 !important; color:var(--danger) !important;
    border-color:var(--danger) !important;
}

/* ==================== 特质卡片 ==================== */
.trait-grid {
    display:grid; grid-template-columns:repeat(auto-fill, minmax(240px, 1fr)); gap:12px;
}
.trait-card {
    background:#fff; border-radius:10px; padding:14px;
    border-left:4px solid var(--primary);
    border-top:1px solid var(--border);
    border-right:1px solid var(--border);
    border-bottom:1px solid var(--border);
    transition:all 0.2s;
    box-shadow:0 1px 3px rgba(0,0,0,0.04);
}
.trait-card:hover {
    transform:translateY(-2px);
    box-shadow:0 6px 16px -4px rgba(0,0,0,0.08);
}
.trait-card .tc-name { font-size:14px; font-weight:700; margin-bottom:6px; }
.trait-card .tc-tags { display:flex; flex-wrap:wrap; gap:4px; margin-top:4px; }
.trait-card .tc-detail {
    font-size:11px; color:var(--text); margin-top:6px;
    line-height:1.6;
}

/* ==================== 综合对比表 ==================== */
.compare-table {
    width:100%; border-collapse:separate; border-spacing:0;
    font-size:12px; background:var(--card);
    border-radius:var(--radius); overflow:hidden;
    border:1px solid var(--border);
}
.compare-table th, .compare-table td {
    padding:8px 12px; border-bottom:1px solid var(--border);
    text-align:center; white-space:nowrap;
}
.compare-table th {
    background:var(--bg-subtle);
    font-weight:600; color:var(--text);
    position:sticky; top:0;
    border-bottom:1px solid var(--border-strong);
}
.compare-table tr:nth-child(even) td { background:#FAFAFA; }
.compare-table tr:hover td { background:var(--bg-subtle) !important; }
.compare-table .high {
    color:var(--success); font-weight:700;
}
.compare-table .high::before { content:'▲ '; font-size:9px; }
.compare-table .low {
    color:var(--danger); font-weight:700;
}
.compare-table .low::before { content:'▼ '; font-size:9px; }
.compare-table .row-label {
    text-align:left; font-weight:600;
    background:var(--bg-subtle) !important;
    color:var(--text);
    border-right:1px solid var(--border);
}

/* ==================== 图表卡片 ==================== */
#pageTeam .chart-card {
    background:var(--card);
    border-radius:var(--radius); padding:12px;
    border:1px solid var(--border);
}

/* ==================== AI section ==================== */
#pageTeam .ai-section-header {
    margin-top:16px; padding:10px 14px;
    background:var(--bg-subtle);
    border-radius:var(--radius);
    border:1px solid var(--border);
}
#pageTeam .ai-section-header h4 {
    color:var(--text); font-weight:700;
    display:flex; align-items:center; gap:6px;
}
#pageTeam .ai-content {
    margin-top:8px;
    background:#FAFAFA;
    border:1px solid var(--border);
}

/* ==================== 警告框 ==================== */
.warn-box {
    background:var(--bg-subtle);
    border:1px solid var(--border); border-radius:var(--radius);
    padding:14px 16px; font-size:13px; color:var(--text);
    line-height:1.7;
}
.warn-box h4 { margin:0 0 8px; font-size:13px; color:var(--text); font-weight:700; }
.warn-box ul { margin:6px 0 0 18px; padding:0; }
.warn-box li { margin-bottom:4px; color:var(--text-sec); }

/* ==================== 团队页通用响应式 ==================== */

/* 平板及以下（团队页内部图表网格收紧） */
@media(max-width:900px) {
    #pageTeam .chart-grid-2 { grid-template-columns:1fr; gap:12px; }
    #pageTeam .chart-box { height:300px; }
    #pageTeam .report-detail-grid { grid-template-columns:1fr; gap:0; }
    #pageTeam .overview-cards { grid-template-columns:repeat(auto-fill, minmax(220px,1fr)); }
    #pageTeam .trait-grid { grid-template-columns:repeat(auto-fill, minmax(220px,1fr)); }
}

/* 手机端（≤520px） */
@media(max-width:520px) {
    /* 团队列表卡片 */
    .team-members-grid { grid-template-columns:1fr; }
    .team-card { flex-direction:column; align-items:stretch; gap:8px; }
    .team-card-main { padding-bottom:0; }
    .team-card-actions { justify-content:flex-end; }
    .team-card-name { font-size:14px; }
    .team-card-desc { font-size:12px; }
    .team-card-meta { font-size:11px; gap:8px; }

    /* 团队分析页顶栏 */
    .team-header-top { gap:10px; }
    .team-header-top h1 { font-size:18px; }
    .team-header-top .btn-outline { padding:5px 10px; font-size:11px; }
    #pageTeam .team-actions { flex-direction:column; gap:6px; }
    #pageTeam .team-actions button { width:100%; justify-content:center; }

    /* 主tab：团队/单人 */
    .team-main-tabs { padding:3px; }
    .team-main-tab { padding:6px 8px; font-size:13px; }

    /* 人员tab栏 */
    .tab-bar { gap:4px; }
    .tab-bar .tab-btn { padding:5px 10px; font-size:12px; }

    /* 团队tab：概览卡片 */
    #pageTeam .overview-cards { grid-template-columns:1fr; gap:8px; }
    .person-card { padding:12px; padding-right:32px; position:relative; }
    .person-card .name { font-size:15px; }
    .person-card .meta { font-size:11px; }
    .person-card .stat-row { padding:2px 0; gap:6px; }
    .person-card .stat-label { font-size:11px; }
    .person-card .stat-value { font-size:12px; }
    .person-card .score-bar { height:5px; min-width:60px; }

    /* 报告 section 紧凑 */
    #pageTeam .report-section { padding:12px 14px; margin-bottom:10px; }
    #pageTeam .report-section-title { font-size:14px; padding-bottom:6px; margin-bottom:10px; }

    /* 图表容器 */
    #pageTeam .chart-card { padding:6px; }
    #pageTeam .chart-box { height:280px; }
    #pageTeam .chart-box-lg { height:320px; }
    /* 心理仪表盘特别处理（多人横向放不下） */
    #pageTeam #gaugePsy { height:240px; }

    /* 特质卡片网格 */
    #pageTeam .trait-grid { grid-template-columns:1fr; gap:8px; }
    .trait-card { padding:10px; }
    .trait-card .tc-name { font-size:13px; }
    .trait-card .tc-detail { font-size:11px; }

    /* 综合对比表横滚 */
    #compareTableWrap {
        overflow-x:auto;
        -webkit-overflow-scrolling:touch;
    }
    .compare-table { font-size:11px; min-width:480px; }
    .compare-table th, .compare-table td { padding:4px 6px; }

    /* AI 控件区 */
    .ai-section-header {
        flex-direction:column; align-items:stretch; gap:8px;
    }
    .ai-section-header h4 { text-align:center; }
    .ai-controls { justify-content:space-between; flex-wrap:wrap; }
    .ai-select { font-size:12px; padding:4px 6px; flex:1; min-width:0; }
    .ai-think-label { font-size:11px; }
    .btn-ai-refresh { padding:5px 10px; font-size:12px; flex-shrink:0; }

    /* 警告框 */
    .warn-box { padding:10px 12px; font-size:12px; }
    .warn-box ul { margin-left:16px; }

    /* 概览卡片右上角×按钮 */
    .person-card > button.btn-icon { top:6px !important; right:6px !important; }

    /* 个人tab的概览卡片 */
    #pageTeam .overview-card { padding:14px; }
    #pageTeam .overview-name { font-size:20px; }
    #pageTeam .overview-header { gap:10px; }
    #pageTeam .overview-tags { width:100%; }
}

/* 极小屏（iPhone SE 等 ≤375px） */
@media(max-width:375px) {
    .team-main-tab { font-size:12px; padding:6px; }
    .person-card { padding:10px; padding-right:28px; }
    #pageTeam .chart-box { height:240px; }
    #pageTeam .chart-box-lg { height:280px; }
    #pageTeam .report-section { padding:10px 12px; }
    .ai-controls { gap:4px; }
    .ai-select { font-size:11px; }
}

/* ==================== 历史记录 ==================== */
.card-list { display:flex; flex-direction:column; gap:10px; }
.history-card {
    background:#fff; border-radius:var(--radius); padding:16px 20px; cursor:pointer;
    box-shadow:var(--shadow); border:1px solid var(--border); transition:all 0.15s;
    border-left:3px solid var(--tpl-color, var(--border));
}
.history-card:hover { border-color:var(--primary); transform:translateY(-1px); }
.hc-top { display:flex; justify-content:space-between; align-items:center; margin-bottom:6px; gap:8px; flex-wrap:wrap; }
.hc-name-wrap { display:flex; align-items:center; gap:8px; flex:1; min-width:0; }
.hc-name { font-size:15px; font-weight:700; }
.hc-template-badge {
    display:inline-flex; align-items:center; gap:3px;
    font-size:10px; font-weight:700; padding:2px 7px; border-radius:8px;
    background:var(--tpl-color, var(--text-sec)); color:#fff;
    flex-shrink:0;
}
.hc-template-badge .lucide-icon { width:10px; height:10px; color:#fff; }
.hc-status { font-size:11px; padding:3px 8px; border-radius:12px; font-weight:600; }
.status-done { background:#D1FAE5; color:#059669; }
.status-ongoing { background:#FEF3C7; color:#D97706; }
.hc-meta { display:flex; gap:12px; font-size:12px; color:var(--text-sec); }
.hc-date { font-size:11px; color:var(--text-sec); margin-top:4px; }

/* ==================== 通用模态对话框 ==================== */
.modal-overlay {
    position:fixed; inset:0; background:rgba(0,0,0,0.45);
    display:flex; align-items:center; justify-content:center;
    z-index:1000; padding:20px; animation:modalFadeIn 0.18s ease-out;
}
@keyframes modalFadeIn { from { opacity:0; } to { opacity:1; } }
.modal-card {
    background:#fff; border-radius:var(--radius-lg);
    width:100%; max-width:560px; max-height:calc(100vh - 40px);
    display:flex; flex-direction:column;
    box-shadow:0 10px 40px rgba(0,0,0,0.18);
    animation:modalSlideUp 0.22s ease-out;
}
@keyframes modalSlideUp { from { transform:translateY(20px); opacity:0; } to { transform:translateY(0); opacity:1; } }
.modal-header {
    display:flex; justify-content:space-between; align-items:center;
    padding:16px 20px; border-bottom:1px solid var(--border);
}
.modal-header h3 { font-size:16px; font-weight:700; }
.modal-body { padding:18px 20px; overflow-y:auto; flex:1; }
.modal-body textarea {
    width:100%; padding:10px 14px; border:1px solid var(--border);
    border-radius:8px; font-size:14px; line-height:1.5;
    font-family:inherit; resize:vertical; outline:none;
}
.modal-body textarea:focus { border-color:var(--primary); }
.modal-body .form-group { margin-bottom:14px; }
.modal-footer {
    display:flex; gap:10px; justify-content:flex-end;
    padding:14px 20px; border-top:1px solid var(--border);
}
.modal-footer .btn-primary, .modal-footer .btn-outline {
    width:auto; min-width:100px;
}
@media(max-width:520px) {
    .modal-card { max-width:100%; max-height:90vh; }
    .modal-body .form-row { flex-direction:column; gap:0; }
}

/* btn-link：链接式按钮，用于表格行内操作 */
.btn-link {
    background:none; border:1px solid transparent;
    color:var(--primary); cursor:pointer;
    font-size:12px; font-weight:500;
    padding:4px 10px; border-radius:6px;
    transition:all 0.15s;
    margin-right:4px;
}
.btn-link:hover {
    background:var(--bg-subtle);
    border-color:var(--border);
    color:var(--primary);
}
.btn-link:active { transform:scale(0.97); }
.btn-link:last-child { margin-right:0; }

/* btn-link 危险变体 */
.btn-link-danger { color:#DC2626 !important; }
.btn-link-danger:hover { color:#B91C1C !important; background:#FEF2F2 !important; border-color:#FECACA !important; }

/* 表格中的操作按钮组：横向排列、间距规整 */
.admin-table .btn-link {
    display:inline-flex; align-items:center;
    margin-right:2px;
}
.admin-table .btn-link + .btn-link { margin-left:2px; }

/* 表格 code 列样式 */
.admin-table code {
    font-family:'SF Mono','Menlo','Monaco','Consolas',monospace;
    font-size:11px; color:var(--text-sec);
}

/* ==================== 通用分页控件 ==================== */
.pagination {
    display:flex; justify-content:space-between; align-items:center;
    gap:12px; flex-wrap:wrap;
    margin-top:14px; padding:10px 4px 4px;
}
.pagination-info {
    font-size:12px; color:var(--text-sec);
}
.pagination-controls {
    display:inline-flex; gap:4px; flex-wrap:wrap; align-items:center;
}
.pagination-btn {
    min-width:32px; height:32px; padding:0 10px;
    background:#fff; border:1px solid var(--border);
    border-radius:6px; color:var(--text);
    font-size:12px; font-weight:500;
    cursor:pointer; transition:all 0.15s;
    font-family:inherit;
}
.pagination-btn:hover:not(.disabled):not(.active) {
    background:var(--bg-subtle); border-color:var(--text-sec);
}
.pagination-btn.active {
    background:var(--text); color:#fff; border-color:var(--text);
    cursor:default;
}
.pagination-btn.disabled {
    opacity:0.4; cursor:not-allowed;
}
.pagination-ellipsis {
    display:inline-flex; align-items:center;
    padding:0 4px; color:var(--text-muted); font-size:12px;
}
@media(max-width:520px) {
    .pagination { flex-direction:column; align-items:stretch; }
    .pagination-info { text-align:center; }
    .pagination-controls { justify-content:center; }
    .pagination-btn { min-width:28px; height:28px; font-size:11px; }
}

/* ==================== 角色选择对话框 ==================== */
.role-option-list { display:flex; flex-direction:column; gap:8px; }
.role-option {
    display:flex; align-items:center; gap:12px;
    padding:12px 14px; border:1.5px solid var(--border);
    border-radius:10px; background:#fff;
    cursor:pointer; transition:all 0.18s;
    text-align:left; width:100%; font-family:inherit;
}
.role-option:hover:not(:disabled) {
    border-color:var(--text); background:var(--bg-subtle);
    transform:translateY(-1px);
    box-shadow:0 2px 8px rgba(0,0,0,0.06);
}
.role-option:active:not(:disabled) { transform:translateY(0); }
.role-option:disabled, .role-option.current {
    opacity:0.6; cursor:not-allowed; background:var(--bg-subtle);
    border-color:var(--border);
}
.role-option-icon {
    width:36px; height:36px; border-radius:8px;
    display:flex; align-items:center; justify-content:center;
    flex-shrink:0;
}
.role-option-body { flex:1; min-width:0; }
.role-option-title {
    font-size:14px; font-weight:700; color:var(--text);
    margin-bottom:2px;
}
.role-option-desc {
    font-size:12px; color:var(--text-sec);
    line-height:1.5;
}
.role-current-tag {
    display:inline-block; font-size:10px; font-weight:600;
    padding:1px 6px; border-radius:6px;
    background:var(--text); color:#fff;
    margin-left:6px; vertical-align:middle;
}

/* ==================== 报告页模板标识 Banner ==================== */
.report-template-banner {
    display:flex; align-items:center; gap:12px;
    padding:12px 18px; margin-bottom:14px; border-radius:var(--radius);
    background:var(--tpl-color, var(--primary)); color:#fff;
    box-shadow:var(--shadow);
}
.report-template-banner .banner-icon {
    width:36px; height:36px; border-radius:8px;
    background:rgba(255,255,255,0.18); display:flex; align-items:center; justify-content:center; flex-shrink:0;
}
.report-template-banner .banner-icon .lucide-icon { width:20px; height:20px; color:#fff; }
.report-template-banner .banner-body { flex:1; min-width:0; }
.report-template-banner .banner-title { font-size:14px; font-weight:700; }
.report-template-banner .banner-sub { font-size:12px; opacity:0.85; margin-top:2px; }
.report-template-banner .banner-meta {
    font-size:11px; padding:4px 10px; border-radius:12px;
    background:rgba(255,255,255,0.22); font-weight:600; flex-shrink:0;
}

/* ==================== 看板 ==================== */
.dashboard-summary {
    display:grid; grid-template-columns:repeat(3, 1fr); gap:12px; margin-bottom:20px;
}
.ds-item {
    background:#fff; border-radius:var(--radius); padding:20px; text-align:center;
    box-shadow:var(--shadow); border:1px solid var(--border);
}
.ds-val { font-size:28px; font-weight:800; color:var(--primary); }
.ds-label { font-size:12px; color:var(--text-sec); margin-top:4px; }

.dashboard-list h3 { font-size:16px; font-weight:700; margin-bottom:12px; }

.candidate-card {
    background:#fff; border-radius:var(--radius); padding:16px 20px; margin-bottom:10px;
    box-shadow:var(--shadow); border:1px solid var(--border);
}
.cc-header { display:flex; justify-content:space-between; align-items:center; }
.cc-name { font-size:15px; font-weight:700; }
.cc-score { font-size:20px; font-weight:800; color:var(--primary); }
.cc-meta { display:flex; gap:12px; font-size:12px; color:var(--text-sec); margin-top:4px; }
.cc-dims { display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; }
.dim-tag { background:var(--primary-light); color:var(--primary); padding:2px 8px; border-radius:10px; font-size:11px; font-weight:600; }

/* ==================== 管理 ==================== */
.admin-section { margin-bottom:24px; }
.admin-section h3 { font-size:16px; font-weight:700; margin-bottom:12px; }

.admin-table {
    width:100%; border-collapse:collapse; background:#fff; border-radius:var(--radius);
    overflow:hidden; box-shadow:var(--shadow); border:1px solid var(--border);
}
.admin-table th {
    background:var(--bg); padding:10px 12px; text-align:left; font-size:12px;
    font-weight:600; color:var(--text-sec); border-bottom:1px solid var(--border);
}
.admin-table td { padding:10px 12px; font-size:13px; border-bottom:1px solid var(--border); }
.admin-table tr:last-child td { border-bottom:none; }

.role-badge {
    padding:2px 10px; border-radius:10px; font-size:11px; font-weight:600;
    border:1px solid var(--border);
}
.role-badge.admin { background:var(--bg-subtle); color:var(--text); border-color:var(--text); }
.role-badge.user { background:var(--card); color:var(--text-sec); }
.role-badge.hr { background:#F0FDF4; color:#15803D; border-color:#BBF7D0; }

.status-badge {
    padding:2px 10px; border-radius:10px; font-size:11px; font-weight:600;
    border:1px solid var(--border);
}
.status-badge.completed { background:#F0FDF4; color:#15803D; border-color:#BBF7D0; }
.status-badge.in_progress { background:#FFFBEB; color:#A16207; border-color:#FDE68A; }

/* ==================== 通用 ==================== */
.loading { text-align:center; color:var(--text-sec); padding:40px; }
.empty-state { text-align:center; padding:60px 20px; color:var(--text-sec); }
.empty-state p { margin-bottom:4px; }
.empty-state .desc { font-size:13px; }

/* ==================== 响应式 ==================== */
/* 平板 & 以下 */
@media(max-width:768px) {
    .auth-card { padding:28px 20px; }
    .info-grid { grid-template-columns:repeat(2, 1fr); }
    .dashboard-summary { grid-template-columns:repeat(3, 1fr); gap:8px; }
    .ds-val { font-size:22px; }
    .admin-table { font-size:12px; }
    .admin-table th, .admin-table td { padding:8px 6px; }
    .tab-content { padding:12px; }
    .result-wrap { padding:16px 12px 40px; }
    .nav-buttons { padding:16px; }
    .dim-label { width:55px; font-size:11px; }
    .app-header-inner { padding:10px 14px; }
    .nav-tabs-inner { padding:0 10px; }
    .test-header-inner { padding:12px 14px 10px; }
    .question-card { padding:0 14px; }
}

/* 小屏手机 */
@media(max-width:520px) {
    body { font-size:14px; }
    .form-row { flex-direction:column; gap:0; }
    .dashboard-summary { grid-template-columns:1fr 1fr 1fr; }
    .ds-item { padding:12px; }
    .ds-val { font-size:18px; }
    .score-big { font-size:42px; }
    .cc-dims { display:none; }
    
    /* 认证页 */
    .auth-card { padding:24px 16px; border-radius:12px; }
    .auth-header h1 { font-size:20px; }
    
    /* 头部 & 标签 */
    .app-title { font-size:16px; }
    .app-header-inner { padding:10px 12px; }
    .user-badge { font-size:12px; padding:3px 10px; }
    .nav-tab { padding:10px 8px; font-size:12px; gap:4px; }
    .nav-tab svg { width:14px; height:14px; }
    
    /* 内容区 */
    .tab-content { padding:10px; }
    .welcome-card, .panel-header h2 { font-size:16px; }
    .welcome-card { padding:16px; }
    .welcome-card .desc { font-size:13px; }
    .info-value { font-size:14px; }
    .info-label { font-size:10px; }

    /* 模板选择 - 手机端单列 */
    .template-selector { grid-template-columns:1fr; gap:10px; }
    .template-info-grid { grid-template-columns:repeat(2, 1fr); }

    /* 答题页 */
    .test-header-inner { padding:10px 12px 8px; }
    .test-name { font-size:13px; }
    .test-template-badge { font-size:10px; padding:2px 6px; }
    .timer { font-size:13px; }

    /* 结果页模板 Banner */
    .report-template-banner { padding:10px 12px; gap:10px; }
    .report-template-banner .banner-icon { width:30px; height:30px; }
    .report-template-banner .banner-title { font-size:13px; }
    .report-template-banner .banner-sub { font-size:11px; }
    .report-template-banner .banner-meta { display:none; }
    .question-card { padding:0 12px; margin:16px auto; }
    .q-text { font-size:15px; margin-bottom:16px; }
    .opt-btn { padding:12px 14px; font-size:14px; min-height:44px; }
    .options { gap:8px; }
    
    /* 导航按钮 - 保持触控友好 */
    .nav-buttons { padding:12px; gap:8px; }
    .nav-buttons button { min-width:100px; padding:12px 14px; font-size:13px; min-height:44px; }
    
    /* 恢复进度 - 按钮垂直堆叠 */
    .resume-prompt { padding:16px; }
    .resume-prompt .resume-actions > button {
        display:block;
        width:100% !important;
        max-width:280px;
        margin:6px auto !important;
    }
    
    /* 结果页 */
    .result-wrap { padding:12px 10px 40px; }
    .result-wrap h1 { font-size:18px; }
    .result-summary { margin-bottom:16px; }
    .result-actions { flex-direction:column; gap:8px; }
    .result-actions button { width:100%; }
    
    /* 报告页响应式 */
    .overview-card { padding:14px; }
    .overview-name { font-size:22px; }
    .report-section { padding:12px 14px; }
    .chart-grid-2 { grid-template-columns:1fr; gap:10px; }
    .chart-box { height:280px; }
    .chart-box-lg { height:360px; }
    .report-detail-grid { grid-template-columns:1fr; gap:0; }
    .overview-header { gap:12px; }
    .overview-tags { width:100%; }
    
    /* 历史列表 */
    .history-item { padding:12px; }
    
    /* 表格改为卡片式（admin-table特别处理） */
    .admin-table-wrapper { overflow-x:auto; -webkit-overflow-scrolling:touch; }
    .admin-table { min-width:500px; }
    
    /* Dashboard候选人卡片 */
    .ds-item { padding:10px; }
    .ds-label { font-size:11px; }
    .candidate-card { padding:12px; }
}

/* 极小屏 (iPhone SE) */
@media(max-width:375px) {
    .nav-tab { padding:8px 10px; }
    .btn-primary, .btn-outline { padding:10px 14px; font-size:13px; }
    .info-grid { gap:6px; }
}

/* iPhone 安全区域适配（刘海/Home Indicator） */
@supports(padding:max(0px)) {
    .app-header-inner { padding-top:max(12px, env(safe-area-inset-top)); }
    .nav-buttons { padding-bottom:max(20px, env(safe-area-inset-bottom)); }
    .test-header-inner { padding-top:max(12px, env(safe-area-inset-top)); }
    .auth-container { padding-top:max(20px, env(safe-area-inset-top)); padding-bottom:max(20px, env(safe-area-inset-bottom)); }
}

/* 触控设备优化：移除hover效果避免粘滞 */
@media(hover:none) {
    .opt-btn:hover { border-color:var(--border); background:#fff; }
    .opt-btn.selected:hover { border-color:var(--primary); background:var(--primary); }
    .nav-tab:hover { color:var(--text-sec); }
    .nav-tab.active:hover { color:var(--primary); }
}

/* ==================== 信效度分析样式 ==================== */
.reliability-desc { color:var(--text-sec); font-size:13px; margin:8px 0 16px; line-height:1.6; }
.reliability-actions { display:flex; gap:12px; flex-wrap:wrap; margin-bottom:20px; }
.reliability-actions .btn-secondary,
.optimizer-actions .btn-secondary {
    display:inline-flex; align-items:center; gap:6px;
    padding:8px 16px; border:1px solid var(--border-strong); border-radius:6px;
    background:#fff; color:var(--text); font-size:13px; text-decoration:none;
    cursor:pointer; transition:all 0.2s; font-family:inherit;
}
.reliability-actions .btn-secondary:hover,
.optimizer-actions .btn-secondary:hover { background:var(--bg-subtle); border-color:var(--text-sec); }
.reliability-warning {
    padding:16px; background:#FEF3C7; border:1px solid #FCD34D;
    border-radius:8px; color:#92400E; margin:12px 0;
}
.reliability-overview {
    display:grid; grid-template-columns:repeat(auto-fit, minmax(180px, 1fr));
    gap:12px; margin:16px 0 24px;
}
.reliability-card {
    background:#fff; border:1px solid var(--border); border-radius:8px;
    padding:16px; text-align:center;
}
.reliability-card-title { font-size:12px; color:var(--text-sec); margin-bottom:6px; }
.reliability-card-value { font-size:28px; font-weight:700; color:var(--text); }
.reliability-card-value.good { color:#16A34A; }
.reliability-card-value.warn { color:#D97706; }
.reliability-card-value.bad { color:#DC2626; }
.reliability-card-sub { font-size:11px; color:var(--text-muted); margin-top:4px; }

.reliability-recommendations {
    background:#F0F9FF; border:1px solid #BAE6FD; border-radius:8px;
    padding:16px 20px; margin:16px 0;
}
.reliability-recommendations h4 { font-size:14px; margin-bottom:10px; color:#075985; }
.reliability-recommendations ul { padding-left:20px; }
.reliability-recommendations li { font-size:13px; color:#0C4A6E; line-height:1.7; }

.reliability-dim-table, .reliability-discriminant { margin:20px 0; }
.reliability-dim-table h4, .reliability-discriminant h4 {
    font-size:14px; margin-bottom:10px; color:var(--text);
}
.reliability-dim-table td.good, .reliability-discriminant td.good { color:#16A34A; font-weight:600; }
.reliability-dim-table td.warn, .reliability-discriminant td.warn { color:#D97706; font-weight:600; background:#FEF3C7; }
.reliability-dim-table td.bad, .reliability-discriminant td.bad { color:#DC2626; font-weight:600; background:#FEE2E2; }
.reliability-dim-table .good { color:#16A34A; }

/* 热力图相关矩阵 */
.matrix-scroll-wrapper {
    overflow-x:auto; overflow-y:visible;
    border:1px solid var(--border); border-radius:8px;
    margin:12px 0; max-width:100%;
}
.heatmap-table {
    border-collapse:collapse; white-space:nowrap; width:max-content; min-width:100%;
}
.heatmap-table th, .heatmap-table td {
    text-align:center; padding:6px 8px; font-size:11px;
    font-variant-numeric:tabular-nums; border:1px solid #E5E7EB;
    min-width:44px;
}
.heatmap-table thead th {
    background:#F9FAFB; position:sticky; top:0; z-index:2;
    height:80px; vertical-align:bottom; padding-bottom:8px;
}
.heatmap-table thead th .rotated-header {
    writing-mode:vertical-lr;
    font-size:11px; font-weight:500; color:var(--text-sec);
    max-height:70px; overflow:hidden; text-overflow:ellipsis;
}
.heatmap-table .sticky-col {
    position:sticky; left:0; z-index:3;
    background:#F9FAFB; font-weight:500; text-align:left;
    padding:6px 10px; font-size:11px; color:var(--text);
    border-right:2px solid #D1D5DB; min-width:70px; max-width:90px;
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.heatmap-table tbody tr:hover .sticky-col { background:#EFF6FF; }
.heatmap-table tbody tr:hover td { opacity:0.9; }
.heatmap-table td {
    cursor:default; transition:opacity 0.15s;
    font-weight:500; color:#374151;
}
.heatmap-table .diag-cell {
    background:#F3F4F6 !important; color:#9CA3AF; font-weight:400;
}

/* 色阶图例 */
.heatmap-legend {
    display:flex; align-items:center; gap:8px; margin:10px 0 4px;
    font-size:11px; color:var(--text-sec);
}
.heatmap-legend .legend-bar {
    width:120px; height:12px; border-radius:3px;
    background:linear-gradient(to right, hsl(120,30%,92%), hsl(120,50%,85%), hsl(30,60%,80%), hsl(0,80%,75%));
    border:1px solid #D1D5DB;
}
.heatmap-legend .legend-label { font-weight:500; }
.heatmap-legend .legend-note { color:#DC2626; font-weight:500; margin-left:8px; }

.warn-text { color:#D97706; font-size:13px; margin:8px 0; }
.good-text { color:#16A34A; font-size:13px; margin:8px 0; }

/* ==================== 自动优化引擎样式 ==================== */
.optimizer-status-grid {
    display:grid; grid-template-columns:repeat(auto-fit, minmax(180px, 1fr));
    gap:12px; margin:16px 0;
}
.optimizer-stat-card {
    background:#fff; border:1px solid var(--border); border-radius:8px;
    padding:14px 16px; position:relative;
}
.optimizer-stat-card.active { border-left:3px solid #16A34A; }
.optimizer-stat-card.inactive { border-left:3px solid #DC2626; opacity:0.85; }
.optimizer-stat-card .stat-label {
    font-size:12px; color:var(--text-sec); margin-bottom:6px; font-weight:500;
}
.optimizer-stat-card .stat-value {
    font-size:20px; font-weight:600; color:var(--text); line-height:1.3;
}
.optimizer-stat-card .stat-value-sm {
    font-size:13px; color:var(--text); font-weight:500; line-height:1.4;
}
.optimizer-stat-card .stat-value .unit {
    font-size:13px; font-weight:400; color:var(--text-sec); margin-left:2px;
}
.optimizer-stat-card .stat-sub {
    font-size:11px; color:var(--text-muted); margin-top:4px;
}
.optimizer-stat-card .btn-link {
    position:absolute; top:12px; right:14px;
    background:none; border:none; color:#3B82F6; cursor:pointer;
    font-size:12px; padding:2px 6px; border-radius:4px;
}
.optimizer-stat-card .btn-link:hover { background:#EFF6FF; }
.optimizer-stat-card .btn-link.btn-danger { color:#DC2626; }
.optimizer-stat-card .btn-link.btn-danger:hover { background:#FEE2E2; }

.optimizer-actions {
    display:flex; gap:12px; margin:20px 0; flex-wrap:wrap;
}

.optimizer-result-ok {
    padding:12px 16px; background:#ECFDF5; border:1px solid #6EE7B7;
    border-radius:8px; color:#065F46; margin:12px 0; font-size:13px;
}

.optimizer-result-details, #optimizerHistory {
    margin-top:16px;
}
.optimizer-result-details table, #optimizerHistory table {
    font-size:12px;
}
.optimizer-result-details .text-old, #optimizerHistory .text-old {
    color:#9CA3AF; text-decoration:line-through;
    max-width:240px; word-wrap:break-word; font-size:12px;
}
.optimizer-result-details .text-new, #optimizerHistory .text-new {
    color:#065F46; font-weight:500;
    max-width:240px; word-wrap:break-word; font-size:12px;
}
.optimizer-result-details .reason-cell, #optimizerHistory .reason-cell {
    color:#92400E; font-size:11px; max-width:160px; word-wrap:break-word;
}

.row-reverted { opacity:0.55; background:#F9FAFB; }
.row-reverted .text-new { text-decoration:line-through; }

.badge {
    display:inline-block; padding:2px 8px; border-radius:10px;
    font-size:11px; font-weight:500; line-height:1.5;
}
.badge-blue { background:#DBEAFE; color:#1E40AF; }
.badge-purple { background:#EDE9FE; color:#5B21B6; }
.badge-gray { background:#F3F4F6; color:#374151; }
.badge-orange { background:#FED7AA; color:#9A3412; }

.status-applied { color:#16A34A; font-weight:500; }
.status-reverted { color:#9CA3AF; }
.status-pending { color:#D97706; }

.btn-link.btn-danger {
    color:#DC2626; background:none; border:none; cursor:pointer;
    font-size:12px; padding:2px 6px; border-radius:4px;
}
.btn-link.btn-danger:hover { background:#FEE2E2; }

.muted-text { color:var(--text-muted); font-size:13px; padding:16px 0; }

/* ==================== Lucide 图标样式 ==================== */
.lucide-icon {
    display:inline-block; vertical-align:middle;
    stroke:currentColor; fill:none;
}
.inline-icon {
    display:inline-block; width:16px; height:16px;
    vertical-align:-3px; margin-right:4px;
    stroke:currentColor; fill:none; stroke-width:2;
}
h3 .inline-icon, h4 .inline-icon {
    color:var(--primary);
}
