/* ============================================================
   theme.css — 工业黑 + 警示黄 主题（覆盖 style.css）
   仅改视觉，不改布局结构与任何 ID / 计算逻辑
   ============================================================ */

:root {
  color-scheme: dark;

  /* —— 覆盖原设计系统变量 —— */
  --primary:       #FFC400;
  --primary-light: rgba(255, 196, 0, 0.12);
  --accent:        #FFC400;
  --accent-light:  rgba(255, 196, 0, 0.08);
  --accent-bg:     #14171A;
  --brand-dark:    #0B0D0F;
  --success:       #3DD68C;
  --error:         #FF5B5B;

  --text:           #E6EBF1;
  --text-secondary: #A7B0BB;
  --text-hint:      #6E7883;
  --border:         #2A3138;
  --bg-preview:     #0F1215;
  --bg-card:        #1A1E23;

  /* —— 新增工业色板 —— */
  --ink:        #0B0D0F;
  --ink-1:      #14171A;
  --ink-2:      #1A1E23;
  --ink-3:      #21262C;
  --line:       #2A3138;
  --line-2:     #39414A;
  --yellow:     #FFC400;
  --yellow-2:   #FFD740;
  --yellow-dim: #8A6A00;
  --warn:       rgba(255, 196, 0, 0.32);
  --steel:      #8D99A6;
  --mono: Consolas, "SFMono-Regular", "JetBrains Mono", Menlo, monospace;
}

/* ============================================================
   基础
   ============================================================ */
body {
  font-family: "Source Han Sans SC", "Noto Sans SC", "PingFang SC", "Microsoft YaHei", -apple-system, sans-serif;
  color: var(--text);
  background:
    radial-gradient(1200px 600px at 12% -10%, rgba(255, 196, 0, 0.05), transparent 60%),
    var(--ink);
  -webkit-font-smoothing: antialiased;
}

