﻿/* =====================================================
   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 ----- */

/* Capçalera de resultats (escriptori ≥981px): tot blanc (--card), breadcrumb --font-2xl.
   Compact/mòbil (≤980px): tot el header amb --results-header-bg; breadcrumb --font-2xl
   excepte mòbil estret (≤520px), --font-xl. Panell acoblat i cos de la card blancs. */
.results-header {
  padding: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-auto-rows: auto;
  align-items: stretch;
  gap: 0;
  background: var(--card);
  border-bottom: 1px solid var(--border-subtle);
  border-radius: var(--radius-xl) var(--radius-xl) 0 0;
  overflow: hidden;
}

/* Franja superior (fila 1): fil d'Ariadna + comptador.
   Grid evita el «forat» entre breadcrumb i comptador que deixava flex+gap. */
.results-header > .results-breadcrumb {
  grid-column: 1;
  grid-row: 1;
  background: var(--card);
  padding: 16px 12px 16px 18px;
  min-width: 0;
}

/* Comptador: pot ser fill directe o dins .subheader-row (display:contents a escriptori). */
.results-header .results-count {
  grid-column: 2;
  grid-row: 1;
  background: var(--card);
  padding: 16px 18px 16px 12px;
}

.results-header > .results-breadcrumb:only-child {
  grid-column: 1 / -1;
  padding-right: 18px;
}

/* Chips i resums de filtres: fons blanc de la card (no formen part de la franja). */
.results-header > .active-filters-chips,
.results-header > .results-chips-row,
.results-header > .agenda-type-chips-bar,
.results-header > [data-filter-summary] {
  grid-column: 1 / -1;
  background: var(--card);
  padding-left: 18px;
  padding-right: 18px;
}

.results-header > .active-filters-chips {
  padding-top: calc(var(--space-2) * var(--chips-desktop-scale));
  padding-bottom: calc(var(--space-2) * var(--chips-desktop-scale));
}

.results-count {
  font-family: var(--font-ui);
  font-weight: 900;
  font-size: var(--font-xl);
  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;
  column-gap: 5px;
  row-gap: 2px;
  font-family: var(--font-ui);
  font-weight: 900;
  font-size: var(--font-2xl);
  letter-spacing: 0.2px;
  min-width: 0;
  flex: 1;
}

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

/* Nivell de secció amb menú desplegable (reutilitza el megamenú / drawer).
   Reset d'estils de botó perquè es vegi com la resta del breadcrumb. */
.results-breadcrumb .bc-section--menu {
  appearance: none;
  -webkit-appearance: none;
  display: inline-flex;
  align-items: center;
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
  font: inherit;
  font-weight: inherit;
  letter-spacing: inherit;
  line-height: inherit;
  color: var(--color-primary-strong);
  cursor: pointer;
}

.results-breadcrumb .bc-section--menu .bc-section-label {
  white-space: nowrap;
}

.results-breadcrumb .bc-section--menu:hover .bc-section-label,
.results-breadcrumb .bc-section--menu:focus-visible .bc-section-label {
  text-decoration: underline;
}

.results-breadcrumb .bc-section--menu:focus-visible {
  outline: none;
}

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

/* Últim nivell (pàgina actual): color de full */
.results-breadcrumb .bc-sub {
  color: #B26477;
}

/* Subtítol amb menú (p. ex. interval de dates de l'agenda): enllaç interactiu
   amb el mateix color de full que .bc-sub. */
.results-breadcrumb .bc-sub--menu {
  appearance: none;
  -webkit-appearance: none;
  display: inline-flex;
  align-items: center;
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
  font: inherit;
  font-weight: inherit;
  letter-spacing: inherit;
  line-height: inherit;
  color: #B26477;
  cursor: pointer;
}

.results-breadcrumb .bc-sub--menu .bc-sub-label {
  white-space: nowrap;
}

.results-breadcrumb .bc-sub--menu:hover .bc-sub-label,
.results-breadcrumb .bc-sub--menu:focus-visible .bc-sub-label {
  text-decoration: underline;
}

.results-breadcrumb .bc-sub--menu:focus-visible {
  outline: none;
}

.results-breadcrumb .bc-parent {
  color: var(--color-primary-strong);
  text-decoration: none;
  white-space: nowrap;
}

.results-breadcrumb .bc-parent:hover {
  text-decoration: underline;
}

/* ----- 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-datetime {
  width: 6.25rem;
  min-width: 6.25rem;
}

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

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;
}

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

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;
}

/* Agenda: sense capçaleres de columna */
#section-agenda .agenda-table-head {
  display: none;
}

/* Agenda: estats de càrrega, error i buit */
#section-agenda td.status-loading,
#section-agenda td.status-error {
  font-size: var(--font-md);
  color: var(--muted);
  text-align: center;
  padding: var(--space-5) var(--space-3);
}

#section-agenda td.status-error {
  color: #c0392b;
}

#section-agenda tr.agenda-empty-row td.agenda-empty-cell {
  display: block;
  width: 100%;
  box-sizing: border-box;
  padding: 3.5rem var(--space-3) var(--space-5);
  border: 0;
}

#section-agenda .agenda-empty-state {
  width: 100%;
  text-align: center;
  --agenda-empty-ref: #B26477;
  --agenda-empty-ref-rgb: 178, 100, 119;
}

