:root {
    --bg: #0f1117; --bg-card: #181b24; --bg-input: #12141c; --border: #2a2e3a; --border-focus: #4f6df5;
    --text: #e2e4ea; --text-muted: #7a7f8e; --text-dim: #545869;
    --accent: #4f6df5; --accent-dim: #3a52b5; --accent-glow: rgba(79,109,245,0.15);
    --green: #34d399; --green-dim: rgba(52,211,153,0.15); --orange: #f59e0b; --orange-dim: rgba(245,158,11,0.15);
    --red: #ef4444; --red-dim: rgba(239,68,68,0.15);
    --radius: 10px; --radius-sm: 6px; --shadow: 0 2px 12px rgba(0,0,0,0.3);
    --font: 'Noto Sans SC', -apple-system, 'PingFang SC', 'Microsoft YaHei', sans-serif;
    --mono: 'JetBrains Mono', 'Fira Code', monospace;
}
* { margin:0; padding:0; box-sizing:border-box; }
body { font-family:var(--font); background:var(--bg); color:var(--text); min-height:100vh; line-height:1.6; -webkit-font-smoothing:antialiased; }

/* Header */
.app-header { display:flex; align-items:center; justify-content:space-between; padding:0 20px; min-height:68px; border-bottom:1px solid var(--border); background:rgba(18,21,30,0.94); backdrop-filter:blur(16px); position:sticky; top:0; z-index:100; gap:18px; }
.header-left { display:flex; align-items:center; gap:22px; min-width:0; }
.header-right { display:flex; align-items:center; gap:16px; }
.header-actions { display:flex; gap:6px; align-items:center; }
.logo { display:flex; align-items:center; gap:10px; color:var(--accent); font-weight:700; font-size:17px; }
.nav-tabs { display:flex; gap:4px; }
.nav-tab { background:none; border:none; color:var(--text-muted); font:500 14px var(--font); padding:8px 16px; border-radius:var(--radius-sm); cursor:pointer; transition:all .15s; }
.nav-tab:hover { color:var(--text); background:rgba(255,255,255,0.05); }
.nav-tab.active { color:var(--accent); background:var(--accent-glow); }
.module-context-bar{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:9px 24px;background:var(--bg-card);border-bottom:1px solid var(--border)}
.module-context-bar>div{display:flex;align-items:baseline;gap:10px}.module-kicker{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);font-weight:700}.module-context-text{font-size:11px;color:var(--text-dim)}.nav-tab.return-start{margin-left:8px;border-left:1px solid var(--border);border-radius:0;padding-left:18px}
.status-indicator { display:flex; align-items:center; gap:8px; font-size:13px; color:var(--text-muted); }
.status-dot { width:8px; height:8px; border-radius:50%; background:var(--green); box-shadow:0 0 8px var(--green); }
.status-dot.running { background:var(--orange); box-shadow:0 0 8px var(--orange); animation:pulse 1.5s infinite; }
.status-dot.error { background:var(--red); box-shadow:0 0 8px var(--red); }
@keyframes pulse { 0%,100%{opacity:1} 50%{opacity:0.4} }

/* Step Progress Bar */
.step-progress-bar { display:flex !important; flex-direction:row !important; align-items:center; justify-content:center; padding:16px 24px; gap:0; background:var(--bg-card); border-bottom:1px solid var(--border); overflow-x:auto; }
.step-item { display:flex; flex-direction:column; align-items:center; gap:4px; cursor:pointer; opacity:0.4; transition:all .2s; min-width:60px; flex-shrink:0; }
.step-item:hover { opacity:0.7; }
.step-item.active { opacity:1; }
.step-item.completed { opacity:0.8; }
.step-circle { width:30px; height:30px; border-radius:50%; border:2px solid var(--border); display:flex; align-items:center; justify-content:center; font-size:12px; font-weight:700; color:var(--text-dim); transition:all .2s; flex-shrink:0; }
.step-item.active .step-circle { border-color:var(--accent); color:var(--accent); background:var(--accent-glow); box-shadow:0 0 12px var(--accent-glow); }
.step-item.completed .step-circle { border-color:var(--green); color:#fff; background:var(--green); }
.step-item > span { font-size:10px; color:var(--text-dim); white-space:nowrap; }
.step-item.active > span { color:var(--accent); font-weight:500; }
.step-item.completed > span { color:var(--green); }
.step-connector { width:32px; height:2px; background:var(--border); flex-shrink:0; margin-bottom:18px; }

/* Pages */
.page { display:none; padding:24px; max-width:900px; margin:0 auto; }
.page.active { display:block; }
#page-results.active { max-width:100%; padding:16px; }
#page-settings.run-mode { max-width:1440px; }

/* Cards */
.card { background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius); overflow:hidden; transition:border-color .2s; }
.card:hover { border-color:rgba(79,109,245,0.15); }
.card-header { display:flex; align-items:center; justify-content:space-between; padding:14px 20px; border-bottom:1px solid var(--border); }
.card-header h2 { font-size:15px; font-weight:600; display:flex; align-items:center; gap:10px; }
.card-body { padding:20px; }
.card-actions { display:flex; gap:6px; }
.step-badge { display:inline-flex; align-items:center; justify-content:center; width:24px; height:24px; border-radius:50%; background:var(--accent-glow); color:var(--accent); font-size:12px; font-weight:700; }
.badge { display:inline-flex; align-items:center; padding:2px 10px; border-radius:12px; background:var(--accent-glow); color:var(--accent); font-size:12px; font-weight:600; }
.section-label { font-size:12px; font-weight:600; color:var(--text-muted); text-transform:uppercase; letter-spacing:.05em; margin-bottom:10px; padding-top:8px; }

/* Forms */
.form-group { margin-bottom:16px; }
.form-group label { display:block; font-size:13px; font-weight:500; color:var(--text-muted); margin-bottom:6px; }
.hint { font-weight:400; opacity:0.6; font-size:12px; }
.form-row { display:flex; gap:12px; }
.flex-1 { flex:1; }
.input { width:100%; padding:10px 14px; background:var(--bg-input); border:1px solid var(--border); border-radius:var(--radius-sm); color:var(--text); font:14px var(--font); transition:border-color .15s; outline:none; }
.input:focus { border-color:var(--border-focus); box-shadow:0 0 0 3px var(--accent-glow); }
.input::placeholder { color:var(--text-dim); }
.textarea { resize:vertical; min-height:80px; }
.code-input { font-family:var(--mono); font-size:12px; line-height:1.6; }

