﻿/* =====================================================
   results.css â€” taula, cal-mini, lloc, cobla, accions
   ===================================================== */

/* Ressalt de la cerca global (topbar `q`) dins de les cel·les de resultats */
mark.global-search-highlight {
  background: rgba(255, 237, 0, 0.88);
  color: inherit;
  font: inherit;
  padding: 0 0.02em;
  border-radius: 2px;
  box-decoration-break: clone;
}

.no-top-margin {
  margin-top: 0;
}

.cal-mini svg,
.cal-mini svg * {
  fill: currentColor;
  stroke: currentColor;
}

/* ----- Chips de filtres actius (dins .results-header; sense bloc separat) ----- */

.active-filters-chips {
  flex-basis: 100%;
  width: 100%;
  margin: 0;
  padding: calc(var(--space-2) * var(--chips-desktop-scale)) 0 0;
  display: flex;
  flex-flow: row wrap;
  align-items: flex-start;
  align-content: flex-start;
  gap: calc(6px * var(--chips-desktop-scale));
  border: none;
  background: transparent;
}

.active-filter-chip {
  display: inline-flex;
  align-items: center;
  gap: calc(2px * var(--chips-desktop-scale));
  max-width: 100%;
  padding: calc(3px * var(--chips-desktop-scale)) calc(6px * var(--chips-desktop-scale))
    calc(3px * var(--chips-desktop-scale)) calc(8px * var(--chips-desktop-scale));
  border-radius: calc(var(--radius-chip) * var(--chips-desktop-scale));
  background: color-mix(in srgb, rgb(var(--color-primary-rgb)) 10%, var(--card));
  border: calc(1px * var(--chips-desktop-scale)) solid
    color-mix(in srgb, rgb(var(--color-primary-rgb)) 22%, var(--card));
  font-family: var(--font-ui);
  font-size: calc(var(--font-sm) * var(--chips-desktop-scale));
  line-height: 1.35;
  color: var(--ink);
  transition: background 0.12s ease, border-color 0.12s ease;
}

.active-filter-chip:hover {
  background: color-mix(in srgb, rgb(var(--color-primary-rgb)) 16%, var(--card));
}

.active-filter-chip--global {
  background: color-mix(in srgb, rgb(var(--color-primary-rgb)) 18%, var(--card));
  border-color: color-mix(in srgb, rgb(var(--color-primary-rgb)) 34%, var(--card));
}

.active-filter-chip--global:hover {
  background: color-mix(in srgb, rgb(var(--color-primary-rgb)) 24%, var(--card));
}

.active-filter-chip__label {
  font-weight: 700;
  color: var(--color-primary-strong);
  white-space: nowrap;
  flex-shrink: 0;
}

.active-filter-chip__value {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  min-width: 0;
}

.active-filter-chip__remove {
  all: unset;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: calc(18px * var(--chips-desktop-scale));
  height: calc(18px * var(--chips-desktop-scale));
  margin-left: calc(2px * var(--chips-desktop-scale));
  border-radius: 50%;
  font-size: calc(14px * var(--chips-desktop-scale));
  font-weight: 700;
  line-height: 1;
  color: rgba(var(--chip-icon-rgb), 0.72);
  cursor: pointer;
  transition: background 0.1s ease, color 0.1s ease;
}

.active-filter-chip__remove:hover {
  background: rgba(var(--ink-rgb), 0.1);
  color: var(--ink);
}

.active-filter-chip__remove:focus-visible {
  outline: calc(2px * var(--chips-desktop-scale)) solid rgba(var(--color-form-focus-rgb), 0.64);
  outline-offset: calc(1px * var(--chips-desktop-scale));
}

/*
 * Alçada compartida entre `.agenda-bar-chip` i `.active-filter-chip`:
 * els filtres actius tenen botó × 18×18px; sense aquest mínim la barra superior queda més baixa.
 */
.active-filter-chip,
.agenda-bar-chip {
  box-sizing: border-box;
  min-height: calc((6px + 18px + 2px) * var(--chips-desktop-scale));
}

/* ----- Embolcall de resultats ----- */

.results-header {
  padding: 11px 14px;
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-3);
  border-bottom: 1px solid var(--border-subtle);
}

.results-count {
  font-family: var(--font-ui);
  font-weight: 900;
  color: var(--color-primary-strong);
  letter-spacing: 0.2px;
  white-space: nowrap;
  flex-shrink: 0;
}

/* ----- Fil d'Ariadna (breadcrumb) ----- */

.results-breadcrumb {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 5px;
  font-family: var(--font-ui);
  font-weight: 900;
  letter-spacing: 0.2px;
  min-width: 0;
  flex: 1;
}

.results-breadcrumb .bc-section {
  color: var(--color-primary-strong);
  white-space: nowrap;
}

.results-breadcrumb .bc-sep {
  color: var(--muted);
  flex-shrink: 0;
}

.results-breadcrumb .bc-sub {
  color: var(--muted);
}

/* ----- Embolcall de taula + taula base ----- */

.table-wrap {
  padding: 0 10px 10px;
  overflow: hidden;
}

table {
  border-collapse: separate;
  border-spacing: 0;
  background: var(--cal-soft, var(--card));
  table-layout: auto;
}

col.col-day {
  width: 70px;
}

col.col-time {
  min-width: 70px;
}

thead th {
  background: var(--cal-soft, var(--card));
  border-bottom: 1px solid var(--line);
  font-family: var(--font-ui);
  font-size: var(--font-sm);
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-weight: 900;
  padding: 10px 12px;
  white-space: nowrap;
  vertical-align: top;
  user-select: none;
}

#section-cataleg thead th.sortable-th {
  white-space: normal;
}

#section-cataleg .sortable-th-inner {
  display: inline-flex;
  align-items: center;
  justify-content: flex-start;
  flex-wrap: nowrap;
  gap: 2px;
  width: 100%;
  min-width: 0;
}

#section-cataleg .sortable-th-label {
  text-transform: uppercase;
  letter-spacing: 0.08em;
  flex: 0 1 auto;
  min-width: 0;
}

#section-cataleg .sortable-th-btns {
  display: inline-flex;
  flex-direction: row;
  align-items: center;
  gap: 0;
  flex-shrink: 0;
  margin: 0;
  padding: 0;
}

#section-cataleg .sort-btn {
  display: block;
  font-size: 15px;
  line-height: 1;
  padding: 0;
  min-width: 0;
  min-height: 0;
  margin: 0;
  border: none;
  border-radius: 0;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  opacity: 0.5;
}

#section-cataleg .sort-btn + .sort-btn {
  margin-left: -5px;
}

#section-cataleg .sort-btn:hover {
  opacity: 1;
  color: var(--text-strong);
  background: var(--filter-option-hover-bg);
}

#section-cataleg .sort-btn.is-active {
  opacity: 1;
  color: var(--color-primary);
  background: transparent;
  font-weight: 900;
}

/* Mode Â«TÃ­tol i autorÂ»: sense subfila ni botons dâ€™ordenaciÃ³ a la capÃ§alera */
#section-cataleg[data-mostrar="titol-autor"] .sortable-th-btns {
  display: none;
}

.th-cobles-short {
  display: none;
}

.th-place-combined {
  display: none;
}

/* Contingut de cobla clonat dins col-place per a la vista <521px (ocultat per defecte) */
.cobla-inline {
  display: none;
}

tbody td {
  border-bottom: 1px solid var(--line-strong);
  padding: 8px 10px;
  vertical-align: top;
  font-family: var(--font-ui);
  font-size: var(--font-xl);
  line-height: 1.18;
  overflow-wrap: anywhere;
  word-break: break-word;
}

td.col-cobla {
  position: relative;
  padding-bottom: 50px;
}

.cobla-name {
  font-weight: 700;
  font-family: var(--font-ui);
  letter-spacing: 0.2px;
  color: var(--text-strong);
  font-size: var(--font-xl);
}

td.col-cobla .cobla-actions {
  position: absolute;
  right: 10px;
  bottom: 10px;
  width: calc(100% - 20px);
  display: flex;
  justify-content: flex-end;
  pointer-events: none;
}

