/* ==========================================================================
   Goto menu — adopted presentation styles (CSS for the extra layouts).
   Pairs with _goto_menu.html.erb. Existing stack/row/cards rules stay where
   they are; these add index · rail · quiet · segmented · dropdown · popover ·
   overflow. All neutrals are tokens (warm-correct under a warm soul); the accent
   dot/edge maps from the goto's button_color. Add alongside the existing
   participation-goto-menu rules (pages/participation/step.css).
   ========================================================================== */

/* color tokens for the accent dot / rail edge (from button_color) */
.participation-goto-menu__dot,
.participation-goto-menu__rail-edge { background: var(--accent-primary); }
.participation-goto-menu__dot--success,  .participation-goto-menu__rail-item--success  .participation-goto-menu__rail-edge { background: var(--status-success); }
.participation-goto-menu__dot--warning,  .participation-goto-menu__rail-item--warning  .participation-goto-menu__rail-edge { background: var(--status-warning); }
.participation-goto-menu__dot--danger,   .participation-goto-menu__rail-item--danger   .participation-goto-menu__rail-edge { background: var(--status-error); }
.participation-goto-menu__dot--secondary,.participation-goto-menu__rail-item--secondary .participation-goto-menu__rail-edge { background: var(--text-tertiary); }
.participation-goto-menu__dot { width: 9px; height: 9px; border-radius: 999px; flex-shrink: 0; }

/* reset the per-destination <form> so it doesn't add layout gaps */
.participation-goto-menu__options form { margin: 0; }

/* ── index — editorial numbered trail ── */
.participation-goto-menu--index .participation-goto-menu__options { display: block; }
.participation-goto-menu__index-item {
  width: 100%; display: flex; align-items: baseline; gap: var(--space-4);
  padding: var(--space-3) var(--space-1); background: none; border: 0; cursor: pointer; text-align: left;
}
.participation-goto-menu__index-item + .participation-goto-menu__index-item,
.participation-goto-menu__options form + form .participation-goto-menu__index-item { border-top: 1px solid var(--border-subtle); }
.participation-goto-menu__index-num { font-family: var(--soul-font-display); font-size: var(--text-xl); color: var(--text-tertiary); font-variant-numeric: tabular-nums; min-width: 1.8em; }
.participation-goto-menu__index-item:hover .participation-goto-menu__index-num { color: var(--accent-primary); }
.participation-goto-menu__index-label { flex: 1; font-family: var(--soul-font-display); font-size: var(--text-lg); color: var(--text-primary); }
.participation-goto-menu__index-arrow { color: var(--text-tertiary); font-size: 18px; }

