/*
 * The scenario funnel's rungs (ticket 009), drawn as one card per Status Service on Reports ›
 * Effectiveness (ticket 983, js/views/effectiveness.js) and as the technique page's funnel
 * (js/views/entities.js). The `.deception-rung*` rules are shared by both; the cards and their grid
 * are Effectiveness's own. Bars are a neutral ink, not the accent (design note rule 3: the accent marks
 * only interactive things).
 */

.effectiveness-funnels {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  align-items: start;
  gap: var(--space-4);
}

.effectiveness-funnel {
  padding: var(--space-4) var(--space-4) var(--space-5);
  background: linear-gradient(135deg, var(--card-from), var(--card-to));
  border: 1px solid var(--border);
  border-radius: var(--radius);
}

.effectiveness-funnel__title {
  margin: 0;
  font: var(--type-headline);
  color: var(--ink);
}

.effectiveness-funnel__meta {
  margin: var(--space-1) 0 var(--space-4);
  color: var(--ink-muted);
  font: var(--type-footnote);
}

.deception-rungs {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
}

/* The vertical connector between rungs — a short line above every rung except the first, drawn as
   a pseudo-element so no extra DOM node is needed per gap. */
.deception-rung {
  position: relative;
  padding-top: 0.65rem;
}

.deception-rung:first-child {
  padding-top: 0;
}

.deception-rung:not(:first-child)::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0.6rem;
  width: 1px;
  height: 0.65rem;
  background: var(--border);
}

.deception-rung__row {
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
}

.deception-rung__label {
  flex: 1 1 auto;
  color: var(--ink-body);
  font-size: var(--fs-sm);
}

.deception-rung__count {
  color: var(--ink);
  font-variant-numeric: tabular-nums;
  font-weight: 600;
}

.deception-rung__pct {
  min-width: 3.5rem;
  text-align: right;
  color: var(--ink-muted);
  font-family: var(--font-mono);
  font-size: var(--fs-2xs);
}

.deception-rung__track {
  margin-top: 0.3rem;
  height: 0.5rem;
  background: rgba(255, 255, 255, 0.05);
  border-radius: 999px;
  overflow: hidden;
}

.deception-rung__bar {
  height: 100%;
  min-width: 2px;
  background: var(--ink-dim);
  border-radius: 999px;
}

/*
 * Meeting Sites and Legend (ticket 001086, audit pages 29 and 30). The card styles of both pages live in
 * console.css and decoys-reports.css, which other tickets edit; what this ticket changes is set here, and
 * this sheet loads after both.
 */

/* A Meeting Site card: a column with one gap between its rows, the actions at the foot. The count and its
   Partial chip had no gap ("2,459 requests Partial"). */
.service-card--inventory,
.service-card--observed {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

.service-card--inventory .service-card__name,
.service-card--observed .service-card__name {
  margin: 0;
}

.service-card__count {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-1) var(--space-3);
}

.service-card__requests {
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}

.service-card__actions {
  margin-top: auto;
}

/* "Details" was a bare disclosure triangle in body text. It is a bordered control with an accent arrow, so
   a reader sees there is something behind it. */
.service-card__details > summary {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: 0.25rem 0.7rem 0.25rem 0.55rem;
  border: 1px solid var(--border-strong);
  border-radius: 0.45rem;
  color: var(--ink);
  font-size: var(--fs-xs);
  cursor: pointer;
  list-style: none;
}

.service-card__details > summary::-webkit-details-marker {
  display: none;
}

.service-card__details > summary::before {
  content: "▸";
  color: var(--gold);
  font-size: var(--fs-sm);
}

.service-card__details[open] > summary::before {
  content: "▾";
}

.service-card__details > summary:hover {
  background: rgba(255, 255, 255, 0.08);
}

.service-card__details > summary:focus-visible {
  outline: 2px solid var(--gold);
  outline-offset: 2px;
}

.service-card__details > .service-card__facts {
  margin: var(--space-3) 0 0;
}

.service-next-step {
  margin: var(--space-5) 0 0;
}

/* The Legend gallery: a card is as tall as its own words. Rows used to stretch every card to the tallest in
   its row, which left 100 px of empty body above "Runs:" in a short card. */
.scenario-gallery {
  align-items: start;
}

.scenario-card[hidden],
.scenario-gallery__filter-row[hidden] {
  display: none;
}

.scenario-gallery__filter-row {
  margin-bottom: var(--space-3);
}

.scenario-gallery__filter {
  box-sizing: border-box;
  width: 100%;
  max-width: 28rem;
}

.scenario-slot-control__hint {
  margin: var(--space-2) 0 0;
}

/* Rapid prototype (legend dissolve): "Add a Meeting Site" under the Meeting Sites cards. */
.site-catalog {
  margin-top: 1.5rem;
}
.site-catalog__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
}
.site-catalog__head .section__hint {
  margin: 0.25rem 0 0;
}
.site-catalog__body {
  margin-top: 0.9rem;
}
.site-catalog__body[hidden],
.site-catalog[hidden] {
  display: none;
}
.site-catalog__error,
.service-card__remove-error {
  color: var(--danger, #e5484d);
  font-size: 0.85rem;
  margin: 0.4rem 0 0;
}
.site-catalog__error[hidden] {
  display: none;
}
.service-card__remove {
  display: inline-flex;
  gap: 0.4rem;
  align-items: center;
  flex-wrap: wrap;
}
.site-catalog__advanced {
  margin-top: 0.75rem;
}
.company-settings {
  margin-top: 0.5rem;
}

/* Rapid prototype (legend dissolve): Company profiles. */
.company-profiles__grid {
  margin-top: 0.9rem;
}
.company-profile-editor {
  margin: 0.9rem 0;
  padding: 1rem 1.25rem;
  display: grid;
  gap: 0.6rem;
}
.company-profile-editor__actions {
  display: flex;
  gap: 0.6rem;
  align-items: center;
  margin-top: 0.4rem;
}
.company-profile-editor__rule {
  border: 1px solid var(--border, rgba(127, 127, 127, 0.25));
  border-radius: 10px;
  padding: 0.6rem 0.8rem 0.8rem;
  margin: 0.3rem 0 0;
  min-width: 0;
}
.company-profile-editor__rule-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
  gap: 0.5rem;
  margin-top: 0.4rem;
}
.company-station__rule,
.company-station__apply {
  margin-top: 0.3rem;
}
.company-station__apply[data-apply="error"] {
  color: var(--danger, #c0392b);
}
.company-stations {
  margin-top: 1.5rem;
}
.company-stations__table td {
  vertical-align: middle;
}
.company-station__select {
  min-width: 12rem;
}
.company-station__custom {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  align-items: center;
}
.company-profiles__status:empty {
  display: none;
}
.company-home__head {
  margin-top: 2rem;
}