td.col-cobla .cobla-actions .actions {
  pointer-events: auto;
}

th.col-day,
td.col-day {
  width: 70px;
}

td.col-day,
td.col-time {
  vertical-align: top;
}

#section-agenda td.col-day {
  padding-top: 3px;
  padding-bottom: 3px;
  padding-left: 10px;
  padding-right: 10px;
}

/* ----- cal-mini component ----- */

.cal-mini {
  width: 70px;
  border-radius: 0;
  border: 0;
  overflow: hidden;
  /* Transparent: la cel·la (hover de fila) es veu; el tint del tipus és només a .top */
  background: transparent;
  cursor: default;
  box-shadow: none;
  margin: 0 auto;
  text-align: center;
  display: flex;
  flex-direction: column;
  gap: 0;
}

/* Data (setmana, dia): damunt del tipus; sense fons propi; el tint només a .top */
.cal-mini-date {
  background: transparent;
  display: flex;
  flex-direction: column;
  gap: 0;
}

.cal-mini .top {
  color: var(--cal-main);
  font-family: var(--font-ui);
  font-weight: 900;
  font-size: var(--font-xs);
  padding: 4px 6px;
  line-height: 1;
  text-transform: lowercase;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-1);
  text-align: center;
  flex-wrap: wrap;
  margin-top: 0;
  flex-shrink: 0;
  background: transparent;
}

.cal-mini .top .type-ico svg,
.cal-mini .top .type-ico svg * {
  width: 12px;
  height: 12px;
  display: block;
  fill: currentColor;
  stroke: currentColor;
}

.cal-mini .wkrow {
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: 0;
  padding-top: 5px;
}

.cal-mini .wk {
  display: inline-block;
  font-size: var(--font-xs);
  line-height: 1;
  color: var(--muted);
  font-weight: 900;
  font-family: var(--font-ui);
  letter-spacing: 0.02em;
}

.cal-mini .mid {
  display: inline-block;
  font-family: var(--font-ui);
  font-weight: 900;
  font-size: var(--font-xl);
  line-height: 1.12;
  color: var(--text-strong);
  letter-spacing: 0.2px;
}

.cal-mini .bot {
  padding: 0 4px 5px;
  text-align: center;
  font-family: var(--font-ui);
  font-weight: 900;
  font-size: var(--font-xs);
  line-height: 1;
  color: var(--muted);
  letter-spacing: 0.02em;
  background: transparent;
}

.cal-mini .top .type-ico {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 0;
}

.cal-mini .top .type-txt {
  display: inline-block;
  white-space: nowrap;
  word-break: break-word;
  line-height: 1.05;
  max-width: 54px;
}

/* Zona de data sense segona capa de tint; el to clar és només a .top */
.cal-mini .wkrow {
  background: transparent;
}

/*
 * Tokens per tipus: tint a la franja .top (--cal-soft), color sòlid per icona i text (--cal-main).
 */
.cal-mini.type-ballada {
  --cal-main: rgb(var(--color-ballada-rgb));
  --cal-soft: color-mix(in srgb, rgb(var(--color-ballada-rgb)) 10%, white);
}

.cal-mini.type-curset {
  --cal-main: rgb(var(--color-curset-rgb));
  --cal-soft: color-mix(in srgb, rgb(var(--color-curset-rgb)) 10%, white);
}

.cal-mini.type-concert {
  --cal-main: rgb(var(--color-concert-rgb));
  --cal-soft: color-mix(in srgb, rgb(var(--color-concert-rgb)) 10%, white);
}

.cal-mini.type-concurs {
  --cal-main: rgb(var(--color-concurs-rgb));
  --cal-soft: color-mix(in srgb, rgb(var(--color-concurs-rgb)) 10%, white);
}

.cal-mini.type-aplec {
  --cal-main: rgb(var(--color-aplec-rgb));
  --cal-soft: color-mix(in srgb, rgb(var(--color-aplec-rgb)) 10%, white);
}

.cal-mini.type-altres {
  --cal-main: rgb(var(--color-altres-rgb));
  --cal-soft: color-mix(in srgb, rgb(var(--color-altres-rgb)) 10%, white);
}

/* Catàleg · Discografia: pill de suport (mateix --cal-* que l’agenda + 2 RGB a tokens) */
.cal-mini.type-suport-llibre {
  --cal-main: rgb(var(--color-aplec-rgb));
  --cal-soft: color-mix(in srgb, rgb(var(--color-aplec-rgb)) 10%, white);
}

.cal-mini.type-suport-cd {
  --cal-main: rgb(var(--color-concert-rgb));
  --cal-soft: color-mix(in srgb, rgb(var(--color-concert-rgb)) 10%, white);
}

.cal-mini.type-suport-k7 {
  --cal-main: rgb(var(--color-altres-rgb));
  --cal-soft: color-mix(in srgb, rgb(var(--color-altres-rgb)) 10%, white);
}

.cal-mini.type-suport-dvd {
  --cal-main: rgb(var(--color-curset-rgb));
  --cal-soft: color-mix(in srgb, rgb(var(--color-curset-rgb)) 10%, white);
}

.cal-mini.type-suport-lp {
  --cal-main: rgb(var(--color-ballada-rgb));
  --cal-soft: color-mix(in srgb, rgb(var(--color-ballada-rgb)) 10%, white);
}

.cal-mini.type-suport-33 {
  --cal-main: rgb(var(--color-concurs-rgb));
  --cal-soft: color-mix(in srgb, rgb(var(--color-concurs-rgb)) 10%, white);
}

.cal-mini.type-suport-78 {
  --cal-main: rgb(var(--color-suport-78-rgb));
  --cal-soft: color-mix(in srgb, rgb(var(--color-suport-78-rgb)) 10%, white);
}

.cal-mini.type-suport-pedra {
  --cal-main: rgb(var(--color-suport-pedra-rgb));
  --cal-soft: color-mix(in srgb, rgb(var(--color-suport-pedra-rgb)) 10%, white);
}

.cal-mini.type-suport-desconegut {
  --cal-main: rgb(var(--color-altres-rgb));
  --cal-soft: color-mix(in srgb, rgb(var(--color-altres-rgb)) 10%, white);
}

.cal-mini.type-ballada .top,
.cal-mini.type-curset .top,
.cal-mini.type-concert .top,
.cal-mini.type-concurs .top,
.cal-mini.type-aplec .top,
.cal-mini.type-altres .top {
  background: var(--cal-soft);
  border: none;
  border-radius: var(--radius-full);
  box-sizing: border-box;
}

/*
 * Agenda (≥521px): cal-mini absolut amb inset 3px dalt respecte a la fila; zona de data
 * sense creixement (flex:0) perquè el pill de tipus quedi just a sota del dia.
 * Padding del td a 0.
 */
@media (min-width: 521px) {
  #section-agenda td.col-day {
    position: relative;
    vertical-align: top;
    padding-top: 0;
    padding-bottom: 0;
    padding-left: 10px;
    padding-right: 10px;
  }

  #section-agenda td.col-day .cal-mini {
    position: absolute;
    left: 50%;
    margin-left: -35px;
    top: 3px;
    width: 70px;
    max-width: 70px;
    min-width: 70px;
    min-height: 0;
    display: flex;
    flex-direction: column;
    align-items: stretch;
  }

  #section-agenda .cal-mini-date {
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: stretch;
    min-height: 0;
  }

  #section-agenda .cal-mini .top {
    flex: 0 0 auto;
    align-self: stretch;
    margin-top: 4px;
    flex-wrap: nowrap;
  }

  /* Amplada prefixada de la columna Hora (taula amb comportament normal) */
  #section-agenda col.col-time {
    width: 70px;
    min-width: 70px;
  }

  #section-agenda .results-table td.col-time {
    width: 70px;
    min-width: 70px;
    max-width: 70px;
    box-sizing: border-box;
  }
}

/* ----- Camps d'hora ----- */

.time-field {
  display: block;
  padding: 0;
  border: 0;
  background: transparent;
  border-radius: 0;
  min-width: 48px;
  font-weight: 900;
  font-family: var(--font-ui);
  font-size: var(--font-xl);
  line-height: 1.12;
  color: var(--ink);
  letter-spacing: 0.2px;
}

