/* ============================================================
   RF-Membership — 会员模块样式（member.css）
   来源：member_demo_*.html 验收版提炼（2026-07-31 CEO 验收通过）
   说明：nav-account 左栏入口样式在主站 layout.css（导航组件属主站）
        本文件只含会员页面级样式（认证卡片 / 我的页面）
   ============================================================ */

/* ===== 认证页（auth.html） ===== */
.auth-wrap {
    max-width: 420px;
    margin: 0 auto;
    padding: 48px 24px;
}
.auth-header { text-align: center; margin-bottom: 28px; }
.auth-header .auth-eyebrow {
    font-size: 11px; font-weight: 700; text-transform: uppercase;
    letter-spacing: 0.12em; color: var(--accent); margin-bottom: 8px;
}
.auth-header h1 { font-size: 24px; font-weight: 800; color: var(--text-primary); margin: 0 0 6px; }
.auth-header p { font-size: 13px; color: var(--text-muted); margin: 0; }

.auth-card {
    background: var(--bg-card);
    border: 1px solid var(--border-card);
    border-radius: 14px;
    padding: 24px;
}
.auth-tabs { display: flex; gap: 4px; margin-bottom: 22px; background: rgba(255,255,255,0.03); border-radius: 10px; padding: 4px; }
.auth-tab {
    flex: 1; text-align: center; padding: 8px 0;
    border-radius: 8px; font-size: 14px; font-weight: 600;
    color: var(--text-muted); cursor: pointer; transition: all 0.12s;
}
.auth-tab.active { background: rgba(0,212,255,0.1); color: var(--accent); }

.field { margin-bottom: 14px; }
.field label { display: block; font-size: 12px; font-weight: 600; color: var(--text-secondary); margin-bottom: 6px; }
.field input {
    width: 100%; box-sizing: border-box;
    background: var(--bg-primary); border: 1px solid var(--border-subtle);
    border-radius: 10px; padding: 10px 12px;
    color: var(--text-primary); font-size: 14px; font-family: inherit;
    outline: none; transition: border 0.12s;
}
.field input:focus { border-color: var(--accent); }
.field input::placeholder { color: var(--text-muted); }

/* 验证码行：输入 + 发码按钮 */
.otp-row { display: flex; gap: 8px; }
.otp-row input { flex: 1; }
.otp-btn {
    flex-shrink: 0; padding: 0 14px;
    background: rgba(0,212,255,0.08); color: var(--accent);
    border: 1px solid rgba(0,212,255,0.3); border-radius: 10px;
    font-size: 13px; font-weight: 600; cursor: pointer; transition: all 0.12s;
    white-space: nowrap;
}
.otp-btn:hover { background: rgba(0,212,255,0.15); }
.otp-btn:disabled { opacity: 0.4; cursor: not-allowed; }

.auth-submit {
    width: 100%; margin-top: 6px;
    background: var(--accent); color: #04121a;
    border: none; border-radius: 10px; padding: 11px 0;
    font-size: 15px; font-weight: 700; cursor: pointer; transition: all 0.12s;
}
.auth-submit:hover { filter: brightness(1.1); }

.auth-divider {
    display: flex; align-items: center; gap: 12px;
    color: var(--text-muted); font-size: 11px; margin: 20px 0;
}
.auth-divider::before, .auth-divider::after { content: ''; flex: 1; height: 1px; background: var(--border-subtle); }

/* Google 按钮 */
.google-btn {
    width: 100%; display: flex; align-items: center; justify-content: center; gap: 10px;
    background: #ffffff; color: #1f1f1f;
    border: none; border-radius: 10px; padding: 10px 0;
    font-size: 14px; font-weight: 600; cursor: pointer; transition: all 0.12s;
}
.google-btn:hover { box-shadow: 0 0 0 2px rgba(255,255,255,0.2); }
.google-btn svg { width: 18px; height: 18px; }

.auth-foot { text-align: center; margin-top: 18px; font-size: 12px; color: var(--text-muted); }
.auth-foot a { color: var(--accent); text-decoration: none; }
.auth-foot a:hover { text-decoration: underline; }
/* 🔴 Turnstile 人机验证（安全策略④，2026-08-15）：注册框外居中 + 与上方内容留间距（CEO 视觉要求） */
.auth-card .cf-turnstile { margin: 22px auto 0; display: table; }

