/* 抖抖工作台 · 网页外壳设计系统（UI/UX Pro Max 指导：light 玻璃拟态 + 品牌渐变） */
:root{
  --ink:#1c2533; --muted:#697586; --line:rgba(28,52,99,.12);
  --brand:#3b6dff; --brand2:#7c5cff; --good:#13a86b; --bad:#e5484d;
  --glass:rgba(255,255,255,.66); --glass-strong:rgba(255,255,255,.82);
  --chip:rgba(59,109,255,.08); --shadow:0 14px 34px rgba(28,52,99,.10);
  --radius:18px;
}
*{box-sizing:border-box}
html,body{transform:none !important;filter:none !important;perspective:none !important;will-change:auto !important;contain:none !important}
body{margin:0;color:var(--ink);font-family:-apple-system,"PingFang SC","Microsoft YaHei",Segoe UI,sans-serif;line-height:1.6;
  background:
    radial-gradient(900px 520px at 8% -10%, rgba(59,109,255,.16), transparent 60%),
    radial-gradient(820px 500px at 102% 0%, rgba(124,92,255,.14), transparent 55%),
    linear-gradient(180deg,#f3f6ff,#fbfcff);background-attachment:fixed;min-height:100vh}
.app{max-width:1120px;margin:0 auto;padding:0 18px 130px}
.topbar{position:relative;display:flex;align-items:center;justify-content:flex-end;gap:18px;padding:18px 4px 14px;flex-wrap:wrap}
.brand{font-weight:800;font-size:17px}
.ver-chip{display:inline-block;margin-left:10px;font-size:12px;font-weight:800;color:#fff;background:linear-gradient(120deg,#ff5a3c,#ff2d55);border:1px solid rgba(255,45,85,.4);border-radius:999px;padding:3px 11px;vertical-align:3px;cursor:pointer;user-select:none;box-shadow:0 4px 12px rgba(255,45,85,.28);transition:.2s}
.ver-chip:hover{filter:brightness(1.08);box-shadow:0 6px 18px rgba(255,45,85,.42)}
.nav{display:flex;gap:4px;margin-left:auto;padding:6px;border-radius:16px;background:var(--glass-strong);border:1px solid var(--line);box-shadow:var(--shadow)}
.nav a{position:relative;padding:9px 18px;border-radius:12px;color:var(--muted);text-decoration:none;font-size:14px;font-weight:600;transition:.2s}
.nav a:hover{background:var(--chip);color:var(--brand)}
.nav a.on{background:rgba(59,109,255,.10);color:var(--brand);font-weight:800}
.nav a.on::after{content:"";position:absolute;left:18px;right:18px;bottom:3px;height:3px;border-radius:3px;background:linear-gradient(120deg,var(--brand),var(--brand2))}
.ai-chip{font-size:12px;color:var(--muted);background:var(--glass-strong);border:1px solid var(--line);border-radius:999px;padding:6px 12px;font-weight:600}
.main{padding-top:6px}
.glass-page-card{background:var(--glass);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px 24px;margin-top:4px;backdrop-filter:blur(8px)}
.foot{margin-top:40px;text-align:center;color:var(--muted);font-size:12px}

.hero{background:linear-gradient(120deg,var(--brand),var(--brand2));color:#fff;border-radius:24px;padding:30px 32px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.hero::after{content:"";position:absolute;right:-60px;top:-60px;width:220px;height:220px;border-radius:50%;background:rgba(255,255,255,.18);filter:blur(8px)}
.hero h1{margin:0 0 8px;font-size:25px;font-weight:800}
.hero .lead{margin:0 0 8px;font-size:15px;opacity:.96}
.hero .muted{color:rgba(255,255,255,.85);font-size:13px}
code{background:rgba(255,255,255,.22);padding:1px 6px;border-radius:6px;font-size:12px}

.branch-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:18px}
.branch-card{display:block;text-decoration:none;color:var(--ink);background:var(--glass);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
  border:1px solid var(--line);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow);transition:transform .3s,box-shadow .3s}
.branch-card:hover{transform:translateY(-4px);box-shadow:0 22px 48px rgba(28,52,99,.16)}
.branch-card.alt{border-top:4px solid var(--brand2)}
.branch-card:not(.alt){border-top:4px solid var(--brand)}
.bc-header{display:flex;align-items:flex-start;gap:14px;margin-bottom:8px}
.bc-emoji{font-size:34px;line-height:1;flex-shrink:0}
.bc-title-wrap{display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-width:0;flex:1}
.branch-card h2{margin:0;font-size:19px;flex:1;min-width:0}
.branch-card p{margin:0;color:var(--muted);font-size:14px}
.bc-go{display:inline-block;margin-top:14px;color:var(--brand);font-weight:700;font-size:14px}
.bc-model{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);white-space:nowrap;
  background:rgba(99,102,241,.1);border:1px solid rgba(99,102,241,.2);padding:5px 12px;border-radius:999px;flex-shrink:0}
.bc-model b{color:var(--brand);font-weight:800}
@media(max-width:760px){
  .bc-header{flex-wrap:wrap;gap:8px}
  .bc-model{width:100%;margin-top:4px}
}

.page-head h1{font-size:23px;font-weight:800;margin:8px 0 4px}
.page-head .muted{color:var(--muted);font-size:14px;margin:0}

.card-form{background:var(--glass);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border:1px solid var(--line);
  border-radius:var(--radius);padding:24px 26px;margin-top:16px;box-shadow:var(--shadow)}
.field{display:flex;flex-direction:column;gap:7px;margin:12px 0;font-size:14px;font-weight:600}
.field textarea{width:100%;resize:vertical;min-height:220px;padding:14px;border:1px solid var(--line);border-radius:14px;background:rgba(244,247,252,.92);font-size:14px;line-height:1.65;color:var(--ink);font-family:inherit}
.field textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 4px rgba(59,109,255,.12)}
.field span b{color:var(--bad)}
.field-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
input[type=text],input[type=url],input[type=file]{padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--glass-strong);font-size:14px;width:100%}
input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--chip)}
.radio-row{display:flex;flex-direction:column;gap:8px;font-weight:500}
.radio{font-weight:500}
.btn{display:inline-block;border:none;cursor:pointer;font-weight:700;font-size:14px;border-radius:12px;padding:11px 20px;transition:.2s;text-decoration:none}
.btn.primary{background:linear-gradient(120deg,var(--brand),var(--brand2));color:#fff;box-shadow:var(--shadow)}
.btn.primary:hover{transform:translateY(-2px)}
.btn.ghost{background:var(--glass-strong);color:var(--brand);border:1px solid var(--line)}
.hint{color:var(--muted);font-size:12.5px;margin-top:10px}
.required{color:var(--bad)}
.rev-merchant-field{margin-top:0;margin-bottom:18px}

.msg{padding:11px 15px;border-radius:12px;font-size:14px;font-weight:600;margin:14px 0}
.msg.ok{background:rgba(19,168,107,.10);color:var(--good);border:1px solid rgba(19,168,107,.25)}
.msg.err{background:#fff1f0;color:var(--bad);border:1px solid #ffd6d4}

.result{margin-top:16px}
.result-bar{display:flex;align-items:center;gap:12px;font-weight:700;margin-bottom:10px}
.result-bar .btn{padding:8px 14px;font-size:13px}
.preview{width:100%;height:78vh;border:1px solid var(--line);border-radius:var(--radius);background:#fff;box-shadow:var(--shadow)}
.preview.tall{height:86vh}

.kv{display:flex;gap:12px;padding:10px 0;border-bottom:1px dashed var(--line);font-size:14px}
.kv span{color:var(--muted);min-width:96px;font-weight:600}
.kv b{font-weight:600}

/* ============================================================
   模型配置页 · 浅色专业面板
   ============================================================ */

/* 顶部当前模型卡片 */
.cfg-hero{
  display:flex;align-items:flex-start;gap:18px;
  background:var(--glass);border:1px solid var(--line);
  border-radius:var(--radius);padding:22px 24px;margin:18px 0 22px;
  box-shadow:var(--shadow);position:relative;overflow:hidden;
  backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
}
.cfg-hero-icon{
  width:54px;height:54px;border-radius:16px;
  background:linear-gradient(135deg,var(--brand),var(--brand2));
  color:#fff;display:flex;align-items:center;justify-content:center;font-size:26px;flex-shrink:0;
  box-shadow:0 8px 20px rgba(91,140,255,.25);
}
.cfg-hero-main{flex:1}
.cfg-hero-label{display:block;font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;margin-bottom:8px}
.cfg-hero-value{font-size:18px;font-weight:800;color:var(--ink)}
.cfg-hero-hint{margin:10px 0 0;font-size:13px;color:var(--muted)}

/* 配置卡片 */
.cfg-form{display:block}
.cfg-card{
  background:var(--glass);border:1px solid var(--line);
  border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;
  backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
  margin-bottom:18px;
}
.cfg-card-head{
  display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:18px 22px;
  border-bottom:1px solid var(--line);
  background:linear-gradient(180deg,rgba(255,255,255,.72),rgba(255,255,255,.52));
}
.cfg-card-title{display:flex;flex-direction:column;gap:2px;min-width:0}
.cfg-card-title h3{margin:0;font-size:17px;font-weight:800;line-height:1.35;color:var(--ink);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.cfg-card-icon{font-size:18px;line-height:1;flex-shrink:0}
.cfg-card-meta{display:block;font-size:12px;color:var(--muted)}
.cfg-status{font-size:12px;font-weight:700;color:var(--muted);background:rgba(28,52,99,.06);padding:5px 10px;border-radius:999px;white-space:nowrap;margin-top:1px;flex-shrink:0}
.cfg-status.active{color:#fff;background:linear-gradient(120deg,var(--good),#2dd47e)}
.cfg-status.active i{display:inline-block;width:6px;height:6px;border-radius:50%;background:#fff;margin-right:5px;vertical-align:middle;animation:pulse 1.6s infinite}
@keyframes pulse{0%{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.3)}100%{opacity:1;transform:scale(1)}}

.cfg-card-body{padding:22px;display:flex;flex-direction:column;gap:18px}
.cfg-grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.cfg-field{display:flex;flex-direction:column;gap:7px}
.cfg-label{font-size:12px;font-weight:700;color:var(--muted);letter-spacing:.3px}
.cfg-input{
  width:100%;padding:11px 13px;border:1px solid var(--line);border-radius:12px;
  background:rgba(244,247,252,.92);font-size:14px;color:var(--ink);
  transition:border-color .2s,box-shadow .2s,background .2s;
}
.cfg-input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--chip);background:rgba(255,255,255,.98)}
.cfg-input::placeholder{color:#9aa3b2}
.cfg-hint{font-size:12px;color:var(--muted);margin:4px 0 0;line-height:1.45}

/* 标签行：字段名 + 操作按钮 */
.cfg-label-row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.cfg-link-btn{
  border:none;background:transparent;color:var(--brand);font-size:12px;font-weight:700;cursor:pointer;padding:2px 0;
  text-decoration:underline;text-underline-offset:3px;transition:.2s;
}
.cfg-link-btn:hover{color:var(--brand2)}
.cfg-link-btn:disabled{color:var(--muted);cursor:not-allowed;text-decoration:none}

/* 渠道连通性测试 */
.cfg-test-channel-btn{border:1px solid var(--brand);background:rgba(59,109,255,.06);color:var(--brand);border-radius:8px;
  padding:6px 12px;font-size:12px;font-weight:700;cursor:pointer;transition:.2s}
.cfg-test-channel-btn:hover{background:var(--brand);color:#fff}
.cfg-test-channel-btn:disabled{opacity:.6;cursor:not-allowed}
.cfg-test-channel-result{margin-left:10px;font-size:12px;font-weight:600;color:var(--muted)}
.cfg-test-channel-result.is-ok{color:var(--good)}
.cfg-test-channel-result.is-err{color:var(--bad)}

/* 开关 */
.cfg-switch{display:inline-flex;align-items:center;gap:8px;cursor:pointer;user-select:none}
.cfg-switch input{position:absolute;opacity:0;width:0;height:0}
.cfg-switch-track{width:38px;height:22px;border-radius:999px;background:rgba(28,52,99,.16);position:relative;transition:.2s;flex-shrink:0}
.cfg-switch-thumb{position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;transition:.2s;box-shadow:0 1px 3px rgba(28,52,99,.25)}
.cfg-switch input:checked + .cfg-switch-track{background:linear-gradient(120deg,var(--brand),var(--brand2))}
.cfg-switch input:checked + .cfg-switch-track .cfg-switch-thumb{transform:translateX(16px)}
.cfg-switch-text{font-size:12px;font-weight:700;color:var(--muted)}
.cfg-switch-block{justify-content:flex-start;gap:10px;cursor:pointer;padding:2px 0;margin-top:1px;flex-shrink:0}
.cfg-switch-side{font-size:12px;color:var(--muted);font-weight:600;margin-left:auto}

/* 视觉模式子面板 */
.cfg-sub{border:1px solid var(--line);border-radius:14px;background:rgba(244,247,252,.55);padding:18px;display:flex;flex-direction:column;gap:14px}
.cfg-sub-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.cfg-sub-title{font-size:13px;font-weight:800;color:var(--ink)}
.cfg-model-foot{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.cfg-model-foot .cfg-hint{margin:0}
#visionBody.is-off{opacity:.45;pointer-events:none;filter:grayscale(.3)}

/* 密码框 + 眼睛 */
.input-wrap{position:relative;display:flex;align-items:center}
.input-wrap .cfg-input{padding-right:42px}
.eye-btn{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:32px;height:32px;border:none;border-radius:8px;background:transparent;color:var(--muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.2s}
.eye-btn:hover{background:rgba(28,52,99,.06);color:var(--ink)}
.eye-icon{display:none;width:18px;height:18px}
.eye-btn.show-visible .eye-icon.hide{display:block}
.eye-btn:not(.show-visible) .eye-icon.show{display:block}

/* 下拉 */
.select-wrap{position:relative}
.select-wrap select{appearance:none;-webkit-appearance:none;padding-right:42px;cursor:pointer}
.select-wrap svg{position:absolute;right:12px;top:50%;transform:translateY(-50%);width:18px;height:18px;color:var(--muted);pointer-events:none}

/* 高级选项折叠 */
.cfg-adv{border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.45);overflow:hidden}
.cfg-adv>summary{list-style:none;cursor:pointer;padding:10px 14px;font-size:13px;font-weight:700;color:var(--ink);display:flex;align-items:center;justify-content:space-between}
.cfg-adv>summary::-webkit-details-marker{display:none}
.cfg-adv>summary::after{content:"▾";color:var(--muted);transition:transform .2s;font-size:14px}
.cfg-adv[open]>summary::after{transform:rotate(180deg)}
.cfg-adv-body{padding:0 14px 14px;display:flex;flex-direction:column;gap:12px}

/* 保存栏：每个区块（渠道 / 分支 / 访问安全）各自独立的保存栏 */
.cfg-actions{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  margin:0 0 24px;
  background:rgba(255,255,255,.86);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border:1px solid var(--line);border-radius:16px;padding:14px 18px;box-shadow:var(--shadow);
}
.cfg-actions-hint{font-size:13px;color:var(--muted);font-weight:600}
.cfg-save-btn{
  display:inline-flex;align-items:center;gap:8px;border:none;border-radius:12px;cursor:pointer;
  padding:12px 24px;font-size:15px;font-weight:800;color:#fff;
  background:linear-gradient(120deg,var(--brand),var(--brand2));box-shadow:0 8px 24px rgba(91,140,255,.3);transition:transform .2s,box-shadow .2s;
}
.cfg-save-btn:hover{transform:translateY(-2px);box-shadow:0 12px 30px rgba(91,140,255,.4)}
.cfg-save-btn svg{width:18px;height:18px}
.cfg-save-secondary{background:linear-gradient(120deg,#0ea5e9,#22d3ee);box-shadow:0 8px 24px rgba(14,165,233,.28)}
.cfg-save-secondary:hover{box-shadow:0 12px 30px rgba(14,165,233,.38)}
.cfg-save-tertiary{background:linear-gradient(120deg,#d97706,#f59e0b);box-shadow:0 8px 24px rgba(217,119,6,.28)}
.cfg-save-tertiary:hover{box-shadow:0 12px 30px rgba(217,119,6,.38)}

/* 保存提示 Toast */
.cfg-toast{position:fixed;top:18px;right:18px;z-index:100;display:flex;align-items:center;gap:10px;padding:13px 18px;border-radius:14px;font-size:14px;font-weight:700;box-shadow:var(--shadow);animation:toastIn .35s ease}
.cfg-toast-ok{background:#e9f7ef;color:#137a4a;border:1px solid rgba(19,168,107,.25)}
.cfg-toast-err{background:#fff1f0;color:var(--bad);border:1px solid #ffd6d4}
.cfg-toast-icon{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;color:#fff}
.cfg-toast-ok .cfg-toast-icon{background:var(--good)}
.cfg-toast-err .cfg-toast-icon{background:var(--bad)}
@keyframes toastIn{from{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}

/* 旧配置页兼容样式 */
.cfg-select{padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--glass-strong);font-size:14px;font-weight:600;color:var(--ink);min-width:240px}
.cfg-block{border:1px solid var(--line);border-radius:14px;padding:16px 18px;margin:14px 0;background:var(--glass-strong)}
.cfg-block legend{font-weight:800;font-size:15px;padding:0 6px}
.cfg-block legend .muted{font-weight:500;font-size:12px}
.cfg-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:10px}
.form-actions{margin-top:18px}
.btn-primary{display:inline-block;border:none;cursor:pointer;font-weight:700;font-size:14px;border-radius:12px;padding:11px 22px;background:linear-gradient(120deg,var(--brand),var(--brand2));color:#fff;box-shadow:var(--shadow);transition:.2s}
.btn-primary:hover{transform:translateY(-2px)}
.alert{padding:11px 15px;border-radius:12px;font-size:14px;font-weight:600;margin:14px 0}
.alert-ok{background:rgba(19,168,107,.10);color:var(--good);border:1px solid rgba(19,168,107,.25)}
.alert-err{background:#fff1f0;color:var(--bad);border:1px solid #ffd6d4}

/* 访问码：登录页 + 退出按钮 */
.cfg-logout{margin-left:auto;align-self:center;font-size:13px;font-weight:700;color:var(--muted);text-decoration:none;
  border:1px solid var(--line);border-radius:999px;padding:7px 16px;background:var(--glass-strong);transition:.2s}
.cfg-logout:hover{color:var(--brand);border-color:var(--brand);background:var(--chip)}
.page-head{display:flex;flex-direction:column;align-items:flex-start;gap:8px;margin:8px 0 18px;text-align:left}
.page-head h1{margin:0;font-size:23px;font-weight:800;line-height:1.3}
.page-head .muted{margin:0;font-size:14px;line-height:1.6}

.cfg-login{width:100%;display:flex;align-items:center;justify-content:center;min-height:62vh}
.cfg-login-card{width:100%;max-width:380px;background:transparent;border:none;box-shadow:none;border-radius:0;padding:34px 30px;text-align:center}
.cfg-login-card .cfg-field{text-align:center;margin-bottom:16px}
.cfg-login-card .cfg-field .cfg-label{display:block;text-align:center;margin-bottom:6px}
.cfg-login-card .cfg-input{text-align:center}
.cfg-login-card .cfg-login-btn{margin:0 auto}
.cfg-login-icon{font-size:42px;margin-bottom:6px}
.cfg-login-card h1{margin:0 0 6px;font-size:21px;font-weight:800}
.cfg-login-card .muted{color:var(--muted);font-size:13px;margin:0 0 20px}
.cfg-login-card .cfg-field{text-align:left;margin-bottom:16px}
.cfg-login-btn{width:100%;justify-content:center}
.cfg-login-err{color:var(--bad);background:#fff1f0;border:1px solid #ffd6d4;border-radius:10px;padding:9px 12px;font-size:13px;font-weight:600;margin:0 0 14px;text-align:left}

.cfg-ops-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.cfg-ops-btn{display:flex;align-items:center;gap:12px;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:var(--glass);text-decoration:none;color:inherit;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}
.cfg-ops-btn:hover{transform:translateY(-1px);box-shadow:var(--shadow);border-color:var(--accent,#7c5cff)}
.cfg-ops-emoji{font-size:24px;line-height:1}
.cfg-ops-title{font-weight:700;font-size:14px;margin-bottom:2px}
.cfg-ops-sub{font-size:12px;color:var(--muted);line-height:1.5}

.cfg-model-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:6px}
.cfg-model-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}
.cfg-model-actions .cfg-link-btn{font-size:12px}

.inprogress-tabs{display:flex;gap:8px;margin:18px 0 12px;flex-wrap:wrap}
.inprogress-panel{display:grid;grid-template-columns:1fr;gap:12px}
.inprogress-card{border:1px solid var(--line);border-radius:12px;background:var(--glass);padding:14px 16px;display:flex;flex-direction:column;gap:10px}
.inprogress-card-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.inprogress-branch{display:inline-block;font-size:12px;font-weight:700;padding:3px 8px;border-radius:6px;background:#eef2ff;color:#4f46e5}
.inprogress-branch-review{background:#e0f2fe;color:#0369a1}
.inprogress-branch-advisor{background:#fef3c7;color:#a16207}
.inprogress-merchant{font-weight:700;font-size:15px;flex:1;min-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.inprogress-status{margin-left:auto;font-size:12px;font-weight:600;padding:3px 9px;border-radius:999px;background:#f1f5f9;color:#475569}
.inprogress-status-running,.inprogress-status-ready,.inprogress-status-streaming,.inprogress-status-json_ready{background:#dcfce7;color:#15803d;animation:inprogress-pulse 1.6s ease-in-out infinite}
.inprogress-status-rendering{background:#fef3c7;color:#a16207}
.inprogress-status-queued{background:#e0e7ff;color:#4338ca}
@keyframes inprogress-pulse{0%,100%{opacity:1}50%{opacity:.55}}
.inprogress-card-body{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 18px;font-size:13px;color:var(--muted)}
.inprogress-line{display:flex;gap:8px;align-items:baseline;min-width:0}
.inprogress-label{flex-shrink:0;color:#94a3b8;font-size:12px}
.inprogress-card-foot{display:flex;gap:14px;align-items:center;padding-top:8px;border-top:1px dashed var(--line);flex-wrap:wrap}
.inprogress-card-foot .cfg-link-btn{font-size:12px}
.inprogress-cancel{color:var(--bad)!important}
.inprogress-empty{padding:30px 10px;text-align:center;color:var(--muted);font-size:14px;border:1px dashed var(--line);border-radius:12px}
.inprogress-mono{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px;color:#475569}
@media(max-width:760px){
  .inprogress-card-body{grid-template-columns:1fr}
}

.call-log{margin:18px 0 0;border:1px solid var(--line);border-radius:12px;background:var(--glass);overflow:hidden}
.call-log-head{width:100%;display:flex;align-items:center;gap:10px;padding:12px 16px;background:transparent;border:none;cursor:pointer;text-align:left;font-size:14px;color:inherit}
.call-log-head:hover{background:rgba(0,0,0,.03)}
.call-log-icon{font-size:16px}
.call-log-title{font-weight:700}
.call-log-count{margin-left:auto;margin-right:6px;font-size:12px}
.call-log-arrow{font-size:14px;transition:transform .15s ease}
.call-log-body{padding:8px 16px 16px;border-top:1px dashed var(--line)}
.call-log-tip{font-size:12px;margin:6px 0 12px}
.call-log-list{display:flex;flex-direction:column;gap:8px;max-height:420px;overflow-y:auto}
.call-log-row{border:1px solid var(--line);border-radius:8px;padding:8px 12px;background:rgba(255,255,255,.5)}
.call-log-row.is-err{background:rgba(255,241,240,.6);border-color:#ffd6d4}
.call-log-row-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:13px}
.call-log-time{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px;color:#64748b;min-width:120px}
.call-log-status{font-size:12px;padding:2px 8px;border-radius:6px;font-weight:600}
.call-log-status-success{background:#dcfce7;color:#15803d}
.call-log-status-error{background:#fee2e2;color:#b91c1c}
.call-log-status-ok{background:#dcfce7;color:#15803d}
.call-log-action{font-size:12px;color:#475569;background:#f1f5f9;padding:2px 8px;border-radius:6px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}
.call-log-elapsed{font-size:12px;margin-left:auto}
.call-log-row-meta{display:flex;gap:14px;flex-wrap:wrap;margin-top:4px;font-size:11px}
.call-log-row-note{margin-top:6px;font-size:12px;line-height:1.5;color:#b91c1c;background:#fff;padding:6px 10px;border-radius:6px;border:1px solid #ffd6d4;word-break:break-all;white-space:pre-wrap;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}
.call-log-row:not(.is-err) .call-log-row-note{display:none}

.rev-file-open{color:#4f46e5;text-decoration:none;border-bottom:1px dashed transparent}
.rev-file-open:hover{color:#7c3aed;border-bottom-color:#7c3aed}

.rev-file-item-img{flex-direction:column;align-items:stretch;width:120px}
.rev-file-item-img .adv-img-thumb{position:relative;display:block;width:100%;height:88px;border-radius:8px;overflow:hidden;background:#f1f5f9;text-decoration:none}
.rev-file-item-img .adv-img-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.rev-file-item-img .adv-img-zoom{position:absolute;left:0;right:0;bottom:0;padding:3px 0;font-size:11px;color:#fff;background:linear-gradient(transparent,rgba(0,0,0,.6));text-align:center;opacity:0;transition:opacity .15s ease}
.rev-file-item-img .adv-img-thumb:hover .adv-img-zoom{opacity:1}
.rev-file-item-img .rev-file-info{padding:4px 2px 0}

@media(max-width:760px){
  .branch-grid{grid-template-columns:1fr}
  .field-row{grid-template-columns:1fr}
  .nav{margin-left:0;width:100%;justify-content:center}
  .glass-page-card{padding:16px 14px;margin-top:2px}
  .cfg-grid-2{grid-template-columns:1fr}
  .cfg-grid-3{grid-template-columns:1fr}
  .cfg-actions{flex-direction:column;align-items:stretch;gap:10px}
  .cfg-hero{flex-direction:column;gap:14px}
  .cfg-toast{right:12px;left:12px;top:12px}
  .page-head{flex-direction:column}
  .topbar{justify-content:flex-end;padding:14px 4px 10px}
  .cfg-channel-title{gap:8px}
  .cfg-channel-actions .cfg-status{display:none}
}

/* 平板端（760px - 1024px） */
@media(min-width:761px) and (max-width:1024px){
  .app{padding:0 22px 130px}
  .hero{padding:26px 28px}
  .hero h1{font-size:23px}
  .branch-grid{gap:16px}
  .card-form{padding:22px}
  .preview{height:72vh}
  .cfg-hero{gap:16px;padding:20px 22px}
  .cfg-login-card{padding:30px 26px}
  .cfg-grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}
  .cfg-field-inline{padding-top:0}
}

/* PC 端（>=1025px）默认样式已覆盖；额外收紧大屏容器 */
@media(min-width:1400px){
  .app{max-width:1200px}
}

/* ===== 页面访问安全 · 独立卡片（与 AI 服务商卡片视觉区分） ===== */
.cfg-card-security{border-color:rgba(217,138,46,.26);box-shadow:0 10px 28px rgba(217,138,46,.08)}
.cfg-card-security .cfg-card-head{background:linear-gradient(180deg,#fff7ed 0%,#fffbf2 100%);border-bottom-color:rgba(217,138,46,.2)}
.cfg-card-security .cfg-card-title h3{color:#a95716}
.cfg-card-security .cfg-card-meta{color:#b87137}
.cfg-card-security .cfg-status{background:linear-gradient(120deg,#f59f0b,#ea7a09);color:#fff}

/* ===== 月度复盘 · 文件上传与分类展示 ===== */
.rev-upload{margin-bottom:18px}
.rev-dropzone{
  width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;
  padding:32px 24px;border:2px dashed rgba(59,109,255,.35);border-radius:var(--radius);
  background:linear-gradient(180deg,rgba(255,255,255,.72),rgba(244,247,255,.62));
  color:var(--ink);cursor:pointer;transition:border-color .2s,background .2s,transform .2s,box-shadow .2s;
  box-shadow:0 4px 18px rgba(59,109,255,.06);
}
.rev-dropzone:hover,.rev-dropzone.dragover{
  border-color:var(--brand);background:linear-gradient(180deg,rgba(255,255,255,.92),rgba(235,242,255,.82));
  box-shadow:0 10px 30px rgba(59,109,255,.12);transform:translateY(-2px);
}
.rev-dropzone-icon{
  width:56px;height:56px;border-radius:18px;
  background:linear-gradient(135deg,var(--brand),var(--brand2));color:#fff;
  display:flex;align-items:center;justify-content:center;box-shadow:0 8px 24px rgba(91,140,255,.28);
}
.rev-dropzone-icon svg{width:26px;height:26px}
.rev-dropzone-title{font-size:16px;font-weight:800;color:var(--ink)}
.rev-dropzone-sub{font-size:13px;color:var(--muted);font-weight:500}
.rev-dropzone-types{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:4px}
.rev-tag{font-size:11px;font-weight:800;padding:5px 10px;border-radius:999px;border:1px solid var(--line);background:var(--glass-strong);color:var(--muted)}
.rev-tag-doc{color:#2b6cb0;background:#ebf4ff;border-color:rgba(43,108,176,.18)}
.rev-tag-xlsx{color:#276749;background:#e6f6ec;border-color:rgba(39,103,73,.18)}

.rev-files-wrap{margin-top:6px;margin-bottom:18px}
.rev-files-tabs{display:flex;gap:10px;border-bottom:1px solid var(--line);padding-bottom:2px}
.rev-tab{
  position:relative;display:inline-flex;align-items:center;gap:7px;
  padding:11px 16px;font-size:14px;font-weight:700;color:var(--muted);
  background:transparent;border:none;border-radius:12px 12px 0 0;cursor:pointer;transition:.2s;
}
.rev-tab:hover{background:rgba(59,109,255,.06);color:var(--ink)}
.rev-tab.active{color:var(--brand);background:rgba(255,255,255,.55)}
.rev-tab.active::after{
  content:"";position:absolute;left:14px;right:14px;bottom:-3px;height:3px;
  background:linear-gradient(120deg,var(--brand),var(--brand2));border-radius:999px;
}
.rev-tab-icon{font-size:16px}
.rev-count{font-size:11px;font-weight:800;color:#fff;background:linear-gradient(120deg,var(--brand),var(--brand2));padding:2px 8px;border-radius:999px;margin-left:2px}
.rev-tab.active .rev-count{box-shadow:0 2px 6px rgba(59,109,255,.25)}
.rev-files-panels{padding:14px 0}
.rev-panel{display:none}
.rev-panel.active{display:block;animation:revFadeIn .25s ease}
@keyframes revFadeIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
.rev-empty{display:flex;align-items:center;justify-content:center;gap:8px;padding:28px 18px;color:var(--muted);font-size:13px;font-weight:600;background:rgba(244,247,252,.55);border:1px dashed var(--line);border-radius:14px}
.rev-file-list{display:flex;flex-direction:column;gap:10px}
.rev-file-item{
  display:flex;align-items:center;gap:12px;padding:12px 14px;
  background:var(--glass-strong);border:1px solid var(--line);border-radius:14px;
  transition:background .2s,box-shadow .2s;
}
.rev-file-item:hover{box-shadow:0 4px 14px rgba(28,52,99,.08)}
.rev-file-icon{
  width:40px;height:40px;border-radius:11px;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0;
}
.rev-file-icon.doc{background:#ebf4ff;color:#2b6cb0}
.rev-file-icon.xlsx{background:#e6f6ec;color:#276749}
.rev-file-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.rev-file-name{font-size:14px;font-weight:700;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rev-file-meta{font-size:12px;color:var(--muted);font-weight:500}
.rev-file-remove{
  width:30px;height:30px;border:none;border-radius:8px;background:transparent;color:var(--muted);cursor:pointer;
  display:flex;align-items:center;justify-content:center;transition:.2s;flex-shrink:0;
}
.rev-file-remove:hover{background:#fff1f0;color:var(--bad)}
.rev-file-remove svg{width:16px;height:16px}

/* 复盘 stream 卡片内的进度条 */
.rev-stream-progress{padding:12px 20px 14px;background:rgba(255,255,255,.45);display:none}
.rev-stream-progress.shown{display:block}
.rev-stream-progress-bar{height:8px;border-radius:999px;background:rgba(28,52,99,.08);overflow:hidden}
.rev-stream-progress-fill{height:100%;width:0;background:linear-gradient(90deg,var(--brand),var(--brand2));border-radius:999px;transition:width .5s ease;min-width:2%}
.rev-stream-progress-label{margin-top:8px;font-size:12px;color:var(--muted);font-weight:600;text-align:right}
.rev-stream-progress-label.is-running{color:var(--brand)}
.rev-stream-progress-label.is-done{color:var(--good)}
.rev-stream-progress-label.is-error{color:var(--bad)}

/* ===== 持久任务状态浮窗（生成中始终可见，position:fixed） ===== */
.hub-task-pill{
  position:fixed;top:14px;right:18px;z-index:900;
  display:none;align-items:center;gap:12px;
  background:rgba(255,255,255,.96);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);
  border:1px solid var(--line);border-radius:14px;
  padding:10px 12px 10px 14px;
  box-shadow:0 10px 28px rgba(20,32,52,.12);
  max-width:380px;min-width:240px;
  transition:transform .3s ease,opacity .3s ease;
}
.hub-task-pill.shown{display:flex;animation:hubTaskPillIn .3s ease}
.hub-task-pill.is-done{background:linear-gradient(180deg,rgba(19,168,107,.06),rgba(19,168,107,.02));border-color:rgba(19,168,107,.3)}
.hub-task-pill.is-error{background:linear-gradient(180deg,rgba(225,29,72,.06),rgba(225,29,72,.02));border-color:rgba(225,29,72,.3)}
.hub-task-pill.is-stale{background:linear-gradient(180deg,rgba(245,158,11,.08),rgba(245,158,11,.02));border-color:rgba(245,158,11,.35)}
.hub-task-pill.is-stale .hub-task-pill-dot{background:#f59e0b;box-shadow:0 0 0 4px rgba(245,158,11,.18);animation:none}
.hub-task-pill.is-stale .hub-task-pill-btn{background:#f59e0b}
@keyframes hubTaskPillIn{from{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}
.hub-task-pill-dot{
  width:10px;height:10px;border-radius:50%;background:var(--brand);flex-shrink:0;
  box-shadow:0 0 0 4px rgba(59,109,255,.18);
  animation:hubTaskPillPulse 1.4s ease-in-out infinite;
}
.hub-task-pill.is-done .hub-task-pill-dot{background:var(--good);box-shadow:0 0 0 4px rgba(19,168,107,.18);animation:none}
.hub-task-pill.is-error .hub-task-pill-dot{background:var(--bad);box-shadow:0 0 0 4px rgba(225,29,72,.18);animation:none}
@keyframes hubTaskPillPulse{
  0%,100%{transform:scale(1);opacity:1}
  50%{transform:scale(1.35);opacity:.6}
}
.hub-task-pill-content{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.hub-task-pill-text{font-size:13px;font-weight:700;color:var(--ink);line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hub-task-pill-meta{font-size:11px;color:var(--muted);font-weight:600;line-height:1.3}
.hub-task-pill-btn{
  padding:5px 12px;background:var(--brand);color:#fff;border-radius:8px;
  font-size:11px;font-weight:700;cursor:pointer;border:none;flex-shrink:0;text-decoration:none;white-space:nowrap;
}
.hub-task-pill-btn:hover{filter:brightness(1.08)}
.hub-task-pill.is-done .hub-task-pill-btn{background:var(--good)}
.hub-task-pill.is-error .hub-task-pill-btn{background:var(--bad)}
.hub-task-pill-cancel{
  width:26px;height:26px;border-radius:50%;border:1px solid var(--line);
  background:transparent;color:var(--muted);font-size:14px;font-weight:600;
  cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center;
  transition:.18s;font-family:inherit;padding:0;line-height:1;
}
.hub-task-pill-cancel:hover{background:rgba(225,29,72,.1);border-color:rgba(225,29,72,.4);color:var(--bad)}
.hub-task-pill-cancel:disabled{opacity:.4;cursor:not-allowed}
.hub-task-pill.is-done .hub-task-pill-cancel,
.hub-task-pill.is-error .hub-task-pill-cancel,
.hub-task-pill.is-cancelled .hub-task-pill-cancel{display:none}
.hub-task-pill.is-cancelled{background:linear-gradient(180deg,rgba(120,120,140,.08),rgba(120,120,140,.02));border-color:rgba(120,120,140,.3)}
@media(max-width:640px){
  .hub-task-pill{left:12px;right:12px;top:10px;max-width:none;min-width:0}
}

/* AI 推理流式展示卡片 */
.rev-stream{margin-top:18px}
.rev-stream-card{
  /* 嵌套在 .card-form 玻璃卡片内，不再作为独立卡片 */
  background:transparent;border:none;border-radius:0;
  box-shadow:none;overflow:hidden;
}
.rev-stream-head{
  display:flex;align-items:center;gap:12px;padding:16px 20px;
  background:linear-gradient(180deg,rgba(59,109,255,.08),rgba(59,109,255,.03));
  border-bottom:1px solid var(--line);
}
.rev-stream-pulse{
  width:22px;height:22px;border-radius:50%;
  border:3px solid rgba(59,109,255,.18);border-top-color:var(--brand);
  animation:revSpin .9s linear infinite;flex-shrink:0;
}
@keyframes revSpin{to{transform:rotate(360deg)}}
.rev-stream-head.is-waiting .rev-stream-title{color:var(--brand)}
.rev-stream-head.is-done .rev-stream-pulse{display:none}
.rev-stream-head.is-done .rev-stream-title{color:var(--good)}
.rev-stream-head.is-error .rev-stream-pulse{display:none}
.rev-stream-head.is-error .rev-stream-title{color:var(--bad)}
.rev-stream-title{font-size:15px;font-weight:800;color:var(--ink);transition:color .25s}
.rev-stream-log{
  max-height:60vh;overflow-y:auto;padding:18px 20px;
  background:rgba(255,255,255,.45);font-size:14px;line-height:1.75;
}
.rev-stream-section{margin-bottom:16px}
.rev-stream-section:last-child{margin-bottom:0}
.rev-stream-label{
  font-size:12px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;
  margin-bottom:6px;
}
.rev-stream-reasoning{
  margin:0;padding:14px 16px;border-radius:12px;
  background:#f8fafc;color:#475569;border:1px solid #e2e8f0;
  font-family:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;
  white-space:pre-wrap;word-break:break-word;
}
.rev-stream-content{
  margin:0;padding:14px 16px;border-radius:12px;
  background:#fff;color:var(--ink);border:1px solid var(--line);
  font-family:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;
  white-space:pre-wrap;word-break:break-word;
}
.rev-stream-meta{
  padding:10px 20px;font-size:12px;color:var(--muted);font-weight:600;
  text-align:right;border-top:1px solid var(--line);background:rgba(244,247,252,.55);
}
.rev-stream-raw{
  padding:8px 20px 12px;text-align:right;border-top:1px solid var(--line);
  background:rgba(244,247,252,.55);
}
.rev-raw-toggle{
  font-size:12px;color:var(--muted);background:transparent;border:none;
  cursor:pointer;padding:4px 8px;border-radius:6px;
}
.rev-raw-toggle:hover{color:var(--brand);background:rgba(59,109,255,.08)}
.rev-error{
  margin:12px 0 0;padding:11px 15px;border-radius:12px;font-size:14px;font-weight:600;
  background:#fff1f0;color:var(--bad);border:1px solid #ffd6d4;
}

/* 生成结果：HTML 附件卡片 */
.rev-attachment{margin-top:18px}
.rev-attachment-card{
  display:flex;align-items:center;gap:16px;
  background:linear-gradient(180deg,#f0f7ff,#fff 60%);
  border:1px solid rgba(59,109,255,.2);border-radius:var(--radius);
  box-shadow:var(--shadow);padding:18px 20px;
}
.rev-attachment-icon{
  width:52px;height:52px;border-radius:14px;
  background:linear-gradient(135deg,var(--brand),var(--brand2));color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:24px;flex-shrink:0;
  box-shadow:0 8px 24px rgba(91,140,255,.28);
}
.rev-attachment-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.rev-attachment-name{font-size:15px;font-weight:800;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rev-attachment-meta{font-size:13px;color:var(--muted);font-weight:600}
.rev-attachment-actions{display:flex;gap:10px;flex-shrink:0}

@media(max-width:760px){
  .rev-attachment-card{flex-direction:column;align-items:flex-start;gap:14px}
  .rev-attachment-actions{width:100%}
  .rev-attachment-actions .btn{flex:1;text-align:center}
  .rev-dropzone{padding:26px 18px}
  .rev-files-tabs{gap:6px}
  .rev-tab{padding:10px 12px;font-size:13px}
  .rev-tab.active::after{left:10px;right:10px}
  .rev-stream-log{padding:14px 16px;max-height:55vh}
  .rev-stream-reasoning,.rev-stream-content{padding:12px 14px}
}

/* ===== 商家增长顾问 · 聊天面板 ===== */
.chat-wrap{max-width:760px;margin:0 auto}
.chat-wrap-card{
  max-width:none;margin:16px 0 0;
  background:var(--glass);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
  border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);overflow:hidden;
}
.chat-wrap-card .chat-panel{border:none;border-radius:0;box-shadow:none;background:transparent}
.chat-panel{background:var(--glass);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);display:flex;flex-direction:column}
.chat-head{padding:14px 18px;font-weight:800;font-size:15px;color:#fff;background:linear-gradient(120deg,var(--brand),var(--brand2))}
.chat-msgs{padding:18px;max-height:48vh;overflow-y:auto;display:flex;flex-direction:column;gap:12px}
.chat-msg{max-width:84%;padding:11px 14px;border-radius:14px;font-size:14px;line-height:1.65;white-space:pre-wrap;word-break:break-word}
.chat-msg.ai{background:rgba(255,255,255,.92);border:1px solid var(--line);align-self:flex-start;border-bottom-left-radius:4px}
.chat-msg.me{background:linear-gradient(120deg,var(--brand),var(--brand2));color:#fff;align-self:flex-end;border-bottom-right-radius:4px}
.chat-msg.sys{background:var(--chip);color:var(--muted);align-self:center;font-size:13px;font-weight:600;border-radius:999px;padding:7px 16px}
.chat-msg b{font-weight:700}
.chat-input-row{display:flex;gap:10px;padding:12px 14px;border-top:1px solid var(--line);background:rgba(255,255,255,.6)}
.chat-input-row input{flex:1;min-width:0;border:1px solid var(--line);border-radius:10px;padding:10px 14px;font-size:14px;background:rgba(244,247,252,.92);outline:none;color:var(--ink)}
.chat-input-row input:focus{border-color:var(--brand)}
.chat-input-row .btn{padding:10px 20px;white-space:nowrap}

/* AI 回复 loading 动画 */
.ai-loading{min-width:74px;min-height:40px;display:flex;align-items:center;gap:10px}
.ai-loading-dots{display:inline-flex;align-items:center;gap:5px}
.ai-loading-dots i{width:7px;height:7px;border-radius:50%;background:var(--brand);animation:aiDot 1.2s infinite ease-in-out both}
.ai-loading-dots i:nth-child(1){animation-delay:-0.32s}
.ai-loading-dots i:nth-child(2){animation-delay:-0.16s}
.ai-loading-dots i:nth-child(3){animation-delay:0s}
@keyframes aiDot{0%,80%,100%{transform:scale(0.55);opacity:.5}40%{transform:scale(1);opacity:1}}
.ai-loading-timer{font-size:12px;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums}

/* AI 选项按钮 */
.chat-options{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.chat-option-btn{
  padding:8px 14px;border:1px solid var(--line);border-radius:999px;
  background:rgba(255,255,255,.82);color:var(--ink);font-size:13px;font-weight:600;cursor:pointer;
  transition:border-color .2s,background .2s,transform .1s
}
.chat-option-btn:hover{border-color:var(--brand);background:rgba(59,109,255,.08);transform:translateY(-1px)}
.chat-option-btn:disabled{opacity:.55;cursor:not-allowed;transform:none}
.chat-option-tip{width:100%;font-size:12px;color:var(--brand);font-weight:600;margin-top:4px}

/* 商家顾问：聊天卡片与初始上传卡片同尺寸 */
.chat-wrap-card{padding:0;overflow:hidden}

/* 商家顾问：步骤进度条 + 计时 */
.adv-progress{padding:14px 18px 12px;background:linear-gradient(180deg,rgba(59,109,255,.06),rgba(59,109,255,.02));border-bottom:1px solid var(--line)}
.adv-progress-steps{display:flex;justify-content:space-between;gap:10px;margin-bottom:10px}
.adv-step{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:var(--muted);transition:.25s}
.adv-step span{width:22px;height:22px;border-radius:50%;background:rgba(28,52,99,.08);color:var(--muted);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800}
.adv-step.done{color:var(--good)}
.adv-step.done span{background:rgba(19,168,107,.15);color:var(--good)}
.adv-step.active{color:var(--brand)}
.adv-step.active span{background:linear-gradient(120deg,var(--brand),var(--brand2));color:#fff;box-shadow:0 4px 10px rgba(59,109,255,.25)}
.adv-progress-bar{height:6px;border-radius:999px;background:rgba(28,52,99,.08);overflow:hidden}
.adv-progress-fill{height:100%;width:0;background:linear-gradient(90deg,var(--brand),var(--brand2));border-radius:999px;transition:width .4s ease}
.adv-progress-meta{display:flex;justify-content:space-between;align-items:center;margin-top:8px;font-size:12px;font-weight:600;color:var(--muted)}
.adv-progress-timer{font-variant-numeric:tabular-nums;color:var(--brand)}
.adv-upload-overlay-text{display:flex;flex-direction:column;align-items:center;gap:4px}
.adv-upload-timer{font-size:12px;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums}
.adv-generate-error{background:#fff2f0;border:1px solid #ffccc7;color:#a8071a;border-radius:12px;padding:12px 14px;font-size:13px;line-height:1.7}
.adv-generate-error b{color:#cf1322}
.adv-retry-btn{margin-top:10px}

@media(max-width:760px){
  .chat-msg{max-width:92%}
  .chat-msgs{max-height:56vh}
  .adv-progress-steps{gap:6px}
  .adv-step{font-size:12px}
}

/* ===== 最近记录 · 两 tab 列表 ===== */
.recent-tabs{display:flex;gap:8px;margin:16px 0}
.recent-tab{
  padding:10px 18px;border-radius:12px;font-size:14px;font-weight:700;color:var(--muted);
  background:var(--glass-strong);border:1px solid var(--line);cursor:pointer;transition:.2s;
}
.recent-tab:hover{color:var(--brand);border-color:var(--brand)}
.recent-tab.on{color:#fff;background:linear-gradient(120deg,var(--brand),var(--brand2));border-color:transparent;box-shadow:var(--shadow)}
.recent-list{display:flex;flex-direction:column;gap:10px;margin-top:4px}
.recent-row{
  display:flex;align-items:center;gap:16px;
  background:var(--glass);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
  border:1px solid var(--line);border-radius:14px;padding:14px 18px;box-shadow:var(--shadow);
  transition:transform .2s,box-shadow .2s;
}
.recent-row:hover{transform:translateY(-2px);box-shadow:0 12px 30px rgba(28,52,99,.13)}
.recent-name{
  flex:1;min-width:0;font-size:15px;font-weight:800;color:var(--brand);text-decoration:none;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.recent-name:hover{color:var(--brand2)}
.recent-meta{display:flex;gap:18px;flex-shrink:0;font-size:12.5px;color:var(--muted);font-weight:600}
.recent-meta span{white-space:nowrap}
.recent-empty{
  display:flex;align-items:center;justify-content:center;gap:8px;
  padding:30px 18px;color:var(--muted);font-size:14px;font-weight:600;
  background:rgba(244,247,252,.55);border:1px dashed var(--line);border-radius:14px;
}
.recent-empty a{color:var(--brand);font-weight:800;text-decoration:none}
@media(max-width:760px){
  .recent-row{flex-direction:column;align-items:flex-start;gap:8px}
  .recent-meta{gap:12px}
}

/* ===== 商家增长顾问 · 分类型上传（门店照片 / 团购截图） ===== */
.adv-upload{margin-bottom:18px}
.adv-upload-overlay{
  position:absolute;inset:0;z-index:10;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;
  background:rgba(255,255,255,.78);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  border-radius:16px;border:1px dashed var(--brand);
  animation:advFadeIn .25s ease
}
.adv-upload-overlay[hidden]{display:none !important}
.adv-upload-spinner{
  width:34px;height:34px;border-radius:50%;
  border:3px solid rgba(59,109,255,.15);border-top-color:var(--brand);
  animation:advSpin .9s linear infinite
}
.adv-upload-overlay-text{font-size:14px;font-weight:700;color:var(--brand)}
@keyframes advSpin{to{transform:rotate(360deg)}}
@keyframes advFadeIn{from{opacity:0}to{opacity:1}}
.adv-dropzone{
  width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;
  padding:22px 20px;border:2px dashed rgba(59,109,255,.30);border-radius:16px;
  background:linear-gradient(180deg,rgba(255,255,255,.72),rgba(244,247,255,.62));
  color:var(--ink);cursor:pointer;transition:border-color .2s,background .2s,transform .2s,box-shadow .2s;
  box-shadow:0 4px 18px rgba(59,109,255,.05);
}
.adv-dropzone:hover,.adv-dropzone:focus,.adv-dropzone.dragover{
  border-color:var(--brand);background:linear-gradient(180deg,rgba(255,255,255,.92),rgba(235,242,255,.82));
  box-shadow:0 10px 30px rgba(59,109,255,.12);transform:translateY(-2px);outline:none;
}
.adv-upload-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:18px}
@media(max-width:720px){.adv-upload-row{grid-template-columns:1fr}}
.adv-upload-row .adv-upload{margin-bottom:0}
.adv-upload-row .rev-file-list{max-height:200px;overflow:auto;display:flex;flex-direction:row;flex-wrap:wrap;gap:10px}
.adv-upload-row .rev-file-item{width:calc(50% - 5px);box-sizing:border-box;padding:10px 12px;gap:10px}
.adv-upload-row .rev-file-icon{width:34px;height:34px;font-size:16px}
@media(max-width:720px){.adv-upload-row .rev-file-item{width:100%}}
/* 商家信息输入框缩小（rows=3 生效，覆盖默认 min-height:220px） */
.adv-text-field textarea{min-height:84px !important;max-height:220px}

/* 右上角 AI 芯片：视觉模型状态 */
.ai-chip .ai-sep{margin:0 5px;color:var(--line);font-weight:400}
.ai-chip .ai-off{color:var(--bad);font-weight:700}

/* 模型配置页：Tab（文案模型 / 视觉模型） */
.cfg-tabs{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}
.cfg-tab{appearance:none;border:1px solid var(--line);background:var(--glass);
  border-radius:12px;padding:10px 18px;font-size:14px;font-weight:600;color:var(--muted);
  cursor:pointer;transition:all .18s ease}
.cfg-tab:hover{border-color:rgba(99,102,241,.5);color:var(--ink)}
.cfg-tab.active{background:linear-gradient(120deg,#6366f1,#8b5cf6);border-color:transparent;color:#fff;
  box-shadow:0 8px 20px rgba(99,102,241,.3)}
/* 非激活的 Tab 面板默认隐藏 */
.cfg-tab-panel{display:none}
.cfg-tab-panel.active{display:block;animation:fadeIn .2s ease}
@keyframes fadeIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* 模型配置页：新增渠道按钮（列表下方） */
.cfg-add-channel-bottom{
  width:100%;display:flex;align-items:center;justify-content:center;gap:8px;
  padding:12px;border:1.5px dashed var(--brand);border-radius:12px;
  background:rgba(99,102,241,.06);color:var(--brand);font-size:14px;font-weight:700;
  cursor:pointer;transition:.16s;margin:4px 0 14px}
.cfg-add-channel-bottom:hover{background:rgba(99,102,241,.12)}

/* 模型配置页：空渠道列表提示 */
.cfg-empty-hint{text-align:center;color:var(--muted);padding:28px 16px;font-size:14px}

/* 模型配置页：单个渠道卡片（accordion） */
.cfg-channel-card{border:1px solid var(--line);border-radius:14px;background:var(--glass,#fff);
  box-shadow:0 6px 18px rgba(20,32,52,.05);margin-bottom:10px;overflow:hidden}
.cfg-channel-header{display:flex;align-items:center;gap:8px;padding:10px 14px;
  background:linear-gradient(180deg,#f7f8fc,#fbfcff);cursor:pointer;user-select:none}
.cfg-channel-header:hover{background:linear-gradient(180deg,#f0f2fa,#f7f8fc)}
.cfg-channel-toggle{width:28px;height:28px;border:none;border-radius:7px;background:transparent;
  color:var(--muted);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.2s;flex-shrink:0}
.cfg-channel-toggle:hover{background:rgba(28,52,99,.08);color:var(--ink)}
.cfg-channel-toggle .chevron{width:16px;height:16px;transition:transform .2s}
.cfg-channel-card.expanded .cfg-channel-toggle .chevron{transform:rotate(90deg)}
.cfg-channel-title{display:flex;align-items:center;gap:10px;flex:1;min-width:0;flex-wrap:wrap}
.cfg-channel-name-display{font-size:14px;font-weight:800;color:var(--ink);line-height:1.35}
.cfg-channel-badges{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.cfg-badge{font-size:11px;font-weight:700;padding:3px 7px;border-radius:999px;white-space:nowrap}
.cfg-badge-protocol{background:rgba(59,109,255,.1);color:var(--brand);border:1px solid rgba(59,109,255,.18)}
.cfg-badge-enabled{background:rgba(19,168,107,.12);color:var(--good);border:1px solid rgba(19,168,107,.22)}
.cfg-badge-disabled{background:rgba(225,29,72,.1);color:#e11d48;border:1px solid rgba(225,29,72,.2)}
.cfg-channel-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}
.cfg-channel-del{border:1px solid rgba(225,29,72,.4);background:rgba(225,29,72,.06);color:#e11d48;
  font-size:12px;font-weight:700;padding:5px 10px;border-radius:8px;cursor:pointer;transition:.16s;white-space:nowrap}
.cfg-channel-del:hover{background:rgba(225,29,72,.14)}
.cfg-channel-body{display:none;padding:12px 16px 16px;border-top:1px solid var(--line);
  flex-direction:column;gap:12px;background:rgba(255,255,255,.55)}
.cfg-channel-card.expanded .cfg-channel-body{display:flex}

/* 三列网格 */
.cfg-grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;align-items:end}

/* 渠道卡片内更紧凑 */
.cfg-channel-body .cfg-field{gap:5px}
.cfg-channel-body .cfg-input{padding:9px 11px;border-radius:10px}
.cfg-channel-body .cfg-grid-2{gap:12px}
.cfg-channel-body .cfg-hint{margin:2px 0 0;font-size:11.5px}

/* 行内字段（开关） */
.cfg-field-inline{padding-top:0}

/* 分支页 / 首页：当前模型横幅 */
.branch-model-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:2px 0 16px;
  padding:10px 14px;border-radius:12px;background:linear-gradient(120deg,rgba(99,102,241,.1),rgba(14,165,233,.1));
  border:1px solid rgba(99,102,241,.2);font-size:13px;color:var(--ink)}
.branch-model-bar b{color:var(--brand,#6366f1);font-weight:800}
.branch-model-bar .muted{color:var(--muted);font-size:12px}

/* 模型配置页：分支渠道卡片（月度复盘 / 商家顾问独立文本模型渠道） */
.cfg-card-branch{border-color:rgba(14,165,233,.26)}
.cfg-card-branch .cfg-card-head{background:linear-gradient(180deg,#eff8fe 0%,#f8fcff 100%);border-bottom-color:rgba(14,165,233,.2)}
.cfg-card-branch .cfg-card-title h3{color:#0e7490}
.cfg-card-branch .cfg-card-meta{color:#0e8ba8}
.cfg-card-branch .cfg-status{background:linear-gradient(120deg,#0ea5e9,#38bdf8);color:#fff}
.cfg-branch{border:1px dashed rgba(14,165,233,.4);border-radius:10px;padding:12px 14px;margin-bottom:10px;background:rgba(14,165,233,.04)}
.cfg-branch:last-child{margin-bottom:0}
.cfg-branch h4{margin:0 0 10px;font-size:14px;color:#0e7490;display:flex;align-items:center;gap:6px}
.cfg-branch-empty-hint{font-size:12px;color:var(--muted);margin:0 0 6px;padding:8px 10px;border-radius:8px;background:rgba(14,165,233,.08);border:1px dashed rgba(14,165,233,.35)}
.cfg-branch select:disabled{background:rgba(28,52,99,.06);color:var(--muted);cursor:not-allowed}

/* 视觉模型未配置弹窗（商家顾问页：仅提示，不阻断页面打开） */
.modal-overlay{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;
  background:rgba(20,32,52,.42);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);animation:modalIn .2s ease}
@keyframes modalIn{from{opacity:0}to{opacity:1}}
.modal-box{width:min(440px,92vw);background:var(--glass-strong);border:1px solid var(--line);border-radius:20px;
  box-shadow:0 24px 60px rgba(20,32,52,.28);padding:30px 28px;text-align:center;animation:modalPop .25s ease}
@keyframes modalPop{from{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:none}}
.modal-icon{font-size:42px;margin-bottom:6px;line-height:1}
.modal-box h3{margin:6px 0 10px;font-size:19px;font-weight:800;color:var(--ink)}
.modal-box p{margin:0 0 20px;font-size:14px;line-height:1.7;color:var(--muted);text-align:left}
.modal-actions{display:flex;gap:12px;justify-content:center}
.modal-actions .btn{flex:1;text-align:center;justify-content:center}

/* 安全兜底：被 hidden 的面板一律隐藏 */
.rev-panel[hidden]{display:none !important}

/* 商家顾问：起始表单必填标记 */
.required{color:var(--bad);margin-left:2px}

/* ============ 模型配置 tab（V0.0.76） ============ */
.cfg-tabs{display:flex;gap:8px;margin:6px 0 20px;flex-wrap:wrap}
.cfg-tab{appearance:none;border:1px solid var(--line);background:var(--glass);color:var(--muted);
  font-size:14px;font-weight:700;padding:10px 20px;border-radius:12px;cursor:pointer;transition:.18s;
  box-shadow:var(--shadow)}
.cfg-tab:hover{color:var(--ink);border-color:rgba(230,46,46,.4)}
.cfg-tab.active{background:linear-gradient(120deg,#E62E2E,#b71c1c);color:#fff;border-color:transparent;
  box-shadow:0 8px 20px rgba(182,28,28,.22)}
.cfg-tab-panel{display:block}

/* 调用记录表格 */
.cfg-calls-table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:var(--glass)}
.cfg-calls-table{width:100%;border-collapse:collapse;font-size:13px;min-width:720px}
.cfg-calls-table th,.cfg-calls-table td{padding:10px 12px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line);white-space:nowrap}
.cfg-calls-table th{background:rgba(230,46,46,.06);color:var(--ink);font-weight:700;position:sticky;top:0}
.cfg-calls-table tbody tr:hover{background:rgba(230,46,46,.04)}
.cfg-calls-table td.cfg-call-note{max-width:240px;white-space:normal;color:var(--muted);font-size:12px}
.cfg-calls-empty{text-align:center;color:var(--muted);padding:24px 0}
.cfg-call-ok{color:var(--good);font-weight:700}
.cfg-call-err{color:var(--bad);font-weight:700}


/* 商家顾问：行业确认卡片 */
.adv-industry-confirm{background:var(--glass-strong);border:1px solid var(--line);border-radius:14px;padding:16px}
.adv-industry-confirm p{margin:0 0 12px}
.adv-industry-row{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.adv-industry-row label{min-width:80px;font-size:13px;color:var(--muted)}
.adv-industry-row input{flex:1;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;font-size:14px}
.adv-industry-meta{font-size:12px;color:var(--muted);margin-top:4px}
#advConfirmIndustryBtn{margin-top:10px}

/* 商家顾问：补充问题多选 */
.adv-multi-hint{color:var(--brand);font-size:12px;margin-left:6px}
.adv-multi-confirm{margin-top:10px}
.chat-option-btn.selected{background:linear-gradient(120deg,var(--brand),var(--brand2));color:#fff;border-color:transparent}