.time-in-day {
  display: none;
  margin-top: 8px;
  font-weight: 900;
  font-family: var(--font-ui);
  font-size: var(--font-xl);
  line-height: 1.12;
  color: var(--ink);
  letter-spacing: 0.2px;
  text-align: center;
  white-space: nowrap;
}

/* ----- CelÂ·la de lloc ----- */

.place {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  line-height: 1.12;
}

.place .title {
  font-weight: 900;
  font-family: var(--font-ui);
  letter-spacing: 0.2px;
  font-size: var(--font-xl);
}

/* CatÃ leg (sardanes): el tÃ­tol va en color primari; la resta de .place .title (agenda) sense canvi */
#section-cataleg td.col-titol .place .title {
  color: var(--color-primary-strong);
}

/* CatÃ leg (persones): columna Â«NomÂ» en color primari */
#section-cataleg td.col-nom .place .title {
  color: var(--color-primary-strong);
}

/* Catàleg (persones): segona línia (tipus «franja cal-mini» + metadades) */
#section-cataleg .sub-row-line {
  /*
   * Sobre .sub-row-line global (display:flex): cada .sub-row-seg és un flex item.
   * Si el del motiu s’embolica, acupa l’ample del bloc i força un salt abans del
   * separador «·» i el segment següent. Aquí, flux de bloc: els .sub-row-seg
   * són inlines; el text continua en la mateixa “caixa d’embolcall” però sense
   * ocupar per si sol tota la fila de flex.
   */
  display: block;
}

/*
 * Persones: requadre de tipus = mateix component que a Agenda (requadre d’índex):
 * `.cal-mini` → franja única sense calendari, amb .top, type-ico, type-txt, --cal-* com .cal-mini.type-*
 * (diferències: amplada auto, fons gris, costats en semicercle com franja d’agenda; --cal de text/icona).
 */
#section-cataleg .cal-mini--solo-tipo {
  width: auto;
  min-width: 0;
  max-width: 100%;
  display: inline-flex;
  margin: 0;
  text-align: center;
  align-items: center;
  align-self: center;
  vertical-align: middle;
}

#section-cataleg .cal-mini--solo-tipo .top {
  /* Gris sòlid; vora 0; costats en semicercle (p. ex. Obligada a sardanes) */
  background-color: #e8eaed;
  border: none;
  border-radius: var(--radius-full);
  box-sizing: border-box;
  isolation: isolate;
  flex-wrap: wrap;
  align-self: center;
  justify-content: center;
  max-width: 100%;
}

/* Persones + Discografia: una mica més clar que l’Obligada, encara perceptible sobre la fila */
#section-cataleg .person-role-strip .cal-mini--solo-tipo .top,
#section-cataleg .discografia-suport-strip .cal-mini--solo-tipo .top {
  background-color: #eef0f4;
}

/* Com .chip .chip-ico: el selector global de .cal-mini .type-ico aplica fill a tots els * i tapa el traç buit */
#section-cataleg .cal-mini--solo-tipo .type-ico svg [fill="none"] {
  fill: none !important;
}

#section-cataleg .cal-mini--solo-tipo .type-txt {
  max-width: min(12rem, 100%);
  white-space: normal;
  text-align: center;
  line-height: 1.1;
  word-break: break-word;
}

/* --cal-* ve de `.cal-mini.type-aplec` / `.type-ballada` / … (mateixa paleta que l’agenda) */

#section-cataleg .person-role-strip {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.28rem;
  max-width: 100%;
}

#section-cataleg .discografia-suport-strip {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.28rem;
  max-width: 100%;
}

/* Sense separador «·» amb el text següent: marge en lloc de dins de la franja. */
#section-cataleg .person-role-strip + .sub-row-seg {
  margin-left: 0.5em;
}

#section-cataleg .discografia-suport-strip + .sub-row-seg {
  margin-left: 0.5em;
}

#section-cataleg .cataleg-discografia-suport-label {
  display: inline;
  text-transform: none;
}

#section-cataleg .sardana-obligada-strip {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.28rem;
  max-width: 100%;
}

/* Sense separador «·» amb el text següent: marge en lloc de dins de la franja. */
#section-cataleg .sardana-obligada-strip + .sub-row-seg {
  margin-left: 0.5em;
}

#section-cataleg .cataleg-sardana-obligada-label {
  display: inline;
  text-transform: none;
}

/* Acostar el text a la icona (el gap global de .cal-mini .top és 4px) */
#section-cataleg .sardana-obligada-strip .top {
  gap: 2px;
}

#section-cataleg .sardana-obligada-strip .type-txt {
  margin-left: -0.1em;
}

#section-cataleg .cataleg-tipologia-short {
  display: none;
}

#section-cataleg .cataleg-tipologia-long {
  display: inline;
}

@media (max-width: 760px) {
  /* Sardanes: pill «Obl:» en línia pròpia sota ≤760px per no xuclar la meta. */
  #section-cataleg .sub-row-line .sardana-obligada-strip {
    width: 100%;
    margin: 0.1rem 0 0.16rem;
  }

  #section-cataleg .sardana-obligada-strip + .sub-row-seg {
    margin-left: 0;
    margin-top: 0.12em;
  }

  #section-cataleg .cataleg-tipologia-long {
    display: none;
  }

  #section-cataleg .cataleg-tipologia-short {
    display: inline;
  }
}

#section-cataleg th.col-mes_info,
#section-cataleg td.col-mes_info {
  text-align: right;
}

/* Discografia · Data: amplada mínima de la pastilla desplegada (icona + «Caràtula» ajustat) */
#section-cataleg {
  --cataleg-caratula-pill-expanded: 114px;
}

/*
 * Discografia · columna Data: data a dalt; botonera «Caràtula» al peu de la cel·la (sobre el separador).
 */
#section-cataleg .results-table col.col-data,
#section-cataleg .results-table th.col-data,
#section-cataleg .results-table td.col-data {
  min-width: max(7.5rem, calc(10px + var(--cataleg-caratula-pill-expanded) + 1.25rem + 4px));
}

/* La data sempre en una sola línia */
#section-cataleg td.col-data .cobla-name {
  white-space: nowrap;
}

/*
 * Catàleg · Discografia · col-data:
 *   - Pastilla «Caràtula» ancorada al peu-dreta de la cel·la (mateix patró
 *     que «Programa»/«Mapa» a agenda, §11c d'ARCHITECTURE.md).
 *   - Pill col·lapsada (icona) en repòs i expansible al hover fins a
 *     `--cataleg-caratula-pill-expanded`. Sense forçar amplada al 100%.
 *   - El rowSpan=2 a `td.col-data--discografia-caratula-span` (JS) fa que la
 *     cel·la s'estengui sota la sub-fila, deixant espai vertical a la
 *     pastilla sense trepitjar la data ni el text de metadades.
 */
#section-cataleg td.col-data:has(.cobla-actions--caratula) {
  position: relative;
  vertical-align: top;
  padding-bottom: calc(var(--ctrl-min-height) + var(--space-3));
}

#section-cataleg td.col-data .cobla-actions--caratula {
  position: absolute;
  right: 10px;
  bottom: 10px;
  display: flex;
  justify-content: flex-end;
  pointer-events: none;
}

#section-cataleg td.col-data .cobla-actions--caratula .actions {
  pointer-events: auto;
}

/*
 * Banda d'accions del registre (sub-fila): per defecte ocupa una filera
 * pròpia dins de `.sub-row-line` (gràcies a `width: 100 %` que força el
 * salt al flex-wrap), alineada a la dreta. Aquest és el mode estret/mòbil
 * (≤520 px) per a Caràtula i Biblioteques.
 *
 * A ≥521 px:
 *   · `--caratula` s'amaga (la pastilla ja viu a col-data, §11c).
 *   · `--biblioteques` es transforma en un ancoratge absolut a la dreta
 *     del sub-row-cell, al mateix nivell vertical que el text del sub-row
 *     (vegeu el bloc més avall a `#section-cataleg td.sub-row-cell--biblioteques`).
 */