.auth-hint {
    margin-top: 14px; padding: 10px 12px;
    background: rgba(0,212,255,0.05); border: 1px solid rgba(0,212,255,0.15);
    border-radius: 8px; font-size: 12px; color: var(--text-secondary);
    display: none;
}
.auth-hint.show { display: block; }

/* ===== 我的页面（account.html） ===== */
.acct-wrap { max-width: 680px; margin: 0 auto; padding: 32px 24px; }
.acct-header { margin-bottom: 22px; }
.acct-header .acct-eyebrow {
    font-size: 11px; font-weight: 700; text-transform: uppercase;
    letter-spacing: 0.12em; color: var(--accent); margin-bottom: 6px;
}
.acct-header h1 { font-size: 22px; font-weight: 800; color: var(--text-primary); margin: 0; }

.acct-card {
    background: var(--bg-card);
    border: 1px solid var(--border-card);
    border-radius: 14px;
    padding: 20px;
    margin-bottom: 16px;
}
.acct-card-title {
    font-size: 13px; font-weight: 700; color: var(--text-secondary);
    margin-bottom: 14px; display: flex; align-items: center; gap: 8px;
}
.acct-card-title .dot { width: 6px; height: 6px; border-radius: 50%; background: var(--accent); }

/* 概览卡 */
.overview-row { display: flex; align-items: center; gap: 14px; }
.avatar {
    width: 44px; height: 44px; border-radius: 50%;
    background: rgba(0,212,255,0.12); border: 1px solid rgba(0,212,255,0.3);
    display: flex; align-items: center; justify-content: center;
    font-size: 17px; flex-shrink: 0;
}
.overview-info { flex: 1; min-width: 0; }
.overview-email { font-size: 15px; font-weight: 700; color: var(--text-primary); overflow: hidden; text-overflow: ellipsis; }
.overview-meta { font-size: 12px; color: var(--text-muted); margin-top: 3px; }