/* Il·lustració buit — mateix llenguatge visual que el lightbox «enllaç copiat» */
#section-agenda .agenda-empty-art {
  position: relative;
  width: 104px;
  height: 104px;
  margin: 0 auto 2.5rem;
}

#section-agenda .agenda-empty-badge {
  position: absolute;
  inset: 0;
  border-radius: var(--radius-full);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--agenda-empty-ref);
  background:
    radial-gradient(
      circle at 30% 28%,
      color-mix(in srgb, var(--agenda-empty-ref) 22%, #fff) 0%,
      color-mix(in srgb, var(--agenda-empty-ref) 10%, #fff) 55%,
      color-mix(in srgb, var(--agenda-empty-ref) 4%, #fff) 100%
    );
  box-shadow:
    inset 0 0 0 1px rgba(var(--agenda-empty-ref-rgb), 0.2),
    0 8px 22px rgba(var(--agenda-empty-ref-rgb), 0.18);
}

#section-agenda .agenda-empty-badge svg {
  filter: drop-shadow(0 2px 4px rgba(var(--agenda-empty-ref-rgb), 0.25));
}

#section-agenda .agenda-empty-ind {
  position: absolute;
  right: -2px;
  bottom: -2px;
  width: 38px;
  height: 38px;
  border-radius: var(--radius-full);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--agenda-empty-ref);
  background: color-mix(in srgb, var(--agenda-empty-ref) 8%, #fff);
  box-shadow:
    0 0 0 3px var(--card),
    0 6px 14px rgba(var(--agenda-empty-ref-rgb), 0.16);
}

#section-agenda .agenda-empty-spark {
  position: absolute;
  width: 6px;
  height: 6px;
  border-radius: var(--radius-full);
  background: var(--agenda-empty-ref);
  opacity: 0.45;
}

#section-agenda .agenda-empty-spark--a {
  top: 6px;
  left: -4px;
  width: 8px;
  height: 8px;
  background: color-mix(in srgb, var(--agenda-empty-ref) 72%, #fff);
}

#section-agenda .agenda-empty-spark--b {
  top: -2px;
  right: 14px;
  background: color-mix(in srgb, var(--agenda-empty-ref) 55%, #f5d0a8);
  opacity: 0.5;
}

#section-agenda .agenda-empty-spark--c {
  bottom: 14px;
  left: -6px;
  width: 5px;
  height: 5px;
  background: color-mix(in srgb, var(--agenda-empty-ref) 65%, #fff);
  opacity: 0.4;
}

#section-agenda .agenda-empty-text {
  margin: 0;
  font-size: var(--font-2xl);
  line-height: 1.5;
  color: var(--muted);
}

/* Agenda: amplada columna data/hora (textos llargs en poques línies) */
#section-agenda {
  --agenda-datetime-col-width: 6.25rem;
  --agenda-cell-pad-block: 10px;
  --agenda-actions-gap: var(--space-2);
}

#section-agenda tbody tr.agenda-act-row td {
  padding-top: var(--agenda-cell-pad-block);
  padding-bottom: var(--agenda-cell-pad-block);
  vertical-align: top;
}

/* Agenda: separador vertical entre columna data/hora i lloc (com .prog-num::after) */
#section-agenda tbody tr.agenda-act-row td.agenda-act-datetime {
  position: relative;
}

#section-agenda tbody tr.agenda-act-row td.agenda-act-datetime::before {
  content: '';
  position: absolute;
  right: 0;
  top: 0;
  bottom: 0;
  width: 1px;
  background: rgba(var(--ink-rgb), 0.08);
  pointer-events: none;
  z-index: 2;
}

/* Agenda: columna unificada data/hora — 3 files: data · hores · tipus */
#section-agenda td.col-datetime,
#section-agenda td.agenda-act-datetime {
  width: var(--agenda-datetime-col-width);
  min-width: var(--agenda-datetime-col-width);
  max-width: var(--agenda-datetime-col-width);
  box-sizing: border-box;
  padding-left: 8px;
  padding-right: 18px;
  vertical-align: top;
}

#section-agenda tbody tr.agenda-act-row td.agenda-act-datetime .agenda-datetime-stack {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.35rem;
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  line-height: 1.2;
  font-size: var(--font-md);
  color: #000;
  text-align: justify;
  text-justify: inter-character;
}

#section-agenda .agenda-datetime-line-ico {
  display: inline-flex;
  flex: 0 0 1em;
  align-items: center;
  justify-content: center;
  width: 1em;
  height: 1em;
  margin-top: 0.12em;
  color: inherit;
}

#section-agenda .agenda-datetime-line-ico svg {
  width: 100%;
  height: 100%;
}

#section-agenda .agenda-datetime-date-line {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 0.35em;
  width: 100%;
  font-family: var(--font-ui);
  font-weight: 600;
  font-size: inherit;
  color: inherit;
  text-align: justify;
  white-space: nowrap;
}

#section-agenda .agenda-datetime-date-line .agenda-datetime-line-ico {
  margin-top: 0;
}

#section-agenda .agenda-datetime-hours {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.2rem;
  width: 100%;
  font-weight: 600;
  font-family: var(--font-ui);
  font-size: inherit;
  line-height: 1.2;
  color: inherit;
  letter-spacing: 0.2px;
  text-align: justify;
}

