/* Numaga — showpiece: control-plane prompt journey + model router.
   Dark glass surfaces, single teal accent, deterministic stepper. */

/* ============== Control plane stage ============== */
.nm-cp-stage { display: grid; grid-template-columns: 0.92fr 1.08fr; gap: clamp(28px, 4vw, 64px); align-items: start; margin-top: clamp(36px, 4vw, 56px); }
@media (max-width: 920px) { .nm-cp-stage { grid-template-columns: 1fr; gap: 36px; } }

/* --- left: controls --- */
.nm-cp-controls { display: flex; flex-direction: column; gap: 18px; position: sticky; top: 96px; }
@media (max-width: 920px) { .nm-cp-controls { position: static; } }
.nm-cp-pick-label { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--fg-3); }
.nm-cp-chips { display: flex; flex-direction: column; gap: 8px; }
.nm-cp-chip {
  text-align: left; cursor: pointer; font-family: var(--font-body);
  background: var(--rk-ink-800); border: 1px solid var(--border-1);
  border-radius: var(--radius-md); padding: 14px 16px; color: var(--fg-1);
  transition: border-color var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out);
  display: flex; flex-direction: column; gap: 5px;
}
.nm-cp-chip:hover { border-color: rgba(var(--accent-rgb), 0.5); }
.nm-cp-chip.on { border-color: var(--accent); background: rgba(var(--accent-rgb), 0.10); }
.nm-cp-chip-label { font-family: var(--font-mono); font-size: 10.5px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--accent); }
.nm-cp-chip-text { font-size: 14px; line-height: 1.4; color: var(--fg-1); }

