@font-face {
  font-family: "Poppins"; font-style: normal; font-weight: 400; font-display: swap;
  src: local("Poppins Regular"), local("Poppins-Regular"),
       url("../fonts/poppins-latin-400.woff2") format("woff2");
}
@font-face {
  font-family: "Poppins"; font-style: normal; font-weight: 500; font-display: swap;
  src: local("Poppins Medium"), local("Poppins-Medium"),
       url("../fonts/poppins-latin-500.woff2") format("woff2");
}
@font-face {
  font-family: "Poppins"; font-style: normal; font-weight: 600; font-display: swap;
  src: local("Poppins SemiBold"), local("Poppins-SemiBold"),
       url("../fonts/poppins-latin-600.woff2") format("woff2");
}
@font-face {
  font-family: "Poppins"; font-style: normal; font-weight: 700; font-display: swap;
  src: local("Poppins Bold"), local("Poppins-Bold"),
       url("../fonts/poppins-latin-700.woff2") format("woff2");
}

/* ESCOLA — web públic de matrícula (Thuya Escuela).
   Design tokens de la casa: paleta elegant d'escola d'estètica (tinta càlida,
   fons ivori, accent bronze). El comandant del web públic construeix sobre
   aquestes variables; qualsevol ajust de marca es fa AQUÍ. */
:root {
  --tinta: #201b16;          /* text principal, quasi negre càlid */
  --tinta-suau: #6b6259;     /* text secundari */
  --fons: #faf7f2;           /* ivori */
  --fons-alt: #f1ebe2;       /* ivori fosc per a seccions alternes */
  --blanc: #ffffff;
  --bronze: #a5814b;         /* accent de marca */
  --bronze-fosc: #7c6335;    /* ≥ 4,5:1 sobre ivori i ivori fosc (era #8a6a3a: 4,22:1 sobre fons-alt) */
  --vora-camp: #857b6f;      /* vora de camps i botons: ≥ 3:1 sobre ivori, ivori fosc i blanc (WCAG 1.4.11; --linia dona 1,3:1) */
  --linia: #e3dbcd;
  --ok: #256b42;             /* ≥ 4,5:1 sobre ivori, fons-alt i ok-fons (era #2e7d4f: 4,26:1) */
  --error: #b3402e;
  --avis-fons: #fdf3e3;
  --radi: 14px;
  --ombra: 0 10px 30px rgba(32, 27, 22, .08);
  /* Poppins, la tipografia de l'escola (Adriana, 23/09/2026). Servida des de
     static/fonts (res de CDN). --serif es conserva com a nom per no tocar
     cada regla, però ja no és una serif. */
  --serif: "Poppins", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --sans: "Poppins", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;

  /* ── Ampliació del joc de tokens (mateix esperit: ivori, tinta, bronze) ── */
  --bronze-clar: #c9a870;
  --bronze-vel: rgba(165, 129, 75, .12);
  --tinta-fosca: #14100c;
  --ok-fons: #eaf4ee;
  --error-fons: #fbeceb;
  --avis: #7a5a12;           /* text d'avís (OBLIGATORIO…) ≥ 4,5:1 sobre avis-fons (era #9a7420: 3,9:1) */
  --neutre: #8b8378;
  --radi-petit: 9px;
  --radi-gran: 22px;
  --ombra-suau: 0 2px 8px rgba(32, 27, 22, .06);
  --ombra-alta: 0 22px 60px rgba(32, 27, 22, .16);
  --transicio: 180ms cubic-bezier(.4, 0, .2, 1);
  --amplada: 1180px;         /* contenidor estàndard */
  --amplada-estreta: 880px;  /* formulari i pantalles del procés */
  --amplada-mini: 520px;     /* represa */
  --pas: clamp(1rem, 3vw, 2rem);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0; background: var(--fons); color: var(--tinta);
  font-family: var(--sans); font-size: 16px; line-height: 1.55;
  -webkit-font-smoothing: antialiased;
}

/* ═══════════════════════════ Base tipogràfica ═══════════════════════════ */

h1, h2, h3 {
  font-family: var(--serif); font-weight: 500; line-height: 1.18;
  letter-spacing: -.01em; margin: 0 0 .4em;
}
h1 { font-size: clamp(1.85rem, 4.4vw, 3rem); }
h2 { font-size: clamp(1.35rem, 2.6vw, 1.85rem); }
h3 { font-size: 1.1rem; }
p { margin: 0 0 .9em; }
p:last-child { margin-bottom: 0; }
a { color: var(--bronze-fosc); text-decoration-thickness: 1px;
    text-underline-offset: 3px; transition: color var(--transicio); }
a:hover { color: var(--tinta); }
strong { font-weight: 600; }
img { max-width: 100%; height: auto; }

:focus-visible {
  outline: 2px solid var(--bronze-fosc); outline-offset: 3px;
  border-radius: 4px;
}
/* Sobre fons fosc (portada, peu) el contorn és blanc: el bronze fosc s'hi perdria. */
.hero :focus-visible, .peu :focus-visible, .curs-hero :focus-visible {
  outline-color: #fff;
}

.sobretitol {
  font-size: .78rem; letter-spacing: .18em; text-transform: uppercase;
  color: var(--bronze-fosc); font-weight: 600; margin: 0 0 .6em;
}
.prosa { color: var(--tinta-suau); }
.prosa p { margin-bottom: .8em; }
.prosa-legal { font-size: .92rem; max-height: 18rem; overflow-y: auto;
  padding-right: .5rem; }
.buit { color: var(--tinta-suau); font-style: italic; }

