/* EXEDCP · disposició de les pantalles del pressupost (producció, lectura i administració).
   Els tokens i els components comuns són a premium.css (EXE Glass, R11): aquí només hi ha el que
   és propi de cada pantalla. Una regla, un cop. */

/* Passos del pressupost (P22): centrats com el semàfor de Holded i les fases del lead (una sola pell):
   el número a sobre, el nom a sota i un traç verd fins al pas on ets. */
.passos { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); margin: 0 0 var(--e6); padding: 0 0 var(--e5); border-bottom: 1px solid var(--linia); list-style: none; }
.pas { position: relative; display: flex; justify-content: center; min-width: 0; color: var(--tinta-3); font-size: 14px; font-weight: 500; text-align: center; }
.pas + .pas::before, .pas + .pas::after { position: absolute; top: 13px; left: calc(-50% + 22px); width: calc(100% - 44px); height: 2px; border-radius: 1px; background: var(--linia); content: ""; }
.pas + :is(.pas--fet, .pas--actual)::after { background: var(--exe-verd); transform-origin: 0 50%; }
.pas a { display: flex; flex-direction: column; align-items: center; gap: var(--e2); padding: 0 var(--e2); border-radius: 10px; color: inherit; }
.pas a:hover { color: var(--tinta); text-decoration: none; }
.pas a:hover .pas__numero { box-shadow: inset 0 0 0 1.5px var(--exe-verd); color: var(--exe-verd); }
.pas__numero { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 50%; background: var(--fons); box-shadow: inset 0 0 0 1.5px var(--linia-forta); font-size: 13px; font-weight: 600; font-variant-numeric: tabular-nums; transition: box-shadow var(--d-2), color var(--d-2), transform var(--d-1) var(--corba-resposta); }
.pas a:active .pas__numero { transform: scale(0.92); }
.pas--actual { color: var(--tinta); font-weight: 600; }
.pas--actual .pas__numero, .pas--actual a:hover .pas__numero { background: var(--exe-verd); box-shadow: 0 0 0 4px rgb(0 128 124 / 14%), 0 2px 6px rgb(0 128 124 / 35%); color: #fff; }
.pas--fet { color: var(--tinta-2); }
.pas--fet .pas__numero { box-shadow: inset 0 0 0 1.5px rgb(0 128 124 / 55%); color: var(--exe-verd); }
@media (max-width: 640px) {
  .pas { font-size: 12px; line-height: 1.3; }
  .pas a { padding: 0 2px; }
}

/* Esquelet comú dels quatre passos de producció. */
.capcalera-pas { margin-bottom: var(--e4); }
.capcalera-pas p { margin-top: 6px; }
.seccio > .titol-seccio { margin-bottom: var(--e5); }
#projecte + *, #files-externes + #resums, #blocs + #resums { margin-top: var(--e7); }
#projecte .dada-lectura { margin: 0; overflow-wrap: anywhere; }
#projecte > .text-ajuda { margin-bottom: var(--e5); }
.formulari-camp { display: contents; }
main, #marc-contenut { overflow-anchor: none; }
:target { scroll-margin-top: calc(var(--alcada-capcalera) + var(--e5)); }
#dcp-conflicte { display: flex; flex-wrap: wrap; align-items: center; gap: var(--e3); margin-bottom: var(--e5); }
#dcp-conflicte[hidden] { display: none; }
#dcp-conflicte .boto, .fragment-estat [data-fragment-error] .boto { flex-shrink: 0; }

/* Resums del pas: un sol total i files ordenades, amb barres que creixen. */
.resums { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: var(--e4) 0; align-items: stretch; }
.bloc-plegable__cos > .resums > .targeta { padding: var(--e2) var(--e5); border-radius: 0; background: none; box-shadow: none; }
.bloc-plegable__cos > .resums > .targeta + .targeta { box-shadow: -1px 0 0 var(--linia); }
.resum__titol { margin-bottom: var(--e2); color: var(--tinta-3); font-size: 12px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; }
.resum__llista { display: flex; flex-direction: column; gap: var(--e3); margin: 0; padding: 0; list-style: none; }
.resum__fila { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: baseline; column-gap: var(--e3); font-size: 14px; }
.resum__etiqueta { min-width: 0; }
.resum__valor { font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
.resum__tarifa { display: block; color: var(--tinta-3); font-size: 12px; font-weight: 400; }
.resum__cost { min-width: 88px; color: var(--tinta-2); font-weight: 400; text-align: right; }
.resum__barra { display: block; width: 100%; height: 4px; margin-top: var(--e1); border: 0; border-radius: 2px; background: var(--exe-verd-clar); appearance: none; transform-origin: 0 50%; animation: creix 700ms var(--corba-surt) 120ms both; }
.resum__barra::-webkit-meter-bar { height: 4px; border: 0; border-radius: 2px; background: var(--exe-verd-clar); }
.resum__barra::-webkit-meter-optimum-value { border-radius: 2px; background: var(--exe-verd); }
.resum__barra::-moz-meter-bar { border-radius: 2px; background: var(--exe-verd); }
#resums .resum__fila { white-space: nowrap; }
#resums .resum__fila > span:first-child { overflow: hidden; text-overflow: ellipsis; }
#resums > .bloc-plegable + .seccio, .resum-dcp + .seccio { margin-top: var(--e7); }
[data-resum-mes] > summary { margin-top: var(--e2); }
.detalls__previsualitzacio { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.detalls__previsualitzacio[hidden] { display: none; }
.detalls__previsualitzacio + .detalls { margin-top: var(--e2); }
@media (max-width: 640px) {
  .resums { grid-template-columns: minmax(0, 1fr); }
  .bloc-plegable__cos > .resums > .targeta { padding: var(--e3) var(--e2); }
  .bloc-plegable__cos > .resums > .targeta + .targeta { box-shadow: 0 -1px 0 var(--linia); }
}

/* Lectura del pressupost */
.lectura-resum > .avis { margin-top: var(--e5); }
.lectura-resum > .avis + .seccio, .lectura-resum .torna-llista { margin-top: var(--e7); }
.lectura-resum > .avis + .resum-dcp { margin-top: var(--e5); }
.taula .nota-lectura td { padding-top: var(--e2); padding-bottom: var(--e3); }
.seccio > p:is(.text-ajuda, .camp__ajuda) + *, .marc-costos > div > p:is(.text-ajuda, .camp__ajuda) + *,
.seccio > .avis + :not(.seccio), .targeta > .avis + :not(.seccio), .avis + :is(.taula, .graella-2, .targeta:not(.seccio)), .seccio > p + .taula { margin-top: var(--e4); }
.avis + .seccio { margin-top: var(--e7); }
/* R14-31: casella obligatòria del diàleg d'aprovar («L'oferta va en…»). */
.casella-confirma { display: flex; align-items: flex-start; gap: var(--e2); margin-top: var(--e3); font-size: 14px; font-weight: 600; }
.casella-confirma input { flex: none; width: 18px; height: 18px; margin: 1px 0 0; }
/* R14-05: el missatge d'Administració, a dalt dels passos mentre el pressupost és retornat. */
.franja-retorn { display: grid; gap: var(--e1); margin-bottom: var(--e5); }
.franja-retorn p { margin: 0; }
.franja-retorn__qui { color: var(--tinta-3); font-variant-numeric: tabular-nums; }
.franja-retorn__missatge { color: var(--tinta); white-space: pre-line; overflow-wrap: anywhere; }
.avis + table[class="taula"], .avis + .taula { margin-top: var(--e3); }

/* Taula editable: els controls semblen text fins que tenen el focus. */
.taula-edicio td { padding: 0 var(--e1); }
.taula-edicio th { padding-right: var(--e2); padding-left: var(--e2); }
.taula-edicio td.num { padding-right: var(--e2); }
.taula-interns { table-layout: fixed; }
.taula-interns .text-cella { overflow: hidden; line-height: 1.3; text-overflow: ellipsis; white-space: nowrap; }
textarea.control-cella { height: auto; min-height: 64px; padding: var(--e2); line-height: 1.55; resize: vertical; }
textarea[data-autosize] { overflow-y: hidden; }
.col-accions { width: 8%; }
.taula-externs, .taula-externs-lectura { table-layout: fixed; width: 100%; }
.col-extern-tipus { width: 15%; }
.col-extern-persona { width: 19%; }
.col-extern-concepte { width: 30%; }
.col-extern-import { width: 12%; }
.col-extern-servei { width: 17%; }

/* Navegador de serveis del pas 2 (14/10/2026), estil Finder: cerca a dalt i dues columnes
   (famílies | serveis) sempre visibles, amb alçada fixa perquè la pàgina no salti. */
.navegador-serveis { margin-bottom: var(--e5); overflow: hidden; border-radius: var(--radi-targeta); background: var(--fons); box-shadow: 0 0 0 1px var(--linia), var(--ombra-1); transition: box-shadow var(--d-3) var(--corba-molla); }
.navegador-serveis:focus-within { box-shadow: 0 0 0 1px var(--exe-verd), var(--anell-focus), var(--ombra-1); }
.navegador-serveis__barra { position: relative; display: flex; align-items: center; gap: var(--e2); height: 44px; padding: 0 var(--e3); border-bottom: 1px solid var(--linia); color: var(--tinta-3); }
.navegador-serveis__barra input { flex: 1; min-width: 0; height: 32px; padding: 0; border: 0; background: transparent; color: var(--tinta); font: inherit; font-size: 14px; outline: none; }
.navegador-serveis__barra input::placeholder { color: var(--tinta-3); }
.navegador-serveis__barra input::-webkit-search-cancel-button { cursor: pointer; }
.navegador-serveis__barra input:is(:focus, :focus-visible) { border: 0; outline: none; box-shadow: none; }
.navegador-serveis__barra :is(.carrega, .fragment-estat) { flex: none; }
.navegador-serveis__barra .htmx-indicator { font-size: 12px; }
.navegador-serveis__barra [data-fragment-error] { position: absolute; top: 100%; right: 0; left: 0; z-index: 2; margin: 0; border-radius: 0; }
.navegador-serveis__columnes { display: grid; grid-template-columns: fit-content(50%) minmax(0, 1fr); height: 236px; }
.navegador-serveis__families, .navegador-serveis__serveis { min-width: 0; overflow-y: auto; overscroll-behavior: auto; }
.navegador-serveis__families { border-right: 1px solid var(--linia); background: var(--fons-suau); }
.navegador-serveis__titol { position: sticky; top: 0; z-index: 1; margin: 0; padding: var(--e2) var(--e3) var(--e1); overflow: hidden; background: inherit; color: var(--tinta-3); font-size: 11px; font-weight: 600; letter-spacing: 0.04em; text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; }
.navegador-serveis__serveis .navegador-serveis__titol { background: var(--fons); }
.navegador-serveis [role="tablist"], .navegador-serveis__serveis ul { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1px; margin: 0; padding: 0 var(--e1) var(--e2); list-style: none; }
.navegador-serveis [data-familia], .navegador-serveis .cercador__opcio { display: flex; align-items: center; gap: var(--e2); width: 100%; height: 28px; padding: 0 var(--e2); border: 0; border-radius: 7px; background: transparent; color: var(--tinta); font: inherit; font-size: 13px; text-align: left; cursor: pointer; transition: background-color var(--d-1); }
.navegador-serveis [data-familia] .icona, .navegador-serveis .cercador__opcio .icona { flex: none; color: var(--tinta-3); }
.navegador-serveis [data-familia] [data-familia-nom] { flex: 1; min-width: 0; white-space: nowrap; }
.navegador-serveis [data-familia]:hover { background: var(--ressalt); }
.navegador-serveis [data-familia][aria-selected="true"] { background: var(--exe-verd); box-shadow: inset 0 1px 0 rgb(255 255 255 / 18%); color: #fff; }
.navegador-serveis [data-familia][aria-selected="true"] .icona { color: #fff; }
.navegador-serveis:has(#cerca-servei:not(:placeholder-shown)) [data-familia][aria-selected="true"] { background: var(--linia); color: var(--tinta); }
.navegador-serveis:has(#cerca-servei:not(:placeholder-shown)) [data-familia][aria-selected="true"] .icona { color: var(--tinta-3); }
.navegador-serveis [data-familia]:focus-visible, .navegador-serveis .cercador__opcio:focus-visible { outline: 2px solid var(--exe-verd); outline-offset: -2px; }
.navegador-serveis .cercador__codi { flex: none; width: 72px; color: var(--tinta-2); font-size: 12px; font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
.navegador-serveis .cercador__nom { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.navegador-serveis .cercador__opcio > .icona:last-child { color: var(--exe-verd); opacity: 0; transform: translateX(-3px); transition: opacity var(--d-2), transform var(--d-2) var(--corba-surt); }
.navegador-serveis .cercador__opcio:hover, .navegador-serveis .cercador__opcio:focus-visible { background: rgb(0 128 124 / 9%); color: var(--exe-verd-fosc); }
.navegador-serveis .cercador__opcio:hover > .icona:last-child, .navegador-serveis .cercador__opcio:focus-visible > .icona:last-child { opacity: 1; transform: none; }
.navegador-serveis .cercador__opcio:disabled { cursor: default; opacity: 0.5; }
.navegador-serveis .cercador__familia { padding: var(--e2) var(--e2) var(--e1); color: var(--tinta-3); font-size: 11px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; }
.navegador-serveis .text-ajuda { padding: var(--e2); color: var(--tinta-3); font-size: 13px; }
@media (max-width: 700px) {
  .navegador-serveis__columnes { grid-template-columns: 1fr; height: auto; }
  .navegador-serveis__families { max-height: 160px; border-right: 0; border-bottom: 1px solid var(--linia); }
  .navegador-serveis__serveis { max-height: 240px; }
}

/* Serveis del pas 2 (14/10/2026): un sol bloc jeràrquic, com la llista del Finder. Una capçalera de
   columnes; cada servei és una fila de grup (codi, nom, fase, hores, accions) amb les seves tasques a
   sota i «Afegeix una persona» al peu. Controls sense vora fins al hover. */
.serveis-bloc { --sagnat: 32px; --text-camp: calc(var(--e1) + var(--e2) + 1px); --hores-dreta: calc(var(--e2) + var(--e2) + 1px); margin-top: var(--e4); overflow: hidden; border: 1px solid var(--linia); border-radius: var(--radi-targeta); background: var(--fons); box-shadow: var(--ombra-1); font-size: 13px; }
.serveis-bloc:not(:has(.servei-grup)) { border-style: dashed; box-shadow: none; }
.serveis-bloc:not(:has(.servei-grup)) .serveis-bloc__capcalera { display: none; }
.serveis-bloc .estat-buit { margin: 0; background: none; box-shadow: none; }
.serveis-bloc .taula-interns { table-layout: fixed; width: 100%; margin: 0; }
/* R13-35: sense la columna del càrrec; la persona, amb nom i cognoms, té més lloc. */
.serveis-bloc .col-tasca { width: 38%; }
.serveis-bloc .col-persona { width: 24%; }
.serveis-bloc .col-hores { width: 9%; }
.serveis-bloc .col-cost-hora { width: 10%; }
.serveis-bloc .col-cost { width: 12%; }
.serveis-bloc .col-accions { width: 7%; }
.serveis-bloc__capcalera thead th { padding: 0 var(--e2) 0 var(--text-camp); vertical-align: middle; }
.serveis-bloc__capcalera thead th:first-child { padding-left: calc(var(--sagnat) + var(--e2) + 1px); }
.serveis-bloc .serveis-bloc__capcalera thead th.num { padding-right: var(--e2); }
.serveis-bloc .serveis-bloc__capcalera thead th.num:nth-child(3) { padding-right: var(--hores-dreta); }
.servei-grup + .servei-grup { border-top: 1px solid var(--linia); }
.servei-fila tr:first-child, .servei-fila tr:first-child:hover { background: var(--fons); }
.servei-fila th, .servei-fila td { height: 36px; padding: 0 var(--e2); border-bottom: 0; color: var(--tinta); font-size: 13px; letter-spacing: 0; text-transform: none; vertical-align: middle; }
.servei-fila th { padding-left: var(--e3); }
.servei-fila__cap { display: flex; align-items: center; gap: var(--e2); min-width: 0; }
.servei-fila__cap > .icona { flex: none; color: var(--exe-verd); }
.servei-fila__codi { flex: none; color: var(--tinta-2); font-size: 12px; font-weight: 600; font-variant-numeric: tabular-nums; }
.servei-fila__nom { flex: 0 1 auto; min-width: 0; overflow: hidden; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
/* R14-F4: les insígnies (tarifa fixa, % de l'obra, falta el PEC) no es tallen; s'escurça el nom. */
.servei-fila__cap > .insignia { flex: none; }
/* R14-F5: les insígnies de la valoració van en un embolcall que es refà sol (quantitat). */
.servei-fila__mitjana { margin: 2px 0 0; font-weight: 400; }
.servei-fila__valoracio { display: contents; }
.servei-fila__valoracio > .insignia { flex: none; }
/* Al mòbil, l'avís «Falta…» s'escurça (el text sencer és al títol) en lloc de desbordar. */
@media (max-width: 640px) { .servei-fila__valoracio > .insignia--falta { flex: 0 1 auto; min-width: 0; } }
/* La quantitat d'un servei per unitat, en una fila sota la capçalera (com les tasques). */
.servei-fila tr.servei-fila__quantitat td { height: 34px; padding-left: var(--sagnat); color: var(--tinta-2); font-size: 12px; }
.servei-fila__quantitat label { margin-right: var(--e2); }
.servei-fila__quantitat .formulari-camp { display: inline-flex; align-items: center; gap: var(--e2); }
.servei-fila__quantitat .control-cella { width: 72px; }
.servei-fila .detalls__previsualitzacio { flex: 1 1 0; min-width: 0; margin: 0; color: var(--tinta-2); font-size: 12px; font-weight: 400; }
.servei-fila .detalls__previsualitzacio::before { margin-right: var(--e2); content: "·"; }
.servei-fila td.servei-fila__hores { padding-right: var(--hores-dreta); font-weight: 600; font-variant-numeric: tabular-nums; }
.servei-fila .accions-cella { padding-right: var(--e2); text-align: right; }
.servei-fila .boto-icona { color: var(--tinta-3); opacity: 0.55; }
.servei-fila .boto-icona:hover { color: var(--tinta); }
.servei-fila .boto-icona--perill:hover { color: var(--error); }
.servei-grup:hover .servei-fila .boto-icona, .servei-fila .boto-icona:focus-visible { opacity: 1; }
.servei-fila__detalls td { height: auto; padding: var(--e2) var(--e2) var(--e2) var(--sagnat); background: var(--fons); }
.servei-fila__detalls textarea { width: 100%; min-height: 56px; }
.servei-taula > tbody:not(.servei-fila) td { height: 32px; border-bottom: 1px solid rgb(16 40 38 / 4%); transition: background-color var(--d-1); }
.servei-taula > tbody:not(.servei-fila):hover td { background: rgb(16 40 38 / 2.5%); }
.servei-taula > tbody:not(.servei-fila) td:first-child { padding-left: var(--sagnat); }
.servei-taula .text-cella { display: block; padding-left: calc(var(--e2) + 1px); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.servei-taula__buit { color: var(--tinta-3); font-size: 13px; }
.servei-taula > tfoot td { height: 28px; padding: 0 var(--e2) 0 28px; border-bottom: 0; }
.servei-taula .afegeix-tasca { display: inline-flex; align-items: center; gap: var(--e1); min-height: 24px; padding: 0 var(--e1); color: var(--tinta-3); font-size: 12px; font-weight: 500; }
.servei-taula .afegeix-tasca:hover { color: var(--exe-verd); }
.servei-taula .control-cella { height: 28px; font-size: 13px; }
.servei-taula .control-cella--num { border-color: transparent; }
.servei-taula .control-cella--num:hover { border-color: var(--linia-forta); }
.servei-taula select.control-cella:not(:hover, :focus) { background-image: none; }
/* Fase: un sol selector al servei; per tasca només quan el servei en té de diferents. */
.servei-fila__fase { flex: none; width: min(240px, 40%); margin-left: auto; }
.servei-fila__fase select { height: 26px; color: var(--tinta-2); font-size: 12px; font-weight: 400; }
/* P2 (correu de Marc, 09/11): «Com es valora» al pas 2, com el selector de fase. */
.servei-fila__manera { flex: none; margin-left: var(--e2); }
.servei-fila__manera select { height: 26px; color: var(--tinta-2); font-size: 12px; font-weight: 400; }
.fila-tasca__fase { display: none; }
.servei-grup--per-tasca .fila-tasca__fase, .servei-grup--per-tasca .fila-tasca__tasca { display: inline-block; width: 50%; vertical-align: middle; }
.fila-tasca__tasca { display: block; }
.fila-tasca__tasca textarea.control-cella { min-height: 28px; padding-top: 5px; padding-bottom: 3px; line-height: 18px; resize: none; }
.fila-tasca__antiga, .fila-tasca__nota { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fila-tasca__nota .fila-tasca__antiga { display: inline; }
.serveis-bloc .taula-interns td.cella-cost, .serveis-bloc--lectura .servei-taula td.cella-cost { padding-right: var(--e2); color: var(--tinta-2); font-variant-numeric: tabular-nums; }
.serveis-bloc .taula-interns .servei-fila td.num:not(.servei-fila__hores) { padding-right: var(--e2); }

/* Serveis en lectura (resum del pressupost i pas 4): mateix format, textos llargs plegats. */
.serveis-bloc--lectura { margin: 0; border: 0; border-radius: 0; box-shadow: none; }
.serveis-bloc--lectura .servei-taula, .serveis-bloc--lectura .serveis-bloc__capcalera { table-layout: fixed; width: 100%; margin: 0; }
.serveis-bloc--lectura .col-l-tasca { width: 40%; }
.serveis-bloc--lectura .col-l-persona { width: 20%; }
.serveis-bloc--lectura .col-l-hores { width: 10%; }
.serveis-bloc--lectura .col-l-cost-hora { width: 11%; }
.serveis-bloc--lectura .col-l-cost { width: 13%; }
.serveis-bloc--lectura .col-l-nota { width: 6%; }
.serveis-bloc--lectura .serveis-bloc__capcalera thead th { padding-left: var(--e2); }
.serveis-bloc--lectura .serveis-bloc__capcalera thead th:first-child { padding-left: 32px; }
.serveis-bloc--lectura .serveis-bloc__capcalera thead th.num, .serveis-bloc--lectura .serveis-bloc__capcalera thead th.num:nth-child(3) { padding-right: var(--e2); }
.serveis-bloc--lectura .servei-taula > tbody:not(.servei-fila) td { padding: 0 var(--e2); }
.serveis-bloc--lectura .servei-taula > tbody:not(.servei-fila) td:first-child { padding-left: 32px; }
.serveis-bloc--lectura .servei-taula td { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.serveis-bloc--lectura td.servei-fila__hores, .serveis-bloc--lectura .servei-taula td.num { padding-right: var(--e2); }
.serveis-bloc--lectura .nota-lectura td, .serveis-bloc--lectura .servei-fila__descripcio td { overflow: visible; white-space: normal; }
.servei-fila__fase-text { flex: none; margin-left: auto; color: var(--tinta-3); font-size: 12px; font-weight: 400; white-space: nowrap; }
.fila-tasca__fase-text { margin-right: var(--e2); color: var(--tinta-3); }
.fila-tasca__fase-text::after { content: " ·"; }
.fila-tasca__fase-text:empty { display: none; }
.servei-fila__descripcio td { height: auto; padding: 0 var(--e3) var(--e2) 32px; border-bottom: 0; }
.text-plegat > summary { display: flex; align-items: baseline; gap: var(--e3); color: var(--tinta-2); font-size: 12px; }
.text-plegat__resum { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.text-plegat__resum::after { color: var(--exe-verd); content: " ›"; }
.text-plegat__tanca { display: none; color: var(--exe-verd); font-weight: 600; }
.text-plegat[open] .text-plegat__resum { height: 0; visibility: hidden; }
.text-plegat[open] .text-plegat__tanca { display: inline; margin-left: auto; }
.text-plegat > p { margin: var(--e1) 0 0; color: var(--tinta-2); font-size: 12px; line-height: 1.5; white-space: normal; }
.nota-lectura td { height: auto; padding: var(--e1) var(--e3) var(--e2) 32px; background: var(--fons-suau); color: var(--tinta-2); font-size: 12px; line-height: 1.5; white-space: normal; }

/* Administració: costos interns amb el format del pas 2 (carpeta per servei, fase un cop). */
.serveis-bloc--admin .servei-taula, .serveis-bloc--admin .serveis-bloc__capcalera { table-layout: fixed; width: 100%; margin: 0; }
.serveis-bloc--admin .col-a-tasca { width: 40%; }
.serveis-bloc--admin .col-a-persona { width: 18%; }
.serveis-bloc--admin .col-a-hores { width: 10%; }
.serveis-bloc--admin .col-a-cost, .serveis-bloc--admin .col-a-subtotal { width: 13%; }
.serveis-bloc--admin .col-a-accions { width: 6%; }
.serveis-bloc--admin .servei-taula td { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.serveis-bloc--admin .serveis-bloc__capcalera thead th { padding-left: var(--e2); }
.serveis-bloc--admin .serveis-bloc__capcalera thead th:first-child { padding-left: 32px; }
.serveis-bloc--admin .serveis-bloc__capcalera thead th.num, .serveis-bloc--admin .servei-taula td.num { padding-right: var(--e2); }
.serveis-bloc--admin .servei-taula > tbody:not(.servei-fila) td { padding: 0 var(--e2); }
.serveis-bloc--admin .servei-taula > tbody:not(.servei-fila) td:first-child { padding-left: 32px; }
.serveis-bloc--admin .servei-taula td.num:has(form) { padding: 0 2px; }
.serveis-bloc--admin .formulari-marc { margin: 0; }
.serveis-bloc--admin .camp__control { width: 100%; height: 28px; padding: 0 calc(var(--e2) - 1px); border-color: transparent; border-radius: 8px; background-color: transparent; box-shadow: none; font: inherit; font-size: 13px; font-variant-numeric: tabular-nums; text-align: right; }
.serveis-bloc--admin .camp__control:hover { border-color: var(--linia-forta); }
.serveis-bloc--admin .camp__control:focus { border-color: var(--exe-verd); background-color: var(--fons); box-shadow: var(--anell-focus); }
.serveis-bloc--admin .camp__control[aria-invalid="true"] { border-color: var(--error); }
.serveis-bloc--admin .accions-cella { text-align: right; }
.marc-costos .serveis-bloc--admin { margin-top: var(--e3); }

/* Externs (producció, administració i lectura): files de 36 px, camps sense vora fins que els toques
   i fitxers a sota. La capçalera és la de premium.css. */
.taula-externs thead th, .taula-externs-lectura thead th { padding: 0 var(--e2); }
.taula-externs thead th.num, .taula-externs-lectura thead th.num { padding-right: calc(var(--e2) + 1px); }
.taula-externs tbody td, .taula-externs-lectura tbody td { height: 36px; padding: 2px var(--e1); border-bottom: 0; font-size: 13px; vertical-align: middle; }
.taula-externs-lectura tbody td { padding: 0 var(--e2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.taula-externs-lectura td:not(.num) { overflow-wrap: anywhere; white-space: normal; }
.taula-externs-lectura th:nth-child(1) { width: 20%; }
.taula-externs-lectura th:nth-child(2) { width: 23%; }
.taula-externs-lectura th:nth-child(3) { width: 43%; }
.taula-externs-lectura th:nth-child(4) { width: 14%; }
.taula-externs tbody + tbody > tr:first-child td, .taula-externs-lectura tbody tr:not(.extern-fitxers, .nota-lectura) td { border-top: 1px solid var(--linia); }
.taula-externs tbody:hover > tr:first-child td { background: rgb(16 40 38 / 2.5%); }
.taula-externs :is(.control-cella, .camp__control) { height: 28px; padding: 0 calc(var(--e2) - 1px); font-size: 13px; }
.taula-externs .camp__control { border-color: transparent; background-color: transparent; box-shadow: none; }
.taula-externs .camp__control:hover { border-color: var(--linia-forta); }
.taula-externs .camp__control:focus { border-color: var(--exe-verd); background-color: var(--fons); box-shadow: var(--anell-focus); }
.taula-externs .camp__control[aria-invalid="true"] { border-color: var(--error); }
.taula-externs textarea:is(.control-cella, .camp__control) { min-height: 28px; padding-top: 5px; padding-bottom: 3px; line-height: 18px; resize: none; }
.taula-externs td.num .camp__control { font-variant-numeric: tabular-nums; text-align: right; }
.taula-externs td :is(.camp, .camp__control) { margin: 0; }
.taula-externs select.control-cella:not(:hover, :focus) { background-image: none; }
.taula-externs select.camp__control:not(:hover, :focus):not(:has(option[value=""]:checked)), .taula-externs select.camp__control[name$="servei"]:not(:hover, :focus) { background-image: none; }
/* Proveïdors externs del pas 3 (P24): la mateixa targeta amb capçalera grisa que la resta; la taula, a
   dins sense capsa pròpia; el buit centrat i «Afegeix un proveïdor» com a fila del peu. */
#files-externes { padding: 0; overflow: hidden; }
#files-externes > .titol-subseccio { display: flex; align-items: center; min-height: 40px; margin: 0; padding: 0 var(--e4); border-bottom: 1px solid var(--linia); background: #f7f9f8; font-size: 13px; }
#files-externes > .taula-externs { border-radius: 0; box-shadow: none; }
#files-externes tbody[data-buit] td { height: 96px; color: var(--tinta-3); font-size: 14px; text-align: center; }
#files-externes tbody[data-buit] td::before { display: block; width: 28px; height: 28px; margin: 0 auto var(--e2); background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2300807c' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='8' r='3.5'/%3E%3Cpath d='M2.5 20a6.5 6.5 0 0 1 13 0M16 4.5a3.5 3.5 0 0 1 0 7M18 14.5a6.5 6.5 0 0 1 3.5 5.5'/%3E%3C/svg%3E") center / 24px no-repeat, rgb(0 128 124 / 9%); border-radius: 50%; content: ""; }
#files-externes > .boto--text { justify-content: flex-start; width: 100%; height: 44px; padding: 0 var(--e4); border-top: 1px solid var(--linia); border-radius: 0; font-size: 14px; }
#files-externes > .boto--text::before { width: 16px; height: 16px; background: currentColor; content: ""; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E") center / 16px no-repeat; }
#files-externes > .boto--text:hover { background: rgb(0 128 124 / 5%); }
.extern-fitxers td { height: auto; padding: 0 var(--e2) var(--e2); border-top: 0; }
.extern-fitxers td:empty { display: none; }
/* Camps buits visibles (hores, tasca, persona, import): vora de puntets i valor de mostra. */
.servei-taula input.control-cella:placeholder-shown, .taula-externs :is(input, textarea):is(.control-cella, .camp__control):placeholder-shown { border-style: dashed; border-color: var(--linia-forta); background-color: var(--fons); }
.servei-taula select.control-cella:has(option[value=""]:checked), .taula-externs select:is(.control-cella, .camp__control):has(option[value=""]:checked):not([name$="servei"]) { border: 1px dashed var(--linia-forta); background-color: var(--fons); background-image: var(--fletxa-select); }
.servei-taula .accions-cella, .taula-externs .accions-cella { text-align: right; white-space: nowrap; vertical-align: middle; }
.servei-taula .accions-cella .boto-icona, .taula-externs .accions-cella .boto-icona { width: 26px; height: 26px; font-size: 16px; line-height: 1; vertical-align: middle; }

/* PDF adjunts (externs i pressupost): una línia per fitxer i un sol botó per afegir-ne. */
.fitxers { display: flex; flex-wrap: wrap; align-items: center; gap: var(--e1) var(--e3); min-height: 28px; }
.fitxers--dcp { margin-top: var(--e2); }
.fitxers__llista { display: contents; margin: 0; padding: 0; list-style: none; }
.fitxer { display: inline-flex; align-items: center; gap: var(--e2); max-width: 100%; height: 28px; padding: 0 var(--e1) 0 var(--e2); border-radius: 999px; background: var(--fons); box-shadow: inset 0 0 0 1px var(--linia); font-size: 12px; }
.fitxer.is-exclos { box-shadow: inset 0 0 0 1px var(--linia-forta); color: var(--tinta-3); opacity: 0.75; }
.fitxer__nom { display: inline-flex; align-items: center; gap: 6px; min-width: 0; color: var(--tinta); }
.fitxer__nom:hover { color: var(--exe-verd); text-decoration: none; }
.fitxer__nom .icona { flex: none; color: var(--exe-verd); }
.fitxer__nom span { max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fitxer__mida { color: var(--tinta-3); font-variant-numeric: tabular-nums; }
.fitxer__envia { height: 20px; padding: 0 var(--e2); border: 0; border-radius: 999px; background: rgb(0 128 124 / 12%); color: var(--exe-verd-fosc); font: inherit; font-size: 11px; font-weight: 600; cursor: pointer; }
.fitxer__envia[aria-checked="false"], .fitxer__envia--no { background: var(--ressalt); color: var(--tinta-3); }
.fitxer .boto-icona { width: 22px; height: 22px; }
.fitxers__puja { margin: 0; }
.fitxers__boto { display: inline-flex; align-items: center; gap: 6px; height: 28px; padding: 0 var(--e2); border-radius: 8px; color: var(--tinta-3); font-size: 12px; font-weight: 500; cursor: pointer; }
.fitxers__boto:hover, .fitxers__boto:focus-within { background: var(--ressalt); color: var(--exe-verd); }
.fitxers__error { flex-basis: 100%; margin: 0; font-size: 12px; }

/* Blocs: seccions sempre obertes amb capçalera grisa de 36 px (la mateixa pell a totes les pantalles)
   i plegables (historial, portal) amb la fletxa que gira. */
.blocs-controls { display: flex; justify-content: flex-end; gap: var(--e3); margin: var(--e2) 0; }
.blocs-controls .boto { min-height: 28px; height: 28px; padding: var(--e1) var(--e2); font-size: 13px; }
.bloc-plegable { padding: 0; overflow: hidden; border-radius: var(--radi-targeta); background: var(--fons); box-shadow: 0 0 0 1px var(--linia), var(--ombra-1); }
.bloc-plegable > .bloc-plegable__capcalera { display: flex; align-items: center; gap: var(--e2); min-height: 36px; margin: 0; padding: 0 var(--e4); border-radius: 0; color: var(--tinta); cursor: pointer; }
.bloc-plegable > .bloc-plegable__capcalera::before { width: 6px; height: 6px; flex: none; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(-45deg); transition: transform var(--d-3) var(--corba-molla); content: ""; }
.bloc-plegable[open] > .bloc-plegable__capcalera::before { transform: rotate(45deg); }
.bloc-plegable > .bloc-plegable__capcalera:hover { background: var(--ressalt); }
.bloc-plegable__titol { flex: 1; min-width: 0; overflow: hidden; font-size: 13px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.bloc-plegable[open] > summary .bloc-plegable__titol { white-space: normal; }
.bloc-plegable__subtotal { flex: none; font-size: 13px; font-weight: 600; font-variant-numeric: tabular-nums; text-align: right; }
.bloc-plegable__edita { display: inline-flex; flex: none; color: var(--exe-verd); }
.bloc-plegable__totals { display: inline-flex; align-items: baseline; gap: var(--e2); }
.bloc-plegable__cost { color: var(--tinta-2); }
.bloc-plegable__cost::before { margin-right: var(--e2); color: var(--tinta-3); font-weight: 400; content: "·"; }
.bloc-plegable__cos { padding: var(--e4); border-top: 1px solid var(--linia); }
.bloc-plegable__cos > .taula { margin: 0; }
section.bloc-plegable + section.bloc-plegable, .resum-dcp > section.bloc-plegable + *, .resum-dcp > * + section.bloc-plegable { margin-top: var(--e4); }
section.bloc-plegable > .bloc-plegable__capcalera, .paquet-client > .seccio__capcalera, .pressupost-holded > .seccio__capcalera, .condicions-oferta > .titol-seccio, .seccio:is([data-marc-seccio="resum"], [data-marc-seccio="marge"], [data-marc-seccio="condicions"]) > .titol-seccio { min-height: 40px; border-bottom: 1px solid var(--linia); background: #f7f9f8; cursor: default; }
section.bloc-plegable > .bloc-plegable__capcalera::before, section.bloc-plegable > .bloc-plegable__capcalera .bloc-plegable__edita { display: none; }
section.bloc-plegable > .bloc-plegable__capcalera:hover { background: #f7f9f8; }
section.bloc-plegable > .bloc-plegable__capcalera .bloc-plegable__titol { white-space: normal; }
section.bloc-plegable > .bloc-plegable__cos { border-top: 0; }
section.bloc-plegable section.bloc-plegable { border-radius: var(--radi); box-shadow: 0 0 0 1px var(--linia); }
section.bloc-plegable section.bloc-plegable > .bloc-plegable__capcalera { min-height: 32px; background: var(--fons); }
.marc-historial { position: relative; }
.marc-historial__cos { top: calc(100% + var(--e2)); width: min(760px, calc(100vw - 48px)); max-height: 70vh; padding: var(--e3); overflow: auto; }
.marc-historial__cos .bloc-plegable + .bloc-plegable { margin-top: var(--e3); }
.marc-historial[open] .marc-historial__cos { animation: puja var(--d-3) var(--corba-molla); }

/* Administració: xifres, marges, preus de l'oferta, textos del client i Holded. */
.marc-xifres { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: var(--e3); }
.marc-xifres > * { min-width: 0; }
.marc-xifres dt { color: var(--tinta-3); font-size: 13px; }
.marc-xifres dd { margin: var(--e1) 0 0; font-size: 22px; font-weight: 600; letter-spacing: -0.015em; font-variant-numeric: tabular-nums; white-space: nowrap; }
.marc-xifres--acord { grid-template-columns: none; grid-auto-columns: minmax(0, 1fr); grid-auto-flow: column; }
.acord-revisio { display: grid; gap: var(--e2); margin: var(--e3) 0; }
.acord-revisio > p { margin: 0; }
#marc-contenut .taula td form .camp__control { width: 100%; text-align: left; }
#marc-contenut .taula td.num form .camp__control { text-align: right; }
#marc-contenut .taula td form .boto--text { display: block; padding-left: 0; font-size: 12px; }
#marc-contenut .targeta + .targeta { margin-top: var(--e3); }
.marc-costos .camp__control, .marc-ajust .camp__control { min-height: 32px; padding: 6px 8px; }
.marc-costos > .bloc-plegable__cos { padding-top: var(--e5); }
.marc-costos .bloc-plegable__cos > .text-ajuda { margin-bottom: var(--e3); }
.marc-interns { table-layout: fixed; }
.marc-interns th:nth-child(1) { width: 12%; }
.marc-interns th:nth-child(2) { width: 22%; }
.marc-interns th:nth-child(3) { width: 24%; }
.marc-interns th:nth-child(4) { width: 9%; }
.marc-interns th:nth-child(5) { width: 14%; }
.marc-interns th:nth-child(6) { width: 13%; }
.marc-interns th:nth-child(7) { width: 6%; }
.marc-interns td { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.formulari-marc { margin: 0; }
#marc-contenut .marc-ajust { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 2fr) 32px; gap: var(--e4); align-items: end; }
#marc-contenut .marc-ajust label { display: flex; flex-direction: column; gap: var(--e2); min-width: 0; white-space: normal; }
#marc-contenut .marc-ajust .camp__control { min-width: 0; max-width: 100%; }
.marc-ajust [hidden] { display: none; }
/* R14-F5/F6 (P7): com es valora, el % i la quantitat en una sola línia sota el nom, amb els
   controls petits de les taules del pas 2; amb poc espai salta de línia sense desbordar. */
.marc-valoracio { display: flex; flex-wrap: wrap; align-items: center; gap: var(--e1) var(--e2); min-width: 0; margin-top: 2px; }
.marc-valoracio__camp { display: inline-flex; align-items: center; gap: var(--e1); min-width: 0; }
.marc-valoracio .control-cella { height: 28px; border-color: var(--linia); font-size: 13px; }
.marc-valoracio select.control-cella { width: auto; max-width: 100%; }
.marc-valoracio__num { width: 64px; flex: none; }
.marc-valoracio__unitat, .marc-valoracio__nota { color: var(--tinta-3); font-size: 12px; white-space: nowrap; }
.marc-valoracio__origen { flex: 1 1 8em; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.marc-valoracio > .insignia { flex: none; }
@media (max-width: 640px) {
  /* Revisió (L1): el desplegable amb la seva amplada; la columna del nom s'eixampla per mostrar-lo sencer. */
  .marc-valoracio__camp:has(select) { flex: 1 1 100%; }
  .marc-valoracio select.control-cella { width: auto; min-width: max-content; font-size: 12px; }
  .marc-valoracio__num { width: 48px; }
  .marc-valoracio__unitat, .marc-valoracio__nota { white-space: normal; }
}
.marges-targetes { align-items: stretch; }
#marc-contenut .marges-targetes > .targeta { min-width: 0; margin-top: 0; }
.marc-oferta .camp__ajuda { margin: 4px 0 0; }
.marc-oferta thead th { padding: 0 var(--e2); }
.marc-oferta thead th:first-child { border-top-left-radius: var(--radi-targeta); }
.marc-oferta thead th:last-child { border-top-right-radius: var(--radi-targeta); }
.marc-oferta tbody td { height: 36px; padding: 2px var(--e2); border-top: 1px solid var(--linia); border-bottom: 0; font-size: 13px; vertical-align: middle; }
.marc-oferta tbody:first-of-type td { border-top: 0; }
.marc-oferta tbody:hover > tr:first-child td { background: rgb(16 40 38 / 2.5%); }
.marc-oferta [data-marc-ajust] { width: 28px; height: 28px; border: 0; color: var(--tinta-3); opacity: 0.55; }
.marc-oferta tbody:hover [data-marc-ajust], .marc-oferta [data-marc-ajust]:focus-visible { color: var(--exe-verd); opacity: 1; }
/* R14-F6 (punt 12 de Marc): ordre de les línies i títols de Holded. L'agafador i ↑/↓, discrets
   com el llapis de la fila; sempre a la vista on no hi ha ratolí. */
.oferta-estructura { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--e1) var(--e3); margin: 0 0 var(--e2); }
.oferta-estructura > .camp__ajuda { flex: 1 1 320px; margin: 0; }
.oferta-estructura__botons { display: inline-flex; flex-wrap: wrap; gap: var(--e2); }
.oferta-fila__cap { display: flex; flex-wrap: wrap; align-items: center; gap: var(--e1); min-width: 0; }
/* Revisió (M1): «Com es valora» a la mateixa línia que el nom; si no hi cap, salta a sota. */
.oferta-fila__cap > .marc-valoracio { flex: 0 1 auto; margin: 0 0 0 var(--e2); }
.oferta-fila__cap > .camp__ajuda { flex-basis: 100%; }
.oferta-fila__cap > [data-oferta-nom] { flex: 0 1 auto; min-width: 0; }
.oferta-fila__agafador { display: inline-flex; flex: none; margin-left: -4px; color: var(--tinta-3); opacity: 0.45; cursor: grab; }
.oferta-fila__ordre { display: inline-flex; flex: none; margin-left: auto; }
.oferta-fila__ordre .boto-icona { width: 24px; height: 24px; border: 0; color: var(--tinta-3); opacity: 0.45; }
.marc-oferta tbody:hover :is(.oferta-fila__agafador, .oferta-fila__ordre .boto-icona), .oferta-fila__ordre .boto-icona:focus-visible { opacity: 1; }
.oferta-fila__ordre .boto-icona:not(.boto-icona--perill):is(:hover, :focus-visible) { color: var(--exe-verd); }
@media (hover: none) { .oferta-fila__agafador { display: none; } .oferta-fila__ordre .boto-icona { opacity: 0.8; } }
.marc-oferta tbody.oferta-titol td { background: #f7f9f8; }
.oferta-titol__text { flex: 1 1 auto; min-width: 0; height: 28px; font-weight: 600; }
.oferta-titol--2 .oferta-titol__text, .oferta-titol--2 .oferta-titol__lectura { padding-left: var(--e5); font-weight: 500; }
.oferta-titol--1 .oferta-titol__lectura { font-weight: 600; }
.marc-oferta tbody.oferta-arrossegant { opacity: 0.5; }
@media (max-width: 640px) {
  /* Al mòbil no s'arrossega; ↑/↓ salten a sota del nom si no hi caben (la taula no s'eixampla). */
  .oferta-fila__agafador { display: none; }
  tbody[data-oferta-clau] .oferta-fila__cap { flex-wrap: wrap; }
}
.marc-oferta tfoot td, .marc-oferta tfoot th { border-top: 1px solid var(--linia-forta); }
.marc-oferta tfoot .oferta-ratios { border-top: 0; }
.marc-oferta .oferta-total > * { padding-top: var(--e3); padding-bottom: var(--e2); font-size: 15px; font-weight: 600; }
.marc-oferta .oferta-ratios { color: var(--tinta-2); font-size: 13px; }
@media (max-width: 640px) {
  /* Revisió (L1): marges més estrets perquè hi càpiguen el desplegable sencer i el llapis. */
  .marc-oferta :is(tbody, tfoot) :is(td, th) { padding-right: var(--e1); padding-left: var(--e1); }
  .marc-oferta [data-marc-ajust] { width: 24px; }
  .marc-oferta .marc-valoracio select.control-cella { padding-right: 22px; padding-left: 6px; background-position: right 4px center; }
  .marc-oferta .oferta-total > * { font-size: 14px; }
  .marc-oferta thead th { padding: 0 var(--e1); overflow-wrap: normal; }
}
.marc-oferta .oferta-ratios > span + span { margin-left: var(--e5); }
.oferta-total { font-weight: 600; }
.taula .oferta-ratios { padding-top: var(--e2); padding-bottom: var(--e2); text-align: right; }
.oferta-ratios span { display: inline-block; }
.preu-anterior { color: var(--tinta-3); text-decoration: line-through; }
.marc-vista-previa { table-layout: fixed; }
.marc-vista-previa thead th { padding: 0 var(--e2); }
.marc-vista-previa td { padding-top: var(--e3); padding-bottom: var(--e3); vertical-align: top; }
.marc-vista-previa tbody tr:hover { background: transparent; }
.marc-vista-previa tfoot th { color: var(--tinta-2); font-size: 12px; font-weight: 500; letter-spacing: 0; text-transform: none; }
.marc-arrodoneix { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--e2) var(--e4); margin-top: var(--e4); padding-top: var(--e3); border-top: 1px solid var(--linia); }
.marc-arrodoneix .camp__etiqueta { margin: 0; }
/* Targetes amb capçalera grisa: textos del client, condicions, Holded, resum i marge. */
.paquet-client, .condicions-oferta, .pressupost-holded, .seccio[data-marc-seccio="resum"], .seccio[data-marc-seccio="marge"], .seccio[data-marc-seccio="condicions"] { margin-top: var(--e4); padding: 0 0 var(--e4); overflow: hidden; border-radius: var(--radi-targeta); background: var(--fons); box-shadow: 0 0 0 1px var(--linia), var(--ombra-1); }
.paquet-client > .seccio__capcalera, .pressupost-holded > .seccio__capcalera { align-items: center; margin: 0 0 var(--e4); padding: var(--e2) var(--e4); }
.condicions-oferta > .titol-seccio, .seccio:is([data-marc-seccio="resum"], [data-marc-seccio="marge"], [data-marc-seccio="condicions"]) > .titol-seccio { display: flex; align-items: center; margin: 0 0 var(--e3); padding: 0 var(--e4); }
.paquet-client .titol-seccio, .condicions-oferta .titol-seccio, .pressupost-holded .titol-seccio, .seccio:is([data-marc-seccio="resum"], [data-marc-seccio="marge"], [data-marc-seccio="condicions"]) > .titol-seccio { font-size: 13px; font-weight: 600; letter-spacing: 0; }
.paquet-client .seccio__capcalera .text-ajuda { margin: 0; color: var(--tinta-3); font-size: 12px; }
.paquet-client > :not(.seccio__capcalera), .condicions-oferta > :not(.titol-seccio), .pressupost-holded > :not(.seccio__capcalera), .seccio:is([data-marc-seccio="resum"], [data-marc-seccio="marge"], [data-marc-seccio="condicions"]) > :not(.titol-seccio) { margin-right: var(--e4); margin-left: var(--e4); }
.condicions-oferta > .text-ajuda, .seccio:is([data-marc-seccio="resum"], [data-marc-seccio="marge"], [data-marc-seccio="condicions"]) > .camp__ajuda { margin-bottom: var(--e3); }
.condicions-oferta .targeta, .pressupost-holded .targeta { padding: 0; background: none; box-shadow: none; }
.paquet-client > .seccio__capcalera > .formulari-marc { flex: 0 0 180px; min-width: 130px; }
.detalls--client > form { display: grid; gap: var(--e4); padding-top: var(--e3); }
.detalls--client > form > label { display: grid; gap: var(--e2); }
.text-client > * + * { margin-top: var(--e4); }
.text-client p { overflow-wrap: anywhere; }
.text-client .detalls--client { margin-top: var(--e4); margin-bottom: 0; }
.text-client-fila { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--e2) var(--e4); align-items: baseline; }
.text-client-fila__capcalera { grid-column: 1; display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--e2) var(--e4); min-width: 0; }
.text-client-fila__capcalera .titol-subseccio { font-size: 14px; font-weight: 400; line-height: 1.55; overflow-wrap: anywhere; }
.text-client-fila__capcalera p { margin: 0; }
.text-client-fila > .detalls--client { grid-column: 2; grid-row: 1; margin: 0; }
.text-client-fila > .detalls--client[open] { grid-column: 1 / -1; grid-row: auto; }
.text-client-edicio { position: relative; }
.text-client-edicio--editable { padding-right: var(--e6); }
.text-client-edicio .detalls--client { margin: 0; }
.text-client-edicio .detalls--client > summary { position: absolute; top: -5px; right: 0; }
.text-client-linia { display: flex; align-items: baseline; gap: var(--e2); min-width: 0; }
.text-client-linia > :first-child { min-width: 0; margin: 0; overflow-wrap: anywhere; }
.text-client-linia--condicions { align-items: flex-start; }
.text-client-linia--condicions > :first-child { flex: 1; }
.text-client-linia--condicions > .avis-idioma-icona { align-self: flex-start; margin-top: var(--e2); }
/* R5 F4: les descripcions i les condicions llargues (acord BL) conserven els salts de línia, com a Holded. */
.text-client-linia--descripcio > p, .condicions-lectura { white-space: pre-line; }
.avis-idioma { display: flex; align-items: flex-start; gap: var(--e2); font-size: 14px; overflow-wrap: anywhere; }
.avis-idioma[hidden], .avis-idioma-icona[hidden] { display: none; }
.avis-idioma > .icona { flex: none; margin-top: 3px; }
.avis-idioma > span { min-width: 0; }
.avis-idioma-icona { display: inline-flex; flex: none; align-self: baseline; color: var(--avis); }
.avis-idioma-icona:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }
.selector-paquet > .camp__etiqueta { display: block; margin-bottom: var(--e2); }
.holded-titol { align-items: center; justify-content: flex-start; gap: var(--e3); }
.holded-dades .graella-2, .holded-resultat .graella-2, .projecte-toggl .graella-2 { gap: var(--e5) var(--e6); }
.holded-dades .graella-2 > *, .holded-dades .formulari-marc, .holded-avancat > .bloc-plegable__cos > * { display: flex; flex-direction: column; align-items: stretch; gap: var(--e2); min-width: 0; }
.holded-dades :is(.camp__etiqueta, .camp__ajuda, .avis) { margin: 0; }
.holded-dades .dada-automatica { align-items: flex-start; }
.holded-dades .dada-automatica > p:not(.camp__ajuda, .avis) { color: var(--tinta); font-size: 15px; font-weight: 600; }
.holded-dades .dada-automatica > .avis { padding: var(--e2) var(--e3); font-size: 13px; }
.holded-dades .dada-automatica > a { font-size: 13px; font-weight: 600; }
.pressupost-holded .holded-avancat { margin-top: var(--e5); overflow: visible; border-radius: 0; background: none; box-shadow: inset 0 1px 0 var(--linia); }
.holded-avancat > .bloc-plegable__capcalera { min-height: 0; padding: var(--e4) 0 0; color: var(--tinta-2); }
.holded-avancat > .bloc-plegable__capcalera:hover { background: none; color: var(--exe-verd); }
.holded-avancat > .bloc-plegable__cos { gap: var(--e5) var(--e6); padding: var(--e4) 0 0; border-top: 0; }
.holded-dades > * + *, .holded-resultat > * + *, .condicions-oferta .targeta > * + * { margin-top: var(--e4); }
.holded-dades .graella-2 > *, .holded-resultat .graella-2 > *, .projecte-toggl .graella-2 > * { min-width: 0; }
.holded-dades > .graella-2 { align-items: start; }
.holded-resultat { margin-top: var(--e4); }
.holded-resultat dd, .projecte-toggl dd { margin: var(--e2) 0 0; overflow-wrap: anywhere; }
.pressupost-holded .camp__control, .holded-resultat dd, .projecte-toggl dd, .holded-resultat > p.camp__ajuda { color: var(--tinta); font-size: 14px; font-weight: 400; }
.holded-resultat dd :is(strong, .insignia) { color: inherit; font: inherit; }
.holded-iva > .camp__ajuda { margin-top: var(--e2); }
.holded-accions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: var(--e3); margin-top: var(--e5); }
.pressupost-holded > .avis { margin: var(--e4) 0; }
.holded-cerca { margin-top: var(--e4); }
.holded-cerca__controls { display: flex; align-items: center; gap: var(--e2); }
.holded-cerca__controls .camp__control { min-width: 0; }
/* R3 B1 (polit R11, petició de l'Àlex): condicions de pagament en files alineades. L'etiqueta a
   l'esquerra i un control segmentat d'amplada completa amb les opcions de la mateixa mida. */
.seccio[data-marc-seccio="condicions"] > .targeta { padding: var(--e2) 0 0; background: none; box-shadow: none; }
.condicions-pagament__fila { display: grid; grid-template-columns: 168px minmax(0, 1fr); align-items: center; gap: var(--e2) var(--e4); margin: 0 0 var(--e3); }
.condicions-pagament__fila .camp__etiqueta { min-width: 0; margin: 0; }
.condicions-pagament__fila p { margin: 0; }
.condicions-pagament__fila .segments { display: grid; grid-auto-columns: minmax(0, 1fr); grid-auto-flow: column; width: 100%; }
.condicions-pagament__fila .segments label { display: flex; min-width: 0; }
.condicions-pagament__fila .segments label > span { flex: 1; justify-content: center; min-width: 0; height: auto; min-height: 30px; padding: 4px var(--e3); line-height: 1.25; text-align: center; white-space: normal; }
.condicions-pagament__formulari > .text-ajuda { margin: var(--e1) 0 var(--e3) calc(168px + var(--e4)); }
.condicions-pagament__falta p { font-weight: 600; }
.condicions-pagament__falta ul { margin: var(--e2) 0 0; padding: 0; list-style: none; }
.condicions-pagament__falta li { display: flex; align-items: baseline; gap: var(--e2); }
.condicions-pagament__falta li::before { width: 6px; height: 6px; flex: none; border-radius: 50%; background: currentColor; transform: translateY(-2px); content: ""; }
.condicions-pagament__percentatges .camp__control { width: 90px; }
.condicions-pagament__calendari { table-layout: fixed; margin: 0 0 var(--e3); }
.condicions-pagament__calendari th:nth-child(n + 2) { width: 168px; }
.condicions-pagament__calendari td.num .camp__control { display: block; width: 104px; height: 34px; margin-left: auto; text-align: right; }
.condicions-pagament__calendari caption { padding-bottom: var(--e2); text-align: left; }
.condicions-pagament__calendari select.camp__control { width: auto; min-width: 260px; }
@media (max-width: 1100px) {
  #marc-contenut .marc-ajust { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) 32px; }
  #marc-contenut .marc-ajust [data-marc-motiu] { grid-column: 1 / 3; }
  #marc-contenut .marc-ajust > button { grid-column: 3; grid-row: 1; }
}
@media (max-width: 760px) {
  .marc-xifres { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .marc-xifres > :last-child { grid-column: 1 / -1; }
  .marc-xifres--acord { grid-auto-flow: row; }
  .holded-dades .graella-2, .holded-resultat .graella-2 { grid-template-columns: minmax(0, 1fr); }
  .paquet-client > .seccio__capcalera { flex-wrap: wrap; }
}
@media (max-width: 640px) {
  .marc-arrodoneix { flex-direction: column; align-items: flex-start; }
  .segments { flex-wrap: wrap; }
  .condicions-pagament__fila { grid-template-columns: minmax(0, 1fr); }
  .condicions-pagament__fila .segments:has(> label:nth-child(3)) { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-flow: row; }
  .condicions-pagament__formulari > .text-ajuda { margin-left: 0; }
  .condicions-pagament__calendari select.camp__control { width: 100%; min-width: 0; }
}

/* Llista de pressupostos com la de leads: capçalera grisa, files netes i una fletxa per obrir. */
.cerca-dcp { max-width: 36rem; margin: var(--e5) 0; }
.taula-dcp { table-layout: fixed; width: 100%; }
.taula-dcp[hidden] { display: none; }
.taula-dcp td { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.taula-dcp tbody td { height: 44px; }
.taula-dcp th:nth-child(1) { width: 20%; }
.taula-dcp th:nth-child(2) { width: 26%; }
.taula-dcp th:nth-child(3) { width: 8%; }
.taula-dcp th:nth-child(4) { width: 18%; }
.taula-dcp th:nth-child(5) { width: 14%; }
.taula-dcp th:nth-child(6) { width: 12%; }
/* R10-F3: la safata d'administració porta també «Pressupost per». */
.taula-dcp--admin th:nth-child(1) { width: 14%; }
.taula-dcp--admin th:nth-child(2) { width: 16%; }
.taula-dcp--admin th:nth-child(3) { width: 12%; }
.taula-dcp--admin th:nth-child(4) { width: 6%; }
.taula-dcp--admin th:nth-child(5) { width: 11%; }
.taula-dcp--admin th:nth-child(6) { width: 18%; }
.taula-dcp--admin th:nth-child(7) { width: 11%; }
.taula-dcp--admin th:nth-child(8) { width: 9%; }
.taula-dcp th:last-child { width: 44px; }
.taula-dcp__obre { text-align: right; }
.taula-dcp__codi { display: inline-block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; vertical-align: middle; }
/* A mòbil, la llista es queda amb el projecte, l'estat i la fletxa (sense desplaçament lateral). */
@media (max-width: 640px) {
  .taula-dcp :is(th, td):is(:nth-child(1), :nth-child(3), :nth-child(n + 5):not(:last-child)), .taula-dcp--admin :is(th, td):is(:nth-child(4), :nth-child(5)) { display: none; }
  .taula-dcp--admin :is(th, td):nth-child(6) { display: table-cell; }
  .taula-dcp th:nth-child(n) { width: auto; }
  .taula-dcp th:last-child { width: 36px; }
  .taula-dcp:not(.taula-dcp--admin) th:nth-child(4), .taula-dcp--admin th:nth-child(6) { width: 44%; }
}

/* Esborrar un esborrany (pas 1) i un lead: confirmació en línia, sense diàleg natiu. */
.esborra-dcp { margin-top: var(--e4); }
/* R14-35: el motiu per no eliminar un lead, al lloc del botó. */
.lead-no-eliminar { max-width: 72ch; margin-top: var(--e4); }
.esborra-dcp > summary, .esborra-dcp > summary:hover, .esborra-dcp[open] > summary { display: inline-flex; padding: 0; background: none; color: var(--error); }
.esborra-dcp__confirma { display: flex; align-items: center; justify-content: space-between; gap: var(--e3); margin-top: var(--e2); padding: var(--e3); border-radius: var(--radi-targeta); background: rgb(179 38 30 / 4%); box-shadow: inset 0 0 0 1px rgb(179 38 30 / 16%); animation: puja var(--d-3) var(--corba-molla); }
.esborra-dcp__confirma p { margin: 0; }

/* Semàfor de Holded (v1.4, 8C, polit R11): esborrany → enviat → resposta → facturat. Punts amb icona i
   una llum suau; el traç només s'omple fins al pas on ha arribat el pressupost. Només lectura. */
.semafor { display: grid; gap: var(--e4); padding: var(--e5) var(--e4) var(--e4); border-radius: var(--radi-targeta); background: linear-gradient(180deg, #fff, #f7f9f8); box-shadow: inset 0 0 0 1px var(--linia); }
.semafor__passos { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); margin: 0; padding: 0; list-style: none; }
.semafor__pas { position: relative; display: grid; align-content: start; justify-items: center; gap: 2px; padding: 40px var(--e2) 0; color: var(--tinta-3); font-size: 13px; line-height: 1.35; text-align: center; }
.semafor__pas::before, .semafor__pas::after { position: absolute; top: 12.5px; left: calc(50% + 21px); width: calc(100% - 42px); height: 3px; border-radius: 2px; background: rgb(16 40 38 / 10%); content: ""; }
.semafor__pas::after { background: linear-gradient(90deg, var(--exe-verd), #2fb3ac); transform: scaleX(0); transform-origin: 0 50%; }
.semafor__pas:has(+ .semafor__pas:not(.semafor__pas--pendent))::after { transform: none; animation: creix 700ms var(--corba-surt) both; }
.semafor__pas:nth-child(2)::after { animation-delay: 150ms; }
.semafor__pas:nth-child(3)::after { animation-delay: 300ms; }
.semafor__pas:last-child::before, .semafor__pas:last-child::after { display: none; }
.semafor__pas .semafor__llum { position: absolute; top: 0; left: calc(50% - 14px); width: 28px; height: 28px; background-size: 15px; }
.semafor__llum { --llum: var(--linia-forta); display: inline-block; flex: none; width: 14px; height: 14px; border: 2px solid var(--llum); border-radius: 999px; background: var(--fons) center / 14px no-repeat; }
:is(.semafor__pas--fet, .semafor-curt--enviat) .semafor__llum { --llum: var(--exe-verd); }
:is(.semafor__pas--acceptat, .semafor-curt--acceptat, .semafor-curt--facturat) .semafor__llum { --llum: var(--correcte); }
:is(.semafor__pas--rebutjat, .semafor__pas--cancellat, .semafor-curt--rebutjat, .semafor-curt--cancellat, .semafor-curt--esborrat) .semafor__llum { --llum: var(--error); }
:is(.semafor__pas--parcial, .semafor-curt--parcial) .semafor__llum { --llum: var(--avis); background-color: var(--avis-fons); }
:is(.semafor__pas--fet, .semafor__pas--acceptat, .semafor__pas--rebutjat, .semafor__pas--cancellat, .semafor-curt--acceptat, .semafor-curt--facturat, .semafor-curt--rebutjat, .semafor-curt--cancellat, .semafor-curt--esborrat) .semafor__llum { background-color: var(--llum); box-shadow: 0 0 0 3px color-mix(in srgb, var(--llum) 16%, transparent), 0 2px 8px color-mix(in srgb, var(--llum) 40%, transparent); }
:is(.semafor__pas--fet, .semafor__pas--acceptat) .semafor__llum { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 12.5 4 4 8-9'/%3E%3C/svg%3E"); }
:is(.semafor__pas--rebutjat, .semafor__pas--cancellat) .semafor__llum { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3' stroke-linecap='round'%3E%3Cpath d='M8 8l8 8M16 8l-8 8'/%3E%3C/svg%3E"); }
.semafor__pas--parcial .semafor__llum { background-image: linear-gradient(90deg, var(--avis) 50%, transparent 50%); background-size: 100% 100%; }
.semafor__pas--pendent.is-actual .semafor__llum, .semafor__pas.is-actual:not(.semafor__pas--acceptat, .semafor__pas--rebutjat, .semafor__pas--cancellat) .semafor__llum::after { position: absolute; inset: -6px; border-radius: 50%; box-shadow: 0 0 0 2px color-mix(in srgb, var(--llum) 35%, transparent); animation: batega-anell 2.4s var(--corba-surt) infinite; content: ""; }
@keyframes batega-anell { 0% { opacity: 0.9; transform: scale(0.85); } 70%, 100% { opacity: 0; transform: scale(1.25); } }
.semafor__text { font-weight: 500; }
.semafor__pas:not(.semafor__pas--pendent) { color: var(--tinta-2); }
.semafor__pas.is-actual { color: var(--tinta); }
.semafor__pas.is-actual .semafor__text { font-weight: 600; }
.semafor__pas--acceptat.is-actual { color: var(--correcte); }
.semafor__pas:is(.semafor__pas--rebutjat, .semafor__pas--cancellat).is-actual { color: var(--error); }
.semafor__pas--parcial.is-actual { color: var(--avis); }
.semafor__data { margin-top: 2px; padding: 1px 8px; border-radius: 999px; background: rgb(16 40 38 / 5%); color: var(--tinta-2); font-size: 12px; font-weight: 500; font-variant-numeric: tabular-nums; }
.semafor__peu { display: flex; align-items: center; justify-content: center; gap: var(--e2); margin: 0; padding-top: var(--e3); border-top: 1px solid var(--linia); font-size: 12px; text-align: center; }
.semafor__peu::before { width: 14px; height: 14px; flex: none; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236f6b65' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 12a8 8 0 0 1-14.3 4.9M4 12a8 8 0 0 1 14.3-4.9M18.5 3v4h-4M5.5 21v-4h4'/%3E%3C/svg%3E") center / 14px no-repeat; content: ""; }
.semafor-curt { display: inline-flex; align-items: center; gap: var(--e2); color: var(--tinta-2); font-size: 13px; white-space: nowrap; }
.semafor-curt .semafor__llum { width: 10px; height: 10px; }
.semafor-curt--enviat .semafor__llum { background: var(--exe-verd-clar); }
:is(.semafor-curt--acceptat, .semafor-curt--facturat) { color: var(--correcte); }
:is(.semafor-curt--rebutjat, .semafor-curt--cancellat, .semafor-curt--esborrat) { color: var(--error); }
.semafor-curt--parcial { color: var(--avis); }
.semafor-curt__codi { color: var(--tinta-3); font-size: 12px; font-variant-numeric: tabular-nums; }
/* Cicle de Holded: sota el semàfor, el cobrament i el projecte en rajoles de dades. */
.cicle-holded { display: grid; gap: var(--e4); margin-top: var(--e5); padding-top: var(--e5); border-top: 1px solid var(--linia); }
.cicle-holded > .titol-subseccio { margin: 0; }
.cicle-holded__dades, .holded-resultat > dl { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: var(--e3); margin: 0; }
:is(.cicle-holded__dades, .holded-resultat > dl) > .dada-automatica { display: grid; align-content: start; gap: var(--e1); min-width: 0; margin: 0; padding: var(--e3) var(--e4); border-radius: var(--radi); background: #f7f9f8; box-shadow: inset 0 0 0 1px var(--linia); }
:is(.cicle-holded__dades, .holded-resultat > dl) dt { color: var(--tinta-3); font-size: 12px; font-weight: 500; }
:is(.cicle-holded__dades, .holded-resultat > dl) dd { margin: 0; overflow-wrap: anywhere; color: var(--tinta); font-size: 15px; font-weight: 600; font-variant-numeric: tabular-nums; }
.holded-resultat > dl > .dada-automatica:first-child dd { font-size: 19px; letter-spacing: -0.01em; }
.holded-resultat > dl > .camp--ample { grid-column: auto; }
.holded-resultat > dl > .camp--ample dd { display: flex; align-items: center; gap: var(--e2); font-size: 13px; font-weight: 500; }
.holded-resultat > dl > .camp--ample dd::before { width: 16px; height: 16px; flex: none; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2300807c' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 3h7l5 5v13H7zM14 3v5h5M10 13h6M10 17h6'/%3E%3C/svg%3E") center / 16px no-repeat; content: ""; }
@media (max-width: 640px) {
  .semafor { padding: var(--e4); }
  .semafor__passos { grid-template-columns: 1fr; gap: var(--e3); }
  .semafor__pas { min-height: 28px; padding: 3px 0 0 42px; justify-items: start; text-align: left; }
  .semafor__pas .semafor__llum { left: 0; }
  .semafor__pas::before, .semafor__pas::after { top: 34px; bottom: calc(-1 * var(--e3) + 4px); left: 12.5px; width: 3px; height: auto; transform-origin: 50% 0; }
  .semafor__peu { justify-content: flex-start; text-align: left; }
  .semafor__pas:has(+ .semafor__pas:not(.semafor__pas--pendent))::after { animation-name: creix-avall; }
}
@keyframes creix-avall { from { transform: scaleY(0); } }

/* Fase 13 · Projecte del Toggl: la bossa primer i les tasques plegades; repartiment per persona. */
.projecte-toggl .targeta > .titol-subseccio { margin: var(--e5) 0 var(--e2); }
.projecte-toggl .toggl-tasques { margin-top: var(--e5); }
.projecte-toggl .toggl-tasques > summary { margin-bottom: var(--e2); }
.projecte-toggl .accions { margin-top: var(--e5); }
.projecte-toggl .targeta > .avis { margin-top: var(--e4); }
.projecte-toggl dd > .camp__ajuda { display: block; }
.projecte-toggl .toggl-lectura { margin-top: var(--e2); }
.toggl-taula { min-width: 520px; }
.toggl-taula th, .toggl-taula td:first-child { white-space: nowrap; }
.toggl-taula tfoot td { border-top: 1px solid var(--linia); font-weight: 600; }
.toggl-taula .toggl-persona td { color: var(--tinta-2); font-size: 13px; }
.toggl-sobre { color: var(--error); font-weight: 600; }
.perfil-toggl .taula-desplacable { margin-top: var(--e3); }
.perfil-toggl .toggl-taula { min-width: 0; }
.perfil-toggl .toggl-taula td:first-child { overflow-wrap: anywhere; white-space: normal; }

/* R8-11: la informació del lead, només per consultar, a sota de l'objecte. */
.info-lead { margin-top: var(--e4); padding-top: var(--e4); border-top: 1px solid var(--linia); }
.info-lead__capcalera { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: var(--e2) var(--e4); }
.info-lead__titol { margin: 0; font-size: 14px; font-weight: 600; }
.info-lead__dades { margin-top: var(--e3); }
.info-lead__dades dd { overflow-wrap: anywhere; }
@media (max-width: 600px) {
  .info-lead__dades { grid-template-columns: minmax(0, 1fr); gap: var(--e1) 0; }
  .info-lead__dades dd + dt { margin-top: var(--e3); }
}

/* Equip i tarifes (P16): «Edita» i «⋯» a cada fila; el formulari i l'historial, en fulls. */
.equip__accions { width: 1%; text-align: right; white-space: nowrap; }
.equip__accions > * + * { margin-left: var(--e1); }
.equip__accions .boto-icona { vertical-align: middle; font-size: 18px; line-height: 1; }
.equip-dialeg { width: min(560px, calc(100vw - 32px)); }
.equip-dialeg--historial { width: min(720px, calc(100vw - 32px)); }
.equip-dialeg > .camp__ajuda { margin-bottom: var(--e4); }
.equip-dialeg .accions { margin-top: var(--e4); }

/* Safata de finances (només lectura) i estat del sistema. */
.finances { display: grid; gap: var(--e5); }
.taula-finances { min-width: 960px; }
.taula-finances__import { font-variant-numeric: tabular-nums; text-align: right; white-space: nowrap; }
.taula-finances__numero, .taula-finances__codi { font-variant-numeric: tabular-nums; white-space: nowrap; }
.taula-finances__codi { font-weight: 600; }

/* Catàleg d'Administració (04/11): la pell de les taules i els camps; aquí només mides. */
.serveis-eines { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--e3); margin: var(--e4) 0; }
.serveis-eines .cerca-dcp { flex: 1; max-width: 360px; margin: 0; }
.taula-serveis { table-layout: fixed; width: 100%; }
.taula-serveis .col-codi { width: 76px; }
.taula-serveis .col-cert { width: 70px; }
.taula-serveis .col-valoracio { width: 120px; }
.taula-serveis .col-import { width: 150px; }
.taula-serveis .col-mitjana { width: 90px; }
.taula-serveis .col-accio { width: 84px; }
.serveis-retirats { margin-top: var(--e4); }
.serveis-retirats > summary { padding: var(--e2) 0; font-weight: 600; cursor: pointer; }
.serveis-acord__bloc { margin: var(--e4) 0 var(--e2); font-size: 14px; font-weight: 600; }
.taula-desplacable { overflow-x: auto; }
.serveis-acord__pendents { margin: 0; padding-left: var(--e4); }
.servei-valor .segments { display: grid; grid-auto-columns: minmax(0, 1fr); grid-auto-flow: column; width: 100%; }
.servei-valor .segments label { display: flex; min-width: 0; }
.servei-valor .segments label > span { flex: 1; justify-content: center; }
.servei-valor :is(.servei-valor--preu, .servei-valor--unitat, .servei-valor--percentatge) { display: none; }
.servei-valor:has(input[value="fix"]:checked) .servei-valor--preu { display: block; }
.servei-valor:has(input[value="unitat"]:checked) :is(.servei-valor--preu, .servei-valor--unitat) { display: block; }
.servei-valor:has(input[value="percentatge"]:checked) .servei-valor--percentatge { display: block; }
@media (max-width: 640px) {
  .taula-serveis { table-layout: auto; }
  .taula-serveis :is(th, td):nth-child(3) { display: none; }
  .serveis-eines { flex-direction: column; align-items: stretch; }
}

/* «On som» (04/11): una línia de punts. Ple, el que és nou; buit, el que ve; gris, el que queda enrere. */
.estat__linia { position: relative; display: grid; gap: var(--e4); margin: var(--e4) 0; padding-left: var(--e5); }
.estat__linia::before { position: absolute; top: 6px; bottom: 6px; left: 5px; width: 2px; border-radius: 2px; background: var(--linia); content: ""; }
.estat__tram { position: relative; }
.estat__tram::before { position: absolute; top: 4px; left: calc(var(--e5) * -1); width: 12px; height: 12px; box-sizing: border-box; border-radius: 50%; background: var(--exe-verd); box-shadow: 0 0 0 3px #fff; content: ""; }
.estat__tram--proxim::before { border: 2px solid var(--exe-verd); background: #fff; }
.estat__tram--abans::before { background: var(--linia); }
.estat__tram h3 { margin: 0 0 var(--e1); font-size: 13px; font-weight: 600; }
.estat__tram ul { display: grid; gap: 3px; margin: 0; padding: 0; list-style: none; font-size: 13px; line-height: 1.4; }
.estat__tram li { position: relative; padding-left: 12px; }
.estat__tram li::before { position: absolute; top: 8px; left: 0; width: 4px; height: 4px; border-radius: 50%; background: var(--tinta-3); content: ""; }
.estat__tram--abans ul { color: var(--tinta-3); }
.estat__tram--abans > summary { display: flex; align-items: center; gap: var(--e1); cursor: pointer; list-style: none; }
.estat__tram--abans > summary::-webkit-details-marker { display: none; }
.estat__tram--abans > summary::after { color: var(--tinta-3); font-size: 11px; content: "▾"; }
.estat__tram--abans[open] > summary::after { content: "▴"; }
.taula-estils .previa-fitxa__miniatura { display: block; width: 56px; }

/* Embut de leads (R13-32): tot l'embut en columnes. Les targetes es mouen entre les fases. */
.embut { display: grid; grid-auto-columns: minmax(200px, 1fr); grid-auto-flow: column; gap: var(--e3); margin-top: var(--e4); padding-bottom: var(--e2); overflow-x: auto; }
.embut__columna { display: flex; flex-direction: column; min-height: 240px; padding: var(--e2); border-radius: 12px; background: #f4f6f5; transition: box-shadow 120ms; }
.embut__columna.is-sobre { box-shadow: inset 0 0 0 2px var(--exe-verd); }
.embut__titol { display: flex; align-items: center; justify-content: space-between; gap: var(--e2); margin: 0 0 var(--e2); padding: 2px var(--e1); font-size: 13px; font-weight: 600; }
.embut__titol a { color: inherit; text-decoration: none; }
.embut__targetes { display: grid; flex: 1; align-content: start; gap: var(--e2); }
.embut__targeta { display: grid; gap: 2px; padding: var(--e2) var(--e3); border-radius: 10px; background: #fff; box-shadow: 0 1px 2px rgb(0 0 0 / 8%); }
.embut__targeta[draggable="true"] { cursor: grab; }
.embut__targeta.is-arrossegant { opacity: .45; }
.embut__targeta a { overflow: hidden; color: inherit; font-size: 13px; font-weight: 600; text-decoration: none; text-overflow: ellipsis; white-space: nowrap; }
.embut__targeta a:hover { color: var(--exe-verd); }
.embut__dada { overflow: hidden; color: var(--tinta-3); font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.embut__peu { display: flex; align-items: center; justify-content: space-between; gap: var(--e2); margin-top: 2px; color: var(--tinta-3); font-size: 12px; }
.embut__buit { margin: 0; padding: var(--e2); color: var(--tinta-3); font-size: 12px; text-align: center; }

/* «On som»: marc al botó fins que es mira l'última actualització (l'Àlex, 04/11). */
.estat-boto.is-nou { position: relative; box-shadow: 0 0 0 2px var(--exe-verd); animation: estat-nou 1.8s ease-in-out infinite; }
@keyframes estat-nou { 50% { box-shadow: 0 0 0 2px var(--exe-verd), 0 0 0 7px rgb(0 128 124 / 18%); } }
@media (prefers-reduced-motion: reduce) { .estat-boto.is-nou { animation: none; } }