#section-agenda .agenda-datetime-hour-line {
  display: flex;
  flex-wrap: nowrap;
  align-items: flex-start;
  gap: 0.35em;
  width: 100%;
  text-align: justify;
}

#section-agenda .agenda-datetime-hour-txt {
  flex: 1 1 auto;
  min-width: 0;
  text-align: justify;
  white-space: nowrap;
}

#section-agenda tbody tr.agenda-act-row td.agenda-act-datetime .agenda-datetime-tipus {
  display: flex;
  justify-content: center;
  width: 100%;
  max-width: 100%;
  margin: 0;
  overflow: visible;
}

#section-agenda .agenda-datetime-tipus .top {
  color: var(--cal-main);
  font-family: var(--font-ui);
  font-weight: 900;
  font-size: var(--font-md);
  padding: 3px 3px;
  line-height: 1.15;
  text-transform: lowercase;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.25em;
  text-align: center;
  flex-wrap: nowrap;
  width: auto;
  max-width: 100%;
  box-sizing: border-box;
  background: var(--cal-soft);
  border: none;
  border-radius: var(--radius-full);
  box-shadow: 0 0 0 2px var(--cal-soft);
}

#section-agenda .agenda-datetime-tipus .type-ico svg,
#section-agenda .agenda-datetime-tipus .type-ico svg * {
  width: 12px;
  height: 12px;
  display: block;
  fill: currentColor;
  stroke: currentColor;
  flex-shrink: 0;
}

#section-agenda .agenda-datetime-tipus .type-txt {
  display: inline-block;
  white-space: nowrap;
  line-height: 1.1;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}

#section-agenda .agenda-datetime-stack.type-ballada,
#section-agenda .agenda-datetime-tipus.type-ballada {
  --cal-main: rgb(var(--color-ballada-rgb));
  --cal-soft: color-mix(in srgb, rgb(var(--color-ballada-rgb)) 10%, white);
}
#section-agenda .agenda-datetime-stack.type-curset,
#section-agenda .agenda-datetime-tipus.type-curset {
  --cal-main: rgb(var(--color-curset-rgb));
  --cal-soft: color-mix(in srgb, rgb(var(--color-curset-rgb)) 10%, white);
}
#section-agenda .agenda-datetime-stack.type-concert,
#section-agenda .agenda-datetime-tipus.type-concert {
  --cal-main: rgb(var(--color-concert-rgb));
  --cal-soft: color-mix(in srgb, rgb(var(--color-concert-rgb)) 10%, white);
}
#section-agenda .agenda-datetime-stack.type-concurs,
#section-agenda .agenda-datetime-tipus.type-concurs {
  --cal-main: rgb(var(--color-concurs-rgb));
  --cal-soft: color-mix(in srgb, rgb(var(--color-concurs-rgb)) 10%, white);
}
#section-agenda .agenda-datetime-stack.type-aplec,
#section-agenda .agenda-datetime-tipus.type-aplec {
  --cal-main: rgb(var(--color-aplec-rgb));
  --cal-soft: color-mix(in srgb, rgb(var(--color-aplec-rgb)) 10%, white);
}
#section-agenda .agenda-datetime-stack.type-altres,
#section-agenda .agenda-datetime-tipus.type-altres {
  --cal-main: rgb(var(--color-altres-rgb));
  --cal-soft: color-mix(in srgb, rgb(var(--color-altres-rgb)) 10%, white);
}

/* Agenda: columna lloc. La barra d'accions (§11c) viu en posicionament absolut
   baix-dreta de la cel·la (el padding-bottom el reserva el bloc de §11c). */
#section-agenda tbody tr.agenda-act-row td.agenda-act-place {
  vertical-align: top;
  padding-bottom: var(--agenda-cell-pad-block);
}

#section-agenda tbody tr.agenda-act-row td.agenda-act-place > .place {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  line-height: 1.12;
}

#section-agenda .place-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.35em 0.5em;
  line-height: 1.12;
}

#section-agenda .place-head-loc {
  font-weight: 900;
  font-family: var(--font-ui);
  letter-spacing: 0.2px;
  font-size: var(--font-xl);
  color: var(--text-strong);
  min-width: 0;
}

#section-agenda .place-nom {
  font-weight: 900;
  font-family: var(--font-ui);
  font-size: var(--font-xl);
  line-height: 1.12;
  letter-spacing: 0.2px;
  color: var(--color-primary-strong);
}

#section-agenda .place-cobles {
  display: flex;
  align-items: flex-start;
  gap: 0.35em;
  min-width: 0;
  font-family: var(--font-ui);
  font-size: var(--font-md);
  font-weight: 900;
  line-height: 1.2;
  color: var(--muted);
}

#section-agenda .place-cobles-ico {
  display: inline-flex;
  flex: 0 0 1em;
  align-items: center;
  justify-content: center;
  width: 1em;
  height: 1em;
  margin-top: 0.12em;
  color: var(--muted);
}

#section-agenda .place-cobles-ico svg {
  width: 100%;
  height: 100%;
}

#section-agenda .place-cobles-text {
  min-width: 0;
  font-weight: 900;
  white-space: normal;
}

/* ----- 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;
}


/* ----- 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;
}

/* ----- 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): metadades complementàries sota la capçalera nom | tipologies */
#section-cataleg .person-row {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  min-width: 0;
}