#section-cataleg .cataleg-record-actions-row {
  width: 100%;
  margin-top: var(--space-2);
  display: flex;
  justify-content: flex-end;
}

#section-cataleg .cataleg-record-actions-row .actions.button-bar {
  justify-content: flex-end;
}

/*
 * Anul·la la regla genèrica `td.sub-row-cell .cobla-actions { position: absolute; … center }`
 * (heretada del patró antic de pastilles centrades) quan el wrapper viu dins
 * d'una banda d'accions del registre: la banda ja porta el seu propi flux
 * i alineació. Sense aquest override, el cobla-actions surt del flux i queda
 * centrat sobre el text de la sub-fila.
 */
#section-cataleg .cataleg-record-actions-row .cobla-actions {
  position: static;
  left: auto;
  right: auto;
  bottom: auto;
  width: auto;
  display: flex;
  justify-content: flex-end;
  pointer-events: none;
}

@media (min-width: 521px) {
  #section-cataleg .cataleg-record-actions-row--caratula {
    display: none;
  }
}

/* Discografia: columna Data amb rowspan=2 (caràtula + sub-fila) — alinear dalt */
#section-cataleg .results-table tbody tr[data-has-subrow] td.col-data--discografia-caratula-span {
  vertical-align: top;
  /*
   * `tr[data-has-subrow] td { border-bottom: 0 }` treu el separador a totes les cel·les
   * de la fila principal; la sub-fila en `.sub-row-cell` (colspan 2) ho compensa
   * sota les dues primeres columnes, però la Data amb rowspan no en té cap altra
   * font: cal restablir el mateix 2px que .sub-row-cell / files sense sub-fila.
   */
  border-bottom: 2px solid rgba(var(--ink-rgb), 0.08);
}

/*
 * Sardanes · Obres — columna +Info:
 * Conté el botó «Particel·les» compacte ancorat a baix-dreta (mateix patró que col-data / col-cobla).
 */
#section-cataleg {
  --cataleg-particelles-pill-expanded: 136px;
  --cataleg-lletra-pill-expanded: 100px;
}

#section-cataleg .results-table col.col-mes_info,
#section-cataleg .results-table th.col-mes_info,
#section-cataleg .results-table td.col-mes_info {
  min-width: max(5rem, calc(10px + var(--cataleg-particelles-pill-expanded) + 1.25rem + 4px));
}

#section-cataleg td.col-mes_info:has(.cobla-actions--particelles),
#section-cataleg td.col-mes_info:has(.cobla-actions--lletra) {
  position: relative;
  padding-bottom: 58px;
}

#section-cataleg td.col-mes_info .cobla-actions--particelles,
#section-cataleg td.col-mes_info .cobla-actions--lletra {
  position: absolute;
  right: 10px;
  bottom: 10px;
  display: flex;
  justify-content: flex-end;
  pointer-events: none;
}

#section-cataleg td.col-mes_info .cobla-actions--particelles .actions,
#section-cataleg td.col-mes_info .cobla-actions--lletra .actions {
  pointer-events: auto;
}

/* Sardanes: +Info amb rowspan=2 (particel·les + sub-fila de metadades) — alinear dalt */
#section-cataleg .results-table tbody tr[data-has-subrow] td.col-mes_info--particelles-span {
  vertical-align: top;
  border-bottom: 2px solid rgba(var(--ink-rgb), 0.08);
}

.place .sub {
  font-size: var(--font-md);
  color: var(--muted);
  font-weight: 600;
}

/* ----- CelÂ·la de cobla ----- */

.cobla {
  font-weight: 700;
  color: var(--text-strong);
}

/* ----- Indicador Â«suspÃ¨sÂ» ----- */

.flag-suspes {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  border-radius: var(--radius-sm);
  padding: 6px 9px;
  font-weight: 900;
  font-family: var(--font-ui);
  font-size: var(--font-base);
  border: 1px solid rgba(239, 68, 68, var(--opacity-30));
  background: rgba(239, 68, 68, var(--opacity-10));
  color: #5a1111;
  white-space: nowrap;
  margin-left: 10px;
}

.flag-suspes svg {
  width: 14px;
  height: 14px;
  fill: currentColor;
}

/* ----- Accions / pill-action (mateixa famÃ­lia que .today-btn al sidebar d'agenda) ----- */

.actions {
  position: relative;
  display: flex;
  justify-content: flex-end;
  gap: var(--space-2);
  overflow: visible;
  padding-right: 2px;
}

/*
 * Barra segmentada unificada (filters.css .button-bar): sense gap entre segments,
 * vores compartides i cantonades nomÃ©s als extrems. Sobreescriu .actions { gap }.
 */
.actions.button-bar {
  gap: 0;
  background: transparent;
  display: inline-flex;
  align-items: stretch;
  justify-content: flex-end;
  box-shadow: none;
  transition: var(--ctrl-transition);
}
.actions.button-bar > .pill-action + .pill-action {
  margin-left: -1px;
}

/* Abans es posava box-shadow:none als fills per no duplicar amb la barra; el contenidor ja no té ombra. */

.pill-action {
  position: relative;
  height: var(--ctrl-min-height);
  width: var(--ctrl-min-height);
  border-radius: var(--ctrl-radius);
  border: 1px solid var(--actionable-line);
  background: var(--actionable-wash);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  font-family: var(--font-ui);
  overflow: hidden;
  white-space: nowrap;
  transform-origin: right center;
  transition:
    width 0.8s cubic-bezier(0.2, 0.9, 0.2, 1),
    border-color 0.14s ease,
    transform 0.06s ease,
    background 0.12s ease;
  padding-left: 7px;
  padding-right: 7px;
  z-index: 2;
  will-change: width;
  box-sizing: border-box;
  box-shadow: none;
  --pill-hover-w-extra: 4px;
}

/*
 * No posar fill al <svg>: heretat als path i tapa fill="none" / traÃ§os (Programa, etc.).
 * Color + fill explÃ­cit per path.
 */
.pill-action svg {
  width: 20px;
  height: 20px;
  color: inherit;
  opacity: 0.92;
  flex: 0 0 auto;
  display: block;
}

.pill-action svg path[fill="none"] {
  fill: none;
  stroke: currentColor;
}

.pill-action svg path:not([fill="none"]) {
  fill: currentColor;
}

/*
 * Programa / Compartir (data-action mapa): mateixa mida col·lapsada.
 * La icona es centra visualment via padding-left calculat (no justify-content:center,
 * perquè .txt —invisible però present en el flux flex— desplaçaria la icona fora del botó).
 *
 * L’amplada en hover és calc(var(--expand-w) + var(--pill-hover-w-extra)): la transició de .pill-action
 * interpola width entre --ctrl-min-height i aquest valor. Amb fit-content/auto la transició
 * no funciona (salt o sense animació suau).
 */
.pill-action[data-action="programa"],
.pill-action[data-action="mapa"] {
  width: var(--ctrl-min-height);
  height: var(--ctrl-min-height);
  min-width: var(--ctrl-min-height);
  padding-left: calc((var(--ctrl-min-height) - 20px) / 2);
  padding-right: 0;
  background: var(--actionable-wash);
  border-color: var(--actionable-line);
}

.pill-action[data-action="programa"] {
  --expand-w: 136px;
}

.pill-action[data-action="mapa"] {
  --expand-w: 132px;
}

/* Discografia · Caràtula: mateix patró extensible que Programa / mapa (sense data-action: actions.js) */
.pill-action.caratula-trigger {
  width: var(--ctrl-min-height);
  height: var(--ctrl-min-height);
  min-width: var(--ctrl-min-height);
  padding-left: calc((var(--ctrl-min-height) - 20px) / 2);
  padding-right: 0;
  background: var(--actionable-wash);
  border-color: var(--actionable-line);
  /* Base d'amplada desplegada; el hover real suma --pill-hover-w-extra (vegeu .pill-action:hover). */
  --expand-w: var(--cataleg-caratula-pill-expanded, 114px);
}

.pill-action[data-action="programa"]:hover,
.pill-action[data-action="mapa"]:hover {
  padding-left: 10px;
}

.pill-action.caratula-trigger:hover {
  padding-left: 8px;
  padding-right: 4px;
}

