/* Shared public organism detail. Kept separate to avoid leaking layout rules into organism listings. */
.organism-detail-hero {
  padding-top: 24px;
  padding-bottom: 28px;
}

.organism-detail-hero .organism-hero__topline {
  margin-bottom: 12px;
}

.organism-detail-hero__card {
  /* Sidebar kept intentionally narrow (empirically checked against the
     longest real stat label, "Ofertas Públicas de Empleo", which needs
     ~215px and still has a comfortable margin at this range) so the main
     column -- where the H1 lives -- gets as much width as safely possible.
     Not organism-specific: same range for every organism regardless of
     name length or stat counts. */
  grid-template-columns: minmax(0, 1fr) minmax(320px, 335px);
  column-gap: 20px;
  /* "start" (not "center"): the right column (metrics + actualizado +
     seguimiento) is taller than the left one, so centering pushed the
     left column's content down by the same amount it left unused below
     it -- purely an alignment artifact, not intended breathing room. */
  align-items: start;
}

.organism-hero__aside {
  display: grid;
  gap: 12px;
  min-width: 0;
}

/* Logo/escudo del organismo: mismo contenedor y misma lógica de fallback
   para todos los organismos, sin excepciones por tamaño o tipo. */
.organism-hero__identity {
  display: flex;
  align-items: flex-start;
  gap: 20px;
}

.organism-hero__content {
  min-width: 0;
  flex: 1 1 auto;
}

.organism-hero__logo {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  width: 96px;
  height: 96px;
  padding: 12px;
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 16px;
}

.organism-hero__logo img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.organism-hero__logo svg {
  width: 52%;
  height: 52%;
  fill: none;
  stroke: var(--muted);
  stroke-width: 1.6;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.organism-detail-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  max-width: 820px;
}

.organism-detail-actions .btn {
  min-height: 44px;
  width: auto;
  white-space: normal;
}

.organism-detail-actions .organism-action {
  --organism-action-color: #1e63ff;
  --organism-action-color-dark: #1552d6;
  --organism-action-shadow: rgba(30, 99, 255, 0.22);
  background: linear-gradient(135deg, var(--organism-action-color), var(--organism-action-color-dark));
  border-color: transparent;
  color: #fff;
  box-shadow: 0 8px 18px var(--organism-action-shadow);
}

.organism-detail-actions .organism-action--jobs {
  --organism-action-color: #079d72;
  --organism-action-color-dark: #047857;
  --organism-action-shadow: rgba(7, 157, 114, 0.2);
}

.organism-detail-actions .organism-action--exams {
  --organism-action-color: #7c3aed;
  --organism-action-color-dark: #5b21b6;
  --organism-action-shadow: rgba(124, 58, 237, 0.2);
}

.organism-detail-actions .organism-action--oep {
  --organism-action-color: #ea6c0b;
  --organism-action-color-dark: #c2410c;
  --organism-action-shadow: rgba(234, 108, 11, 0.2);
}

.organism-detail-actions .organism-action:hover,
.organism-detail-actions .organism-action:focus-visible {
  background: linear-gradient(135deg, var(--organism-action-color-dark), var(--organism-action-color));
  border-color: transparent;
  color: #fff;
  box-shadow: 0 12px 24px var(--organism-action-shadow);
  transform: translateY(-1px);
}

.organism-action-hint {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin: 10px 0 0;
  padding-left: 2px;
  color: #047854;
  font-size: 12px;
  font-weight: 700;
}

/* `.organism-hero p { max-width: 760px; margin: 0 0 18px; font-size: 17px;
   ... }` is more specific than the plain-class rule above (element+class
   beats a single class), so it has been silently winning on every shared
   property since this hint was introduced: the "2 procesos con plazo
   abierto ahora" line has actually been rendering at 17px in muted gray
   (the generic paragraph style), never the intended 12px/700/green it was
   coded with. Restoring the real values here as part of this spacing
   pass, since fixing the margin required touching this exact conflict
   anyway. */
.organism-hero p.organism-action-hint {
  max-width: none;
  margin: 4px 0 6px;
  color: #047854;
  font-size: 12px;
}

.organism-action-hint__dot {
  width: 7px;
  height: 7px;
  flex: none;
  border-radius: 50%;
  background: #22c55e;
}

.organism-hero-sources {
  display: grid;
  gap: 9px;
  margin-top: 6px;
  padding-top: 14px;
  border-top: 1px solid rgba(30, 99, 255, .12);
}

.organism-hero-sources__label {
  display: flex;
  gap: 7px;
  align-items: center;
  color: var(--text-secondary);
  font-size: 12px;
  font-weight: 800;
}

.organism-hero-sources__label svg {
  width: 17px;
  height: 17px;
  flex: 0 0 auto;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.8;
}

.organism-hero-sources__links {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.organism-hero-sources__links svg {
  width: 15px;
  height: 15px;
  flex: 0 0 auto;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.8;
}

.organism-hero-sources__links a {
  position: relative;
  display: inline-flex;
  gap: 7px;
  align-items: center;
  min-height: 36px;
  padding: 7px 10px;
  border: 1px solid rgba(30, 99, 255, .2);
  border-radius: 9px;
  background: rgba(255, 255, 255, .78);
  color: var(--primary);
  font-size: 12px;
  font-weight: 800;
  line-height: 1.25;
  text-decoration: none;
  transition: background-color .18s ease, border-color .18s ease, box-shadow .18s ease;
}

/* Amplia el area clicable a 44px sin alterar la caja visible (36px). */
.organism-hero-sources__links a::after,
.result-card__official-link::after,
.result-card__related-link::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 50%;
  transform: translateY(-50%);
  height: 100%;
  min-height: 44px;
}

.organism-hero-sources__links a:hover,
.organism-hero-sources__links a:focus-visible {
  border-color: rgba(30, 99, 255, .48);
  background: #fff;
  box-shadow: 0 6px 16px rgba(30, 99, 255, .1);
}

.organism-hero-sources__links a:focus-visible {
  outline: 3px solid rgba(30, 99, 255, .2);
  outline-offset: 2px;
}

.organism-detail-metrics {
  width: 100%;
  padding: 8px 14px;
}

.organism-detail-metrics .organism-metric {
  grid-template-columns: 38px max-content minmax(0, 1fr);
  gap: 10px;
  min-height: 56px;
  padding: 8px 0;
}

.organism-detail-metrics .organism-metric strong {
  white-space: nowrap;
}

.organism-metric__icon {
  display: grid;
  width: 36px;
  height: 36px;
  place-items: center;
  border: 1px solid currentColor;
  border-radius: 11px;
  background: color-mix(in srgb, currentColor 10%, white);
}