#section-cataleg .person-row-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-3);
  min-width: 0;
}

#section-cataleg .person-row-head .place {
  flex: 1 1 auto;
  min-width: 0;
}

#section-cataleg .person-row-head .person-role-strip {
  flex: 0 1 auto;
  justify-content: flex-end;
}

#section-cataleg .person-row-meta {
  font-family: var(--font-ui);
  font-size: var(--font-md);
  color: var(--muted);
  font-weight: 600;
}

#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 clar; vora = separador de files; costats en semicercle (p. ex. Obligada a sardanes) */
  background-color: var(--cataleg-pill-bg);
  border: var(--table-separator);
  border-radius: var(--radius-full);
  box-sizing: border-box;
  isolation: isolate;
  flex-wrap: nowrap;
  align-self: center;
  justify-content: center;
  max-width: 100%;
  font-size: var(--font-md);
}

/* 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;
  /* flex-start evita que el center faci overflow simètric quan el text és llarg
     (p. ex. «Vocal i conjunt instrumental»), cosa que desplaçaria la icona a la
     dreta i cliparia el text per l'overflow:hidden del .cal-mini. */
  justify-content: flex-start;
}

#section-cataleg .sardana-obligada-strip .type-txt {
  margin-left: -0.1em;
  /* Elimina el límit de 12rem heretat de .cal-mini--solo-tipo .type-txt:
     textos llargs d'Obligada no han de quedar truncats dins el pill. */
  max-width: none;
}

#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;
}

/* ── Catàleg: botonera de registre ────────────────────────────────────────────
 *
 *   · Sardanes  → Lletra / Particel·les sota el text de Títol a la sub-fila (colspan 2)
 *   · Discogr.  → col-data (Caràtula) + banda mòbil `--caratula`
 *   · Bibliogr. → col-any_edicio (Biblioteques) + banda `--biblioteques`
 *
 * Discografia, Bibliografia i Sardanes · Obres afegeixen `col-*--has-actions` via getTdAttrs.
 */

/* Catàleg: text intern dels pills sempre en una única línia (sense word-wrap). */
#section-cataleg .pill-action,
#section-cataleg .pill-action .txt,
#section-cataleg .cal-mini--solo-tipo,
#section-cataleg .cal-mini--solo-tipo .top,
#section-cataleg .cal-mini--solo-tipo .type-txt,
#section-cataleg .cal-mini--solo-tipo .type-txt * {
  white-space: nowrap;
  overflow-wrap: normal;
  word-break: normal;
}

/* Amplades expandides dels pills (icona + text). Les llegeix button-bar-expand.js
   (nativeExpandBasePx) per al càlcul de desbordament greedy a `.results-actions`. */
#section-cataleg {
  --cataleg-caratula-pill-expanded: 81px;
  --cataleg-particelles-pill-expanded: 119px;
  --cataleg-lletra-pill-expanded: 81px;
  --cataleg-biblioteques-pill-expanded: 106px;
  --cataleg-pill-bg: var(--card);
}

#section-cataleg .results-table col.col-data,
#section-cataleg .results-table th.col-data,
#section-cataleg .results-table td.col-data {
  min-width: 7.5rem;
}

#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: 5rem;
}

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

/* Model in-cell unificat (§11c): la barra d'accions de la fila viu en un
   `.results-actions` situat sota els detalls de la sub-fila, a amplada completa i
   alineat a la dreta. El desbordament greedy (button-bar-expand.js) amaga els
   pills que no caben darrere «Més...». Comú a Sardanes · Obres, Discografia
   (Caràtula) i Bibliografia (Biblioteques). */
#section-cataleg .sub-row-cell .results-actions {
  margin-top: var(--space-2);
}

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

/* Notes (descripció de l'activitat) i lloc en cas de mal temps a la llista d'agenda */
#section-agenda .place-notes,
#section-agenda .place-mal-temps {
  display: flex;
  align-items: flex-start;
  gap: 0.35em;
  font-size: var(--font-md);
  font-weight: 600;
  line-height: 1.2;
  min-width: 0;
  color: var(--muted);
}

/* La icona fa de bullet: el text (incloent salts de línia) queda al costat, indentat */
#section-agenda .place-line-ico {
  display: inline-flex;
  flex: 0 0 1em;
  align-items: center;
  justify-content: center;
  width: 1em;
  height: 1em;
  margin-top: 0.12em;
}

#section-agenda .place-line-ico svg {
  width: 100%;
  height: 100%;
}

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

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

/* ----- Banner d'acte suspès (agenda) ----- */

#section-agenda .flag-suspes--banner {
  display: block;
  width: 100%;
  box-sizing: border-box;
  margin: 0 0 var(--space-1);
  padding: 6px 10px;
  border-radius: var(--radius-sm);
  font-weight: 700;
  font-family: var(--font-ui);
  font-size: var(--font-sm);
  line-height: 1.25;
  color: #5c4a00;
  background: color-mix(in srgb, #c8960c 14%, var(--card));
  border: 1px solid color-mix(in srgb, #c8960c 36%, transparent);
  white-space: normal;
}

/* Fila suspesa: fons de bandes diagonals fines; contingut en grayscale + opacitat. */
#section-agenda tbody tr.agenda-act-row.is-suspes.row-band-even td,
#section-agenda tbody tr.agenda-act-row.is-suspes.row-band-odd td {
  --suspes-stripe: rgba(var(--ink-rgb), 0.09);
  color: var(--muted);
  background-image: repeating-linear-gradient(
    -45deg,
    transparent 0,
    transparent 4px,
    var(--suspes-stripe) 4px,
    var(--suspes-stripe) 5px
  );
}