.pill-action[data-action="programa"] svg,
.pill-action[data-action="mapa"] svg,
.pill-action.pill-action--particelles svg,
.pill-action.caratula-trigger svg {
  width: 20px;
  height: 20px;
}

/* Redueix l’escòria a la dreta del text respecte al 10px+16px+10px de Programa */
#section-cataleg .pill-action.caratula-trigger .txt {
  margin-left: 8px;
}

/*
 * Particel·les: pastilla compacta expansible (icona col·lapsada, text apareix al hover cap a l'esquerra).
 * Sense data-action: actions.js intercepta [data-action] i faria preventDefault() trencant la descàrrega.
 * L'amplada expandida ha de coincidir amb --cataleg-particelles-pill-expanded (mínim de columna).
 */
.pill-action.pill-action--particelles {
  width: var(--ctrl-min-height);
  height: var(--ctrl-min-height);
  min-width: var(--ctrl-min-height);
  padding-left: calc((var(--ctrl-min-height) - 20px) / 2);
  padding-right: 0;
  background: var(--actionable-wash);
  border-color: var(--actionable-line);
  --expand-w: var(--cataleg-particelles-pill-expanded, 136px);
}

.pill-action.pill-action--particelles:hover {
  padding-left: 8px;
  padding-right: 4px;
}

#section-cataleg .pill-action.pill-action--particelles .txt {
  margin-left: 8px;
}

.pill-action.pill-action--lletra {
  width: var(--ctrl-min-height);
  height: var(--ctrl-min-height);
  min-width: var(--ctrl-min-height);
  padding-left: calc((var(--ctrl-min-height) - 20px) / 2);
  padding-right: 0;
  background: var(--actionable-wash);
  border-color: var(--actionable-line);
  --expand-w: var(--cataleg-lletra-pill-expanded, 100px);
}

.pill-action.pill-action--lletra:hover {
  padding-left: 8px;
  padding-right: 4px;
}

#section-cataleg .pill-action.pill-action--lletra .txt {
  margin-left: 8px;
}

.pill-action.pill-action--lletra svg {
  width: 20px;
  height: 20px;
}

.pill-action:hover {
  width: calc(var(--expand-w) + var(--pill-hover-w-extra));
  border-color: var(--actionable-border);
  z-index: 999;
  background-color: var(--filter-option-hover-bg);
}

.pill-action:active {
  box-shadow: none;
  transform: none;
}

.pill-action.primary {
  border-color: rgba(var(--color-accent-rgb), var(--opacity-40));
  background: #f0ebec; /* Sense transparÃ¨ncia per si ha de tapar altres elements de la taula */
}

.pill-action .txt {
  margin-right: 0;
  margin-left: 8px;
  font-family: var(--font-ui);
  font-weight: var(--ctrl-font-weight);
  font-size: var(--ctrl-font-size);
  letter-spacing: var(--ctrl-letter-spacing);
  opacity: 0;
  transform: translateX(-10px);
  transition:
    opacity 0.12s ease 0.04s,
    transform 0.8s cubic-bezier(0.2, 0.9, 0.2, 1);
  pointer-events: none;
}

.pill-action:hover .txt {
  opacity: 1;
  transform: translateX(0);
}

/* ParticelÂ·les (catÃ leg): mateixa pastilla que Programa/Mapa perÃ² sense expansiÃ³ al hover */
a.pill-action.pill-action--static {
  width: auto;
  min-width: var(--ctrl-min-height);
  height: var(--ctrl-min-height);
  --expand-w: auto;
  pointer-events: auto;
  text-decoration: none;
  align-items: center;
}

a.pill-action.pill-action--static:hover {
  width: auto;
  border-color: var(--actionable-border);
  z-index: 999;
  transform: none;
  background-color: var(--filter-option-hover-bg);
}

a.pill-action.pill-action--static .txt {
  opacity: 1;
  transform: none;
  pointer-events: auto;
  margin-left: 8px;
}

a.pill-action.pill-action--static svg {
  width: 16px;
  height: 16px;
  color: inherit;
  display: block;
}

/* Cantonades segmentades (desprÃ©s de .pill-action per guanyar el border-radius global) */
.actions.button-bar > .pill-action {
  flex: 0 0 auto;
  border-radius: 0;
}

.actions.button-bar > .pill-action:first-child {
  border-top-left-radius: var(--ctrl-radius);
  border-bottom-left-radius: var(--ctrl-radius);
}

.actions.button-bar > .pill-action:last-child {
  border-top-right-radius: var(--ctrl-radius);
  border-bottom-right-radius: var(--ctrl-radius);
}

.actions.button-bar > .pill-action:first-child:last-child {
  border-radius: var(--ctrl-radius);
}

/* ----- kv / k (camps del modal de detall) ----- */

.modal-body .kv {
  display: grid;
  grid-template-columns: 140px 1fr;
  gap: var(--space-2) 12px;
  margin-top: 12px;
  font-size: var(--font-md);
}

.modal-body .k {
  color: var(--muted);
  font-weight: 700;
}

/* ----- Sobreescriptura d'amplades de columnes de taula ----- */

col.col-time {
  width: 70px;
}

col.col-time,
col.col-place,
col.col-cobla,
col.col-autor,
col.col-mes_info {
  min-width: 0;
}

col.col-titol {
  width: 52%;
}

col.col-nom {
  width: 52%;
}

/* Catàleg persones: només columna Nom */
#section-cataleg .results-table colgroup:has(> col.col-nom:only-child) col.col-nom {
  width: 100%;
}

/* Una mica més d’aire entre fila principal i sub-fila (sardanes, persones, discografia, bibliografia) */
#section-cataleg .results-table tr.sub-row .sub-row-cell {
  padding-top: var(--space-2);
}

col.col-autor {
  width: 30%;
}

col.col-mes_info {
  width: 18%;
}

/* Catàleg > Bibliografia: any d’edició (columna estreta, capçalera i valor en una sola línia) */
#section-cataleg col.col-any_edicio {
  width: 6.25rem;
  min-width: 5.5rem;
  max-width: 8rem;
}

#section-cataleg th.col-any_edicio,
#section-cataleg td.col-any_edicio {
  white-space: nowrap;
}

#section-cataleg th.col-any_edicio .sortable-th-label {
  white-space: nowrap;
}

/*
 * Bibliografia · sub-fila amb «Biblioteques».
 *
 * Patró visual (idèntic a Caràtula a Discografia conceptualment, però sense
 * cap columna on ancorar la pastilla — bibliografia només té Títol/Autors/Any):
 *
 *   - ≤520 px (mòbil estret): banda d'accions en filera pròpia sota el text
 *     del sub-row (`.cataleg-record-actions-row--biblioteques` flueix com a
 *     bloc 100 % d'amplada gràcies a la regla per defecte de més amunt) i
 *     pastilla sempre expandida. El `.sub-row-line--biblioteques` queda en
 *     `flex-direction: column` perquè el `width: 100%` de la banda forci
 *     un nou rengle visualment net.
 *   - ≥521 px (tablet/desktop): banda ancorada absolut a la dreta del
 *     sub-row-cell, alineada al mateix nivell vertical que el text del
 *     sub-row (patró «Programa/Mapa» d'agenda). El sub-row-cell reserva
 *     `padding-right` per a la pastilla col·lapsada; en hover la pastilla
 *     creix cap a l'esquerra i tapa el text amb el seu fons sòlid
 *     (`z-index: 2`), com fa també agenda.
 */
#section-cataleg td.sub-row-cell.sub-row-cell--biblioteques {
  position: relative;
}

#section-cataleg .sub-row-line.sub-row-line--biblioteques {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  row-gap: var(--space-2);
}

#section-cataleg .sub-row-line.sub-row-line--biblioteques .sub-row-meta {
  flex: 0 0 auto;
  width: 100%;
  min-width: 0;
}