/* ── rail — accent-edged rows ── */
.participation-goto-menu--rail .participation-goto-menu__options { display: flex; flex-direction: column; gap: var(--space-2); }
.participation-goto-menu__rail-item {
  width: 100%; display: flex; align-items: center; gap: var(--space-3);
  padding: var(--space-3) var(--space-4); background: var(--surface-base, #fff);
  border: 1px solid var(--border-default); border-radius: var(--soul-radius-control, 10px);
  cursor: pointer; text-align: left; overflow: hidden; position: relative;
}
.participation-goto-menu__rail-item:hover { background: var(--surface-hover); }
.participation-goto-menu__rail-edge { width: 3px; align-self: stretch; border-radius: 999px; flex-shrink: 0; }
.participation-goto-menu__rail-body { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.participation-goto-menu__rail-label { font-size: var(--text-sm); font-weight: var(--weight-semibold); color: var(--text-primary); }
.participation-goto-menu__rail-sub { font-size: var(--text-xs); color: var(--text-tertiary); }
.participation-goto-menu__rail-chevron { color: var(--text-tertiary); flex-shrink: 0; }

/* ── quiet — text links ── */
.participation-goto-menu--quiet .participation-goto-menu__options { display: flex; flex-direction: column; gap: var(--space-1); }
.participation-goto-menu__quiet {
  display: inline-flex; align-items: center; gap: var(--space-2);
  padding: var(--space-2) var(--space-1); background: none; border: 0; cursor: pointer;
  color: var(--accent-primary); font-size: var(--text-sm); font-weight: var(--weight-medium); width: fit-content;
}
.participation-goto-menu__quiet:hover { text-decoration: underline; text-underline-offset: 3px; }

/* ── tabs — the canonical nav menu: DS pill tabs (.tabs--pills), the SAME
      component the mobile Dashboard Zone switcher uses. The pill / active
      styling comes from components/tabs.css (`.tabs--pills .tab` /
      `.tab--active`); the per-goto <form> is already display:contents (step.css)
      so each `.tab` is a flex item.

      CRITICAL: the base .participation-goto-menu__options is a CENTERED COLUMN
      (flex-direction:column, max-width:24rem, margin:auto) — it would stack the
      tabs (the bug this fixes). The bar overrides it to a horizontal, scrollable,
      centered pill row. Identical desktop/mobile; only the pill padding grows a
      touch on wider screens. ── */
.participation-goto-menu--tabs .participation-goto-menu__options {
  flex-direction: row;
  flex-wrap: nowrap;
  gap: var(--space-1);
  /* Centered when the tabs fit, scrolling from the START when they don't —
     fit-content + margin:auto avoids the justify-content:center + overflow
     cutoff that would strand the first tab. Same feel as the zone-tabs band. */
  width: fit-content;
  max-width: 100%;
  margin: 0 auto;
  overflow-x: auto;
}
.participation-goto-menu--tabs .tab { flex: 0 0 auto; }
@media (min-width: 768px) {
  .participation-goto-menu--tabs .tabs--pills .tab { padding: var(--space-2) var(--space-4); }
}

/* ── segmented — always-visible pill tabs ── */
.participation-goto-menu--segmented .participation-goto-menu__options {
  display: inline-flex; gap: var(--space-1); background: var(--surface-neutral);
  border-radius: var(--radius-full, 999px); padding: var(--space-1); flex-wrap: wrap;
}
.participation-goto-menu__seg {
  display: inline-flex; align-items: center; gap: var(--space-1-5, 6px);
  padding: var(--space-2) var(--space-4); border-radius: var(--radius-full, 999px);
  background: none; border: 0; cursor: pointer; font-size: var(--text-sm); font-weight: var(--weight-semibold); color: var(--text-secondary);
}
.participation-goto-menu__seg--first { background: var(--surface-base, #fff); color: var(--accent-primary); box-shadow: 0 1px 3px rgba(20,20,16,.1); }

/* ── dropdown / popover / overflow — trigger + panel (visibility via controller) ── */
.participation-goto-menu--dropdown, .participation-goto-menu--popover, .participation-goto-menu--overflow { position: relative; display: inline-block; }
.participation-goto-menu__trigger { display: inline-flex; align-items: center; gap: var(--space-2); }
.participation-goto-menu__panel {
  position: absolute; top: calc(100% + var(--space-2)); left: 0; z-index: var(--z-dropdown, 50);
  min-width: 16rem; background: var(--surface-base, #fff);
  border: 1px solid var(--border-default); border-radius: var(--soul-radius-control, 12px);
  box-shadow: var(--shadow-lg, 0 12px 32px rgba(20,20,16,.16)); padding: var(--space-1);
}
.participation-goto-menu__panel[hidden] { display: none; }
.participation-goto-menu--popover .participation-goto-menu__panel { top: calc(100% + 10px); }
.participation-goto-menu--popover .participation-goto-menu__panel::before {
  content: ''; position: absolute; top: -6px; left: 20px; width: 12px; height: 12px;
  background: var(--surface-base, #fff); border-left: 1px solid var(--border-default); border-top: 1px solid var(--border-default); transform: rotate(45deg);
}
.participation-goto-menu__item {
  width: 100%; display: flex; align-items: center; gap: var(--space-3);
  padding: var(--space-2) var(--space-3); background: none; border: 0; border-radius: var(--radius-md, 8px); cursor: pointer; text-align: left;
}
.participation-goto-menu__item:hover { background: var(--accent-subtle); }
.participation-goto-menu__item-body { display: flex; flex-direction: column; min-width: 0; }
.participation-goto-menu__item-label { font-size: var(--text-sm); font-weight: var(--weight-semibold); color: var(--text-primary); }
.participation-goto-menu__item-sub { font-size: var(--text-xs); color: var(--text-tertiary); }

/* mobile: panels + segmented go full-width / stack */
@media (max-width: 640px) {
  .participation-goto-menu--dropdown, .participation-goto-menu--popover, .participation-goto-menu--overflow { display: block; }
  .participation-goto-menu__panel { position: static; min-width: 0; box-shadow: none; margin-top: var(--space-2); }
  .participation-goto-menu--segmented .participation-goto-menu__options { display: flex; flex-direction: column; border-radius: var(--soul-radius-control, 12px); }
}