#section-agenda tbody tr.agenda-act-row.is-suspes.row-band-even td {
  background-color: var(--row-band-even-bg);
}

#section-agenda tbody tr.agenda-act-row.is-suspes.row-band-odd td {
  background-color: var(--row-band-odd-bg);
}

#section-agenda tbody tr.agenda-act-row.is-suspes.row-band-even:hover td,
#section-agenda tbody tr.agenda-act-row.is-suspes.row-band-odd:hover td {
  background-color: color-mix(in srgb, var(--row-band-hover-bg) 72%, var(--muted));
}

#section-agenda tbody tr.agenda-act-row.is-suspes .agenda-datetime-stack,
#section-agenda tbody tr.agenda-act-row.is-suspes .place-head,
#section-agenda tbody tr.agenda-act-row.is-suspes .place-nom,
#section-agenda tbody tr.agenda-act-row.is-suspes .place-cobles,
#section-agenda tbody tr.agenda-act-row.is-suspes .place-notes,
#section-agenda tbody tr.agenda-act-row.is-suspes .place-mal-temps,
#section-agenda tbody tr.agenda-act-row.is-suspes .results-actions__trigger {
  filter: grayscale(1);
  opacity: 0.62;
  color: var(--muted);
}

#section-agenda tbody tr.agenda-act-row.is-suspes .place-head-loc,
#section-agenda tbody tr.agenda-act-row.is-suspes .place-nom,
#section-agenda tbody tr.agenda-act-row.is-suspes .agenda-datetime-date-line,
#section-agenda tbody tr.agenda-act-row.is-suspes .agenda-datetime-hour-txt,
#section-agenda tbody tr.agenda-act-row.is-suspes .agenda-datetime-tipus .type-txt {
  color: color-mix(in srgb, var(--muted) 92%, var(--text-strong));
}

#section-agenda tbody tr.agenda-act-row.is-suspes .flag-suspes--banner {
  filter: none;
  opacity: 1;
  color: #5c4a00;
}

#section-agenda tbody tr.agenda-act-row.is-suspes .pill-action.is-disabled,
#section-agenda tbody tr.agenda-act-row.is-suspes .pill-action:disabled,
#section-agenda tbody tr.agenda-act-row.is-suspes a.pill-action.is-disabled {
  filter: grayscale(1);
  opacity: 0.45;
  pointer-events: none;
  cursor: not-allowed;
}

#section-agenda tbody tr.agenda-act-row.is-suspes .pill-action[data-action="mapa"] {
  filter: none;
  opacity: 1;
  color: var(--color-primary-strong);
  pointer-events: auto;
  cursor: pointer;
}

/* ----- 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;
}

/*
 * Cobla-actions: quan la botonera porta `.button-bar`, no reintroduir gap des
 * de `.actions { gap: var(--space-2) }` ni des d’overrides de secció. Agenda,
 * catàleg i ràdio comparteixen vores segmentades (margin-left: -1px als segments).
 */
.cobla-actions .actions.button-bar:not(:where(.results-actions *)),
td.sub-row-cell .cobla-actions .actions.button-bar:not(:where(.results-actions *)) {
  gap: 0;
}