@media (min-width: 521px) {
  #section-cataleg td.sub-row-cell.sub-row-cell--biblioteques {
    /* Espai a la dreta per a la pastilla col·lapsada (44 px + marge). En hover
     * la pastilla expandida s'escampa cap a l'esquerra sobre el text (z-index). */
    padding-right: calc(var(--ctrl-min-height) + var(--space-3));
  }

  #section-cataleg .sub-row-line.sub-row-line--biblioteques {
    flex-direction: row;
    flex-wrap: wrap;
    align-items: baseline;
    row-gap: 0.2em;
  }

  #section-cataleg .sub-row-line.sub-row-line--biblioteques .sub-row-meta {
    flex: 1 1 auto;
    width: auto;
  }

  #section-cataleg .cataleg-record-actions-row--biblioteques {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    margin-top: 0;
    width: auto;
    z-index: 2;
  }
}

.pill-action.pill-action--biblioteques {
  width: var(--ctrl-min-height);
  height: var(--ctrl-min-height);
  min-width: var(--ctrl-min-height);
  padding-left: calc((var(--ctrl-min-height) - 20px) / 2);
  padding-right: 0;
  background: var(--actionable-wash);
  border-color: var(--actionable-line);
  --expand-w: 148px;
}

.pill-action.pill-action--biblioteques:hover {
  width: calc(var(--expand-w) + var(--pill-hover-w-extra));
  padding-left: 8px;
  padding-right: 4px;
}

#section-cataleg .pill-action.pill-action--biblioteques .txt {
  margin-left: 8px;
}

.table-wrap {
  overflow-x: auto;
}

table {
  width: 100%;
}

th,
td {
  min-width: 0;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.results-table {
  table-layout: auto;
  width: 100%;
}

.results-table th,
.results-table td {
  min-width: 0;
}

.results-table th:not(.col-day),
.results-table td:not(.col-day),
th:not(.col-time),
.results-table td:not(.col-time) {
  min-width: 0;
  max-width: none;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: break-word;
}

/* ----- Hover de fila ----- */

/* Fitxes en dues <tr> (p. ex. catÃ leg Sardanes / Persones): ressalta les dues alhora */
tbody tr:hover td,
tbody tr[data-has-subrow]:hover + tr.sub-row td,
tbody tr[data-has-subrow]:has(+ tr.sub-row:hover) td {
  background: var(--ui-overlay-subtle);
}

/* ----- Sobreescriptures responsives ----- */

@media (max-width: 980px) {
  .results-header {
    justify-content: space-between;
  }

  .pill-action {
    min-width: 44px;
    min-height: 44px;
    padding-left: 15px !important;
    padding-right: 15px !important;
  }

  /* Caràtula / Particel·les / Lletra / Biblioteques: centrat en col·laps; desplegament amb padding apretat a la dreta */
  #section-cataleg .pill-action.caratula-trigger,
  #section-cataleg .pill-action.pill-action--particelles,
  #section-cataleg .pill-action.pill-action--lletra,
  #section-cataleg .pill-action.pill-action--biblioteques {
    padding-left: calc((var(--ctrl-min-height) - 20px) / 2) !important;
    padding-right: 0 !important;
  }

  @media (hover: hover) and (pointer: fine) {
    #section-cataleg .pill-action.caratula-trigger:hover,
    #section-cataleg .pill-action.pill-action--particelles:hover,
    #section-cataleg .pill-action.pill-action--lletra:hover,
    #section-cataleg .pill-action.pill-action--biblioteques:hover {
      padding-left: 8px !important;
      padding-right: 4px !important;
    }
  }

  td.col-cobla {
    padding-bottom: 64px;
  }

  #section-cataleg td.col-mes_info:has(.cobla-actions--particelles),
  #section-cataleg td.col-mes_info:has(.cobla-actions--lletra) {
    padding-bottom: 64px;
  }
}

@media (max-width: 520px) {
  /* Columna Hora: s'amaga i el contingut es mostra dins col-day */
  col.col-time {
    display: none;
    width: 0;
    min-width: 0;
  }

  th.col-time,
  td.col-time {
    display: none;
  }

  .time-in-day {
    display: block;
    margin-top: 5px;
  }

  /* Primera columna (dia): just l'amplada del requadre de color (70px) + padding mÃ­nim */
  #section-agenda th.col-day,
  #section-agenda td.col-day {
    width: 78px;
    padding-left: 4px;
    padding-right: 4px;
  }

  /*
   * Agenda (<521px): columna Lloc/Activitat + Cobles combinades.
   * col-cobla s'amaga i el seu contingut apareix dins col-place com a segon paràgraf.
   * Cal limitar-ho a #section-agenda: altres taules (p. ex. estadístiques «cobles que més toquen»)
   * reutilitzen .col-cobla com a columna de text del nom de la cobla.
   */
  #section-agenda col.col-cobla {
    display: none;
    width: 0;
    min-width: 0;
  }

  #section-agenda th.col-cobla,
  #section-agenda td.col-cobla {
    display: none;
  }

  .th-place-normal {
    display: none;
  }

  .th-place-combined {
    display: inline;
  }

  .cobla-inline {
    display: block;
    margin-top: -2px;
  }

  #section-agenda td.col-place {
    position: relative;
    padding-bottom: 64px;
  }

  #section-agenda td.col-place .cobla-inline .cobla-actions {
    position: absolute;
    right: 10px;
    bottom: 10px;
    width: calc(100% - 20px);
    display: flex;
    justify-content: flex-end;
    pointer-events: none;
  }

  #section-agenda td.col-place .cobla-inline .cobla-actions .actions {
    pointer-events: auto;
  }

  /*
   * Agenda (<521px): mateix esquema que a ≥521px (fons to a .type-* .top; text/icona en --cal-main).
   */
  #section-agenda .cal-mini .top {
    color: var(--cal-main);
  }

  /* Mateixa mida que .time-in-day en aquest breakpoint (columna Hora oculta) */
  #section-agenda .cal-mini .mid {
    font-size: var(--font-md);
  }

  .time-field,
  .time-in-day {
    font-size: var(--font-md);
  }

  .place .title {
    font-size: var(--font-md);
  }

  .cobla-name {
    font-size: var(--font-md);
  }

  /* CatÃ leg: tÃ­tol, autor i +Info (.cobla-name a les dues Ãºltimes); mida sub-520 ve de les regles dâ€™adalt. */
  #section-cataleg .results-table {
    table-layout: fixed;
  }

  #section-cataleg col.col-titol {
    width: 40%;
  }

  #section-cataleg col.col-nom {
    width: 45%;
  }

  #section-cataleg col.col-autor {
    width: 40%;
  }

  #section-cataleg col.col-mes_info {
    width: 20%;
  }

  #section-cataleg col.col-any_edicio {
    width: 5.5rem;
    min-width: 4.75rem;
    max-width: 7rem;
  }

  /*
   * Catàleg · Discografia (≤520px): una columna Nom; Data i Caràtula amagades (Caràtula a la sub-fila).
   */
  #section-cataleg table[data-cataleg-sub="discografia"] col.col-comentaris,
  #section-cataleg table[data-cataleg-sub="discografia"] col.col-data,
  #section-cataleg table[data-cataleg-sub="discografia"] th.col-comentaris,
  #section-cataleg table[data-cataleg-sub="discografia"] th.col-data,
  #section-cataleg table[data-cataleg-sub="discografia"] td.col-comentaris,
  #section-cataleg table[data-cataleg-sub="discografia"] td.col-data {
    display: none;
    width: 0;
    min-width: 0;
    max-width: 0;
    padding: 0;
    border: none;
  }

  #section-cataleg table[data-cataleg-sub="discografia"] col.col-nom {
    width: 100%;
  }

  /*
   * Catàleg · Bibliografia (≤520px): una columna Títol; Autors i Any a la sub-fila; Biblioteques a la sub-fila.
   */
  #section-cataleg table[data-cataleg-sub="bibliografia"] col.col-autors,
  #section-cataleg table[data-cataleg-sub="bibliografia"] col.col-any_edicio,
  #section-cataleg table[data-cataleg-sub="bibliografia"] th.col-autors,
  #section-cataleg table[data-cataleg-sub="bibliografia"] th.col-any_edicio,
  #section-cataleg table[data-cataleg-sub="bibliografia"] td.col-autors,
  #section-cataleg table[data-cataleg-sub="bibliografia"] td.col-any_edicio {
    display: none;
    width: 0;
    min-width: 0;
    max-width: 0;
    padding: 0;
    border: none;
  }

  #section-cataleg table[data-cataleg-sub="bibliografia"] col.col-titol {
    width: 100%;
  }

  /*
   * Banda d'accions del registre a la sub-fila (Caràtula + Biblioteques):
   * a ≤520 px la pastilla viu en una filera pròpia (no comparteix espai amb
   * altres elements), per tant es mostra **sempre expandida** (icona + text
   * visibles), alineada a la dreta. NO ocupa el 100 % de l'amplada: manté
   * el seu ample natural `--expand-w` definit per a cada variant.
   */
  #section-cataleg .cataleg-record-actions-row .pill-action.caratula-trigger,
  #section-cataleg .cataleg-record-actions-row .pill-action.pill-action--biblioteques {
    width: var(--expand-w);
    padding-left: 8px !important;
    padding-right: 4px !important;
  }

  #section-cataleg .cataleg-record-actions-row .pill-action.caratula-trigger .txt,
  #section-cataleg .cataleg-record-actions-row .pill-action.pill-action--biblioteques .txt {
    opacity: 1;
    transform: none;
  }
}