.organism-metric__icon svg {
  width: 20px;
  height: 20px;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.8;
}

.organism-metric--blue .organism-metric__icon { color: #1e63ff; }
.organism-metric--green .organism-metric__icon { color: #079d72; }
.organism-metric--purple .organism-metric__icon { color: #7c3aed; }
.organism-metric--orange .organism-metric__icon { color: #ea6c0b; }

.organism-hero__updated {
  display: flex;
  align-items: center;
  gap: 6px;
  margin: 10px 2px 0;
  /* Anchors the icon to the same left inset the metrics card (18px) and
     the follow card (14px) use for theirs, so this line reads as part of
     the right-hand rail instead of floating between the two columns. */
  padding-left: 16px;
  color: var(--text-secondary);
  font-size: 12px;
  font-weight: 600;
}

/* Same `.organism-hero p` conflict as `.organism-action-hint` above: this
   line has actually been rendering at 17px with a 760px max-width ever
   since it was introduced, never the intended compact 12px caption.
   Restoring only size/width here (not margin, which is out of scope for
   this pass) while this rule is already being edited for the horizontal
   alignment fix. */
.organism-hero p.organism-hero__updated {
  max-width: none;
  font-size: 12px;
}

.organism-hero__updated-icon {
  display: inline-flex;
  flex: none;
  width: 15px;
  height: 15px;
  color: var(--text-secondary);
}

.organism-hero__updated-icon svg {
  width: 100%;
  height: 100%;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.organism-follow-card {
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr);
  gap: 8px 12px;
  padding: 14px;
  border: 1px solid rgba(30, 99, 255, .24);
  border-radius: 14px;
  background: linear-gradient(145deg, rgba(30, 99, 255, .075), rgba(255, 255, 255, .96));
  box-shadow: 0 10px 24px rgba(30, 99, 255, .07);
}

.organism-follow-card--active {
  border-color: rgba(5, 150, 105, .28);
  background: linear-gradient(145deg, rgba(5, 150, 105, .08), rgba(255, 255, 255, .96));
}

.organism-follow-card__icon {
  display: grid;
  width: 42px;
  height: 42px;
  place-items: center;
  border-radius: 12px;
  background: rgba(30, 99, 255, .1);
  color: var(--primary);
}

.organism-follow-card--active .organism-follow-card__icon {
  background: rgba(5, 150, 105, .12);
  color: #059669;
}

.organism-follow-card__icon svg {
  width: 22px;
  height: 22px;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.9;
}

.organism-follow-card__copy h2 {
  margin: 1px 0 4px;
  color: var(--text);
  font-size: 16px;
  line-height: 1.25;
}

.organism-follow-card__copy p {
  margin: 0;
  color: var(--text-secondary);
  font-size: 12px;
  line-height: 1.45;
}

.organism-follow-card__actions {
  display: flex;
  grid-column: 1 / -1;
  flex-wrap: wrap;
  gap: 8px 12px;
  align-items: center;
  padding-left: 54px;
}

.organism-follow-card__actions form {
  margin: 0;
}

.organism-follow-card__actions .btn {
  min-height: 36px;
}

.organism-follow-card__login {
  color: var(--primary);
  font-size: 12px;
  font-weight: 800;
  text-decoration: none;
}

.organism-follow-card__login:hover,
.organism-follow-card__login:focus-visible {
  text-decoration: underline;
}

.organism-staff-panel {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
}

.organism-staff-panel__actions form {
  margin: 0;
}

.organism-detail-main {
  display: grid;
  gap: 20px;
  min-width: 0;
}

/* Two-column pairing used only where there are really two simultaneous
   contents: "Sobre el organismo" + "Últimas novedades", and "Últimas
   oposiciones" + "Colabora". Everything else is a direct child of
   .organism-detail-main and gets the full width. Same column sizing the
   old page-wide sidebar used, so nothing about the paired blocks changes
   visually -- only how far down the page the two-column split extends. */
.organism-detail-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(300px, 350px);
  gap: 22px;
  align-items: start;
}

.organism-latest-card {
  --activity-color: #1e63ff;
  --activity-rgb: 30, 99, 255;
  /* Darker, WCAG-AA-safe shade of the same hue, used only where the
     section color renders as real text on a light background (badges,
     "Ver detalle", OEP numbers...). --activity-color/--activity-rgb stay
     untouched for icons, borders and tinted fills -- those aren't real
     text and keep the brighter, more "on-brand" shade. See the contrast
     audit in the final report for the measured ratios. */
  --activity-text-color: #1550c2;
  overflow: hidden;
  border-color: rgba(var(--activity-rgb), .15);
  background: linear-gradient(145deg, rgba(var(--activity-rgb), .045), #fff 42%);
}

.organism-latest-card--pool {
  --activity-color: #079d72;
  --activity-rgb: 7, 157, 114;
  --activity-text-color: #057a58;
}

.organism-latest-card--exam {
  --activity-color: #7c3aed;
  --activity-rgb: 124, 58, 237;
  --activity-text-color: #6d28d9;
}

.organism-latest-card--oep {
  --activity-color: #c95608;
  --activity-rgb: 234, 108, 11;
  --activity-text-color: #a8480a;
}

.organism-latest-card__header,
.organism-latest-card__title,
.organism-activity-row__date,
.organism-latest-empty,
.organism-latest-empty__actions {
  display: flex;
  align-items: center;
}

.organism-latest-card__header {
  justify-content: space-between;
  gap: 16px;
  padding-bottom: 15px;
  border-bottom: 1px solid rgba(var(--activity-rgb), .12);
}

.organism-latest-card__title {
  min-width: 0;
  gap: 12px;
}

.organism-latest-card__title h2 {
  margin: 0;
  /* Renders ~21-22px at common desktop widths (1440-1366px), settling to
     19px below ~1266px -- enough presence to read as a real section break
     under the H1 (52px), without the heavier ~27-28px tried previously. */
  font-size: clamp(19px, 1.5vw, 22px);
  line-height: 1.3;
}

.organism-latest-card__icon,
.organism-latest-empty__icon,
.organism-activity-row__date-icon {
  display: grid;
  flex: 0 0 auto;
  place-items: center;
  background: rgba(var(--activity-rgb), .1);
  color: var(--activity-color);
}

.organism-latest-card__icon {
  width: 44px;
  height: 44px;
  border: 1px solid rgba(var(--activity-rgb), .13);
  border-radius: 13px;
}

.organism-latest-card__icon svg,
.organism-latest-empty__icon svg,
.organism-activity-row__date-icon svg {
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.8;
}

.organism-latest-card__icon svg {
  width: 24px;
  height: 24px;
}

.organism-latest-card__all,
.organism-latest-empty__link {
  flex: 0 0 auto;
  color: var(--activity-text-color, var(--activity-color));
  text-decoration: none;
}

.organism-latest-empty__link {
  font-weight: 800;
}

/* One single "Ver todas →" rule shared by Oposiciones/Bolsas/Exámenes/OEP
   (all wrapped in `.organism-latest-card--*`, which sets --activity-text-color)
   AND by Novedades' own header link (a plain `.organism-section__head a`
   context with no --activity-text-color of its own) -- the `a.` prefix
   matches `.organism-section__head a`'s specificity so this always wins
   over that older, unrelated rule, and the fallback keeps Novedades on the
   same accessible blue used for Oposiciones. Only the color may
   legitimately differ per section; every other property below is
   identical everywhere this class is used. Uses --activity-text-color
   (not the brighter --activity-color used for icons/borders) because this
   text needs to clear WCAG AA 4.5:1 -- see the contrast audit notes above. */
a.organism-latest-card__all {
  padding: 8px 2px;
  color: var(--activity-text-color, #1550c2);
  font-size: 16px;
  font-weight: 600;
  line-height: 1.4;
  white-space: nowrap;
}

.organism-latest-card__all:hover,
.organism-latest-card__all:focus-visible,
.organism-latest-empty__link:hover,
.organism-latest-empty__link:focus-visible {
  text-decoration: underline;
  text-underline-offset: 3px;
}

.organism-latest-card__all span[aria-hidden] {
  display: inline-block;
  transition: transform .15s ease;
}

.organism-latest-card__all:hover span[aria-hidden],
.organism-latest-card__all:focus-visible span[aria-hidden] {
  transform: translateX(3px);
}

.organism-latest-card__all:focus-visible,
.organism-latest-empty__link:focus-visible,
.organism-latest-card .organism-row-action:focus-visible {
  outline: 3px solid rgba(var(--activity-rgb, 30, 99, 255), .2);
  outline-offset: 3px;
}

.organism-latest-list {
  display: grid;
  gap: 10px;
  margin-top: 16px;
}

.organism-latest-card .organism-activity-row {
  display: grid;
  grid-template-columns: 118px minmax(0, 1fr) minmax(116px, 145px) 116px;
  gap: 14px;
  align-items: center;
  min-width: 0;
  padding: 14px;
  border: 1px solid rgba(var(--activity-rgb), .12);
  border-radius: 12px;
  background: rgba(255, 255, 255, .92);
  box-shadow: 0 5px 16px rgba(15, 23, 42, .035);
}

/* Bolsas render at full page width (unlike oposiciones, paired with the
   Novedades aside) -- the same fixed estado/acción columns used there leave
   a visibly empty gap before "Ver detalle". Only this variant's columns are
   redistributed: estado keeps enough room without being oversized, and the
   reclaimed width goes to the content column via its existing 1fr track. */
.organism-latest-card--pool .organism-activity-row {
  grid-template-columns: 118px minmax(0, 1fr) minmax(104px, 128px) 104px;
}

.organism-activity-row__date {
  gap: 9px;
  min-width: 0;
}

.organism-activity-row__date-icon {
  width: 28px;
  height: 28px;
  border-radius: 8px;
}

.organism-activity-row__date-icon svg {
  width: 15px;
  height: 15px;
}

.organism-activity-row__date > div,
.organism-activity-row__main {
  display: grid;
  min-width: 0;
}

.organism-activity-row__date time {
  color: var(--text-primary);
  font-size: 14px;
  font-weight: 600;
}

.organism-activity-row__date span:not(.organism-activity-row__date-icon),
.organism-activity-row__subtitle {
  color: var(--text-secondary);
  font-size: 11px;
  line-height: 1.35;
}

.organism-activity-row__subtitle--link {
  text-decoration: none;
  cursor: pointer;
}

.organism-activity-row__subtitle--link:hover,
.organism-activity-row__subtitle--link:focus-visible {
  color: var(--activity-text-color, var(--activity-color));
  text-decoration: underline;
  text-underline-offset: 2px;
}

.organism-activity-row__subtitle--link:focus-visible {
  outline: 2px solid rgba(var(--activity-rgb), .35);
  outline-offset: 2px;
  border-radius: 4px;
}

.organism-activity-row__main {
  gap: 4px;
}

.organism-activity-row__chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.organism-activity-row__level {
  border-color: rgba(var(--activity-rgb), .17);
  background: rgba(var(--activity-rgb), .08);
  color: var(--activity-text-color, var(--activity-color));
}

a.organism-activity-row__level {
  text-decoration: none;
  cursor: pointer;
}

a.organism-activity-row__level:hover,
a.organism-activity-row__level:focus-visible {
  border-color: rgba(var(--activity-rgb), .32);
  background: rgba(var(--activity-rgb), .15);
}

a.organism-activity-row__level:focus-visible {
  outline: 2px solid rgba(var(--activity-rgb), .35);
  outline-offset: 2px;
}

.organism-activity-row__title {
  min-width: 0;
  color: var(--text-primary);
  font-size: 14px;
  font-weight: 800;
  line-height: 1.35;
  overflow-wrap: anywhere;
  text-decoration: none;
}

.organism-activity-row__title:hover,
.organism-activity-row__title:focus-visible {
  color: var(--activity-text-color, var(--activity-color));
  text-decoration: underline;
  text-underline-offset: 3px;
}

.organism-latest-card--exam .organism-activity-row__title {
  display: -webkit-box;
  overflow: hidden;
  font-size: 13px;
  font-weight: 750;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}

.organism-activity-row__status {
  min-width: 0;
}

.organism-activity-row__status .pill {
  max-width: 100%;
  white-space: normal;
  text-align: center;
}

.organism-activity-row__official {
  border-color: rgba(124, 58, 237, .18);
  background: rgba(124, 58, 237, .09);
  color: #6d28d9;
}

.organism-activity-row__actions {
  display: flex;
  justify-content: flex-end;
}

.organism-latest-card .organism-row-action {
  display: inline-flex;
  gap: 6px;
  align-items: center;
  justify-content: center;
  min-height: 38px;
  padding: 8px 11px;
  border: 1px solid rgba(var(--activity-rgb), .24);
  border-radius: 9px;
  background: rgba(var(--activity-rgb), .06);
  color: var(--activity-text-color, var(--activity-color));
  font-size: 12px;
  font-weight: 850;
  line-height: 1.2;
  text-align: center;
  text-decoration: none;
}

.organism-latest-card .organism-row-action:hover {
  border-color: rgba(var(--activity-rgb), .42);
  background: rgba(var(--activity-rgb), .11);
}

.organism-oep-list {
  display: grid;
  gap: 10px;
  margin-top: 16px;
}

.organism-oep-row {
  display: grid;
  /* año | información (flexible) | métricas (predecible, tope 300px) | acción */
  grid-template-columns: 72px minmax(180px, 1fr) minmax(200px, 300px) 112px;
  gap: 12px;
  align-items: center;
  min-width: 0;
  padding: 12px;
  border: 1px solid rgba(var(--activity-rgb), .15);
  border-radius: 12px;
  background: rgba(255, 255, 255, .94);
  box-shadow: 0 5px 16px rgba(15, 23, 42, .035);
}

.organism-oep-row__year {
  display: grid;
  min-height: 58px;
  align-content: center;
  justify-items: center;
  border: 1px solid rgba(var(--activity-rgb), .14);
  border-radius: 10px;
  background: rgba(var(--activity-rgb), .1);
  color: var(--activity-text-color, var(--activity-color));
  line-height: 1;
}

.organism-oep-row__year strong {
  font-size: 16px;
  font-weight: 900;
}

.organism-oep-row__year span {
  margin-top: 6px;
  font-size: 10px;
  font-weight: 850;
  text-transform: uppercase;
}

.organism-oep-row__main {
  display: grid;
  gap: 7px;
  min-width: 0;
}

.organism-oep-row__title {
  color: var(--text-primary);
  /* Matches .organism-activity-row__title (oposiciones/bolsas/exámenes):
     same size/weight scale across every activity row in this ficha. */
  font-size: 14px;
  font-weight: 800;
  line-height: 1.35;
  overflow-wrap: anywhere;
  text-decoration: none;
}

/* `.organism-oep-list a { color: var(--primary); font-weight: 900; }` in
   app-premium.css is a legacy rule from an older, simpler OEP list markup
   (grouped with .organism-process-list a / .organism-news-list a, none of
   which describe the current row component); it still matches this link
   by tag+ancestor and, being element+class, has been outweighing the
   plain-class rule above -- the title has actually always rendered at
   weight 900 in persistent blue, never the dark-by-default/orange-on-hover
   pattern its siblings use. Overriding with matching specificity here
   rather than touching that shared legacy rule, which other components
   may still depend on. */
a.organism-oep-row__title {
  color: var(--text-primary);
  font-weight: 800;
}

.organism-oep-row__title:hover,
.organism-oep-row__title:focus-visible {
  color: var(--activity-text-color, var(--activity-color));
  text-decoration: underline;
  text-underline-offset: 3px;
}

.organism-oep-row__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 5px 10px;
  color: var(--text-secondary);
  font-size: 11px;
  line-height: 1.4;
}

.organism-oep-row__status {
  padding: 2px 7px;
  border-radius: 999px;
  background: rgba(var(--activity-rgb), .1);
  color: var(--activity-text-color, var(--activity-color));
  font-weight: 850;
}

/* One shared pill instead of three independent mini-cards: the border/
   background/radius live on the group; each cell is transparent and only
   a thin internal divider (not a full box) separates them, so the three
   numbers read as one unit ("plazas de esta OEP") scanned horizontally. */
.organism-oep-row__metrics {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0;
  margin: 0;
  border: 1px solid rgba(var(--activity-rgb), .14);
  border-radius: 10px;
  background: rgba(var(--activity-rgb), .05);
  overflow: hidden;
}

.organism-oep-row__metrics > div {
  display: flex;
  min-width: 0;
  min-height: 50px;
  padding: 6px 5px;
  flex-direction: column-reverse;
  align-items: center;
  justify-content: center;
  border-right: 1px solid rgba(var(--activity-rgb), .14);
  text-align: center;
}

.organism-oep-row__metrics > div:last-child {
  border-right: 0;
}

.organism-oep-row__metrics dt {
  color: var(--text-secondary);
  font-size: 10px;
  font-weight: 750;
  line-height: 1.2;
}

.organism-oep-row__metrics dd {
  margin: 0 0 2px;
  color: var(--activity-text-color, var(--activity-color));
  font-size: 16px;
  font-weight: 900;
  line-height: 1;
}

.organism-oep-row__actions {
  display: flex;
  justify-content: flex-end;
}

.organism-oep-row__actions .organism-row-action {
  white-space: nowrap;
}

/* Compact empty-state pattern shared by all 4 activity cards (oposiciones,
   bolsas, exámenes, OEP): one dashed box with an icon+text group and an
   actions group as its only two flex children. flex-wrap lets the actions
   drop to their own full-width line when the text group needs the room,
   instead of squeezing everything into a single unbreakable row. No nested
   box for the OEP-opportunity copy on purpose — it is plain text like the
   rest of the empty state, not a card within a card. */
.organism-latest-empty {
  flex-wrap: wrap;
  gap: 10px 16px;
  margin-top: 14px;
  padding: 14px 16px;
  border: 1px dashed rgba(var(--activity-rgb), .24);
  border-radius: 13px;
  background: rgba(var(--activity-rgb), .055);
}

.organism-latest-empty__intro {
  display: flex;
  flex: 1 1 260px;
  align-items: center;
  min-width: 0;
  gap: 12px;
}

.organism-latest-empty__intro > div {
  min-width: 0;
}

.organism-latest-empty__icon {
  width: 40px;
  height: 40px;
  border-radius: 12px;
}

.organism-latest-empty__icon svg {
  width: 20px;
  height: 20px;
}

.organism-latest-empty strong {
  display: block;
  font-size: 14px;
  line-height: 1.3;
}

.organism-latest-empty p {
  margin: 2px 0 0;
  color: var(--text-secondary);
  font-size: 13px;
  line-height: 1.4;
}

.organism-latest-empty__actions {
  flex: 0 1 auto;
  flex-wrap: wrap;
  gap: 8px 10px;
}

.organism-latest-card .organism-latest-empty .btn {
  min-height: 36px;
  padding: 8px 14px;
  white-space: normal;
  text-align: center;
  border-color: rgba(var(--activity-rgb), .26);
  color: var(--activity-text-color, var(--activity-color));
}

.organism-latest-card .organism-latest-empty .btn-primary {
  border-color: transparent;
  color: #fff;
}

.organism-side-copy {
  margin: 14px 0 0;
  color: var(--text-secondary);
  line-height: 1.55;
}

/* "Empleo público relacionado" card grid. auto-fit/minmax does the
   responsive work on its own (2 columns while the main column has room for
   two 260px+ cards, 1 column once it doesn't) so no extra breakpoints are
   needed down to 360px. */
.organism-related__intro {
  margin: 6px 0 16px;
  color: var(--text-secondary);
  line-height: 1.5;
}

.organism-oep-help {
  margin: -4px 0 14px;
  color: var(--text-secondary);
  font-size: 12px;
  line-height: 1.5;
}

.organism-related__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 12px;
}

.organism-related__card {
  --related-color: #1e63ff;
  --related-rgb: 30, 99, 255;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px;
  border: 1px solid rgba(var(--related-rgb), .16);
  border-radius: 13px;
  background: rgba(var(--related-rgb), .05);
  color: var(--text);
  text-decoration: none;
  transition: background-color .18s ease, border-color .18s ease, transform .18s ease;
}

.organism-related__card:hover,
.organism-related__card:focus-visible {
  border-color: rgba(var(--related-rgb), .32);
  background: rgba(var(--related-rgb), .09);
  transform: translateY(-1px);
}

.organism-related__card:focus-visible {
  outline: 3px solid rgba(var(--related-rgb), .25);
  outline-offset: 2px;
}

.organism-related__card--bolsas {
  --related-color: #079d72;
  --related-rgb: 7, 157, 114;
}

.organism-related__card--examenes {
  --related-color: #7c3aed;
  --related-rgb: 124, 58, 237;
}

.organism-related__card--oep {
  --related-color: #c95608;
  --related-rgb: 234, 108, 11;
}

.organism-related__card--directorio {
  --related-color: #475569;
  --related-rgb: 71, 85, 105;
}

.organism-related__icon {
  display: grid;
  flex: 0 0 auto;
  width: 38px;
  height: 38px;
  place-items: center;
  border-radius: 11px;
  background: rgba(var(--related-rgb), .12);
  color: var(--related-color);
}

.organism-related__icon svg {
  width: 19px;
  height: 19px;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.8;
}

.organism-related__body {
  display: grid;
  min-width: 0;
  gap: 2px;
}

.organism-related__title {
  color: var(--text);
  font-size: 14px;
  font-weight: 800;
  line-height: 1.3;
}

.organism-related__desc {
  color: var(--text-secondary);
  font-size: 12px;
  line-height: 1.35;
}

.organism-related__arrow {
  flex: 0 0 auto;
  margin-left: auto;
  color: var(--related-color);
  font-weight: 800;
}

.organism-news-list {
  display: flex;
  flex-direction: column;
  margin-top: 8px;
}

.organism-news-row {
  --news-color: #1e63ff;
  --news-rgb: 30, 99, 255;
  display: grid;
  grid-template-columns: 58px minmax(0, 1fr) 20px;
  gap: 14px;
  align-items: center;
  min-height: 92px;
  padding: 14px 0;
  border-bottom: 1px solid var(--border);
  color: var(--text);
  text-decoration: none;
  transition: background-color .18s ease, transform .18s ease;
}

.organism-news-row:last-child {
  border-bottom: 0;
}

.organism-news-row:hover {
  color: var(--text);
  background: rgba(var(--news-rgb), .025);
}

.organism-news-row:focus-visible {
  outline: 3px solid rgba(var(--news-rgb), .28);
  outline-offset: 3px;
  border-radius: 8px;
}

.organism-news-row.content-type-job-pool {
  --news-color: #079669;
  --news-rgb: 7, 150, 105;
}

.organism-news-row.content-type-exam {
  --news-color: #7c3aed;
  --news-rgb: 124, 58, 237;
}

.organism-news-row.content-type-public-offer {
  --news-color: #ea6500;
  --news-rgb: 234, 101, 0;
}

.organism-news-date {
  display: grid;
  min-height: 66px;
  align-content: center;
  justify-items: center;
  border: 1px solid rgba(var(--news-rgb), .12);
  border-radius: 10px;
  background: rgba(var(--news-rgb), .1);
  color: var(--news-color);
  line-height: 1;
}

.organism-news-date strong {
  font-size: 24px;
  font-weight: 850;
}

.organism-news-date span {
  margin-top: 5px;
  font-size: 11px;
  font-weight: 850;
}

.organism-news-row__content {
  display: flex;
  min-width: 0;
  flex-direction: column;
  align-items: flex-start;
  gap: 5px;
}

.organism-news-badge {
  max-width: 100%;
  padding: 3px 8px;
  overflow: hidden;
  border-radius: 999px;
  background: rgba(var(--news-rgb), .1);
  color: var(--news-color);
  font-size: 10px;
  font-weight: 850;
  line-height: 1.25;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Ficha sidebar Novedades only (never the standalone "todas las novedades"
   page, which keeps its own larger `.organism-news-page` sizing below) --
   the date box gives up some of its width so title/process text can use it. */
.organism-side-card .organism-news-row {
  grid-template-columns: 50px minmax(0, 1fr) 20px;
}

.organism-side-card .organism-news-date {
  min-height: 56px;
}

.organism-side-card .organism-news-date strong {
  font-size: 20px;
  font-weight: 750;
}

.organism-side-card .organism-news-date span {
  margin-top: 4px;
  font-size: 10px;
  font-weight: 700;
}

.organism-side-card .organism-news-badge {
  padding: 2px 7px;
}

.organism-news-list .organism-news-row__title {
  display: -webkit-box;
  overflow: hidden;
  color: var(--text);
  font-size: 14px;
  font-weight: 800;
  line-height: 1.35;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}

.organism-news-row__type {
  color: var(--text-secondary);
  font-size: 11px;
  line-height: 1.3;
}

.organism-news-row__arrow {
  color: var(--text);
  font-size: 28px;
  line-height: 1;
  text-align: right;
}

.organism-news-empty {
  padding: 18px 0 4px;
}

.organism-news-empty strong {
  display: block;
  line-height: 1.4;
}

.organism-news-empty p {
  margin: 6px 0 14px;
  color: var(--text-secondary);
  font-size: 13px;
  line-height: 1.5;
}

.organism-news-page-hero {
  padding-block: 30px 34px;
}

.organism-news-page {
  width: min(100%, 980px);
  margin-inline: auto;
}

.organism-news-page .organism-news-row {
  grid-template-columns: 72px minmax(0, 1fr) 24px;
  min-height: 112px;
  padding: 18px 8px;
}

.organism-news-page .organism-news-date {
  min-height: 78px;
}

.organism-news-page .organism-news-row__title {
  font-size: 17px;
  -webkit-line-clamp: 2;
}

.organism-news-page .organism-news-row__type {
  font-size: 13px;
}

.organism-news-page .organism-news-badge {
  font-size: 11px;
}

.organism-news-page .organism-section__head p {
  margin: 5px 0 0;
  color: var(--text-secondary);
}

.organism-news-pagination {
  margin-top: 22px;
}

.organism-collab-card {
  overflow: hidden;
  background: linear-gradient(145deg, rgba(30, 99, 255, .08), rgba(16, 185, 129, .04) 60%, #fff);
}

.organism-collab-card__icon {
  display: grid;
  width: 42px;
  height: 42px;
  margin-bottom: 12px;
  place-items: center;
  border-radius: 50%;
  background: var(--primary);
  color: #fff;
  font-size: 26px;
  font-weight: 500;
}

.organism-collab-card p {
  margin: 10px 0 16px;
  color: var(--text-secondary);
  line-height: 1.55;
}

.organism-collab-card__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

/* Full-width placement near the end of the page: same card, same colors,
   same icon/copy/actions -- just laid out as a compact horizontal strip
   instead of a tall stacked sidebar block, since it now has the whole
   content width available. */
.organism-collab-card--full {
  display: flex;
  align-items: center;
  gap: 18px;
}

.organism-collab-card--full .organism-collab-card__icon {
  margin-bottom: 0;
}

.organism-collab-card--full .organism-collab-card__copy {
  flex: 1 1 320px;
  min-width: 0;
}

.organism-collab-card--full .organism-collab-card__actions {
  flex: 0 0 auto;
}

@media (max-width: 620px) {
  .organism-collab-card--full {
    flex-wrap: wrap;
  }

  .organism-collab-card--full .organism-collab-card__actions {
    flex: 1 1 100%;
  }

  .organism-collab-card--full .organism-collab-card__actions .btn {
    flex: 1 1 auto;
  }
}

@media (max-width: 1120px) {
  .organism-detail-hero__card,
  .organism-detail-row {
    grid-template-columns: 1fr;
  }

  .organism-hero__aside {
    grid-template-columns: minmax(0, 1fr) minmax(280px, .8fr);
    align-items: start;
  }
}

@media (max-width: 520px) {
  .organism-news-row,
  .organism-news-page .organism-news-row {
    grid-template-columns: 52px minmax(0, 1fr) 16px;
    gap: 10px;
    min-height: 86px;
    padding: 12px 0;
  }

  .organism-news-date,
  .organism-news-page .organism-news-date {
    min-height: 60px;
  }

  .organism-news-date strong {
    font-size: 20px;
  }

  .organism-news-row__title,
  .organism-news-page .organism-news-row__title {
    font-size: 13px;
    -webkit-line-clamp: 3;
  }

  .organism-news-row__arrow {
    font-size: 22px;
  }
}

@media (max-width: 780px) {
  .organism-hero__logo {
    width: 92px;
    height: 92px;
  }

  .organism-hero__aside {
    grid-template-columns: 1fr;
  }

  .organism-staff-panel {
    align-items: stretch;
    flex-direction: column;
  }

  .organism-staff-panel__actions {
    justify-content: flex-start;
  }

  .organism-latest-card .organism-activity-row {
    grid-template-columns: 112px minmax(0, 1fr);
    align-items: start;
  }

  .organism-oep-row {
    grid-template-columns: 82px minmax(0, 1fr);
    align-items: start;
  }

  .organism-oep-row__year {
    grid-row: 1 / span 3;
  }

  .organism-oep-row__main,
  .organism-oep-row__metrics,
  .organism-oep-row__actions {
    grid-column: 2;
  }

  .organism-oep-row__actions {
    justify-content: flex-start;
  }

  .organism-activity-row__date {
    grid-row: 1 / span 3;
  }

  .organism-activity-row__main,
  .organism-activity-row__status,
  .organism-activity-row__actions {
    grid-column: 2;
  }

  .organism-activity-row__actions {
    justify-content: flex-start;
  }

}

@media (max-width: 560px) {
  .organism-hero__identity {
    flex-direction: column;
    align-items: flex-start;
    gap: 14px;
  }

  .organism-hero__logo {
    width: 76px;
    height: 76px;
  }

  .organism-detail-actions {
    grid-template-columns: 1fr;
  }

  .organism-detail-hero__card {
    padding: 18px;
  }

  .organism-hero-sources__links {
    display: grid;
    grid-template-columns: 1fr;
  }

  .organism-hero-sources__links a {
    justify-content: space-between;
    min-height: 42px;
  }

  .organism-detail-hero {
    padding-top: 16px;
  }

  .organism-detail-hero .organism-hero__topline {
    margin-bottom: 10px;
  }

  .organism-detail-metrics {
    padding: 6px 12px;
  }

  .organism-detail-metrics .organism-metric {
    grid-template-columns: 36px max-content minmax(0, 1fr);
    gap: 8px;
    min-height: 52px;
    padding: 7px 0;
  }

  .organism-detail-metrics .organism-metric .organism-metric__icon {
    grid-column: 1;
    grid-row: 1;
  }

  .organism-detail-metrics .organism-metric strong {
    grid-column: 2;
    grid-row: 1;
  }

  .organism-detail-metrics .organism-metric > span:last-child {
    grid-column: 3;
    grid-row: 1;
  }

  .organism-follow-card__actions {
    display: grid;
    padding-left: 0;
  }

  .organism-follow-card__actions .btn,
  .organism-follow-card__actions form {
    width: 100%;
  }

  .organism-follow-card__login {
    min-height: 34px;
    padding: 8px;
    text-align: center;
  }

  .organism-staff-panel__actions,
  .organism-staff-panel__actions .btn,
  .organism-staff-panel__actions form {
    width: 100%;
  }

  .organism-detail-metrics .organism-metric strong {
    font-size: 18px;
  }

  .organism-detail-metrics .organism-metric > span:last-child {
    font-size: 13px;
  }

  .organism-latest-card__header {
    align-items: flex-start;
  }

  .organism-latest-card__icon {
    width: 38px;
    height: 38px;
  }

  .organism-latest-card__title h2 {
    font-size: 17px;
  }

  a.organism-latest-card__all {
    font-size: 14px;
  }

  .organism-latest-card .organism-activity-row {
    grid-template-columns: 1fr;
    gap: 10px;
    padding: 13px;
  }

  .organism-oep-row {
    grid-template-columns: 1fr;
    gap: 11px;
    padding: 13px;
  }

  .organism-oep-row__year,
  .organism-oep-row__main,
  .organism-oep-row__metrics,
  .organism-oep-row__actions {
    grid-column: 1;
    grid-row: auto;
  }

  .organism-oep-row__year {
    min-height: 52px;
  }

  .organism-oep-row__actions .organism-row-action {
    width: 100%;
  }

  .organism-activity-row__date,
  .organism-activity-row__main,
  .organism-activity-row__status,
  .organism-activity-row__actions {
    grid-column: 1;
    grid-row: auto;
  }

  .organism-latest-card .organism-row-action {
    width: 100%;
  }

  .organism-latest-empty__icon {
    width: 36px;
    height: 36px;
  }

  .organism-latest-empty__actions {
    flex: 1 1 100%;
    align-items: stretch;
    flex-direction: column;
  }

  .organism-latest-empty__actions .btn {
    width: 100%;
  }
}

/* ======================================================================
   Shared summary-card component (organism process/section pages).
   Reuses the ficha's .organism-metrics-card / .organism-metric visual
   language. Kept generic (no "oposiciones"-only coupling) so /bolsas/ and
   /examenes/ can reuse the exact same partial + styles later.
   ====================================================================== */

/* The right rail now holds only the 4-row status card + "Actualizado el"
   ("También en {organismo}" moved to the content area, above the tabs), so
   it is short enough to align naturally with the left column -- no
   align-items override, no artificial padding. Just a slightly narrower
   rail so the H1 column gets more width (fewer line breaks), and a small
   trim of the card padding. Page-scoped so the ficha is untouched. */
.organism-process-hero-v2 .organism-hero__card {
  grid-template-columns: minmax(0, 1fr) minmax(272px, 296px);
  column-gap: 26px;
  padding: 24px;
}

/* Keep the ficha's single-column collapse (this page-scoped rule is more
   specific than the shared media rules, so it has to repeat it). */
@media (max-width: 1120px) {
  .organism-process-hero-v2 .organism-hero__card { grid-template-columns: 1fr; }
}

.organism-detail-hero.organism-process-hero-v2 {
  padding-bottom: 24px;
}

.organism-process-hero-v2 h1 {
  max-width: none;
}

.organism-process-hero-v2__actions .btn {
  min-height: 44px;
  width: auto;
}

/* Rail = status card + "Actualizado el" line, always one column. */
.organism-process-aside { grid-template-columns: 1fr; gap: 12px; }

/* "También en {organismo}" -- compact horizontal strip in the content area,
   between the hero and the tabs. Reuses .organism-metric__icon + the tone
   colours; each item is fully clickable. */
.organism-related-strip-wrap {
  display: grid;
  gap: 8px;
}

.organism-related-strip__title {
  margin: 0;
  padding-left: 2px;
  color: var(--text-secondary);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.02em;
  text-transform: uppercase;
}

.organism-related-strip {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.organism-related-strip__item {
  display: inline-grid;
  grid-template-columns: 34px auto auto;
  gap: 9px;
  align-items: center;
  flex: 0 1 auto;
  min-height: 54px;
  padding: 9px 14px 9px 11px;
  border: 1px solid var(--border);
  border-radius: 13px;
  background: rgba(255, 255, 255, 0.92);
  box-shadow: 0 6px 16px rgba(2, 17, 48, 0.04);
  color: var(--text);
  text-decoration: none;
  transition: border-color .18s ease, box-shadow .18s ease, background-color .18s ease;
}

a.organism-related-strip__item:hover {
  border-color: rgba(30, 99, 255, 0.4);
  background: #fff;
  box-shadow: 0 10px 24px rgba(30, 99, 255, 0.1);
}

a.organism-related-strip__item:focus-visible {
  outline: 3px solid rgba(30, 99, 255, 0.35);
  outline-offset: 2px;
}

.organism-related-strip__item strong {
  font-size: clamp(18px, 1.5vw, 21px);
  font-weight: 900;
  line-height: 1;
  white-space: nowrap;
}

.organism-related-strip__item > span:last-child {
  color: var(--text-secondary);
  font-size: 13px;
  font-weight: 800;
  line-height: 1.2;
  white-space: nowrap;
}

a.organism-related-strip__item:hover > span:last-child { color: var(--primary); }

@media (max-width: 640px) {
  /* Full-width rows, same layout as the status-card rows: icon | number |
     label, label left-aligned filling the rest. */
  .organism-related-strip__item {
    flex: 1 1 100%;
    grid-template-columns: 34px max-content minmax(0, 1fr);
    justify-content: start;
  }

  .organism-related-strip__item > span:last-child {
    white-space: normal;
  }
}

/* Mirrors the ficha's .organism-detail-metrics exactly (same paddings, row
   height, 3-col grid, and inherited number/label typography from
   .organism-metrics-card). 4 rows -- no values tuned for a taller card. */
.organism-summary-card {
  width: 100%;
  padding: 8px 14px;
}

.organism-summary-card .organism-metric {
  grid-template-columns: 38px max-content minmax(0, 1fr);
  gap: 10px;
  min-height: 56px;
  padding: 8px 0;
}

.organism-summary-card .organism-metric strong {
  white-space: nowrap;
}

.organism-summary-card a.organism-metric:focus-visible {
  outline: 3px solid rgba(30, 99, 255, 0.35);
  outline-offset: -2px;
  border-radius: 8px;
}

/* Extra tones (blue/green/purple/orange already defined above). */
.organism-metric--amber .organism-metric__icon { color: #b45309; }
.organism-metric--slate .organism-metric__icon { color: #64748b; }

/* "Por año" navigation, standalone between the tabs and the search box
   (only shown when there are >=2 years with their own indexable annual
   page). No border-top/padding-top -- it is not inside a card here. */
.organism-process-years--standalone {
  margin: 0;
  padding-top: 0;
  border-top: 0;
}

/* Secondary line under the two empty-state buttons (extra links, lighter). */
.organism-process-empty__note {
  margin-top: 12px;
  font-size: 13px;
  color: var(--text-secondary);
}

@media (max-width: 760px) {
  /* Same as the ficha's .organism-detail-metrics mobile rules: keep the
     one-line icon | number | label layout, just tighter. Explicit
     grid-column on each child because the shared .organism-metrics-card
     base has mobile rules of matching specificity. */
  .organism-summary-card {
    padding: 6px 12px;
  }

  .organism-summary-card .organism-metric {
    grid-template-columns: 36px max-content minmax(0, 1fr);
    gap: 8px;
    min-height: 52px;
    padding: 7px 0;
  }

  .organism-summary-card .organism-metric .organism-metric__icon {
    grid-column: 1;
    grid-row: 1;
  }

  .organism-summary-card .organism-metric strong {
    grid-column: 2;
    grid-row: 1;
    font-size: 18px;
  }

  .organism-summary-card .organism-metric > span:last-child {
    grid-column: 3;
    grid-row: 1;
    font-size: 13px;
  }
}

/* ======================================================================
   /organismos/<slug>/oposiciones/ (y /bolsas/): panel de filtros más
   compacto + variante de result-card para el contexto "dentro de un
   organismo" (sin escudo ni nombre de organismo repetidos, plazas y
   estado con más peso). Los listados globales usan su propia card.
   ====================================================================== */

/* ---- Panel de filtros: menos alto, "Limpiar" secundario ---- */
.organism-process-filter-panel {
  padding: 14px 18px;
}

.organism-process-filter-panel__heading {
  display: block;
}

.organism-process-filter-panel__heading h2 {
  margin: 0;
  font-size: 16px;
}

.organism-process-filter-panel__heading p {
  margin: 3px 0 0;
  font-size: 12.5px;
}

.organism-process-filters {
  margin-top: 12px;
}

.organism-process-filter__actions {
  align-items: center;
  gap: 10px;
}

.organism-process-filter__clear {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 6px 8px;
  color: var(--text-secondary);
  font-size: 13px;
  font-weight: 700;
  text-decoration: underline;
  text-underline-offset: 2px;
}

.organism-process-filter__clear:hover,
.organism-process-filter__clear:focus-visible {
  color: var(--primary);
}

/* Divisor antes de "Más filtros": más ligero (el propio summary ya
   marca la separación). */
.organism-process-advanced-filters {
  margin-top: 6px;
  padding-top: 0;
  border-top: 0;
}

.organism-process-advanced-filters summary {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 44px;
  padding: 4px 2px;
  color: var(--text-secondary);
}

/* Estado / Nivel / Tipo de plaza triggers: 44px touch target (the shared
   .filter-multi__trigger base is ~37px; only the exam page bumped it). */
.organism-process-filters .filter-multi__trigger {
  min-height: 44px;
}

.organism-process-advanced-filters[open] summary {
  color: var(--primary);
}

/* ---- Variante de card dentro de un organismo ---- */
.public-results-list--org {
  gap: 10px;
}

.result-card--org {
  grid-template-columns: minmax(0, 1fr) minmax(150px, max-content);
  gap: 16px;
  align-items: stretch;
  padding: 16px 18px;
}

.result-card--org .result-card__body {
  grid-template-columns: minmax(0, 1fr) minmax(190px, 0.42fr);
  gap: 16px;
  align-items: start;
}

.result-card--org .result-card__title {
  font-size: 16px;
  margin-bottom: 8px;
}

.result-card--org .result-card__chips {
  margin-top: 0;
  gap: 6px;
}

.result-card--org .result-card__chips--secondary {
  margin-top: 6px;
}

.result-card--org .result-card__chips--secondary .pill {
  font-size: 11px;
  padding: 2px 8px;
}

.result-card--org .result-card__aside {
  display: grid;
  gap: 8px;
  align-content: start;
}

.result-card--org .result-card__meta {
  gap: 8px 14px;
}

/* Enlace a la publicación oficial: mismo lenguaje que "Enlaces oficiales"
   de la ficha (.organism-hero-sources__links a). El "related-link" (p. ej.
   "Convocatoria relacionada" en la card de examen) reutiliza exactamente el
   mismo tratamiento, pero es un enlace INTERNO (sin ↗ ni pestaña nueva). */
.result-card__official-link,
.result-card__related-link {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  align-self: start;
  min-height: 36px;
  padding: 7px 10px;
  border: 1px solid rgba(30, 99, 255, .2);
  border-radius: 9px;
  background: rgba(255, 255, 255, .78);
  color: var(--primary);
  font-size: 12px;
  font-weight: 800;
  line-height: 1.25;
  text-decoration: none;
  transition: background-color .18s ease, border-color .18s ease, box-shadow .18s ease;
}

.result-card__official-link svg,
.result-card__related-link svg {
  width: 15px;
  height: 15px;
  flex: 0 0 15px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.result-card__official-link:hover,
.result-card__official-link:focus-visible,
.result-card__related-link:hover,
.result-card__related-link:focus-visible {
  border-color: rgba(30, 99, 255, .48);
  background: #fff;
  box-shadow: 0 6px 16px rgba(30, 99, 255, .1);
}

.result-card__official-link:focus-visible,
.result-card__related-link:focus-visible {
  outline: 3px solid rgba(30, 99, 255, .2);
  outline-offset: 2px;
}

/* Pills: número de plazas con protagonismo; estado agrupado en 3 familias
   visuales (mismo lenguaje que la card de estado del hero). */
.pill--plazas {
  border-color: rgba(30, 99, 255, .3);
  background: rgba(30, 99, 255, .1);
  color: var(--primary);
  font-weight: 900;
}

.pill--estado--abierto {
  border-color: rgba(34, 197, 94, .42);
  background: rgba(34, 197, 94, .16);
  color: #047854;
}

.pill--estado--tramite {
  border-color: rgba(180, 83, 9, .34);
  background: rgba(245, 158, 11, .16);
  color: #b45309;
}

.pill--estado--finalizada {
  border-color: rgba(148, 163, 184, .4);
  background: rgba(148, 163, 184, .16);
  color: #475569;
}

/* Acciones: "Ver detalle" principal, "Seguir" outline compacto con icono
   de marcador. */
.result-card--org .result-card__actions {
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  align-content: center;
  gap: 8px;
  min-width: 0;
}

.result-card--org .result-card__actions form {
  margin: 0;
  display: flex;
}

.result-card--org .result-card__actions .btn,
.result-card--org .result-card__actions .result-card__follow {
  width: auto;
}

.result-card__follow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-height: 44px;
  padding: 8px 14px;
  border: 1px solid var(--border);
  border-radius: 9px;
  background: #fff;
  color: var(--text-secondary);
  font-size: 13px;
  font-weight: 800;
  line-height: 1;
  cursor: pointer;
  text-decoration: none;
  transition: border-color .16s ease, color .16s ease, background-color .16s ease;
}

.result-card__follow svg {
  width: 15px;
  height: 15px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linejoin: round;
}

.result-card__follow:hover,
.result-card__follow:focus-visible {
  border-color: rgba(30, 99, 255, .4);
  color: var(--primary);
  background: rgba(30, 99, 255, .05);
}

.result-card__follow:focus-visible {
  outline: 3px solid rgba(30, 99, 255, .25);
  outline-offset: 2px;
}

.result-card__follow.is-following {
  border-color: rgba(34, 197, 94, .45);
  color: #047854;
  background: rgba(34, 197, 94, .08);
}

.result-card__follow.is-following svg {
  fill: currentColor;
}

.result-card--org .result-card__detail {
  min-height: 44px;
  white-space: nowrap;
}

@media (max-width: 1080px) {
  .result-card--org {
    grid-template-columns: 1fr;
  }

  .result-card--org .result-card__body {
    grid-template-columns: 1fr;
  }

  .result-card--org .result-card__actions {
    justify-content: flex-start;
  }
}

@media (max-width: 600px) {
  .result-card--org .result-card__actions {
    width: 100%;
    justify-content: flex-start;
  }

  .result-card--org .result-card__actions form {
    flex: 0 0 auto;
  }

  .result-card--org .result-card__actions .result-card__detail {
    flex: 1 1 auto;
    justify-content: center;
  }
}
