/* 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; }
}

/* ============ R194 (业务闭环·二): 项目流程进度条 ============ */
.lp-flow-guide { /* 容器在 JS 注入, 这里仅样式 */ }
.lp-steps { display:flex; align-items:flex-start; justify-content:space-between; gap:0; }
.lp-step { display:flex; flex-direction:column; align-items:center; gap:4px; flex:0 0 auto; width:18%; text-align:center; }
.lp-step-line { flex:1 1 auto; height:2px; background:rgba(71,85,105,.4); margin-top:13px; min-width:8px; }
.lp-step-dot {
  width:28px; height:28px; border-radius:999px; display:flex; align-items:center; justify-content:center;
  font-size:0.72rem; font-weight:700; border:2px solid rgba(71,85,105,.5); background:rgba(15,23,42,.6); color:#94a3b8;
}
.lp-step-label { font-size:0.6rem; color:#94a3b8; line-height:1.2; }
.lp-step-done .lp-step-dot { background:rgba(34,197,94,.18); border-color:rgba(34,197,94,.6); color:#86efac; }
.lp-step-done .lp-step-label { color:#86efac; }
.lp-step-active .lp-step-dot { background:rgba(34,211,238,.18); border-color:rgba(34,211,238,.7); color:#67e8f9; box-shadow:0 0 0 3px rgba(34,211,238,.12); }
.lp-step-active .lp-step-label { color:#67e8f9; }
@media (max-width: 480px) {
  .lp-step-dot { width:24px; height:24px; font-size:0.66rem; }
  .lp-step-label { font-size:0.52rem; }
  .lp-step-line { margin-top:11px; }
}

/* 正式链上发射 / 建池执行面板 */
.pool-exec-overlay { position:fixed; inset:0; z-index:70; display:flex; align-items:center; justify-content:center; padding:16px; background:rgba(0,5,12,.82); backdrop-filter:blur(8px); }
.pool-exec-panel { width:min(980px,100%); max-height:94vh; overflow:auto; border:1px solid rgba(34,211,238,.24); border-radius:18px; background:#09111f; box-shadow:0 24px 80px rgba(0,0,0,.55); padding:20px; }
.pool-exec-header { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin-bottom:16px; }
.pool-exec-header h3 { color:#f8fafc; font-size:1.05rem; font-weight:700; }
.pool-exec-header p { color:#94a3b8; font-size:.72rem; margin-top:4px; }
.pool-exec-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.pool-exec-grid label { color:#94a3b8; font-size:.7rem; }
.pool-exec-grid .launch-input { margin-top:5px; }
.pool-exec-check { min-height:62px; display:flex; align-items:center; gap:8px; padding-top:20px; color:#e2e8f0 !important; }
.pool-exec-check input { accent-color:#22d3ee; }
.pool-exec-summary { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1px; overflow:hidden; margin-top:16px; border:1px solid rgba(71,85,105,.3); border-radius:12px; background:rgba(71,85,105,.3); }
.pool-exec-summary div { min-width:0; display:flex; justify-content:space-between; gap:12px; padding:9px 11px; background:rgba(15,23,42,.92); }
.pool-exec-summary span { flex:0 0 auto; color:#94a3b8; font-size:.68rem; }
.pool-exec-summary b { min-width:0; color:#e2e8f0; font:500 .68rem/1.35 ui-monospace,SFMono-Regular,Menlo,monospace; text-align:right; overflow-wrap:anywhere; }
.pool-exec-progress { margin-top:16px; padding:12px; border:1px solid rgba(71,85,105,.3); border-radius:12px; background:rgba(15,23,42,.52); }
.pool-exec-history { display:grid; grid-template-columns:130px 1fr auto; gap:10px; align-items:center; padding:7px 0; border-bottom:1px solid rgba(71,85,105,.22); font-size:.68rem; }
.pool-exec-history a { color:#67e8f9; font-family:ui-monospace,SFMono-Regular,Menlo,monospace; }
.pool-exec-status { margin-top:10px; padding:9px 10px; border-radius:8px; background:rgba(34,211,238,.08); color:#a5f3fc; font-size:.72rem; }
.pool-exec-results { margin-top:14px; padding:13px; border:1px solid rgba(34,197,94,.3); border-radius:12px; background:rgba(34,197,94,.07); font-size:.72rem; }
.pool-exec-results > a { display:block; margin-top:5px; color:#86efac; font-family:ui-monospace,SFMono-Regular,Menlo,monospace; overflow-wrap:anywhere; }
.pool-exec-footer { display:flex; align-items:center; gap:14px; margin-top:16px; }
.pool-exec-footer .btn { min-width:240px; }
.pool-exec-footer span { color:#64748b; font-size:.66rem; }
@media (max-width:760px) {
  .pool-exec-panel { padding:14px; border-radius:14px; }
  .pool-exec-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .pool-exec-summary { grid-template-columns:1fr; }
  .pool-exec-history { grid-template-columns:1fr; gap:3px; }
  .pool-exec-footer { align-items:stretch; flex-direction:column; }
  .pool-exec-footer .btn { width:100%; min-width:0; }
}

/* Launch and pool surfaces consume the shared semantic theme contract from
   main.css. These overrides intentionally leave issuance/pool logic untouched. */
html[data-theme="light"] .launch-hero {
  background: linear-gradient(135deg, var(--accent-soft), #eef6ff);
  border-color: color-mix(in srgb, var(--accent) 24%, var(--border-default));
}
html[data-theme="light"] .launch-stat-card,
html[data-theme="light"] .launch-card,
html[data-theme="light"] .tpl-card,
html[data-theme="light"] .launch-type-btn {
  background: var(--surface-1);
  border-color: var(--border-default);
  color: var(--text-primary);
  box-shadow: var(--card-shadow);
}
html[data-theme="light"] .launch-logo {
  background: var(--surface-2);
  color: var(--text-secondary);
}
html[data-theme="light"] .launch-tab,
html[data-theme="light"] .tax-opt,
html[data-theme="light"] .tpl-tag,
html[data-theme="light"] .tpl-apply-btn,
html[data-theme="light"] .lp-step-dot,
html[data-theme="light"] .create-step-num {
  background: var(--surface-2);
  border-color: var(--border-soft);
  color: var(--text-secondary);
}
html[data-theme="light"] .launch-tab.active,
html[data-theme="light"] .launch-type-btn.active,
html[data-theme="light"] .tax-opt.active,
html[data-theme="light"] .tpl-card.selected {
  background: var(--accent-soft);
  border-color: color-mix(in srgb, var(--accent) 42%, var(--border-default));
  color: var(--accent);
}
html[data-theme="light"] .launch-input {
  background: var(--input-bg);
  border-color: var(--input-border);
  color: var(--text-primary);
}
html[data-theme="light"] .launch-input::placeholder {
  color: var(--text-muted);
}
html[data-theme="light"] .launch-label,
html[data-theme="light"] .launch-stat-label,
html[data-theme="light"] .create-step-txt,
html[data-theme="light"] .tpl-suitable,
html[data-theme="light"] .tpl-params,
html[data-theme="light"] .detail-kv .k,
html[data-theme="light"] .lp-step-label {
  color: var(--text-secondary);
}
html[data-theme="light"] .tpl-name,
html[data-theme="light"] .tpl-params b,
html[data-theme="light"] .detail-kv .v {
  color: var(--text-primary);
}
html[data-theme="light"] .pool-exec-overlay {
  background: var(--overlay-bg);
}
html[data-theme="light"] .pool-exec-panel,
html[data-theme="light"] .pool-exec-summary div,
html[data-theme="light"] .pool-exec-progress {
  background: var(--surface-elevated);
  border-color: var(--border-default);
  color: var(--text-primary);
}
html[data-theme="light"] .pool-exec-header h3,
html[data-theme="light"] .pool-exec-check,
html[data-theme="light"] .pool-exec-summary b {
  color: var(--text-primary) !important;
}
html[data-theme="light"] .pool-exec-header p,
html[data-theme="light"] .pool-exec-grid label,
html[data-theme="light"] .pool-exec-summary span,
html[data-theme="light"] .pool-exec-footer span {
  color: var(--text-secondary);
}