/* 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(--bb-min-height);
  width: var(--bb-min-height);
  border-radius: var(--bb-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;
  /* Mateixa temporització que el model de button bar anterior (0.45s, sense
     retard) perquè width i text es desplacin sincronitzats al hover de fila. */
  transition:
    width 0.45s cubic-bezier(0.4, 0, 0.2, 1),
    min-width 0.45s cubic-bezier(0.4, 0, 0.2, 1),
    padding 0.45s cubic-bezier(0.4, 0, 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: var(--bb-icon-size);
  height: var(--bb-icon-size);
  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 / Mapa (Agenda): estil base. L'amplada desplegada
   (icona + text) la fixa `.results-actions` via `--expand-w`; no hi ha col·lapse. */
.pill-action[data-action="programa"],
.pill-action[data-action="mapa"],
.pill-action[data-action="agendar"],
a.pill-action.pill-action--maps {
  background: var(--actionable-wash);
  border-color: var(--actionable-line);
  text-decoration: none;
  color: inherit;
}

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

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

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

a.pill-action.pill-action--maps-lloc {
  --expand-w: 93px;
}

a.pill-action.pill-action--maps-plou {
  --expand-w: 100px;
}

a.pill-action.pill-action--maps:hover {
  border-color: var(--actionable-border);
  z-index: 999;
  background-color: var(--filter-option-hover-bg);
}

/* Discografia · Caràtula: amplada desplegada per al càlcul greedy de `.results-actions`. */
.pill-action.caratula-trigger {
  --expand-w: var(--cataleg-caratula-pill-expanded, 81px);
}

.pill-action[data-action="programa"] svg,
.pill-action[data-action="mapa"] svg,
.pill-action[data-action="agendar"] svg,
a.pill-action.pill-action--maps svg,
.pill-action.pill-action--particelles svg,
.pill-action.caratula-trigger svg {
  width: var(--bb-icon-size);
  height: var(--bb-icon-size);
}

/* ----- Dropdown «Agendar» (Afegir al calendari) ----------------------------
 * Es porta a `document.body` (portal) i es posiciona `fixed` via JS
 * (agenda-calendar-menu.view.js) per evitar el clip de la cel·la de taula.
 */
.agenda-cal-menu {
  position: fixed;
  /* Per sobre del dropdown «Accions» (z 1100) quan s'obre com a submenú mòbil. */
  z-index: 1110;
  display: flex;
  flex-direction: column;
  --agenda-cal-icon-size: calc(var(--bb-icon-size) * 1.3);
  min-width: 220px;
  padding: 6px;
  background: var(--card);
  border: 1px solid var(--actionable-line);
  border-radius: var(--ctrl-radius);
  box-shadow: var(--shadow-soft);
}

.agenda-cal-menu__heading {
  padding: 4px 12px 6px;
  color: var(--color-primary-strong);
  opacity: 0.72;
  font-family: var(--font-ui);
  font-size: 0.92em;
  font-weight: 600;
  line-height: 1.25;
  user-select: none;
}

.agenda-cal-menu__item {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 10px 12px;
  border: none;
  border-radius: calc(var(--ctrl-radius) - 2px);
  background: transparent;
  color: var(--color-primary-strong);
  font: inherit;
  font-family: var(--font-ui);
  font-weight: var(--ctrl-font-weight);
  font-size: var(--bb-font-size);
  text-align: left;
  cursor: pointer;
  transition: var(--ctrl-transition);
}

.agenda-cal-menu__item svg {
  flex: 0 0 auto;
  width: var(--agenda-cal-icon-size);
  height: var(--agenda-cal-icon-size);
  opacity: 0.92;
}

.agenda-cal-menu__item svg path[fill="none"] {
  fill: none;
  stroke: currentColor;
}

.agenda-cal-menu__item svg path:not([fill="none"]) {
  fill: currentColor;
}

.agenda-cal-menu__item:hover {
  background-color: var(--filter-option-hover-bg);
}

.agenda-cal-menu__item:focus-visible {
  outline: none;
  box-shadow: var(--focus);
}

/* Catàleg · Particel·les / Lletra: amplada desplegada (icona + text) per al
   càlcul greedy de `.results-actions`. Sense col·lapse ni expansió al hover. */
.pill-action.pill-action--particelles {
  --expand-w: var(--cataleg-particelles-pill-expanded, 119px);
}

.pill-action.pill-action--lletra {
  --expand-w: var(--cataleg-lletra-pill-expanded, 81px);
}

.pill-action.pill-action--lletra svg {
  width: var(--bb-icon-size);
  height: var(--bb-icon-size);
}

/* Feedback de hover comú (sense canvi d'amplada: els pills viuen sempre
   desplegats dins `.results-actions`). */
.pill-action:hover {
  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(--bb-font-size);
  letter-spacing: var(--ctrl-letter-spacing);
}

/* [Eliminat juny 2026] El model horitzontal segmentat «data-bb-unified» (amplada
   fixa de barra, 1 expandit + la resta col·lapsats) s'ha substituït pel model de
   columna d'accions (pila vertical desktop + dropdown mòbil). Veure el bloc
   «BARRA D'ACCIONS DE RESULTATS» al final d'aquest fitxer i ARCHITECTURE.md §11c. */

/* 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(--bb-min-height);
  height: var(--bb-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(--bb-radius);
  border-bottom-left-radius: var(--bb-radius);
}

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

.actions.button-bar > .pill-action:first-child:last-child {
  border-radius: var(--bb-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: 88px;
}

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: columna Nom a tot l'ample */
#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, 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 > Sardanes · Obres: una mica menys títol, una mica més autor */
#section-cataleg table[data-cataleg-sub='sardanes-obres'] col.col-titol {
  width: 47%;
}

#section-cataleg table[data-cataleg-sub='sardanes-obres'] col.col-autor {
  width: 35%;
}

/* 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 · Biblioteques: amplada desplegada per al càlcul greedy de `.results-actions`. */
.pill-action.pill-action--biblioteques {
  --expand-w: var(--cataleg-biblioteques-pill-expanded, 106px);
}

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

/* Refresc suau: manté les files visibles mentre arriben dades noves */
.table-wrap.results-soft-refresh {
  position: relative;
}

.table-wrap.results-soft-refresh .results-table tbody,
.table-wrap.results-soft-refresh .cards-grid,
.table-wrap.results-soft-refresh #recursos-cards-grid {
  opacity: 0.52;
  pointer-events: none;
  transition: opacity 0.15s ease;
}

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(--row-band-hover-bg);
}

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

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

  .results-header > .results-breadcrumb,
  .results-header .results-count,
  .results-header > .subheader-row,
  .results-header > .active-filters-chips,
  .results-header > .results-chips-row,
  .results-header > .agenda-type-chips-bar,
  .results-header > [data-filter-summary] {
    background: var(--results-header-bg);
  }

  /* Reserva simètrica per #scrollFabs (+3px per banda; el FAB pot solapar la card). */
  .main .table-wrap {
    padding-inline: calc(10px + 3px);
  }
}

