/* =====================================================
   微信小程序工作台 · 全站样式 v3.0
   ===================================================== */
:root {
  --primary:#07C160; --primary-d:#05a14e; --primary-l:#e8f8ef;
  --accent:#1989FA;  --accent-d:#0f7ae5;  --accent-l:#eaf3ff;
  --orange:#FF8A65;  --orange-l:#fff4f0;
  --warn:#FF9500;    --warn-l:#fff8e8;
  --danger:#FA5151;  --danger-l:#fff0f0;
  --green-l:#f0fff6;

  --t1:#111827; --t2:#6B7280; --t3:#9CA3AF;
  --bg:#F7F9FC; --bgc:#fff; --bgalt:#F0F4F8;
  --border:#E5E7EB; --border2:#D1D5DB;

  --r4:4px; --r8:8px; --r12:12px; --r20:20px;
  --sh-sm:0 1px 3px rgba(0,0,0,.06),0 1px 2px rgba(0,0,0,.04);
  --sh:0 4px 16px rgba(0,0,0,.08);
  --sh-lg:0 8px 32px rgba(0,0,0,.12);

  --sans:'Noto Sans SC','Inter',system-ui,sans-serif;
  --mono:'JetBrains Mono','Consolas',monospace;
  --hh:60px;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:var(--sans);background:var(--bg);color:var(--t1);line-height:1.65;font-size:15px}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