@media (min-width: 521px) {
  #section-cataleg table[data-cataleg-sub="discografia"] .discografia-mobile-inline-meta,
  #section-cataleg table[data-cataleg-sub="bibliografia"] .bibliografia-mobile-inline-meta {
    display: none !important;
  }
}

/* ----- Fila secundÃ ria de metadades (colspan N) ----- */

tr[data-has-subrow] td {
  border-bottom: 0;
  padding-bottom: 2px;
}

.sub-row-cell {
  position: relative;
  border-bottom: 1px solid var(--line-strong);
  padding: 0 10px 8px 10px;
  font-family: var(--font-ui);
  font-size: var(--font-md);
  color: var(--muted);
  font-weight: 600;
}

.sub-row-cell--particelles {
  padding-bottom: 50px;
}

/* SeparaciÃ³ entre la lÃ­nia de metadades i el botÃ³ ParticelÂ·les */
td.sub-row-cell--particelles .sub-row-line {
  margin-bottom: calc(var(--space-5) / 2);
}

td.sub-row-cell--particelles:not(:has(.sub-row-line)) {
  padding-top: calc(var(--space-4) / 2);
}

.sub-row-line {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  min-width: 0;
  row-gap: 0.2em;
}

/* El salt de línia només entre conceptes; dins d’un segment no es parteix (excepte overflow). */

/* Segments llargs (p. ex. editorials a Bibliografia) no han d'ampliar la taula; dins #section-cataleg el .sub-row-line ja usa display:block. */
#section-cataleg .sub-row-seg {
  white-space: normal;
  overflow-wrap: break-word;
  word-break: break-word;
}
.sub-row-seg {
  white-space: nowrap;
}

/* Motiu (i «altres» a persones): el segment pot ser molt llarg; sense això hereda el nowrap del pare. */
.sub-row-seg:has(> .sub-row-motiu) {
  white-space: normal;
  overflow-wrap: break-word;
  word-break: break-word;
}

.sub-row-seg:not(:last-child)::after {
  content: ' · ';
  white-space: pre;
}

td.sub-row-cell .cobla-actions {
  position: absolute;
  left: 10px;
  right: 10px;
  bottom: 10px;
  width: auto;
  display: flex;
  justify-content: center;
  pointer-events: none;
}

td.sub-row-cell .cobla-actions .actions {
  pointer-events: auto;
}

.sub-row-motiu {
  color: var(--text-strong);
  font-weight: 700;
  white-space: normal;
  overflow-wrap: break-word;
  word-break: break-word;
}

@media (hover: hover) and (pointer: fine) {
  /* Pills s'expanden horitzontalment: sense ombra ni escala addicional */
  .actions.button-bar > :is(button, a):hover {
    transform: none;
  }
}

/* â”€â”€ Els breadcrumbs nomÃ©s en escriptori â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€
   El topbar mÃ²bil ja mostra tÃ­tol de secciÃ³ + subtÃ­tol com a capÃ§alera/subcapÃ§alera.
   Amagar la filera del breadcrumb deixa intacts el toggle de filtres i el comptador. */

@media (max-width: 980px) {
  .results-breadcrumb {
    display: none;
  }
}

/* ─── Estadístiques: estil permanent dels enllaços de la taula (drill-down) ──
 * Color primari + negreta + subratllat puntejat sempre (no només en hover);
 * en hover/focus-visible, color primari fort. Patrón portat de v5 results.css. */

#section-estadistiques .results-table tbody td a {
  font-weight: 700;
  color: var(--color-primary);
  text-decoration: underline;
  text-decoration-style: dotted;
  text-underline-offset: 0.15em;
  vertical-align: baseline;
}

#section-estadistiques .results-table tbody td a:hover,
#section-estadistiques .results-table tbody td a:focus-visible {
  color: var(--color-primary-strong);
}

/* Estils del programa moguts a css/programa.css */

/* ─── Scroll infinit: sentinel com a fila invisible al final del <tbody> ─── */
/*
 * Patró portat de v5 (db-section amb .taules-scroll-sentinel). A v4 la sentinel
 * és una <tr class="scroll-sentinel-row"> amb una única <td.taules-scroll-sentinel>
 * (colspan=99), perquè un <div> solt no és fill vàlid de <tbody>. Els estils
 * neutralitzen el border i el padding heretats de `tbody td` per fer-la
 * invisible fins que es carrega la pàgina següent.
 */
tr.scroll-sentinel-row td.taules-scroll-sentinel {
  height: 1px;
  padding: 0;
  border: 0;
  pointer-events: none;
  background: transparent;
}

tr.scroll-sentinel-row td.taules-scroll-sentinel--loading {
  height: auto;
  min-height: 32px;
  padding: var(--space-2) 10px;
  font-family: var(--font-ui);
  font-size: var(--font-sm);
  color: var(--muted);
  text-align: center;
}

tr.scroll-sentinel-row td.taules-scroll-sentinel--loading::after {
  content: 'Carregant més…';
}

/* ─── Zebra per element lògic (agenda + catàleg) ───────────────────────────
 *
 * Cada element lògic pot abastar dues <tr> (fila principal + sub-row opcional).
 * Les classes .row-band-even / .row-band-odd s'apliquen des de table.view.js
 * per índex d'element (no per <tr>), de manera que main + sub-row sempre
 * comparteixen el mateix to de fons.
 *
 * Model de colors i gruixos extret de programa.css:
 *   · Fons senar  : color-mix(in srgb, rgb(--ink-rgb) 1.6%, --card)
 *   · Fons parell : --card
 *   · Hover       : color-mix(in srgb, rgb(--color-primary-rgb) 3.5%, --card)
 *   · Separadors  : 2px solid rgba(--ink-rgb, 0.08)
 */

.results-table tbody tr.row-band-even td,
.results-table tbody tr.row-band-odd td {
  transition: background-color 0.12s ease;
}

.results-table tbody tr.row-band-even td {
  background: var(--card);
}

.results-table tbody tr.row-band-odd td {
  background: color-mix(in srgb, rgb(var(--ink-rgb)) 1.6%, var(--card));
}

/* Separador entre elements: 2px (com programa.css tbody + tbody tr:first-child).
   Aplica a files sense sub-row (el border-bottom marca el final de l'element).
   Les files amb sub-row (data-has-subrow) ja tenen border-bottom:0; el separador
   cau sobre .sub-row-cell a les regles de sota. */
.results-table tbody tr.row-band-even:not([data-has-subrow]):not(.sub-row) td,
.results-table tbody tr.row-band-odd:not([data-has-subrow]):not(.sub-row) td {
  border-bottom: 2px solid rgba(var(--ink-rgb), 0.08);
}

/* Sub-row: el .sub-row-cell porta el seu propi border-bottom; es sobreescriu al 2px. */
.results-table tbody tr.sub-row.row-band-even .sub-row-cell,
.results-table tbody tr.sub-row.row-band-odd .sub-row-cell {
  border-bottom: 2px solid rgba(var(--ink-rgb), 0.08);
}