/* 徽章 */
.badge {
    display: inline-flex; align-items: center; gap: 5px;
    font-size: 11px; font-weight: 700; padding: 4px 10px;
    border-radius: 999px; white-space: nowrap;
}
.badge-member { color: var(--accent); background: rgba(0,212,255,0.1); border: 1px solid rgba(0,212,255,0.3); }
.badge-free { color: var(--text-muted); background: rgba(255,255,255,0.04); border: 1px solid var(--border-subtle); }
.badge-premium { color: #ffd166; background: rgba(255,209,102,0.1); border: 1px solid rgba(255,209,102,0.3); }
/* GM 管理员徽章（2026-08-15：role=admin 专属，紫色系区别于 member 蓝/premium 金） */
.badge-gm { color: #c084fc; background: rgba(192,132,252,0.1); border: 1px solid rgba(192,132,252,0.35); }

/* 语言设定（2026-08-15：公共切换按钮撤除 → 设置页 chip 点选） */
.lang-pref { display: flex; gap: 8px; }
.lang-chip {
    padding: 6px 16px; border-radius: 999px; cursor: pointer;
    font-size: 13px; font-weight: 600;
    color: var(--text-muted); background: transparent;
    border: 1px solid var(--border-subtle);
    transition: all .15s ease;
}
.lang-chip:hover { color: var(--accent); border-color: rgba(0,212,255,0.4); }
.lang-chip.active { color: var(--accent); background: rgba(0,212,255,0.1); border-color: rgba(0,212,255,0.4); }

/* Tab 切换 */
.acct-tabs { display: flex; gap: 4px; margin-bottom: 16px; background: rgba(255,255,255,0.03); border-radius: 10px; padding: 4px; }
.acct-tab {
    flex: 1; text-align: center; padding: 8px 0;
    border-radius: 8px; font-size: 13px; font-weight: 600;
    color: var(--text-muted); cursor: pointer; transition: all 0.12s;
}
.acct-tab.active { background: rgba(0,212,255,0.1); color: var(--accent); }

/* 收藏列表 */
.save-item {
    display: flex; align-items: center; gap: 12px;
    padding: 12px 0; border-bottom: 1px solid var(--border-subtle);
}
.save-item:last-child { border-bottom: none; }
.save-thumb {
    width: 56px; height: 40px; border-radius: 8px; flex-shrink: 0;
    background: linear-gradient(135deg, #0f2a3a, #0a0e17);
    border: 1px solid var(--border-subtle);
    display: flex; align-items: center; justify-content: center; font-size: 16px;
}
.save-info { flex: 1; min-width: 0; }
.save-title { font-size: 14px; font-weight: 600; color: var(--text-primary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.save-meta { font-size: 12px; color: var(--text-muted); margin-top: 3px; }

/* 收藏空状态 */
.save-empty {
    padding: 28px 16px; text-align: center;
    font-size: 13px; color: var(--text-muted);
    display: flex; flex-direction: column; align-items: center; gap: 10px;
}
.save-empty .save-empty-icon { font-size: 30px; opacity: 0.5; }
.save-empty a { color: var(--accent); text-decoration: none; }
.save-empty a:hover { text-decoration: underline; }

/* 会员信息：账户信息行 */
.info-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0; }
.info-item { padding: 12px 0; border-bottom: 1px solid var(--border-subtle); }
.info-item:nth-child(odd) { padding-right: 16px; }
.info-item:nth-child(even) { padding-left: 16px; border-left: 1px solid var(--border-subtle); }
.info-item:nth-last-child(-n+2) { border-bottom: none; }
.info-label { font-size: 11px; color: var(--text-muted); margin-bottom: 4px; }
.info-value { font-size: 13px; font-weight: 600; color: var(--text-primary); }

/* 会员信息：权益列表 */
.perks { display: flex; flex-direction: column; gap: 8px; }
.perk { display: flex; align-items: center; gap: 10px; font-size: 13px; color: var(--text-secondary); }
.perk .perk-icon { color: var(--accent); font-size: 14px; width: 18px; text-align: center; flex-shrink: 0; }

/* 订阅卡（未来付费占位设计） */
.sub-plan-row {
    display: flex; align-items: center; justify-content: space-between;
    padding: 14px 16px; border-radius: 12px;
    background: linear-gradient(135deg, rgba(255,209,102,0.06), rgba(0,212,255,0.04));
    border: 1px solid rgba(255,209,102,0.25);
    margin-bottom: 14px;
}
.sub-plan-left { display: flex; align-items: center; gap: 12px; }
.sub-plan-name { font-size: 15px; font-weight: 800; color: var(--text-primary); }
.sub-plan-price { font-size: 12px; color: var(--text-muted); margin-top: 2px; }
.sub-plan-status {
    font-size: 11px; font-weight: 700; padding: 4px 10px; border-radius: 999px;
    color: #ffd166; background: rgba(255,209,102,0.1); border: 1px solid rgba(255,209,102,0.3);
}
.sub-date-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 10px; margin-bottom: 14px; }
.sub-date-item {
    background: var(--bg-primary); border: 1px solid var(--border-subtle);
    border-radius: 10px; padding: 12px;
}
.sub-date-label { font-size: 11px; color: var(--text-muted); margin-bottom: 4px; }
.sub-date-value { font-size: 13px; font-weight: 700; color: var(--text-primary); }
.sub-date-value.warn { color: #ffd166; }
.sub-actions { display: flex; gap: 8px; }
.sub-btn {
    font-size: 12px; font-weight: 600; padding: 8px 14px; border-radius: 8px;
    cursor: pointer; transition: all 0.12s; text-decoration: none; display: inline-block;
}
.sub-btn-primary { color: #04121a; background: var(--accent); border: none; }
.sub-btn-primary:hover { filter: brightness(1.1); }
.sub-btn-ghost { color: var(--text-secondary); border: 1px solid var(--border-subtle); background: none; }
.sub-btn-ghost:hover { color: var(--text-primary); border-color: var(--text-muted); }

/* 未订阅提示 */
.sub-empty {
    padding: 16px; border-radius: 10px;
    border: 1px dashed var(--border-subtle);
    font-size: 13px; color: var(--text-muted);
    display: flex; align-items: center; gap: 10px;
}

/* 设置 */
.setting-row { display: flex; align-items: center; padding: 12px 0; border-bottom: 1px solid var(--border-subtle); }
.setting-row:last-child { border-bottom: none; }
.setting-label { flex: 1; }
.setting-label .s-name { font-size: 13px; font-weight: 600; color: var(--text-primary); }
.setting-label .s-desc { font-size: 12px; color: var(--text-muted); margin-top: 2px; }
.toggle {
    width: 38px; height: 22px; border-radius: 999px;
    background: var(--border-subtle); position: relative; cursor: pointer; transition: all 0.15s; flex-shrink: 0;
}
.toggle::after {
    content: ''; position: absolute; top: 3px; left: 3px;
    width: 16px; height: 16px; border-radius: 50%; background: var(--text-muted);
    transition: all 0.15s;
}
.toggle.on { background: rgba(0,212,255,0.4); }
.toggle.on::after { left: 19px; background: var(--accent); }

/* 会话（设备管理）—— 并入设置 */
.sess-item {
    display: flex; align-items: center; gap: 12px;
    padding: 12px 0; border-bottom: 1px solid var(--border-subtle);
}
.sess-item:last-child { border-bottom: none; }
.sess-icon { font-size: 20px; width: 32px; text-align: center; flex-shrink: 0; }
.sess-info { flex: 1; min-width: 0; }
.sess-name { font-size: 13px; font-weight: 600; color: var(--text-primary); }
.sess-detail { font-size: 12px; color: var(--text-muted); margin-top: 2px; }
.sess-current { font-size: 11px; color: var(--accent); border: 1px solid rgba(0,212,255,0.3); border-radius: 6px; padding: 2px 6px; margin-left: 6px; }
.sess-revoke {
    font-size: 12px; color: var(--text-muted); text-decoration: none;
    border: 1px solid var(--border-subtle); border-radius: 8px; padding: 5px 10px;
    cursor: pointer; background: none;
}
.sess-revoke:hover { color: #ff4d6d; border-color: rgba(255,77,109,0.4); }

/* 退出登录（独立简洁按钮） */
.logout-wrap { text-align: center; padding: 8px 0 24px; }
.logout-btn {
    font-size: 13px; font-weight: 600; padding: 10px 28px; border-radius: 10px;
    color: var(--text-secondary); background: none;
    border: 1px solid var(--border-subtle); cursor: pointer; transition: all 0.12s;
}
.logout-btn:hover { color: var(--text-primary); border-color: var(--text-muted); background: rgba(255,255,255,0.03); }

/* 未来功能占位提示 */
.future-note {
    margin-top: 12px; font-size: 11px; color: var(--text-muted);
    display: flex; align-items: center; gap: 6px;
}
.future-note::before { content: '⏳'; }

/* ===== 移动端适配（<640px） ===== */
@media (max-width: 640px) {
    .acct-wrap { padding: 20px 14px; }
    .info-grid { grid-template-columns: 1fr; }
    .info-item:nth-child(even) { padding-left: 0; border-left: none; }
    .info-item:nth-child(odd) { padding-right: 0; }
    .info-item:nth-last-child(-n+2) { border-bottom: 1px solid var(--border-subtle); }
    .info-item:last-child { border-bottom: none; }
    .sub-date-grid { grid-template-columns: 1fr; }
    .overview-row { flex-wrap: wrap; }
    .overview-info { flex: 1 1 100%; order: 3; margin-top: 4px; }
    .acct-tabs { overflow-x: auto; }
    .acct-tab { flex: 0 0 33.33%; }
    .save-title { white-space: normal; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
}

/* ===== M1 认证核心补充 ===== */

/* 统一消息条 */
.auth-msg {
    margin: 0 0 14px; padding: 10px 14px; border-radius: 8px;
    font-size: 13px; line-height: 1.5;
}
.auth-msg.err { background: rgba(239,68,68,0.10); color: #f87171; border: 1px solid rgba(239,68,68,0.25); }
.auth-msg.ok { background: rgba(34,197,94,0.10); color: #4ade80; border: 1px solid rgba(34,197,94,0.25); }

/* 验证码按钮 */
.otp-btn {
    flex-shrink: 0; font-size: 12px; font-weight: 600;
    padding: 9px 14px; border-radius: 8px;
    color: var(--accent); background: rgba(0,212,255,0.08);
    border: 1px solid rgba(0,212,255,0.3); cursor: pointer; transition: all 0.12s;
}
.otp-btn:hover:not(:disabled) { background: rgba(0,212,255,0.15); }
.otp-btn:disabled { opacity: 0.5; cursor: not-allowed; }

/* 文章页收藏按钮 */
.art-save-btn {
    display: inline-flex; align-items: center; gap: 6px;
    margin-top: 10px; padding: 6px 14px; border-radius: 999px;
    font-size: 13px; font-weight: 600; cursor: pointer;
    color: var(--text-secondary); background: none;
    border: 1px solid var(--border-subtle); transition: all 0.12s;
}
.art-save-btn:hover { color: var(--accent); border-color: rgba(0,212,255,0.35); }
.art-save-btn.saved { color: #f472b6; border-color: rgba(244,114,182,0.4); background: rgba(244,114,182,0.08); }
.art-save-heart { font-size: 15px; line-height: 1; }

/* 预览墙（游客 30% 预览） */
.art-body-preview { position: relative; }
.paywall-wrap { position: relative; margin-top: -80px; }
.paywall-fade {
    height: 200px;
    /* 浅透渐变：不能太实——背后正文要透过玻璃可见（CEO 2026-08-15） */
    background: linear-gradient(to bottom, rgba(17,19,24,0), rgba(17,19,24,0.18) 100%);
    pointer-events: none;
}
.paywall-box {
    position: relative; z-index: 2; margin-top: -120px;
    display: flex; flex-direction: column; align-items: center; text-align: center;
    padding: 30px 34px 38px; gap: 10px;
    /* 🔴 毛玻璃 v2（CEO 2026-08-15）：深色半透明底 + 高 blur——背后正文成朦胧色块，可见但不可读 */
    background: rgba(13, 17, 24, 0.38);
    backdrop-filter: blur(32px) saturate(1.2);
    -webkit-backdrop-filter: blur(32px) saturate(1.2);
    border: 1px solid rgba(255,255,255,0.12);
    border-radius: 16px;
    max-width: 460px;
    margin-left: auto;
    margin-right: auto;
    box-shadow: 0 10px 44px rgba(0,0,0,0.5);
}
[data-theme="light"] .paywall-box {
    background: rgba(255,255,255,0.35);
    border: 1px solid rgba(15,23,42,0.1);
    box-shadow: 0 10px 40px rgba(15,23,42,0.12);
}
.paywall-icon { font-size: 30px; }
.paywall-title { font-size: 20px; font-weight: 700; color: var(--text-primary); }
.paywall-desc { font-size: 13px; color: var(--text-secondary); max-width: 420px; line-height: 1.6; }
.paywall-btn {
    margin-top: 6px; padding: 11px 32px; border-radius: 10px;
    font-size: 14px; font-weight: 700; text-decoration: none;
    color: #04141a; background: var(--accent); transition: all 0.12s;
}
.paywall-btn:hover { filter: brightness(1.1); }

/* 空状态 */
.empty-state {
    padding: 28px 16px; text-align: center; font-size: 13px;
    color: var(--text-muted); line-height: 1.6;
}

/* 收藏缩略图带图 */
.save-thumb img { display: block; }

/* 移动端抽屉账号入口 */
.mob-drawer-account {
    display: flex; align-items: center; gap: 10px;
    padding: 10px 0 14px; margin-bottom: 8px;
    border-bottom: 1px solid var(--border-subtle);
    text-decoration: none; color: var(--text-primary);
}
.mob-drawer-avatar {
    width: 36px; height: 36px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-size: 17px; background: rgba(255,255,255,0.06);
    border: 1px solid var(--border-subtle); flex-shrink: 0;
}
.mob-drawer-account-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.mob-drawer-account-name { font-size: 13px; font-weight: 700; }
.mob-drawer-account-sub { font-size: 11px; color: var(--text-muted); }

/* 注册成功提示页 */
.success-box {
    display: flex; flex-direction: column; align-items: center; text-align: center;
    padding: 18px 8px 10px; gap: 8px;
}
.success-icon {
    width: 56px; height: 56px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-size: 28px; font-weight: 700; color: #04141a;
    background: var(--accent); margin-bottom: 6px;
}
.success-title { font-size: 17px; font-weight: 700; color: var(--text-primary); }
.success-desc { font-size: 13px; color: var(--text-secondary); line-height: 1.6; max-width: 380px; }
.success-actions { display: flex; align-items: center; gap: 18px; margin-top: 12px; }
.success-actions .paywall-btn { margin-top: 0; text-decoration: none; }
.success-secondary { font-size: 13px; color: var(--text-muted); text-decoration: none; }
.success-secondary:hover { color: var(--text-secondary); }

/* ===== 公告栏 + 工单系统（2026-08-16 CEO 方案定稿；复用优先，主站没有的最小新设计） ===== */
/* 右栏公告模块：容器复用 .trends-box；固定高度滚动容器 = 新设计③ */
.ann-scroll { max-height: 180px; overflow-y: auto; padding-right: 4px; }
.ann-title { font-size: 14px; font-weight: 700; color: var(--text-primary); margin-bottom: 4px; line-height: 1.4; }
.ann-date { font-size: 11px; color: var(--text-muted); margin-bottom: 8px; }
.ann-body { font-size: 12.5px; color: var(--text-secondary); line-height: 1.65; white-space: pre-wrap; }

/* 右栏两个模块间距 */
.rp-header-gap { margin-top: 18px; }

/* 新建工单按钮（auth 表单按钮同款色系；🔴 2026-08-16 CEO 纠正：此按钮保持原样，改的是中栏提交按钮） */
.ticket-new-btn {
    width: 100%; box-sizing: border-box; margin-bottom: 8px;
    padding: 9px 0; border-radius: 10px;
    background: rgba(0,212,255,0.08); color: var(--accent);
    border: 1px solid rgba(0,212,255,0.3);
    font-size: 13px; font-weight: 600; cursor: pointer; transition: all 0.12s;
}
.ticket-new-btn:hover { background: rgba(0,212,255,0.15); }

/* 工单未读 badge（iOS 风格红点气泡；2026-08-16 CEO 反馈：回复提示要清晰） */
.tkt-badge {
    display: inline-block; min-width: 16px; height: 16px; line-height: 16px;
    padding: 0 4px; border-radius: 8px; margin-left: 6px;
    background: #ff3b30; color: #fff;
    font-size: 10px; font-weight: 700; text-align: center; vertical-align: 1px;
}

/* 工单行：状态徽章（纯文字）+ 标题 + 元信息（2026-08-16 CEO 两轮确认：
   徽章固定宽度 → 各行标题左缘对齐（此前徽章宽度不一造成错落，CEO 反馈「乱排/散/不整齐」根因）） */
.ticket-row {
    position: relative;
    display: flex; align-items: center; gap: 10px;
    padding: 10px 4px 10px 10px; border-bottom: 1px solid var(--border-subtle);
    cursor: pointer; border-radius: 6px;
}
.ticket-row:hover { background: rgba(0,212,255,0.04); }
.ticket-row:last-of-type { border-bottom: none; }
.ticket-row.unread { background: rgba(0,212,255,0.05); }
.ticket-row.unread::before { content: ''; position: absolute; left: 0; top: 6px; bottom: 6px; width: 3px; border-radius: 2px; background: var(--accent); }
/* 状态徽章：🔴 固定 width + 居中 → 标题左缘逐行一致 */
.tkt-status-badge {
    display: inline-flex; align-items: center; justify-content: center;
    width: 66px; flex-shrink: 0;
    font-size: 11px; font-weight: 600; padding: 2px 0; border-radius: 4px;
    white-space: nowrap;
}
.tkt-status-badge.st-open { background: rgba(255,209,102,0.12); color: #ffd166; }
.tkt-status-badge.st-replied { background: rgba(0,212,255,0.12); color: #22d3ee; }
.tkt-status-badge.st-resolved { background: rgba(74,222,128,0.12); color: #4ade80; }
/* 标题单行省略——🔴 必须重置主站 layout.css .tln-title 的 line-clamp 组件样式
   （display:-webkit-box + min/max-height:33.6px 会把单行标题强制撑成两行高，行高 74px 元凶，2026-08-16 实测） */
.ticket-row .tln-title {
    font-size: 13px; line-height: 1.4; color: var(--text-primary);
    display: block; min-height: 0; max-height: none;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.ticket-row.unread .tln-title { font-weight: 700; }
.tkt-meta { font-size: 11px; color: var(--text-muted); margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* 查看全部（中栏完整列表兜底，CEO 方案 A） */
.tkt-all {
    padding: 9px 0 3px; text-align: center;
    font-size: 12px; color: var(--accent); cursor: pointer;
}
.tkt-all:hover { text-decoration: underline; }

/* 中栏工单视图头 */
.tkt-view-head { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }
.tkt-back {
    font-size: 12px; color: var(--text-secondary);
    border: 1px solid var(--border-subtle); border-radius: 8px; padding: 5px 10px;
    cursor: pointer; background: none;
}
.tkt-back:hover { color: var(--accent); border-color: rgba(0,212,255,0.35); }
.tkt-view-title { font-size: 14px; font-weight: 700; color: var(--text-primary); }

.tkt-detail-status { font-size: 12px; font-weight: 700; margin-bottom: 4px; }
.tkt-detail-subject { font-size: 15px; font-weight: 700; color: var(--text-primary); margin-bottom: 12px; }

/* 消息时间线（新设计①：上下排列，角色标签 + 时间，非左右气泡——CEO 2026-08-16 定稿） */
.msg-item { padding: 10px 0; border-bottom: 1px solid var(--border-subtle); }
.msg-item:last-of-type { border-bottom: none; }
.msg-head { display: flex; align-items: center; gap: 8px; margin-bottom: 4px; }
.msg-role { font-size: 12px; font-weight: 700; }
.msg-role.user { color: var(--accent); }
.msg-role.admin { color: #c084fc; }
.msg-time { font-size: 11px; color: var(--text-muted); }
.msg-body { font-size: 13px; color: var(--text-primary); line-height: 1.65; white-space: pre-wrap; word-break: break-word; }

/* 回复 / 新建输入（auth 表单输入同款） */
.tkt-reply { margin-top: 12px; }
.tkt-input {
    width: 100%; box-sizing: border-box; resize: vertical; min-height: 68px;
    background: var(--bg-primary); border: 1px solid var(--border-subtle);
    border-radius: 10px; padding: 10px 12px;
    color: var(--text-primary); font-size: 14px; font-family: inherit;
    outline: none; transition: border 0.12s;
}
.tkt-input:focus { border-color: var(--accent); }
.tkt-input::placeholder { color: var(--text-muted); }
/* 提交工单按钮（🔴 2026-08-16 CEO 反馈：高度返回原样(9px)、宽度缩小三倍(全宽1/3)、按钮居中——flex column 默认 stretch 导致全宽，用 align-self 解除） */
.tkt-submit {
    margin-top: 8px; padding: 9px 22px; border-radius: 10px;
    background: var(--accent); color: #04121a;
    border: none; font-size: 13px; font-weight: 700; cursor: pointer; transition: all 0.12s;
    width: 33.33%; align-self: center;
}
.tkt-submit:hover { filter: brightness(1.1); }
.tkt-resolved-note {
    margin-top: 12px; padding: 10px 12px; border-radius: 8px;
    background: rgba(255,255,255,0.03); border: 1px dashed var(--border-subtle);
    font-size: 12px; color: var(--text-muted); line-height: 1.5;
}

/* 移动端右栏模块落点容器 */
#mob-right-modules { margin-bottom: 16px; }
/* 🔴 桌面端 mobWrap 为空（不搬移）——:empty 消除空容器 margin（2026-08-16 返回默认视图 16px 空隙修复） */
#mob-right-modules:empty { margin-bottom: 0; }
#mob-right-modules .rp-header-gap { margin-top: 18px; }

/* ===== 工单视图：中栏撑高 + 垂直居中 + 卡片拉长（2026-08-16 CEO 反馈②） ===== */
#ticket-view {
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-height: calc(100vh - 160px);
}
#ticket-view > .acct-card {
    min-height: 460px;
    display: flex;
    flex-direction: column;
}
#ticket-view .tkt-view-head { flex-shrink: 0; }
#tkt-view-body {
    flex: 1;
    display: flex;
    flex-direction: column;
}
/* 新建工单表单：描述输入框拉长，占满卡片剩余高度 */
.tkt-new-form {
    flex: 1;
    display: flex;
    flex-direction: column;
}
.tkt-new-form .field { flex-shrink: 0; }
.tkt-new-form .tkt-input { flex: 1; min-height: 140px; }
.tkt-new-form .tkt-submit { flex-shrink: 0; }
/* 工单详情/列表态：内容区同样撑满（时间线/消息列表自然拉长） */
#tkt-view-body > .tkt-detail-status { flex-shrink: 0; }
#tkt-view-body > .tkt-detail-subject { flex-shrink: 0; }
#tkt-view-body > .msg-item { flex-shrink: 0; }
#tkt-view-body > .tkt-reply { margin-top: auto; }
/* 移动端（<640px）：高度约束放宽，防卡片超出视口 */
@media (max-width: 640px) {
    #ticket-view { min-height: auto; justify-content: flex-start; }
    #ticket-view > .acct-card { min-height: 0; }
    .tkt-new-form .tkt-input { min-height: 120px; }
}
