/* CDx console — components.
   Built on Veehaan's AIx design system. Everything prefixed .aix- is his, reproduced from the
   prototype so CDx and AIx read as one product. Everything .cdx- is net-new: four components. */

* { box-sizing: border-box; }
html, body { margin: 0; height: 100%; }
body { background: var(--aix-bg); color: var(--aix-text); font-family: var(--aix-font);
  -webkit-font-smoothing: antialiased; font-size: 13px; }
a { text-decoration: none; color: inherit; }
button { font-family: var(--aix-font); }

/* ── shell ── */
.aix-shell { display: grid; grid-template-columns: var(--aix-sidebar-w) minmax(0,1fr);
  height: 100vh; overflow: hidden; background: var(--aix-bg); }
.aix-sidebar { background: var(--aix-bg-subtle); border-right: 1px solid var(--aix-border);
  display: flex; flex-direction: column; height: 100vh; overflow: hidden; }
.aix-main { display: flex; flex-direction: column; height: 100vh; overflow: hidden; min-width: 0; }
.aix-topbar { height: var(--aix-topbar-h); min-height: var(--aix-topbar-h); background: var(--aix-bg-subtle);
  border-bottom: 1px solid var(--aix-border); display: flex; align-items: center; justify-content: space-between;
  padding: 0 var(--aix-space-4); gap: var(--aix-space-4); flex-shrink: 0; z-index: 10; }
.aix-content { flex: 1; overflow-y: auto; min-height: 0; }

.aix-brand { display: flex; align-items: center; gap: var(--aix-space-2); font-size: 14px;
  font-weight: var(--aix-weight-bold); color: var(--aix-text); flex-shrink: 0; }