/* Primera fila de la taula: border-top de marc (com programa.css tbody:first-child tr:first-child). */
.results-table tbody tr.row-band-even:first-child td,
.results-table tbody tr.row-band-odd:first-child td {
  border-top: 2px solid rgba(var(--ink-rgb), 0.08);
}

/* Hover per element: sobreescriu el zebra i el hover genèric de tbody tr:hover td.
 * Ha de venir DESPRÉS de les regles de fons per guanyar per ordre de declaració
 * en cas d'especificitat idèntica. L'especificitat és prou alta (.results-table
 * + .row-band-X + :hover) per superar el selector genèric sense classe. */
.results-table tbody tr.row-band-even:hover td,
.results-table tbody tr.row-band-odd:hover td,
.results-table tbody tr[data-has-subrow].row-band-even:hover + tr.sub-row td,
.results-table tbody tr[data-has-subrow].row-band-odd:hover + tr.sub-row td,
.results-table tbody tr.row-band-even:has(+ tr.sub-row:hover) td,
.results-table tbody tr.row-band-odd:has(+ tr.sub-row:hover) td {
  background: color-mix(in srgb, rgb(var(--color-primary-rgb)) 3.5%, var(--card));
}

/* ─── Barra de chips de tipus d'activitat (dins .results-header, abans de .active-filters-chips) ─── */

.agenda-type-chips-bar {
  flex-basis: 100%;
  width: 100%;
  margin: 0;
  padding: calc(var(--space-2) * var(--chips-desktop-scale)) 0 0;
  display: flex;
  flex-flow: row wrap;
  align-items: flex-start;
  align-content: flex-start;
  gap: calc(6px * var(--chips-desktop-scale));
  border: none;
  background: transparent;
}

/* Mateixa tipografia i padding que `.active-filter-chip`; alçada mínima veure regla compartida més amunt */
.agenda-bar-chip {
  --bar-chip-main: rgb(var(--color-primary-rgb));
  --bar-chip-soft: color-mix(in srgb, rgb(var(--color-primary-rgb)) 10%, var(--card));
  --bar-chip-border: color-mix(in srgb, rgb(var(--color-primary-rgb)) 22%, var(--card));

  display: inline-flex;
  align-items: center;
  gap: calc(2px * var(--chips-desktop-scale));
  max-width: 100%;
  padding: calc(3px * var(--chips-desktop-scale)) calc(6px * var(--chips-desktop-scale))
    calc(3px * var(--chips-desktop-scale)) calc(8px * var(--chips-desktop-scale));
  border-radius: calc(var(--radius-chip) * var(--chips-desktop-scale));
  border: calc(1px * var(--chips-desktop-scale)) solid var(--bar-chip-border);
  background: var(--bar-chip-soft);
  font-family: var(--font-ui);
  font-size: calc(var(--font-sm) * var(--chips-desktop-scale));
  font-weight: 700;
  line-height: 1.35;
  color: var(--bar-chip-main);
  cursor: pointer;
  user-select: none;
  white-space: nowrap;
  flex-shrink: 0;
  transition:
    background 0.12s ease,
    border-color 0.12s ease,
    opacity 0.12s ease,
    filter 0.12s ease;
}

.agenda-bar-chip:active {
  transform: translateY(calc(1px * var(--chips-desktop-scale)));
}

/* Chip de dates */
.agenda-bar-chip--date {
  --bar-chip-main: var(--color-primary-strong);
  --bar-chip-soft: color-mix(in srgb, rgb(var(--color-primary-rgb)) 8%, var(--card));
  --bar-chip-border: color-mix(in srgb, rgb(var(--color-primary-rgb)) 18%, var(--card));
  color: var(--bar-chip-main);
  font-weight: 700;
}

@media (min-width: 981px) {
  .agenda-bar-chip--date {
    cursor: default;
  }
  .agenda-bar-chip--date:active {
    transform: none;
  }
}

@media (max-width: 980px) {
  .agenda-bar-chip--date:hover {
    background: color-mix(in srgb, rgb(var(--color-primary-rgb)) 16%, var(--card));
  }
}

/* Àrea d’icona mateixa alçada que el × dels `.active-filter-chip` (18px) per centrar el SVG */
.agenda-bar-chip__ico {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: calc(18px * var(--chips-desktop-scale));
  height: calc(18px * var(--chips-desktop-scale));
  line-height: 0;
}

.agenda-bar-chip__ico svg,
.agenda-bar-chip__ico svg * {
  width: calc(12px * var(--chips-desktop-scale));
  height: calc(12px * var(--chips-desktop-scale));
  fill: currentColor;
  stroke: currentColor;
}

/* Icona de calendari: només traç, sense farciment */
.agenda-bar-chip__ico--date svg,
.agenda-bar-chip__ico--date svg * {
  fill: none;
  stroke: currentColor;
}

.agenda-bar-chip__txt {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  min-width: 0;
  text-transform: lowercase;
}

.agenda-bar-chip--date .agenda-bar-chip__txt {
  text-transform: none;
}

/* Colors per tipus (reutilitzen les variables RGB dels tokens) */
.agenda-bar-chip.type-ballada {
  --bar-chip-main: rgb(var(--color-ballada-rgb));
  --bar-chip-soft: color-mix(in srgb, rgb(var(--color-ballada-rgb)) 12%, var(--card));
  --bar-chip-border: color-mix(in srgb, rgb(var(--color-ballada-rgb)) 30%, var(--card));
}
.agenda-bar-chip.type-concert {
  --bar-chip-main: rgb(var(--color-concert-rgb));
  --bar-chip-soft: color-mix(in srgb, rgb(var(--color-concert-rgb)) 12%, var(--card));
  --bar-chip-border: color-mix(in srgb, rgb(var(--color-concert-rgb)) 30%, var(--card));
}
.agenda-bar-chip.type-aplec {
  --bar-chip-main: rgb(var(--color-aplec-rgb));
  --bar-chip-soft: color-mix(in srgb, rgb(var(--color-aplec-rgb)) 12%, var(--card));
  --bar-chip-border: color-mix(in srgb, rgb(var(--color-aplec-rgb)) 30%, var(--card));
}
.agenda-bar-chip.type-concurs {
  --bar-chip-main: rgb(var(--color-concurs-rgb));
  --bar-chip-soft: color-mix(in srgb, rgb(var(--color-concurs-rgb)) 12%, var(--card));
  --bar-chip-border: color-mix(in srgb, rgb(var(--color-concurs-rgb)) 30%, var(--card));
}
.agenda-bar-chip.type-curset {
  --bar-chip-main: rgb(var(--color-curset-rgb));
  --bar-chip-soft: color-mix(in srgb, rgb(var(--color-curset-rgb)) 12%, var(--card));
  --bar-chip-border: color-mix(in srgb, rgb(var(--color-curset-rgb)) 30%, var(--card));
}
.agenda-bar-chip.type-altres {
  --bar-chip-main: rgb(var(--color-altres-rgb));
  --bar-chip-soft: color-mix(in srgb, rgb(var(--color-altres-rgb)) 12%, var(--card));
  --bar-chip-border: color-mix(in srgb, rgb(var(--color-altres-rgb)) 30%, var(--card));
}

/* Estat actiu (on): colors vius */
.agenda-bar-chip--type.on {
  color: var(--bar-chip-main);
  background: var(--bar-chip-soft);
  border-color: var(--bar-chip-border);
}

.agenda-bar-chip--type.on:hover {
  background: color-mix(in srgb, var(--bar-chip-main) 20%, var(--card));
}

/* Estat desactivat (no .on): grisos com els chips del megamenú */
.agenda-bar-chip--type:not(.on) {
  color: rgba(var(--chip-icon-rgb), var(--opacity-40));
  background: var(--calendar-day-muted-bg);
  border-color: rgba(var(--ink-rgb), var(--opacity-15));
  opacity: 0.75;
  filter: grayscale(0.3) saturate(0.5);
}

.agenda-bar-chip--type:not(.on):hover {
  opacity: 0.85;
  filter: grayscale(0.15);
  border-color: var(--actionable-border);
}
