/* r169 批次3: Launch 发射平台样式 (移动优先, 紧凑) */
.no-scrollbar::-webkit-scrollbar { display: none; }
.no-scrollbar { -ms-overflow-style: none; scrollbar-width: none; }

.launch-hero {
  background: linear-gradient(135deg, rgba(16,185,129,0.10), rgba(59,130,246,0.06));
  border: 1px solid rgba(16,185,129,0.20);
}
.launch-stat-card {
  background: rgba(15,23,42,0.55);
  border: 1px solid rgba(71,85,105,0.30);
  border-radius: 0.7rem;
  padding: 0.7rem 0.6rem;
  text-align: center;
}
.launch-stat-val { font-size: 1.05rem; font-weight: 700; color: #34d399; line-height: 1.2; }
.launch-stat-label { font-size: 0.65rem; color: #94a3b8; margin-top: 0.2rem; }

/* 分类 tab */
.launch-tab {
  flex: 0 0 auto;
  padding: 0.4rem 0.85rem;
  border-radius: 999px;
  font-size: 0.78rem;
  color: #94a3b8;
  background: rgba(30,41,59,0.5);
  border: 1px solid transparent;
  transition: all .15s;
}
.launch-tab.active {
  color: #fff;
  background: rgba(16,185,129,0.18);
  border-color: rgba(16,185,129,0.40);
}

/* 项目卡片 */
.launch-card {
  background: rgba(15,23,42,0.55);
  border: 1px solid rgba(71,85,105,0.30);
  border-radius: 0.9rem;
  padding: 0.85rem;
  cursor: pointer;
  transition: all .15s;
}
.launch-card:hover { border-color: rgba(16,185,129,0.45); transform: translateY(-2px); }
.launch-logo {
  width: 42px; height: 42px; border-radius: 0.6rem;
  object-fit: cover; background: #1e293b;
  display:flex; align-items:center; justify-content:center;
  font-weight:700; color:#64748b; font-size: 1rem;
}

/* 状态徽章 */
.launch-badge {
  font-size: 0.62rem; padding: 0.12rem 0.5rem; border-radius: 999px;
  font-weight: 600; white-space: nowrap;
}
.badge-draft         { background: rgba(100,116,139,.18); color:#cbd5e1; }
.badge-pending_review{ background: rgba(245,158,11,.16); color:#fcd34d; }
.badge-approved      { background: rgba(59,130,246,.16); color:#93c5fd; }
.badge-pending_deploy{ background: rgba(168,85,247,.16); color:#d8b4fe; }
.badge-launching     { background: rgba(16,185,129,.18); color:#6ee7b7; }
.badge-graduated     { background: rgba(34,197,94,.20); color:#86efac; }
.badge-paused        { background: rgba(100,116,139,.20); color:#94a3b8; }
.badge-high_risk     { background: rgba(239,68,68,.18); color:#fca5a5; }
.badge-rejected      { background: rgba(239,68,68,.14); color:#f87171; }

/* 进度条 */
.curve-bar { height: 6px; background: rgba(71,85,105,.35); border-radius: 999px; overflow: hidden; }
.curve-fill { height: 100%; background: linear-gradient(90deg,#10b981,#34d399); border-radius: 999px; transition: width .4s; }

/* 创建步骤 */
.create-step { display:flex; flex-direction:column; align-items:center; gap:0.25rem; opacity:.45; transition: opacity .2s; }
.create-step.active, .create-step.done { opacity: 1; }
.create-step-num {
  width: 28px; height:28px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  font-size:0.8rem; font-weight:700;
  background: rgba(71,85,105,.4); color:#cbd5e1;
}
.create-step.active .create-step-num { background:#10b981; color:#04140d; }
.create-step.done .create-step-num   { background: rgba(16,185,129,.3); color:#6ee7b7; }
.create-step-txt { font-size: 0.66rem; color:#94a3b8; }
.create-step-line { flex:0 0 32px; height:2px; background: rgba(71,85,105,.4); margin:0 0.2rem; margin-bottom: 1rem; }

/* 表单 */
.launch-label { display:block; font-size:0.72rem; color:#94a3b8; margin-bottom:0.3rem; font-weight:500; }
.launch-input {
  width:100%; background: rgba(15,23,42,.6); border:1px solid rgba(71,85,105,.4);
  border-radius:0.55rem; padding:0.55rem 0.7rem; font-size:0.85rem; color:#f1f5f9;
  outline:none; transition: border-color .15s;
}
.launch-input:focus { border-color: rgba(16,185,129,.55); }
.launch-type-btn {
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  padding:0.7rem; border-radius:0.7rem; font-size:0.85rem;
  background: rgba(15,23,42,.55); border:1px solid rgba(71,85,105,.4);
  color:#cbd5e1; transition: all .15s;
}
.launch-type-btn.active { border-color: rgba(16,185,129,.55); background: rgba(16,185,129,.12); color:#fff; }
.launch-type-btn i { font-size: 1.1rem; color:#34d399; }

/* 详情页字段 */
.detail-kv { display:flex; justify-content:space-between; padding:0.5rem 0; border-bottom:1px solid rgba(71,85,105,.2); font-size:0.82rem; }
.detail-kv:last-child { border-bottom:none; }
.detail-kv .k { color:#94a3b8; }
.detail-kv .v { color:#f1f5f9; font-weight:500; text-align:right; }

/* r169 batch3.1: 模板卡片 */
.tpl-card {
  position: relative;
  background: rgba(15,23,42,0.55);
  border: 1.5px solid rgba(71,85,105,0.32);
  border-radius: 0.9rem;
  padding: 0.95rem;
  cursor: pointer;
  transition: all .15s;
}
.tpl-card:hover { border-color: rgba(148,163,184,0.5); transform: translateY(-2px); }
.tpl-card.selected { border-color: rgba(16,185,129,0.75); box-shadow: 0 0 0 3px rgba(16,185,129,0.12); background: rgba(16,185,129,0.05); }
.tpl-card.accent-blue.selected   { border-color: rgba(59,130,246,0.75); box-shadow: 0 0 0 3px rgba(59,130,246,0.12); background: rgba(59,130,246,0.05); }
.tpl-card.accent-cyan.selected   { border-color: rgba(0,229,255,0.7); box-shadow: 0 0 0 3px rgba(0,229,255,0.12); background: rgba(0,229,255,0.05); }
.tpl-card.accent-purple.selected { border-color: rgba(168,85,247,0.75); box-shadow: 0 0 0 3px rgba(168,85,247,0.12); background: rgba(168,85,247,0.05); }
.tpl-card .tpl-check {
  position:absolute; top:0.7rem; right:0.7rem; width:20px; height:20px; border-radius:50%;
  display:none; align-items:center; justify-content:center; font-size:0.65rem;
  background:#10b981; color:#04140d;
}
.tpl-card.selected .tpl-check { display:flex; }
.tpl-recommend {
  position:absolute; top:-1px; left:0.9rem; transform:translateY(-50%);
  font-size:0.6rem; font-weight:700; padding:0.1rem 0.5rem; border-radius:999px;
  background:linear-gradient(90deg,#10b981,#34d399); color:#04140d;
}
.tpl-name { font-size:0.95rem; font-weight:700; color:#f1f5f9; }
.tpl-suitable { font-size:0.66rem; color:#94a3b8; margin-top:0.15rem; line-height:1.35; }
.tpl-tags { display:flex; flex-wrap:wrap; gap:0.25rem; margin-top:0.5rem; }
.tpl-tag { font-size:0.58rem; padding:0.08rem 0.4rem; border-radius:999px; background:rgba(71,85,105,.3); color:#cbd5e1; }
.tpl-params { margin-top:0.6rem; padding-top:0.6rem; border-top:1px solid rgba(71,85,105,.22); font-size:0.66rem; color:#94a3b8; display:grid; grid-template-columns:1fr 1fr; gap:0.2rem 0.5rem; }
.tpl-params b { color:#e2e8f0; font-weight:600; }
.tpl-apply-btn {
  width:100%; margin-top:0.7rem; padding:0.45rem; border-radius:0.55rem; font-size:0.78rem; font-weight:600;
  background:rgba(71,85,105,.35); color:#e2e8f0; transition:all .15s; border:1px solid transparent;
}
.tpl-card.selected .tpl-apply-btn { background:rgba(16,185,129,.2); color:#6ee7b7; border-color:rgba(16,185,129,.4); }

/* 字段错误提示 */
.field-err { font-size:0.66rem; color:#f87171; margin-top:0.2rem; min-height:0; display:none; }
.field-err.show { display:block; }
.launch-input.invalid { border-color: rgba(239,68,68,.6); }

/* 税率快捷选项 */
.tax-quick { display:flex; flex-wrap:wrap; gap:0.35rem; }
.tax-opt {
  padding:0.35rem 0.7rem; border-radius:0.5rem; font-size:0.78rem; font-weight:600;
  background:rgba(15,23,42,.6); border:1px solid rgba(71,85,105,.4); color:#cbd5e1; transition:all .12s;
}
.tax-opt.active { background:rgba(168,85,247,.16); border-color:rgba(168,85,247,.55); color:#d8b4fe; }

/* 去掉 number input 上下箭头 */
.launch-input[type=number]::-webkit-outer-spin-button,
.launch-input[type=number]::-webkit-inner-spin-button { -webkit-appearance:none; margin:0; }
.launch-input[type=number] { -moz-appearance:textfield; }

/* 移动端字体缩小 (响应批次4方向, 此处先行) */
@media (max-width: 640px) {
  .launch-stat-val { font-size: 0.9rem; }
  .launch-stat-label { font-size: 0.6rem; }
  .launch-card { padding: 0.65rem; }
  .launch-hero { padding: 1rem !important; }
  .launch-hero h1 { font-size: 1.05rem !important; }
  .tpl-card { padding: 0.8rem; }
  .create-step-txt { font-size: 0.58rem; }
  .create-step-line { flex: 0 0 18px; }
}