.aix-brand-mark { width: 18px; height: 18px; border-radius: var(--aix-radius-xs); background: var(--aix-accent-solid);
  display: grid; place-items: center; font-size: 10px; color: #fff; }
.aix-brand-accent { color: var(--aix-primary); }

.aix-posture { display: flex; align-items: center; gap: var(--aix-space-4); }
.aix-posture-item { display: flex; align-items: center; gap: 6px; font-size: var(--aix-text-xs);
  color: var(--aix-text-secondary); font-weight: 500; }
.aix-posture-dot { width: 6px; height: 6px; border-radius: 50%; flex-shrink: 0; }
.aix-posture-dot--contracted { background: var(--aix-primary); }
.aix-posture-dot--warning { background: var(--aix-warning); }
.aix-posture-dot--danger { background: var(--aix-danger); }

.aix-topbar-actions { display: flex; align-items: center; gap: var(--aix-space-3); flex-shrink: 0; }
.aix-cell-mono { font-family: var(--aix-font-mono); font-size: var(--aix-text-xs); color: var(--aix-text-tertiary); }
.aix-icbtn { width: 28px; height: 28px; display: grid; place-items: center; border-radius: var(--aix-radius-sm);
  color: var(--aix-text-secondary); background: transparent; border: none; cursor: pointer; font-size: 17px;
  transition: background var(--aix-transition), color var(--aix-transition); }
.aix-icbtn:hover { background: var(--white-8); color: var(--aix-text); }
.aix-avatar { width: 26px; height: 26px; border-radius: 50%; background: var(--aix-accent-solid);
  display: grid; place-items: center; font-size: 11px; font-weight: 600; color: #fff; }

.aix-proto { display: flex; align-items: center; gap: 8px; }
.aix-proto-lbl { font-size: 10px; letter-spacing: .06em; text-transform: uppercase; color: var(--aix-text-secondary); font-weight: 600; }
.aix-proto-seg { display: flex; border: 1px solid var(--aix-border-strong); border-radius: var(--aix-radius-sm); overflow: hidden; }
.aix-proto-seg button { height: 24px; padding: 0 10px; font-size: 11px; font-weight: 500; background: var(--aix-surface);
  border: none; color: var(--aix-text-tertiary); cursor: pointer; }
.aix-proto-seg button[data-active="true"] { background: var(--aix-primary-bg); color: var(--aix-primary-text); }

/* ── workspace + nav ── */
.aix-workspace { padding: var(--aix-space-2); border-bottom: 1px solid var(--aix-border); }
.aix-workspace-btn { display: flex; align-items: center; gap: var(--aix-space-2); width: 100%; height: 32px;
  padding: 0 var(--aix-space-2); background: var(--aix-surface); border: 1px solid var(--aix-border-strong);
  border-radius: var(--aix-radius-sm); color: var(--aix-text-secondary); font-size: var(--aix-text-sm); font-weight: 500; }
.aix-workspace-logo { width: 18px; height: 18px; border-radius: var(--aix-radius-xs); background: var(--aix-accent-solid);
  display: grid; place-items: center; font-size: 9px; color: #fff; }

.aix-nav { flex: 1; overflow-y: auto; overflow-x: hidden; padding: var(--aix-space-1) 0; }
.aix-nav-sep { height: 1px; background: var(--aix-border); margin: var(--aix-space-1) var(--aix-space-2); }
.aix-nav-item { display: flex; align-items: center; gap: 8px; height: 32px; padding: 0 10px; color: var(--aix-text-secondary);
  font-size: 13px; font-weight: 500; border-radius: 3px; margin: 1px 4px; width: calc(100% - 8px); background: transparent;
  cursor: pointer; text-align: left; border: none;
  transition: background var(--aix-transition), color var(--aix-transition), box-shadow var(--aix-transition); }
.aix-nav-item:hover { background: var(--violet-200); color: var(--aix-text); box-shadow: inset 2px 0 0 var(--aix-primary); }
.aix-nav-item[data-active="true"] { background: var(--aix-accent-bg); color: var(--aix-text); font-weight: var(--aix-weight-bold); }
.aix-nav-item > span:first-child { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.aix-nav-badge { margin-left: auto; font-size: 10px; font-weight: 600; font-family: var(--aix-font-mono);
  padding: 1px 5px; border-radius: var(--aix-radius-xs); line-height: 1.4; }
.aix-nav-badge--warning { background: var(--aix-warning-bg); border: 1px solid var(--aix-warning-border); color: var(--aix-warning-text); }
.aix-nav-badge--danger { background: var(--aix-danger-bg); border: 1px solid var(--aix-danger-border); color: var(--aix-danger-text); }
.aix-nav-tag { margin-left: auto; font-family: var(--aix-font-mono); font-size: 9px; color: var(--aix-text-disabled); letter-spacing: .08em; }
.aix-nav-bottom { padding: var(--aix-space-1) 0 var(--aix-space-2); border-top: 1px solid var(--aix-border); }
.aix-nav-section-label { display: flex; align-items: center; gap: 8px; font-size: 10px; font-weight: 600;
  color: var(--aix-text-secondary); text-transform: uppercase; letter-spacing: 0.12em; padding: 18px 12px 7px; white-space: nowrap; }
.aix-nav-section-label::before { content: ""; width: 5px; height: 5px; border-radius: 1px; background: var(--aix-primary); flex: none; }

/* ── page scaffold ── */
.aix-page-header { display: flex; align-items: center; justify-content: space-between; gap: var(--aix-space-4);
  padding: 16px var(--aix-space-6); border-bottom: 1px solid var(--aix-border); flex-wrap: wrap; }
.aix-page-title { font-size: 22px; font-weight: var(--aix-weight-bold); color: var(--aix-text); line-height: 1.15;
  letter-spacing: -0.02em; font-family: var(--aix-font-display); }
.aix-title-logo { color: var(--aix-primary-text); }
.aix-page-subtitle { font-size: 13px; color: var(--aix-text-secondary); margin-top: 6px; line-height: 1.45; }
.aix-body { padding: var(--aix-space-6); max-width: 900px; }
.aix-body--wide { max-width: none; }

.aix-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; height: 32px;
  padding: 0 var(--aix-space-4); font-size: var(--aix-text-md); font-weight: 500; border-radius: var(--aix-radius-sm);
  border: 1px solid transparent; cursor: pointer; white-space: nowrap; line-height: 1; }
.aix-btn--primary { background: var(--aix-accent-solid); color: #fff; border-color: var(--aix-accent-solid); }
.aix-btn--primary:hover { background: var(--aix-accent-solid-hover); border-color: var(--aix-accent-solid-hover); }
.aix-btn--secondary { background: transparent; color: var(--aix-text-secondary); border-color: var(--aix-border-strong); }
.aix-btn--secondary:hover { border-color: var(--aix-border-focus); color: var(--aix-text); }

.aix-badge { display: inline-flex; align-items: center; gap: 4px; font-size: var(--aix-text-xs); font-weight: 500;
  padding: 3px 8px; border-radius: var(--aix-radius-xs); border: 1px solid; white-space: nowrap; line-height: 1.4; }
.aix-badge--success { background: var(--aix-success-bg); border-color: var(--aix-success-border); color: var(--aix-success-text); }
.aix-badge--warning { background: var(--aix-warning-bg); border-color: var(--aix-warning-border); color: var(--aix-warning-text); }
.aix-badge--danger  { background: var(--aix-danger-bg);  border-color: var(--aix-danger-border);  color: var(--aix-danger-text); }
.aix-badge--info    { background: var(--aix-info-bg);    border-color: var(--aix-info-border);    color: var(--aix-info-text); }
.aix-badge--violet  { background: var(--aix-primary-bg); border-color: var(--aix-primary-border); color: var(--aix-primary-text); }
.aix-badge--neutral { background: var(--aix-agent-bg);   border-color: var(--aix-agent-border);   color: var(--aix-agent-text); }
.aix-chip { display: inline-flex; align-items: center; font-size: 10px; font-weight: 600; letter-spacing: .02em;
  padding: 2px 6px; border-radius: var(--aix-radius-xs); border: 1px solid var(--aix-agent-border);
  background: var(--aix-agent-bg); color: var(--aix-agent-text); }

.aix-sech { font-size: 11px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase;
  color: var(--aix-text-tertiary); margin: 28px 0 10px; }
.aix-sech:first-child { margin-top: 4px; }

.aix-attn { display: flex; align-items: center; gap: 12px; padding: 12px 14px; border: 1px solid var(--aix-border);
  border-radius: var(--aix-radius-sm); background: var(--aix-surface); cursor: pointer; transition: border-color var(--aix-transition); }
.aix-attn:hover { border-color: var(--aix-border-strong); }
.aix-attn + .aix-attn { margin-top: 8px; }
.aix-attn--warn { border-color: var(--aix-warning-border); }
.aix-attn .dot { width: 7px; height: 7px; border-radius: 50%; flex: none; }
.aix-attn .lbl { font-size: 13px; color: var(--aix-text); }
.aix-attn .lbl b { font-weight: 600; }
.aix-attn .go { margin-left: auto; font-size: 11px; color: var(--aix-primary-text); font-family: var(--aix-font-mono); }

.aix-panel { background: var(--aix-surface); border: 1px solid var(--aix-border); border-radius: var(--aix-radius-sm); overflow: hidden; }
.aix-panel-header { height: var(--aix-row-lg); border-bottom: 1px solid var(--aix-border); display: flex;
  align-items: center; justify-content: space-between; padding: 0 12px; flex-shrink: 0; }
.aix-panel-title { margin: 0; font-size: 12px; font-weight: var(--aix-weight-bold); color: var(--aix-text); }
.aix-panel-link { font-size: 11px; color: var(--aix-primary-text); font-family: var(--aix-font-mono); cursor: pointer; }
.aix-panel-body { padding: var(--aix-space-4); }

.aix-table { width: 100%; border-collapse: collapse; }
.aix-table th { font-size: var(--aix-text-2xs); font-weight: 600; color: var(--aix-text-tertiary); text-transform: uppercase;
  letter-spacing: .07em; padding: 8px var(--aix-space-4); border-bottom: 1px solid var(--aix-border); text-align: left; }
.aix-table td { padding: 8px var(--aix-space-4); min-height: var(--aix-row-md); border-bottom: 1px solid var(--aix-border);
  font-size: var(--aix-text-md); color: var(--aix-text-secondary); }
.aix-table tbody tr { cursor: pointer; transition: background var(--aix-transition); }
.aix-table tbody tr:last-child td { border-bottom: none; }
.aix-table tbody tr:hover td { background: var(--white-4); color: var(--aix-text); }
.aix-cell-primary { font-weight: 500; color: var(--aix-text); }
.aix-cell-sub { font-size: var(--aix-text-xs); color: var(--aix-text-tertiary); margin-top: 2px; }
.aix-td-right { text-align: right; font-family: var(--aix-font-mono); font-size: var(--aix-text-sm); }

.aix-filters { display: flex; gap: 6px; margin-bottom: 12px; flex-wrap: wrap; }
.aix-filter { font-size: 11px; padding: 4px 10px; border: 1px solid var(--aix-border); border-radius: var(--aix-radius-sm);
  color: var(--aix-text-secondary); background: var(--aix-surface); cursor: pointer; }
.aix-filter[data-active="true"] { border-color: var(--aix-primary-border); color: var(--aix-text); background: var(--aix-primary-bg); }

.aix-metrics { display: grid; gap: 1px; background: var(--aix-border); border: 1px solid var(--aix-border);
  border-radius: var(--aix-radius-sm); overflow: hidden; margin-bottom: 16px; }
.aix-metric { background: var(--aix-surface); padding: 14px 16px; display: flex; flex-direction: column; gap: 4px; }
.aix-metric-l { font-size: 10px; font-weight: 600; letter-spacing: .07em; text-transform: uppercase; color: var(--aix-text-tertiary); }
.aix-metric-v { font-size: 23px; font-weight: 600; color: var(--aix-text); font-family: var(--aix-font-display);
  letter-spacing: -.01em; line-height: 1.1; }
.aix-metric-d { font-size: 11px; color: var(--aix-text-secondary); }

.aix-hero-fig { position: relative; border: 1px solid var(--aix-border); background: var(--aix-surface);
  border-radius: var(--aix-radius-md); padding: 22px 24px; margin: 4px 0; overflow: hidden; }
.aix-hero-fig::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: var(--aix-primary); }
.aix-hero-k { font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--aix-text-tertiary); }
.aix-hero-v { font-size: 40px; font-weight: 600; letter-spacing: -.02em; margin: 8px 0 4px;
  font-family: var(--aix-font-display); color: var(--aix-text); }
.aix-hero-s { font-size: 13px; color: var(--aix-text-secondary); }

.aix-note { display: flex; gap: 10px; align-items: flex-start; font-size: 12px; line-height: 1.55;
  color: var(--aix-text-secondary); background: var(--aix-surface); border: 1px solid var(--aix-border);
  border-left: 2px solid var(--aix-primary); border-radius: var(--aix-radius-sm); padding: 12px 14px; margin-top: 16px; }
.aix-note b { color: var(--aix-text); font-weight: 600; }
.aix-note--warn { border-left-color: var(--aix-warning); }
.aix-note--warn b { color: var(--aix-warning-text); }

.aix-steps { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 1px;
  border: 1px solid var(--aix-border); border-radius: var(--aix-radius-sm); overflow: hidden; }
.aix-step { display: flex; align-items: flex-start; gap: 12px; padding: 14px 16px; background: var(--aix-surface); }
.aix-step[data-active="true"] { background: var(--aix-primary-bg); }
.aix-step-n { flex: none; width: 24px; height: 24px; border-radius: 50%; border: 1px solid var(--aix-border-strong);
  display: inline-flex; align-items: center; justify-content: center; font-size: 11px; font-family: var(--aix-font-mono);
  color: var(--aix-text-secondary); margin-top: 1px; }
.aix-step[data-active="true"] .aix-step-n { border-color: var(--aix-primary-border); color: var(--aix-primary-text); }
.aix-step[data-done="true"] .aix-step-n { border-color: var(--aix-success-border); color: var(--aix-success-text); background: var(--aix-success-bg); }
.aix-step-txt { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.aix-step-t { font-size: 13px; font-weight: 500; color: var(--aix-text); }
.aix-step-d { font-size: 12px; color: var(--aix-text-secondary); }
.aix-step-locked { font-size: 11px; color: var(--aix-text-tertiary); margin-top: 5px; line-height: 1.5; }
.aix-step-go { margin-left: auto; flex: none; }

.aix-home-posture { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 1px;
  background: var(--aix-border-strong); border: 1px solid var(--aix-border-strong);
  border-radius: var(--aix-radius-sm); overflow: hidden; margin-bottom: 16px; }
.aix-posture-step { display: flex; flex-direction: column; gap: 2px; padding: 14px 16px;
  background: var(--aix-surface-raised); transition: background var(--aix-transition); cursor: pointer; }
.aix-posture-step:hover { background: var(--violet-200); }
.aix-posture-k { font-size: 10px; font-weight: 600; letter-spacing: .07em; text-transform: uppercase; color: var(--aix-text-secondary); }
.aix-posture-v { font-size: 16px; font-weight: 600; color: var(--aix-text); line-height: 1.15;
  letter-spacing: -.01em; font-family: var(--aix-font-display); }
.aix-posture-sub { font-size: 11px; color: var(--aix-text-secondary); }

.aix-bar-list { display: grid; gap: 10px; padding: 16px; }
.aix-bar-row { display: grid; gap: 5px; }
.aix-bar-label { display: flex; align-items: center; justify-content: space-between; gap: 12px;
  color: var(--aix-text-secondary); font-size: 12px; }
.aix-bar-track { height: 5px; background: var(--aix-border-strong); border-radius: var(--aix-radius-xs); overflow: hidden; }
.aix-bar-fill { height: 100%; background: var(--aix-primary); border-radius: var(--aix-radius-xs);
  transform-origin: left center; animation: aixBarGrow 620ms cubic-bezier(.22,.68,.28,1) both; }
.aix-bar-fill--warn { background: var(--aix-warning); }

.aix-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--aix-space-4);
  max-width: 540px; margin: 72px auto; padding: 64px 56px 56px; text-align: center; border: 1px solid var(--aix-border);
  background: var(--aix-surface); border-radius: var(--aix-radius-md); }
.aix-empty-icon { width: 56px; height: 56px; border: 1px solid var(--aix-primary-border); border-radius: var(--aix-radius-md);
  display: grid; place-items: center; font-size: 26px; color: var(--aix-primary-text); background: var(--aix-primary-bg); margin-bottom: 10px; }
.aix-empty-title { font-size: 22px; font-weight: var(--aix-weight-bold); color: var(--aix-text); max-width: 460px;
  font-family: var(--aix-font-display); letter-spacing: -.01em; line-height: 1.2; }
.aix-empty-body { font-size: 15px; color: var(--aix-text-secondary); max-width: 440px; line-height: 1.65; }
.aix-empty-actions { display: flex; gap: 8px; margin-top: 18px; }

.aix-kv { display: flex; justify-content: space-between; gap: 16px; padding: 11px 0; border-bottom: 1px solid var(--aix-border); }
.aix-kv:last-child { border-bottom: none; }
.aix-kv .k { font-size: 12px; color: var(--aix-text-secondary); }
.aix-kv .v { font-size: 12px; color: var(--aix-text); text-align: right; }

@keyframes aixFadeRise { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
@keyframes aixBarGrow { from { transform: scaleX(0); } to { transform: scaleX(1); } }
.aix-content.aix-anim-in > * { animation: aixFadeRise 190ms ease-out both; }
.aix-btn:focus-visible, .aix-icbtn:focus-visible, .aix-nav-item:focus-visible, .aix-filter:focus-visible {
  outline: 2px solid var(--aix-border-focus); outline-offset: 1px; }
@media (prefers-reduced-motion: reduce) { *, .aix-bar-fill { animation: none !important; } }


/* ══ DENSITY — a switch, per CDS. compact = Raycast (power tool);
   comfortable = readable at a desk all day. Default is comfortable.
   Lives here, not in aix-tokens.css, so his file stays untouched. ══ */
.aix-shell[data-density="comfortable"] {
  --aix-text-2xs: 11px;
  --aix-text-xs:  12px;
  --aix-text-sm:  13px;
  --aix-text-md:  14px;
  --aix-text-lg:  15px;
  --aix-text-xl:  17px;
  --aix-row-xs: 32px;
  --aix-row-sm: 36px;
  --aix-row-md: 44px;
  --aix-row-lg: 48px;
  --aix-sidebar-w: 216px;
  --aix-topbar-h: 48px;
}
.aix-shell[data-density="comfortable"] body,
.aix-shell[data-density="comfortable"] { font-size: 14px; }
.aix-shell[data-density="comfortable"] .aix-nav-item { height: 36px; font-size: 14px; }
.aix-shell[data-density="comfortable"] .aix-page-title { font-size: 26px; }
.aix-shell[data-density="comfortable"] .aix-page-subtitle { font-size: 14px; }
.aix-shell[data-density="comfortable"] .aix-table td { font-size: 14px; padding: 11px var(--aix-space-4); }
.aix-shell[data-density="comfortable"] .aix-cell-sub { font-size: 12px; }
.aix-shell[data-density="comfortable"] .aix-metric-v { font-size: 26px; }
.aix-shell[data-density="comfortable"] .aix-metric-l { font-size: 11px; }
.aix-shell[data-density="comfortable"] .aix-metric-d { font-size: 12px; }
.aix-shell[data-density="comfortable"] .aix-badge { font-size: 12px; padding: 3px 9px; }
.aix-shell[data-density="comfortable"] .aix-note { font-size: 13px; }
.aix-shell[data-density="comfortable"] .aix-step-t { font-size: 14px; }
.aix-shell[data-density="comfortable"] .aix-step-d,
.aix-shell[data-density="comfortable"] .aix-step-locked { font-size: 13px; }
.aix-shell[data-density="comfortable"] .cdx-denied-row { min-height: 44px; }
.aix-shell[data-density="comfortable"] .cdx-denied-row .sku,
.aix-shell[data-density="comfortable"] .cdx-denied-row .price,
.aix-shell[data-density="comfortable"] .cdx-denied-row .why { font-size: 13px; }
.aix-shell[data-density="comfortable"] .cdx-constraint-price .v { font-size: 36px; }
.aix-shell[data-density="comfortable"] .cdx-constraint-price .d { font-size: 13px; }
.aix-shell[data-density="comfortable"] .cdx-prov { font-size: 12px; }
.aix-shell[data-density="comfortable"] .aix-hero-v { font-size: 44px; }
.aix-shell[data-density="comfortable"] .aix-filter { font-size: 12px; padding: 5px 11px; }
.aix-shell[data-density="comfortable"] .aix-panel-title { font-size: 13px; }
.aix-shell[data-density="comfortable"] .aix-kv .k,
.aix-shell[data-density="comfortable"] .aix-kv .v { font-size: 13px; }
.aix-shell[data-density="comfortable"] .aix-table th { font-size: 11px; }

/* ══════════════════════════════════════════════════
   CDx additions — four components. Nothing else new.
   ══════════════════════════════════════════════════ */

/* 1 · SIGNATURE — the options you cannot have.
   Every cost tool leads with its recommendation. CDx leads with the negative space. */
.cdx-denied { border: 1px solid var(--aix-border); border-radius: var(--aix-radius-sm); overflow: hidden; background: var(--aix-surface); }
.cdx-denied-head { padding: 10px 14px; background: var(--aix-bg-subtle); border-bottom: 1px solid var(--aix-border);
  font-size: 10px; font-weight: 600; color: var(--aix-text-tertiary); text-transform: uppercase; letter-spacing: .07em; }
.cdx-denied-row { display: grid; grid-template-columns: minmax(0,1.1fr) minmax(88px,.8fr) minmax(0,1.7fr); gap: 12px; align-items: center;
  padding: 8px 14px; min-height: var(--aix-row-md); border-bottom: 1px solid var(--aix-border); }
.cdx-denied-row:last-child { border-bottom: none; }
.cdx-denied-row .sku { min-width: 0; overflow-wrap: anywhere; font-family: var(--aix-font-mono); font-size: var(--aix-text-sm); color: var(--aix-text-secondary); }
.cdx-denied-row .price { min-width: 0; overflow-wrap: anywhere; font-family: var(--aix-font-mono); font-size: var(--aix-text-sm); color: var(--aix-text-tertiary); }
.cdx-denied-row .price--resolved {
  text-decoration: line-through; text-decoration-color: var(--aix-danger); text-decoration-thickness: 1px; }
.cdx-denied-row .why { min-width: 0; overflow-wrap: anywhere; font-size: var(--aix-text-sm); color: var(--aix-danger-text); }
.cdx-denied-row--selected { background: var(--aix-success-bg); }
.cdx-denied-row--selected .sku { color: var(--aix-text); }
.cdx-denied-row--selected .price { text-decoration: none; color: var(--aix-success-text); }
.cdx-denied-row--selected .why { color: var(--aix-success-text); }

/* 2 · The price of your requirements — the number nobody else reports. */
.cdx-constraint-price { position: relative; border: 1px solid var(--aix-primary-border); background: var(--aix-primary-bg);
  border-radius: var(--aix-radius-md); padding: 18px 22px; margin-top: 12px; overflow: hidden; }
.cdx-constraint-price::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: var(--aix-primary); }
.cdx-constraint-price .k { font-size: 10px; font-weight: 600; color: var(--aix-primary-text); text-transform: uppercase; letter-spacing: .07em; }
.cdx-constraint-price .v { font-size: 32px; font-weight: 600; color: var(--aix-text); letter-spacing: -.02em;
  font-family: var(--aix-font-display); margin: 6px 0 4px; }
.cdx-constraint-price .d { font-size: 12px; color: var(--aix-text-secondary); line-height: 1.6; max-width: 64ch; }

/* 3 · Provenance — plain words. Engine vocabulary never reaches the screen. */
.cdx-prov { font-size: var(--aix-text-xs); }
.cdx-prov--declared { color: var(--aix-success-text); }
.cdx-prov--inferred { color: var(--aix-info-text); }
.cdx-prov--assumed  { color: var(--aix-warning-text); }
.cdx-prov--absent   { color: var(--aix-text-disabled); }

/* 4 · Ownership path — the resolved walk. */
.cdx-path { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: var(--aix-text-sm); }
.cdx-path .node { font-family: var(--aix-font-mono); color: var(--aix-text-secondary); }
.cdx-path .arrow { color: var(--aix-text-disabled); }


/* ── .cdx-denied · STATE B — nothing cheaper was feasible.
   The workload is already at its constrained minimum. This is a good outcome
   and must read as one. Never an empty table. ── */
.cdx-denied--floor .cdx-denied-head { color: var(--aix-success-text); }
.cdx-denied-floor-note { display: flex; align-items: center; gap: 10px; padding: 14px;
  font-size: var(--aix-text-sm); color: var(--aix-text-secondary); line-height: 1.6; }
.cdx-denied-floor-note b { color: var(--aix-success-text); font-weight: 600; }

/* ── .cdx-constraint-price · STATE C — nothing bound it.
   No tier, no declared policy. The shadow price of a non-binding constraint is
   exactly zero, so there is no number to show. The panel is REPLACED, not emptied. ── */
.cdx-constraint-price--unbound { border-color: var(--aix-warning-border); background: var(--aix-warning-bg); }
.cdx-constraint-price--unbound::before { background: var(--aix-warning); }
.cdx-constraint-price--unbound .k { color: var(--aix-warning-text); }
.cdx-constraint-price--unbound .v { font-size: 22px; color: var(--aix-text); margin: 8px 0 6px; letter-spacing: -.01em; }
.cdx-constraint-price--unbound .d { color: var(--aix-text-secondary); }
.cdx-unbound-actions { display: flex; gap: 8px; margin-top: 14px; }

/* verdict rail — hairline on the first cell, never a fill */
.cdx-rail--block td:first-child { box-shadow: inset 2px 0 0 var(--aix-danger); }
.cdx-rail--warn  td:first-child { box-shadow: inset 2px 0 0 var(--aix-warning); }
.cdx-rail--leased td:first-child { box-shadow: inset 2px 0 0 var(--aix-primary); }