/* Step Footer */
.step-footer { display:flex; align-items:center; gap:12px; margin-top:20px; padding-top:16px; border-top:1px solid var(--border); flex-wrap:wrap; }
.workflow-action { display:flex;align-items:center;justify-content:space-between;gap:18px;padding:14px 16px;margin:10px 0 14px;border:1px solid var(--border);border-radius:10px;background:rgba(255,255,255,.015); }
.workflow-action.primary-action { border-color:#4f6df555;background:#4f6df50a; }
.workflow-action strong { display:block;font-size:13px;color:var(--text); }
.workflow-action p { margin-top:3px;color:var(--text-muted);font-size:11px; }
.ws-channel-state { padding:4px 9px;border-radius:12px;font-size:10px;white-space:nowrap; }
.ws-channel-state.ready { color:#86efac;background:#22c55e1a; }
.ws-channel-state.connecting { color:#fcd34d;background:#f59e0b1a; }
.ws-channel-state.error { color:#fca5a5;background:#ef44441a; }
@media(max-width:760px){.workflow-action{align-items:flex-start;flex-direction:column}}

/* Checkbox Grid */
.checkbox-grid { display:flex; flex-wrap:wrap; gap:8px; }
.checkbox-grid label { display:flex; align-items:center; gap:6px; padding:6px 12px; border-radius:var(--radius-sm); border:1px solid var(--border); cursor:pointer; font-size:13px; transition:all .15s; color:var(--text); margin-bottom:0; }
.checkbox-grid label:hover { border-color:var(--accent); }
.checkbox-grid label.checked { border-color:var(--accent); background:var(--accent-glow); }
.checkbox-grid input[type="checkbox"] { accent-color:var(--accent); }

/* Mechanism Chips */
.mechanism-list { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:12px; }
.mechanism-chip { display:flex; align-items:center; gap:6px; padding:7px 14px; border-radius:20px; border:1px solid var(--border); cursor:pointer; font-size:13px; transition:all .15s; user-select:none; }
.mechanism-chip:hover { border-color:var(--accent); }
.mechanism-chip.active { border-color:var(--accent); background:var(--accent-glow); color:var(--accent); }
.param-details { margin-top:8px; }
.param-details summary { cursor:pointer; font-size:13px; color:var(--text-muted); padding:8px 0; }
.param-grid { display:grid; grid-template-columns:1fr 1fr; gap:8px; padding-top:8px; }
.param-item { display:flex; flex-direction:column; gap:4px; }
.param-item label { font-size:11px; color:var(--text-dim); margin-bottom:0; }
.param-item input { padding:6px 10px; font-size:12px; }

/* Intent Recognition Steps */
.intent-steps { display:flex; flex-direction:column; gap:12px; }
.intent-step-card { border:1px solid var(--border); border-radius:var(--radius); overflow:hidden; }
.intent-step-header { display:flex; align-items:center; gap:12px; padding:14px 16px; background:var(--bg-input); }
.intent-step-num { font-size:18px; font-weight:700; color:var(--accent); min-width:28px; }
.intent-step-info { flex:1; display:flex; flex-direction:column; gap:2px; }
.intent-step-info strong { font-size:14px; }
.intent-step-info .hint { font-size:12px; }
.intent-step-result { padding:16px; border-top:1px solid var(--border); }
.review-launch-card { display:flex;align-items:center;justify-content:space-between;gap:24px;padding:22px;border:1px solid #354061;border-radius:12px;background:linear-gradient(135deg,rgba(79,109,245,.12),rgba(17,21,33,.7)); }
.review-launch-card h3 { margin:4px 0 8px;font-size:17px; }
.review-launch-card p { margin:0;max-width:720px;color:#8b94a9;font-size:12px;line-height:1.65; }
.review-launch-card p strong { color:#c8d0e0;margin-left:4px; }
.experiment-review-result { margin-top:16px;border:1px solid var(--border);border-radius:12px;padding:18px;background:var(--bg-input); }
.review-check-grid { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px; }
.review-check { padding:9px 11px;border-radius:8px;border:1px solid #303649;font-size:11px;color:#9aa3b7; }
.review-check.pass { border-color:#34d39944;background:#34d3990d; }.review-check.warning{border-color:#f59e0b55;background:#f59e0b0d}.review-check.error{border-color:#ef444455;background:#ef44440d}
.review-check-heading { grid-column:1/-1;margin:8px 0 0;color:#8f98b3;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase; }
.review-diff-table { width:100%;border-collapse:collapse;font-size:11px; }.review-diff-table th,.review-diff-table td{padding:9px;border-bottom:1px solid #292f40;text-align:left;vertical-align:top}.review-diff-table th{color:#778198}.review-diff-value{max-width:250px;max-height:90px;overflow:auto;white-space:pre-wrap;word-break:break-word;color:#b8c0d2}.review-risk{font-size:9px;border-radius:999px;padding:2px 6px;background:#f59e0b22;color:#fbbf24}
.review-actions { display:flex;justify-content:flex-end;gap:8px;margin-top:16px; }
@media(max-width:760px){.review-launch-card{align-items:flex-start;flex-direction:column}.review-check-grid{grid-template-columns:1fr}.review-diff-table{display:block;overflow-x:auto}}
.intent-result-content { max-height:300px; overflow-y:auto; font-size:13px; line-height:1.7; }
.intent-result-content pre { white-space:pre-wrap; word-break:break-word; }
.intent-result-content h2 { font-size:15px; margin:12px 0 6px; color:var(--accent); }
.intent-result-content table { width:100%; border-collapse:collapse; margin:8px 0; }
.intent-result-content th, .intent-result-content td { padding:6px 10px; border:1px solid var(--border); font-size:12px; }
.intent-result-actions { display:flex; gap:8px; margin-top:10px; padding-top:8px; border-top:1px solid var(--border); }
.intent-editor { margin-top:8px; }
.btn-done { background:var(--green-dim); color:var(--green); border-color:var(--green); }

/* Config Monitor */
.config-monitor { margin-top:16px; padding:16px; background:var(--bg-input); border:1px solid var(--border); border-radius:var(--radius-sm); }
.config-summary { display:flex; flex-direction:column; gap:6px; }
.config-row { display:flex; gap:12px; font-size:13px; }
.config-key { color:var(--text-muted); min-width:100px; flex-shrink:0; }
.config-val { color:var(--text); word-break:break-all; }

/* Pre-launch Check */
.pre-launch-check { margin-bottom:20px; padding:16px; background:var(--bg-input); border:1px solid var(--border); border-radius:var(--radius-sm); }
.check-row { padding:6px 0; font-size:14px; display:flex; align-items:center; gap:8px; }
.check-ok { color:var(--green); font-weight:700; }
.check-fail { color:var(--red); font-weight:700; }
.check-skip { color:var(--text-dim); }

.ollama-warning { margin-top:12px; padding:12px 16px; background:var(--red-dim); border:1px solid rgba(239,68,68,0.3); border-radius:var(--radius-sm); color:var(--red); font-size:13px; line-height:1.6; }
.ollama-warning code { background:rgba(239,68,68,0.15); padding:2px 6px; border-radius:3px; font-family:var(--mono); font-size:12px; }

/* Buttons */
.btn { display:inline-flex; align-items:center; gap:6px; padding:10px 18px; border-radius:var(--radius-sm); border:1px solid transparent; font:500 14px var(--font); cursor:pointer; transition:all .15s; white-space:nowrap; }
.btn-primary { background:linear-gradient(135deg,var(--accent),#6366f1); color:#fff; border:none; }
.btn-primary:hover { transform:translateY(-1px); box-shadow:0 4px 12px rgba(79,109,245,0.3); }
.btn-primary:disabled { opacity:0.5; cursor:not-allowed; transform:none; box-shadow:none; }
.btn-secondary { background:transparent; color:var(--accent); border-color:var(--accent); }
.btn-secondary:hover { background:var(--accent-glow); }
.btn-secondary:disabled { opacity:0.4; cursor:not-allowed; }
.btn-ghost { background:none; color:var(--text-muted); border:1px solid var(--border); }
.btn-ghost:hover { color:var(--text); border-color:var(--text-muted); }
.btn-sm { padding:6px 12px; font-size:12px; }
.btn-lg { padding:12px 28px; font-size:15px; }
.action-buttons { display:flex; gap:12px; flex-wrap:wrap; align-items:center; }

/* Agent List */
.agent-list { max-height:240px; overflow-y:auto; display:flex; flex-direction:column; gap:4px; }
.agent-item { display:flex; align-items:center; justify-content:space-between; padding:8px 12px; border-radius:var(--radius-sm); background:var(--bg-input); border:1px solid var(--border); font-size:12px; }
.agent-label { font-weight:500; word-break:break-all; }
.agent-weight { font-family:var(--mono); font-size:11px; color:var(--accent); white-space:nowrap; margin-left:12px; }

/* Progress */
.progress-area { margin-top:16px; }
.progress-bar { height:6px; background:var(--bg-input); border-radius:3px; overflow:hidden; }
.progress-fill { height:100%; background:linear-gradient(90deg,var(--accent),#6366f1); width:0%; transition:width .3s; border-radius:3px; }
.progress-stats { font-size:13px; color:var(--accent); margin-top:8px; font-weight:500; }
.progress-log { margin-top:10px; max-height:250px; overflow-y:auto; font-family:var(--mono); font-size:11px; line-height:1.7; color:var(--text-muted); background:var(--bg-input); border:1px solid var(--border); border-radius:var(--radius-sm); padding:12px; }
.log-entry { padding:1px 0; }
.log-entry.success { color:var(--green); }
.log-entry.error { color:var(--red); }
.log-entry.info { color:var(--accent); }
.status-msg { font-size:13px; padding:8px 12px; border-radius:var(--radius-sm); display:none; }
.status-msg.show { display:inline-block; }
.status-msg.success { background:var(--green-dim); color:var(--green); }
.status-msg.error { background:var(--red-dim); color:var(--red); }
.step-panel { margin-bottom:20px; }
.step-panel + .step-panel { margin-top:0; }
.muted { color:var(--text-dim); font-size:13px; }

/* Scenario presets */
.scenario-preset-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin:10px 0 12px; }
.scenario-preset { min-height:92px; padding:14px; text-align:left; display:grid; grid-template-columns:auto 1fr; grid-template-rows:auto auto; column-gap:10px; border:1px solid var(--border); border-radius:var(--radius-sm); background:linear-gradient(145deg,var(--bg-input),rgba(79,109,245,.04)); color:var(--text); cursor:pointer; transition:.18s ease; }
.scenario-preset:hover { border-color:var(--accent); transform:translateY(-2px); box-shadow:0 8px 22px rgba(0,0,0,.18); }
.scenario-preset-icon { grid-row:1 / span 2; font-size:24px; }
.scenario-preset strong { font-size:13px; }
.scenario-preset small { font-size:11px; color:var(--text-muted); margin-top:5px; line-height:1.45; }
.scenario-preset-notice { margin:0 0 14px; padding:9px 12px; border:1px solid rgba(79,109,245,.35); border-radius:var(--radius-sm); background:var(--accent-glow); color:var(--accent); font-size:12px; }

/* Live simulation research dashboard */
.live-dashboard { margin-top:18px; border:1px solid #30364d; border-radius:14px; overflow:hidden; background:#11141d; box-shadow:0 18px 44px rgba(0,0,0,.24); }
.live-dashboard-header { padding:16px 18px; display:flex; align-items:flex-start; justify-content:space-between; gap:16px; border-bottom:1px solid #292e40; background:linear-gradient(120deg,#20253a,#181c2a); }
.live-eyebrow { display:block; margin-bottom:4px; color:#7c8cff; font:600 10px var(--mono); letter-spacing:.16em; }
.live-dashboard-header h2,.decision-brief-head h2 { margin:0; color:#edf1ff; font-size:18px; }
.live-dashboard-header p { margin:4px 0 0; color:#8991a8; font-size:12px; max-width:760px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.live-stage-wrap { display:flex; align-items:center; gap:9px; color:#aab1c5; font-size:12px; white-space:nowrap; }
.live-stage-badge { padding:5px 9px; border-radius:999px; background:rgba(79,109,245,.18); color:#9eacff; border:1px solid rgba(79,109,245,.35); font-size:11px; }
.live-stage-badge.active { background:rgba(52,211,153,.12); color:#5ee8b5; border-color:rgba(52,211,153,.3); }
.live-kpi-grid { display:grid; grid-template-columns:repeat(6,1fr); gap:1px; background:#292e40; border-bottom:1px solid #292e40; }
.live-kpi { min-width:0; padding:13px 15px; background:#171b27; display:flex; flex-direction:column; gap:3px; }
.live-kpi span { color:#7e879e; font-size:11px; }
.live-kpi strong { color:#f3f5ff; font-size:23px; line-height:1.15; font-variant-numeric:tabular-nums; }
.live-kpi i { color:#596178; font-size:10px; font-style:normal; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.live-dashboard-grid { display:grid; grid-template-columns:minmax(0,1.7fr) minmax(300px,.8fr); min-height:570px; }
.live-network-panel { min-width:0; border-right:1px solid #292e40; background:#0d1017; }
.live-panel-title { min-height:43px; padding:10px 14px; display:flex; justify-content:space-between; align-items:center; gap:10px; color:#788198; font-size:10px; border-bottom:1px solid #242938; }
.live-panel-title strong { color:#dce1ef; font-size:12px; }
.live-panel-title strong + span,.live-panel-title div > span { margin-left:8px; }
.live-network-legend { display:flex; align-items:center; flex-wrap:wrap; gap:10px; }
.live-network-legend span { margin:0 !important; color:#7e879e; }
.live-network-legend span::before { content:''; display:inline-block; width:7px; height:7px; border-radius:50%; margin-right:4px; }
.legend-unseen::before { background:#e2e8f0; }.legend-reached::before { background:#fbbf24; }.legend-adopted::before { background:#fb923c; }.legend-shared::before { background:#ef4444; }.legend-source::before { background:#818cf8; }
.live-network-viz { width:100%; height:525px; background:radial-gradient(circle at 50% 48%,#171b27 0,#0d1017 62%); position:relative; overflow:hidden; }
.live-side-panel { min-width:0; display:grid; grid-template-rows:270px 1fr; background:#131722; }
.live-mini-panel { min-height:0; border-bottom:1px solid #292e40; }
.live-chart-wrap { height:220px; padding:10px 12px; }
.live-feed-panel { display:flex; flex-direction:column; border-bottom:0; }
.live-event-feed { min-height:0; flex:1; overflow:auto; padding:5px 12px 12px; }
.live-event { padding:8px 5px; display:grid; grid-template-columns:28px 1fr; gap:7px; border-bottom:1px solid #222736; }
.live-event-icon { width:24px; height:24px; display:grid; place-items:center; border-radius:7px; background:#202637; font-size:12px; }
.live-event-main { min-width:0; color:#c7cddd; font-size:11px; line-height:1.45; }
.live-event-main b { color:#f0f2f8; font-weight:600; }.live-event-main span { color:#667087; margin-left:5px; }
.live-event-main p { margin:2px 0 0; color:#7f899f; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.live-empty { padding:30px 10px; text-align:center; color:#51596d; font-size:11px; }

/* Result decision brief */
.decision-brief { border:1px solid #30364d; border-radius:var(--radius); background:linear-gradient(145deg,#181d2c,#121722); overflow:hidden; }
.decision-brief-head { padding:15px 18px; display:flex; justify-content:space-between; align-items:center; border-bottom:1px solid #2a3042; }
.decision-scope { color:#737d94; font-size:10px; border:1px solid #343b50; border-radius:999px; padding:5px 9px; }
.decision-brief-body { padding:16px 18px; display:grid; grid-template-columns:1.1fr repeat(3,1fr); gap:12px; }
.decision-outcome,.decision-signal { border:1px solid #2d3448; border-radius:10px; background:rgba(12,15,23,.55); padding:14px; }
.decision-outcome strong { display:block; font-size:22px; color:#f2f4ff; margin:5px 0; }
.decision-outcome p,.decision-signal p { margin:5px 0 0; color:#8e97ac; font-size:11px; line-height:1.55; }
.decision-signal span { color:#717b92; font-size:10px; text-transform:uppercase; letter-spacing:.08em; }
.decision-signal strong { display:block; color:#e7eaf3; font-size:16px; margin-top:6px; }
.decision-risk-list { margin:8px 0 0; padding-left:16px; color:#9ca4b8; font-size:11px; line-height:1.7; }
.compact-chart { height:320px; }
.engagement-kpis { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; padding:16px 16px 0; }
.engagement-kpis > div { padding:12px; display:flex; flex-direction:column; align-items:center; gap:3px; border:1px solid var(--border); border-radius:9px; background:var(--bg-input); }
.engagement-kpis strong { font-size:22px; color:var(--text); }.engagement-kpis span { color:var(--text-muted); font-size:10px; }
.engagement-chart-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; padding:16px; }
.engagement-chart-grid + .engagement-chart-grid { padding-top:0; }
.engagement-chart { height:280px; padding:10px; border:1px solid var(--border); border-radius:9px; background:var(--bg-input); }
.engagement-post-list { max-height:280px; overflow:auto; border:1px solid var(--border); border-radius:9px; padding:5px 12px; background:var(--bg-input); }
.engagement-post { padding:9px 0; border-bottom:1px solid var(--border); }.engagement-post:last-child { border:0; }
.engagement-post div { display:flex; align-items:center; gap:7px; color:var(--text); font-size:11px; }
.engagement-post div span { color:var(--text-muted); }.engagement-post div em { margin-left:auto; color:var(--text-dim); font-style:normal; white-space:nowrap; }
.engagement-post p { margin:5px 0 0; color:var(--text-muted); font-size:12px; line-height:1.5; }

/* Results */
.results-layout { display:flex; flex-direction:column; gap:20px; max-width:100%; margin:0 auto; padding:24px 16px; }

/* Chart wraps ensure proper sizing */
.chart-wrap { width:100%; height:420px; position:relative; }
.chart-wrap canvas { width:100% !important; height:100% !important; display:block; }

/* Wide cards in results - use full width */
.results-layout .card, .results-layout .viz-card { width:100%; }
.results-layout .viz-row { display:grid; grid-template-columns:1fr 1fr; gap:20px; }
@media (min-width:1600px) {
    .results-layout { padding:24px 32px; }
}
@media (max-width:1200px) {
    .results-layout .viz-row { grid-template-columns:1fr; }
    .live-kpi-grid { grid-template-columns:repeat(3,1fr); }
    .live-dashboard-grid { grid-template-columns:1fr; }
    .live-network-panel { border-right:0; border-bottom:1px solid #292e40; }
    .live-side-panel { grid-template-columns:1fr 1fr; grid-template-rows:300px; }
    .decision-brief-body { grid-template-columns:1fr 1fr; }
}
.summary-row { display:grid; grid-template-columns:repeat(5,1fr); gap:16px; }
.summary-card { background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius); padding:18px 20px; display:flex; flex-direction:column; gap:6px; position:relative; overflow:hidden; }
.summary-card::before { content:''; position:absolute; top:0; left:0; right:0; height:2px; background:linear-gradient(90deg,var(--accent),transparent); opacity:.6; }
.summary-label { font-size:12px; color:var(--text-muted); text-transform:uppercase; letter-spacing:.05em; }
.summary-value { font-size:28px; font-weight:700; }
.viz-row { display:grid; grid-template-columns:1fr 1fr; gap:20px; }
.viz-card .card-body { min-height:400px; padding:16px; }
.graph-container { width:100%; height:400px; position:relative; }

/* Table */
.table-wrap { overflow-x:auto; }
.data-table { width:100%; border-collapse:collapse; font-size:13px; }
.data-table th { text-align:left; padding:10px 14px; border-bottom:2px solid var(--border); color:var(--text-muted); font-weight:600; font-size:12px; }
.data-table td { padding:10px 14px; border-bottom:1px solid var(--border); font-family:var(--mono); font-size:12px; }
.report-pre { background:var(--bg-input); border:1px solid var(--border); border-radius:var(--radius-sm); padding:20px; font-family:var(--mono); font-size:12px; line-height:1.7; color:var(--text-muted); max-height:500px; overflow-y:auto; white-space:pre-wrap; word-break:break-word; }

/* Tooltip */
.node-tooltip { position:absolute; background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius-sm); padding:10px 14px; font-size:12px; pointer-events:none; z-index:200; box-shadow:var(--shadow); }
.tt-label { font-weight:600; color:var(--accent); margin-bottom:4px; }
.tt-row { color:var(--text-muted); line-height:1.6; }

/* Modal */
.modal-overlay { position:fixed; inset:0; background:rgba(0,0,0,0.6); display:flex; align-items:center; justify-content:center; z-index:500; backdrop-filter:blur(4px); }
.modal { background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius); padding:24px; width:420px; max-width:90vw; }
.modal h3 { font-size:16px; margin-bottom:16px; }
.modal-actions { display:flex; justify-content:flex-end; gap:8px; margin-top:16px; }
.credential-modal { width:780px; max-width:94vw; max-height:88vh; overflow:auto; }
.credential-modal .modal-header h3 { margin:0; }
.credential-list { display:flex; flex-direction:column; gap:10px; }
.credential-row { display:grid; grid-template-columns:180px minmax(260px,1fr) auto; gap:12px; align-items:center; padding:14px; background:var(--bg-input); border:1px solid var(--border); border-radius:8px; }
.credential-row.plan-key-row { border-color:#8b5cf655; background:#8b5cf60a; }
.credential-provider { display:flex; flex-direction:column; gap:2px; }
.credential-provider strong { font-size:13px; }
.credential-provider span,.credential-provider a { color:var(--text-muted); font-size:10px; text-decoration:none; }
.credential-editor { display:flex; flex-direction:column; gap:4px; }
.credential-status { font-size:10px; color:var(--text-dim); }
.credential-status.configured { color:var(--green); }
.credential-status.pending { color:#93c5fd; }
.credential-status.error { color:var(--red); }
.credential-actions { display:flex; gap:5px; }
.credential-footnote { margin-top:12px; color:var(--text-muted); font-size:11px; }
.danger-text { color:#f87171 !important; }
.key-count-badge { margin-left:4px; padding:1px 5px; border-radius:8px; background:rgba(255,255,255,.14); font-size:9px; }
.credential-reminder { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px 14px; margin-bottom:12px; border:1px solid #f59e0b55; background:#f59e0b0b; border-radius:8px; cursor:pointer; }
.credential-reminder strong { font-size:13px; color:#fbbf24; }
.credential-reminder p { color:var(--text-muted); font-size:11px; margin-top:2px; }
.credential-reminder.ready { border-color:#22c55e55; background:#22c55e0b; }
.credential-reminder.ready strong { color:#86efac; }
.credential-reminder.pending { border-color:#60a5fa55; background:#3b82f60b; }
.credential-reminder.pending strong { color:#93c5fd; }
.provider-key-state { white-space:nowrap; padding:4px 8px; border-radius:12px; font-size:10px; }
.provider-key-state.missing { color:#fca5a5; background:#ef44441a; }
.provider-key-state.ready { color:#86efac; background:#22c55e1a; }
@media (max-width:760px) { .credential-row { grid-template-columns:1fr; } .credential-actions { justify-content:flex-end; } }
.saved-list { display:flex; flex-direction:column; gap:8px; max-height:300px; overflow-y:auto; }
.saved-item { display:flex; align-items:center; justify-content:space-between; padding:10px 14px; background:var(--bg-input); border:1px solid var(--border); border-radius:var(--radius-sm); }
.saved-info { display:flex; flex-direction:column; gap:2px; }
.saved-actions { display:flex; gap:6px; }

/* Scrollbar */
::-webkit-scrollbar { width:6px; height:6px; }
::-webkit-scrollbar-track { background:transparent; }
::-webkit-scrollbar-thumb { background:var(--border); border-radius:3px; }

/* Network Type Selector */
.network-type-selector, .diffusion-mode-selector { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.radio-card { display:flex; flex-direction:column; gap:4px; padding:12px 14px; border:1px solid var(--border); border-radius:var(--radius-sm); cursor:pointer; transition:all .15s; }
.radio-card:hover { border-color:var(--accent); }
.radio-card.active { border-color:var(--accent); background:var(--accent-glow); }
.radio-card input[type="radio"] { display:none; }
.radio-card strong { font-size:13px; }
.algo-params-box { background:var(--bg-input); border:1px solid var(--border); border-radius:var(--radius-sm); padding:14px; margin:8px 0; }

/* Communicator Grid */
.comm-grid { display:flex; flex-direction:column; gap:8px; }
.comm-item { background:var(--bg-input); border:1px solid var(--border); border-radius:var(--radius-sm); padding:10px 14px; }
.comm-item label { font-weight:500; font-size:13px; cursor:pointer; }
.comm-item .comm-params { margin-top:10px; padding-top:10px; border-top:1px solid var(--border); }
.comm-check { margin-right:6px; }

/* Help Button */
.help-btn { display:inline-flex; align-items:center; justify-content:center; width:22px; height:22px; border-radius:50%; border:1px solid var(--border); background:transparent; color:var(--text-dim); font-size:12px; cursor:pointer; transition:all .15s; vertical-align:middle; margin-left:6px; padding:0; line-height:1; }
.help-btn:hover { border-color:var(--accent); color:var(--accent); background:var(--accent-glow); }

/* Help Modal */
.modal-lg { width:640px; max-width:90vw; max-height:80vh; display:flex; flex-direction:column; }
.modal-header { display:flex; align-items:center; justify-content:space-between; padding-bottom:12px; border-bottom:1px solid var(--border); margin-bottom:16px; }
.btn-close { background:none; border:none; color:var(--text-muted); font-size:18px; cursor:pointer; padding:4px 8px; }
.btn-close:hover { color:var(--text); }
.help-content { overflow-y:auto; flex:1; font-size:13px; line-height:1.8; }
.help-content h1 { font-size:18px; margin-bottom:12px; color:var(--accent); }
.help-content h2 { font-size:15px; margin:16px 0 8px; color:var(--text); }
.help-content h3 { font-size:13px; margin:12px 0 6px; color:var(--text-muted); }
.help-content p { margin-bottom:8px; }
.help-content code { background:var(--bg-input); padding:2px 6px; border-radius:3px; font-family:var(--mono); font-size:12px; }
.help-content pre { background:var(--bg-input); border:1px solid var(--border); border-radius:var(--radius-sm); padding:12px; margin:8px 0; overflow-x:auto; }
.help-content pre code { background:none; padding:0; }
.help-content table { width:100%; border-collapse:collapse; margin:8px 0; }
.help-content th, .help-content td { padding:8px 12px; border:1px solid var(--border); font-size:12px; text-align:left; }
.help-content th { background:var(--bg-input); color:var(--text-muted); font-weight:600; }
.help-content ul, .help-content ol { padding-left:20px; margin-bottom:8px; }
.help-content li { margin-bottom:4px; }

/* Dimension Distribution Table */
.dim-dist-table { display:flex; flex-direction:column; gap:12px; }
.dim-dist-group { background:var(--bg-input); border:1px solid var(--border); border-radius:var(--radius-sm); padding:12px; }
.dim-dist-group-title { font-size:13px; font-weight:600; color:var(--accent); margin-bottom:8px; }
.dim-dist-bars { display:flex; flex-direction:column; gap:4px; }
.dim-dist-row { display:flex; align-items:center; gap:8px; font-size:12px; }
.dim-dist-label { min-width:140px; color:var(--text-muted); text-overflow:ellipsis; overflow:hidden; white-space:nowrap; }
.dim-dist-bar-wrap { flex:1; height:18px; background:var(--bg); border-radius:3px; overflow:hidden; position:relative; }
.dim-dist-bar { height:100%; background:linear-gradient(90deg,var(--accent),#6366f1); border-radius:3px; transition:width .3s; min-width:2px; }
.dim-dist-pct { min-width:45px; text-align:right; font-family:var(--mono); color:var(--text); font-weight:500; }

/* Emergence Metrics */
.emergence-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }
.emergence-item { display:flex; flex-direction:column; gap:4px; padding:14px; background:var(--bg-input); border:1px solid var(--border); border-radius:var(--radius-sm); }
.emergence-label { font-size:12px; color:var(--text-muted); font-weight:500; }
.emergence-value { font-size:22px; font-weight:700; color:var(--accent); }

/* Validation Area */
.validation-upload-area { border:2px dashed var(--border); border-radius:var(--radius); padding:24px; text-align:center; }
.benchmark-form-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;text-align:left}.benchmark-upload-row,.benchmark-run-row{display:flex;gap:8px;align-items:center;margin-top:12px}.benchmark-upload-row .hint{flex:1;text-align:left}.benchmark-run-row select{max-width:520px}.validation-report{margin-top:16px}.validation-metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.validation-metric{border:1px solid #2d3448;border-radius:9px;padding:11px;background:#121622}.validation-metric span{display:block;color:#778198;font-size:10px}.validation-metric strong{display:block;margin-top:4px;font-size:18px}.fit-score-card{display:flex;justify-content:space-between;align-items:center;border:1px solid #4f6df566;background:#4f6df50e;border-radius:11px;padding:15px;margin-bottom:12px}.fit-score-card strong{font-size:28px;color:#8fa3ff}.validation-warning{font-size:11px;color:#fbbf24;margin-top:8px}
@media(max-width:850px){.benchmark-form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.validation-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.benchmark-upload-row,.benchmark-run-row{align-items:stretch;flex-direction:column}.benchmark-run-row select{max-width:none}}
.result-dashboard-nav{position:sticky;top:8px;z-index:20;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:8px;border:1px solid #2b3144;border-radius:14px;background:rgba(15,18,28,.94);backdrop-filter:blur(14px);box-shadow:0 10px 30px rgba(0,0,0,.22)}
.result-dashboard-btn{display:flex;flex-direction:column;gap:3px;align-items:flex-start;padding:12px 14px;border:1px solid transparent;border-radius:10px;background:transparent;color:#8991a8;cursor:pointer;text-align:left;transition:.18s ease}.result-dashboard-btn strong{font-size:13px;color:#c4cad8}.result-dashboard-btn span{font-size:10px}.result-dashboard-btn:hover{background:#1a1f2e}.result-dashboard-btn.active{border-color:#6078ff77;background:#526cf51a}.result-dashboard-btn.active strong{color:#aebaff}
.result-dashboard-marker{display:none!important}.benchmark-assessment-card .card-header>div h2{margin:3px 0 0}.benchmark-assessment-result{margin-top:16px}.dashboard-empty-state{display:flex;flex-direction:column;align-items:center;gap:5px;padding:42px 20px;border:1px dashed #30364b;border-radius:12px;color:#778198}.dashboard-empty-state strong{color:#b8c0d3}.dashboard-audit-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.dashboard-audit-card{padding:13px;border:1px solid #2d3448;border-radius:10px;background:#121622}.dashboard-audit-card span,.dashboard-audit-card small{display:block;color:#778198;font-size:10px}.dashboard-audit-card strong{display:block;margin:5px 0;font-size:18px}.dashboard-audit-card.ok strong{color:#57d6a0}.dashboard-audit-card.warn strong{color:#fbbf24}.dataset-capabilities{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}.dataset-capability{padding:6px 9px;border-radius:20px;background:#202638;color:#8b95aa;font-size:10px}.dataset-capability.available{background:#1d3a34;color:#75e0b4}.dataset-issues{margin-top:12px;padding-left:19px;color:#f1bd5c;font-size:11px}.dataset-provenance{margin-top:12px;padding:12px;border-left:3px solid #526cf5;background:#151a28;color:#929bb0;font-size:11px;line-height:1.7}
@media(max-width:700px){.result-dashboard-nav{position:static;grid-template-columns:1fr}.result-dashboard-btn span{display:none}.dashboard-audit-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.upload-placeholder { display:flex; flex-direction:column; align-items:center; gap:8px; }
.upload-placeholder p { color:var(--text-dim); font-size:13px; }

/* Budget Calculator */
.budget-calculator { background:var(--bg-input); border:1px solid var(--border); border-radius:var(--radius-sm); padding:14px; margin:8px 0; }
.budget-formula { font-family:var(--mono); font-size:13px; color:var(--text); margin:8px 0; line-height:1.8; }
.budget-bar-wrap { height:8px; background:var(--bg); border-radius:4px; overflow:hidden; margin:8px 0; }
.budget-bar { height:100%; border-radius:4px; transition:width .3s, background .3s; }
.budget-note { font-size:12px; color:var(--text-dim); }
.budget-ok { background:var(--green); }
.budget-tight { background:#f59e0b; }
.budget-over { background:var(--red); }

/* AI Report */
.ai-report-content { font-size:13px; line-height:1.8; max-height:600px; overflow-y:auto; }
.ai-report-content h1,.ai-report-content h2,.ai-report-content h3 { margin:12px 0 6px; }
.ai-report-content h2 { font-size:15px; color:var(--accent); }
.ai-report-content p { margin-bottom:8px; }
.ai-report-content ul,.ai-report-content ol { padding-left:20px; margin-bottom:8px; }

/* Diffusion Flow (Sankey-style) */
.flow-container { width:100%; height:380px; position:relative; }
.flow-stage { position:absolute; display:flex; flex-direction:column; gap:4px; }
.flow-node { border-radius:4px; padding:4px 8px; font-size:11px; color:#fff; white-space:nowrap; cursor:default; transition:opacity .2s; }
.flow-node:hover { opacity:0.8; }
.flow-svg { position:absolute; top:0; left:0; width:100%; height:100%; pointer-events:none; }
.flow-path { fill:none; opacity:0.25; transition:opacity .2s; }

/* Badge */
.badge { display:inline-block; padding:2px 8px; background:var(--accent-glow); color:var(--accent); font-size:11px; border-radius:10px; font-weight:500; }

@media (max-width:960px) { .viz-row{grid-template-columns:1fr} .summary-row{grid-template-columns:repeat(3,1fr)} .emergence-grid{grid-template-columns:repeat(2,1fr)} .network-type-selector{grid-template-columns:1fr} }
@media (max-width:720px) {
    .scenario-preset-grid { grid-template-columns:1fr; }
    .live-dashboard-header { flex-direction:column; }
    .live-kpi-grid { grid-template-columns:repeat(2,1fr); }
    .live-side-panel { grid-template-columns:1fr; grid-template-rows:270px 330px; }
    .live-network-viz { height:440px; }
    .live-network-legend { display:none; }
    .decision-brief-body { grid-template-columns:1fr; }
    .decision-brief-head { align-items:flex-start; gap:8px; flex-direction:column; }
    .engagement-kpis { grid-template-columns:repeat(2,1fr); }
    .engagement-chart-grid { grid-template-columns:1fr; }
}

/* ============================================================ */
/* TWO-PHASE NAVIGATION BAR                                     */
/* ============================================================ */
.phase-nav-bar {
    display: flex; gap: 6px; padding: 4px;
    background: #0f121a; border: 1px solid var(--border); border-radius: 11px;
}
.phase-nav-btn {
    display: flex; align-items: center; gap: 6px;
    padding: 7px 13px; border-radius: 8px;
    background: transparent; border: 1px solid transparent;
    color: var(--text-muted); font: 500 12px var(--font); cursor: pointer;
    transition: all 0.15s; white-space: nowrap;
}
.phase-nav-btn>span:last-child{display:flex;flex-direction:column;align-items:flex-start;line-height:1.25}.phase-nav-btn strong{font-size:12px;font-weight:600}.phase-nav-btn small{font-size:9px;color:var(--text-dim);font-weight:400}
.phase-nav-btn:hover { border-color: var(--accent); color: var(--text); background: rgba(255,255,255,0.03); }
.phase-nav-btn.active {
    background: var(--accent-glow); border-color: var(--accent);
    color: var(--accent); font-weight: 600;
}
.phase-nav-icon { font-size: 15px; line-height: 1; }

/* When in calib phase, hide abm-specific header elements */
body.phase-calib .nav-tabs { display: none !important; }
body.phase-calib .step-progress-bar { display: none !important; }
body.phase-calib .module-context-bar,body.phase-calib .sim-only-action{display:none!important}

@media (max-width: 720px) {
    .app-header{padding:8px 12px;align-items:flex-start;flex-wrap:wrap}.header-left{width:100%;justify-content:space-between;gap:10px}.header-right{width:100%;justify-content:flex-end;overflow-x:auto}.phase-nav-bar{padding:3px}.phase-nav-btn{padding:6px 9px}.phase-nav-btn small{display:none}.module-context-bar{padding:8px 12px}.module-context-bar>div{display:none}.nav-tab{padding:7px 10px;font-size:12px}
}

/* ============================================================ */
/* CALIBRATION PARAMS BANNER (step4 传播机制)                    */
/* ============================================================ */
.calib-params-banner {
    display: flex; align-items: center; justify-content: space-between;
    gap: 14px; padding: 14px 18px; margin-bottom: 16px;
    background: linear-gradient(135deg, rgba(79,109,245,0.12), rgba(72,187,120,0.06));
    border: 1px solid rgba(79,109,245,0.35); border-radius: var(--radius);
    animation: fadeIn 0.3s ease;
}
.calib-banner-info { display: flex; align-items: center; gap: 12px; flex: 1; min-width: 0; }
.calib-banner-icon { font-size: 22px; flex-shrink: 0; }
.calib-banner-text { font-size: 14px; color: var(--text); line-height: 1.5; }
.calib-banner-text strong { color: var(--accent); }
.calib-banner-note { font-size: 11px; color: var(--text-muted); margin-top: 3px; line-height: 1.4; }
.calib-banner-actions { display: flex; gap: 6px; flex-shrink: 0; }
@media (max-width: 720px) {
    .calib-params-banner { flex-direction: column; align-items: stretch; gap: 10px; }
    .calib-banner-actions { justify-content: flex-end; }
}

/* ============================================================ */
/* CALIBRATION PANEL (scoped under #calib-app)                  */
/* All styles prefixed with #calib-app to avoid conflicts with  */
/* the abm theme. CSS variables are redefined locally.          */
/* ============================================================ */
#calib-app {
    --bg: #0f1419; --panel: #1a2029; --panel2: #222b36; --border: #2d3744;
    --text: #e2e8f0; --muted: #8b98a9; --accent: #4f9cf9; --green: #48bb78;
    --red: #f56565; --yellow: #ecc94b; --purple: #9f7aea; --orange: #f59e0b;
}

.calib-analysis-meta{display:flex;gap:7px;flex-wrap:wrap;margin:8px 0 12px}.calib-analysis-meta .badge.warning{color:#f6c453;background:rgba(246,196,83,.12)}
.calib-excluded{margin:12px 0 20px;border:1px solid rgba(245,101,101,.24);border-radius:9px;background:rgba(245,101,101,.04)}
.calib-excluded summary{cursor:pointer;padding:10px 12px;color:#f1a1a1;font-size:12px}.calib-excluded>div{padding:0 12px 12px}.calib-excluded-row{padding:9px;border:1px solid var(--border);border-radius:7px;background:var(--panel2)}
.calib-analysis-title{margin:22px 0 10px;color:var(--text)}.calib-analysis-panel{padding:14px;border:1px solid var(--border);border-radius:10px;background:rgba(15,20,25,.45);min-width:0}.calib-analysis-panel>label{display:block;margin-bottom:8px}.polar-score{font:700 42px/1.2 'JetBrains Mono',monospace;color:var(--accent);margin:18px 0 10px}.topic-cluster-list{display:flex;flex-direction:column;gap:7px;max-height:220px;overflow:auto}.topic-cluster-row{display:grid;grid-template-columns:minmax(0,1fr) auto 48px;gap:8px;align-items:center;padding:7px 8px;border-radius:7px;background:var(--panel2);font-size:11px}.topic-cluster-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topic-cluster-row small{text-align:right;color:var(--muted)}.emoji-space-panel{margin-top:12px}.emoji-space-panel .chart-wrap-wide{height:360px}.calib-method-note{padding:9px 2px 18px;line-height:1.65}
.sentiment-summary{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:6px}.sentiment-summary span{font-size:10px;color:var(--muted);padding:3px 6px;border-radius:999px;background:var(--panel2)}.sentiment-summary b{color:var(--text)}
@media(max-width:720px){.calib-analysis-grid{grid-template-columns:1fr!important}.emoji-space-panel .chart-wrap-wide{height:300px}}

/* Calib workflow navigation (sticky below the global module header) */
#calib-app .calib-header {
    background: var(--panel); border-bottom: 1px solid var(--border);
    padding: 10px 24px; display: flex; align-items: center; gap: 16px; flex-wrap: wrap;
    position: sticky; top: 68px; z-index: 90;
}
#calib-app .calib-title-block{min-width:185px}#calib-app .calib-title-block .module-kicker{display:block;margin-bottom:2px}
#calib-app .calib-header h1 {
    margin: 0; font-size: 14px; font-weight: 600; color: var(--text); white-space: nowrap;
}
#calib-app .calib-header .badge {
    background: var(--panel2); padding: 3px 10px; border-radius: 12px;
    font-size: 11px; color: var(--muted); border: 1px solid var(--border);
    display: inline-block; font-weight: 400;
}
#calib-app .calib-header .badge.on { color: var(--green); border-color: var(--green); }
#calib-app .calib-header nav { display: flex; gap: 4px; width:100%; order:3; overflow-x:auto; padding-top:7px; border-top:1px solid var(--border); }
#calib-app .calib-header nav button {
    background: transparent; border: 1px solid transparent; color: var(--muted);
    padding: 7px 12px; border-radius: 7px; cursor: pointer; font-size: 12px; flex:1 0 auto;
    font-family: var(--font); transition: all 0.15s;
}
#calib-app .calib-header nav button b,#calib-app .calib-header nav button small{display:block}#calib-app .calib-header nav button b{font-size:11px}#calib-app .calib-header nav button small{font-size:9px;margin-top:2px;opacity:.65;font-weight:400}
#calib-app .calib-header nav button:hover { background: var(--panel2); color: var(--text); }
#calib-app .calib-header nav button.active { background: var(--accent); color: #fff; }

#calib-app .calib-main { max-width: 1200px; margin: 0 auto; padding: 24px; }
#calib-app .calib-context-bar {
    display:flex; align-items:flex-end; gap:18px; justify-content:space-between;
    background:linear-gradient(135deg,rgba(79,156,249,.10),rgba(159,122,234,.06));
}
#calib-app .calib-context-bar > div:first-child { min-width:280px; }
#calib-app .calib-callout {
    margin:10px 0 14px; padding:10px 12px; border-radius:7px;
    border:1px solid var(--border); background:var(--bg); color:var(--muted);
    font-size:12px; line-height:1.55;
}
#calib-app .calib-callout[data-status="verified"] { border-color:rgba(72,187,120,.55); color:var(--green); }
#calib-app .calib-callout[data-status="pending"] { border-color:rgba(236,201,75,.55); color:var(--yellow); }
#calib-app .calib-flow-actions{display:flex;align-items:center;justify-content:flex-end;gap:9px;padding:13px 15px;margin-top:4px;border:1px solid var(--border);border-radius:9px;background:rgba(255,255,255,.018)}#calib-app .calib-flow-actions span{margin-right:auto;color:var(--muted);font-size:11px}
#calib-app .section { display: none; }
#calib-app .section.active { display: block; }

#calib-app .card {
    background: var(--panel); border: 1px solid var(--border);
    border-radius: 10px; padding: 20px; margin-bottom: 16px;
}
#calib-app .card:hover { border-color: var(--border); }
#calib-app .card h2 { margin: 0 0 14px; font-size: 15px; font-weight: 600; color: var(--text); }
#calib-app .card h3 { margin: 12px 0 8px; font-size: 13px; font-weight: 600; color: var(--text); }

#calib-app .grid { display: grid; gap: 16px; }
#calib-app .grid-2 { grid-template-columns: 1fr 1fr; }
#calib-app .grid-3 { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 900px) { #calib-app .grid-2, #calib-app .grid-3 { grid-template-columns: 1fr; } }
@media (max-width: 720px) {
    #calib-app .calib-header { padding:10px 12px; position:static; }
    #calib-app .calib-header nav {
        order:3; width:100%; flex-wrap:nowrap; overflow-x:auto; padding-bottom:4px;
        scrollbar-width:thin;
    }
    #calib-app .calib-header nav button { flex:0 0 auto; }
    #calib-app .calib-main { padding:14px 12px; }
    #calib-app .calib-context-bar { align-items:stretch; flex-direction:column; gap:8px; }
    #calib-app .calib-context-bar > div:first-child { min-width:0; }
    #calib-app .calib-flow-actions{align-items:stretch;flex-direction:column}#calib-app .calib-flow-actions span{margin-right:0}
}

#calib-app label { display: block; color: var(--muted); font-size: 12px; margin-bottom: 4px; }
#calib-app input, #calib-app select, #calib-app textarea {
    width: 100%; background: var(--bg); border: 1px solid var(--border);
    color: var(--text); padding: 8px 10px; border-radius: 6px;
    font-size: 13px; font-family: inherit; outline: none; transition: border-color 0.15s;
}
#calib-app input:focus, #calib-app select:focus, #calib-app textarea:focus { border-color: var(--accent); }

#calib-app button.primary {
    background: var(--accent); color: #fff; border: none;
    padding: 8px 18px; border-radius: 6px; cursor: pointer;
    font-size: 13px; font-weight: 500; font-family: var(--font); transition: opacity 0.15s;
}
#calib-app button.primary:hover { opacity: 0.9; }
#calib-app button.primary:disabled { opacity: 0.4; cursor: not-allowed; }
#calib-app button.ghost {
    background: var(--panel2); color: var(--text); border: 1px solid var(--border);
    padding: 8px 14px; border-radius: 6px; cursor: pointer;
    font-size: 13px; font-family: var(--font); transition: all 0.15s;
}
#calib-app button.ghost:hover { border-color: var(--accent); }
#calib-app button.danger {
    background: var(--red); color: #fff; border: none;
    padding: 8px 14px; border-radius: 6px; cursor: pointer;
    font-size: 13px; font-family: var(--font); transition: opacity 0.15s;
}
#calib-app button.danger:hover { opacity: 0.9; }

#calib-app .row { display: flex; gap: 10px; align-items: center; }
#calib-app .row > * { flex: 1; }

#calib-app .kv {
    display: flex; justify-content: space-between; padding: 6px 0;
    border-bottom: 1px solid var(--border); gap: 12px;
}
#calib-app .kv:last-child { border-bottom: none; }
#calib-app .kv span:first-child { color: var(--muted); flex-shrink: 0; }
#calib-app .kv span:last-child { text-align: right; word-break: break-all; }

#calib-app .progress {
    background: var(--bg); border-radius: 6px; height: 22px; overflow: hidden;
    border: 1px solid var(--border); position: relative;
}
#calib-app .progress-bar { background: var(--accent); height: 100%; transition: width 0.3s; }
#calib-app .progress-text {
    position: absolute; inset: 0; display: flex; align-items: center;
    justify-content: center; font-size: 12px; color: #fff;
}

#calib-app .log {
    background: #0a0e13; border: 1px solid var(--border); border-radius: 6px;
    padding: 10px; height: 240px; overflow-y: auto;
    font-family: var(--mono); font-size: 12px; line-height: 1.5; color: #b8c5d6;
}
#calib-app .log .err { color: var(--red); }
#calib-app .log .ok { color: var(--green); }

#calib-app table { width: 100%; border-collapse: collapse; font-size: 13px; }
#calib-app th, #calib-app td { text-align: left; padding: 8px 10px; border-bottom: 1px solid var(--border); }
#calib-app th { color: var(--muted); font-weight: 500; font-size: 12px; }
#calib-app tr:hover { background: var(--panel2); cursor: pointer; }
#calib-app tr.selected { background: var(--panel2); }

#calib-app .tag {
    display: inline-block; padding: 2px 8px; border-radius: 10px; font-size: 11px;
    border: 1px solid transparent;
}
#calib-app .tag.full { background: rgba(72,187,120,0.15); color: var(--green); }
#calib-app .tag.posts_only { background: rgba(236,201,75,0.15); color: var(--yellow); }
#calib-app .tag.support { background: rgba(72,187,120,0.15); color: var(--green); }
#calib-app .tag.oppose { background: rgba(245,101,101,0.15); color: var(--red); }
#calib-app .tag.neutral { background: rgba(139,152,169,0.15); color: var(--muted); }
#calib-app .tag.question { background: rgba(159,122,234,0.15); color: var(--purple); }
#calib-app .tag.ok { background: rgba(72,187,120,0.15); color: var(--green); }
#calib-app .tag.warn { background: rgba(245,101,101,0.15); color: var(--red); }
#calib-app .tag-list { display: flex; flex-wrap: wrap; gap: 6px; }

#calib-app .kv-row { display: flex; gap: 10px; align-items: center; margin-bottom: 8px; }
#calib-app .kv-row label { margin: 0; min-width: 50px; }
#calib-app .kv-row select { max-width: 320px; }

#calib-app .chart-wrap { position: relative; height: 240px; min-width:0; }
#calib-app .chart-wrap-compact{height:145px;margin:10px 0 12px}#calib-app .chart-wrap-wide{height:320px}
#calib-app .chart-wrap canvas { width: 100% !important; height: 100% !important; }

#calib-app .muted { color: var(--muted); }
#calib-app .small { font-size: 12px; }
#calib-app .empty { text-align: center; color: var(--muted); padding: 40px 20px; line-height: 1.8; }
#calib-app code {
    background: var(--bg); padding: 1px 5px; border-radius: 4px;
    font-family: var(--mono); font-size: 12px; color: var(--accent);
}
#calib-app p { margin: 0 0 8px; }
#calib-app h3 { margin: 12px 0 8px; font-size: 13px; font-weight: 600; color: var(--text); }

/* Versioned round replay workbench */
.replay-workbench{overflow:hidden;border-color:#35405f;background:linear-gradient(145deg,#151a27,#10141e)}
.replay-header{align-items:flex-start;gap:18px}.replay-header h2{margin:2px 0 4px;font-size:18px}.replay-header p{margin:0}
.replay-export-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:7px}
.replay-controls{display:grid;grid-template-columns:auto auto auto auto minmax(180px,1fr) auto auto auto;align-items:center;gap:8px;padding:11px 16px;border-bottom:1px solid #2a3042;background:#111620}
.replay-controls label{display:flex;align-items:center;gap:6px;color:#778198;font-size:10px;white-space:nowrap}.replay-controls select{min-width:92px;height:31px;padding:4px 24px 4px 8px;font-size:11px}
.replay-controls input[type=range]{width:100%;accent-color:#7286ff}.replay-controls strong{min-width:112px;color:#d9dff0;font:600 11px var(--mono)}.replay-controls .replay-check{color:#9ba4b9}
.replay-kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:1px;background:#2a3042;border-bottom:1px solid #2a3042}.replay-kpis div{padding:10px 13px;background:#171c28}
.replay-kpis span,.replay-kpis small{display:block;color:#737d93;font-size:9px}.replay-kpis strong{display:block;margin:3px 0;color:#edf1ff;font-size:18px;font-variant-numeric:tabular-nums}
.replay-main-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(300px,.75fr);min-height:510px;border-bottom:1px solid #2a3042}
.replay-network-panel{min-width:0;border-right:1px solid #2a3042;background:#0d1119}.replay-events-panel{min-width:0;display:flex;flex-direction:column;background:#131823}
.replay-panel-title{min-height:42px;padding:10px 13px;display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid #272d3d;color:#6f7990;font-size:10px}.replay-panel-title strong{color:#d9deec;font-size:12px}
.replay-network{width:100%;height:468px;overflow:hidden;position:relative;background:radial-gradient(circle at 50% 48%,#192031 0,#0d1119 64%)}.replay-network svg{display:block;width:100%;height:100%}
.replay-event-filters{display:flex;gap:5px;padding:8px 10px;border-bottom:1px solid #252b3a;overflow-x:auto}.replay-event-filters button{border:1px solid #30384c;border-radius:999px;padding:4px 8px;background:transparent;color:#7d879d;font-size:9px;cursor:pointer}.replay-event-filters button.active{color:#cbd4ff;border-color:#657cff;background:#657cff1f}
.replay-event-timeline{flex:1;max-height:430px;overflow:auto;padding:5px 11px 12px}.replay-event-item{display:grid;grid-template-columns:40px 23px minmax(0,1fr);gap:7px;padding:9px 2px;border-bottom:1px solid #232938}.replay-event-wave{color:#697389;font:500 9px var(--mono);padding-top:5px}.replay-event-icon{width:22px;height:22px;display:grid;place-items:center;border-radius:6px;background:#242b3d;font-size:11px}.replay-event-body{min-width:0}.replay-event-body strong{color:#d2d8e7;font-size:10px}.replay-event-body em{margin-left:6px;color:#78839a;font:normal 9px var(--mono)}.replay-event-body p{margin:3px 0 0;color:#8892a8;font-size:10px;line-height:1.45;word-break:break-word}.replay-event-item.linked{margin:0 -5px;padding-left:7px;padding-right:7px;border-radius:7px;background:#657cff14}
.replay-trajectory-panel{background:#121722}.replay-paper-chart{height:350px;padding:12px 16px 18px}.replay-paper-chart canvas{width:100%!important;height:100%!important}.replay-node-label{fill:#bac2d4;font-size:9px;pointer-events:none}.replay-node.selected{stroke:#fff!important;stroke-width:4px!important}
@media(max-width:1200px){.replay-controls{grid-template-columns:auto auto auto auto minmax(150px,1fr) auto}.replay-kpis{grid-template-columns:repeat(3,1fr)}.replay-main-grid{grid-template-columns:1fr}.replay-network-panel{border-right:0;border-bottom:1px solid #2a3042}}
@media(max-width:720px){.replay-header{flex-direction:column}.replay-export-actions{justify-content:flex-start}.replay-controls{grid-template-columns:auto auto auto auto}.replay-controls input[type=range]{grid-column:1/-1}.replay-controls strong{grid-column:1/3}.replay-kpis{grid-template-columns:repeat(2,1fr)}.replay-network{height:390px}.replay-paper-chart{height:300px;padding:8px}}

/* ============================================================ */
/* MOBILE LAYOUT (纯增量;桌面端 ≥769px 完全不动)                */
/* 只在 ≤768px / ≤480px 生效,所有桌面默认样式不受影响。         */
/* ============================================================ */

/* 汉堡按钮:桌面隐藏 */
.mobile-menu-toggle { display:none; }

@media (max-width:768px) {
    /* ===== 顶栏 ===== */
    .app-header { padding:8px 12px; min-height:auto; flex-wrap:wrap; gap:8px 12px; align-items:center; }
    .header-left { width:100%; justify-content:space-between; gap:8px; }
    .header-right { width:100%; justify-content:space-between; overflow:visible; align-items:center; gap:8px; }
    .logo { font-size:15px; gap:8px; }
    .logo svg { width:22px; height:22px; }
    .phase-nav-bar { padding:3px; gap:4px; flex:1 1 auto; }
    .phase-nav-btn { padding:6px 9px; gap:5px; }
    .phase-nav-btn small { display:none; }
    .phase-nav-btn strong { font-size:11px; }
    .phase-nav-icon { font-size:13px; }

    /* 汉堡按钮显示 */
    .mobile-menu-toggle {
        display:inline-flex; align-items:center; justify-content:center;
        width:36px; height:36px; border-radius:8px; border:1px solid var(--border);
        background:var(--bg-card); color:var(--text); font-size:18px; cursor:pointer; flex-shrink:0;
    }
    .mobile-menu-toggle.active { background:var(--accent-glow); border-color:var(--accent); color:var(--accent); }

    /* 工具按钮区 -> 下拉面板(不克隆、无重复 ID;沿用现有按钮的登录态/相位显隐) */
    .header-actions {
        position:absolute; top:100%; left:0; right:0;
        flex-direction:column; align-items:stretch; gap:4px;
        background:var(--bg-card); border:1px solid var(--border); border-top:none;
        border-radius:0 0 var(--radius) var(--radius);
        padding:10px 12px; box-shadow:var(--shadow); z-index:200;
        display:none;
    }
    .header-actions.open { display:flex; }
    .header-actions .user-bar { flex-direction:column; align-items:stretch; gap:4px; width:100%; }
    .header-actions .user-bar-name { padding:6px 2px; font-size:12px; color:var(--text-muted); border-bottom:1px solid var(--border); margin-bottom:2px; }
    .header-actions .btn { width:100%; justify-content:flex-start; padding:9px 12px; }

    /* ===== 模块上下文栏 + 二级 nav ===== */
    .module-context-bar { padding:8px 12px; flex-wrap:wrap; gap:8px; }
    .module-context-bar > div { display:none; }
    .nav-tabs { overflow-x:auto; flex-wrap:nowrap; }
    .nav-tab { padding:7px 10px; font-size:12px; white-space:nowrap; }
    .nav-tab.return-start { padding-left:14px; margin-left:4px; }

    /* ===== 七步向导 ===== */
    .step-progress-bar { padding:10px 12px; justify-content:flex-start; }
    .step-item { min-width:48px; }
    .step-circle { width:26px; height:26px; font-size:11px; }
    .step-connector { width:18px; margin-bottom:16px; }
    .step-item > span { font-size:9px; }

    /* ===== 页面与卡片密度 ===== */
    .page { padding:14px 12px; }
    #page-settings.run-mode { max-width:100%; }
    #page-results.active { padding:10px 8px; }
    .results-layout { padding:14px 8px; gap:14px; }
    .card-body { padding:14px; }
    .card-header { padding:12px 14px; }
    .card-header h2 { font-size:14px; }

    /* ===== 网格折叠(补齐手机端) ===== */
    .summary-row { grid-template-columns:repeat(2,1fr); }
    .emergence-grid { grid-template-columns:1fr; }
    .replay-kpis { grid-template-columns:repeat(2,1fr); }
    .benchmark-form-grid { grid-template-columns:1fr; }
    .validation-metric-grid { grid-template-columns:repeat(2,1fr); }
    .dashboard-audit-grid { grid-template-columns:repeat(2,1fr); }
    .param-grid { grid-template-columns:1fr; }
    .form-row { flex-direction:column; align-items:stretch; }
    .network-type-selector, .diffusion-mode-selector { grid-template-columns:1fr; }
    .live-kpi-grid { grid-template-columns:repeat(2,1fr); }
    .engagement-kpis { grid-template-columns:repeat(2,1fr); }
    .scenario-preset-grid { grid-template-columns:1fr; }

    /* ===== 图表高度 ===== */
    .chart-wrap { height:300px; }
    .emoji-space-panel .chart-wrap-wide { height:280px; }
    #calib-app .chart-wrap-wide { height:260px; }
    .replay-network { height:360px; }
    .replay-paper-chart { height:280px; }

    /* ===== 表格横向滚动 ===== */
    .card-body > table, .results-layout table { display:block; overflow-x:auto; max-width:100%; }

    /* ===== 模态框 ===== */
    .modal { width:100%; max-width:94vw; }
    .credential-modal { width:100%; max-width:96vw; max-height:90vh; overflow:auto; }
    .modal-lg { width:100%; max-width:96vw; max-height:90vh; overflow:auto; }

    /* ===== 校准模块 ===== */
    #calib-app .calib-main { padding:14px 12px; max-width:100%; }
    #calib-app .calib-header { padding:10px 12px; position:static; }
    #calib-app .calib-context-bar { flex-direction:column; align-items:stretch; gap:8px; }
    #calib-app .calib-context-bar > div:first-child { min-width:0; }
    #calib-app .calib-flow-actions { flex-direction:column; align-items:stretch; }
    #calib-app .calib-flow-actions span { margin-right:0; }
    #calib-app .grid-2, #calib-app .grid-3 { grid-template-columns:1fr; }
    #calib-app .kv-row select { max-width:100%; }
    #calib-app .topic-cluster-row { grid-template-columns:minmax(0,1fr) auto 40px; }

    /* ===== 按钮触控 ===== */
    .btn-sm { padding:8px 12px; min-height:32px; }
}

@media (max-width:480px) {
    /* 小手机:网格全单列 */
    .summary-row, .replay-kpis, .live-kpi-grid, .engagement-kpis,
    .dashboard-audit-grid, .validation-metric-grid, .benchmark-form-grid,
    .param-grid, .scenario-preset-grid { grid-template-columns:1fr; }

    /* 七步向导:仅显示数字圆圈,隐藏文字 */
    .step-item > span { display:none; }
    .step-item { min-width:36px; }
    .step-connector { width:12px; margin-bottom:14px; }
    .step-circle { width:24px; height:24px; font-size:10px; }
    .step-progress-bar { padding:8px 10px; gap:0; }

    .app-header { padding:6px 10px; gap:6px 10px; }
    .page { padding:10px 8px; }
    .card-body { padding:12px 10px; }
    .card-header { padding:10px 12px; }
    .results-layout { padding:10px 6px; gap:12px; }

    .modal, .credential-modal, .modal-lg { max-width:96vw; }
    .chart-wrap { height:260px; }
    .replay-network { height:300px; }
}

/* ============================================================ */
/* SIMULATION WORKBENCH · RESPONSIVE DESIGN SYSTEM               */
/* Keeps every existing control/ID intact; only changes layout.  */
/* ============================================================ */
:root {
    --sim-surface:rgba(20,24,35,.92);
    --sim-surface-strong:#171c28;
    --sim-line:rgba(130,145,184,.18);
    --sim-line-strong:rgba(117,137,255,.42);
    --sim-blue:#7186ff;
    --sim-cyan:#58c7e8;
    --sim-shadow:0 24px 70px rgba(0,0,0,.28);
}
body {
    background:
        radial-gradient(circle at 12% -8%,rgba(79,109,245,.16),transparent 30%),
        radial-gradient(circle at 92% 8%,rgba(40,184,209,.08),transparent 25%),
        var(--bg);
}
.app-header {
    border-bottom-color:rgba(120,136,175,.18);
    box-shadow:0 8px 30px rgba(0,0,0,.16);
}
#sim-app { min-height:calc(100vh - 120px); }
#page-settings { max-width:1320px; padding:30px 28px 56px; }
#page-settings.run-mode { max-width:1480px; }

#sim-app .step-progress-bar {
    position:relative;
    background:linear-gradient(180deg,rgba(23,28,40,.96),rgba(17,21,31,.94));
    border-bottom-color:rgba(120,136,175,.16);
}
#sim-app .step-item { opacity:.58; min-width:72px; }
#sim-app .step-item.active { opacity:1; transform:translateY(-1px); }
#sim-app .step-circle {
    width:32px;height:32px;border-width:1px;
    background:rgba(8,11,18,.46);
}
#sim-app .step-item.active .step-circle {
    color:#fff;background:linear-gradient(145deg,#6179ff,#4058d8);
    border-color:#8da0ff;box-shadow:0 0 0 5px rgba(97,121,255,.11),0 8px 22px rgba(52,74,190,.32);
}
#sim-app .step-item.completed .step-circle {
    background:linear-gradient(145deg,#3fd3a0,#1b9f75);
    box-shadow:0 0 0 4px rgba(52,211,153,.08);
}
#sim-app .step-connector {
    height:1px;background:linear-gradient(90deg,rgba(112,129,170,.14),rgba(112,129,170,.48),rgba(112,129,170,.14));
}

#sim-app .step-panel {
    scroll-margin-top:92px;
    border:1px solid var(--sim-line);
    border-radius:20px;
    background:linear-gradient(145deg,rgba(25,30,43,.96),rgba(17,21,31,.98));
    box-shadow:var(--sim-shadow);
    animation:sim-panel-in .24s ease-out;
}
@keyframes sim-panel-in { from{opacity:.45;transform:translateY(8px)} to{opacity:1;transform:none} }
#sim-app .step-panel>.card-header {
    min-height:82px;padding:18px 22px;
    align-items:flex-start;
    background:linear-gradient(110deg,rgba(102,124,255,.10),transparent 52%);
    border-bottom-color:var(--sim-line);
}
.sim-step-heading { min-width:0; }
.sim-step-heading h2 { margin:2px 0 4px;font-size:18px;line-height:1.35;color:#f2f5ff; }
.sim-step-heading p { color:#7f8aa2;font-size:11px;line-height:1.55; }
.sim-step-kicker {
    display:block;color:#8294ff;font:700 9px/1.4 var(--mono);
    letter-spacing:.14em;text-transform:uppercase;
}
#sim-app .step-badge {
    width:26px;height:26px;border-radius:8px;
    background:linear-gradient(145deg,rgba(113,134,255,.25),rgba(78,97,207,.12));
    border:1px solid rgba(125,143,255,.34);color:#aebaff;
}
#sim-app .step-panel>.card-body { padding:22px; }

.sim-config-grid {
    display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);
    gap:18px;align-items:start;
}
.sim-source-grid { grid-template-columns:minmax(320px,.82fr) minmax(460px,1.18fr); }
.sim-agent-grid { grid-template-columns:minmax(380px,.9fr) minmax(520px,1.1fr); }
.sim-research-grid { grid-template-columns:minmax(0,1.15fr) minmax(330px,.85fr); }
.sim-mechanism-grid { grid-template-columns:minmax(430px,1fr) minmax(430px,1fr); }
.sim-budget-grid { grid-template-columns:minmax(520px,1.15fr) minmax(360px,.85fr); }
.sim-config-pane {
    min-width:0;padding:20px;border:1px solid var(--sim-line);
    border-radius:15px;background:rgba(11,14,22,.38);
    box-shadow:inset 0 1px rgba(255,255,255,.018);
}
.sim-config-pane-accent {
    border-color:rgba(105,126,245,.25);
    background:
        radial-gradient(circle at 100% 0,rgba(77,105,245,.10),transparent 34%),
        rgba(11,14,22,.42);
}
.sim-config-pane-muted { background:rgba(13,16,24,.55); }
.sim-pane-head { margin:-2px 0 18px;padding-bottom:14px;border-bottom:1px solid var(--sim-line); }
.sim-pane-head>span {
    display:block;margin-bottom:5px;color:#6f82ef;
    font:700 9px/1.4 var(--mono);letter-spacing:.15em;
}
.sim-pane-head h3 { margin:0;color:#e8ecf7;font-size:15px;letter-spacing:.01em; }
.sim-pane-head p { margin:5px 0 0;color:#727e96;font-size:11px;line-height:1.55; }
.sim-config-pane .form-row { flex-wrap:wrap; }
.sim-config-pane .form-row>.form-group { min-width:140px; }
.sim-config-pane .section-label { color:#9da7bb;font-size:10px;letter-spacing:.09em; }
.sim-config-pane .input {
    min-height:42px;border-color:rgba(120,135,170,.22);
    background:rgba(7,10,16,.54);
}
.sim-config-pane .input:hover { border-color:rgba(128,145,190,.38); }
.sim-config-pane .input:focus {
    border-color:#7186ff;box-shadow:0 0 0 3px rgba(113,134,255,.12),0 8px 22px rgba(0,0,0,.14);
}
.sim-config-pane .textarea { min-height:92px; }
.sim-config-pane .radio-card,
.sim-config-pane .toggle-card,
.sim-config-pane .comm-item,
.sim-config-pane .workflow-action {
    border-color:rgba(121,137,177,.20);
    background:rgba(18,22,33,.72);
}
.sim-config-pane .radio-card { min-height:88px;padding:13px 14px;border-radius:11px; }
.sim-config-pane .radio-card:hover { transform:translateY(-1px);border-color:rgba(113,134,255,.65); }
.sim-config-pane .radio-card.active,
.sim-config-pane .radio-card:has(input:checked) {
    border-color:rgba(113,134,255,.72);
    background:linear-gradient(145deg,rgba(79,109,245,.17),rgba(29,35,55,.76));
    box-shadow:0 8px 24px rgba(26,36,91,.16);
}
.sim-config-pane .comm-item { border-radius:10px;transition:border-color .16s,background .16s; }
.sim-config-pane .comm-item:has(.comm-check:checked) {
    border-color:rgba(90,204,166,.40);background:rgba(37,102,82,.10);
}
.sim-budget-aside { position:sticky;top:88px; }
.sim-budget-aside .budget-calculator,
.sim-budget-aside .config-monitor { margin-top:0;margin-bottom:14px;border-radius:12px;background:rgba(7,10,16,.48); }

#sim-app .step-footer {
    position:sticky;bottom:12px;z-index:12;
    margin:20px -4px -5px;padding:12px 14px;
    border:1px solid rgba(125,142,184,.20);border-radius:13px;
    background:rgba(17,21,31,.88);backdrop-filter:blur(16px);
    box-shadow:0 12px 34px rgba(0,0,0,.24);
}
#sim-app .step-footer .btn-primary { margin-left:auto; }
#sim-app .btn { min-height:40px;border-radius:9px; }
#sim-app .btn-primary {
    background:linear-gradient(135deg,#637cff,#4e60d6 70%,#5268e6);
    box-shadow:0 7px 20px rgba(55,73,185,.22);
}
#sim-app .btn-primary:hover { box-shadow:0 10px 28px rgba(65,86,210,.34); }
#sim-app :where(button,input,select,textarea):focus-visible {
    outline:2px solid #8ea0ff;outline-offset:2px;
}

@media (max-width:1120px) {
    #page-settings { max-width:900px;padding-left:20px;padding-right:20px; }
    .sim-config-grid,.sim-source-grid,.sim-agent-grid,.sim-research-grid,
    .sim-mechanism-grid,.sim-budget-grid { grid-template-columns:1fr; }
    .sim-budget-aside { position:static; }
}

@media (max-width:768px) {
    #page-settings { padding:14px 10px 34px; }
    #sim-app .step-progress-bar { scroll-snap-type:x proximity; }
    #sim-app .step-item { min-width:50px;scroll-snap-align:center; }
    #sim-app .step-panel { border-radius:15px;box-shadow:0 14px 38px rgba(0,0,0,.22); }
    #sim-app .step-panel>.card-header { min-height:auto;padding:14px;gap:10px; }
    .sim-step-heading h2 { font-size:15px; }
    .sim-step-heading p { font-size:10px; }
    #sim-app .step-panel>.card-body { padding:12px; }
    .sim-config-grid { gap:12px; }
    .sim-config-pane { padding:14px;border-radius:12px; }
    .sim-pane-head { margin-bottom:14px;padding-bottom:11px; }
    .sim-config-pane .form-row>.form-group { min-width:0; }
    .sim-config-pane :where(input,select,textarea) { font-size:16px; }
    .sim-config-pane .radio-card { min-height:0; }
    #sim-app .step-footer {
        position:static;margin:16px 0 0;padding:12px;
        align-items:stretch;background:rgba(12,15,23,.72);
    }
    #sim-app .step-footer .btn { flex:1 1 100%;justify-content:center;white-space:normal;text-align:center; }
    #sim-app .step-footer .btn-primary { margin-left:0; }
    #sim-app .step-footer .status-msg { width:100%; }
}

@media (max-width:480px) {
    #sim-app .step-item { min-width:35px; }
    .sim-step-kicker { letter-spacing:.10em; }
    .sim-config-pane { padding:12px 10px; }
    .sim-pane-head p { display:none; }
}