@media (max-width: 520px) {
  .results-breadcrumb {
    font-size: var(--font-xl);
  }

  .main .table-wrap {
    padding-inline: calc(10px + 7px);
  }

  #section-agenda {
    --agenda-datetime-col-width: 6.25rem;
  }

  #section-agenda td.col-datetime,
  #section-agenda td.agenda-act-datetime {
    padding-left: 4px;
    padding-right: 18px;
  }

  #section-agenda .place-head-loc,
  #section-agenda .place-nom {
    font-size: var(--font-md);
  }

  #section-agenda .agenda-datetime-hours {
    white-space: normal;
  }

  /* 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 table[data-cataleg-sub='sardanes-obres'] col.col-titol {
    width: 35%;
  }

  #section-cataleg table[data-cataleg-sub='sardanes-obres'] col.col-autor {
    width: 45%;
  }

  #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%;
  }
}

@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-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;
}

.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;
  }
}

/* El fil d'Ariadna ara és transversal i visible a TOTS els modes (la disposició
   mòbil de .results-header viu a css/filters-docked.css). */

/* ─── 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.
 *
 * Colors: tokens.css (--row-band-even-bg, --row-band-odd-bg, --row-band-hover-bg).
 * Separadors: --table-separator.
 */

.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(--row-band-even-bg);
}

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

/* Separador entre elements: 1px (alineat amb separadors verticals de columna).
   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: var(--table-separator);
}

/* Sub-row: el .sub-row-cell porta el seu propi border-bottom. */
.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: var(--table-separator);
}

/* Primera fila de la taula: border-top de marc. */
.results-table tbody tr.row-band-even:first-child td,
.results-table tbody tr.row-band-odd:first-child td {
  border-top: var(--table-separator);
}

/* 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: var(--row-band-hover-bg);
}

/* ─── Fila unificada de chips a l'agenda (tipus + filtres actius, mateix gap) ─── */

.results-chips-row {
  --results-chips-gap: calc(6px * var(--chips-desktop-scale));
  flex-basis: 100%;
  width: 100%;
  margin: 0;
  /* Padding vertical simètric (sides els posa `.results-header > …`). Mateix
     ritme que `.active-filters-chips` per coherència entre seccions. */
  padding: calc(var(--space-2) * var(--chips-desktop-scale)) 0;
  display: flex;
  flex-flow: row wrap;
  align-items: flex-start;
  align-content: flex-start;
  gap: var(--results-chips-gap);
  border: none;
  background: transparent;
}

/* Els contenidors interns no generen caixa: tots els chips són fills directes de la fila */
.results-chips-row > .agenda-type-chips-bar,
.results-chips-row > .active-filters-chips {
  display: contents;
}

/* ─── Barra de chips de tipus d'activitat (dins .results-chips-row a l'agenda) ─── */

/* 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);
}

/* ============================================================================
   BARRA D'ACCIONS DE RESULTATS — model in-cell per amplada (juny 2026)
   Veure ARCHITECTURE.md §11c.

   Un sol model per a totes les amplades (desktop i mòbil): el `.results-actions`
   viu dins una cel·la de contingut existent. Els pills es mostren sempre
   desplegats (icona + text), alineats a la dreta, com a segments d'una única
   `.actions.button-bar` (vores compartides, cantonades només als extrems).
   L'algorisme greedy de `js/ui/button-bar-expand.js` determina quants caben a
   l'amplada actual de la cel·la; els que no caben reben `pill-action--bb-overflow`
   (display:none) i apareixen al dropdown «Més...» (`.results-actions__trigger`,
   visible quan `.results-actions--overflow`, darrer segment de la barra).

   La botonera mai condiciona l'amplada de la cel·la: `.results-actions` és
   width:100% i els pills sobrants simplement s'amaguen.
   ========================================================================== */

/* Contenidor — s'adapta a l'amplada de la cel·la pare, sense desbordar. */
.results-actions {
  display: flex;
  flex-direction: row;
  align-items: stretch;
  justify-content: flex-end;
  gap: 0;
  width: 100%;
  min-width: 0;
  overflow: hidden;
}

/* El `.cobla-actions` segueix sent el wrapper canònic §11c per a delegació
   de clics; es resetegen els posicionaments absoluts del model antic. */
.results-actions .cobla-actions {
  position: static;
  left: auto;
  right: auto;
  bottom: auto;
  width: auto;
  flex: 0 0 auto;
  display: flex;
  justify-content: flex-end;
  min-width: 0;
  pointer-events: none;
}
.results-actions .cobla-actions .actions {
  pointer-events: auto;
}

/* Barra segmentada horitzontal (mateix patró que `.actions.button-bar` global). */
.results-actions .actions.button-bar,
.results-actions .cobla-actions .actions.button-bar {
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: stretch;
  justify-content: flex-end;
  gap: 0;
  width: auto;
  min-width: 0;
  max-width: none;
  padding-right: 0;
}

.results-actions .actions.button-bar > .pill-action + .results-actions__trigger {
  margin-left: -1px;
}

/* Pills sempre desplegats (icona + text) — el greedy decideix quants es mostren.
   Cantonades segmentades: regles `.actions.button-bar > .pill-action` (més amunt). */
.results-actions .actions.button-bar > .pill-action {
  width: var(--expand-w, auto);
  min-width: 0;
  padding-left: 8px;
  padding-right: 4px;
  overflow: hidden;
}