.nm-cp-input { background: var(--rk-ink-950); border: 1px solid var(--border-1); border-radius: var(--radius-lg); padding: 18px; display: flex; flex-direction: column; gap: 10px; }
.nm-cp-input-head { display: flex; align-items: center; justify-content: space-between; }
.nm-cp-input-from { font-family: var(--font-mono); font-size: 10.5px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--fg-3); }
.nm-cp-class-badge { font-family: var(--font-mono); font-size: 10.5px; font-weight: 600; letter-spacing: 0.05em; text-transform: uppercase; padding: 3px 9px; border-radius: var(--radius-sm); }
.nm-cp-class-badge.internal { background: rgba(91, 155, 214, 0.20); color: #9fc0de; }
.nm-cp-class-badge.strict { background: rgba(240, 104, 91, 0.20); color: #f4a299; }
.nm-cp-class-badge.prohibited { background: rgba(240, 104, 91, 0.26); color: #f7b3aa; }
.nm-cp-class-badge.pending { background: rgba(255,255,255,0.08); color: var(--fg-3); }
.nm-cp-input-text { font-size: 16px; line-height: 1.5; color: var(--fg-1); }
.nm-cp-input-text .redacted { background: var(--accent-press); color: transparent; border-radius: 3px; padding: 0 2px; position: relative; user-select: none; }
.nm-cp-input-text .redacted::after { content: "REDACTED"; position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-family: var(--font-mono); font-size: 8.5px; letter-spacing: 0.05em; color: var(--fg-on-accent); }

.nm-cp-outcome { border-radius: var(--radius-lg); padding: 18px; display: flex; align-items: center; gap: 14px; border: 1px solid; min-height: 64px; transition: all var(--dur-med) var(--ease-out); }
.nm-cp-outcome.pending { background: var(--rk-ink-800); border-color: var(--border-1); }
.nm-cp-outcome.pass { background: rgba(70, 196, 110, 0.12); border-color: rgba(70, 196, 110, 0.45); }
.nm-cp-outcome.blocked { background: rgba(240, 104, 91, 0.12); border-color: rgba(240, 104, 91, 0.5); }
.nm-cp-outcome-icon { width: 38px; height: 38px; border-radius: var(--radius-sm); display: flex; align-items: center; justify-content: center; flex: none; }
.nm-cp-outcome.pass .nm-cp-outcome-icon { background: var(--rk-success); color: #06170d; }
.nm-cp-outcome.blocked .nm-cp-outcome-icon { background: var(--rk-danger); color: #2a0b08; }
.nm-cp-outcome.pending .nm-cp-outcome-icon { background: var(--rk-ink-700); color: var(--fg-3); }
.nm-cp-outcome-title { font-family: var(--font-body); font-size: 15px; font-weight: 600; color: var(--fg-1); }
.nm-cp-outcome-sub { font-family: var(--font-mono); font-size: 11.5px; color: var(--fg-2); margin-top: 2px; }
.nm-cp-replay { align-self: flex-start; }

/* --- right: vertical stepper --- */
.nm-cp-steps { position: relative; padding: 4px 0; }
.nm-cp-steps::before { content: ""; position: absolute; left: 21px; top: 26px; bottom: 26px; width: 2px; background: var(--rk-ink-700); }
.nm-cp-steps-fill { position: absolute; left: 21px; top: 26px; width: 2px; background: var(--accent); height: 0; transition: height var(--dur-slow) var(--ease-out); }
.nm-cp-step { position: relative; display: grid; grid-template-columns: 44px 1fr; gap: 20px; padding: 12px 0; align-items: start; }
.nm-cp-mark {
  width: 44px; height: 44px; border-radius: var(--radius-md); flex: none; z-index: 2;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--font-mono); font-size: 14px; font-weight: 600;
  background: var(--rk-ink-800); border: 2px solid var(--rk-ink-700); color: var(--fg-3);
  transition: all var(--dur-med) var(--ease-out);
}
.nm-cp-step.done .nm-cp-mark { background: var(--accent); border-color: var(--accent); color: var(--fg-on-accent); }
.nm-cp-step.active .nm-cp-mark { background: var(--rk-ink-900); border-color: var(--accent); color: var(--accent); box-shadow: 0 0 0 5px rgba(var(--accent-rgb), 0.16); }
.nm-cp-step.blocked .nm-cp-mark { background: var(--rk-danger); border-color: var(--rk-danger); color: #2a0b08; box-shadow: 0 0 0 5px rgba(240, 104, 91, 0.20); }
.nm-cp-step-body { padding-top: 2px; opacity: 0.5; transition: opacity var(--dur-med) var(--ease-out); }
.nm-cp-step.done .nm-cp-step-body, .nm-cp-step.active .nm-cp-step-body, .nm-cp-step.blocked .nm-cp-step-body { opacity: 1; }
.nm-cp-step-name { font-family: var(--font-body); font-size: 17px; font-weight: 600; color: var(--fg-1); margin: 0; display: flex; align-items: center; gap: 10px; }
.nm-cp-step-name .nm-cp-flag { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.06em; text-transform: uppercase; padding: 2px 7px; border-radius: var(--radius-sm); }
.nm-cp-flag.redact { background: var(--accent-press); color: var(--fg-on-accent); }
.nm-cp-flag.block { background: var(--rk-danger); color: #2a0b08; }
.nm-cp-step-desc { font-size: 13.5px; line-height: 1.5; color: var(--fg-2); margin: 5px 0 0; max-width: 52ch; }

.nm-cp-props { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; margin-top: clamp(40px, 5vw, 64px); background: var(--border-1); border: 1px solid var(--border-1); border-radius: var(--radius-lg); overflow: hidden; }
@media (max-width: 720px) { .nm-cp-props { grid-template-columns: 1fr; } }
.nm-cp-prop { background: var(--rk-ink-800); padding: 22px; }
.nm-cp-prop h4 { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--accent); margin: 0 0 8px; }
.nm-cp-prop p { font-size: 13.5px; line-height: 1.5; color: var(--fg-2); margin: 0; max-width: none; }
.nm-cp-tagline { margin-top: clamp(36px, 4vw, 52px); font-family: var(--font-display); font-size: clamp(24px, 3vw, 38px); font-weight: 600; line-height: 1.15; letter-spacing: -0.025em; color: var(--fg-1); max-width: 22ch; }
.nm-cp-tagline em { font-style: italic; color: var(--accent); }

/* ============== Model router ============== */
.nm-router-stage { display: grid; grid-template-columns: 0.95fr 1.05fr; gap: clamp(28px, 4vw, 56px); margin-top: clamp(36px, 4vw, 56px); align-items: stretch; }
@media (max-width: 920px) { .nm-router-stage { grid-template-columns: 1fr; } }
.nm-router-props { display: flex; flex-direction: column; gap: 14px; }
.nm-router-prop { border: 1px solid var(--border-1); border-radius: var(--radius-lg); padding: 22px; background: var(--bg-surface); }
.nm-router-prop h4 { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--accent); margin: 0 0 8px; }
.nm-router-prop p { font-size: 14.5px; line-height: 1.55; color: var(--fg-2); margin: 0; max-width: none; }

.nm-router-viz { background: var(--rk-ink-800); border: 1px solid var(--border-1); border-radius: var(--radius-lg); padding: clamp(24px, 3vw, 36px); display: flex; flex-direction: column; gap: 22px; }
.nm-router-box { border: 1px solid var(--border-1); border-radius: var(--radius-md); padding: 18px 20px; background: rgba(255,255,255,0.015); }
.nm-router-box.incoming { border-style: dashed; }
.nm-router-box-label { font-family: var(--font-mono); font-size: 10.5px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--fg-3); margin-bottom: 10px; }
.nm-router-core { border-color: rgba(var(--accent-rgb), 0.5); background: rgba(var(--accent-rgb), 0.07); }
.nm-router-core .nm-router-box-label { color: var(--accent); }
.nm-router-title { font-family: var(--font-display); font-size: 24px; font-weight: 600; letter-spacing: -0.02em; color: var(--fg-1); }
.nm-router-signals { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 12px; }
.nm-router-signal { font-family: var(--font-mono); font-size: 11px; padding: 5px 10px; border: 1px solid var(--border-2); border-radius: var(--radius-pill); color: var(--fg-2); }
.nm-router-arrow { display: flex; justify-content: center; color: var(--accent); }
.nm-router-pool { display: flex; flex-direction: column; gap: 8px; }
.nm-router-model { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 13px 16px; border: 1px solid var(--border-1); border-radius: var(--radius-md); background: var(--rk-ink-900); transition: border-color var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out); }
.nm-router-model:hover { border-color: rgba(var(--accent-rgb), 0.5); }
.nm-router-model-name { font-family: var(--font-mono); font-size: 13.5px; font-weight: 600; color: var(--fg-1); }
.nm-router-model-tag { font-family: var(--font-mono); font-size: 10.5px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--fg-3); }