::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: var(--ink); }
::-webkit-scrollbar-thumb { background: #2D343C; border-radius: 6px; border: 2px solid var(--ink); }
::-webkit-scrollbar-thumb:hover { background: var(--yellow-dim); }

/* 危险色带（顶部通栏下方） */
.hazard-strip {
  height: 4px;
  flex-shrink: 0;
  background: repeating-linear-gradient(45deg,
    var(--yellow) 0 10px,
    #0B0D0F 10px 20px);
  opacity: 0.9;
}

/* ============================================================
   顶部通栏
   ============================================================ */
.top-bar {
  height: 64px;
  background: linear-gradient(180deg, #191D21 0%, #101316 100%);
  border-bottom: 1px solid var(--line);
  box-shadow: 0 1px 0 rgba(255, 196, 0, 0.12) inset;
}

.brand-mark {
  width: 26px; height: 26px; flex-shrink: 0;
  border: 2px solid var(--yellow);
  border-radius: 3px;
  background: repeating-linear-gradient(45deg,
    rgba(255, 196, 0, 0.85) 0 4px,
    rgba(11, 13, 15, 0.9) 4px 8px);
  box-shadow: 0 0 14px rgba(255, 196, 0, 0.25);
}

.brand-name {
  color: var(--text);
  font-size: 17px;
  font-weight: 800;
  letter-spacing: 3px;
  text-shadow: 0 0 18px rgba(255, 196, 0, 0.18);
}
.brand-sub { color: var(--text-hint); font-size: 11px; letter-spacing: 0.5px; }

.project-name {
  background: var(--ink-3);
  border: 1px solid var(--line);
  color: var(--text);
}
.project-name::placeholder { color: #5D666F; }
.project-name:focus {
  border-color: var(--yellow);
  box-shadow: 0 0 0 3px rgba(255, 196, 0, 0.14);
}

.fx-rate { color: var(--text-secondary); }
.fx-rate .fx-label { background: rgba(255, 196, 0, 0.1); color: var(--yellow); }
.fx-rate input {
  background: var(--ink-3);
  border: 1px solid var(--line);
  color: var(--text);
  font-family: var(--mono);
}
.fx-rate input:focus { border-color: var(--yellow); box-shadow: 0 0 0 2px rgba(255, 196, 0, 0.14); }

.btn-icon {
  background: var(--ink-3);
  border: 1px solid var(--line);
  color: var(--text-secondary);
}
.btn-icon:hover {
  border-color: var(--yellow);
  background: rgba(255, 196, 0, 0.1);
  color: var(--yellow);
}

.disclaimer-badge {
  color: var(--yellow);
  background: rgba(255, 196, 0, 0.09);
  border: 1px solid var(--warn);
  letter-spacing: 0.5px;
}

/* ============================================================
   按钮
   ============================================================ */
.btn-primary {
  background: linear-gradient(180deg, var(--yellow-2) 0%, var(--yellow) 100%);
  color: #14171A;
  font-weight: 700;
  letter-spacing: 1px;
  border: none;
  box-shadow: 0 2px 0 #8A6A00, 0 0 22px rgba(255, 196, 0, 0.18);
  transition: all 0.15s;
}
.btn-primary:hover {
  background: linear-gradient(180deg, #FFE066 0%, var(--yellow-2) 100%);
  box-shadow: 0 2px 0 #8A6A00, 0 0 30px rgba(255, 196, 0, 0.32);
}
.btn-primary:active { transform: translateY(1px); }
.btn-primary:disabled {
  background: #23282D; color: #5D666F; box-shadow: none;
  border: 1px solid var(--line);
}

.btn-outline {
  background: transparent;
  color: var(--text-secondary);
  border: 1px solid var(--line-2);
  letter-spacing: 1px;
}
.btn-outline:hover {
  color: var(--yellow);
  border-color: var(--yellow);
  background: rgba(255, 196, 0, 0.06);
}
.btn-outline:disabled { color: #4C555E; border-color: var(--line); background: transparent; }

/* ============================================================
   主体布局
   ============================================================ */
.left-panel {
  background: linear-gradient(180deg, #15181C 0%, var(--ink-1) 100%);
  border-right: 1px solid var(--line);
}
.right-panel { background: var(--bg-preview); }

/* ============================================================
   步骤进度条
   ============================================================ */
.step {
  background: var(--ink-2);
  border: 2px solid var(--line-2);
  color: var(--text-hint);
  font-family: var(--mono);
}
.step.active {
  border-color: var(--yellow);
  background: linear-gradient(180deg, var(--yellow-2), var(--yellow));
  color: #14171A;
  font-weight: 700;
  box-shadow: 0 0 18px rgba(255, 196, 0, 0.45);
}
.step.done {
  border-color: var(--yellow);
  background: var(--ink-2);
  color: var(--yellow);
}
.step.done:hover { box-shadow: 0 0 16px rgba(255, 196, 0, 0.35); }

.step-line { background: var(--line); }
.step-line.done { background: var(--yellow); box-shadow: 0 0 10px rgba(255, 196, 0, 0.4); }

.label { color: var(--text-hint); letter-spacing: 0.5px; }
.label.active { color: var(--yellow); font-weight: 600; }
.label.done { color: var(--yellow-dim); }

/* ============================================================
   输入控件
   ============================================================ */
.step-panel h3 { color: var(--text); letter-spacing: 1px; }
.section-desc { color: var(--text-hint); }

.input-group label { color: var(--text-secondary); letter-spacing: 0.3px; }
.input-group .hint { color: var(--text-hint); }

.input-group input,
.input-group select {
  background: var(--ink-3);
  border: 1px solid var(--line);
  color: var(--text);
  transition: border-color 0.15s, box-shadow 0.15s;
}
.input-group input:focus,
.input-group select:focus {
  border-color: var(--yellow);
  box-shadow: 0 0 0 3px rgba(255, 196, 0, 0.14);
}
.input-group input[type="number"] { font-family: var(--mono); }
.input-group input.error { border-color: var(--error); }
.error-msg { color: var(--error); }

.unit-btn {
  background: var(--ink-3);
  border: 1px solid var(--line-2);
  color: var(--text-secondary);
  font-family: var(--mono);
}
.unit-btn.active {
  background: var(--yellow);
  color: #14171A;
  border-color: var(--yellow);
  font-weight: 700;
}

/* 单选组 */
.radio-group > label { color: var(--text-secondary); }
.radio-option {
  background: var(--ink-2);
  border: 1px solid var(--line-2);
  color: var(--text-secondary);
  transition: all 0.15s;
}
.radio-option:hover { border-color: var(--yellow-dim); color: var(--text); }
.radio-option.active {
  border-color: var(--yellow);
  background: rgba(255, 196, 0, 0.1);
  color: var(--yellow);
  font-weight: 600;
}
.hint-inline { color: var(--text-hint); }

/* 高级参数 */
.advanced-params {
  border: 1px solid var(--line);
  background: rgba(255, 255, 255, 0.015);
}
.advanced-params summary { color: var(--text-secondary); letter-spacing: 0.5px; }
.advanced-params summary:hover { color: var(--yellow); }
.advanced-params[open] summary { color: var(--yellow); }

/* 实时预估 */
.realtime-preview {
  background: linear-gradient(180deg, var(--ink-3), var(--ink-2));
  border: 1px solid var(--line);
  border-left: 3px solid var(--yellow);
}
.preview-item { color: var(--text-hint); }
.preview-item strong { color: var(--yellow); font-family: var(--mono); }

/* ============================================================
   选型卡片
   ============================================================ */
.option-card {
  background: var(--ink-2);
  border: 2px solid var(--line-2);
}
.option-card:hover {
  border-color: var(--yellow-dim);
  background: var(--ink-3);
}
.option-card.active {
  border-color: var(--yellow);
  background: rgba(255, 196, 0, 0.08);
  box-shadow: 0 0 0 1px var(--warn), 0 0 20px rgba(255, 196, 0, 0.1);
}
.card-check { border: 2px solid var(--line-2); background: transparent; }
.option-card.active .card-check {
  border-color: var(--yellow);
  background: var(--yellow);
  color: #14171A;
  font-weight: 700;
}
.card-title { color: var(--text); }
.card-desc { color: var(--text-hint); }

/* ============================================================
   增量 / 夹层预览块
   ============================================================ */
.increment-box {
  background: rgba(255, 196, 0, 0.05);
  border: 1px solid var(--warn);
}
.increment-title { color: var(--yellow); letter-spacing: 1px; }
.increment-row { color: var(--text-secondary); }
.increment-row strong { color: var(--yellow); font-family: var(--mono); }

#mezzPreviewBox,
#mezz2PreviewBox {
  background: rgba(255, 196, 0, 0.05) !important;
  border: 1px solid var(--warn) !important;
}
#mezz2PreviewBox { margin-top: 16px; }
#mezzPreviewBox .increment-title,
#mezz2PreviewBox .increment-title { color: var(--yellow) !important; }
#mezzPreviewBox strong,
#mezz2PreviewBox strong { color: var(--yellow-2) !important; }

.mezz2-section { border-top: 2px dashed var(--warn); }

.checkbox-label { color: var(--text-secondary); }
.checkbox-label input[type="checkbox"] { accent-color: var(--yellow); }

/* 滑块 */
input[type="range"] { background: #2C333A; }
input[type="range"]::-webkit-slider-thumb {
  background: linear-gradient(180deg, var(--yellow-2), var(--yellow));
  border: 2px solid #14171A;
  box-shadow: 0 0 12px rgba(255, 196, 0, 0.5);
}
input[type="range"]::-moz-range-thumb {
  background: var(--yellow);
  border: 2px solid #14171A;
}

/* ============================================================
   3D 实时模型舞台
   ============================================================ */
.stage3d {
  position: relative;
  flex: 0 0 auto;
  height: 42vh;
  min-height: 300px;
  max-height: 540px;
  overflow: hidden;
  background:
    radial-gradient(900px 420px at 50% 118%, rgba(255, 196, 0, 0.10), transparent 70%),
    linear-gradient(180deg, #0C0F12 0%, #080A0C 100%);
  border-bottom: 1px solid var(--line);
}
.stage3d::before {
  content: "";
  position: absolute; inset: 0;
  background-image:
    linear-gradient(rgba(255, 255, 255, 0.028) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 255, 255, 0.028) 1px, transparent 1px);
  background-size: 44px 44px;
  pointer-events: none;
}
.stage3d canvas { display: block; width: 100%; height: 100%; position: relative; z-index: 1; }

.s3d-overlay {
  position: absolute; top: 14px; left: 16px; z-index: 3;
  display: flex; flex-direction: column; gap: 6px;
  pointer-events: none;
}
.s3d-tag {
  align-self: flex-start;
  font-size: 11px; font-weight: 700; letter-spacing: 2px;
  color: var(--yellow);
  background: rgba(11, 13, 15, 0.72);
  border: 1px solid var(--warn);
  padding: 4px 10px;
  border-radius: 3px;
  backdrop-filter: blur(6px);
}
.s3d-tag::before { content: "● "; font-size: 8px; vertical-align: 1px; }
.s3d-hint {
  font-size: 11px; color: var(--text-hint);
  background: rgba(11, 13, 15, 0.55);
  padding: 3px 9px;
  border-radius: 3px;
  align-self: flex-start;
}

.s3d-tools {
  position: absolute; top: 14px; right: 16px; z-index: 4;
  display: flex; flex-direction: column; gap: 6px;
}
.s3d-btn {
  width: 34px; height: 32px;
  display: flex; align-items: center; justify-content: center;
  font-size: 14px; cursor: pointer;
  color: var(--text-secondary);
  background: rgba(11, 13, 15, 0.72);
  border: 1px solid var(--line-2);
  border-radius: 3px;
  backdrop-filter: blur(6px);
  transition: all 0.15s;
}
.s3d-btn:hover { color: var(--yellow); border-color: var(--yellow); }
.s3d-btn.active {
  color: #14171A;
  background: var(--yellow);
  border-color: var(--yellow);
  font-weight: 700;
}
.s3d-fallback {
  position: absolute; inset: 0; z-index: 5;
  display: flex; align-items: center; justify-content: center;
  font-size: 13px; color: var(--text-hint);
  background: rgba(11, 13, 15, 0.85);
}

/* ============================================================
   预览数值区
   ============================================================ */
.preview-viewport {
  flex: 0 0 auto;
  display: block;
  padding: 22px 26px 30px;
  overflow: visible;
}
.dim-label { color: var(--text-hint); }
.dim-val { color: var(--yellow); font-family: var(--mono); font-weight: 700; }
.dim-sep { color: var(--line-2); }

.steel-stats { gap: 14px; }
.stat-item {
  background: linear-gradient(180deg, var(--ink-2) 0%, #16191D 100%);
  border: 1px solid var(--line);
  color: var(--text-hint);
  letter-spacing: 0.5px;
  position: relative;
  overflow: hidden;
}
.stat-item::after {
  content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px;
  background: var(--yellow); opacity: 0.85;
}
.stat-item strong { color: var(--yellow); font-family: var(--mono); }
.stat-usd strong { color: var(--yellow-2) !important; }

.preview-tip {
  margin-top: 18px;
  font-size: 12px;
  line-height: 1.7;
  color: var(--text-hint);
  border-left: 2px solid var(--line-2);
  padding: 2px 0 2px 12px;
  text-align: left;
}
/* 报告已生成时自动隐藏提示（现代浏览器） */
.preview-placeholder:has(#resultPanel[style*="block"]) .preview-tip { display: none; }

/* ============================================================
   材料标准备注（2026-10-12 新增）
   跟随价格显示：对外给价时必须说明「价格是按 GB 标准材料算的」，
   否则海外买家会拿 ASTM / EN / JIS 口径去比价，误判为「材料不达标」。
   刻意**不**放进 .preview-tip 内部 —— 那个节点在出报告后会被 CSS 隐藏，
   而本备注需要在「未算量 / 已出报告」两种状态下都可见。
   ============================================================ */
.gb-note {
  margin-top: 10px;
  font-size: 12px;
  line-height: 1.65;
  color: var(--text-hint);
  border-left: 2px solid var(--line-2);
  padding: 2px 0 2px 12px;
  text-align: left;
}
.gb-note a { color: inherit; text-decoration: underline; }
.gb-note b { color: inherit; font-weight: 600; }

/* ============================================================
   结果面板
   ============================================================ */
.result-panel {
  background: linear-gradient(180deg, #171B1F 0%, var(--ink-1) 100%);
  border: 1px solid var(--line);
  border-top: 2px solid var(--yellow);
}
.result-panel h3 { color: var(--text); letter-spacing: 1.5px; }
.result-panel h3::after {
  content: ""; display: block; width: 40px; height: 2px;
  background: var(--yellow); margin-top: 8px;
}

.result-card {
  background: var(--ink-3);
  border: 1px solid var(--line);
}
.result-card .rc-val { color: var(--yellow); font-family: var(--mono); }
.result-card .rc-label { color: var(--text-hint); }
.result-card.rc-primary {
  background: linear-gradient(180deg, var(--yellow-2), var(--yellow));
  border-color: var(--yellow);
}
.result-card.rc-primary .rc-val { color: #14171A; }
.result-card.rc-primary .rc-label { color: rgba(20, 23, 26, 0.72); font-weight: 600; }

.rc-bench-badge.good { background: rgba(61, 214, 140, 0.14); color: #3DD68C; }
.rc-bench-badge.normal { background: rgba(255, 196, 0, 0.14); color: var(--yellow); }
.rc-bench-badge.high { background: rgba(255, 91, 91, 0.14); color: #FF7A7A; }

.result-table th {
  background: var(--ink-3);
  color: var(--text-secondary);
  letter-spacing: 0.5px;
}
.result-table th, .result-table td { border-bottom: 1px solid var(--line); }
.result-table tbody tr:hover td { background: rgba(255, 196, 0, 0.035); }
.result-table td { color: var(--text); font-family: var(--mono); }
.result-table td:first-child { font-family: inherit; color: var(--text-secondary); }
.result-table tfoot td { border-top: 2px solid var(--yellow); }

.result-parapet {
  background: rgba(255, 196, 0, 0.05);
  border-left: 3px solid var(--yellow);
  color: var(--text-secondary);
}

/* 方案对比 */
.compare-section { border: 1px solid var(--line); }
.compare-header {
  background: var(--ink-3);
  color: var(--yellow);
  letter-spacing: 0.5px;
}
.compare-header:hover { background: rgba(255, 196, 0, 0.08); }
.compare-body { background: transparent; }
.compare-table th { background: var(--ink-3); color: var(--text-secondary); }
.compare-table th, .compare-table td { border-bottom: 1px solid var(--line); }
.compare-table td { color: var(--text); font-family: var(--mono); }
.compare-table td:first-child { font-family: inherit; color: var(--text-secondary); }
.compare-table .diff.plus { color: #FF7A7A; }
.compare-table .diff.minus { color: #3DD68C; }

/* 省钢量推荐（暗色） */
.steel-optimize { border: 1px solid var(--line); background: var(--ink-2); }
.so-header { color: var(--yellow); }
.so-sub { color: var(--text-secondary); }
.so-summary { background: rgba(255, 196, 0, 0.05); border-left: 3px solid var(--yellow); color: var(--text); }
.so-summary.so-ok { background: rgba(61, 214, 140, 0.08); border-left-color: #3DD68C; }
.so-save { color: #3DD68C; }
.so-more { color: #FF7A7A; }
.so-same { color: var(--text-secondary); }
.so-apply { background: var(--yellow); border-color: var(--yellow); color: #1a1a1a; font-weight: 600; }
.so-table th, .so-table td { border-bottom: 1px solid var(--line); }
.so-table thead th { color: var(--text-secondary); }
.so-table td { color: var(--text); }
.so-table tr.so-best td { background: rgba(61, 214, 140, 0.06); }

/* 建筑图参考（暗色） */
.arch-ref { border: 1px solid var(--line); background: var(--ink-2); }
.ar-header { color: var(--yellow); }
.ar-sub { color: var(--text-secondary); }
.ar-btn { background: var(--ink-3); border-color: var(--yellow); color: var(--yellow); }
.ar-btn:hover { background: rgba(255, 196, 0, 0.10); }
.ar-sheet { border: 1px solid var(--line); background: var(--ink); }
.ar-gallery-title { color: var(--text-secondary); }
.dwg-item { border-color: var(--line); background: var(--ink-3); }
.dwg-item:hover { border-color: var(--yellow); }
.dwg-item span { color: var(--text-secondary); }
.dwg-item span b { color: var(--yellow); }
.dwg-lb-body { background: var(--ink-2); }
.dwg-lb-bar { border-bottom: 1px solid var(--line); color: var(--yellow); }
.dwg-lb-close { background: var(--ink-3); border-color: var(--line); color: var(--text); }

/* ============================================================
   结构示意图（深色底 + 蓝图质感）
   ============================================================ */
.structure-diagram {
  background: linear-gradient(180deg, #0E1114 0%, #080A0C 100%);
  border-top: 1px solid var(--line);
  height: 176px;
}
.structure-diagram svg {
  max-width: 560px;
  height: 158px;
}
#structureSvg [stroke="#0C3B6E"] { stroke: #C9D3DE !important; }
#structureSvg [stroke="#FF7D00"] { stroke: #FFC400 !important; }
#structureSvg [stroke="#E8A040"] { stroke: #FFD740 !important; }
#structureSvg [stroke="#86909C"] { stroke: #4E5862 !important; }
#structureSvg [fill="#1D2129"] { fill: #E6EBF1 !important; }
#structureSvg [fill="#F0F4F8"] { fill: #1A1E23 !important; }
#structureSvg [fill="#E8F0FE"] { fill: #1A1E23 !important; }
#structureSvg [fill="#FFF2E0"] { fill: #2A2413 !important; }
#structureSvg [fill="#0C3B6E"] { fill: #C9D3DE !important; }
#structureSvg [fill="#FF7D00"] { fill: #FFC400 !important; }
#structureSvg [fill="#E8A040"] { fill: #FFD740 !important; }
#structureSvg [fill="#999"] { fill: #7A848F !important; }
#structureSvg text { font-family: var(--mono); }

/* ============================================================
   底部操作栏
   ============================================================ */
.bottom-bar {
  background: linear-gradient(180deg, #15181C 0%, #0E1114 100%);
  border-top: 1px solid var(--line);
}
.step-dot { background: var(--line-2); }
.step-dot.active {
  background: var(--yellow);
  box-shadow: 0 0 12px rgba(255, 196, 0, 0.6);
}
.step-dot.done { background: var(--yellow-dim); }
.step-text { color: var(--text-hint); font-family: var(--mono); }

/* ============================================================
   Toast
   ============================================================ */
.toast {
  background: rgba(11, 13, 15, 0.94);
  color: var(--yellow);
  border: 1px solid var(--warn);
  font-weight: 600;
  letter-spacing: 0.5px;
  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.6);
}

/* ============================================================
   品牌页脚
   ============================================================ */
.brand-footer {
  background: linear-gradient(135deg, #0E1114 0%, #101316 100%);
  border-top: 1px solid var(--line);
  color: var(--text-hint);
}
.bf-name { color: var(--text); letter-spacing: 2px; }
.bf-col p { color: var(--text-hint); }
.bf-col span { color: var(--text-secondary); }
.bf-tool-info span { color: var(--text-hint); font-family: var(--mono); font-size: 11px; }
.bf-trust { border-top: 1px solid rgba(255, 255, 255, 0.06); }
.trust-badge { color: var(--text-hint); }
.trust-badge svg { color: var(--yellow); opacity: 0.7; }
.bf-disclaimer {
  border-top: 1px solid rgba(255, 255, 255, 0.06);
  color: #5A636D;
}

/* ============================================================
   免责声明弹窗
   ============================================================ */
.disclaimer-overlay { background: rgba(0, 0, 0, 0.7); }
.disclaimer-dialog {
  background: linear-gradient(180deg, #171B1F 0%, var(--ink-1) 100%);
  border: 1px solid var(--line);
  border-top: 3px solid var(--yellow);
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.7);
}
.disclaimer-dialog h3 { color: var(--text); letter-spacing: 2px; }
.disclaimer-dialog p { color: var(--text-secondary); }
.disclaimer-dialog p strong { color: var(--yellow); }
.disclaimer-note { color: var(--text-hint) !important; }
.disclaimer-icon { filter: drop-shadow(0 0 12px rgba(255, 196, 0, 0.4)); }

/* ============================================================
   通用弹窗（2026-09-28 业务员版：客户信息 / 我的项目）
   ============================================================ */
.modal-overlay { background: rgba(0, 0, 0, 0.72); }
.modal-dialog {
  background: linear-gradient(180deg, #171B1F 0%, var(--ink-1) 100%);
  border: 1px solid var(--line);
  border-top: 3px solid var(--yellow);
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.7);
}
.modal-dialog h3 { color: var(--text); letter-spacing: 1px; }
.cust-grid label { color: var(--text-secondary); }
.cust-grid input, .proj-actions input {
  background: var(--ink-2); border-color: var(--line-2); color: var(--text);
}
.cust-grid input::placeholder, .proj-actions input::placeholder { color: #5A636C; }
.cust-grid input:focus, .proj-actions input:focus { border-color: var(--yellow); }
.cust-check { color: var(--text-secondary); }
.proj-list { border-color: var(--line); background: var(--ink-1); }
.proj-row { border-bottom-color: var(--line); }
.proj-row:hover { background: rgba(255, 196, 0, 0.04); }
.proj-row.cur { background: rgba(255, 196, 0, 0.09); border-left: 3px solid var(--yellow); }
.proj-name { color: var(--text); }
.btn-mini { background: var(--ink-2); border-color: var(--line-2); color: var(--text-secondary); }
.btn-mini:hover { border-color: var(--yellow); color: var(--yellow); }
.btn-mini.danger:hover { border-color: #FF5B5B; color: #FF5B5B; }

/* ============================================================
   响应式
   ============================================================ */
@media (max-width: 900px) {
  .stage3d { height: 320px; min-height: 280px; }
  .preview-viewport { padding: 16px 14px 22px; }
  .s3d-hint { display: none; }
  /* 关键：theme.css 在 style.css 之后加载，这里的 height 会盖掉 style.css 的换行改造，
     必须同步放开为 auto，否则顶栏换行后子元素溢出容器被下方内容遮挡（手机端按钮看不见） */
  .top-bar { height: auto; flex-wrap: wrap; align-content: center; padding: 10px 14px; gap: 8px; border-bottom: 1px solid var(--line); }
}

/* 手机竖屏：顶栏三行（品牌 / 项目名 / 图标按钮组）都留在容器内 */
@media (max-width: 640px) {
  .top-bar { padding: 10px 12px 12px; gap: 8px; row-gap: 8px; }
  .header-actions { width: 100%; justify-content: space-between; }
}