.results-actions .actions.button-bar > .pill-action.pill-action--particelles,
.results-actions .actions.button-bar > .pill-action.pill-action--lletra {
  padding-right: 10px;
}

/*
 * Sense overflow el trigger «Més...» roman al DOM (display:none) com a darrer fill
 * i cap pill no és :last-child. El darrer pill visible és nth-last-child(2).
 */
.results-actions:not(.results-actions--overflow)
  .actions.button-bar
  > .pill-action:nth-last-child(2) {
  border-top-right-radius: var(--bb-radius);
  border-bottom-right-radius: var(--bb-radius);
}

.results-actions:not(.results-actions--overflow)
  .actions.button-bar
  > .pill-action:first-child:nth-last-child(2) {
  border-radius: var(--bb-radius);
}

.results-actions .actions.button-bar > .pill-action .txt {
  opacity: 1;
  transform: none;
  transition: none;
}

/* Pills que no caben (marcats per JS): fora del flux. */
.pill-action--bb-overflow {
  display: none !important;
}

/* Pills accionables deshabilitats s'amaguen; l'informatiu «Sense captura» no. */
.results-actions .actions.button-bar > .pill-action.is-disabled:not(.pill-action--no-capture),
.results-actions .actions.button-bar > .pill-action.pill-action--static {
  display: none;
}

/* Trigger «Més...»: darrer segment de la barra quan hi ha overflow. */
.results-actions__trigger {
  display: none;
  flex: 0 0 auto;
  align-items: center;
  gap: 7px;
  height: var(--bb-min-height);
  padding: 0 10px 0 8px;
  border: 1px solid var(--actionable-line);
  border-radius: var(--bb-radius);
  background: var(--actionable-active);
  color: var(--color-primary-strong);
  font-family: var(--font-ui);
  font-weight: var(--ctrl-font-weight);
  font-size: var(--bb-font-size);
  letter-spacing: var(--ctrl-letter-spacing);
  cursor: pointer;
  white-space: nowrap;
  transition: var(--ctrl-transition);
  position: relative;
  z-index: 0;
  box-sizing: border-box;
  box-shadow: none;
}

.results-actions__trigger:hover {
  border-color: var(--actionable-border);
  z-index: 999;
  background-color: var(--filter-option-hover-bg);
}

.results-actions--overflow .results-actions__trigger {
  display: inline-flex;
  border-radius: 0;
  border-top-right-radius: var(--bb-radius);
  border-bottom-right-radius: var(--bb-radius);
}

/* Cap pill visible: el trigger és l'únic segment (cantonades completes). */
.results-actions--overflow.results-actions--trigger-solo .results-actions__trigger {
  margin-left: 0;
  border-radius: var(--bb-radius);
}

.results-actions__trigger-caret {
  width: 0;
  height: 0;
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  border-top: 6px solid currentColor;
  transition: transform 0.18s ease;
}

.results-actions__trigger[aria-expanded="true"] .results-actions__trigger-caret {
  transform: rotate(180deg);
}

/* Agenda · cel·la Lloc: la barra d'accions va al peu, sota el contingut del lloc. */
#section-agenda tbody tr.agenda-act-row td.agenda-act-place {
  padding-bottom: calc(var(--bb-min-height) + var(--agenda-cell-pad-block) + var(--agenda-actions-gap));
  position: relative;
}

#section-agenda tbody tr.agenda-act-row td.agenda-act-place .results-actions {
  position: absolute;
  right: 10px;
  bottom: var(--agenda-cell-pad-block);
  width: calc(100% - 20px);
  max-width: calc(100% - 20px);
  pointer-events: none;
}

#section-agenda tbody tr.agenda-act-row td.agenda-act-place .results-actions__trigger,
#section-agenda tbody tr.agenda-act-row td.agenda-act-place .results-actions .cobla-actions {
  pointer-events: auto;
}

/* Dropdown «Accions» (portal a <body>, posicionat `fixed` via JS) */
.results-actions-menu {
  position: fixed;
  z-index: 1100;
  display: flex;
  flex-direction: column;
  min-width: 200px;
  max-width: min(86vw, 320px);
  padding: 6px;
  background: var(--card);
  border: 1px solid var(--actionable-line);
  border-radius: var(--ctrl-radius);
  box-shadow: var(--shadow-soft);
}

.results-actions-menu__item {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 10px 12px;
  border: none;
  border-radius: calc(var(--ctrl-radius) - 2px);
  background: transparent;
  color: var(--color-primary-strong);
  font: inherit;
  font-family: var(--font-ui);
  font-weight: var(--ctrl-font-weight);
  font-size: var(--bb-font-size);
  text-align: left;
  text-decoration: none;
  cursor: pointer;
  transition: var(--ctrl-transition);
}

.results-actions-menu__item svg {
  flex: 0 0 auto;
  width: var(--bb-icon-size);
  height: var(--bb-icon-size);
  opacity: 0.92;
}

.results-actions-menu__item svg path[fill="none"] {
  fill: none;
  stroke: currentColor;
}

.results-actions-menu__item svg path:not([fill="none"]) {
  fill: currentColor;
}

.results-actions-menu__item:hover {
  background-color: var(--filter-option-hover-bg);
}

.results-actions-menu__item:focus-visible {
  outline: none;
  box-shadow: var(--focus);
}