/* Text només per a lectors de pantalla (context dels enllaços «Editar», «Ver»…). */
.sr-nomes {
  position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

/* ═══════════════════════════ Estructura ════════════════════════════════ */

.contenidor { width: 100%; max-width: var(--amplada); margin: 0 auto;
  padding: 0 var(--pas); }
.contenidor-estret { max-width: var(--amplada-estreta); }
.contenidor-mini { max-width: var(--amplada-mini); }

main { min-height: 60vh; scroll-margin-top: 5rem; }
main:focus { outline: none; }  /* només rep el focus de l'enllaç «Saltar al contenido» */

/* «Saltar al contenido» (accessibilitat, 27/10/2026): invisible fins que rep el focus amb el
   teclat; llavors surt a dalt a l'esquerra, per sobre de la capçalera enganxada. */
.salta-contingut {
  position: absolute; left: .75rem; top: -4rem; z-index: 100;
  padding: .6rem 1rem; border-radius: var(--radi-petit, 8px);
  background: var(--tinta); color: var(--blanc); font-weight: 600;
  text-decoration: none; transition: top .15s ease;
}
.salta-contingut:focus, .salta-contingut:focus-visible {
  top: .75rem; color: var(--blanc);
  outline: 2px solid #fff; outline-offset: 2px;
}
@media (prefers-reduced-motion: reduce) { .salta-contingut { transition: none; } }

/* Els enllaços del «Falta completar» porten el focus a un camp: que no quedi sota la capçalera. */
.camp-camp, .consent { scroll-margin-top: 6rem; }

.capcalera {
  position: sticky; top: 0; z-index: 40;
  display: flex; align-items: center; justify-content: space-between;
  gap: 1rem; padding: .85rem var(--pas);
  background: rgba(250, 247, 242, .88);
  backdrop-filter: saturate(140%) blur(10px);
  border-bottom: 1px solid var(--linia);
}
.marca { display: flex; align-items: baseline; gap: .45rem;
  text-decoration: none; color: var(--tinta); }
.marca-nom { font-family: var(--serif); font-size: 1.3rem; letter-spacing: .22em; }
.marca-sub { font-size: .72rem; letter-spacing: .3em; text-transform: uppercase;
  color: var(--bronze-fosc); }
.nav-cap { display: flex; align-items: center; gap: clamp(.5rem, 2vw, 1.4rem); }
.nav-cap a { font-size: .9rem; text-decoration: none; color: var(--tinta-suau); }
.nav-cap a:hover { color: var(--bronze-fosc); }
.nav-desat {
  font-size: .78rem; color: var(--ok); background: var(--ok-fons);
  border-radius: 999px; padding: .2rem .7rem; white-space: nowrap;
}
.nav-desat::before { content: "\2713\00a0"; }

.peu {
  margin-top: clamp(3rem, 8vw, 6rem); padding: 2.4rem var(--pas);
  background: var(--tinta); color: #cfc6b8; text-align: center;
  font-size: .86rem;
}

.seccio { padding: clamp(2.6rem, 7vw, 5.5rem) 0; }
.seccio-alt { background: var(--fons-alt); }
.seccio-cap { max-width: 46rem; margin: 0 auto clamp(1.8rem, 4vw, 3rem);
  text-align: center; }
.seccio-intro { color: var(--tinta-suau); }

.pag-cap { margin: clamp(1.4rem, 4vw, 2.4rem) 0 1.6rem; }
.pag-cap-petit h2 { margin-bottom: .3em; }
.pag-intro { color: var(--tinta-suau); max-width: 46rem; }

/* ═══════════════════════════ Botons i marques ══════════════════════════ */

.btn {
  display: inline-flex; align-items: center; justify-content: center;
  gap: .5rem; padding: .72rem 1.35rem; border: 1px solid transparent;
  border-radius: 999px; font: inherit; font-size: .95rem; font-weight: 600;
  text-decoration: none; cursor: pointer; white-space: nowrap;
  transition: transform var(--transicio), background var(--transicio),
              color var(--transicio), border-color var(--transicio),
              box-shadow var(--transicio);
}
.btn:hover { transform: translateY(-1px); }
.btn:active { transform: translateY(0); }
/* Blanc sobre el bronze fosc (5,0:1); el bronze clar donava 3,59:1 i no arribava al 4,5:1. */
.btn-principal { background: var(--bronze-fosc); color: #fff;
  box-shadow: 0 8px 22px rgba(138, 106, 58, .30); }
.btn-principal:hover { background: #5f4828; color: #fff;
  box-shadow: 0 12px 28px rgba(109, 83, 48, .38); }
.btn-linia { border-color: var(--vora-camp); background: var(--blanc);
  color: var(--tinta); }
.btn-linia:hover { border-color: var(--bronze); color: var(--bronze-fosc); }
.btn-fantasma { border-color: var(--vora-camp); color: var(--tinta-suau);
  padding: .45rem 1rem; font-size: .86rem; }
.btn-fantasma:hover { border-color: var(--bronze); color: var(--bronze-fosc); }
.btn-perill { background: var(--blanc); border-color: #e6cdc8;
  color: var(--error); }
.btn-perill:hover { background: var(--error-fons); border-color: var(--error); }
.btn-gran { padding: .95rem 2rem; font-size: 1.03rem; }
.btn-petit { padding: .38rem .9rem; font-size: .85rem; }
.btn:disabled, .btn[aria-disabled="true"] {
  opacity: .5; cursor: not-allowed; transform: none; box-shadow: none;
}

.badge {
  display: inline-block; padding: .22rem .7rem; border-radius: 999px;
  font-size: .72rem; font-weight: 700; letter-spacing: .08em;
  text-transform: uppercase; background: var(--bronze-vel);
  color: var(--bronze-fosc); max-width: 100%;
}
.badge-grau_mitja { background: #eef3ec; color: #46663f; }
.badge-grau_superior { background: #eaf0f5; color: #3b5a72; }
.badge-master { background: #201b16; color: var(--bronze-clar); }
.badge-certificat { background: var(--bronze-vel); color: var(--bronze-fosc); }
.badge-pack { background: #f3ecf4; color: #6a4a70; }
.badge-pfi { background: #fbf1e3; color: #7a5420; }

.senyal {  /* pastilla d'estat (.marca la fa servir l'enllaç de la capçalera
              de base_public.html: no la trepitgem) */
  font-size: .8rem; font-weight: 600; border-radius: 999px;
  padding: .18rem .65rem; white-space: nowrap; display: inline-block;
}
.senyal.es-ok { background: var(--ok-fons); color: var(--ok); }
.senyal.es-ok::before { content: "\2713\00a0"; }
.senyal.es-error { background: var(--error-fons); color: var(--error); }
.senyal.es-error::before { content: "\26a0\00a0"; }
.senyal.es-pendent { background: var(--avis-fons); color: var(--avis); }
.senyal.es-neutre { background: var(--fons-alt); color: var(--tinta-suau); }
.etiqueta-obl, .etiqueta-info {
  font-size: .7rem; font-weight: 700; letter-spacing: .06em;
  text-transform: uppercase; padding: .16rem .55rem; border-radius: 999px;
}
.etiqueta-obl { background: var(--avis-fons); color: var(--avis); }
.etiqueta-info { background: var(--fons-alt); color: var(--tinta-suau); }

.banda {
  border-radius: var(--radi); padding: 1.1rem 1.3rem; margin: 0 0 1.6rem;
  border: 1px solid var(--linia); background: var(--blanc);
  box-shadow: var(--ombra-suau); scroll-margin-top: 5rem;
}
.banda-anar { font-size: .9rem; }
.banda-anar a { font-weight: 600; white-space: nowrap; }
.banda h2 { font-size: 1.15rem; margin-bottom: .35em; }
.banda ul { margin: .3rem 0 .6rem; padding-left: 1.2rem; }
.banda li { margin: .15rem 0; }
.banda-nota, .banda-subtitol { font-size: .9rem; color: var(--tinta-suau); }
.banda-subtitol { font-weight: 600; margin: .6rem 0 .2rem; }
.banda-correccio { background: var(--avis-fons); border-color: #ecd9b0;
  border-left: 5px solid var(--avis); }
.banda-falten { background: var(--avis-fons); border-color: #ecd9b0; }
.banda-error { background: var(--error-fons); border-color: #e6cdc8;
  border-left: 5px solid var(--error); }
.banda-ok { background: var(--ok-fons); border-color: #cfe4d6;
  border-left: 5px solid var(--ok); }

.caixa {
  background: var(--blanc); border: 1px solid var(--linia);
  border-radius: var(--radi); padding: clamp(1.2rem, 3vw, 1.9rem);
  box-shadow: var(--ombra);
}
.caixa-nota { margin-top: 1rem; font-size: .9rem; color: var(--tinta-suau); }

.plegable > summary {
  cursor: pointer; font-size: .92rem; font-weight: 600;
  color: var(--bronze-fosc); padding: .5rem 0; list-style: none;
}
.plegable > summary::-webkit-details-marker { display: none; }
.plegable > summary::before {
  content: "+"; display: inline-block; width: 1.35em; height: 1.35em;
  margin-right: .5rem; text-align: center; line-height: 1.3em;
  border: 1px solid var(--linia); border-radius: 50%; font-weight: 700;
  transition: transform var(--transicio), background var(--transicio);
}
.plegable[open] > summary::before { content: "\2212";
  background: var(--bronze-vel); }
.plegable-nota { font-weight: 400; color: var(--tinta-suau); }
.plegable-cos, .plegable-legal .prosa { animation: revela .3s ease both; }

@keyframes revela {
  from { opacity: 0; transform: translateY(-6px); }
  to { opacity: 1; transform: none; }
}

/* ═══════════════════════════ Landing: hero ═════════════════════════════ */

.hero {
  position: relative; isolation: isolate; overflow: hidden;
  display: flex; align-items: flex-end;
  min-height: clamp(30rem, 76vh, 46rem);
  color: #fff;
}
.hero-slides { position: absolute; inset: 0; z-index: -1; }
.hero-slide {
  position: absolute; inset: 0; opacity: 0; background: var(--tinta);
  background-size: cover; background-position: center;
  transition: opacity 1s ease;
  transform: scale(1.04);
}
.hero-slide.es-actiu { opacity: 1; transform: scale(1);
  transition: opacity 1s ease, transform 9s linear; }
/* Slides sense imatge: degradats elegants amb els tokens de marca. */
.hero-slide:not([style]) { background-image:
  linear-gradient(135deg, #2a231c 0%, #574127 55%, var(--bronze) 100%); }
.hero-slide:not([style]):nth-child(2n) { background-image:
  linear-gradient(150deg, #1b1713 0%, #4a3a2a 60%, var(--bronze-clar) 100%); }
.hero-slide:not([style]):nth-child(3n) { background-image:
  linear-gradient(120deg, #241f1a 0%, #7a5c33 70%, #d8bf94 100%); }
.hero-vel { position: absolute; inset: 0; background:
  linear-gradient(180deg, rgba(20, 16, 12, .62) 0%, rgba(20, 16, 12, .5) 40%,
                  rgba(20, 16, 12, .85) 100%); }
.hero-slide-text {
  position: absolute; top: clamp(5rem, 12vh, 8rem); left: 0; right: 0;
  padding: 0 var(--pas); text-align: center;
}
.hero-badge {
  display: inline-block; margin: 0; padding: .3rem 1rem; border-radius: 999px;
  background: rgba(20, 16, 12, .4); border: 1px solid rgba(255, 255, 255, .55);
  font-size: .8rem; letter-spacing: .12em; text-transform: uppercase;
  text-shadow: 0 1px 8px rgba(0, 0, 0, .45);
  backdrop-filter: blur(4px);
}
.hero-slide-sub { margin: .6rem auto 0; max-width: 34rem; font-size: .95rem;
  color: #fff; text-shadow: 0 1px 10px rgba(0, 0, 0, .5); }
.hero-cos {
  position: relative; width: 100%; max-width: var(--amplada);
  margin: 0 auto; padding: clamp(3rem, 10vh, 6rem) var(--pas)
          clamp(3.5rem, 9vh, 5.5rem);
}
.hero-titol { max-width: 26ch; margin-bottom: .3em; color: #fff;
  text-shadow: 0 2px 30px rgba(0, 0, 0, .35); }
.hero-sub { max-width: 46ch; color: #fff; font-size: 1.05rem;
  text-shadow: 0 1px 12px rgba(0, 0, 0, .4); }
.hero-accions { display: flex; flex-wrap: wrap; gap: .8rem; margin-top: 1.8rem; }
.hero-accions .btn-linia { background: rgba(255, 255, 255, .1); color: #fff;
  border-color: rgba(255, 255, 255, .45); }
.hero-accions .btn-linia:hover { background: #fff; color: var(--tinta); }
.hero-punts { position: absolute; bottom: .5rem; left: 0; right: 0;
  display: flex; justify-content: center; align-items: center; gap: .25rem; }
/* El punt que es veu fa 4 px d'alt, però el botó té una zona tàctil de 44 px (2.5.5/2.5.8):
   la barreta es pinta amb un degradat que només omple el centre. */
.hero-punt {
  width: 44px; height: 44px; padding: 0; border: 0; border-radius: 4px;
  background: linear-gradient(rgba(255, 255, 255, .6), rgba(255, 255, 255, .6)) center / 34px 4px no-repeat;
  cursor: pointer;
  transition: background var(--transicio);
}
.hero-punt.es-actiu { background: linear-gradient(#fff, #fff) center / 40px 4px no-repeat; }
.hero-pausa {
  width: 44px; height: 44px; padding: 0; border: 0; border-radius: 50%;
  background: transparent; color: #fff; cursor: pointer; font-size: 1rem; line-height: 1;
}
.hero-pausa svg[hidden] { display: none; }
.hero-pausa:hover { background: rgba(255, 255, 255, .18); }

/* ═══════════════════════ Landing: àrees i cursos ═══════════════════════ */

.graella-arees {
  display: grid; gap: 1rem;
  grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
}
.area {
  background: var(--blanc); border: 1px solid var(--linia);
  border-radius: var(--radi); box-shadow: var(--ombra-suau);
  transition: box-shadow var(--transicio), transform var(--transicio),
              border-color var(--transicio);
}
.area:hover { box-shadow: var(--ombra); border-color: var(--bronze-clar); }
.area[open] { grid-column: 1 / -1; box-shadow: var(--ombra-alta);
  border-color: var(--bronze-clar); }
.area-cap {
  display: flex; align-items: center; gap: .9rem; padding: 1rem 1.1rem;
  cursor: pointer; list-style: none;
}
.area-cap::-webkit-details-marker { display: none; }
.area-imatge {
  flex: 0 0 auto; width: 3.1rem; height: 3.1rem; border-radius: 50%;
  background-size: cover; background-position: center;
  background-color: var(--fons-alt); position: relative;
}
.area-imatge.es-sense { background-image:
  linear-gradient(135deg, var(--bronze) 0%, #5f4828 100%); }
.area-imatge.es-sense::after {
  content: attr(data-inicial); position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--serif); font-size: 1.3rem; color: #fff;
}
.area-text { display: flex; flex-direction: column; flex: 1 1 auto; }
.area-nom { font-family: var(--serif); font-size: 1.16rem; }
.area-compte { font-size: .8rem; color: var(--tinta-suau); }
.area-fletxa {
  flex: 0 0 auto; width: .55rem; height: .55rem; margin-right: .3rem;
  border-right: 2px solid var(--bronze); border-bottom: 2px solid var(--bronze);
  transform: rotate(45deg); transition: transform var(--transicio);
}
.area[open] .area-fletxa { transform: rotate(-135deg); }
.area-cos { padding: 0 1.1rem 1.3rem; animation: revela .35s ease both; }
.area-desc { color: var(--tinta-suau); font-size: .92rem;
  border-top: 1px solid var(--linia); padding-top: .9rem; }
.graella-cursos {
  display: grid; gap: 1rem;
  grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
}
.curs-targeta {
  display: flex; flex-direction: column; gap: .5rem;
  background: var(--fons); border: 1px solid var(--linia);
  border-radius: var(--radi-petit); padding: 1.1rem;
  transition: transform var(--transicio), box-shadow var(--transicio),
              background var(--transicio);
}
.curs-targeta:hover { transform: translateY(-3px); background: var(--blanc);
  box-shadow: var(--ombra); }
.curs-targeta-cap { display: flex; align-items: center; justify-content: space-between;
  gap: .5rem; flex-wrap: wrap; }
.curs-durada { font-size: .78rem; color: var(--tinta-suau); }
.curs-nom { font-size: 1.08rem; margin: 0; }
.curs-meta { font-size: .82rem; color: var(--tinta-suau); margin: 0; }
.btn-curs {
  margin-top: auto; align-self: flex-start; padding: .35rem 0;
  font-size: .9rem; font-weight: 600; color: var(--bronze-fosc);
  text-decoration: none; border-radius: 0;
}
.btn-curs:hover { color: var(--tinta); gap: .8rem; }

.seccio-passos { background: var(--fons-alt); }
.passos-info {
  list-style: none; margin: 0; padding: 0; display: grid; gap: 1.4rem;
  grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
  counter-reset: passos;
}
.passos-info li { background: var(--blanc); border-radius: var(--radi);
  padding: 1.4rem; border: 1px solid var(--linia); }
.passos-info h3 { margin: .7rem 0 .3em; }
.passos-info p { font-size: .9rem; color: var(--tinta-suau); margin: 0; }
.passos-num {
  display: inline-flex; align-items: center; justify-content: center;
  width: 2.1rem; height: 2.1rem; border-radius: 50%;
  background: var(--bronze-vel); color: var(--bronze-fosc);
  font-family: var(--serif); font-size: 1.1rem;
}

/* ═══════════════════════════ Fitxa del curs ════════════════════════════ */

.curs-hero {
  position: relative; isolation: isolate; color: #fff;
  background-size: cover; background-position: center;
  background-color: var(--tinta);
  padding: clamp(2.5rem, 8vw, 5rem) 0 clamp(2rem, 6vw, 3.5rem);
}
.curs-hero.es-degradat { background-image:
  linear-gradient(130deg, #241f19 0%, #5d4527 60%, var(--bronze) 100%); }
.curs-hero .hero-vel { z-index: -1; }
.curs-hero-cos { position: relative; }
.curs-ruta { font-size: .82rem; letter-spacing: .16em; text-transform: uppercase;
  color: rgba(255, 255, 255, .8); }
.curs-hero h1 { color: #fff; max-width: 30ch; }
.curs-fets { list-style: none; display: flex; flex-wrap: wrap; gap: 1.2rem;
  margin: 1.2rem 0 0; padding: 0; font-size: .92rem;
  color: rgba(255, 255, 255, .92); }
.curs-fets strong { display: block; font-size: .72rem; letter-spacing: .12em;
  text-transform: uppercase; color: rgba(255, 255, 255, .65); font-weight: 600; }
.curs-graella {
  display: grid; gap: clamp(1.4rem, 4vw, 2.6rem);
  padding-top: clamp(2rem, 5vw, 3rem);
  grid-template-columns: 1fr;
}
.curs-lateral { align-self: start; }
.caixa-matricula h2 { font-size: 1.25rem; }
.caixa-matricula p { font-size: .92rem; color: var(--tinta-suau); }
.caixa-matricula .btn-gran { width: 100%; margin-top: .4rem; }
.caixa-pagament { margin-top: 1.6rem; background: var(--fons-alt);
  box-shadow: none; }

/* ═══════════════════════ Procés: passos i progrés ══════════════════════ */

.passos { margin: 1.4rem 0 0; }
.passos ol { list-style: none; display: flex; flex-wrap: wrap; gap: .35rem;
  margin: 0; padding: 0; }
.pas { flex: 1 1 8rem; }
.pas > a, .pas > span {
  display: flex; align-items: center; gap: .55rem; padding: .55rem .8rem;
  border-radius: var(--radi-petit); background: var(--blanc);
  border: 1px solid var(--linia); text-decoration: none;
  color: var(--tinta-suau); font-size: .88rem;
  transition: border-color var(--transicio), color var(--transicio),
              background var(--transicio);
}
.pas > a:hover { border-color: var(--bronze-clar); color: var(--tinta); }
.pas-num {
  flex: 0 0 auto; width: 1.55rem; height: 1.55rem; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  background: var(--fons-alt); font-size: .8rem; font-weight: 700;
}
.pas.es-actual > a, .pas.es-actual > span {
  background: var(--tinta); border-color: var(--tinta); color: #fff;
}
.pas.es-actual .pas-num { background: var(--bronze-fosc); color: #fff; }
.pas.es-fet:not(.es-actual) .pas-num { background: var(--ok-fons);
  color: var(--ok); }
.pas.es-fet:not(.es-actual) .pas-num::after { content: "\2713"; font-size: .9rem; }
/* Pas fet: només la marca ✓ (abans sortia el número i la marca enganxats: «1✓»). */
.pas.es-fet:not(.es-actual) .pas-num { font-size: 0; }

.progres {
  margin: 1.6rem 0; padding: 1rem 1.2rem; background: var(--blanc);
  border: 1px solid var(--linia); border-radius: var(--radi);
  box-shadow: var(--ombra-suau);
}
.progres-barra { height: 8px; border-radius: 999px; background: var(--fons-alt);
  overflow: hidden; box-shadow: inset 0 0 0 1px var(--vora-camp); }
.progres-barra > span {
  display: block; height: 100%; border-radius: 999px;
  background: linear-gradient(90deg, var(--bronze-clar), var(--bronze));
  transition: width .5s cubic-bezier(.4, 0, .2, 1);
}
.progres-text { margin: .55rem 0 0; font-size: .88rem; color: var(--tinta-suau); }
.progres-pct { float: right; font-weight: 700; color: var(--bronze-fosc); }
.progres.es-complet .progres-barra > span { background: var(--ok); }
.progres.es-complet .progres-text strong { color: var(--ok); }

/* ═══════════════════════════ Formulari ═════════════════════════════════ */

.blocs { counter-reset: bloc; display: flex; flex-direction: column;
  gap: clamp(1.2rem, 3vw, 1.8rem); }
.bloc {
  background: var(--blanc); border: 1px solid var(--linia);
  border-radius: var(--radi); box-shadow: var(--ombra-suau);
  padding: clamp(1.1rem, 3vw, 1.8rem); scroll-margin-top: 5rem;
}
.bloc:empty { display: none; }
.bloc-cap { display: flex; align-items: flex-start; gap: .9rem;
  margin-bottom: 1.2rem; flex-wrap: wrap; }
.bloc-cap > div { flex: 1 1 12rem; min-width: 0; }
.bloc-cap h2 { margin-bottom: .15em; }
.bloc-num {
  counter-increment: bloc; flex: 0 0 auto;
  width: 2.2rem; height: 2.2rem; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  background: var(--tinta); color: var(--bronze-clar);
  font-family: var(--serif); font-size: 1.05rem;
}
.bloc-num::before { content: counter(bloc); }
.bloc-intro { font-size: .9rem; color: var(--tinta-suau); margin: 0; }
.bloc-marca { margin-left: auto; }

.graella-camps {
  display: grid; gap: 1rem 1.1rem;
  grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
}
.camp { display: flex; flex-direction: column; min-width: 0; }
.camp-textarea { grid-column: 1 / -1; }
.camp-etiqueta { font-size: .84rem; font-weight: 600; color: var(--tinta);
  margin-bottom: .3rem; }
.req { color: var(--bronze-fosc); text-decoration: none; margin-left: .15rem;
  border: 0; }
.camp-camp {
  /* 16 px com a mínim: per sota, iOS Safari fa zoom en enfocar el camp. */
  font: inherit; font-size: 1rem; color: var(--tinta);
  background: var(--fons); border: 1px solid var(--vora-camp);
  border-radius: var(--radi-petit); padding: .62rem .8rem; width: 100%;
  transition: border-color var(--transicio), background var(--transicio),
              box-shadow var(--transicio);
}
.camp-camp:hover { border-color: var(--bronze-fosc); }
.camp-camp:focus {
  background: var(--blanc); border-color: var(--bronze-fosc);
  box-shadow: 0 0 0 3px var(--bronze-vel);
}
/* El contorn de focus del teclat no es treu mai (WCAG 2.4.7): només el del ratolí queda net. */
.camp-camp:focus:not(:focus-visible) { outline: none; }
.camp-camp:focus-visible { outline: 2px solid var(--bronze-fosc); outline-offset: 2px; }
textarea.camp-camp { resize: vertical; min-height: 5rem; }
select.camp-camp { appearance: none; cursor: pointer;
  background-image: linear-gradient(45deg, transparent 50%, var(--bronze) 50%),
                    linear-gradient(135deg, var(--bronze) 50%, transparent 50%);
  background-position: calc(100% - 18px) 55%, calc(100% - 12px) 55%;
  background-size: 6px 6px, 6px 6px; background-repeat: no-repeat;
  padding-right: 2.2rem; }
.camp-casella { display: flex; align-items: center; gap: .5rem;
  padding: .5rem 0; font-size: .95rem; }
.camp-casella input { width: 1.15rem; height: 1.15rem; accent-color: var(--bronze); }
.camp-ajuda { font-size: .78rem; color: var(--tinta-suau); margin: .3rem 0 0; }
.camp-estat { font-size: .78rem; margin-top: .25rem; min-height: 1.15rem;
  display: block; }
.camp-estat .senyal { animation: revela .25s ease both; }
.camp-estat.htmx-request { opacity: .45; }
/* El navegador pinta el camp en error quan l'indicador porta l'error. */
.camp:has(> .camp-estat .es-error) > .camp-camp {
  border-color: var(--error); background: var(--error-fons);
}

.fitxa-curs {
  display: grid; gap: 1rem; margin-bottom: 1.4rem; padding: 1.1rem;
  grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
  background: var(--fons-alt); border-radius: var(--radi-petit);
  border: 1px dashed var(--linia);
}
.fitxa-curs-etiqueta { font-size: .72rem; letter-spacing: .12em;
  text-transform: uppercase; color: var(--tinta-suau); margin: 0 0 .2rem;
  font-weight: 600; }
.fitxa-curs-valor { margin: 0; font-weight: 600; font-size: .96rem; }

/* ── Consentiments ─────────────────────────────────────────────────────── */

.consents { display: flex; flex-direction: column; gap: .9rem; }
.consent {
  border: 1px solid var(--linia); border-radius: var(--radi-petit);
  padding: 1rem 1.1rem; background: var(--fons);
}
.consent.es-obligatori { border-left: 4px solid var(--bronze); }
.consent-cap { display: flex; align-items: center; gap: .6rem;
  flex-wrap: wrap; }
.consent-cap h3 { margin: 0; font-size: 1.02rem; }
.consent-respostes { display: flex; align-items: center; gap: .6rem;
  flex-wrap: wrap; margin-top: .7rem; }
.btn-consent {
  font: inherit; font-size: .88rem; font-weight: 600; cursor: pointer;
  padding: .45rem 1.1rem; border-radius: 999px; background: var(--blanc);
  border: 1px solid var(--vora-camp); color: var(--tinta-suau);
  transition: all var(--transicio);
}
.btn-consent:hover { border-color: var(--bronze); color: var(--tinta); }
.btn-consent.es-si.es-triat { background: var(--ok); border-color: var(--ok);
  color: #fff; }
.btn-consent.es-no.es-triat { background: var(--tinta); border-color: var(--tinta);
  color: #fff; }
.consent-estat { font-size: .8rem; }

.accions-peu { margin: clamp(1.8rem, 5vw, 3rem) 0; text-align: center; }
.accions-nota { font-size: .88rem; color: var(--tinta-suau); margin: .9rem auto 0;
  max-width: 40rem; }
/* Text d'ajuda de la zona de firma (29/10/2026): separat de l'etiqueta «Firma del alumno»
   que el segueix (abans hi anava enganxat) i alineat com la resta de la pantalla. */
.ajuda-firma { margin: 0 0 1.2rem; max-width: none; }

/* ═══════════════════════════ Documents ═════════════════════════════════ */

.documents { display: flex; flex-direction: column; gap: 1rem; }
.doc {
  background: var(--blanc); border: 1px solid var(--linia);
  border-left: 4px solid var(--linia);
  border-radius: var(--radi); padding: 1.1rem 1.3rem;
  box-shadow: var(--ombra-suau); scroll-margin-top: 5rem;
}
.doc-validat { border-left-color: var(--ok); }
.doc-pendent { border-left-color: var(--bronze); }
.doc-incorrecte { border-left-color: var(--error); background: var(--error-fons); }
.doc-cap { display: flex; align-items: center; justify-content: space-between;
  gap: .8rem; flex-wrap: wrap; }
.doc-titol { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.doc-titol h2 { font-size: 1.1rem; margin: 0; }
.doc-ajuda { font-size: .85rem; color: var(--tinta-suau); margin: .4rem 0 0; }
.doc-fitxer {
  display: flex; align-items: center; gap: .7rem; flex-wrap: wrap;
  margin-top: .9rem; padding: .7rem .9rem; background: var(--fons);
  border: 1px solid var(--linia); border-radius: var(--radi-petit);
}
.doc-icona {
  font-size: .68rem; font-weight: 700; letter-spacing: .05em;
  background: var(--tinta); color: var(--bronze-clar); padding: .25rem .45rem;
  border-radius: 4px;
}
.doc-nom { font-weight: 600; font-size: .92rem; word-break: break-all;
  flex: 1 1 8rem; }
.doc-mida { font-size: .8rem; color: var(--tinta-suau); }
.doc-esborra { display: inline; margin: 0; }
.doc-motiu { margin: .8rem 0 0; font-size: .88rem; color: var(--error); }
.doc-puja { display: flex; align-items: center; gap: .7rem; flex-wrap: wrap;
  margin-top: .9rem; }
.fitxer { display: flex; align-items: center; gap: .7rem; flex-wrap: wrap;
  flex: 1 1 14rem; cursor: pointer; }
.fitxer input[type="file"] {
  position: absolute; width: 1px; height: 1px; opacity: 0; overflow: hidden;
}
.fitxer-btn {
  display: inline-block; padding: .45rem 1rem; border-radius: 999px;
  border: 1px dashed var(--vora-camp); background: var(--blanc);
  color: var(--bronze-fosc); font-size: .87rem; font-weight: 600;
  transition: all var(--transicio);
}
.fitxer:hover .fitxer-btn { background: var(--bronze-vel);
  border-style: solid; }
.fitxer input:focus-visible + .fitxer-btn { outline: 2px solid var(--bronze);
  outline-offset: 2px; }
.fitxer-nom { font-size: .84rem; color: var(--tinta-suau); word-break: break-all; }

/* ═══════════════════════ Revisió i firma ═══════════════════════════════ */

.resum {
  background: var(--blanc); border: 1px solid var(--linia);
  border-radius: var(--radi); box-shadow: var(--ombra-suau);
  padding: 1.2rem 1.4rem; margin-bottom: 1.1rem;
}
.resum-cap { display: flex; align-items: baseline; justify-content: space-between;
  gap: 1rem; border-bottom: 1px solid var(--linia); padding-bottom: .6rem;
  margin-bottom: .8rem; }
.resum-cap h2 { font-size: 1.2rem; margin: 0; }
.resum-editar { font-size: .85rem; font-weight: 600; white-space: nowrap; }
.resum-files { margin: 0; display: grid; gap: .1rem; }
.resum-fila {
  display: grid; grid-template-columns: 1fr; gap: .1rem;
  padding: .45rem .6rem; border-radius: 6px;
}
.resum-fila:nth-child(odd) { background: var(--fons); }
.resum-fila.es-falta { background: var(--avis-fons); }
.resum-fila dt { font-size: .78rem; color: var(--tinta-suau);
  text-transform: uppercase; letter-spacing: .06em; font-weight: 600; }
.resum-fila dd { margin: 0; font-size: .96rem; word-break: break-word; }
.resum-veure { font-size: .85rem; margin-left: .4rem; }

.firma-zona {
  background: var(--blanc); border: 1px solid var(--bronze-clar);
  border-radius: var(--radi-gran); padding: clamp(1.2rem, 4vw, 2.2rem);
  box-shadow: var(--ombra); margin-top: 2rem; scroll-margin-top: 5rem;
}
.firmes { display: grid; gap: 1.2rem;
  grid-template-columns: repeat(auto-fit, minmax(17rem, 1fr)); }
.firma { display: flex; flex-direction: column; }
.firma-etiqueta { font-size: .88rem; font-weight: 600; margin-bottom: .4rem; }
.firma-nom { display: block; font-weight: 400; font-size: .8rem;
  color: var(--tinta-suau); }
.firma-llenc {
  width: 100%; height: 180px; touch-action: none; cursor: crosshair;
  background: var(--fons); border: 1px dashed var(--vora-camp);
  border-radius: var(--radi-petit);
  background-image: linear-gradient(var(--linia), var(--linia));
  background-size: 82% 1px; background-position: 50% 76%;
  background-repeat: no-repeat;
}
.firma-llenc.es-firmat { border-style: solid; background-color: var(--blanc); }
.firma-peu { display: flex; align-items: center; justify-content: space-between;
  gap: .6rem; margin-top: .5rem; }
.declaracio {
  display: flex; align-items: flex-start; gap: .7rem; margin: 1.6rem 0 0;
  padding: 1rem 1.1rem; background: var(--fons); border-radius: var(--radi-petit);
  border: 1px solid var(--linia); font-size: .9rem; color: var(--tinta-suau);
  cursor: pointer;
}
.declaracio input { margin-top: .15rem; width: 1.2rem; height: 1.2rem;
  accent-color: var(--bronze); flex: 0 0 auto; }

/* ═══════════════════════════ Estat de l'expedient ══════════════════════ */

.celebracio { text-align: center; padding: clamp(2rem, 6vw, 3.5rem) 0 1rem; }
.celebracio-marca {
  display: inline-flex; align-items: center; justify-content: center;
  width: 4.2rem; height: 4.2rem; border-radius: 50%; font-size: 2rem;
  background: var(--ok-fons); color: var(--ok); margin-bottom: 1rem;
  animation: apareix .5s cubic-bezier(.2, 1.4, .4, 1) both;
}
.celebracio p { max-width: 34rem; margin: 0 auto; color: var(--tinta-suau); }
@keyframes apareix { from { transform: scale(.4); opacity: 0; } }

.fitxa-estat { margin: 1.4rem 0; }
.fitxa-estat-dades {
  display: grid; gap: 1rem; padding: 1.2rem;
  grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
  background: var(--blanc); border: 1px solid var(--linia);
  border-radius: var(--radi); box-shadow: var(--ombra-suau);
}
.senyal.es-estat { font-size: .9rem; padding: .3rem .9rem; }
.es-borrador, .es-pend_documentacio { background: var(--avis-fons);
  color: var(--avis); }
.es-pend_validacio { background: #eaf0f5; color: #3b5a72; }
.es-pend_correccio { background: var(--avis-fons); color: var(--error); }
.es-validada, .es-finalitzada { background: var(--ok-fons); color: var(--ok); }
.es-cancelada { background: var(--error-fons); color: var(--error); }

.timeline { list-style: none; margin: 1.6rem 0; padding: 0 0 0 .4rem; }
.timeline-pas { display: flex; gap: 1rem; padding-bottom: 1.4rem;
  position: relative; }
.timeline-pas:not(:last-child)::before {
  content: ""; position: absolute; left: .58rem; top: 1.4rem; bottom: 0;
  width: 2px; background: var(--linia);
}
.timeline-pas.es-fet:not(:last-child)::before { background: var(--bronze-clar); }
.timeline-punt {
  flex: 0 0 auto; width: 1.25rem; height: 1.25rem; border-radius: 50%;
  background: var(--blanc); border: 2px solid var(--linia); margin-top: .2rem;
  z-index: 1;
}
.timeline-pas.es-fet .timeline-punt { background: var(--bronze-clar);
  border-color: var(--bronze-clar); }
.timeline-pas.es-actual .timeline-punt {
  background: var(--bronze); border-color: var(--bronze);
  box-shadow: 0 0 0 5px var(--bronze-vel);
}
.timeline-cos h3 { margin: 0 0 .15em; font-size: 1.05rem;
  color: var(--tinta-suau); }
.timeline-pas.es-fet .timeline-cos h3,
.timeline-pas.es-actual .timeline-cos h3 { color: var(--tinta); }
.timeline-cos p { margin: 0; font-size: .88rem; color: var(--tinta-suau); }
/* Els passos pendents es distingeixen pel punt buit, mai abaixant l'opacitat del text (2,5:1). */
.timeline-pas:not(.es-actual):not(.es-fet) .timeline-punt { opacity: .6; }
.timeline-ara {
  font-family: var(--sans); font-size: .68rem; font-weight: 700;
  letter-spacing: .1em; text-transform: uppercase; vertical-align: middle;
  background: var(--bronze-fosc); color: #fff; padding: .12rem .5rem;
  border-radius: 999px; margin-left: .4rem;
}

/* ═══════════════════════════ Represa ═══════════════════════════════════ */

.pag-represa main { display: flex; align-items: center;
  padding: clamp(2rem, 8vh, 5rem) 0; }
.caixa-represa { margin: clamp(2rem, 8vh, 4rem) 0; }
.caixa-represa .pag-cap { margin-top: 0; }
.form-represa { display: flex; flex-direction: column; gap: 1rem; }
.form-represa .btn { margin-top: .4rem; }

/* ═══════════════════════════ Responsive ════════════════════════════════ */

@media (min-width: 60rem) {
  .curs-graella { grid-template-columns: minmax(0, 1.7fr) minmax(0, 1fr); }
  .curs-lateral { position: sticky; top: 5.5rem; }
  .resum-fila { grid-template-columns: 15rem 1fr; gap: 1rem;
    align-items: baseline; }
}

@media (max-width: 48rem) {
  .capcalera { padding: .7rem 1rem; }
  .nav-cap a:not(.btn) { display: none; }
  .hero { min-height: 34rem; }
  .pas { flex: 1 1 100%; }
  .pas-nom { font-size: .85rem; }
  .doc-cap { align-items: flex-start; }
  .btn-gran { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: .001ms !important; animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
  }
  .hero-slide.es-actiu { transform: none; }
}

@media print {
  .capcalera, .peu, .passos, .accions-peu, .firma-peu, .nav-cap { display: none; }
  body { background: #fff; }
  .resum, .doc, .bloc { box-shadow: none; border-color: #ccc; }
}

/* ═══════════════════ Selector d'idiomes (capçalera) ════════════════════ */

.idiomes { display: inline-flex; gap: .5rem; margin-left: .75rem; flex: 0 0 auto; }
.idiomes .idioma {
  position: relative;
  font: inherit; font-size: .74rem; font-weight: 700; letter-spacing: .06em;
  padding: .28rem .55rem; border-radius: 999px; cursor: pointer;
  border: 1px solid var(--vora-camp); background: var(--blanc);
  color: var(--tinta-suau); transition: color var(--transicio),
  border-color var(--transicio), background var(--transicio);
}
/* Zona tàctil de 44×44 px (WCAG 2.5.5) sense engrandir el botó que es veu: l'àrea invisible
   s'estén cap amunt, avall i cap als costats (el forat entre botons és de .5rem = 8 px). */
.idiomes .idioma::after {
  content: ""; position: absolute; left: -5px; right: -5px;
  top: 50%; height: 44px; transform: translateY(-50%);
}
.idiomes .idioma:hover { border-color: var(--bronze); color: var(--bronze-fosc); }
.idiomes .idioma.actiu {
  background: var(--tinta); border-color: var(--tinta); color: var(--fons);
  cursor: default;
}
/* Amplada: el botó fa 2,2 rem (35 px) i amb els 5 px de cada banda de ::after arriba a 45 px. */
.idiomes .idioma { min-width: 2.2rem; text-align: center; }
@media (max-width: 540px) {
  .idiomes { margin-left: 0; }
}

/* ═════════════ Preus, promoció i Compromiso (Adriana, 23/09/2026) ═════════════ */

.bloc-subtitol { font-family: var(--sans); font-size: .78rem; font-weight: 700;
  letter-spacing: .12em; text-transform: uppercase; color: var(--tinta-suau);
  margin: 1.8rem 0 .8rem; }
.preus-matricula { font-size: .95rem; }
/* Una columna a la fitxa del curs (estreta) i tres al formulari: mai 2+1. */
.preus { container-type: inline-size; }
.preus-caixes { display: grid; gap: 1rem; grid-template-columns: 1fr;
  margin: .8rem 0; }
@container (min-width: 660px) {
  .preus-caixes { grid-template-columns: repeat(3, 1fr); }
}
.preu-caixa { position: relative; background: var(--blanc);
  border: 1px solid var(--linia); border-radius: var(--radi);
  padding: 1.1rem 1.2rem; font-size: .9rem; }
.preu-caixa h3 { font-family: var(--sans); font-weight: 700; font-size: .95rem;
  margin-bottom: .3rem; }
.preu-caixa p { margin-bottom: .5em; color: var(--tinta-suau); }
.preu-caixa.es-triada { border: 2px solid var(--bronze);
  box-shadow: 0 0 0 4px var(--bronze-vel); }
.preu-caixa .senyal { position: absolute; top: .8rem; right: .8rem; }
.preu-destacat { font-family: var(--serif); font-size: 1.6rem; line-height: 1.2;
  color: var(--tinta) !important; margin: .2rem 0 .6rem !important; }
.preu-destacat small { display: block; font-family: var(--sans); font-size: .78rem;
  color: var(--tinta-suau); }
.preu-total { font-weight: 700; color: var(--tinta) !important;
  border-top: 1px solid var(--linia); padding-top: .5rem; margin-top: .6rem; }
.preus-notes p { font-size: .88rem; color: var(--tinta-suau); }

.resum-matricula { margin-top: 1.2rem; background: var(--fons-alt);
  border-radius: var(--radi); padding: 1rem 1.2rem; }
.resum-matricula:empty { display: none; }
.resum-imports { width: 100%; border-collapse: collapse; font-size: .95rem; }
.resum-imports th { text-align: left; font-weight: 500; padding: .3rem 0; }
.resum-imports td { text-align: right; white-space: nowrap; padding: .3rem 0; }
.resum-imports .es-descompte td { color: var(--ok); }
.resum-imports .es-total th, .resum-imports .es-total td {
  font-weight: 700; font-size: 1.15rem; border-top: 1px solid var(--linia);
  padding-top: .5rem; }
.resum-imports .codi { font-family: ui-monospace, monospace; font-size: .82rem;
  background: var(--blanc); border-radius: 6px; padding: .05rem .4rem; }
.resum-nota { font-size: .85rem; color: var(--tinta-suau); margin: .4rem 0 .8rem; }
.promocio label { display: block; font-size: .88rem; font-weight: 600;
  margin-bottom: .35rem; }
.promocio-fila { display: flex; gap: .5rem; max-width: 420px; }
.promocio-fila .camp-camp { flex: 1; text-transform: uppercase; }
.resum-matricula .senyal.es-error { white-space: normal; margin-top: .6rem; }

.caracteristiques { display: grid; grid-template-columns: max-content 1fr;
  gap: .35rem 1.2rem; margin: 0; font-size: .93rem; }
.caracteristiques dt { font-weight: 600; }
.caracteristiques dd { margin: 0; color: var(--tinta-suau); }
.caracteristiques dd.sola { grid-column: 1 / -1; }
@media (max-width: 560px) {
  .caracteristiques { grid-template-columns: 1fr; gap: .1rem; }
  .caracteristiques dd { margin-bottom: .5rem; }
}
.contracte-seccio { border-top: 1px solid var(--linia); }
.contracte-seccio .prosa { font-size: .88rem; color: var(--tinta-suau);
  padding-bottom: .8rem; }

/* ═════════════ Marca real de l'escola (WeTransfer, 23/09/2026) ═════════════ */

/* flex-shrink: 0 → sense això, al mòbil la capçalera l'aixafava a 0 px d'ample. */
.marca { flex-shrink: 0; }
.marca-logo { display: block; height: 40px; width: auto; }
@media (max-width: 560px) {
  .marca-logo { height: 26px; }
  .capcalera { gap: .5rem; }
  .nav-cap .btn { padding: .35rem .7rem; font-size: .75rem; white-space: nowrap; }
  .nav-represa { display: none; }
}

/* Capçalera a 375 px (QA, 26/10/2026): logo + «Guardado automático» + «Estado» + ES/CA/EN no
   hi caben en una fila (feia 472 px d'ample i el selector d'idioma quedava fora de pantalla).
   Al mòbil passa a dues files —logo i idiomes dalt, estat i botó a sota— i deixa de ser
   enganxada (dues files enganxades se'n mengen el 15 % de la pantalla). */
@media (max-width: 560px) {
  .capcalera { flex-wrap: wrap; position: static; row-gap: .4rem; padding: .6rem 1rem; }
  .idiomes { order: 2; margin-left: auto; }
  .nav-cap { order: 3; flex: 1 0 100%; justify-content: space-between; min-width: 0; }
}
/* Cap element no ha de fer créixer la pàgina en horitzontal (red de seguretat). */
html, body { max-width: 100%; overflow-x: clip; }

[hidden] { display: none !important; }

/* Pàgines d'error (404, 500, 403 de CSRF): templates/base_error.html */
.pag-error main { display: flex; align-items: center; padding: clamp(1.5rem, 6vh, 4rem) 0; }
.caixa-error { margin: clamp(1.5rem, 6vh, 3rem) 0; }
.accions-error { display: flex; flex-wrap: wrap; gap: .8rem; margin-top: 1.6rem; }

/* Desat automàtic fallit: capçalera, avís fix i botó de reintent. */
.nav-desat.es-error { color: var(--error); background: var(--error-fons); }
.nav-desat.es-error::before { content: "\26a0\00a0"; }
.avis-desat {
  position: fixed; left: 1rem; right: 1rem; bottom: 1rem; z-index: 60;
  max-width: 34rem; margin: 0 auto; display: flex; flex-wrap: wrap;
  align-items: center; gap: .6rem .8rem; padding: .8rem 1rem;
  background: var(--error-fons); color: var(--tinta);
  border: 1px solid var(--error); border-left-width: 5px;
  border-radius: var(--radi); box-shadow: var(--ombra-alta); font-size: .9rem;
}
.avis-desat p { margin: 0; flex: 1 1 14rem; }
.btn-reintenta {
  font: inherit; font-size: .8rem; font-weight: 600; cursor: pointer;
  color: var(--error); background: var(--blanc); border: 1px solid var(--error);
  border-radius: 999px; padding: .15rem .7rem;
}
.btn-reintenta:hover { background: var(--error); color: #fff; }
/* Els missatges d'error/avís del camp poden ser frases llargues: han de poder trencar-se. */
.camp-estat .senyal { white-space: normal; border-radius: var(--radi-petit); }
.senyal.es-avis { background: var(--avis-fons); color: var(--avis); }
.senyal.es-avis::before { content: "\26a0\00a0"; }
.doc-error-js { flex: 1 1 100%; margin: 0; font-size: .86rem; color: var(--error); font-weight: 600; }

/* El slide de l'escola és un bàner blau (1110×416) amb la mirada a la
   DRETA. No es retalla («cover» ampliava la cara i el text la trepitjava):
   es veu sencer, enganxat a la dreta, i la resta s'omple amb el mateix blau
   (#035e8d, mesurat a la vora de la imatge). El text va a la meitat esquerra. */
.hero-slide[style] { background-color: #035e8d; background-size: contain;
  background-repeat: no-repeat; background-position: right center; }
.hero-slide[style] .hero-vel { background: none; }
.hero.te-imatge .hero-titol, .hero.te-imatge .hero-sub { max-width: min(46vw, 34rem); }
@media (max-width: 760px) {
  /* Al mòbil la imatge va a dalt i el text a sota, sobre el blau llis. */
  .hero-slide[style] { background-position: center top; background-size: 100% auto; }
  .hero.te-imatge .hero-titol, .hero.te-imatge .hero-sub { max-width: none; }
}
.hero-titol { font-weight: 600; letter-spacing: -.015em; }

.botons-arees {
  display: flex; flex-wrap: wrap; justify-content: center; gap: 1rem 2rem;
  max-width: 820px; margin: 0 auto; padding: clamp(1.6rem, 4vw, 2.6rem) var(--pas) 0;
}
.boto-area { display: block; border-radius: 999px; transition: transform var(--transicio); }
.boto-area img { display: block; width: clamp(180px, 40vw, 222px); height: auto; }
.boto-area:hover { transform: translateY(-2px); }

/* «Información general del centro» (20/10/2026): fitxa de lectura, sense número. */
.dades-centre { display: grid; grid-template-columns: max-content 1fr; gap: .3rem 1rem; margin: .4rem 0 0; font-size: .92rem; }
.dades-centre dt { color: var(--tinta-suau); }
.dades-centre dd { margin: 0; }
.dades-centre dd.sola { grid-column: 1 / -1; }
@media (max-width: 560px) { .dades-centre { grid-template-columns: 1fr; gap: 0; } .dades-centre dd { margin-bottom: .45rem; } }

/* Firma electrònica amb Lleida.net (20/10/2026): bloc de la revisió i caixa de l'estat. */
.firma-lleida-signants { list-style: none; margin: 0 0 .6rem; padding: 0; display: grid; gap: .3rem; }
.firma-lleida-mobil { color: var(--tinta-suau); font-size: .9rem; white-space: nowrap; }
.banda-firma-lleida { background: var(--avis-fons); border-color: #ecd9b0; border-left: 5px solid var(--avis); }
.banda-firma-lleida .accions-peu { display: flex; flex-wrap: wrap; align-items: center; gap: .8rem; margin-top: .8rem; }
.firma-lleida-cancela { margin: 0; }
.firma-lleida-cancela .btn, .banda-firma-lleida .btn { white-space: normal; max-width: 100%; text-align: center; }

/* ═════════════ Ajustos de mòbil (QA a 375 i 360 px, 27/10/2026) ═════════════
   Només presentació. Objectius: zones tàctils de 44 px d'alt (WCAG 2.5.5), text que es
   llegeix (cap text corrent per sota de ~13 px; les etiquetes en majúscules, 12 px) i els tres
   passos del procés en una sola fila perquè no es mengin un quart de la pantalla. */
@media (max-width: 560px) {
  /* Botons i enllaços que feien 32–39 px d'alt. */
  .btn-petit, .btn-fantasma { min-height: 44px; padding-top: .55rem; padding-bottom: .55rem; }
  .btn-curs { min-height: 44px; display: inline-flex; align-items: center; }
  .btn-consent { min-height: 44px; padding: .55rem 1.2rem; font-size: .92rem; }
  .btn-reintenta { min-height: 44px; padding: .5rem 1rem; font-size: .9rem; }
  .fitxer-btn { display: inline-flex; align-items: center; min-height: 44px;
    padding: .55rem 1.1rem; font-size: .92rem; }
  .plegable > summary { min-height: 44px; display: flex; align-items: center; padding: .35rem 0; }
  .resum-editar { display: inline-flex; align-items: center; min-height: 44px;
    padding: 0 .3rem; margin: -.6rem -.3rem -.6rem 0; }
  .marca { padding: .55rem 0; }
  .idiomes .idioma { font-size: .85rem; padding: .4rem .65rem; min-width: 2.6rem; }
  .declaracio { padding: 1rem; }
  .declaracio input { flex: 0 0 auto; }
  .camp-casella { min-height: 44px; }

  /* «Falta completar» (29/10/2026): cada apartat és un enllaç que porta al camp; feien 23 px d'alt
     i, amb la llista llarga, era fàcil encertar el del costat (WCAG 2.5.5). */
  .banda-falten li { margin: 0; }
  .banda-falten li a, .banda-anar a { display: inline-flex; align-items: center; min-height: 44px; }
  /* El nom del document a la revisió (enllaç que s'obre a una pestanya nova): 19 px d'alt. */
  .resum-veure { display: inline-flex; align-items: center; min-height: 44px; margin-left: 0; }

  /* Reflux a 320 px (WCAG 1.4.10): les pastilles poden fer-se en dues línies en lloc de sortir de la pantalla. */
  .senyal, .badge, .etiqueta-obl { white-space: normal; }

  /* Text petit que costava de llegir. */
  .nav-desat, .camp-ajuda, .camp-estat, .consent-estat, .senyal, .camp-etiqueta,
  .fitxer-nom, .doc-mida, .curs-meta, .curs-durada, .resum-nota, .doc-error-js,
  .timeline-cos p, .caixa-nota { font-size: .875rem; }
  .btn-petit, .btn-fantasma { font-size: .9rem; }
  .sobretitol, .badge, .etiqueta-obl, .etiqueta-info, .timeline-ara, .doc-icona,
  .bloc-subtitol, .fitxa-curs-etiqueta, .area-compte { font-size: .78rem; }
  .preu-caixa small, .preu-destacat small { font-size: .8rem; }
  .pas-nom { font-size: .82rem; }
  .peu { font-size: .875rem; }
  .camp-ajuda { font-size: .82rem; }
  .nav-cap .btn { min-height: 44px; font-size: .875rem; padding: .45rem .95rem; }
  .curs-ruta { font-size: .85rem; }
  .curs-fets strong { font-size: .78rem; color: rgba(255, 255, 255, .8); }

  /* Els tres passos en una fila: número a dalt, nom a sota (abans, tres blocs apilats). */
  .passos ol { flex-wrap: nowrap; gap: .3rem; }
  .pas { flex: 1 1 auto; min-width: 0; }
  .pas > a, .pas > span { flex-direction: column; justify-content: flex-start;
    gap: .25rem; padding: .5rem .35rem; text-align: center; height: 100%; min-height: 44px; }
  .pas-nom { line-height: 1.2; }
}

/* En una pantalla tàctil, els botons no han de fer el zoom de doble toc. */
@media (pointer: coarse) {
  .btn-consent, .btn-petit, .fitxer-btn { touch-action: manipulation; }
}