code{font-family:var(--mono);font-size:.875em;background:#f3f4f6;padding:2px 6px;border-radius:4px;color:#d63384}
pre code{background:none;padding:0;color:inherit}
ul{padding-left:1.2em}
.container{max-width:1120px;margin:0 auto;padding:0 24px}
.text-green{color:var(--primary)}

/* ── 按钮 ── */
.btn{display:inline-flex;align-items:center;gap:8px;padding:9px 20px;border-radius:var(--r8);font-weight:600;font-size:.92rem;cursor:pointer;transition:all .2s;text-decoration:none;border:2px solid transparent;font-family:var(--sans)}
.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}
.btn-primary:hover{background:var(--primary-d);border-color:var(--primary-d);color:#fff;text-decoration:none;transform:translateY(-1px);box-shadow:0 4px 12px rgba(7,193,96,.3)}
.btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}
.btn-ghost{background:#fff;color:var(--t1);border-color:var(--border2)}
.btn-ghost:hover{border-color:var(--primary);color:var(--primary);text-decoration:none}
.btn-lg{padding:13px 28px;font-size:1rem}

/* =====================================================
   导航
   ===================================================== */
.site-header{position:sticky;top:0;z-index:1000;background:rgba(255,255,255,.94);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);height:var(--hh)}
.header-inner{display:flex;align-items:center;height:100%;gap:32px}
.logo{display:flex;align-items:center;gap:9px;font-weight:700;font-size:1.05rem;color:var(--t1);white-space:nowrap;text-decoration:none}
.logo-svg{display:flex;align-items:center;flex-shrink:0}
.logo-svg svg{display:block;filter:drop-shadow(0 2px 6px rgba(7,193,96,.25))}
.logo-text{font-weight:700;font-size:1.08rem;letter-spacing:-.01em}
.logo-accent{color:var(--primary)}
.main-nav{display:flex;align-items:center;gap:2px;flex:1;overflow:hidden}
.main-nav a{padding:5px 10px;border-radius:var(--r8);color:var(--t2);font-size:.83rem;white-space:nowrap;transition:all .15s;display:flex;align-items:center;gap:4px}
.main-nav a:hover{color:var(--primary);background:var(--primary-l);text-decoration:none}
.nav-num{font-size:.7rem;font-weight:700;background:var(--bgalt);padding:1px 5px;border-radius:3px;color:var(--t3)}
.nav-step.active-nav .nav-num{background:var(--primary-l);color:var(--primary-d)}
.nav-ref{margin-left:8px;color:var(--accent)!important;background:var(--accent-l)!important}
.nav-ref:hover{background:var(--accent)!important;color:#fff!important}
.hamburger{display:none;flex-direction:column;gap:5px;background:none;border:none;cursor:pointer;padding:6px;margin-left:auto}
.hamburger span{display:block;width:22px;height:2px;background:var(--t1);border-radius:2px;transition:.3s}

/* =====================================================
   Hero
   ===================================================== */
.hero{background:linear-gradient(135deg,#f0faf4 0%,#eaf3ff 50%,#fff8f2 100%);padding:72px 0 64px;text-align:center;border-bottom:1px solid var(--border)}
.hero-eyebrow{display:inline-flex;align-items:center;gap:6px;background:var(--primary-l);color:var(--primary-d);padding:5px 16px;border-radius:100px;font-size:.8rem;font-weight:600;margin-bottom:18px;border:1px solid rgba(7,193,96,.2)}
.hero h1{font-size:clamp(1.8rem,4vw,3rem);font-weight:700;margin:0 0 14px;line-height:1.2}
.gradient-text{background:linear-gradient(135deg,var(--primary),var(--accent));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.hero-sub{color:var(--t2);font-size:1.05rem;max-width:500px;margin:0 auto 28px;line-height:1.7}
.hero-four{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-bottom:32px}
.hero-four-item{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--border);border-radius:100px;padding:7px 16px;font-size:.88rem}
.hf-num{width:22px;height:22px;border-radius:50%;background:var(--primary);color:#fff;font-size:.72rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.hero-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}

/* =====================================================
   全局进度条
   ===================================================== */
.global-progress{background:#fff;border-bottom:2px solid var(--border);padding:0;position:sticky;top:var(--hh);z-index:999}
.gp-inner{display:flex;align-items:center;padding:12px 24px;gap:0;overflow-x:auto}
.gp-step{display:flex;flex-direction:column;align-items:center;gap:4px;cursor:pointer;flex-shrink:0;padding:4px 12px;border-radius:var(--r8);transition:.15s;min-width:80px}
.gp-step:hover{background:var(--bgalt)}
.gp-step.active{background:var(--primary-l)}
.gp-dot{width:32px;height:32px;border-radius:50%;background:var(--bgalt);border:2px solid var(--border2);color:var(--t3);display:flex;align-items:center;justify-content:center;font-size:.85rem;transition:.2s}
.gp-step.active .gp-dot{background:var(--primary);border-color:var(--primary);color:#fff;box-shadow:0 0 0 4px rgba(7,193,96,.15)}
.gp-step.done .gp-dot{background:var(--primary-l);border-color:var(--primary);color:var(--primary)}
.gp-step span{font-size:.75rem;color:var(--t2);white-space:nowrap}
.gp-step.active span{color:var(--primary-d);font-weight:600}
.gp-line{flex:1;height:2px;background:var(--border);min-width:20px;max-width:80px}

/* =====================================================
   Stage 通用
   ===================================================== */
.stage{padding:72px 0;background:var(--bg)}
.stage-alt{background:var(--bgc);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.stage-header{display:flex;align-items:flex-start;gap:20px;margin-bottom:40px}
.stage-num-badge{flex-shrink:0;width:52px;height:52px;border-radius:var(--r12);background:var(--primary);color:#fff;font-size:1.2rem;font-weight:700;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px rgba(7,193,96,.3)}
.stage-num-badge.ref{background:var(--accent);box-shadow:0 4px 12px rgba(25,137,250,.3);font-size:1rem}
.stage-header h2{font-size:1.6rem;font-weight:700;margin:0 0 6px}
.stage-header p{color:var(--t2);margin:0;font-size:.95rem}

/* =====================================================
   信息横幅
   ===================================================== */
.info-banner{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;border-radius:var(--r8);margin-bottom:24px;font-size:.9rem;line-height:1.6}
.info-banner i{margin-top:2px;flex-shrink:0;font-size:1rem}
.info-banner p{margin:4px 0 0}
.info-banner ul{margin:4px 0 0}
.info-banner strong{display:block;margin-bottom:2px}
.info-blue{background:var(--accent-l);border-left:3px solid var(--accent);color:#1e3a5f}
.info-blue i{color:var(--accent)}
.info-orange{background:var(--orange-l);border-left:3px solid var(--orange);color:#7c3500}
.info-orange i{color:var(--orange)}
.info-yellow{background:var(--warn-l);border-left:3px solid var(--warn);color:#7c5500}
.info-yellow i{color:var(--warn)}
.info-green{background:var(--green-l);border-left:3px solid var(--primary);color:#0a5c2e}
.info-green i{color:var(--primary)}
.info-banner.compact{padding:10px 14px;font-size:.85rem}

/* =====================================================
   Stage 1 - 个人/企业选择卡片
   ===================================================== */
.choice-cards{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-bottom:32px}
.choice-card{background:var(--bgc);border:2px solid var(--border);border-radius:var(--r20);padding:28px;transition:all .2s;cursor:pointer}
.choice-card:hover{border-color:var(--primary);box-shadow:var(--sh)}
.choice-card.selected{border-color:var(--primary);background:linear-gradient(135deg,#f7fff9,#eaf3ff)}
.choice-icon{width:48px;height:48px;border-radius:var(--r12);background:var(--primary-l);color:var(--primary);display:flex;align-items:center;justify-content:center;font-size:1.3rem;margin-bottom:14px}
.choice-card h3{margin:0 0 6px;font-size:1.1rem}
.choice-card>p{color:var(--t2);font-size:.88rem;margin:0 0 16px}
.choice-list{list-style:none;padding:0;margin:0 0 20px;display:flex;flex-direction:column;gap:7px}
.choice-list li{display:flex;align-items:center;gap:8px;font-size:.87rem}
.choice-list li.ok i{color:var(--primary)}
.choice-list li.no{color:var(--t2)}
.choice-list li.no i{color:var(--t3)}
.choice-select-btn{width:100%;padding:10px;background:var(--primary);color:#fff;border:none;border-radius:var(--r8);font-size:.92rem;font-weight:600;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:8px;font-family:var(--sans)}
.choice-select-btn:hover{background:var(--primary-d);transform:translateY(-1px)}

.devtype-detail{animation:fadeInUp .25s ease}
@keyframes fadeInUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}

/* action steps */
.action-steps{display:flex;flex-direction:column;gap:0}
.action-step{display:flex;align-items:flex-start;gap:16px;padding:20px 0;border-bottom:1px solid var(--border)}
.action-step:last-child{border-bottom:none}
.as-num{flex-shrink:0;width:36px;height:36px;border-radius:50%;background:var(--primary);color:#fff;font-weight:700;display:flex;align-items:center;justify-content:center;font-size:.95rem;margin-top:2px}
.as-num.done{background:var(--primary-l);border:2px solid var(--primary);color:var(--primary)}
.done-step .as-num{background:var(--primary-l);border:2px solid var(--primary);color:var(--primary)}
.as-body h4{margin:0 0 6px;font-size:.98rem}
.as-body p{margin:0;color:var(--t2);font-size:.88rem}
.as-tip{color:var(--t2)!important;font-size:.85rem!important}
.ext-link-btn{display:inline-flex;align-items:center;gap:8px;background:var(--primary-l);border:1px solid rgba(7,193,96,.3);color:var(--primary-d);padding:9px 16px;border-radius:var(--r8);font-size:.9rem;font-weight:600;text-decoration:none;transition:all .2s;margin-top:6px}
.ext-link-btn:hover{background:var(--primary);color:#fff;text-decoration:none}
.ext-link-btn.sm{font-size:.82rem;padding:6px 12px;margin-top:4px}

/* IP 白名单指引组件 */
.ip-whitelist-guide{display:flex;flex-direction:column;gap:8px;margin:10px 0 4px}
.ipwl-item{display:flex;align-items:flex-start;gap:10px;background:var(--bgalt);border:1px solid var(--border);border-radius:var(--r8);padding:10px 14px;font-size:.84rem;line-height:1.6}
.ipwl-tag{flex-shrink:0;background:#f97316;color:#fff;font-weight:700;font-size:.75rem;padding:2px 8px;border-radius:4px;margin-top:2px;white-space:nowrap}
.ipwl-content{flex:1;color:var(--t1)}
.ipwl-content code{background:var(--bgc2,#f0f0f0);padding:1px 5px;border-radius:3px;font-size:.8rem;color:#c7254e}
.ipwl-action{display:block;margin-top:4px;color:var(--primary-d);font-weight:600}

/* =====================================================
   Stage 2 - 配置收集
   ===================================================== */
.config-collector{display:flex;flex-direction:column;gap:20px;margin-bottom:40px}
.config-item{background:var(--bgc);border:1px solid var(--border);border-radius:var(--r12);overflow:hidden;transition:border-color .2s}
.config-item:has(input:focus){border-color:var(--primary)}
.config-item-header{display:flex;align-items:center;gap:14px;padding:18px 20px;background:var(--bgalt);border-bottom:1px solid var(--border)}
.config-item-icon{width:40px;height:40px;border-radius:var(--r8);background:var(--primary-l);color:var(--primary);display:flex;align-items:center;justify-content:center;font-size:1.1rem;flex-shrink:0}
.config-item-header h3{margin:0 0 3px;font-size:1rem}
.config-item-header p{margin:0;font-size:.84rem;color:var(--t2)}
.config-item-header>div:nth-child(2){flex:1}
.config-item-status{margin-left:auto;font-size:.82rem;color:var(--t3)}
.config-item-status.ok{color:var(--primary)}
.config-item-body{padding:18px 20px}
.cfg-required{background:var(--danger);color:#fff;font-size:.7rem;padding:2px 7px;border-radius:3px;font-weight:700;margin-left:6px}
.cfg-optional{background:var(--t3);color:#fff;font-size:.7rem;padding:2px 7px;border-radius:3px;font-weight:700;margin-left:6px}
.cfg-where{font-size:.83rem;color:var(--t2);margin-bottom:12px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.cfg-where i{color:var(--primary);flex-shrink:0}
.cfg-input-row{display:flex;gap:10px;align-items:stretch}
.cfg-input{flex:1;padding:10px 14px;border:1px solid var(--border);border-radius:var(--r8);font-size:.9rem;font-family:var(--mono);transition:border .15s;color:var(--t1)}
.cfg-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(7,193,96,.1)}
.cfg-textarea{width:100%;padding:10px 14px;border:1px solid var(--border);border-radius:var(--r8);font-size:.82rem;font-family:var(--mono);resize:vertical;transition:border .15s;color:var(--t1);margin-bottom:10px}
.cfg-textarea:focus{outline:none;border-color:var(--primary)}
.cfg-save-btn{padding:10px 18px;background:var(--primary);color:#fff;border:none;border-radius:var(--r8);font-size:.88rem;font-weight:600;cursor:pointer;white-space:nowrap;font-family:var(--sans);transition:all .2s}
.cfg-save-btn:hover{background:var(--primary-d)}

/* .key 文件上传区 */
.key-upload-area{border:2px dashed var(--border);border-radius:var(--r8);transition:border-color .2s,background .2s;overflow:hidden;margin-bottom:8px}
.key-upload-area:hover,.key-upload-area.drag-over{border-color:var(--primary);background:var(--primary-l)}
.kua-idle{display:flex;flex-direction:column;align-items:center;gap:10px;padding:24px 16px;color:var(--t2);font-size:.88rem}
.kua-idle i{font-size:1.8rem;color:var(--border2)}
.kua-btn{padding:8px 20px;background:var(--primary);color:#fff;border:none;border-radius:var(--r8);font-size:.88rem;font-weight:600;cursor:pointer;font-family:var(--sans);display:flex;align-items:center;gap:6px;transition:all .2s}
.kua-btn:hover{background:var(--primary-d)}
.kua-done{display:flex;align-items:center;gap:10px;padding:14px 18px;background:var(--green-l);color:var(--primary-d)}
.kua-done i{font-size:1.1rem;color:var(--primary);flex-shrink:0}
.kua-done span{flex:1;font-size:.88rem;font-weight:600}
.kua-reselect{padding:5px 12px;background:none;border:1px solid var(--primary);color:var(--primary);border-radius:var(--r8);font-size:.8rem;cursor:pointer;font-family:var(--sans);white-space:nowrap;transition:all .2s;flex-shrink:0}
.kua-reselect:hover{background:var(--primary);color:#fff}

/* 手动粘贴切换按钮 */
.key-manual-toggle{margin-bottom:6px}
.key-manual-btn{background:none;border:none;color:var(--accent);font-size:.82rem;cursor:pointer;padding:2px 0;display:flex;align-items:center;gap:5px;font-family:var(--sans)}
.key-manual-btn:hover{text-decoration:underline}
.cfg-saved-tip{margin-top:8px;font-size:.83rem;color:var(--primary);display:flex;align-items:center;gap:5px}

.config-done-bar{background:linear-gradient(135deg,var(--primary-l),var(--accent-l));border:2px solid rgba(7,193,96,.25);border-radius:var(--r12);padding:18px 24px;margin-bottom:20px}
.cdb-inner{display:flex;align-items:center;justify-content:space-between;gap:24px}
.cdb-progress{display:flex;flex-direction:column;gap:8px;flex:1}
.cdb-progress span{font-size:.88rem;color:var(--t2)}
.cdb-bar{height:6px;background:var(--border);border-radius:100px;overflow:hidden}
.cdb-fill{height:100%;background:linear-gradient(90deg,var(--primary),var(--accent));border-radius:100px;transition:width .3s}
.cdb-missing-hint{font-size:.82rem;color:var(--accent);background:var(--accent-l);border-radius:6px;padding:5px 10px;margin-top:4px;line-height:1.5}
.cdb-missing-hint i{margin-right:4px}

/* =====================================================
   Stage 2 - 部署方式选择
   ===================================================== */
.deploy-method-box{background:var(--bgc);border:1px solid var(--border);border-radius:var(--r12);padding:28px;margin-top:8px}
.dmb-header{display:flex;align-items:flex-start;gap:14px;margin-bottom:24px}
.dmb-header i{font-size:1.3rem;color:var(--accent);margin-top:2px;flex-shrink:0}
.dmb-header h3{margin:0 0 4px;font-size:1.05rem;font-weight:700}
.dmb-header p{margin:0;font-size:.88rem;color:var(--t2)}

.dmb-cards{display:flex;flex-direction:column;gap:10px;margin-bottom:0}
/* 旧大卡片保留类名兼容，紧凑卡片覆盖 */
.dmb-card{border:2px solid var(--border);border-radius:var(--r8);transition:border-color .2s,background .2s;cursor:pointer}
.dmb-card:hover{border-color:var(--accent)}
.dmb-card.selected{border-color:var(--accent);background:var(--accent-l)}

/* 紧凑横向卡片 */
.dmb-card-compact{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;gap:12px}
.dmb-card-compact-left{display:flex;align-items:center;gap:12px;flex:1;min-width:0}
.dmb-compact-icon{width:34px;height:34px;border-radius:var(--r8);background:var(--accent-l);color:var(--accent);display:flex;align-items:center;justify-content:center;font-size:1rem;flex-shrink:0}
.dmb-card.selected .dmb-compact-icon{background:var(--accent);color:#fff}
.dmb-compact-info{flex:1;min-width:0}
.dmb-compact-info h4{margin:0 0 2px;font-size:.9rem;font-weight:700;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.dmb-compact-info p{margin:0;font-size:.8rem;color:var(--t2);line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dmb-for-inline{font-size:.72rem;font-weight:600;color:var(--accent);background:var(--accent-l);border-radius:100px;padding:1px 8px;white-space:nowrap}
.dmb-restrict-inline{font-size:.72rem;font-weight:600;color:var(--warn);background:var(--warn-l);border-radius:100px;padding:1px 8px;white-space:nowrap}

/* 小选择按钮 */
.dmb-select-btn-sm{flex-shrink:0;padding:6px 14px;background:var(--accent);color:#fff;border:none;border-radius:var(--r8);font-size:.82rem;font-weight:600;cursor:pointer;transition:all .2s;display:flex;align-items:center;gap:5px;font-family:var(--sans)}
.dmb-select-btn-sm:hover{background:var(--accent-d)}
.dmb-card.selected .dmb-select-btn-sm{background:var(--primary)}
.dmb-card.selected .dmb-select-btn-sm i{color:#fff}

/* 旧大卡片按钮（保留以防万一） */
.dmb-select-btn{margin-top:auto;width:100%;padding:10px;background:var(--accent);color:#fff;border:none;border-radius:var(--r8);font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:8px;font-family:var(--sans)}
.dmb-select-btn:hover{background:var(--accent-d);transform:translateY(-1px)}
.dmb-card.selected .dmb-select-btn{background:var(--primary)}

/* badge 保留 */
.dmb-badge{display:inline-block;font-size:.7rem;font-weight:700;padding:2px 8px;border-radius:100px}
.dmb-badge.recommended{background:var(--primary);color:#fff}

.dmb-detail{margin-top:20px;border-top:2px solid var(--border);padding-top:20px;animation:fadeInUp .2s ease}
.dmb-step{display:flex;align-items:flex-start;gap:16px;padding:16px 0;border-bottom:1px solid var(--border)}
.dmb-step:last-child{border-bottom:none}
.dmb-step-done{color:var(--primary-d)}
.dmb-step-num{flex-shrink:0;width:32px;height:32px;border-radius:50%;background:var(--accent);color:#fff;font-weight:700;font-size:.88rem;display:flex;align-items:center;justify-content:center;margin-top:2px}
.dmb-step-num.done{background:var(--primary-l);border:2px solid var(--primary);color:var(--primary)}
.dmb-step strong{display:block;font-size:.92rem;margin-bottom:4px}

@media(max-width:700px){
  .dmb-cards{grid-template-columns:1fr}
}

/* tcb setup */
.tcb-setup-box{background:var(--bgc);border:1px solid var(--border);border-radius:var(--r12);padding:28px;margin-top:8px}
.tcb-setup-header{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.tcb-setup-header i{color:var(--primary);font-size:1.2rem}
.tcb-setup-header h3{margin:0;font-size:1.05rem;font-weight:700}

/* 谁做什么 对比行 */
.tcb-why-row{display:flex;align-items:center;gap:12px;margin-bottom:20px}
.tcb-why-item{flex:1;display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:var(--r8);background:var(--bgalt);border:1px solid var(--border)}
.tcb-why-item i{font-size:1.3rem;color:var(--t3);flex-shrink:0}
.tcb-why-item.tcb-why-you{background:var(--primary-l);border-color:rgba(7,193,96,.3)}
.tcb-why-item.tcb-why-you i{color:var(--primary)}
.tcb-why-item strong{display:block;font-size:.88rem;margin-bottom:2px}
.tcb-why-item span{font-size:.8rem;color:var(--t2);line-height:1.4}
.tcb-why-item.tcb-why-you span{color:var(--primary-d)}
.tcb-why-arrow{color:var(--t3);font-size:.9rem;flex-shrink:0}

.tcb-note{font-size:.88rem;color:var(--t2);margin:0 0 14px;line-height:1.6}

/* Agent 指令复制框 */
.tcb-prompt-box{border:1px solid var(--border);border-radius:var(--r8);overflow:hidden;margin-bottom:16px}
.tcb-prompt-header{display:flex;align-items:center;gap:8px;padding:10px 14px;background:#2d3748;color:#e2e8f0;font-size:.85rem;font-family:var(--mono)}
.tcb-prompt-header i{color:var(--primary)}
.tcb-prompt-header span{flex:1}
.tcb-prompt-body{background:#1e2533;padding:14px 16px}
.tcb-prompt-body pre{margin:0;font-family:var(--mono);font-size:.8rem;color:#e2e8f0;white-space:pre-wrap;line-height:1.65}

.tcb-done-note{display:flex;align-items:flex-start;gap:9px;font-size:.84rem;color:var(--primary-d);background:var(--primary-l);border:1px solid rgba(7,193,96,.2);border-radius:var(--r8);padding:10px 14px}
.tcb-done-note i{color:var(--primary);margin-top:2px;flex-shrink:0}

.code-inline{display:flex;align-items:center;gap:8px;background:#1e2533;border-radius:var(--r8);padding:8px 12px;margin-top:6px;font-family:var(--mono);font-size:.85rem;color:#e2e8f0}
.code-inline code{background:none;padding:0;color:#68d391;font-size:.85rem}
.copy-inline-btn{background:none;border:1px solid rgba(255,255,255,.2);color:#a0aec0;padding:3px 8px;border-radius:4px;font-size:.75rem;cursor:pointer;transition:.15s;white-space:nowrap}
.copy-inline-btn:hover{background:rgba(255,255,255,.1);color:#fff}
.inline-link{font-size:.85rem}

@media(max-width:600px){
  .tcb-why-row{flex-direction:column}
  .tcb-why-arrow{transform:rotate(90deg)}
}

/* =====================================================
   Stage 3 - 环境测试
   ===================================================== */
.test-flow{display:flex;flex-direction:column;gap:24px}
.agent-prompt-box{background:var(--bgc);border:1px solid var(--border);border-radius:var(--r12);overflow:hidden}
.apb-header{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#2d3748;color:#e2e8f0;font-size:.88rem;font-family:var(--mono)}
.apb-header i{color:var(--primary)}
.apb-header span{flex:1}
.btn-copy-prompt{background:none;border:1px solid rgba(255,255,255,.2);color:#a0aec0;padding:5px 12px;border-radius:4px;font-size:.78rem;cursor:pointer;transition:.15s;white-space:nowrap;font-family:var(--sans)}
.btn-copy-prompt:hover{background:rgba(255,255,255,.1);color:#fff}
.btn-copy-prompt.copied{color:var(--primary);border-color:var(--primary)}
.apb-body{background:#1e2533;padding:16px;max-height:320px;overflow-y:auto}
.apb-body pre{margin:0;font-family:var(--mono);font-size:.82rem;color:#e2e8f0;white-space:pre-wrap;line-height:1.6}
.prompt-placeholder{color:#a0aec0;font-size:.88rem;display:flex;align-items:center;gap:8px;padding:8px}
.prompt-placeholder i{color:var(--warn)}

.test-steps-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.test-step-card{background:var(--bgc);border:1px solid var(--border);border-radius:var(--r12);padding:20px}
.tsc-icon{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1rem;margin-bottom:12px}
.tsc-icon.agent{background:#eaf3ff;color:var(--accent)}
.tsc-icon.you{background:var(--primary-l);color:var(--primary)}
.tsc-icon.check{background:var(--warn-l);color:var(--warn)}
.test-step-card h4{margin:0 0 10px;font-size:.95rem}
.test-step-card ul{margin:0;padding-left:0;list-style:none;display:flex;flex-direction:column;gap:7px}
.test-step-card li{font-size:.87rem;color:var(--t2);display:flex;align-items:center;gap:7px}
.test-step-card li i{color:var(--primary);font-size:.8rem}

.stage-done-row{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px 24px;background:var(--primary-l);border:1px solid rgba(7,193,96,.2);border-radius:var(--r12)}
.sdr-check{display:flex;align-items:center;gap:10px;font-size:.95rem;font-weight:500}
.sdr-check input{width:18px;height:18px;accent-color:var(--primary)}

/* =====================================================
   Stage 4 - 需求表单 + 文档预览
   ===================================================== */
.brief-layout{display:flex;flex-direction:column;gap:32px}
.brief-form{display:flex;flex-direction:column;gap:24px}

.bf-group{background:var(--bgc);border:1px solid var(--border);border-radius:var(--r12);overflow:hidden}
.bf-group-title{display:flex;align-items:center;gap:12px;padding:14px 18px;background:var(--bgalt);border-bottom:1px solid var(--border);font-weight:600;font-size:.95rem}
.bf-gnum{width:26px;height:26px;border-radius:6px;background:var(--primary);color:#fff;font-size:.8rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.bf-fields{padding:18px;display:grid;grid-template-columns:1fr 1fr;gap:16px}
.bf-field{display:flex;flex-direction:column;gap:6px}
.bf-field.full{grid-column:1/-1}
.bf-field label{font-size:.88rem;font-weight:600;color:var(--t1);display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.field-hint{font-weight:400;color:var(--t2);font-size:.8rem}
.req{background:var(--danger);color:#fff;font-size:.7rem;padding:2px 6px;border-radius:3px}
.bf-input{padding:9px 12px;border:1px solid var(--border);border-radius:var(--r8);font-size:.9rem;font-family:var(--sans);transition:border .15s;color:var(--t1)}
.bf-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(7,193,96,.1)}
.bf-textarea{padding:9px 12px;border:1px solid var(--border);border-radius:var(--r8);font-size:.88rem;font-family:var(--sans);resize:vertical;transition:border .15s;color:var(--t1);line-height:1.6}
.bf-textarea.small{font-size:.85rem}
.bf-textarea:focus{outline:none;border-color:var(--primary)}

/* tag select */
.tag-select{display:flex;flex-wrap:wrap;gap:8px}
.tag-btn{padding:6px 14px;border-radius:100px;border:1px solid var(--border);background:var(--bgalt);font-size:.85rem;cursor:pointer;transition:all .15s;font-family:var(--sans);color:var(--t1)}
.tag-btn:hover{border-color:var(--primary);color:var(--primary)}
.tag-btn.sel{background:var(--primary);border-color:var(--primary);color:#fff}

/* tabbar builder */
.tabbar-builder{display:flex;flex-direction:column;gap:12px}
.tb-preview{display:flex;background:#1e2533;border-radius:var(--r8);padding:10px 16px;gap:4px;min-height:52px;align-items:center}
.tb-placeholder{color:#718096;font-size:.8rem;margin:auto}
.tb-preview-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;padding:4px}
.tb-dot{width:18px;height:18px;border-radius:50%;background:rgba(255,255,255,.15)}
.tb-preview-item.active-tab .tb-dot{background:var(--primary)}
.tb-preview-item span{font-size:.7rem;color:#a0aec0;white-space:nowrap}
.tb-preview-item.active-tab span{color:var(--primary)}
.tb-inputs{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}

/* style cards */
.style-cards{display:flex;gap:12px;flex-wrap:wrap}
.style-card{display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer;padding:12px;border-radius:var(--r12);border:2px solid var(--border);transition:all .2s;min-width:90px}
.style-card:hover{border-color:var(--primary)}
.style-card.sel{border-color:var(--accent);background:var(--accent-l)}
.sc-preview{width:48px;height:32px;border-radius:6px}
.style-card strong{font-size:.82rem;display:block}
.style-card small{font-size:.72rem;color:var(--t2);text-align:center}

/* color row */
.color-row{display:flex;align-items:center;gap:10px}
#f-colorPicker{width:40px;height:40px;border:none;padding:0;cursor:pointer;border-radius:var(--r8);background:none}
.color-hex{width:90px!important;font-family:var(--mono)!important}
.color-presets{display:flex;gap:5px;flex-wrap:wrap}
.cp-btn{width:24px;height:24px;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:.15s}
.cp-btn:hover,.cp-btn.sel{border-color:var(--t1);transform:scale(1.2)}

/* radio / checkbox */
.radio-group{display:flex;flex-direction:column;gap:8px}
.radio-item{display:flex;align-items:center;gap:8px;font-size:.88rem;cursor:pointer}
.radio-item input{accent-color:var(--primary);width:15px;height:15px}
.checkbox-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.cb-item{display:flex;align-items:center;gap:7px;font-size:.87rem;cursor:pointer;padding:7px 10px;border:1px solid var(--border);border-radius:var(--r8);transition:.15s}
.cb-item:hover{border-color:var(--primary);background:var(--primary-l)}
.cb-item input{accent-color:var(--primary)}
.cb-item i{color:var(--primary);width:14px}

/* ── 核心功能描述：左右布局 ── */
.func-input-layout{display:grid;grid-template-columns:1fr 260px;gap:14px;align-items:start}
.func-input-left{display:flex;flex-direction:column;gap:6px}
.func-input-left label{font-size:.88rem;font-weight:600;color:var(--t1);display:flex;align-items:center;gap:6px}
.func-textarea{width:100%;min-height:220px;resize:vertical}

/* 常驻引导面板 */
.func-guide-panel{background:var(--bgalt);border:1px solid var(--border);border-radius:var(--r8);overflow:hidden;position:sticky;top:calc(var(--hh) + 64px)}
.fgp-header{display:flex;align-items:center;gap:7px;padding:10px 14px;background:var(--warn-l);border-bottom:1px solid var(--border);font-size:.82rem;font-weight:700;color:#7c5500}
.fgp-header i{color:var(--warn)}
.fgp-body{padding:12px 14px}
.fgp-tip{font-size:.8rem;color:var(--t2);margin:0 0 10px;line-height:1.6}
.fgp-example-label{font-size:.75rem;font-weight:700;color:var(--t3);text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px}
.fgp-examples{display:flex;flex-direction:column;gap:3px}
.fgp-ex-item{display:flex;align-items:center;gap:6px;padding:5px 8px;border-radius:var(--r4);transition:background .12s;cursor:default}
.fgp-ex-item:hover{background:var(--bgc)}
.fgp-ex-item span{flex:1;font-size:.78rem;color:var(--t2);line-height:1.45}
.fgp-copy-btn{flex-shrink:0;width:20px;height:20px;border-radius:4px;background:none;border:1px solid var(--border);color:var(--t3);font-size:.65rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;padding:0}
.fgp-copy-btn:hover{background:var(--primary);border-color:var(--primary);color:#fff;transform:scale(1.1)}
.fgp-copy-btn.added{background:var(--primary-l);border-color:var(--primary);color:var(--primary)}
.fgp-hint{font-size:.75rem;color:var(--t3);margin:8px 0 0;line-height:1.5}
.fgp-hint i{color:var(--primary);margin-right:2px}

@media(max-width:860px){
  .func-input-layout{grid-template-columns:1fr}
  .func-guide-panel{position:static}
}

/* spec carry bar */
.spec-carry-bar{display:flex;align-items:center;padding:10px 14px;background:var(--bgalt);border:1px solid var(--border);border-radius:var(--r8);margin-bottom:0}
.scb-toggle{display:flex;align-items:center;gap:10px;cursor:pointer;width:100%}
.scb-toggle input{accent-color:var(--primary);width:15px;height:15px;flex-shrink:0;cursor:pointer}
.scb-label{display:flex;align-items:center;gap:7px;font-size:.84rem;color:var(--t2);user-select:none}
.scb-label i{color:var(--primary);font-size:.85rem}
.scb-toggle input:checked ~ .scb-label{color:var(--t1)}

/* doc panel download entry */
.dp-dl-entry{margin-top:10px;border-top:1px solid var(--border);padding-top:10px}
.dp-dl-link{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--primary-l);border:1px solid rgba(7,193,96,.25);border-radius:var(--r8);font-size:.82rem;color:var(--primary-d);font-weight:600;text-decoration:none;transition:all .2s}
.dp-dl-link:hover{background:var(--primary);color:#fff;text-decoration:none}
.dp-dl-link i:first-child{font-size:.95rem}
.dp-dl-link i:last-child{margin-left:auto;font-size:.78rem;opacity:.7}

/* generate button */
.generate-btn{width:100%;padding:14px;background:linear-gradient(135deg,var(--primary),var(--accent));color:#fff;border:none;border-radius:var(--r12);font-size:1rem;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:10px;transition:all .2s;font-family:var(--sans);box-shadow:0 4px 14px rgba(7,193,96,.3)}
.generate-btn:hover{transform:translateY(-1px);box-shadow:0 6px 20px rgba(7,193,96,.4)}

/* ── AI 增强区域 ── */
.ai-enhance-block{margin-top:12px;border:1px solid rgba(139,92,246,.35);border-radius:var(--r12);overflow:hidden;background:linear-gradient(135deg,rgba(139,92,246,.04),rgba(59,130,246,.04))}
.aie-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 16px;cursor:pointer;user-select:none;transition:background .15s}
.aie-header:hover{background:rgba(139,92,246,.06)}
.aie-header-left{display:flex;align-items:center;gap:10px}
.aie-icon{font-size:1.15rem;line-height:1}
.aie-header strong{display:block;font-size:.92rem;color:var(--t1)}
.aie-desc{font-size:.8rem;color:var(--t2);margin-top:1px}
.aie-chevron{color:var(--t3);transition:transform .2s;font-size:.85rem}
.aie-chevron.open{transform:rotate(180deg)}
.aie-body{padding:0 16px 16px;display:flex;flex-direction:column;gap:12px}
.aie-provider-row{display:flex;gap:6px;flex-wrap:wrap}
.aie-provider-btn{padding:5px 14px;border:1px solid var(--border);border-radius:100px;background:var(--bgalt);color:var(--t2);font-size:.82rem;cursor:pointer;transition:all .15s;font-family:var(--sans)}
.aie-provider-btn:hover{border-color:rgba(139,92,246,.5);color:#7c3aed}
.aie-provider-btn.sel{background:rgba(139,92,246,.12);border-color:#7c3aed;color:#7c3aed;font-weight:600}
.aie-fields{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}
.aie-field{display:flex;flex-direction:column;gap:4px}
.aie-field-grow{flex:1;min-width:200px}
.aie-field label{font-size:.78rem;color:var(--t2);font-weight:600}
.aie-field select,.aie-field input[type="text"],.aie-field input[type="password"]{padding:8px 11px;border:1px solid var(--border);border-radius:var(--r8);background:var(--bgc);color:var(--t1);font-size:.85rem;font-family:var(--sans);transition:border-color .15s}
.aie-field select:focus,.aie-field input:focus{outline:none;border-color:#7c3aed;box-shadow:0 0 0 3px rgba(139,92,246,.12)}
.aie-key-row{display:flex;gap:0}
.aie-key-row input{flex:1;border-radius:var(--r8) 0 0 var(--r8)}
.aie-eye-btn{padding:0 11px;border:1px solid var(--border);border-left:none;border-radius:0 var(--r8) var(--r8) 0;background:var(--bgalt);color:var(--t2);cursor:pointer;font-size:.85rem;transition:all .15s}
.aie-eye-btn:hover{color:#7c3aed;background:rgba(139,92,246,.08)}
.aie-key-tip{font-weight:400;color:var(--t3);font-size:.72rem;margin-left:5px}
.aie-info{display:flex;align-items:flex-start;gap:8px;padding:10px 12px;background:rgba(59,130,246,.06);border:1px solid rgba(59,130,246,.2);border-radius:var(--r8);font-size:.82rem;color:var(--t2);line-height:1.6}
.aie-info i{color:#3b82f6;margin-top:2px;flex-shrink:0}
.aie-run-btn{width:100%;padding:12px;background:linear-gradient(135deg,#7c3aed,#3b82f6);color:#fff;border:none;border-radius:var(--r8);font-size:.92rem;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:all .2s;font-family:var(--sans);box-shadow:0 3px 12px rgba(124,58,237,.3)}
.aie-run-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 5px 18px rgba(124,58,237,.4)}
.aie-run-btn:disabled{opacity:.55;cursor:not-allowed;transform:none}
.aie-status{padding:12px 14px;background:var(--bgalt);border:1px solid var(--border);border-radius:var(--r8);font-size:.82rem;color:var(--t2);line-height:1.6;max-height:120px;overflow-y:auto;font-family:var(--mono)}
.aie-status.error{background:rgba(245,101,101,.06);border-color:rgba(245,101,101,.3);color:#c53030}
.aie-status.success{background:rgba(7,193,96,.06);border-color:rgba(7,193,96,.3);color:#276749}
/* AI增强版徽章 */
.dp-ai-badge{font-size:.72rem;background:linear-gradient(135deg,rgba(139,92,246,.25),rgba(59,130,246,.2));color:#c4b5fd;padding:2px 9px;border-radius:100px;border:1px solid rgba(139,92,246,.3);font-weight:600;letter-spacing:.02em}

/* doc panel */
.doc-panel{position:relative}
.doc-panel-sticky{background:var(--bgc);border:1px solid var(--border);border-radius:var(--r12);overflow:hidden;display:flex;flex-direction:column}
.dp-header{display:flex;align-items:center;gap:8px;padding:12px 16px;background:#2d3748;color:#e2e8f0;font-size:.88rem;flex-shrink:0}
.dp-header i{color:var(--primary)}
.dp-header span:nth-child(2){flex:1}
.dp-status{font-size:.75rem;background:rgba(255,255,255,.1);padding:2px 8px;border-radius:100px}
.dp-status.ready{background:rgba(7,193,96,.2);color:#68d391}
.dp-progress{padding:10px 14px;border-bottom:1px solid var(--border);flex-shrink:0;display:flex;align-items:center;gap:10px}
.dp-bar{flex:1;height:5px;background:var(--bgalt);border-radius:100px;overflow:hidden}
.dp-fill{height:100%;background:linear-gradient(90deg,var(--primary),var(--accent));border-radius:100px;transition:width .3s}
.dp-progress span{font-size:.78rem;color:var(--t2);white-space:nowrap}
.dp-output{flex:1;overflow-y:auto;background:#1e2533;max-height:600px}
.dp-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;height:200px;color:#718096;gap:10px;font-size:.88rem;text-align:center}
.dp-placeholder i{font-size:1.8rem;color:#4a5568}
.doc-text{margin:0;padding:14px;font-family:var(--mono);font-size:.78rem;color:#e2e8f0;white-space:pre-wrap;line-height:1.65}
.dp-actions{padding:12px 14px;border-top:1px solid var(--border);display:flex;gap:10px;flex-shrink:0}
.dp-btn{flex:1;padding:9px;border-radius:var(--r8);font-size:.85rem;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px;transition:all .2s;font-family:var(--sans);border:1px solid var(--border);background:var(--bgalt);color:var(--t1)}
.dp-btn:hover{border-color:var(--accent);color:var(--accent)}
.dp-btn.primary{background:var(--primary);color:#fff;border-color:var(--primary)}
.dp-btn.primary:hover{background:var(--primary-d)}
.dp-btn.copied{background:var(--primary-l);color:var(--primary-d)}
.dp-howto{padding:14px;border-top:1px solid var(--border);flex-shrink:0;background:var(--bgalt)}
.dp-howto h4{margin:0 0 8px;font-size:.85rem;display:flex;align-items:center;gap:6px;color:var(--t1)}
.dp-howto h4 i{color:var(--accent)}
.dp-howto ol{margin:0;padding-left:1.2em;font-size:.82rem;color:var(--t2);line-height:1.7}

/* =====================================================
   Stage 5 - 优化上线
   ===================================================== */
.two-col-layout{display:grid;grid-template-columns:1fr 1fr;gap:32px}
.panel{background:var(--bgc);border:1px solid var(--border);border-radius:var(--r12);padding:28px}
.panel h3{margin:0 0 6px;font-size:1.05rem;display:flex;align-items:center;gap:8px}
.panel h3 i{color:var(--primary)}
.panel-sub{color:var(--t2);font-size:.88rem;margin:0 0 20px}

.bug-template-box{border:1px solid var(--border);border-radius:var(--r8);overflow:hidden;margin-bottom:24px}
.btb-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:#2d3748;color:#e2e8f0;font-size:.85rem}
.btn-copy-small{background:none;border:1px solid rgba(255,255,255,.2);color:#a0aec0;padding:3px 10px;border-radius:4px;font-size:.75rem;cursor:pointer;font-family:var(--sans);transition:.15s}
.btn-copy-small:hover{background:rgba(255,255,255,.1);color:#fff}
.bug-template{background:#1e2533;margin:0;padding:14px;font-family:var(--mono);font-size:.8rem;color:#e2e8f0;line-height:1.7;white-space:pre-wrap;max-height:240px;overflow-y:auto}

.iterate-flow h4{margin:0 0 14px;font-size:.95rem}
.if-steps{display:flex;flex-direction:column;align-items:flex-start;gap:0}
.if-step{display:flex;align-items:center;gap:10px;padding:8px 0}
.ifs-icon{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.85rem;flex-shrink:0}
.ifs-icon.you{background:var(--primary-l);color:var(--primary)}
.ifs-icon.agent{background:var(--accent-l);color:var(--accent)}
.if-step span{font-size:.88rem;color:var(--t2)}
.if-arrow{padding:0 0 0 15px;color:var(--t3);font-size:.8rem}

.publish-steps{display:flex;flex-direction:column;gap:0}
.pub-step{display:flex;gap:14px;padding:16px 0;border-bottom:1px solid var(--border)}
.pub-step:last-child{border-bottom:none}
.pub-step.pub-done .ps-num{background:var(--primary-l);border:2px solid var(--primary);color:var(--primary)}
.ps-num{flex-shrink:0;width:32px;height:32px;border-radius:50%;background:var(--primary);color:#fff;font-weight:700;font-size:.88rem;display:flex;align-items:center;justify-content:center;margin-top:2px}
.ps-num.done{background:var(--primary-l);border:2px solid var(--primary);color:var(--primary)}
.ps-body h4{margin:0 0 4px;font-size:.92rem}
.ps-body p{margin:4px 0 0;font-size:.85rem;color:var(--t2)}

/* =====================================================
   规范手册
   ===================================================== */
.refbook-zone{background:var(--bgalt)}
.refbook-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:32px}
.rb-card{background:var(--bgc);border:1px solid var(--border);border-radius:var(--r12);overflow:hidden;cursor:pointer}
.rb-card-header{display:flex;align-items:center;gap:10px;padding:14px 18px;font-weight:600;font-size:.95rem;transition:background .15s}
.rb-card-header:hover{background:var(--bgalt)}
.rb-card-header i:first-child{color:var(--primary)}
.rb-card-header span{flex:1}
.rb-chevron{color:var(--t3);font-size:.8rem;transition:transform .25s}
.rb-card.open .rb-chevron{transform:rotate(180deg)}
.rb-card-body{display:none;padding:18px;border-top:1px solid var(--border)}
.rb-card.open .rb-card-body{display:block}
.ref-tree,.ref-code{margin:0;font-family:var(--mono);font-size:.8rem;color:var(--t1);line-height:1.7;background:var(--bgalt);padding:14px;border-radius:var(--r8);overflow-x:auto}
.ref-rules{display:flex;flex-direction:column;gap:6px;margin-top:14px}
.rr-item{padding:6px 10px;border-radius:var(--r4);font-size:.82rem}
.rr-item.must{background:#f0fff6;color:#0a5c2e;border-left:3px solid var(--primary)}
.rr-item.should{background:var(--accent-l);color:#1e3a5f;border-left:3px solid var(--accent)}
.rr-item.no{background:var(--danger-l);color:#7c0000;border-left:3px solid var(--danger)}
.ref-db-list{display:flex;flex-direction:column;gap:8px}
.rdb-item{padding:8px 12px;background:var(--bgalt);border-radius:var(--r8);font-size:.85rem;color:var(--t2)}
.rdb-item code{color:var(--accent)}

/* 规范手册检查清单 */
.ref-checklist{display:flex;flex-direction:column;gap:0}
.rcl-group-title{font-size:.8rem;font-weight:700;color:var(--t2);text-transform:uppercase;letter-spacing:.05em;margin:14px 0 6px;padding:0 2px}
.rcl-group-title:first-child{margin-top:0}
.rcl-item{display:flex;align-items:flex-start;gap:10px;padding:7px 8px;border-radius:var(--r4);transition:background .12s;cursor:pointer}
.rcl-item:hover{background:var(--bgalt)}
.rcl-item input{accent-color:var(--primary);width:15px;height:15px;flex-shrink:0;margin-top:2px;cursor:pointer}
.rcl-item label{font-size:.83rem;color:var(--t2);cursor:pointer;line-height:1.5}
.rcl-item.done label{text-decoration:line-through;color:var(--t3)}

.download-bar{display:flex;align-items:center;justify-content:space-between;gap:20px;background:linear-gradient(135deg,var(--primary-l),var(--accent-l));border:1px solid rgba(7,193,96,.2);border-radius:var(--r12);padding:24px 28px}
.dl-bar-left{display:flex;align-items:center;gap:14px}
.dl-bar-left i{font-size:1.8rem;color:var(--primary)}
.dl-bar-left strong{display:block;margin-bottom:3px}
.dl-bar-left p{margin:0;font-size:.88rem;color:var(--t2)}

/* =====================================================
   Footer + 回到顶部
   ===================================================== */
.site-footer{background:#111827;color:#9ca3af;padding:32px 0;border-top:1px solid #1f2937}
.footer-inner{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px}
.footer-left{display:flex;flex-direction:column;gap:6px}
.footer-brand{display:flex;align-items:center;gap:8px;color:#e5e7eb;font-weight:700;font-size:.95rem}
.footer-brand svg{flex-shrink:0;opacity:.9}
.footer-by{font-size:.8rem;color:#6b7280;padding-left:30px}
.footer-by strong{color:#9ca3af}
.footer-links{display:flex;gap:20px;flex-wrap:wrap}
.footer-links a{color:#9ca3af;font-size:.85rem}
.footer-links a:hover{color:#fff}
.footer-meta{font-size:.78rem;text-align:right;line-height:1.8}
.footer-lab{color:#6b7280;font-size:.75rem}
.back-to-top{position:fixed;bottom:24px;right:24px;width:42px;height:42px;border-radius:50%;background:var(--primary);color:#fff;border:none;cursor:pointer;font-size:.95rem;display:flex;align-items:center;justify-content:center;box-shadow:var(--sh);opacity:0;pointer-events:none;transition:.3s}
.back-to-top.visible{opacity:1;pointer-events:auto}
.back-to-top:hover{background:var(--primary-d);transform:translateY(-2px)}

/* =====================================================
   响应式
   ===================================================== */
@media(max-width:1100px){
  /* brief-layout already single column */
}
@media(max-width:900px){
  .choice-cards{grid-template-columns:1fr}
  .test-steps-grid{grid-template-columns:1fr}
  .two-col-layout{grid-template-columns:1fr}
  .refbook-grid{grid-template-columns:1fr}
  .tb-inputs{grid-template-columns:repeat(3,1fr)}
}
@media(max-width:768px){
  .main-nav{display:none}
  .main-nav.open{display:flex;flex-direction:column;position:fixed;top:var(--hh);left:0;right:0;background:#fff;border-bottom:1px solid var(--border);padding:16px;z-index:999;box-shadow:var(--sh-lg)}
  .hamburger{display:flex}
  .global-progress{display:none}
  .hero{padding:48px 0 40px}
  .stage{padding:48px 0}
  .bf-fields{grid-template-columns:1fr}
  .bf-field.full{grid-column:1}
  .checkbox-grid{grid-template-columns:1fr 1fr}
  .cdb-inner{flex-direction:column;align-items:stretch}
  .stage-done-row{flex-direction:column;align-items:stretch;text-align:center}
  .download-bar{flex-direction:column}
  .footer-inner{flex-direction:column;align-items:flex-start}
  .footer-meta{text-align:left}
}
@media(max-width:480px){
  .hero-four{flex-direction:column;align-items:center}
  .hero-actions{flex-direction:column;align-items:center}
  .tb-inputs{grid-template-columns:1fr 1fr}
  .style-cards{justify-content:center}
  .checkbox-grid{grid-template-columns:1fr}
  .container{padding:0 16px}
}
